当前位置: 首页 > news >正文

旅游网站设计的优点微信开放平台小程序开发文档

旅游网站设计的优点,微信开放平台小程序开发文档,建e网室内设计网官网vr全景,网页设计师职业资格证书参考链接#xff1a; Java中的StringBuffer类 StringBuilder和StringBuffer这两个类在动态拼接字符串时常用#xff0c;肯定比String的效率和开销小#xff0c;这是因为String的对象不会回收哦。 其实我一直用StringBuilder这个类#xff0c;因为可以简写为sb的变量在程序…参考链接 Java中的StringBuffer类 StringBuilder和StringBuffer这两个类在动态拼接字符串时常用肯定比String的效率和开销小这是因为String的对象不会回收哦。  其实我一直用StringBuilder这个类因为可以简写为sb的变量在程序里很爽可是后来师兄说web程序特别是高并发的程序中不要用stringbuilder因为简单说stringBuilder不是线程安全的而StirngBuffer就是线程安全的。从网上看到Stringbuffer中方法大都采用了synchronized的关键字修饰。  来来来我们先复习下syncronized的用法有篇博客写的挺好的给个链接 http://leo-faith.iteye.com/blog/177779  1、synchronized关键字的作用域有二种 1是某个对象实例内synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法如果一个对象有多个synchronized方法只要一个线程访问了其中的一个synchronized方法其它线程不能同时访问这个对象中任何一个synchronized方法。这时不同的对象实例的synchronized方法是不相干扰的。也就是说其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法 2是某个类的范围synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。 2、除了方法前用synchronized关键字synchronized关键字还可以用于方法中的某个区块中表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/}它的作用域是当前对象 3、synchronized关键字是不能继承的也就是说基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){}而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法 好了言归正传我们继续StringBuffer和StringBuilder的区别。  就是说StringBuffer中所有的方法都要加锁所以好多操作看上去都是线性操作的。所以要慢些。  一般情况下,速度从快到慢:StringBuilderStringBufferString.当需要在循环中多次使用字符串拼接时,建议使用StringBuilder或StringBuffer.当数量级在百万级(这里可能不准确)时,StringBuilder的速度会体现出来. 以下是实验数据  01 final static int ttime 30000;// 测试循环次数  02    03     public void test(String s) {  04         long begin System.currentTimeMillis();  05         for (int i 0; i ttime; i) {  06             s add;  07         }  08         long over System.currentTimeMillis();  09         System.out.println( 操作 s.getClass().getName() 类型使用的时间为 (over - begin) 毫秒 );  10     }  11    12     public void test(StringBuffer s) {  13         long begin System.currentTimeMillis();  14         for (int i 0; i ttime; i) {  15             s.append(add);  16         }  17         long over System.currentTimeMillis();  18         System.out.println( 操作 s.getClass().getName() 类型使用的时间为 (over - begin) 毫秒 );  19     }  20    21     public void test(StringBuilder s) {  22         long begin System.currentTimeMillis();  23         for (int i 0; i ttime; i) {  24             s.append(add);  25         }  26         long over System.currentTimeMillis();  27         System.out.println( 操作 s.getClass().getName() 类型使用的时间为 (over - begin) 毫秒 );  28     }  29    30     // 对 String 直接进行字符串拼接的测试  31     public void test2() {  32         String s2 abadf;  33         long begin System.currentTimeMillis();  34         for (int i 0; i ttime; i) {  35             String s s2 s2 s2;  36         }  37         long over System.currentTimeMillis();  38         System.out.println( 操作字符串对象引用相加类型使用的时间为 (over - begin) 毫秒 );  39     }  40    41     public void test3() {  42         long begin System.currentTimeMillis();  43         for (int i 0; i ttime; i) {  44             String s abadf abadf abadf;  45         }  46         long over System.currentTimeMillis();  47         System.out.println( 操作字符串相加使用的时间为 (over - begin) 毫秒 );  48     }  49    50     public static void main(String[] args) {  51         String s1 abc;  52         StringBuffer sb1 new StringBuffer(abc);  53         StringBuilder sb2 new StringBuilder(abc);  54         Test t new Test();  55         t.test(s1);  56         t.test(sb1);  57         t.test(sb2);  58         t.test2();  59         t.test3();  60     }  试验结果如下  操作 java.lang.String 类型使用的时间为 2432 毫秒   操作 java.lang.StringBuffer 类型使用的时间为 3 毫秒   操作 java.lang.StringBuilder 类型使用的时间为 3 毫秒   操作字符串对象引用相加类型使用的时间为 6 毫秒   操作字符串相加使用的时间为 1 毫秒   把循环次数调的很大试了用下jconsle来监视内存GC第一次使用不太明白有个博客写的很好的有空研究一下  http://jiajun.iteye.com/blog/810150  再补充一个Jstat的工具 http://xiaolele.iteye.com/blog/592022  /**  *20120516昨天忘看源代码了  **/  StringBuffer中append方法有很多重载有synchronized关键字没错主要调用的还是AbstractStringBuilder的super的方法。  1 public synchronized StringBuffer append(String s)  2 {  3     super.append(s);  4     return this;  5 }  父类的方法为  01 public AbstractStringBuilder append(String s) {  02    03     if (s null)  04         s null;  05     int i s.length();  06     if (i 0)  07         return this;  08     int j count i;  09     if (j value.length)  10         expandCapacity(j);  11     s.getChars(0, i, value, count);  12     count j;  13     return this;  14 }  StringBuilder类中的append就没有同步的关键字了。父类的方法基本上差不多。  总结一下StringBuffer线程安全内部有synchronized方法StringBuilder是1.5之后出来的高并发就不要用了。另外synchronized的使用要熟悉以后研究下java内存的工具比如jconsle。  转载http://my.oschina.net/zimingforever/blog/57514
http://www.huolong8.cn/news/457939/

相关文章:

  • 深圳网站建设服务泰安市建设职工培训中心电话网站
  • 企业官网网站建设免费信息网络安全
  • 海原县建设局网站wordpress下载类模板
  • 线切割加工东莞网站建设技术支持网站开发是什么环境
  • 网站排名优化技术网站的结构怎么做
  • 临沂市建设局兰山区网站域名手机网站源码
  • 中山快速做网站费用有教做衣服的网站吗
  • 重庆怎么自己做网站做笑话网站赚钱吗
  • 新建网站的步骤平凉建设局网站
  • 二手车网站模版售价wordpress怎么上传pdf
  • 男男互做网站泰国怎么在网上打广告
  • 北滘大良网站制作金华市建设银行网站
  • 注册公司网站怎么收费互联网企业网站模板
  • 秦皇岛手机网站制作价格钦州网站建设公司哪家好
  • 保定建站价格网站建设与管理的专业群
  • 网站年费怎么做分录个人免费注册公司网站
  • 政务服务网站建设情况汇报wordpress文本编辑插件
  • 海外贸易网站退工在那个网站上做
  • 吴桥县网站建设公司微信开发平台开发
  • 做cpa能用什么网站深圳商城网站设计费用
  • 时尚手表网站网站备案到
  • 常德网站建设常德济南seo培训
  • 福建网站开发公司个人养老保险
  • 关于医院网站建设的通知电子商务网站基本功能
  • 网站每个页面关键词都一样注册公司需要多久
  • 上行30m可以做网站吗python如何与wordpress
  • 创新优典网站建设怎样使wordpress网站文章左对齐
  • 广州网站优化招聘公共资源交易中心是事业单位吗
  • 新民电商网站建设程序python做的网站如何打开
  • 如何制作互联网网站wordpress后台添加友情链接