12 2014 档案
map遍历测试结果
摘要:结论:一般情况下推荐使用enterSet的for循环(即以下的方法2),如果只是取key值可以使用keySet性能会更好。 因为keySet只取key,enterSet即取了key又取了value。 public static void main(String[] args) throws Exception { ConcurrentHashMap r = new ConcurrentHashMap(); long size = 2000000; // 方法1 for (long i = 0; i size; i++) { r.put(i, new ReqPacket()); } System.out.println("方法1开始执行数:" + r.size()); 阅读全文
posted @ 2014-12-31 11:10 上校 阅读(883) 评论(0) 推荐(0) 编辑
Java Map遍历方式的选择
摘要:1. 阐述   对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。那么实际情况如何呢?   为了解遍历性能的真实差距,包括在遍历key+value、遍历key、遍历value等不同场景下的差异,我试着进行了一些对比测试。 2. 对比测试   一开始只进行了简单的测试,但结果却表明keySet的性能更好,这一点让我很是费解,不都说entrySet明显好于keySet吗?为了进一步地进行验证,于是采用了不同的测试数据进行更详细的对比测试。 2.1 测试数据 阅读全文
posted @ 2014-12-30 19:42 上校 阅读(1046) 评论(0) 推荐(0) 编辑
MySql 存储过程实例(附完整注释)
摘要:将下面的语句复制粘贴可以一次性执行完,我已经测试过,没有问题! MySql存储过程简单实例: /********************* 创建表 *****************************/ delimiter // DROP TABLE if exists test // 阅读全文
posted @ 2014-12-25 18:27 上校 阅读(56490) 评论(1) 推荐(2) 编辑
ArrayList,Vector线程安全性测试
摘要:结论:如果集合不是线程安全的话,在多线程情况下插入数据会出现数据丢失的问题。 Java代码 import java.util.ArrayList; import java.util.List; //实现Runnable接口的线程 public class HelloThread implements Runnable { String name; List v; 阅读全文
posted @ 2014-12-24 00:38 上校 阅读(3546) 评论(0) 推荐(0) 编辑
Java线程专栏文章汇总(转)
摘要:原文:http://blog.csdn.net/ghsau/article/details/17609747 JDK5.0之前传统线程 Java线程(一):线程安全与不安全 Java线程(二):线程同步synchronized和volatile Java线程(三):线程协作-生产者/消费者问题 Java线程(四):线程中断、线程让步、线程睡眠、线程合并 Java线程(五):Timer和TimerTask 阅读全文
posted @ 2014-12-24 00:03 上校 阅读(305) 评论(0) 推荐(0) 编辑
线程池使用实例
摘要:线程池: package com.mainserver; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.config.ServerConfig; 阅读全文
posted @ 2014-12-20 15:08 上校 阅读(2126) 评论(0) 推荐(0) 编辑
Java队列集合的性能测试
摘要:同时开10个线程存入和取出100万的数据,结论如下: DoubleBufferedQueue ConcurrentLinkedQueue ArrayBlockingQueue LinkedBlockingQueue 执行结果如下: DoubleBufferedQueue入队时间:9510 出队时间:10771 DoubleBufferedQueue入队时间:8169 出队时间:9789 ConcurrentLinkedQueue入队时间:10557 出队时间:13716 ConcurrentLinkedQueue入队时间:25298 出队时间:25332 ArrayBlockingQueue入队时间:21080 出队时间:22025 ArrayBlockingQueue入队时间:17689 出队时间:19654 LinkedBlockingQueue入队时间:38236 出队时间:52555 LinkedBlockingQueue入队时间:30646 出队时间:38573 阅读全文
posted @ 2014-12-11 20:58 上校 阅读(8272) 评论(0) 推荐(0) 编辑
Eclipse下使用SVN版本控制
摘要:作者:朱先忠编译 转自天极[url]http://dev.yesky.com/356/2578856.shtml[/url] 摘要 CVS很酷,但Subversion更酷。然而,如果你在使用Eclipse进行开发,那么你可能直到近来才能利用Subversion带来的优点。随着 Subclipse的发行,Subversion可能会最终在你的Eclipse IDE环境充分发挥其威力而压倒CVS。 一、SCM和Subversion简介   软件配置管理(SCM)是管理源码并保持其安全的良好艺术,它能实现源码与其他团队成员之间保持共享,并且能够对之加以保护。良好地利用SCM,你能够容易地跟踪软件的发行和新的开发分支;这样以来,可以更为容易地标识和修正发行产品中的错误。 阅读全文
posted @ 2014-12-10 12:36 上校 阅读(6703) 评论(0) 推荐(0) 编辑
MySQL作业
摘要:创建作业事件 CREATE DEFINER=`root`@`%` EVENT `e_move_loginLog` ON SCHEDULE EVERY 1 MONTH STARTS '2015-01-01 05:30:01' ON COMPLETION NOT PRESERVE ENABLE DO CALL sp_moveLoginRecord() 阅读全文
posted @ 2014-12-06 16:03 上校 阅读(1204) 评论(0) 推荐(1) 编辑
Java多线程总结之线程安全队列Queue
摘要:在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问(比如修改、遍历、查看)而使这些变量结构被破坏或者针对这些变量操作的原子性被破坏,则这个类就不是线程安全的。 今天就聊聊这两种Queue,本文分为以下两个部分,用分割线分开: 阅读全文
posted @ 2014-12-04 14:20 上校 阅读(7481) 评论(0) 推荐(1) 编辑
并发工具类(三)控制并发线程数的Semaphore
摘要:原文:http://ifeve.com/concurrency-semaphore/#more-14753 简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前一百辆中有五辆车已经离开了XX马路,那么后面就允许有5辆车驶入马路,这个例子里说的车就是线程,驶入马路就表示线程在执行,离开马路就表示线程执行完成,看见红灯就表示线程被阻塞,不能执行。 阅读全文
posted @ 2014-12-03 15:32 上校 阅读(536) 评论(0) 推荐(0) 编辑
服务器应用--双缓冲队列
摘要:在服务器开发中 通常的做法是 把 逻辑处理线程和I/O处理线程分离。 逻辑处理线程:对接收的包进行逻辑处理。 I/0处理线程:网络数据的发送和接收,连接的建立和维护。 通常 逻辑处理线程和I/O处理线程是通过数据队列来交换数据,就是生产者--消费者模型。 这个数据队列是多个线程在共享,每次访问都需要加锁,因此如何减少 互斥/同步的开销就显得尤为重要。 解决方案:双缓冲队列 阅读全文
posted @ 2014-12-02 18:23 上校 阅读(1073) 评论(0) 推荐(0) 编辑


点击右上角即可分享
微信分享提示