repeater控件主要要来弥补gridview控件样式不丰富而使用的 //先得到一数据源控件,用来获得数据
//然后定义repeater模板,绑定数据源控件
数据自己定要显示的数据
<asp:SqlDataSource ID="ds" runat="server" ConnectionString="server=localhost;database=YanChang_ZhS;uid=sa;pwd=sasa" SelectCommand="select riqi,paihao,pici,gongxu,jieguo from D_TCY where paihao='1'"></asp:SqlDataSource>
<asp:Repeater ID="r1" runat="server" DataMember="DefaultView" DataSourceID="ds">
<ItemTemplate> <table border="1"> / /样式自己定自己喜欢的风格样式 <tr><td><%# i++ %></td> <td><%# DataBinder.Eval(Container.DataItem,"riqi") %></td> <td><%# DataBinder.Eval(Container.DataItem,"paihao") %></td> <td><%# DataBinder.Eval(Container.DataItem,"pici") %></td> <td><%# DataBinder.Eval(Container.DataItem,"gongxu") %></td> <td><%# DataBinder.Eval(Container.DataItem,"jieguo") %></td> </tr> </table> </ItemTemplate> <HeaderTemplate> <table border="1" > <tr style="background-color:Blue;"> <td><b>编号</b></td> <td><b>日期</b></td> <td><b>牌号</b></td> <td><b>批次</b></td> <td><b>工序</b></td> <td><b>结果</b></td> </tr> </table> </HeaderTemplate> </asp:Repeater>
1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。比如 public static void main(String[] args) throws SQLException
2.throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常, 但它不会处理它, 而是由方法块的throws Exception来调用异常处理类来处理。
throw用在程序中,明确表示这里抛出一个异常。 throws用在方法声明的地方,表示这个方法可能会抛出某异常。
throw是抛出一个具体的异常类,产生一个异常。
throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。
1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示: public class Shoot { 创建类 static void pop() throws NegativeArraySizeException { //定义方法并抛出NegativeArraySizeException异常 int [] arr = new int[-3];//创建数组 } public static void main(String[] args) {//主方法 try { pop(); //调用pop()方法 } catch (NegativeArraySizeException e) { System.out.println("pop()方法抛出的异常");//输出异常信息 } } } 2、throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下: class MyException extends Exception { //创建自定义异常类 String message; //定义String类型变量 public MyException(String ErrorMessagr) { //父类方法 message = ErrorMessagr; } public String getMessage(){ //覆盖getMessage()方法 return message; } } public class Captor { //创建类 static int quotient(int x,int y) throws MyException{//定义方法抛出异常 if(y < 0){ //判断参数是否小于0 throw new MyException("
#include <vector> #include <stdio.h> #include <algorithm> using namespace std; int main() { int n; int x,y; while(scanf("%d",&n)!=EOF) { vector <pair<int,int> >mm; int i,j,k; for(i=0;i<n;i++) { scanf("%d%d",&x,&y); mm.push_back(make_pair(x,y)); } sort(mm.begin(),mm.end()); //排序 mm.erase(unique(mm.begin(),mm.end()),mm.end());//删去一个元素边上与它相同的元素 for(i=0;i<mm.size();i++) printf("%d %d\n",mm[i].first,mm[i].second); } return 0; }
让linux用户隶属于多个组 usermod -g 组名 用户名:更改用户所属组,是覆盖; 小写 是 覆盖 usermod -G 组名1[,组名2,……] 用户名:添加用户所属组; 大写 是添加 usermod -G 组名 用户名
类似于,Linux系统一个组可以包含多个用户成员,反过来,一个用户也可以隶属于多个组,其中一个方法就是使用usermod -G命令来实现。
在使用-g时要格外小心,因为它是覆盖,比如原来test 隶属于grp1,grp2组,你突然来一个usermod -g grp3 test,结果就是test用户只
属于grp3组; 参考: chgrp 怎样把用户加入另一个组? useradd -g siradm -G sirmas,siruser 用户名 man usermod usermod -G group[,... ] login useradd -g 1000 -G another-group username 另外看看这个chmod + x lanb 增加执行的权限。 chmod + w lanb 增加写的权限。 chmod + r lanb 增加读的权限。 chmod + rwx lanb 什么权限都有了 建立一个组 groupadd mysql useradd -g mysql mysql useradd 命令详解 功能说明:建立用户帐号。 语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ] 补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。 参 数: -c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。 -d<登入目录> 指定用户登入时的启始目录。 -D 变更预设值. -e<有效期限> 指定帐号的有效期限。 -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。 -g<群组> 指定用户所属的群组。 -G<群组> 指定用户所属的附加群组。 -m 自动建立用户的登入目录。 -M 不要自动建立用户的登入目录。 -n 取消建立以用户名称为名的群组. -r 建立系统帐号。 -s 指定用户登入后所使用的shell。 -u 指定用户ID。
公司的系统是自主开发的,历史比较悠久,有不少是传统C/S架构,采用存储过程来处理业务逻辑。
近来做新系统的时候,我采用了三层架构,抛弃存储过程改用ORM。
有同事问及不用存储过程的理由,我想了一下,对存储过程做了如下总结。
本人经验和水平有限,总结有所偏颇,还请大家纠察。
优点
1.在生产环境下,可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器。但这一点便利被许多人滥用了。有人直接就在正式服务器上修改存储过程,而没有经过完整的测试,后果非常严重。
2.执行速度快。存储过程经过编译之后会比单独一条一条执行要快。但这个效率真是没太大影响。如果是要做大数据量的导入、同步,我们可以用其它手段。
3.减少网络传输。存储过程直接就在数据库服务器上跑,所有的数据访问都在服务器内部进行,不需要传输数据到其它终端。但我们的应付服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。
4.能够解决presentation与数据之间的差异,说得文艺青年点就是解决OO模型与二维数据持久化之间的阻抗。领域模型和数据模型的设计可能不是同一个人(一个是SA,另一个是DBA),两者的分歧可能会很大——这不奇怪,一个是以OO的思想来设计,一个是结构化的数据来设计,大家互不妥协——你说为了软件的弹性必须这么设计,他说为了效率必须那样设计,为了抹平鸿沟,就用存储过程来做数据存储的逻辑映射(把属性映射到字段)。好吧,台下已经有同学在叨咕ORM了。
5.方便DBA优化。所有的SQL集中在一个地方,DBA会很高兴。这一点算是ORM的软肋。不过按照CQRS框架的思想,查询是用存储过程还是ORM,还真不是问题——DBA对数据库的优化,ORM一样会受益。况且放在ORM中还能用二级缓存,有些时候效率还会更高。
缺点
1.SQL本身是一种结构化查询语言,加上了一些控制(赋值、循环和异常处理等),但不是OO的,本质上还是过程化的,面对复杂的业务逻辑,过程化的处理会很吃力。这一点算致命伤。
2.不便于调试。基本上没有较好的调试器,很多时候是用print来调试,但用这种方法调试长达数百行的存储过程简直是噩梦。好吧,这一点不算啥,C#/java一样能写出噩梦般的代码。
3.没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。
4.无法适应数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。
5.精通SQL的新手越来越少——不要笑,这是真的,我面试过N多新人,都不知道如何创建全局临时表、不知道having、不知道聚集索引和非聚集索引,更别提游标和提交叉表查询了。好吧,这个缺点算是凑数用的,作为屌丝程序员,我们的口号是:没有不会的,只有不用的。除了少数有语言洁癖的人,我相信精通SQL只是时间问题。
总结
存储过程最大的优点是部署的方便性——可以在生产环境下直接修改——虽然滥用的后果很严重。
存储过程最大的缺点是SQL语言本身的局限性——我们不应该用存储过程处理复杂的业务逻辑——让SQL回归它“结构化查询语言”的功用吧。
转载于:https://www.cnblogs.com/ego/archive/2012/12/06/2804592.html
在服务器上嵌入到网页的视频播放不了的解决办法 这里讲解一flv格式为例。
第一步:写一个flv播放页面 在Dreamweaver中点击"常用"选项,插入一个"flash视频",在弹出的窗口中,可以根据需要选择相应的视频类型,外观,大小,点击确定,这要就插入了一个flv视频,在上传的同时,也会同时生成两个附带的.swf格式的文件,分别是:Clear_Skin_3.swf(这个名称可能会根据你的不同选择而出现不同的名称)和FLVPlayer_Progressive.swf这两个文件,要同时上传,全部上传后,这时还不能正常预览这个flv的视频,还要再设置一下服务器。
这里给个例子,我不是用Dreamweaver实现的,手工代码如下:
<object type="application/x-shockwave-flash" width="470px" height="403px" data="flvplayer.swf?file=flv/1-1.flv"><!--这里的flvplayer.swf是flv视频播放器,flv/1-1.flv是flv文件路径--> <param name="movie" value="flvplayer.swf?file=flv/1-1.flv&showfsbutton=true&autostart=true" /> <param name="wmode" value="transparent" /> <param name="quality" value="high" /> <param name="allowfullscreen" value="true" /> </object> 可以参考我之前的一篇博客:http://blog.csdn.net/zyw_anquan/article/details/7939039
第二步:解决flv服务器访问不能播放问题 设计服务器参数,在win2003,IIS6环境下,默认无法播放flv文件,是因为默认禁止WEB访问没有在MIME中注册的文件,解决办法:
1.在2003服务器上,找开IIS管理器。
2.展开本地服务器名称,右击选择属性,在Internet信息服务标签上,点击最下方的计算机MIME映射下面的编辑按钮。
3.点击”新类型”按钮,扩展名添上”.FLV”,内容类型(MIME)添上“flv-application/octet-stream”
4.点击确定
5.重新启动www服务。
下面情况可能发生:通过该方案在重新启动了IIS之后,新建的FLV MIME类型又没有了。所有又尝试使用如下方法:
打开IIS下的本地计算机,选择网站右键属性,打开“HTTP头”的MIME类型新建扩展名“.FLV”,MIME类型值为“flv-application/octet-stream”。应用即可实现了WIN2003下网页播放FLV的功能。
知识点:详解MIME MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
MIME的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。
客户端浏览器接收到文件后,会进入插件系统进行查找,查找出哪种插件可以识别读取接收到的文件。如果浏览器不清楚调用哪种插件系统,它可能会告诉用户缺少某插件,或者直接选择某现有插件来试图读取接收到的文件,后者可能会导致系统的崩溃。传输的信息中缺少MIME标识可能导致的情况很难估计,因为某些计算机系统可能不会出现什么故障,但某些计算机可能就会因此而崩溃。
本博客已迁往http://coredumper.cn 用rand()生成的随机数大于等于0,小于等于RAND_MAX。
RAND_MAX是stdlib.h中宏定义的一个常量,其值最小为32767,最大为2147483647,其值与具体的库函数有关,可以用下面的代码测试一下。
#include <stdio.h> #include <stdlib.h> int main(void) { printf("%d\n", RAND_MAX); return 0; }
#include "Myself.h" //程序员定义的是这样调用的。 #include <Myself.h> //可是发现有高手是这样调用的。可是自已写成这样又编译不过。 怎样才可以这样调用呢。?? 原因:
"xxx"先从你做的当前工程所保存的目录下查找,如果没有然后去系统存放的目录下找,
而<xxx>直接在系统目录下找,如果没有返回错误,而不会在当前目录下找。
如果你想通过#include<xxx.h>调用你自定义的头文件:
解决方法:
将你做的项目路径下的头文件拷贝到你系统目录中:
比如我的vs2010安装到C:/propram files/vs2010,而我的做的项目放在F:\c++\vs2010下,你就将F:\c++\vs2010下的头文件拷贝到C:/propram files/vs2010中的VC/Include中
在linux系统上,vim编辑系统文件的时候,很多时候编辑结束才发现,没有权限写入文件。
vim实现文件另存为的功能
只要在:w 后面加上文件名字,就能把当前的编辑内容另存到其他文件中去。
:w new_filename
2019独角兽企业重金招聘Python工程师标准>>> 在Android中要让一个程序的界面始终保持一个方向,不随手机方向转动而变化的办法: 只要在AndroidManifest.xml里面配置一下就可以了。
在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入 android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。例如:
Java 代码
1. <application android:persistent="true" 2. android:label="@string/home_title" 3. android:icon="@drawable/ic_launcher_home"> 4. 5. <activity android:name="Home" 6. android:theme="@style/Theme" 7. android:launchMode="singleInstance" 8. android:stateNotNeeded="true" 9. android:screenOrientation="portrait"> 10. <intent-filter> 11. <action android:name="android.intent.action.MAIN" /> 12. <category android:name="android.intent.category.HOME"/> 13. <category android:name="android.intent.category.DEFAULT" /> 14. </intent-filter> 15. </activity> <application android:persistent="true"
android:label="@string/home_title"
android:icon="@drawable/ic_launcher_home">
<activity android:name="Home"
android:theme="@style/Theme"
android:launchMode="singleInstance"
android:stateNotNeeded="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
另外,android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity 再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!
要避免在转屏时重启activity,可以通过在androidmanifest.xml文件中重新定义方向(给每个activity加上 android:configChanges=”keyboardHidden|orientation”属性),并根据Activity的重写 onConfigurationChanged(Configuration newConfig)方法来控制,这样在转屏时就不会重启activity了,而是会去调用 onConfigurationChanged(Configuration newConfig)这个钩子方法。例如:
先看api的文档:
addObserver:selector:name:object: Adds an entry to the receiver’s dispatch table with an observer, a notification selector and optional criteria: notification name and sender.
- (void)addObserver:(id) notificationObserver selector:(SEL) notificationSelector name:( NSString *) notificationName object:(id) notificationSender Parameters 。。。。 。。。。 notificationSender The object whose notifications the observer wants to receive; that is, only notifications sent by this sender are delivered to the observer.
If you pass nil, the notification center doesn’t use a notification’s sender to decide whether to deliver it to the observer.
iPhone、iPad产品风靡全球,巨大的用户群刺激着iOS软件开发需求,然而国内人才缺口很大,正处于供不应求的状态,ios开发前景大好。我们整理了51CTO下载中心100份热门的ios开发资料,做了一个地址收藏目录,方便大家选择性下载。里边均是好资料,相信对学习ios开发有所帮助。
目录下载地址:http://down.51cto.com/data/416672
附件预览如下:
iOS游戏开发之Unity3D引擎系列
http://down.51cto.com/zt/399
iPadian软件:让你在Windows下真实地体验iPad
http://down.51cto.com/data/274307
《iPhone开发秘籍(第2版)》中文版电子书
http://down.51cto.com/data/259386
iPhone开发基础教程+源码 pdf
http://down.51cto.com/data/62367
Objective-C基础教程》中文彩色版(47M)
http://down.51cto.com/data/222623
【国内少有】斯坦福大学iphone开发公开课PDF(英文原版)
http://down.51cto.com/data/123383
Objective-C基础教程随书源码【RAR】
http://down.51cto.com/data/74797
iPhone Simulator (iPhone模拟器)
http://down.51cto.com/data/127116
iPhone应用程序pxl格式转换ipa格式【软件】
http://down.51cto.com/data/156108
Phone Clube 第六期:跨平台的游戏引擎cocos2d-x介绍
http://down.51cto.com/data/253549
《iPhone SDK 3开发指南》随书源代码
http://down.51cto.com/data/127180
iOS 5开发多个范例Demo合集
http://down.51cto.com/data/275996
《苹果开发之Cocoa编程(第三版)》1-17章中文版
http://down.51cto.com/data/205913
西蒙iPhone openGL ES 教程 1- 15
http://down.51cto.com/data/127016
魔兽世界Lua插件编辑器
http://down.51cto.com/data/231144
Phone Clube 第六期:高效手机程序开发经验分享
http://down.51cto.com/data/253545
ipad2中文使用说明书【技术文档】
http://down.51cto.com/data/228144
iPhone 开发笔记实录(代码讲解)
http://down.51cto.com/data/164304
iphone下的金融计算器源代码
http://down.51cto.com/data/211957
[教程]iphone 4 型号、产地、有无锁及运营商服务查询.pdf http://down.51cto.com/data/220797
iOS开发资料打包下载(中文PDF)
http://down.51cto.com/data/322984
《Objective-C.2.0程序设计》电子书下载
http://down.51cto.com/data/161276
《Objective-C基础教程》中文影印版(30.8M)
http://down.51cto.com/data/220485
iphone开发经典效果【源码】
http://down.51cto.com/data/224247
使用:OSQL.EXE和SQLCMD.EXE工具:他们都在 SQL server2008在C:\Program Files\Microsoft SQL Server\100\Tools\Binn,有的可能在C:\Program Files\Microsoft SQL Server\90\Tools\Binn,你自己找找。
然后看看PATH路径中有没有path=C:\Program Files\Microsoft SQL Server\100\Tools\Binn默认你安装了MS server就会有。
如果是sql2000的话.那么就用osql连接,如以下例子,osql -S Localhost -U sa -P 123 注意大小写 "select count(*) from sysobjects" 如果在sql2005及以上版本下,把上面脚本的OSQL改为sqlcmd是可以运行的。 我使用2008使用OSQL会出现,用SQLCMD代替的提示:
-----使用工具OSQL:
C:\Users\Administrator>osql -? //查看osql用法
C:\Users\Administrator>osql -S ZLQ-PC -U sa -P 123 ?
Microsoft (R) SQL Server Command Line Tool
Version 10.0.1600.22 NT INTEL X86
Copyright (c) Microsoft Corporation. All rights reserved.
Note: osql does not support all features of SQL Server 2008.
传输的对象需要实现序列化:有两种方式,一种是实现Serializable接口,就是原来的java方式;另外一种是android的Parcelable方式,这个性能可能好一些,我猜的,但是这在需要手动去写Parcelable接口的实现。
Serializable存数据:
Person mPerson = new Person(); mPerson.setName("frankie"); mPerson.setAge(25); Intent mIntent = new Intent(this,ObjectTranDemo1.class); Bundle mBundle = new Bundle(); mBundle.putSerializable(SER_KEY,mPerson); mIntent.putExtras(mBundle); Serializable取数据:
// 获取启动该ResultActivity的Intent 24 Intent intent = getIntent(); 25 // 获取该Intent所携带的数据 26 Bundle bundle = intent.getExtras(); 27 // 从bundle数据包中取出数据 28 Person person = (Person) bundle.getSerializable("person"); Parcelable存数据: Intent mIntent = new Intent(this,ObjectTranDemo2.class); Bundle mBundle = new Bundle(); mBundle.putParcelable(PAR_KEY, mBook); mIntent.putExtras(mBundle); Parcelable取数据: Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY); 参考1:http://blog.csdn.net/Android_Tutor/article/details/5740845
参考2:http://my.oschina.net/u/577632/blog/76906
URL和URI URI:统一资源标识符,用于标识一个web资源,包含了两个部分。
(1)URL:统一资源定位符。能够精确的定位数据的URI
(2)URN:统一资源名称。除了URL的URI
在java中URI和URL是分开的两个类,URI类专门用于解析,URL用于通信。
URL 1.URI分类 绝对和相对:
(1)绝对URI是指有确定的协议。比如http,ftp。后面以/进行分隔
(2)相对URI是没有scheme的。
透明和不透明:
(1)不透明URI是不能够被解析的URI。不透明URI是绝对URI。scheme后面的部分不是以/进行分割。
分层和不分层:
(1)分层是绝对透明URI或相对URI。
所有的网页端口都是80.
2.URI的作用: (1)解析 URI的格式:
[scheme:]scheme-specific-part[#fragment]
scheme表示用的协议,可以是http\https\ftp\file等。
scheme-specific-part是其余部分。
进一步细分:
[scheme:][//authority][path][?query][#fragment]
常用方法:
getScheme()获得scheme;getSchemeSpecificPart()getPath()getAuthority() (2)相对标识符和绝对标识符的转换 resolve和relative函数。
示例代码:
任务1:取得特定网址的html代码。
任务2:分析地址信息。
任务3:绝对地址和相对地址转换
示例代码:
任务1:取得特定网址的html代码。
任务2:分析地址信息。
任务3:绝对地址和相对地址转换
public class URTest { public static void main(String[] arg0) { try { URL url = new URL("http://www.baidu.cn"); Scanner in = new Scanner(url.openStream()); while (in.hasNextLine()) { String str = in.nextLine(); System.out.println(str); } //http://www.cnblogs.com/xilinch/archive/2012/09/03/2668613.html URI uri = new URI("
1、 环境
Windows XP SP3 + TortoiseGit + msysGit
2、 ignore files的三种方法
以下涉及的ignore文件均为如下格式:
# 以'#'开始的行,被视为注释. # 忽略掉所有文件名是 foo.txt的文件.
foo.txt
# 忽略所有生成的 html文件,
*.html
# foo.html是手工维护的,所以例外.
!foo.html
# 忽略所有.o和 .a文件.
*.[oa]
【方式一】
在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件)。如下图所示。
.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。
【方式二】
通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。
【方式三】
通过.git/config配置文件的core. Excludesfile选项,指定一个忽略规则文件(完整路径),如下图所示。忽略规则在文件e:/gitignore.txt中(当然该文件名可以任意取)。
该方式的作用域是也全局的。
【例子】
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg
田海立@CSDN
2012-08-28
Android中可能会用到第三方的软件包,这包括Java包.jar和Native包.so。jar包既可通过Eclipse开发环境集成,也可通过编译源码集成,看你的工作环境。
假定自己开发的程序为MyMaps,需要用到BaiduMaps的库,包括baidumapapi.jar和libBMapApiEngine_v1_3_1.so。
一、Eclipse中集成第三方jar包及.so动态库
MyMaps工程下创建目录libs以及libs/armeabi,把baidumapapi.jar放在的libs/目录下,把libBMapApiEngine_v1_3_1.so放在libs/armeabi/下。
Eclipse中把第三方jar包baidumapapi.jar打包到MyMaps的步骤:
1. 右击工程,选择Properties;
2. Java Build Path,选择Libraries;
3. Libraries页面点击右面按钮“Add Library…”;
4. 选择“User Library”,点击“Next”;
5. 点击“User Libraries”按钮;
6. 在弹出界面中,点击“New…”;
7. 输入“User library name”,点击“OK”确认;
8. 返回之后,选择刚刚创建的User library,右面点击“AddJARs”;
9. 选择MyMaps/libs/下的baidumapapi.jar;
10. 确认,返回。
这样,编译之后,该jar包就会被打进MyMaps.apk中,libBMapApiEngine_v1_3_1.so也被打包在lib/armeabi/中。
程序运行过程中,libBMapApiEngine_v1_3_1.so被放在/data/data/<yourAppPackage>/lib/下,加载动态库时系统会从程序的该lib/目录下查找.so库。
二、源码中集成第三方集成jar包及.so动态库
Android源码中MyMaps放在packages/apps下。MyMaps下创建目录libs以及libs/armeabi,并把baidumapapi.jar放在libs/,把libBMapApiEngine_v1_3_1.so放在libs/armeabi。
2.1 修改Android.mk文件
Android.mk文件如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_STATIC_JAVA_LIBRARIES := libbaidumapapi LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := MyMaps include $(BUILD_PACKAGE) ################################################## include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=libbaidumapapi:libs/baidumapapi.jar LOCAL_PREBUILT_LIBS :=libBMapApiEngine_v1_3_1:libs/armeabi/libBMapApiEngine_v1_3_1.so LOCAL_MODULE_TAGS := optional include $(BUILD_MULTI_PREBUILT) # Use the following include to make our testapk.
锂电池并联的目的是为了增加容量,因此,锂电池并联充电也与单节锂电池相比具有不同的设计特点,主要体现在充电电流设计与并联电池的一致性上。 并联锂电池的特点是:电压不变,电池容量相加,内阻减小,可供电时间延长。并联充电的核心内容是并联电流的大小及其作用。根据并联理论,干路电流等于各支路电流之和,因此,已经组合为电池组的n节并联锂电池要达到与单节电池相同的充电效率,充电电流应为n个锂电池电流之和,在欧姆定律:I=U/R的公式下,这个设计是合理的。但是,并联后的电池内阻也会起变化,按照并联内阻公式,两个并联锂电池的总内阻等于两个电池内阻乘积与其内阻相加之和的比值,并联电阻会随着并联电池数量的增加而递减。所以,锂电池并联充电的效率可以在电流小于n个并联锂电池电流之和的基础上实现。 锂电池并联要注意电池的一致性问题,因为,一致性差的并联锂电池会在充电过程中出现充不进电或者过充现象,从而破坏电池结构,影响整组电池的寿命。因此,选用并联电池时应避免将不同品牌、不同容量和不同新旧程度的锂电池混用。对电池一致性的内在要求是:锂电池电芯电压差≤10mV,内阻差≤5mΩ,容量差≤20mA。 事实上,锂电池并联后会有一个充电保护芯片对锂电池进行充电保护,锂电池生产厂家在制作并联锂电池时已经充分考虑了锂电池并联后的变化特点,也是按照上述要求进行电流设计和电芯选择的,所以,使用者需要按照并联锂电池的说明按部就班地进行充电,避免不正确的充电对电池可能造成的损害。
Technorati 标签: 锂电池, 电路设计, 充电电路 转载于:https://www.cnblogs.com/drjloveyou/archive/2012/08/27/2658571.html
配置好 2012 AlwaysOn High availability Group就想体验一下在辅助数据库做备份的新功能。在辅助服务器备份,这样可以减轻主服务器的负载(非常好的一项改进,以前Databasemirroring辅助数据库是不可以访问的)。
但是备份的时候却报错:
Backup databasetesttodisk ='c:\test.bak'
Msg 3059, Level 16, State 1, Line 2
This BACKUP or RESTORE command is not supported ona database mirror or secondary replica.
Msg 3013, Level 16, State 1, Line 2
BACKUP DATABASE is terminating abnormally.
查了一下微软的网站才发现在辅助服务器备份有限制和局限性的:
·辅助副本只完全支持 BACKUP LOG。BACKUP DATABASE仅支持数据库、文件或文件组的仅复制完整备份。辅助副本不支持差异备份。
注意
仅复制备份不影响日志链。同样,仅复制备份也不清除差异位图。
·若要备份辅助数据库,辅助副本必须能够与主副本进行通信,并且状态必须为 SYNCHRONIZED或 SYNCHRONIZING。
·配置可用性组以支持辅助副本备份只会为要执行备份的位置创建备份首选项。
将脚本修改为Copy_Only选项备份成功:
backup databasetesttodisk ='c:\test.bak'withcopy_only
Processed 328 pages for database 'test', file'test' on file 1.
1.下载并安装好android-sdk后(android-sdk里包含了android 1.6 ~ android4.0的所有api,支持各种版本的android)
2.下载adt(android development tools),解压开来,在eclipse中(Help/Install New Software、work with输入ADT所在目录:file:/E:/dev/android/ADT-20.0.3/)
(当前选择了Android DDMS和Android Development tools即ADT)点击next安装即可。
安装好ADT后,重新开发eclips
一、新建工程
File/new project ,当前出现了Android工程模板,选择Android Application Project即可。
模板1:新建空的android工程
模板2:从现有代码新建一个工程
模板3:新建一个android的例子工程(里面有很多源码例子),可以新建出来学习
模板4:新建android 单元测试的项目
二、新建出项目后onCreate()增加业务代码
如绘制:Button 等UI控件(xml中) File/New/File,选择res目录,即可增加UI资源文件(xml结尾),双击新建的xml就可绘制UI