
java
cache007
这个作者很懒,什么都没留下…
展开
-
Java 8 的新特性和改进总览
接口改善现在接口里已经完全可以定义静态方法了. 举一个比较普遍的例子就是在java类库中, 对于一些接口如Foo, 都会有一个有静态方法的工具类Foos 来生成或者配合Foo对象实例来使用. 既然静态方法可以存在于接口当中, 那么大多数情况下 Foos工具类完全可以使用接口中的公共方法来代理 (或者将Foos置成package-private).除此之外更重要的就是, Java 8转载 2015-11-04 16:25:26 · 646 阅读 · 0 评论 -
java并发库之Executors常用的创建ExecutorService的几个方法说明
一、线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。 new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler);创建一个线程池需要输入几个参数: corePoolSize(线程池转载 2016-03-17 16:04:30 · 436 阅读 · 0 评论 -
Java对象分配简要流程
序本文主要简述Java对象在内存中的分配过程总体流程分配流程逃逸分析逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用。方法逃逸:例如作为调用参数传递到其他方法中。线程逃逸:有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量。栈上分配(Stack转载 2016-03-17 16:14:39 · 2792 阅读 · 0 评论 -
Java的类加载机制
序本文主要讲述Java类的加载机制,主要包括类加载器、加载过程、初始化时机。一、类加载器1、ClassLoader抽象类类加载器的任务就是根据一个类的全限定名来读取此类的二进制字节流到JVM内部,然后转换为一个与目标类对应的java.lang.Class对象实例。如果需要支持类的动态加载或需要对编译后的字节码文件进行解密操作等,就需要与类加载器打交道了。转载 2016-03-17 16:16:26 · 301 阅读 · 0 评论 -
Java对象结构及大小计算
序本文主要简述Java对象的内存布局以及其大小的计算。Java对象内存布局在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头HotSpot虚拟机的对象头包括两部分信息:第一部分markword,用于存储对象自身的运行时数据,如转载 2016-03-17 16:19:43 · 674 阅读 · 0 评论 -
Java集合类操作优化经验总结
本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍 WeakHashMap。希望通过本文介绍,可以让读者对集合的操作方式、注意事项等有一些了解。在实际的项目开发中会转载 2016-03-17 16:42:54 · 326 阅读 · 0 评论 -
40个Java多线程问题总结
前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作转载 2016-03-17 17:10:39 · 264 阅读 · 0 评论 -
java rmi
什么是RMI,请参考看RMI远程调用部分。额,很多人都说RMI没什么用,直接使用WebService就可以了。但是我觉得使用一些简单的,只用于自己开发的系列JAVA软件之间的远程调用的时候RMI还是具有自己的优势的,所以本人就做了一些研究,在网上参考了很多例子,想办法做到安全的RMI远程调用。一、简单的例子,通过这个例子,首先可以使搭建一个简单的RMI的调用环境。转载 2016-03-17 17:22:04 · 567 阅读 · 0 评论 -
Java经典设计模式之七大结构型模式
一、适配器模式适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。有点抽象,我们来看看详细的内容。1.1、类的适配器模式类的适配器模式核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口是Targetable,通过Adapt转载 2016-03-17 17:44:08 · 301 阅读 · 0 评论 -
Java GC 及HBase RegionServer GC调优
1背景1.1问题描述HBase RegionServer由于GC等原因Stop World超过40s,RS在ZK上创建的临时节点被删除,造成Master认为RS已经下线,重新分配该RS上的Region。RS恢复后,由于种种原因(WAL被其它RSSplit并删除,Master通知RS下线等)只能主动退出。经过长时间观察和参考网络资料,确定和HBase RS GC有关,需要调整GC参数以降原创 2016-03-25 15:54:56 · 9807 阅读 · 0 评论 -
java jar 打包命令
打包根目录下面的文件: Java代码 jar cvf filename.jar a.class b.class Java代码 "color: #0000ff;">jar cvf filename.jar a.class b.class ---------------------------------------转载 2016-06-29 09:22:48 · 2100 阅读 · 0 评论 -
Java-解压和打包Jar
解压和打包Jar本文地址:http:="" blog.youkuaiyun.com="" caroline_wendy简介1. 压缩包:jar cvf filename.jar a.class b.class: 压缩指定文件;jar cvf weibosdkcore.jar *: 全部压缩;2. 解压包:jar xvf test.jar详解jar命令有生成、查看、更新、解开jar包转载 2016-06-29 09:23:26 · 2463 阅读 · 1 评论 -
Java获取来访者IP
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 经过代理以转载 2016-03-17 15:55:43 · 266 阅读 · 0 评论 -
JVM性能调优入门
文/MountainKing(简书作者)原文链接:http://www.jianshu.com/p/c6a04c88900a?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io#著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。前言入门JVM垃圾回收机制后,接下来可以学习性能调优了。主要有两部分内容转载 2016-03-17 15:48:42 · 535 阅读 · 0 评论 -
Java集合---HashMap源码剖析
一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制 一、Has转载 2015-09-22 17:43:54 · 376 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2015-09-22 17:50:24 · 443 阅读 · 0 评论 -
CopyOnWriteArrayList与Collections.synchronizedMap性能比较
机制CopyOnWriteArrayList:专为多线程并发设计的容器,“写入时复制”策略。Collections.synchronizedMap:同步容器,独占策略。 代码: [java] view plaincopypackage test; import java.util.ArrayList; import java.util.Co转载 2015-09-22 19:25:29 · 472 阅读 · 0 评论 -
linux如何安装jdk
一、安装创建安装目录,在/usr/java下建立安装路径,并将文件考到该路径下: # mkdir /usr/java1、jdk-6u11-linux-i586.bin 这个是自解压的文件,在linux上安装如下: # chmod 755 jdk-6u11-linux-i586.bin # ./jdk-6u11-linux-i586.bin (注意转载 2015-11-12 14:38:53 · 303 阅读 · 0 评论 -
JVM 垃圾回收算法
1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实现简单,效率高;但是不能解决循环引用问问题(A对象引用B对象,B对象又引用A对象,但是A,B对象已不被任何其他对象引用),同时每次计数器的增加和减少都带来了很多额外的开销,所以在JDK1转载 2015-10-14 15:25:52 · 334 阅读 · 0 评论 -
Java GC基本算法
1、引用计数(reference counting) 原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。 缺点:无法处理循环引用的问题。如:对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是引用计数算法却无法回收他们。 2、复制(copy转载 2015-10-14 15:10:43 · 444 阅读 · 0 评论 -
Java GC 算法
当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。除了释放没用的对象,垃圾收集也可以清除内存记录碎片。1、 引用计数法(Reference Counting Collector) 引用计数法是唯一没有使用根集的垃圾回收的法,该算法使用引用计数器来区分存活对象和不再使用的对象。一般来说,堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个转载 2015-10-14 15:01:28 · 367 阅读 · 0 评论 -
深入理解JVM--JVM垃圾回收机制
Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都在重复的allocated,然后不停的~析构。于是,有人就提出,能不能写一段程序在实现这块功能,每次创建,释放控件的时候复用这段代码,而无需重复的书写呢?1960年 基于MIT的Lisp首先提转载 2015-10-14 15:24:24 · 586 阅读 · 0 评论 -
JVM内存模型及垃圾回收算法
JVM内存模型总体架构图程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空。虚拟机栈线程私有的,与线程在同一时间创建。管理J转载 2015-10-14 15:18:21 · 361 阅读 · 0 评论 -
责任链模式 之 请假流程
/** * * @author dxwang * */public abstract class AbstractHandler {protected AbstractHandler handler;abstract void apply(double day);public AbstractHandler getHandler() {return handl原创 2016-01-20 16:48:04 · 661 阅读 · 0 评论 -
Netty线程模型
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数越转载 2016-02-16 16:38:08 · 357 阅读 · 0 评论 -
深入ASM源码之ClassReader、ClassVisitor、ClassWriter
概述ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。在读写的过程中可以加入自定义的逻辑以增强或修改原来已编译好的字节码,比如CGLIB用它来实现动态代理。ASM被设计用于在运行时对Java类进行生成和转换,当然也包括离线处理。ASM短小精悍、且速度很快,从而避免在运行时动态生成字节码或转换时对程序速度的影响,又因为它体积小巧,可以在很多内存受限的环境转载 2016-07-08 09:22:03 · 2055 阅读 · 0 评论