![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
j2se
文章平均质量分 76
partner4java
这个作者很懒,什么都没留下…
展开
-
合理应用HashMap扩容
public class HashMapextends AbstractMapimplements Map, Cloneable, Serializable此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以原创 2012-05-18 13:28:56 · 7138 阅读 · 0 评论 -
尽量确定StringBuffer的容量
“StringBuffer 的构造器会创建一个默认大小(通常是16)的字符数组。在使用中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。 如:StringBuffer buffer = new StringBuf原创 2012-05-18 10:23:26 · 4719 阅读 · 1 评论 -
第3章 垃圾收集器与内存分配策略--《深入理解 Java 虚拟机》笔记
垃圾回收器(Garbage Collection,GC)。三件事:哪些内存需要回收?什么时候回收?如何回收?程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。堆中几乎存放着Java世界中所有对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有原创 2012-01-17 18:12:14 · 1329 阅读 · 0 评论 -
JDK的命令行工具
这些命令行工具大多数是lib\tools.jar类库的一层薄包装而已,他们主要的功能代码是在tools类库中实现的。tools.jar中的类库不属于Java的标准API,如果引入这个类库,就意味着你的程序只能运行在Sun Hotspot(或一些从Sun买了JDK源码License的虚拟机,如IBM J9、BEAJRockit)上面,或者在部署程序时需要一起部署tools.jar。原创 2012-05-13 22:17:36 · 2432 阅读 · 0 评论 -
System.out.println performance
Any system that logs vast amounts of information, needs to think about performance. The activity of logging cannot be a synchronous blocking call that returns only when the message has been logged to转载 2012-05-10 13:52:49 · 892 阅读 · 0 评论 -
一个隐形的java int溢出
故事的背景: 笔者最近在做一个类SNS的项目,其中使用了MongoDB进行Feed信息存储,并使用定时器删除过期信息。 定时器的时间变量为60天,设定 Java代码 private long msgInvalidDue = 60 * 24 * 3600 * 1000; 之所以这么写常量,完全是为了代码的易读易维护。转载 2012-04-24 13:03:37 · 982 阅读 · 0 评论 -
Java IO系统(上)
对程序语言的设计者来说,创建一个好的输入输出(I/O)系统是一项艰难的任务。File类File类这个名称一般会误解以为是代表的一个文件,其实还能代表一个目录下的一组文件的名称,代表一个文件集时可以对此结合调用list()方法,这个方法会返回一个字符数组。---------文档:listpublic String[] list()返回由此抽象路径名所表示的目录原创 2012-04-08 22:47:48 · 1097 阅读 · 0 评论 -
ThreadLocal 解决SimpleDateFormat非线程安全
大致意思:Tim Cull碰到一个SimpleDateFormat带来的严重的性能问题,该问题主要有SimpleDateFormat引发,创建一个 SimpleDateFormat实例的开销比较昂贵,解析字符串时间时频繁创建生命周期短暂的实例导致性能低下。即使将 SimpleDateFormat定义为静态类变量,貌似能解决这个问题,但是SimpleDateFormat是非线程安全的,同样存在问题,转载 2012-03-01 14:59:13 · 5183 阅读 · 1 评论 -
volatile Fields(langspec-3.0)
As described in §17, the Java programming language allows threads to accessshared variables. As a rule, to ensure that shared variables are consistently andreliably updated, a thread should ensu转载 2012-02-08 23:36:03 · 1059 阅读 · 0 评论 -
java RMI helloworld
首先Spring中整合了RMI:http://blog.csdn.net/partner4java/article/details/7285055然后,我们单独写个helloworld,分为几步1、接口定义,需要实现Remote2、实现3、注册开启4、调用具体使用可查看jdk文档package com.partner4java.demo.rmi;原创 2012-08-20 16:14:44 · 1332 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
如果你用win /tomcat/bin/catalina.bat 加上下面的命令: set JAVA_OPTS=-Xms32m -256m 如果你用unix/linux /tomcat/bin/catalina.sh 加上下面的命令: JAVA_OPTS="-Xms32m -Xm原创 2011-07-13 17:45:10 · 1059 阅读 · 0 评论 -
计算程序所需线程总数 -- 摘自《Java虚拟机并发编程》
计算程序所需线程总数:线程数 = CPU可用核心数/(1-阻塞系数)其中阻塞系数的取值在0-1之间。计算密集型任务的阻塞系数为0,而IO密集型任务的阻塞系数则接近于1。一个完全阻塞的任务是注定要挂掉的,所以我们无须担心阻塞系数会达到1。为了更好的确定程序所需线程数,我们需要知道下面两个关键参数:1、处理器可用核心数2、任务的阻塞系数第一个参数很容易确定(Runt原创 2013-07-23 09:35:58 · 4941 阅读 · 0 评论 -
《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析
《partner4java 讲述 java基础》之第一步:list 、set 、map 粗浅性能对比分析不知道有多少同学和我一样,工作五年了还没有仔细看过list、set的源码,一直停留在老师教导的:“LinkedList插入性能比ArrayList好,LinkedList顺序遍历性能比ArrayList好”的世界里。可是真是如此么?本文很“肤浅”的对比和分析了几种常用的集合。。。原创 2013-07-08 00:45:00 · 12892 阅读 · 14 评论 -
myeclipse通过数据表生成jpa或hibernate实体
就是说,如果你已经有了数据库表,那么你又不想手工书写jpa或hibernate实体(要谁都不想,还要自己写那么一大堆的注解),myeclipse能够帮助你自动生成。1、首先你需要创建一个jpa项目:如图在普通项目上点右键添加2、打开生成工作环境3、创建数据库连接因为,myeclipse也要连接数据库获取表结构4、填写连接信息5、打开表列表原创 2013-01-31 16:47:43 · 12278 阅读 · 0 评论 -
Java编码易疏忽的十个问题
在Java编码中,我们容易犯一些错误,也容易疏忽一些问题,因此笔者对日常编码中曾遇到的一些经典情形归纳整理成文,以共同探讨。1. 纠结的同名现象很多类的命名相同(例如:常见于异常、常量、日志等类),导致在import时,有时候张冠李戴,这种错误有时候很隐蔽。因为往往同名的类功能也类似,所以IDE不会提示warn。解决写完代码时,扫视下import部分转载 2013-01-25 23:25:51 · 1503 阅读 · 0 评论 -
《partner4java 讲述JDBC》之第一步:JDBC基础
JDBC的作用:The Java Database Connectivity (JDBC) 是一套Java API,用于Java编程语言和广泛的数据库之间连接的标准。JDBC API提供了一套访问“SQL数据库”的调用级API。JDBC API概述:JDBC API做的三件事情:1、建立与数据库的连接(或访问系统数据源)2、发送SQL语句3、处理结果JD原创 2012-11-22 16:51:31 · 2185 阅读 · 1 评论 -
Thread 常搞混的几个概念sleep、wait、yield、interrupt
sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。 通过调用sleep使任务进入休眠状态,在这种情况下,任务在指定的时间内不会运行。调用sleep的时候锁并没有被释放。休眠 Java SE5引入了更加显示的sleep()版本作为TimeUnit类的一部分,这个方法允许你指定sleep(原创 2012-09-18 20:52:12 · 24448 阅读 · 4 评论 -
多态
带着问题探索多态package cn.partner4java.test;public class A { public A() { System.out.println("Constructor A"); }}package cn.partner4java.test;public class B extends A { public B() { Syst原创 2012-02-04 23:25:23 · 898 阅读 · 0 评论 -
第7章 虚拟机类加载机制--《深入理解 Java 虚拟机》笔记
1概述虚拟机把描述类的数据从Class文件加载到虚拟机,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。与那些在编译时需要连接的语言不同,在Java语言里面,类的加载和连接过程都在程序运行期间完成的,这样会在类的加载稍微增加一些性能开销,但是却能为java应用程序提供高度的灵活性,java中天生就可以动态扩展的语言特性就原创 2012-02-09 22:37:38 · 1788 阅读 · 1 评论 -
并发基础知识1
1并发的多面性 并发编程令人困惑的一个主要原因是是:使用并发时需要解决的问题有多个,而实现并发的方式也有多种,并且这两者之间没有明显的映射关系。 用并发解决的问题大体上分为“速度”和“设计可管理性”两种。 1、更快的执行 并发是用于多处理器编程的基本工具。 但是,并发通常是提高运行在单处理器上的程序的性能。(但是,会出现上下文切换的代价) 但是,单处理器上,还可以处理阻原创 2012-01-09 12:29:43 · 1424 阅读 · 0 评论 -
HashSet和HashMap的关系
public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable{ static final long serialVersionUID = -5024744406713321676L; private transient HashMap map;原创 2011-12-27 20:59:15 · 1467 阅读 · 1 评论 -
多线程及java5的线程并发库
package com.partner4java.itcast.util.thread;/** * 两种传统的线程创建方式 * * @author partner4java * */public class TraditionalThread { // 创建线程的两种传统方式// 在Thread子类覆盖的run方法中编写运行代码// 涉及一个以往知识点:能否在run方法原创 2011-12-27 21:48:39 · 4568 阅读 · 1 评论 -
C3P0连接池详细配置
C3P0连接池详细配置关键字: c3p0 连接池 详细配置c3p0-config> c3p0一次同时获取的连接数。Default: 3 -->3 30 1000 false c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么 属性preferredTestQu转载 2009-11-17 18:25:00 · 940 阅读 · 0 评论 -
c3p0的使用
一: 导c3p0的包二:导数据库连接包 ,比如我使用的mysql三:在类路径底线创建文件 jdbc.properties 文件内容为: driverClass=org.gjt.mm.mysql.DriverjdbcUrl=jdbc:mysql://localhost:3306/my_test?useUnicode=true&characterEncodi原创 2009-11-18 10:00:00 · 3570 阅读 · 0 评论 -
The readResolve Method -- 序列化实现readResolve方法的作用
For Serializable and Externalizable classes, the readResolve method allows a class to replace/resolve the object read from the stream before it is returned to the caller. By implementing the readResol原创 2011-12-09 23:55:35 · 2909 阅读 · 0 评论 -
checked exception(已检查异常) unchecked(未检查)
public class RuntimeExceptionextends ExceptionRuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。 也就是未检查异常。 相反就是已检查异常,如: public原创 2011-10-30 20:52:33 · 1959 阅读 · 0 评论 -
并发基础知识2
4终结任务 1、装饰性花园 2、在阻塞时终结 四种状态: 新建(new):当线程被创建时,他只会短暂的出于这种状态。 就绪(Runnable):在这种状态下,只要调度器把时间片分配给线程,线程就可以运行。 阻塞(Blocked):线程能够运行,但有某个条件阻止他的运行。 死亡(Dead):处于死亡活终止状态的线程将不再是可调度的,并且再也不会得到CPU时间,他的原创 2012-01-09 12:30:26 · 1046 阅读 · 0 评论 -
java.util.ConcurrentModificationException
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 例如,某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不明确的。如果检测到这种行为,一些迭代器实现(包括 JRE 提供的所有通用 collection 实现)可能选择抛出此异常。执行该操作的迭代器称为快速失败 迭代器,因为迭代器很快就完全失败,而不会冒着原创 2012-01-09 17:27:22 · 1321 阅读 · 0 评论 -
在线程中finally是否运行
package com.partner4java;import java.util.concurrent.TimeUnit;/** * 当你设置了后台运行,且在运行结束之前没有让该线程报错或者做清理工作,就不再打印finally了 * @author partner4java * */public class Test2 { public static void main(S原创 2012-02-08 18:32:03 · 1845 阅读 · 0 评论 -
第6章 类文件结构--《深入理解 Java 虚拟机》笔记
无关性的基石字节码(ByteCode)是构成平台无关性的基石。实现语言无关性的基础仍然是虚拟机和字节码存储格式,使用Java编译器可以把Java代码编译为存储字节码的Class文件,使用JRuby等其他语言的编译器一样可以把程序代码编译成Class文件,虚拟机并不关心Class的来源是什么语言,只要他符合Class文件应用的结构就可以在Java虚拟机中运行。原创 2012-02-07 22:32:25 · 894 阅读 · 0 评论 -
初始化与清理
随着计算机革命的发展,“不安全”的编程方式已逐步成为编程代价高昂主要原因之一。初始化和清理(cleanup)正是涉及安全的两个问题。用构造器确保初始化可以假想为编写的每个类都添加initialize方法。该方法的名称提醒你在使用其对象之前,应该先调用initialize()。然而,这同事意味着用户必须记得自己去调用此方法。在Java中,通过提供构造器,类的设原创 2012-02-06 16:34:57 · 656 阅读 · 0 评论 -
第2章 Java内存区域与内存溢出异常--《深入理解 Java 虚拟机》笔记
1概述基本就是C和C++程序编写需要维护没一个对象生命开始到终结。Java把内存控制权利交给了Java 虚拟机,但是有时却会出现内存溢出等问题。2运行时数据区域Java虚拟机在执行Java程序的过程中会把他所管理的内存换分为若干不同的内存区域。===运行时数据区====方法区(Method Area) 虚拟机栈(VM Stack)原创 2012-01-17 11:38:19 · 1509 阅读 · 0 评论 -
Java won't allow a simple loop such as :while (true)
Java won't allow a simple loop such aswhile (true) {}since any code following the loop will be unreachable (doh!). Java considers this an error, not a warning. (I don't agree, but转载 2011-12-29 15:43:07 · 780 阅读 · 0 评论 -
散列与散列码
Demo:按照你的想象,我们应该是可以查出来Groudhog gh = ghog.newInstance(3);这个key的,但是没查到package cn.partner4java.hashcode;/** * 每个Groudhog被给予一个标识数字 * @author partner4java * */public class Groudhog { protecte原创 2012-01-14 11:04:05 · 2295 阅读 · 0 评论 -
对象序列化
当你创建对象时,只要你需要,他就会一直存在,但是在程序终止时,无论如何他都不会继续存在。尽管这么做肯定是有意义,但是仍旧存在某些情况,如果对象能够在程序不运行的情况下仍能存在并保存其信息,那将非常有用。这样,在下次运行时,该对象将被重建并且拥有的信息与程序上次运行时所拥有的信息相同。Java的对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并原创 2012-01-10 12:44:35 · 1000 阅读 · 0 评论 -
eclipse 反编译插件 jdeclipse
JD-Eclipse 是一款免费的eclipse反编译插件,在你查看没有源码的jar时非常方便且有用。(官方地址:http://java.decompiler.free.fr/?q=jdeclipse)目前支持的版本:Windows 32/64-bitLinux 32/64-bitMac OSX 32/64-bit on x86 hardware我本机是Wind原创 2012-11-19 13:30:41 · 20471 阅读 · 0 评论