
j2se
文章平均质量分 50
july_2
这个作者很懒,什么都没留下…
展开
-
Locale
定义-------------------------------------------------------------------------------Locale确定了一种专门的语言和区域.通过使用java.util.Locale对象来为那些区域敏感型的对象定制格式化数据以及向用户的展示.Locale影响到用户界面的语言,情形映射,整理(排序),日期和时间的格式以及货币转载 2012-09-05 17:18:06 · 511 阅读 · 0 评论 -
google Guava简介
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我转载 2013-09-27 16:58:29 · 712 阅读 · 0 评论 -
Java虚拟机类加载器及URLClassLoader应用
Java虚拟机中定义了一个类装载器子系统和执行引擎子系统.其中类装载器子系统主要是负责装载类二进制文件到JVM中的,而执行引擎子系统则负责执行其中的指令.二者都是虚拟机的具体实现,执行引擎程序代码中无法控制,相对来说类装载器就比较灵活.JVM规范中定义虚拟机必须实现启动类装载器(bootstarp),但是用户可以定义自己的类装载器.一个程序启动的时候有3个类加载器.第一个是启动类加载器,它转载 2013-12-03 16:58:11 · 638 阅读 · 0 评论 -
Java中的SPI(Service Provider Interface)介绍及示例
一个服务(service)通常指的是已知的接口或者抽象类,服务提供方就是对这个接口或者抽象类的实现,然后按spi标准存放到资源路径META-INF/services目录下,文件的命名为该服务接口的全限定名。如有一个服务接口com.test.Service,其服务实现类为com.test.ChildService,那此时需要在META-INF/services中放置文件com.test.Servic转载 2013-12-03 17:32:43 · 708 阅读 · 0 评论 -
java加载资源文件
获取到应用类加载器之后,就是获取资源文件了,调用loader.getResource(path)可以加载相应路径下的资源文件,不能以‘/’开头,关于包内的资源可以把包当做普通的文件夹,以'/'分隔每个包。如:URL url2 = ClassLoader.getSystemClassLoader().getResource("demo/names.ser");是获取demo包内的names转载 2013-12-05 11:05:16 · 643 阅读 · 1 评论 -
Tomcat的类加载器
看完了Java类装载器,我们再来看看应用服务器(Tomcat)对类加载器的使用,每个应用服务器都有一套自己的类加载器体系,从而与Java的类加载器区别开以达到自己与应用程序隔离的目的.Tomcat的类加载器体系为:Bootstrap--->System--->Common---->Catalina,SharedShared------>Webapp1,Webapp2 .....转载 2013-12-05 10:38:14 · 264 阅读 · 0 评论 -
Java类加载原理及类加载器
Java和其他语言不同的是,Java是运行于Java虚拟机(JVM)。这就意味着编译后的代码是以一种和平台无关的格式保存的,而不是某种特定的机器上运行的格式。这种格式和传统的可执行代码格式有很多重要的区别。具体来说,不同于C或者C++程序,Java程序不是一个独立的可执行文件,而是由很多分开的类文件组成,每个类文件对应一个Java类。 另外,这些类文件并不是马上加载到内存,而是当程转载 2013-12-05 10:44:09 · 630 阅读 · 0 评论 -
java获取资源文件
另,Class类还有一个getResourceAsStream方法,记得以前有个项目要读取在同一个包内的一个xml,就用的这个。002 003 004 0051.如何获得当前文件路径转载 2013-12-23 14:11:29 · 548 阅读 · 0 评论 -
java 读取properties
1.使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));Properties p = new Properties();p.load(in);2.使用java.util.ResourceBundle类的getBundl原创 2013-12-23 17:49:52 · 506 阅读 · 0 评论 -
junit TestSuite
您定义自己的TestCase,并使用TestRunner来运行测试,事实上TestRunner并不直接运行 TestCase上的单元方法,而是透过TestSuite,TestSuite可以将数个TestCase在一起,而让每个TestCase保持简单。来看看一个例子:MathToolTest.javapackage onlyfun.caterpillar.test;im转载 2014-01-23 11:45:10 · 588 阅读 · 0 评论 -
java获取编码方式
System.getProperty("file.encoding");//获取java环境默认编码 System.setProperty("file.encoding", "utf-8");//设置java环境默认编码 request.getCharacterEncoding();//JSP获取客户端请求的编码 request.setCharacterEncoding("utf-8"转载 2014-02-11 11:25:36 · 1159 阅读 · 0 评论 -
轻量级synchronized
后台admin给用户加分,点的快了,会加两次分,在前台没限制的情况下,后台又不想用synchronized可以有两种解决办法自己模块的util类加个 volatile的static变量Java代码 public static volatile isRunning = false;//静态变量,默认加分操作未进行 加分逻辑代码:Java代码 if(util转载 2014-01-29 09:41:23 · 620 阅读 · 0 评论 -
java中关键字volatile的作用
java中关键字volatile的作用Java多线程threadJVMIBM 用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的转载 2014-04-14 10:57:30 · 669 阅读 · 0 评论 -
Spring单例与多线程的理解
Spring中由容器托管的类如果没有特殊声明(scope = “prototype”),则默认为单列模式,当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单列状态的修改(体现为该单列的成员属性),则必须考虑线程同步问题;否则由于在业务逻辑中执行所需的局部变量会分配在栈空间中,所以不需要同步。转载 2014-01-02 17:27:45 · 4918 阅读 · 2 评论 -
LinkedBlockingQueue
ava.util.concurrent包下的新类。LinkedBlockingQueue就是其中之一,顾名思义这是一个阻塞的线程安全的队列,底层应该采用链表实现。 看其API的时候发现,添加元素的方法竟然有三个:add,put,offer。且这三个元素都是向队列尾部添加元素的意思。于是我产生了兴趣,要仔细探究一下他们之间的差别。1.首先看一下add方法:转载 2014-09-23 17:37:19 · 11834 阅读 · 0 评论 -
redis与memcached
这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来。关于Redis与Memcached的比较更是比比皆是。然而,Redis真的在功能、性能以及内存使用效率上都超越了Memcached吗?没有必要过于关注性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据转载 2015-03-20 10:44:48 · 662 阅读 · 0 评论 -
Google Guava Collections
Google Guava Collections 使用介绍Google Guava Collections(以下都简称为 Guava Collections)是 Java Collections Framework 的增强和扩展。每个 Java 开发者都会在工作中使用各种数据结构,很多情况下 Java Collections Framework 可以帮助你完成这类工作。但是在有些场合你使用转载 2013-09-27 16:16:03 · 1088 阅读 · 0 评论 -
java nio 之MappedByteBuffer,高效文件/内存映射
其实掌握MappedByteBuffer并不难,只要记住“三方三法三特性”(我自己总结的,呵呵~~不要扔鸡蛋哦。。。)这句话就可以轻松搞定!MappedByteBuffer 只是一种特殊的 ByteBuffer ,即是ByteBuffer的子类。 MappedByteBuffer 将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比转载 2013-09-30 10:34:20 · 842 阅读 · 0 评论 -
commons-beanutils包的使用
PropertyUtil:使用Java反射API编写的工具类,用于方便的进行get和set。本工具类的所有实现都是对PropertyUtilsBean的封装和代理。MethodUtils:封装以放射方式请求方法的工具方法ConstructorUtils:使用反射方法请求构造函数创建新实例的工具类,可以简化程序中使用反射方式创建对象的代码。BeanUtils:提供对标准Jav转载 2013-06-25 13:06:11 · 1246 阅读 · 0 评论 -
什么是ThreadLocal?
顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。使用场景To keep state with a thread (user-id, transaction-id, logging-id)转载 2012-09-05 16:43:25 · 324 阅读 · 0 评论 -
TimeZone 应用
protected static Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");/*** timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8* @param timeZoneOffset* @return*/public String getForm转载 2012-09-05 17:40:50 · 508 阅读 · 0 评论 -
GMT解释
GMT 就是格林威治标准时间的英文缩写(Greenwich Mean Time 格林尼治标准时间). 格林威治是伦敦泰晤士河南岸的一个地方,由于从19世纪开始,因为世界各国来往频繁,而欧洲大陆、美洲大陆和亚洲大陆都有各自的时区,所以为免混乱,各国的代表就在1884 年在美国华盛顿召开了国际大会,通过协议选出伦敦的格林威治,作为全球时间的中心点,格林威治标准时间因而诞生。所以有GMT功能的腕表就是转载 2012-09-05 14:58:51 · 739 阅读 · 0 评论 -
堆排序
在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具转载 2012-09-06 15:27:26 · 790 阅读 · 0 评论 -
多线程感悟
0.分清实例有几个线程共享1.多线程共用一实例,(实例一般为容器类或者常量类),实例内所有全局变量不安全,需要同步方法改变全局变量值。2.单线程用一实例,(实例一般为业务逻辑类),实例内所有非静态的全局变量安全,不需要同步方法改变非静态的全局变量值,静态变量不安全,需要同步方法改变静态变量值。1.领悟同步块同步的目标 同步块同步的是对象,也可以说同步对象中的内存地址,也即同步对象原创 2012-11-15 18:29:47 · 435 阅读 · 0 评论 -
基本类型与引用类型区别
基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。而引用类型值则是指那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。 在将一个值赋给变量时,解析器必须确定这个值是基本类型值,还是引用类型值。(Undefined、Null、Boolean、Number、String)这五种基本数转载 2012-11-21 11:48:14 · 506 阅读 · 0 评论 -
java中的volatile的用法
我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如转载 2012-12-13 17:37:00 · 317 阅读 · 0 评论 -
匿名内部类常用方法举例
package test;public abstract class Anon1 {public abstract void anon();}package test;public interface Anon2 {public void anon();}package test;public class Te原创 2012-12-14 16:13:40 · 374 阅读 · 0 评论 -
http status 汇总
http status 汇总常见HTTP状态码200 OK301 Moved Permanently302 Found304 Not Modified307 Temporary Redirect400 Bad Request401 Unauthorized403 Forbidden404 Not Found410 Gone500 Internal Server Error5转载 2012-12-20 10:28:04 · 323 阅读 · 0 评论 -
JVM内存JAVA_OPTS参数说明
我经常会这样来设置服务器端的JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k" -server:一定要作为第一个参数,在多个CPU时性能佳 -Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些 -Xmx:java heap最大值,使用的最大内存 上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存转载 2012-12-20 11:02:35 · 571 阅读 · 0 评论 -
取小数点后2位数字
java中取小数点后2位数字有四种方法: 一.double d = 13.24535; d = ((int)(d*100))/100.0; 二. class Test1{ public static void main(String[] args){ double d = convert(3.1转载 2013-01-29 11:27:05 · 1682 阅读 · 0 评论 -
JVM调优
最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过转载 2013-03-11 10:18:55 · 541 阅读 · 0 评论 -
java 读写
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? 解决这个问题之后,总结了几个注意点。 注意点一:Reader/Writer读写二进制文件是有问题的 :[java] view plainc转载 2013-02-28 13:43:41 · 367 阅读 · 0 评论 -
AtomicInteger
这个类真的非常实用,更重要的是 它确实非常简单:附上自己的代码,可以自己试试:AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 代码:package test;转载 2013-04-25 15:52:18 · 430 阅读 · 0 评论 -
httpclient抓取
地址中涉及了特殊字符,如‘|’‘&’等。所以不能直接用String代替URI来访问。必须采用%0xXX方式来替代特殊字符。但这种办法不直观。所以只能先把String转成URL,再能过URL生成URI的方法来解决问题。代码如下URL url = new URL(strUrl); URI uri = new URI(url.getProtocol(), url.getHost(), url.g转载 2013-05-17 13:08:33 · 576 阅读 · 0 评论 -
Java NIO和IO的区别
下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。复制代码代码如下:IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流转载 2015-03-17 11:27:04 · 442 阅读 · 0 评论