- 浏览: 165902 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
sunjia44:
很不错的方法
JTable设置单元格不可编辑 -
atian25:
主要是html dom生成的太多了.4.x版本中grid得到了 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
aspnetdb:
遇到过同样的情况,纠结中。grid显示不只和行后关系和列的多少 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
beyondsphinx:
我用TABLE一次加载几百行浏览器也卡死啊,客户端电脑,浏览器 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
共产主义:
我也遇到这个问题。用buffergrid加载的时候,数据量一多 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死!
形式一."见兔撒鹰".
如果有一个类有一个集合成员,可以在为此成员添加元素时再把具体集合建立起来,以免浪费空间和时间.
例:
1 public class Company{
2 private List members=null;
3
4 public void addMember(Member member){
5 if(members=null){
6 members=new ArrayList();
7 }
8
9 members.add(member);
10 }
11 }
12
异曲同工的另外一个例子:
1 public class Singleton{
2 private static Singleton instance=null;
3
4 public static synchronized Singleton getInstance(){
5 // 要用的时候再把Singleton建立起来
6 if(instance==null){
7 instance=new Singleton();
8 }
9
10 return instance;
11 }
12 }
13
形式二."只管结果,不顾过程"
从集合中取区间元素时,可以直接从上下限之间取来,让try...catch...去处理越界的事.
题设:有个数不定元素的列表(allTodoes),需要从中取N个,起始位置不限,你怎么编写程序.
很多人开始进行越界的判断,出来一堆if else,有时还需要在纸上写好思路,完毕后还有多方测试,生怕出错,即使编写好后其他人维护起来也是小心翼翼的.其实没必要这么麻烦.
例.
1 int start=pageIndex*pageSize;
2 int end=start+pageSize;
3
4 for(int i=start;i<end;i++){
5 try{
6 todoResult.addTodo((Todo)allTodoes.get(i));
7 }
8 catch(Exception ex){
9 continue;
10 }
11 }
题外话:分支和循环语句天生就不容易理解,尤其是在嵌套较深的时候,因为这是机器的思维特性.还是try...catch...比较贴近人类思维.
形式三."奉旨行事"
在查询中,如果把查询条件和遴选过程分开来更有益,程序也因此解耦合.这才是OO化的查询.
需求:从公司的职员列表中,找出男性且年龄大于22的成员.
传统写法:
1 List allmembers=company.getMembers();// 取得所有成员
2 List results=new ArrayList();// 结果列表
3
4 for(Iterator it=allmembers.iterator();it.hasNext();){
5 Member member=(Member)it.next();
6
7 if(member.getAge()>22 && member.isMale()){ // 筛选,这里是把查询条件和遴选过程融合在一起,条件一变立即就得加个分支.
8 results.add(member);
9 }
10 }
11
这种写法没有错,但是不是面向对象的写法,它有以下缺陷:
1.查询条件和筛选过程没有分离.
2.这样写的后果使Company变成了一个失血模型而不是领域模型.
3.换查询条件的话,上面除了"筛选"一句有变化外其它都是模板代码,重复性很高.
真正符合OO的查询应该是这样:
1 MemberFilter filter1=new MemberFilter(){
2 public boolean accept(Member member) {
3 return member.isMale() && member.getAge()>22;
4 }
5 };
6
7 List ls=company.listMembers(filter1);
这段代码成功的把查询条件作为一个接口分离了出去,接口代码如下:
1 public interface MemberFilter{
2 public boolean accept(Member member);
3 }
而类Company增加了这样一个函数:
1 public List listMembers(MemberFilter memberFilter){
2 List retval=new ArrayList();
3
4 for(Iterator it=members.iterator();it.hasNext();){
5 Member member=(Member)it.next();
6
7 if(memberFilter.accept(member)){
8 retval.add(member);
9 }
10 }
11
12 return retval;
13 }
这就把模板代码归结到了类内部,外面不会重复书写了.Company也同时拥有了数据和行为,而不是原来的数据容器了.
形式四."化繁为简"
这种结构将多个分支语句变换为一个查表结构,这样做对扩充程序结构,修改具体数额都很方便,使程序更易于维护.还可以把归结出的表结构放在持久介质中如XML文件,数据库等,用到的时候再取,这样做在条件变化时不需要修改程序.
原始代码(VB代码,但应该不妨碍理解):
1 Dim count1
2 count1 = salary.Value + USA.Value * Drate + JAN.Value * Jrate - 4000
3 If count1 < 500 Then
4 tax.Value = count1 * 0.05
5 ElseIf count1 < 2000 Then
6 tax.Value = count1 * 0.1 - 25
7 ElseIf count1 < 5000 Then
8 tax.Value = count1 * 0.15 - 125
9 ElseIf count1 < 20000 Then
10 tax.Value = count1 * 0.2 - 375
11 ElseIf count1 < 40000 Then
12 tax.Value = count1 * 0.25 - 1375
13 ElseIf count1 < 60000 Then
14 tax.Value = count1 * 0.3 - 3375
15 Else
16 tax.Value = count1 * 0.3 - 3375
17 End If
变换如下:
这是个税率计算的语句段,公式是确定的:税=月薪*税率-折扣,税率又和月薪有关系,月薪越高税率越高,首先这里可以归纳出一个基本类:
1 public class TaxItem{
2 float limit; // 月薪界限
3 float ratio;// 税率
4 float discount;// 折扣
5
6 public TaxItem(float limit,float ratio,float discount){
7 this.limit=limit;
8 this.ratio=ratio;
9 this.discount=discount;
10 }
11
12 public TaxItem(){
13 this(0.0f,0.0f,0.0f);
14 }
15
16 public float getDiscount() {
17 return discount;
18 }
19
20 public float getLimit() {
21 return limit;
22 }
23
24 public float getRatio() {
25 return ratio;
26 }
27 }
28
29
然后就是税计算类:
1 public class TaxCaculator{
2 private static ArrayList list=new ArrayList();
3
4 public TaxCaculator(){
5 // 这里把各个等级加入到链表中,注意添加顺序是由小到大
6 list.add(new TaxItem(500.0f,0.05f,0.0f));
7 list.add(new TaxItem(2000.0f,0.1f,25.0f));
8 list.add(new TaxItem(5000.0f,0.15f,125.0f));
9 list.add(new TaxItem(20000.0f,0.2f,375.0f));
10 list.add(new TaxItem(40000.0f,0.25f,1375.0f));
11 list.add(new TaxItem(60000.0f,0.3f,3375.0f));
12 }
13
14 // 这个函数用来计算所得税
15 public float getTax(float salary){
16 TaxItem item=new TaxItem();
17
18 for(int i=0;i<list.size();i++){
19 item=(TaxItem)list.get(i);
20
21 if(salary>item.getLimit()){
22 continue;
23 }
24 else{
25 break;
26 }
27 }
28
29 // 返回最终结果,当然,这个公式也可以放在TaxItem 类中,这里就见仁见智了。
30 return salary*item.getRatio()-item.getDiscount();
31 }
32 }
调用如下 :
1 TaxCaculator taxCaculator=new TaxCaculator();
2
3 float salary=1000.f;
4 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
5
6 salary=2000.f;
7 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
8
9 salary=3000.f;
10 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
形式五."分而治之"
该结构将分支语句的执行部分分散到单独的类中处理,降低了系统耦合度,程序也更容易维护.
举例如下:
在日常工作中,我们经常需要解析一段字符串并交由相应的函数进行处理,例如TCP/IP通信中的命令解析和用户自定义文件解析等场合,通常的处理方法是这样:
if(命令==”AAA”){
函数AAA执行;
}
else if(命令==”BBB”){
函数BBB执行;
}
.
.
.
else{
函数XXX执行;
}
这种方法在命令较少时是有效的,当命令众多时,if语句和相关的函数将会形成一个巨集,给检查,维护和扩充带来了很大的不便,久而久之将会成为系统性能提升的瓶颈。
一个成功的软件程序必须尽可能简单并易于重构和扩展,在命令模式和Java反射机制的帮助下,我们可以从容解决上述问题,达到简单并易于重构和扩展的要求。以下将简要说明解决方案。
1. 制作一个命令的抽象接口.
1 public interface Command{
2 public abstract void execute(String[] args);
3 }
2. 让每种命令都实现这个接口.
1 // 命令一
2 public class CommandType01 implements Command{
3 public void execute(String[] args){
4 System.out.println("\n commandType01 start!");
5 System.out.print("\t commandType01 Length="+args.length);
6 System.out.println("\n commandType01 End!");
7 }
8 }
9
10 // 命令二
11 public class CommandType02 implements Command{
12 public void execute(String[] args){
13 System.out.println("\n commandType02 start!");
14
15 System.out.print("\t commandType02 is:");
16 for(String item:args){
17 System.out.print("\t "+item);
18 }
19
20 System.out.println("\n commandType02 End!");
21 }
22 }
23
24 // 命令三
25 public class CommandType03 implements Command{
26 public void execute(String[] args){
27 System.out.println("\n commandType03 start!");
28 System.out.print("\t commandType03 last Nation="+args[args.length-1]);
29 System.out.println("\n commandType03 End!");
30 }
31 }
32
33
让每种命令都实现execute接口的用意是强制每个命令的执行方式一致,简化调用时的处理,但执行内容应该根据实际情况决定.
例如
命令一的执行内容是输出参数的个数
命令二的执行内容是输出参数的内容
命令三的执行内容是输出最后一个参数
3. 将命令防置到命令中心中去
命令中心类的代码如下:
1 public class Mediation{
2 Command cmmd;// 命令对象的引用
3 String[] cmmdArgs;// 参数列表
4
5 public Mediation(){
6
7 }
8
9 public void fetchCommand(String strCmmd){
10 cmmdArgs=strCmmd.split("\s+");// 分析原始命令
11
12 String className="Command"+cmmdArgs[0];// 根据分析后命令的第一个参数得到类名
13
14 try{
15 Class cls=Class.forName(className);// 利用反射机制得到类
16 cmmd=(Command)cls.newInstance();// 由类得到类实例
17 }
18 catch(Exception ex){
19 ex.printStackTrace();
20 }
21 }
22
23
24 public void executeCommand(){
25 cmmd.execute(cmmdArgs);// 执行命令对象的execute方法
26 }
27
28 }
4.执行过程
1 Mediation mediation = new Mediation();
2 // 取得命令一并执行
3 mediation.fetchCommand("Type01 AB CD");
4 mediation.executeCommand();
5
6 // 取得命令二并执行
7 mediation.fetchCommand("Type02 1 2 3 4");
8 mediation.executeCommand();
9
10 // 取得命令三并执行
11 mediation.fetchCommand("Type03 USA Russia China");
12 mediation.executeCommand();
13
执行效果如下:
commandType01 start!
commandType01 Length=3
commandType01 End!
commandType02 start!
commandType02 is: Type02 1 2 3 4
commandType02 End!
commandType03 start!
commandType03 last Nation=China
commandType03 End!
由上可见,我们使用反射机制消除了庞大的分支语句,把命令的执行过程分散到了Command的各个子类中,降低了命令类和控制中心类的耦合程度,达到了简单并易于重构和扩展的要求。如果新增一种命令,只需增加Command的一个子类就可以了。
很多情况下命令的execute函数需要命令中心类或者其它类的信息,这时可以在Command接口类和Command的子类中间添加一个类CommandBase,在其中包含一个命令中心类或者其它类的引用,并增加相应的getter/setter函数,Command的子类继承这个类并实现Command的接口即可,最后在fetchCommand函数中传入中心类或者其它类的引用即可。
注意:这里对命令和Command的子类类名有特殊要求,即一种命令对应一种子类,子类类名可以由命令的首个参数简单组合而来,否则还是避免不了分支语句。
以上五种组织形式,若加以灵活运用,相信能减少一些代码臭味.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alexjjf/archive/2007/06/23/1663787.aspx
如果有一个类有一个集合成员,可以在为此成员添加元素时再把具体集合建立起来,以免浪费空间和时间.
例:
1 public class Company{
2 private List members=null;
3
4 public void addMember(Member member){
5 if(members=null){
6 members=new ArrayList();
7 }
8
9 members.add(member);
10 }
11 }
12
异曲同工的另外一个例子:
1 public class Singleton{
2 private static Singleton instance=null;
3
4 public static synchronized Singleton getInstance(){
5 // 要用的时候再把Singleton建立起来
6 if(instance==null){
7 instance=new Singleton();
8 }
9
10 return instance;
11 }
12 }
13
形式二."只管结果,不顾过程"
从集合中取区间元素时,可以直接从上下限之间取来,让try...catch...去处理越界的事.
题设:有个数不定元素的列表(allTodoes),需要从中取N个,起始位置不限,你怎么编写程序.
很多人开始进行越界的判断,出来一堆if else,有时还需要在纸上写好思路,完毕后还有多方测试,生怕出错,即使编写好后其他人维护起来也是小心翼翼的.其实没必要这么麻烦.
例.
1 int start=pageIndex*pageSize;
2 int end=start+pageSize;
3
4 for(int i=start;i<end;i++){
5 try{
6 todoResult.addTodo((Todo)allTodoes.get(i));
7 }
8 catch(Exception ex){
9 continue;
10 }
11 }
题外话:分支和循环语句天生就不容易理解,尤其是在嵌套较深的时候,因为这是机器的思维特性.还是try...catch...比较贴近人类思维.
形式三."奉旨行事"
在查询中,如果把查询条件和遴选过程分开来更有益,程序也因此解耦合.这才是OO化的查询.
需求:从公司的职员列表中,找出男性且年龄大于22的成员.
传统写法:
1 List allmembers=company.getMembers();// 取得所有成员
2 List results=new ArrayList();// 结果列表
3
4 for(Iterator it=allmembers.iterator();it.hasNext();){
5 Member member=(Member)it.next();
6
7 if(member.getAge()>22 && member.isMale()){ // 筛选,这里是把查询条件和遴选过程融合在一起,条件一变立即就得加个分支.
8 results.add(member);
9 }
10 }
11
这种写法没有错,但是不是面向对象的写法,它有以下缺陷:
1.查询条件和筛选过程没有分离.
2.这样写的后果使Company变成了一个失血模型而不是领域模型.
3.换查询条件的话,上面除了"筛选"一句有变化外其它都是模板代码,重复性很高.
真正符合OO的查询应该是这样:
1 MemberFilter filter1=new MemberFilter(){
2 public boolean accept(Member member) {
3 return member.isMale() && member.getAge()>22;
4 }
5 };
6
7 List ls=company.listMembers(filter1);
这段代码成功的把查询条件作为一个接口分离了出去,接口代码如下:
1 public interface MemberFilter{
2 public boolean accept(Member member);
3 }
而类Company增加了这样一个函数:
1 public List listMembers(MemberFilter memberFilter){
2 List retval=new ArrayList();
3
4 for(Iterator it=members.iterator();it.hasNext();){
5 Member member=(Member)it.next();
6
7 if(memberFilter.accept(member)){
8 retval.add(member);
9 }
10 }
11
12 return retval;
13 }
这就把模板代码归结到了类内部,外面不会重复书写了.Company也同时拥有了数据和行为,而不是原来的数据容器了.
形式四."化繁为简"
这种结构将多个分支语句变换为一个查表结构,这样做对扩充程序结构,修改具体数额都很方便,使程序更易于维护.还可以把归结出的表结构放在持久介质中如XML文件,数据库等,用到的时候再取,这样做在条件变化时不需要修改程序.
原始代码(VB代码,但应该不妨碍理解):
1 Dim count1
2 count1 = salary.Value + USA.Value * Drate + JAN.Value * Jrate - 4000
3 If count1 < 500 Then
4 tax.Value = count1 * 0.05
5 ElseIf count1 < 2000 Then
6 tax.Value = count1 * 0.1 - 25
7 ElseIf count1 < 5000 Then
8 tax.Value = count1 * 0.15 - 125
9 ElseIf count1 < 20000 Then
10 tax.Value = count1 * 0.2 - 375
11 ElseIf count1 < 40000 Then
12 tax.Value = count1 * 0.25 - 1375
13 ElseIf count1 < 60000 Then
14 tax.Value = count1 * 0.3 - 3375
15 Else
16 tax.Value = count1 * 0.3 - 3375
17 End If
变换如下:
这是个税率计算的语句段,公式是确定的:税=月薪*税率-折扣,税率又和月薪有关系,月薪越高税率越高,首先这里可以归纳出一个基本类:
1 public class TaxItem{
2 float limit; // 月薪界限
3 float ratio;// 税率
4 float discount;// 折扣
5
6 public TaxItem(float limit,float ratio,float discount){
7 this.limit=limit;
8 this.ratio=ratio;
9 this.discount=discount;
10 }
11
12 public TaxItem(){
13 this(0.0f,0.0f,0.0f);
14 }
15
16 public float getDiscount() {
17 return discount;
18 }
19
20 public float getLimit() {
21 return limit;
22 }
23
24 public float getRatio() {
25 return ratio;
26 }
27 }
28
29
然后就是税计算类:
1 public class TaxCaculator{
2 private static ArrayList list=new ArrayList();
3
4 public TaxCaculator(){
5 // 这里把各个等级加入到链表中,注意添加顺序是由小到大
6 list.add(new TaxItem(500.0f,0.05f,0.0f));
7 list.add(new TaxItem(2000.0f,0.1f,25.0f));
8 list.add(new TaxItem(5000.0f,0.15f,125.0f));
9 list.add(new TaxItem(20000.0f,0.2f,375.0f));
10 list.add(new TaxItem(40000.0f,0.25f,1375.0f));
11 list.add(new TaxItem(60000.0f,0.3f,3375.0f));
12 }
13
14 // 这个函数用来计算所得税
15 public float getTax(float salary){
16 TaxItem item=new TaxItem();
17
18 for(int i=0;i<list.size();i++){
19 item=(TaxItem)list.get(i);
20
21 if(salary>item.getLimit()){
22 continue;
23 }
24 else{
25 break;
26 }
27 }
28
29 // 返回最终结果,当然,这个公式也可以放在TaxItem 类中,这里就见仁见智了。
30 return salary*item.getRatio()-item.getDiscount();
31 }
32 }
调用如下 :
1 TaxCaculator taxCaculator=new TaxCaculator();
2
3 float salary=1000.f;
4 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
5
6 salary=2000.f;
7 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
8
9 salary=3000.f;
10 System.out.println("Salary="+salary +" Tax="+taxCaculator.getTax(salary));
形式五."分而治之"
该结构将分支语句的执行部分分散到单独的类中处理,降低了系统耦合度,程序也更容易维护.
举例如下:
在日常工作中,我们经常需要解析一段字符串并交由相应的函数进行处理,例如TCP/IP通信中的命令解析和用户自定义文件解析等场合,通常的处理方法是这样:
if(命令==”AAA”){
函数AAA执行;
}
else if(命令==”BBB”){
函数BBB执行;
}
.
.
.
else{
函数XXX执行;
}
这种方法在命令较少时是有效的,当命令众多时,if语句和相关的函数将会形成一个巨集,给检查,维护和扩充带来了很大的不便,久而久之将会成为系统性能提升的瓶颈。
一个成功的软件程序必须尽可能简单并易于重构和扩展,在命令模式和Java反射机制的帮助下,我们可以从容解决上述问题,达到简单并易于重构和扩展的要求。以下将简要说明解决方案。
1. 制作一个命令的抽象接口.
1 public interface Command{
2 public abstract void execute(String[] args);
3 }
2. 让每种命令都实现这个接口.
1 // 命令一
2 public class CommandType01 implements Command{
3 public void execute(String[] args){
4 System.out.println("\n commandType01 start!");
5 System.out.print("\t commandType01 Length="+args.length);
6 System.out.println("\n commandType01 End!");
7 }
8 }
9
10 // 命令二
11 public class CommandType02 implements Command{
12 public void execute(String[] args){
13 System.out.println("\n commandType02 start!");
14
15 System.out.print("\t commandType02 is:");
16 for(String item:args){
17 System.out.print("\t "+item);
18 }
19
20 System.out.println("\n commandType02 End!");
21 }
22 }
23
24 // 命令三
25 public class CommandType03 implements Command{
26 public void execute(String[] args){
27 System.out.println("\n commandType03 start!");
28 System.out.print("\t commandType03 last Nation="+args[args.length-1]);
29 System.out.println("\n commandType03 End!");
30 }
31 }
32
33
让每种命令都实现execute接口的用意是强制每个命令的执行方式一致,简化调用时的处理,但执行内容应该根据实际情况决定.
例如
命令一的执行内容是输出参数的个数
命令二的执行内容是输出参数的内容
命令三的执行内容是输出最后一个参数
3. 将命令防置到命令中心中去
命令中心类的代码如下:
1 public class Mediation{
2 Command cmmd;// 命令对象的引用
3 String[] cmmdArgs;// 参数列表
4
5 public Mediation(){
6
7 }
8
9 public void fetchCommand(String strCmmd){
10 cmmdArgs=strCmmd.split("\s+");// 分析原始命令
11
12 String className="Command"+cmmdArgs[0];// 根据分析后命令的第一个参数得到类名
13
14 try{
15 Class cls=Class.forName(className);// 利用反射机制得到类
16 cmmd=(Command)cls.newInstance();// 由类得到类实例
17 }
18 catch(Exception ex){
19 ex.printStackTrace();
20 }
21 }
22
23
24 public void executeCommand(){
25 cmmd.execute(cmmdArgs);// 执行命令对象的execute方法
26 }
27
28 }
4.执行过程
1 Mediation mediation = new Mediation();
2 // 取得命令一并执行
3 mediation.fetchCommand("Type01 AB CD");
4 mediation.executeCommand();
5
6 // 取得命令二并执行
7 mediation.fetchCommand("Type02 1 2 3 4");
8 mediation.executeCommand();
9
10 // 取得命令三并执行
11 mediation.fetchCommand("Type03 USA Russia China");
12 mediation.executeCommand();
13
执行效果如下:
commandType01 start!
commandType01 Length=3
commandType01 End!
commandType02 start!
commandType02 is: Type02 1 2 3 4
commandType02 End!
commandType03 start!
commandType03 last Nation=China
commandType03 End!
由上可见,我们使用反射机制消除了庞大的分支语句,把命令的执行过程分散到了Command的各个子类中,降低了命令类和控制中心类的耦合程度,达到了简单并易于重构和扩展的要求。如果新增一种命令,只需增加Command的一个子类就可以了。
很多情况下命令的execute函数需要命令中心类或者其它类的信息,这时可以在Command接口类和Command的子类中间添加一个类CommandBase,在其中包含一个命令中心类或者其它类的引用,并增加相应的getter/setter函数,Command的子类继承这个类并实现Command的接口即可,最后在fetchCommand函数中传入中心类或者其它类的引用即可。
注意:这里对命令和Command的子类类名有特殊要求,即一种命令对应一种子类,子类类名可以由命令的首个参数简单组合而来,否则还是避免不了分支语句。
以上五种组织形式,若加以灵活运用,相信能减少一些代码臭味.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/alexjjf/archive/2007/06/23/1663787.aspx
发表评论
-
两分钟让你明白什么是ERP
2010-07-03 17:01 870把专业的问题通俗化—— ERP(Enterpris ... -
使用Java将Word转为Html或txt等
2010-04-29 11:01 1235前一段时间为这个问题头疼的不得了,后来查阅了资料终于解决了;现 ... -
如何利用Java-JACOB操作WORD文档
2010-04-29 10:50 1754JACOB是一个 JAVA到微软的 ... -
Ant教程详解
2010-04-22 09:06 868Ant是一个Apache基金会下的跨平台的构件工具,它可以实现 ... -
java调用.dll文件
2010-04-19 10:45 1521一.在程序用jnative调用window的dll 1. ... -
如何在Web页面上直接打开、编辑、创建Office文档
2010-04-18 15:03 1551如何在Web页面上做到像S ... -
Apache POI For Java Excel
2010-04-18 14:14 1518Apache POI For Java Excel POI的 ... -
Java 串口通信环境的配置
2010-03-19 11:03 2308做串口通信,要从网上下载三个文件:分别是: 1.COMM.J ... -
多浏览器兼容的CSS js 的 tab 选项卡
2010-03-14 14:18 1736<!DOCTYPE html PUBLIC " ... -
简单实用的CSS网页布局中文排版心得
2010-03-14 10:05 859一、如何设定文字字体、颜色、大小 — 使用font f ... -
CSS网页布局编码小技巧整理
2010-03-14 09:59 6601、ul标签在Mozilla中默认是有padding值的,而 ... -
Java编程中中文乱码的问题
2010-03-14 09:45 786http://blog.csdn.net/wonder4/ar ... -
Java操作手机发送短信
2010-03-14 09:09 1429作者:曹祺 Blog: http://bl ... -
一个非常有用工具软件
2010-03-14 08:23 815这个小工具非常有用,它可以将数据库表中的字段生成对应的Java ... -
JDK1.5中的打印服务
2010-03-14 08:18 979package com.unutrip.print; imp ... -
使用SUN的MAIL包发邮件
2010-03-11 09:02 878import java.util.Properties; i ... -
JXL生成Excel并下载
2010-02-01 10:21 1576package cn.hld.practise.excel; ... -
java代码写excel和文本文档的导入导出【转】
2010-02-01 10:09 1655例子1-----》利用jxl包来完成excel导入导出 JX ... -
jxl生成excel
2010-02-01 10:06 805package campaign; import com.s ... -
利用jxl包生成Excel实例
2010-02-01 10:04 1314import jxl.*; import jxl.write. ...
相关推荐
微信小程序的兴起,为移动互联网注入了新的活力。它以其无需安装、即用即走的便捷性,迅速赢得了广大用户的青睐。作为小程序开发者或设计师,掌握一套高效、美观的模板,无疑是打开小程序开发宝藏的钥匙。现在,我们...
此外,游戏中的提示功能为初学者提供了学习的机会,而对老手而言,它则是一种锦上添花的辅助工具。 为了进一步增强游戏的社交属性,数独小程序可能还设有成就系统和排行榜。成就系统鼓励玩家解锁各种游戏成就,而...
通达信锦上添花(优化)主图指标.doc
可以为文章锦上添花,同时也能更好的推广商品。 //收费功能: 6、文章资讯 可通过后台一键式自动生成静态html页面,同时生成google地图、和百度地图,方便搜索引擎收录 7、淘宝画报功能,自定义画报导航 自定义...
科研——锦上添花1
[第5讲]锦上添花——LabVIEW经典界面演绎flv,LabVIEW网络讲坛第一辑——界面风云告一段落,本集将为您展示系列LabVIEW经典界面。
锦上添花雪中送炭.doc
### 为软件系统锦上添花:57款扩展软件功能的工具软件 对于大多数用户而言,市面上的主流软件虽然强大,但有时仍然无法完全满足个性化需求。为了弥补这一不足,这里精心挑选了57款实用的工具软件,它们能够有效地...
在这个日益依赖网络的时代,《精品时刻表程序》更是提供了一种无需联网的查询方式,这对于经常身处网络环境不佳的地方的用户来说,无异于雪中送炭。用户可通过离线功能,提前下载更新的时刻数据,即便在没有互联网的...
【电子信息技术在教学中的应用】 随着科技进步,电子信息技术...教师应积极掌握并运用这些技术,使其真正为教学带来“锦上添花”的效果。同时,也要注意平衡技术的使用,防止过度依赖,确保技术服务于教育的本质目标。
### 美赛超全绘图方法,让你论文锦上添花 #### 一、引言 美国大学数学建模竞赛(MCM/ICM)是全球最具影响力的数学建模竞赛之一,吸引了众多国内外学子参与。一篇优秀的参赛论文不仅要解决实际问题,还需要展现出高...
锦上添花的近义词.doc
该套动易系统在WEB开发领域的领先地位勿容置疑,而今配合由QuickWAP开发的动易内容管理系统的WAP适配程序更是令动易锦上添花。 QuickWAP问世于2005年7月底,凭着开发人员对WAP开发技术的熟悉和接入联通移动业务...
如文档中提到的芯谷科技,该公司在芯片解密领域拥有丰富的经验和领先的技术,能为客户提供包括芯片解密、芯片设计、物料代采购和晶圆代工的一站式整合服务。 当然,芯片解密技术的使用需要严格遵守相关法律法规,...
该套动易系统在WEB开发领域的领先地位勿容置疑,而今配合由QuickWAP开发的动易内容管理系统的WAP适配程序更是令动易锦上添花。 QuickWAP问世于2005年7月底,凭着开发人员对WAP开发技术的熟悉和接入联通移动业务...
“锦上添花”这个成语富含深厚的文化内涵,意指在已经十分美好的事物上再增添一些装饰,使其更加完美。这个成语体现了中国人民追求完美、不断进取的精神风貌。在小学语文教学中,教师通常会引导学生学习并理解这类...
计算机辅助检测(CAD)为CT虚拟结肠镜检查(CTC)锦上添花 Medicsight MedicRead Colon SFDA获批.pdf
这篇专题报告——“20210815-华创证券-【专题报告】综合模型择时系列之三:锦上添花,强中更强,综合兵器V3”聚焦于金融投资领域中的一个关键话题:如何利用综合模型进行有效的资产择时。择时策略在投资管理中扮演着...