
J2SE
fly2749
这个作者很懒,什么都没留下…
展开
-
Java 命名规则
包名:包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event;类名:首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如class HelloWorldApp;接口名:命名规则与类名相同,例如interface Collection;方法名:往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanc转载 2007-09-23 15:48:00 · 1173 阅读 · 0 评论 -
ConcurrentHashMap之实现细节
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2014-08-28 14:56:04 · 521 阅读 · 0 评论 -
并发读写缓存实现机制(零):缓存操作指南
游戏中为了提高系统运行速度和游戏承载量,使用缓存是一个必要的手段。本文中的缓存是在guava缓存的基础上增加了数据的持久化状态和异步同步数据的功能,同时对调用API做了封装,以达到简化操作、屏蔽内部实现的目的。 在介绍缓存的原理之前,为了一些朋友阅读方便,本文先介绍下缓存的API和使用方法,以帮助大家对本缓存有个大概的理解。这篇文章大家简单阅读即可,后面我们会详细介绍缓存的实现细节。转载 2014-09-01 05:55:51 · 1018 阅读 · 0 评论 -
并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?
大家都知道ConcurrentHashMap的并发读写速度很快,但为什么它会这么快?这主要归功于其内部数据结构和独特的hash运算以及分离锁的机制。做游戏性能很重要,为了提高数据的读写速度,方法之一就是采用缓存机制。因此缓存的性能直接影响游戏的承载量和运行流畅度,作为核心基础设施,缓存必须具备以下方面的功能: 1.快速定位数据2.并发变更数据3.数据的过期控制与异步写入4.高并转载 2014-09-01 05:57:52 · 2615 阅读 · 0 评论 -
并发读写缓存实现机制(二):高并发下数据写入与过期
在上一章中,我们讲解了ConcurrentHashMap的读取效率很高的原因,一般来说并发的读取和写入是一对矛盾体,而缓存的过期移除和持久化则是另一对矛盾体。这一节,我们着重来了解下高并发情况下缓存的写入、过期控制及周边相关功能。 系列文章目录: 并发读写缓存实现机制(零):缓存操作指南 并发读写缓存实现机制(一):为什么ConcurrentHashMap可以这么快?转载 2014-09-01 06:02:18 · 1851 阅读 · 0 评论 -
Java中守护线程的总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是转载 2014-11-28 00:51:25 · 752 阅读 · 0 评论 -
初学Java多线程:使用Synchronized块同步变量
我们可以通过synchronized块来同步特定的静态或非静态方法。要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传入synchronized块。下面的代码演示了如何同步特定的类方法:package mythread; public class SyncThread extends Thread {转载 2013-09-04 10:33:39 · 2052 阅读 · 0 评论 -
java多线程框架以及java的并发库concurrent
JDK5中的一个亮点就是将Doug Lea的并发库引入到Java标准库中。Doug Lea确实是一个牛人,能教书,能出书,能编码,不过这在国外还是比较普遍的,而国内的教授们就相差太远了。一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的Tomcat、Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就可以,何况使用也转载 2013-05-09 14:47:09 · 1155 阅读 · 0 评论 -
JDK 5.0 中更灵活、更具可伸缩性的锁定机制
新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronizedJDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如, java.util.concurrent.lock 中的类ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有syn转载 2014-11-29 14:15:30 · 682 阅读 · 0 评论 -
java按照map的value排序
java的TreeMap可以排序,只可惜是按照key来排序的,或者重写其他Map的排序算法也都是按照key来排序的,下面贴出来一个按照value排序的算法:public class SortMap { public static void main(String[] args) throws Exception { // TODO code application lo转载 2014-12-21 18:15:20 · 627 阅读 · 0 评论 -
Java中的集合类图
Java的集合类关系图:List:add/remove/get/set。1,ArrayList:其实就是数组,容量一大,频繁增删就是噩梦,适合随机查找;2,LinkedList:增加了push/[pop|remove|pull],好啰嗦,其实都是removeFirst;3,Vector:历史遗留产物,同步版的ArrayList,名字起的奇奇怪怪,代码和ArrayList太像转载 2014-12-05 16:43:18 · 883 阅读 · 1 评论 -
ConcurrentHashMap介绍
ConcurrentHashMap - 术语定义 术语英文 解释 哈希算法 hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记转载 2014-12-01 18:16:55 · 809 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2014-12-12 22:57:07 · 617 阅读 · 0 评论 -
HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
Map is one of the most important data structures. In this tutorial, I will show you how to use different maps such as HashMap, TreeMap, HashTable and LinkedHashMap.Map是数据结构中非常重要的一种。在该文章中,我将会告诉你如何去使用不同的map,诸如HashMap,TreeMap,HashTable和LinkedHashMap。翻译 2015-02-16 05:31:58 · 982 阅读 · 0 评论 -
Java volatile详解
在Java中,为了保证多线程读写数据时保证数据的一致性,可以采用两种方式:同步如用synchronized关键字,或者使用锁对象.volatile使用volatile关键字用一句话概括volatile,它能够使变量在值发生改变时能尽快地让其他线程知道.volatile详解首先我们要先意识到有这样的现象,编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是C转载 2014-08-28 16:58:52 · 673 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2014-08-22 00:12:28 · 658 阅读 · 0 评论 -
java并发编程--互斥锁, 读写锁及条件
java.util.concurrent.locks包提供了锁和等待条件的接口和类, 可用于替代JDK1.5之前的同步(synchronized)和监视器机制(主要是Object类的wait(), notify(), notifyAll()方法). 互斥锁--Lock接口及其实现类ReentrantLock所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们转载 2014-07-03 16:52:45 · 959 阅读 · 0 评论 -
throw 与 throws的区别与联系
区别一:throw 是语句抛出一个异常;throws 是方法抛出一个异常; throw语法:throw 在方法声明中,添加throws子句表示该方法将抛出异常。 throws语法:[]([])[throws] 其中:异常类可以声明多个,用逗号分割。 区别二:throws可以单独使用,但throw不能; 区别三:throw要么和try-catch-finally语句配套使用,要么与th转载 2008-02-08 00:39:00 · 1503 阅读 · 0 评论 -
个人对List接口中的iterator方法的使用了解
说来实在惭愧,做web已经有一年左右,对迭代器的了解却是略知一二。记得以前老师讲的时候,对这种东西不会去苛意得记下来,包括所有的关于基础方面的东西,尤其是IO流方面,那我对他的认识就是完全混乱的理解。对于初学程序语言来讲,我想谁也不会去把所有的基础弄到非常的深入(这只是我的个人看法),只是用到的时候才会去亲身的领悟他。 好了,来说一下我在这次程序中遇到的问题。我要写一个程原创 2009-03-29 00:03:00 · 1109 阅读 · 0 评论 -
POI读取EXCEL
publicclass ReadModelDemo { publicstaticvoid createExcelFromTemplate() { // 读取模板Excel HSSFWorkbook workBook = null; try { workBook = new HSSFWorkbook(ne转载 2010-03-15 13:41:00 · 1654 阅读 · 0 评论 -
jdbc对SqlServer以及java数据类型映射表(很有用的)
Microsoft SQL Server JDBC Driver 使用 JDBC 基本数据类型将 SQL Server 数据类型转换为 Java 编程语言能够理解的格式,或者反过来。从 Microsoft SQL Server JDBC Driver 2.0 开始,JDBC 驱动程序提供对 JDBC 4.0 API 的支持,后者包括 SQLXML 数据类型和 National (Unicode) 数据类型,例如 NCHAR、NVARCHAR、LONGNVARCHAR 和 NCLOB。转载 2010-12-06 15:13:00 · 4167 阅读 · 0 评论 -
PrintWriter返回乱码的分析及解决
转自http://qify.javaeye.com/blog/549118转载 2010-11-11 14:42:00 · 3323 阅读 · 0 评论 -
Connection reset by peer: socket write error错误分析及解决
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/20090909/174547.html转载 2011-05-19 11:15:00 · 18555 阅读 · 7 评论 -
JAVA中各类CACHE框架简介
OSCache OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点: 缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 拥有全面的API--OSCache API给你全面的程序来控制所有的OSCach转载 2011-06-30 16:41:00 · 1140 阅读 · 0 评论 -
extjs调用后台oracle jdbc驱动无法进行删除和查询的问题(ps.executeUpdate())
这个问题折磨了一周多,终于搞定,记录一下。本人对extjs毫无了解,这次接触的项目前台全部使用了该框架,整体的有了一个细微的了解,感觉extjs的缓存是个问题,也许所有的前端的框架的缓存都是需要经常去处理的。 这次遇到的是jdbc中删除数据无效的问题。很郁闷.....原创 2010-09-13 17:32:00 · 2004 阅读 · 0 评论 -
Poi excel设置小数位数
//by gisoracle 设置两位小数 HSSFDataFormat format = wb.createDataFormat(); cellStyle.setDataFormat(format.getFormat("0.00")); // 两位小数 //by gisoracle 设置四位小数 HSSFDataFormat format = wb.createData转载 2012-10-23 17:02:00 · 11795 阅读 · 0 评论 -
Map中使用数组作为key的用法
这个是今天我的个人经历,作为经验教训,鄙视自己一下。先说下问题,在网上查了下,我用的是ConCurrentMap接口来作为引用,创建的ConCurrentHashMap做键值对的处理,这个不是主要的,主要的是Map中使用的数组Key。通过一下一段代码来说明一下我的问题所在吧:package com.test;import java.util.concurrent.Concurr原创 2013-04-22 22:58:31 · 13683 阅读 · 2 评论 -
java并发编程-Executor框架详解
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,转载 2011-07-01 11:50:00 · 2896 阅读 · 2 评论 -
Java内部类的使用小结
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。*内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类转载 2014-06-24 11:18:28 · 628 阅读 · 0 评论 -
Java(Android)线程池
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?转载 2014-07-01 15:05:25 · 615 阅读 · 0 评论 -
深入理解Java内存模型之系列篇
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共转载 2015-04-18 08:37:45 · 706 阅读 · 0 评论