随笔分类 -  Java

上一页 1 2 3 4 5 6 7 8 下一页
Java学习笔记
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 上校 阅读(1044) 评论(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 上校 阅读(303) 评论(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 上校 阅读(2124) 评论(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 上校 阅读(8256) 评论(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 上校 阅读(6694) 评论(0) 推荐(0) 编辑
Java多线程总结之线程安全队列Queue
摘要:在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问(比如修改、遍历、查看)而使这些变量结构被破坏或者针对这些变量操作的原子性被破坏,则这个类就不是线程安全的。 今天就聊聊这两种Queue,本文分为以下两个部分,用分割线分开: 阅读全文
posted @ 2014-12-04 14:20 上校 阅读(7426) 评论(0) 推荐(1) 编辑
并发工具类(三)控制并发线程数的Semaphore
摘要:原文:http://ifeve.com/concurrency-semaphore/#more-14753 简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前一百辆中有五辆车已经离开了XX马路,那么后面就允许有5辆车驶入马路,这个例子里说的车就是线程,驶入马路就表示线程在执行,离开马路就表示线程执行完成,看见红灯就表示线程被阻塞,不能执行。 阅读全文
posted @ 2014-12-03 15:32 上校 阅读(534) 评论(0) 推荐(0) 编辑
服务器应用--双缓冲队列
摘要:在服务器开发中 通常的做法是 把 逻辑处理线程和I/O处理线程分离。 逻辑处理线程:对接收的包进行逻辑处理。 I/0处理线程:网络数据的发送和接收,连接的建立和维护。 通常 逻辑处理线程和I/O处理线程是通过数据队列来交换数据,就是生产者--消费者模型。 这个数据队列是多个线程在共享,每次访问都需要加锁,因此如何减少 互斥/同步的开销就显得尤为重要。 解决方案:双缓冲队列 阅读全文
posted @ 2014-12-02 18:23 上校 阅读(1063) 评论(0) 推荐(0) 编辑
Eclipse断点调试
摘要:作为开发人员,掌握开发环境下的调试技巧十分有必要。去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今年才写了此篇博文。关于java调试技术还有很多,如Java Debug Interface等,依据具体项目的需要,还有很多值得去研究和学习的。该博文仅就Eclipse断点调试技巧做下总结,不足够的地方还请大牛们指点。 1 Debug视图 1.1 线程堆栈视图 阅读全文
posted @ 2014-11-27 22:28 上校 阅读(6557) 评论(0) 推荐(0) 编辑
Spring中依赖注入的使用和配置
摘要:1.属性中引用另外的bean 阅读全文
posted @ 2014-11-04 23:05 上校 阅读(25431) 评论(0) 推荐(0) 编辑
在linux下通过sh运行java程序
摘要:1.导出jar包放在目录下,如/home 2.通过vi创建sh文件如:test.sh,内容如:java -jar test1.jar com.wzh.test.test & 3.运行命令:sh test.sh 阅读全文
posted @ 2014-11-02 22:20 上校 阅读(2051) 评论(0) 推荐(0) 编辑
eclipse导出jar包
摘要:第一种:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包。 1.在eclipse中选择你要导出的类或者package,右击,选择Export子选项; 2.在弹出的对话框中,选择java文件---选择JAR file,单击next; 阅读全文
posted @ 2014-11-02 14:05 上校 阅读(7405) 评论(1) 推荐(0) 编辑
netty中LengthFieldBasedFrameDecoder的使用
摘要:在org.jboss.netty.handler.codec.frame包中,有LengthFieldBasedFrameDecoder类用来解析带有长度属性的包,只要我们在传输协议中加入包的总长度就行了(也许有更好的方法) 具体方法: 1.可在数据包前加4个字节表示包的总长度,例如: 阅读全文
posted @ 2014-10-24 12:35 上校 阅读(13688) 评论(0) 推荐(0) 编辑
网络游戏服务器架构(转)
摘要:网络游戏一般采用C/S结构,客户端负责绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的画面绘制,客户端与服务器通过网络数据包交互完成每一步游戏逻辑。 网关服务器方式,主要职责是将客户端通信和游戏服务器隔离。 网关服务器只负责解析数据包、加解密、超时处理、过滤错误包,客户端只需建立和网关服务器的连接即可进入游戏,无需与游戏服务器直接连接。 网关服务器分为LoginGate(登录网关服务器)、GameGate(游戏网关服务器)。 阅读全文
posted @ 2014-10-21 22:56 上校 阅读(1148) 评论(0) 推荐(0) 编辑
H2 database的使用
摘要:H2数据库介绍 常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。 H2的优势: 1、h2采用纯Java编写,因此不受平台的限制。 2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。 3、性能和功能的优势 阅读全文
posted @ 2014-10-18 19:38 上校 阅读(5303) 评论(0) 推荐(0) 编辑
Java集合
摘要:Java集合:就是将若干用途、性质相同或者相近的“数据”组合而成一个整体。 ·从体系上讲,集合类型可以归纳为三种: 1.集(set):Set集合中不区分元素的顺序,不允许出现重复元素 2.列表(List):List集合区分元素的顺序,且允许包含重复元素。 3.映射(Map):映射中保存成对的“键-值”(Key-Value)信息,映射中不能包含重复的键,每个键最多只能映射一个值。 阅读全文
posted @ 2014-10-14 00:03 上校 阅读(677) 评论(0) 推荐(0) 编辑
Java Volatile相关文章目录
摘要:参考资料: http://www.google.com/cse?sa.x=0&sa.y=0&cx=010284515138798138769%3Aajbqkpwaapm&ie=UTF-8&q=volatile#gsc.tab=0&gsc.q=volatile&gsc.page=1 1、最完整说明Volatile作用的文章: http://ifeve.com/jmm-faq-volatile/ 2、说明了volatile的使用场景的文档: http://www.ibm.com/developerworks/cn/java/j-jtp06197.html 阅读全文
posted @ 2014-10-13 16:54 上校 阅读(329) 评论(0) 推荐(0) 编辑
Java 理论与实践: 正确使用 Volatile 变量
摘要:volatile 变量使用指南 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。 阅读全文
posted @ 2014-10-13 16:52 上校 阅读(420) 评论(0) 推荐(0) 编辑
使用SVN进行项目版本管理
摘要:1.摘要 本文描述了利用SVN进行项目版本管理的方法,涉及项目版本号命名规则、SVN目录结构、第三方代码库的管理、版本创建、发布、修订、合并等行为的方法和原则。 2.版本号命名规则 版本号采用主版本号.次版本号.修订号组成。版本的重大变化主版本号增1,次版本号和修订号归零。版本的相对较小的变化主版本号维持不变,次版本号增1,修订号归零。当一个版本发布后出现了bug需要修订,此时,主、次版本号不变,修订号增1。 注意:对于主动性的程序功能性的变化,应该增加主或次版本号,不应该通过修订号来反映。修订号只用于对已发布版本的bug修订,一个版本的修订号的大小某种程度上可以反映一个版本发布后的稳定情况。 阅读全文
posted @ 2014-10-10 11:43 上校 阅读(7944) 评论(0) 推荐(0) 编辑
项目中用到的logback列子
摘要: log/activity.log %date|%msg%n log/activity.log-%d{yyyy-MM-dd} 阅读全文
posted @ 2014-10-01 01:06 上校 阅读(848) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 下一页