java
溺水的鱼
这个作者很懒,什么都没留下…
展开
-
Java多线程之wait(),notify(),notifyAll()
在多线程的情况下,由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 wait与notify是java同步机制中重要的组成部分。结合与synchronized关键字使用,可以建立很多优秀的同步模型。 synchronized(this){ }等价于publi转载 2011-10-11 18:08:53 · 55616 阅读 · 24 评论 -
java checkstyle检查问题
checkstyle对检查代码规范问题的总结,虽然还不够只能,但已经比较强大。1.Cyclomatic Complexity is X (max allowed is X). 问题说明:圈复杂度过高。所反映的是“判定条件”的数量。圈复杂度大说明程序代码可能质量低且难于测试和维护。 修改建议:降低判定条件的数量。对方法进行拆分。2.Nested if-else depth is转载 2013-11-06 11:06:39 · 1974 阅读 · 0 评论 -
java.util.ServiceLoader使用
今天在看Hadoop源代的时候发现,在FileSystem中用到了java.util.ServiceLoader这个类来从配置文件中加载子类或者接口的实现类。以前从来没有使用过这个类,进去大概看了一下具体的实现。主要是从META-INF/services这个目录下的配置文件加载给定接口或者基类的实现,ServiceLoader会根据给定的类的full name来在META-INF/serv转载 2013-12-20 11:23:19 · 1160 阅读 · 0 评论 -
ServiceLoader
可扩展 应用程序是指无需修改原有代码基础就可轻易扩展的应用程序。可以通过新插件或模块来增强其功能。开发人员,软件供应商,甚至客户只要在应用程序的类路径或特定于应用程序的扩展目录中添加一个新的 Java Archive(JAR) 文件,即可添加新的功能或应用程序编程接口(API)。本文将介绍使用可扩展服务创建应用程序的两种方法,任何人都可以在无需修改原始应用程序的情况下提供服务实现。通过设计一个转载 2013-12-20 11:35:23 · 2048 阅读 · 1 评论 -
Java栈和局部变量操作(一)
Java栈和局部变量操作Java虚拟机是基于栈的机器,几乎所有Java虚拟机的指令都与操作数栈相关。栈操作包括把常量压入操作数栈、执行通用的栈操作、在操作数栈和局部变量之间往返传输值。1常量入栈操作:操作码在执行常量入栈操作之前,使用三种方式指明常量的值:常量值隐含包含在操作码内部、常量值在字节码中如同操作数一样跟随在操作码之后,或者从常量池中取出常量。1.1常量值隐含包含在操作码转载 2014-01-22 09:56:46 · 2045 阅读 · 0 评论 -
Java栈和局部变量操作(二)
2通用栈操作操作码操作数说明nop(无)不做任何操作pop(无)从操作数栈弹出栈顶部的一个字pop2(无)从操作数栈弹出最顶端的两个字swap(无)交换栈顶部的两个字转载 2014-01-22 09:55:43 · 1061 阅读 · 0 评论 -
Java二进制指令代码解析
转自:http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html小注:去年在看《深入解析JVM》书的时候做的一些记录,同时参考了《Java虚拟机规范》。只是对指令的一些列举,加入了一些自己的理解。可以用来查询。Java二进制指令代码解析Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由C转载 2014-01-22 10:06:56 · 1411 阅读 · 0 评论 -
Maven settings.xml 配置
xml version="1.0" encoding="UTF-8"?> settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/转载 2014-01-27 20:38:50 · 1273 阅读 · 1 评论 -
java指令集
指令码助记符说明0x00nop什么都不做0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶转载 2014-01-20 16:53:51 · 1956 阅读 · 0 评论 -
HttpClient 4.3教程(转载)
转自:http://www.yeetrack.com/?p=779前言Http协议应该是互联网中最重要的协议。持续增长的web服务、可联网的家用电器等都在继承并拓展着Http协议,向着浏览器之外的方向发展。虽然jdk中的java.net包中提供了一些基本的方法,通过http协议来访问网络资源,但是大多数场景下,它都不够灵活和强大。HttpClient致力于填补这个空白,它可转载 2014-12-16 09:05:01 · 1907 阅读 · 0 评论 -
big_endian和little_endian的说明(转载)
big_endian 、little_endian 用于自动改变二进制位存放顺序 Big Endian and Little Endian 谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什转载 2013-09-30 10:51:55 · 776 阅读 · 0 评论 -
@SuppressWarnings的使用、作用、用法
在java编译过程中会出现很多警告,有很多是安全的,但是每次编译有很多警告影响我们对error的过滤和修改,我们可以在代码中加上@SuppressWarnings(“XXXX”) 来解决例如:@SuppressWarnings("deprecation")表示不显示使用了不赞成使用的类或方法时的警告具体的XXXX的意义可以参考博文http://www.thebuzzmedi转载 2013-08-06 16:18:57 · 2899 阅读 · 0 评论 -
使用缓存的9大误区(上)
如果说要对一个站点或者应用程序经常优化,可以说缓存的使用是最快也是效果最明显的方式。一般而言,我们会把一些常用的,或者需要花费大量的资源或时间而产生的数据缓存起来,使得后续的使用更加快速。如果真要细说缓存的好处,还真是不少,但是在实际的应用中,很多时候使用缓存的时候,总是那么的不尽人意。换句话说,假设本来采用缓存,可以使得性能提升为100(这里的数字只是一个计量符号而已,只是为了给大家一个“量转载 2012-06-05 10:47:22 · 909 阅读 · 0 评论 -
使用缓存的9大误区(下)
本篇文章在上篇的基础上继续讨论了使用缓存的几个误区,包括:缓存大量的数据集合,而读取其中一部分;缓存大量具有图结构的对象导致内存浪费;缓存应用程序的配置信息;使用很多不同的键指向相同的缓存项;没有及时的更新或者删除再缓存中已经过期或者失效的数据。缓存大量的数据集合,而读取其中一部分在很多时候,我们往往会缓存一个对象的集合,但是,我们在读取的时候,只是每次读取其中一部分。 我们举个例子来说明转载 2012-06-05 10:48:40 · 1165 阅读 · 0 评论 -
Java SE1.6中的Synchronized
转自:http://www.infoq.com/cn/articles/java-se-16-synchronized1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而转载 2012-06-05 10:44:11 · 1030 阅读 · 1 评论 -
jdk1.5中的线程池使用简介
一、简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,BlockingQueue workQueue,RejectedExec转载 2012-05-25 16:37:46 · 778 阅读 · 0 评论 -
java.util.concurrent多线程框架 (转)
JDK5中的一个亮点就是将Doug Lea的并发库引入到Java标准库中。DougLea确实是一个牛人,能教书,能出书,能编码,不过这在国外还是比较普遍的,而国内的教授们就相差太远了。 一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的Tomcat、Resin和Jetty等,现在有了JDK5,我们就没有必要重复造车轮了,直接使用就转载 2012-05-25 12:52:12 · 1807 阅读 · 0 评论 -
JavaCore/HeapDump文件及其分析方法
产生时间Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。有时致命问题发生后,Java应用不会死掉,还能继续运行;但有时致命问题发生,Java进程会死掉;为了能够保留Java应用发生致命错误前的运行状态,JVM在死掉前产生两个文件,分别为JavaCore及HeapDump文件。有何区别 Jav转载 2012-05-25 15:17:40 · 1165 阅读 · 0 评论 -
利用 Java dump 进行 JVM 故障诊断
引言对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的运行状态并将其存储在转储(dump)文件中,从而为我们分析和诊断问题提供了重要的依据。常见的转储文件包括 Java Dump, Heap dump 和 System dump。这里转载 2012-05-25 15:28:19 · 1427 阅读 · 0 评论 -
JDK里的设计模式
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()javax.转载 2012-08-28 08:58:14 · 1087 阅读 · 0 评论 -
正则表达式和Java编程语言1zz
正则表达式(Regular Expression)简介:正则表达式具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。应用程序常常需要有文本处理功能,比如单词查找、电子邮件确认或XML文档集成。这通常会涉及到模式匹配。Perl、sed或awk等语言通过使用正则表达式来改善模式匹配,正则表达式是一串字符,它所定义的模式可用来查找匹配的文转载 2009-05-26 09:51:00 · 1141 阅读 · 0 评论