上接: 网名接龙之--引路人
     正想了解什么是网名接龙,想知道为什么搞这玩意,却被无故地委托重任,受宠若惊!虽然让我写文章是挺头痛的,但从另外一个角度想,既可以提高文笔水平,又可以向大家讨论技术,利大于弊啊!(我做事是这样思维的:感觉不好的事情,要从另外一个角度想其好的方面或者收获;顺心的事情,思考其中的教训不足!)
     好了,转入正题。“追求完美”,最初源于我的第一个博客——新青年里面的口号“放飞梦想,持续优化,追求完美”!而“持续优化,追求完美”,源于CMMI课程里面提到“持续评估”(在此我推荐IT管理者了解CMMI的相关知识,适当地应用于企业中,提高中国的IT管理水平和产品质量),随之我从IT软件开发行业发散思维到整个社会,觉得社会的进步,本身就是持续评估,不断寻找更好更优的解决方案,来解决社会矛盾!甚至我们身边的事情,都是在不断地优化,追求高效!基于这样的理念,我觉得新世纪的新青年就是要有这样的追求!
    其实,这里的网名“追求完美”主要是指在IT软件开发中追求完美,讲究代码优化,提高性能,开发高效,创造精品!
    下面我记下一些Java开发中的代码优化,和大家进行技术交流:
  • 适当使用局部变量。请看子 孑的使用临时变量提高Java代码性能 !
  • 使用 System.arraycopy() 取代通过循环方式来复制数组!
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
          从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
   System.arraycopy(arraySrc, 0, arrayDest, 0, 10000);
相当于
   for (int i=0; i<10000; i++)
   {
       arrayDest[i] = arraySrc[i];
   }
  • 适当使用单例模式,设置变量为static类型,减少内存消耗:
private static void init() {
  try {
      Context initContext = new InitialContext();
      userDataSource = (DataSource)initContext.lookup("java:comp/env/jdbc/honghu_user");
  }catch(NamingException nameEx) {
      System.out.println("lookup失败");
      nameEx.printStackTrace();
  } 
}

  • 将访问实例内变量的getter/setter方法变成final ;
    final标记的方法调用时是作为内嵌inlined代码,减少方法调用时栈的现场状态保留!
  • 判断String是否以某个字母开头,推荐使用charAt(0),无需使用startWith("x");
  • 在多次比较同一字符串时,推荐使用intern()方法来实现直接判断==,不使用equals();
String compareStr = "1234567".intern(); 
str = in.readLine();
while (str != null)
{
//使用了intern()驻留处理,直接== 比较
    if (str == compareStr)
    {  //字符串内容相同
       ...
    }
    else //字符串内容不相同
    {
       ...
    }
str = in.readLine();
}

强调一下,只有当多次比较同一字符串,才有必要使用intern()方法,因为API参考资料表明,执行intern()时,本身是调用equals()的,所以使用intern()所带来的性能提升:在多次比较时,如果每次使用equals()是很费时的,而在批量比较前执行intern(),使用1次equals(),以后就可以使用==快捷地判断!
public String 
返回字符串对象的规范化表示形式。

一个初始为空的字符串池,它由类 String 私有地维护。

当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。

它遵循以下规则:对于任意两个字符串 st,当且仅当 s.equals(t)true 时,s.intern() == t.intern() 才为 true

所有字面值字符串和字符串赋值常量表达式都使用 intern 方法进行操作。字符串字面值在 Java Language Specification 的 §3.10.5 定义。

返回:
一个字符串,内容与此字符串相同,但一定取自具有唯一字符串的池。
  • 在字符串相加时,如果该字符串只有一个字符的话,使用 ' ' 代替 " "!
    例如String str = "追求完美" + '!';
  • 对于占用内存比较多的对象,当其不再使用时,最好设置为null,方便垃圾回收;
  • I/O操作使用缓冲操作,提高效率;
  • 对于Servlet应用:
  1. 采用out对象中的print()代替println();
    因为println()方法本身需要判断当前系统,从而决定使用哪种换行方式。
  2. 采用ServletOutputStream对象代替PrintWriter对象;
    因为PrintWriter对象在输出信息时,需要将字符流编码成字节流,比ServletOutputStream多了一个处理过程。
  3. 采用部分输出的方式向客户端输出数据;
    尤其是所传送的数据量非常大的时候,在最后调用flush()输出数据显然是相对低效的,所以需要采用部分输出数据的方式!
   还有其他更多的优化技巧的,例如try...catch避免放到循环里面,多次拼接字符串时使用StringBuffer(保证同步)或者StringBuilder(不保证同步),使用移位操作来代替部分乘除运算...
 
    提高性能,开发高效,创造精品,持续优化,追求完美!
   偶然机会遇到飞翔我的世界,她爽快地答应接棒,在此非常感谢!
   持续优化,追求完美,世界越来越美好,接下来看看怎样飞翔我的世界!
博客网名接龙规则(参与接龙者务必阅读!):

网名接龙到现在越来越长了,是我们之前没想到的。那么我就简单说一下规则,以免新被点到的博友一头雾水:
1、冤有头债有主,在文章开头,附上前一篇的文章名和标题,方便大家回顾。
2、在文章结尾,你点一个博友,让他继续写下去,带上他的博客链接,方便我们狗仔队追踪过去。你要负责通知到对方(通过站内短消息、博客评论等形式)。
3、标签的写法。必填:51CTO博客接龙 选填:网名 你的网名。参阅我这篇的标签。
4、带上此链接:查阅所有接龙>>
 
参与网名接龙的博友们,请复制本规则在接龙的文章后面

 

转载于:https://blog.51cto.com/android/53015

网名接龙--之追求完美相关推荐

  1. 网名接龙--飞翔我的世界

    上接:网名接龙--之追求完美       和大家一起来玩这个接龙游戏.飞翔我的世界原名<飞翔理想世界>,我有理想,我要飞翔,我要带着我的理想飞翔世界.<?xml:namespace ...

  2. 网名接龙之--引路人

    闲话网名之"引路人"   博友网名接龙,上接闲话网名之"绝缘材料"          查阅所有接龙>>        涛哥给面子,把龙接给了我,我都 ...

  3. 网名接龙--之大话黄琨 ^o^

    你看到的是51CTO博友自发进行的"博客网名接龙"游戏.上接<slamdunk接龙游戏 >  查阅所有接龙   我只能用受宠若惊来形容了,我的名字竟然上了"网 ...

  4. 网名接龙--之“小雨纷纷”的季节

    你看到的是51CTO博友自发进行的"博客网名接龙"游戏.上接飞翔我的世界 查阅所有接龙 光临此地的博友们先问好了 !~~ 呵呵,我博客里的东西确实有点少, 惭愧啊! 因为实在是太忙 ...

  5. 网名接龙--之浪子情风实现人生的第一站

    你看到的是51CTO博友自发进行的"博客网名接龙"游戏.上接小雨纷纷的季节   查阅所有接龙 想想来上海也已经有一个多月了,但如刚来到上海一样,对上海的向往,那种新奇和冲动却一点也 ...

  6. 网名接龙--之风吹云动

    上接:网名接龙--之梦溪 风吹云动星不动,水流船行岸不移,有一次看到这句话后就喜欢上这个名字了.有一部电视剧叫这个名字.以前我的网名也叫过云淡风轻之类的,但总是被人嘲笑俗啊,恶心之类的.不知道为何我特 ...

  7. 网名接龙之--绝缘材料

    上接: 网名接龙--风吹云动 绝缘材料这个名字是我坐车路过的一个门市的名字,人家是专门卖绝缘产品的,我就给拿来用了,当时是因为要去北京参加培训( 我成为程序员所经历的),想把所有的私心杂念都抛在脑后, ...

  8. 51CTO博客接龙:闲话网名之小废物

    啦啦啦,我们来玩儿网名接龙,上接<闲话网名之食匣子>     查阅所有接龙>> 被小K点名了,被迫要用长篇大论来给大家阐述小废物为什么叫小废物而不是小笨蛋大草包之类的,其实我有 ...

  9. 闲话网名之“jrfly331”

    忙碌了一天,回来上51,发现"中了奖"(victoryan留言),呵呵,看这个博客接龙活动有段时间了,今天被点中,既是欣喜又是激动啊,呵呵. 按照活动老规矩,先把上篇贴出来:vic ...

最新文章

  1. Ubuntu的apt-get使用国内的源
  2. laravel报错:TokenMismatchException in VerifyCsrfToken.php
  3. Java机器学习库ML之十一线性SVM
  4. boost::io模块ios相关的测试程序
  5. kubectl 创建pvc_k8s的持久化存储PVPVC
  6. 单例模式示例_单例设计模式示例
  7. linux系统查看磁盘信息
  8. 95-30-009-Channel-总述
  9. 随笔写一个简单的爬虫
  10. GARFIELD@05-02-2005
  11. JavaScript学习(九)—练习:实现跳转页面
  12. Jenkins小坑之执行Shell
  13. python getopt模块_python里argparse模块和getopt模块的区别
  14. 关于Idea模块化部署web项目,Web Resource Directories作用
  15. 德鲁克:终生难忘的7堂课
  16. pgAdmin 3 编译安装
  17. 常用字符对应ASCII码值
  18. zuc算法代码详解_ZUC算法原理及实现过程
  19. 移动端适配 - 小结
  20. java版VR全景漫游制作平台 - 1介绍

热门文章

  1. Unit 1: Packet Sniffing 1.1 Packet Sniffing Introduction to Packet Sniffing
  2. sql 计算法定假节假日解决方案一
  3. SQL执行计划--HIT、SQLPLAN
  4. “progtam received signal SIGABRT,Aborted.“错误
  5. java禅道_使用Java+Excel统计禅道上问题处理情况
  6. Sicily 1090. Highways
  7. markDown简单使用说明
  8. RSA加密 - Java
  9. 【OJ每日一练】1039 - 阶乘数列和
  10. 推荐几个网站 - (可视化、博客、社区、学习网站)