再补充几条: (1) if(a==2){ } if(a==1){ } 改写为 if(a==2){ }else if(a==1){ } (2)swing中添加组件,先把组件属性设置好以后再加上去 (3)服务器端权限校验是为了安全,但是浪费了性能,但是可以减少性能损耗,比如权限验证写入sql中,比如只有自己才能修改自己的文章,那么update....set....from 表格 where id=文章id and 作者id=当前用户id 删除文章权限只有版主有权限 那么sql为delete from 文章表 where id=文章表 and 版块id in(select 版块id from 版主表 where 版主id=当前用户id) 这样权限和操作放在一条sql中执行快。 增加记录操作无法写条件,但是如果采用批量执行sql语句,先增加,然后如果没有权限则删除记录 那么为更好.反正一般不会删除,正常客户端会校验权限.
出现内存泄露,分析发现全局GC频繁时,可以考虑检查代码中大List、Map、数组等处,使用相应的clean方法,减轻GC压力,提高GC效率。
StringBuilder str=new StringBuilder();
那么str.append("m")不如str.append('m')快
问题是第五点,利用++和--以后,这个i就没用啦,需要再次使用这个脚标的时候不就完蛋啦
for (int i=0; ++i<a.length;) {
b = a[i];
......
if (i > 5) {// 此处的i值错咯
...
}
}
2.看业务
3.从AbstractStringBuilder源码来看应该是没错 单字符算的东西少
4.一行或两行对性能没影响
5.有指针肯定是指针最好 然后就是避免重复计算length 倒过来的效率确实要好
6.严重同意
7.没啥好说的
8.同上
那么str.append("m")不如str.append('m')快真不知道……
一点小意见:
个人认为java是一门业务开发语言,应该更加关注程序的可读性。
以前做ACM的时候(C++),会把交换数字写成:
a^=b;
b^=a;
a^=b;
但是实际开发中,这样的代码并不友好。更何况是java,这样一门业务开发语言。
这些tricks可以作为饭后谈资。
不过有一个还是很重要的。
比如内存的回收,可以用null进行人为标记,让JVM更早的进行回收。
我觉得用异或的方法没什么不妥 如果写这个代码同事看不懂 那么应该问同事 你是程序员吗 这就和i++一样 为什么不写i = i + 1没必要手工标null 编译器会帮你做的很好
(1)
if(a==2){
}
if(a==1){
}
改写为
if(a==2){
}else if(a==1){
}
(2)swing中添加组件,先把组件属性设置好以后再加上去
(3)服务器端权限校验是为了安全,但是浪费了性能,但是可以减少性能损耗,比如权限验证写入sql中,比如只有自己才能修改自己的文章,那么update....set....from 表格 where id=文章id and 作者id=当前用户id
删除文章权限只有版主有权限
那么sql为delete from 文章表 where id=文章表 and 版块id in(select 版块id from 版主表 where 版主id=当前用户id)
这样权限和操作放在一条sql中执行快。
增加记录操作无法写条件,但是如果采用批量执行sql语句,先增加,然后如果没有权限则删除记录 那么为更好.反正一般不会删除,正常客户端会校验权限.
int[] a=new int[10000];
for(int i=0,len=a.length;i<len;i++){
int b=a[i];
//然后处理
}len也不会重复计算,请认真理解一下for以及逗号表达式4中连续写还是分开,实际无影响,可以比较一下两种写法编译成class文件后的区别总结是积累的过程,整理和推翻总结中产生的瑕疵才是进步。
我觉得用异或的方法没什么不妥 如果写这个代码同事看不懂 那么应该问同事 你是程序员吗 这就和i++一样 为什么不写i = i + 1没必要手工标null 编译器会帮你做的很好看到这位仁兄的回复,我其实也想问,你是程序员吗?++ -- 的操作一直都不推荐在负载的运算中使用,为什么? 因为这玩意带来的结果完全和编译器挂钩
异或的功能太唯一了,这样的性能提升基本可以忽略了
object=null 这玩意仁者见仁的事情,不过我个人也推荐在一些内存消耗很多大,需要重点关注的地方可以使用这样的方式,同时可以通知gc该工作了,不要把编译器优化和GC自动回收当成神,他们也是按照逻辑工作的
别让编码上的小花招给系统带来难以预估和确认的坑