
Java
萧乡月夜
这个作者很懒,什么都没留下…
展开
-
Java 线程池的原理与实现
这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会想到数据库连接池,但是线程池又如何呢?建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三转载 2014-08-05 12:27:36 · 452 阅读 · 0 评论 -
StringTokenizer类的使用
StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(String str, String delim, boolean转载 2014-11-17 21:03:39 · 363 阅读 · 0 评论 -
JMX教程整合
1、 JMX的Hello World一、JMX简介 什么是JMX?在一篇网文中是这样说的:"JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理",这句话我现在看着还是不知所云,云里雾里。 我们还是从JMX能给我们提供什么好处入手来理转载 2014-11-17 22:17:16 · 2062 阅读 · 0 评论 -
System.getProperty() 常用值
偶尔用到 System.getProperty(),找起来也不方便。这里做下记录备忘: 编写的测试类:[java] view plaincopyprint?public class TestSystemproperty { public static void main(String[] args)转载 2014-11-17 20:21:23 · 594 阅读 · 0 评论 -
解读ClassLoader
ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用。 要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就是用来加载Class文件到JVM,以供程序使用的。我们知道,java程序可以动态加载类定义,而这个动态加载的机制就是通过ClassL转载 2014-11-17 20:13:07 · 462 阅读 · 0 评论 -
File的getPath getAbsolutePath和getCanonicalPath的不同
File的getPath ,getAbsolutePath和getCanonicalPath的不同 概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别是中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回来看概念会好些。 getPath public String getPath()转载 2014-11-17 20:33:28 · 508 阅读 · 0 评论 -
Java 安全管理器--SecurityManager
安全管理器是一个允许应用程序实现安全策略的类。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。应用程序可以允许或不允许该操作。 SecurityManager 类包含了很多名称以单词 check 开头的方法。Java 库中的各种方法在执行某些潜在的敏感操作前可以调用这些方法。对 checkXXX 方法的典转载 2014-11-17 20:14:08 · 1254 阅读 · 0 评论 -
Digester解析xml文件
刚刚学了一下Digester如何解析xml文件,所以记录下来,方便以后查看。 一般用来读取xml文件的工具包有DOM、SAX和JDOM等,但用过的人都知道,它们属于比较底层的API,写起来代码量很大,而且如果修改了xml文件的格式,代码也要做大幅度的改动。而使用Apache Jakarta的Digester,解析XML文件非常方便且不需要过多的关心底层的具体解析过程。Dig转载 2014-11-19 12:04:27 · 733 阅读 · 1 评论 -
Something about HTTP Protocol
1. Replacing HTTP/1.0 is the current version of HTTP/1.1, which is defined by RFC 2616 and downloadable from http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf2.原创 2014-11-19 23:06:32 · 477 阅读 · 0 评论 -
Something about Java
1. java.lang.String.endsWith() 方法返回的测试该字符串是否以指定后缀sffix结束2. java.io.File.list() 返回的文件和目录在此抽象路径名指定的目录中的数组。如果抽象路径名不表示一个目录,该方法返回null。原创 2014-11-17 21:23:51 · 534 阅读 · 0 评论 -
Java常见陷阱
看了一段北风网的视频,总结几个经典的java陷阱给大家。答案隐藏了,Ctrl+A显示。建议先思考一下结果,然后运行代码试验。也许你会恍然大悟。1、找奇数:[java] view plaincopypublic static boolean isOdd(int i){ return i % 2 == 1转载 2014-11-27 00:05:37 · 933 阅读 · 2 评论 -
Java Web项目加载properties资源文件
看好多都写的使用下面获取properties文件:InputStream in = Object.class.getResourceAsStream("/name.properties");但是在Java Web中返回的是null可以使用下面代码获取到properties文件:Properties prop = new Properties();InputStream原创 2014-11-27 12:52:37 · 1138 阅读 · 0 评论 -
fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器转载 2014-11-27 00:19:11 · 489 阅读 · 0 评论 -
Java多线程之wait(),notify(),notifyAll()
在多线程的情况下,由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 wait与notify是java同步机制中重要的组成部分。结合与synchronized关键字使用,可以建立很多优秀的同步模型。 synchronized(this){ }等价于pub转载 2014-11-22 15:24:20 · 424 阅读 · 0 评论 -
Java 中的语法糖 (Syntactic Sugar)
语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是,下面做简单的介绍和分析。泛型转载 2014-11-26 23:39:01 · 638 阅读 · 0 评论 -
Java Decimal详解,附带大量实例
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。 DecimalF转载 2014-11-26 23:57:25 · 5178 阅读 · 0 评论 -
StringTokenizer类的使用
StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(String str, String delim, boolean转载 2014-12-17 12:37:42 · 534 阅读 · 0 评论 -
Java内存分析
我们常说的Java内存主要分为四大块(寄存器不在考虑之内,我们无法用代码来操控它):stack(栈)、heap(堆)、data segment(数据区)、code segment(代码区)。它们的主要用途如下图所示:而在上面四个当中,我们经常谈论的是右边那两个家伙——stack和heap。今天我们就来聊聊Java代码在运行的过程中,在stac转载 2014-12-02 01:33:30 · 422 阅读 · 0 评论 -
JVM监控工具
Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:jps 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。常用参数:-l: 输出完成的包名称;-m: 输出程序的命令行输入参数;-v: 输出完整的JVM参数。jstack 用途:1)查看java程序转载 2015-01-09 00:25:46 · 873 阅读 · 0 评论 -
Java项目性能监控和调优工具-Javamelody
JavaMelody能够在运行环境监测Java或Java EE应用程序服务器。并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。 监控效果图见本文结尾部分.转载 2015-01-09 01:58:38 · 2090 阅读 · 0 评论 -
Tomcat 7配置文件优化:前后的性能对比
Tomcat 7在我们日常开发、测试、生产环境都会使用到,但对于大部分开发人员来说,对其性能还是没有多大了解。本文就对它做一次性能测试,对比优化前后的性能区别。一、运行环境CPU: Intel(R) Pentium(R) P6200@2.13GHz ;内存:4G,装的是32位win7,只认出3G,没有花时间去整ramdisk之类的东西;操作系统:win7 32位;转载 2015-01-09 14:01:05 · 853 阅读 · 0 评论 -
Geohash算法
1.算法背景 Geohash的初衷是如何用尽量短的URL来标志地图上的某个位置,而地图上的位置一般是用经纬度来表示,问题就转化为如何把经纬度转化为一个尽量短的URL。 Geohash的算法描述请参考:http://en.wikipedia.org/wiki/Geohash ,本文的主要目的是更加细致地解释该算法的原理及实用场景。2.算法 算法的主要转载 2015-01-12 13:36:39 · 679 阅读 · 0 评论 -
接口服务错误管理(将错误堆栈返回给请求)的实现
在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求。闲话不多说,分享下我的一个错误信息管理类ZSGErrorManage:错误code:public static enum ERRORCODE{ ERROR_OK, ERROR_OTHER, ERROR_PARAM_ILLEGALITY, ERROR_UNKNOWN; }获取原创 2014-12-24 10:35:52 · 1468 阅读 · 0 评论 -
Linux找不到jni.h和找不到jni_md.h原因及解决方案
1. 背景很多朋友在日常工作中会使用到java的jni功能。在Linux环境下当编译c文件时可能会报出找不到jni.h、找不到jni_md.h的错误。2.简介首先,不要怀疑是jdk出现了不完整的问题,这会让你走很多弯路,最后还解决不了问题。以我的jdk1.7.0_75为例,两个头文件的位置分别为:jni.h jdk1.7.0_75/includejni_md.h原创 2015-02-02 16:01:29 · 11920 阅读 · 0 评论 -
java String.intern()
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;3. String str=”kvill”;String str转载 2015-01-17 17:31:16 · 496 阅读 · 0 评论 -
Javamelody下载地址、使用&一步解决Javamelody中文乱码(英文表示)
JavaMelody:JavaMelody 能够监测Java或Java EE应用程序服务器,并以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。Javame原创 2015-01-19 20:18:05 · 3908 阅读 · 0 评论 -
Java newFixedThreadPool线程池实例及讲解
闲话不多说,直接上代码。import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class MyThreadPool { private ExecutorService exe; private static final int POOL_SIZE = 4;原创 2015-01-07 00:24:59 · 6919 阅读 · 0 评论 -
Java工厂模式
Java工厂模式看了这么多关于工厂模式的讲解,还是觉得这篇文章讲的好理解,贴出来和大家分享分享。 一、引子 话说十年前,有一个****户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,****户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”转载 2015-03-13 13:37:10 · 384 阅读 · 0 评论 -
JAVA正则表达式高级用法(分组与捕获)
正则表达式在字符串处理中经常使用,关于正则简单的用法相信有一点程序基础的人都懂得一些,这里就不介绍简单基础了。这里主要讲解一下在JAVA中实现了的正则的高级用法-分组与捕获。 对于要重复单个字符,非常简单,直接在字符后卖弄加上限定符即可,例如 a+ 表示匹配1个或一个以上的a,a?表示匹配0个或1个a。这些限定符如下所示: X?X,一次或一次也没有转载 2015-05-13 12:06:26 · 505 阅读 · 0 评论 -
spring在web容器启动时执行初始化方法
需求:在tomcat启动时开启一个定时任务。想法:容器启动时执行方法,最容易想到的就是servlet中可以配置load-on-startup,设置一个正整数也就可以随容器一起启动。问题:上面的方法很好,但是由于定时任务需要去操作数据库,而项目采用了spring的依赖注入来管理对象,而servlet并不受Spring的管理。若此时在servlet中注入Spring管理的对象,则会报错:jav转载 2015-06-01 18:59:13 · 611 阅读 · 0 评论 -
Java SE 7新特性:同时捕获多个异常类型
在Java SE 7中,你可以使用单个catch语句块处理一种或多种类型的异常,并以改进的异常类型检查方式来重新抛出异常。我们先来看一段代码:catch (IOException ex) { logger.log(ex); throw ex;catch (SQLException ex) { logger.log(ex); throw ex;转载 2015-06-04 01:11:29 · 4341 阅读 · 0 评论 -
java中collection、map、set、list简介
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。转载 2015-05-19 15:37:09 · 383 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难转载 2015-07-02 13:10:36 · 299 阅读 · 0 评论 -
ARRAYLIST VECTOR LINKEDLIST 区别与用法
最近用到了,所以依然是转载ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向转载 2015-07-02 11:54:35 · 339 阅读 · 0 评论 -
【Java线程】volatile的适用场景
把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状态时相互冲突。可见性则更为微妙,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的。 —— 如果转载 2015-07-02 16:01:06 · 441 阅读 · 0 评论 -
Java多线程之Lock的使用
[java] view plaincopyprint?import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.转载 2015-07-11 12:44:40 · 349 阅读 · 0 评论 -
源码剖析之sun.misc.Unsafe
转载于:http://zeige.iteye.com/blog/1182571首先介绍一下什么是Compare And Swap(CAS)?简单的说就是比较并交换。CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS转载 2015-07-11 13:18:12 · 400 阅读 · 0 评论 -
java io
Java IO 本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧! 一、 历史背景 “对语言设计人员来说,创建好的输入/输出系统是一项特别困转载 2015-07-13 19:45:00 · 353 阅读 · 0 评论 -
Java面试题全集(上)
2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的优快云博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补转载 2015-07-14 12:26:48 · 2116 阅读 · 0 评论 -
java:IO流学习小结
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为InPutStream和OutPutStream)和字符流(抽象基类为Reader和Writer)。根据转载 2015-07-13 22:43:53 · 311 阅读 · 0 评论