Java
文章平均质量分 59
阿利518
专注于互联网技术学习和积累(31702935)
展开
-
JAVA NIO之Direct Buffer 与 Heap Buffer的区别?
Direct Buffer vs. Heap Buffer 1、 劣势:创建和释放Direct Buffer的代价比Heap Buffer得要高; 2、 区别:Direct Buffer不是分配在堆上的,它不被GC直接管理(但Direct Buffer的JAVA对象是归GC管理的,只要GC回收了它的JAVA对象,操作系统才会释放Direct Buffer所申请的空间),它似乎给转载 2015-03-20 13:42:25 · 762 阅读 · 0 评论 -
比较全的Netty5类图整理
抽时间整理了一下Netty5的相关类图,便于以后开发参考,主要包括Bootstrap, Channel, Eventloop, Handler, Task, Future, ByteBuf等几大内容。1. Bootstrap2. Eventloop3. Channel4. Channel Handler5. Task原创 2015-04-16 14:52:29 · 2223 阅读 · 1 评论 -
Java中三个引用类SoftReference 、 WeakReference 和 PhantomReference的区别
本文将谈一下对SoftReference(软引用)、WeakReference(弱引用)和PhantomRefrence(虚引用)的理解,这三个类是对heap中java对象的应用,通过这个三个类可以和gc做简单的交互。强引用:除了上面提到的三个引用之外,还有一个引用,也就是最长用到的那就是强引用.强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它转载 2015-04-16 11:04:42 · 515 阅读 · 0 评论 -
Java多线程编程模式实战指南一:Active Object模式
Active Object模式是一种异步编程模式。它通过对方法的调用与方法的执行进行解耦来提高并发性。若以任务的概念来说,Active Object模式的核心则是它允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离。这有点类似于System.gc()这个方法:客户端代码调用完gc()后,一个进行垃圾回收的任务被提交,但此时JVM并不一定进行了垃圾回收,而可能是在g转载 2015-04-09 09:39:56 · 487 阅读 · 0 评论 -
Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。 第一:介绍Dubbo背景 大规模服务化之前,应用可能只是通过RMI或Hessian等工具,转载 2015-04-17 17:15:37 · 331 阅读 · 0 评论 -
Java与C++之JNI编程小结
1. 什么是 JNI JNI是Java Native Interface的缩写。从Java 1.1开始,JNI标准成为java平台的一部分,它允许Java和其他语言进行交互。JNI一开始为C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是转载 2015-06-25 09:33:59 · 404 阅读 · 0 评论 -
Java虚拟机详解02----JVM内存结构
文章来源:http://www.cnblogs.com/smyhvae/p/4748392.html主要内容如下:JVM启动流程JVM基本结构内存模型编译和解释运行的概念 一、JVM启动流程:JVM启动时,是由java命令/javaw命令来启动的。二、JVM基本结构:JVM基本结构图:《深入理解Java转载 2016-12-22 14:09:55 · 424 阅读 · 0 评论 -
Java虚拟机详解03----常用JVM配置参数
文章来源:http://www.cnblogs.com/smyhvae/p/4736162.html 本文主要内容:Trace跟踪参数堆的分配参数栈的分配参数 零、在IDE的后台打印GC日志:既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。既然如此,那么在IDE的控制台打印G转载 2016-12-22 14:10:56 · 454 阅读 · 0 评论 -
Java虚拟机详解04----GC算法和种类【重要】
文章来源:http://www.cnblogs.com/smyhvae/p/4744233.html 本文主要内容:GC的概念GC算法 引用计数法(无法解决循环引用的问题,不被java采纳) 根搜索算法 现代虚拟机中的垃圾搜集算法: 标记-清除 复制算法(新生代) 标转载 2016-12-22 14:11:58 · 336 阅读 · 0 评论 -
Java虚拟机详解05----垃圾收集器及GC参数
文章来源:http://www.cnblogs.com/smyhvae/p/4748313.html 本文主要内容:堆的回顾串行收集器并行收集器CMS收集器 零、堆的回顾:新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其转载 2016-12-22 14:46:15 · 420 阅读 · 0 评论 -
Java:对象的强、软、弱和虚引用
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。图1⑴强引用(转载 2016-12-22 15:04:11 · 353 阅读 · 0 评论 -
Java虚拟机详解----JVM常见问题总结
文章来源:http://www.cnblogs.com/smyhvae/p/4810168.html 【正文】声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类。那篇文章和本文是面试时的重点。面试必问关键词:JVM垃圾回收、类加载机制。 先把本文的目录画一个思维导图:转载 2016-12-22 15:19:40 · 435 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主转载 2015-04-15 17:17:05 · 248 阅读 · 0 评论 -
java并发编程-Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执转载 2015-04-15 13:52:48 · 368 阅读 · 0 评论 -
sun.misc.unsafe类的使用
这个帖子是关于JAVA中鲜为人知的特性的后续更新,如果想得到下次在线讨论的更新,请通过邮件订阅,并且不要忘了在评论区留下你的意见和建议。 Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。如果你想搞破坏,可以使用Unsafe这个类。这个类是属于sun.* API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何转载 2015-04-15 15:25:56 · 379 阅读 · 0 评论 -
如何学j2ee
最近一直由于一些原因,技术上的东西没有学多少,技术一直停滞不前.不过还是学了不少技术以外的东东,毕竟技术并不能解决一切问题.今天浏览水木清华看到了一篇文章,说的是如何学j2ee的,感觉还不错.毕竟是清华的嘛,特此转到这里.让刚接触j2ee的同志们有个参考: Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE。这三块相互补充,应用范围不同。 J2SE就是Jav转载 2015-03-19 18:18:47 · 523 阅读 · 0 评论 -
为什么要使用SLF4J而不是Log4J
来自:http://www.importnew.com/7450.html每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候去在转载 2015-03-18 16:38:40 · 404 阅读 · 0 评论 -
log4j详解与实战
来自:http://www.iteye.com/topic/378077log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:http://logging.apache.org/log4j/1.2/download.html 我们先看一个最转载 2015-03-18 16:26:01 · 444 阅读 · 0 评论 -
写得比较好的设计模式相关博文汇总
设计模式汇总介绍原创 2015-04-10 16:12:57 · 463 阅读 · 0 评论 -
activemq的几种基本通信方式总结
简介 在前面一篇文章里讨论过几种应用系统集成的方式,发现实际上面向消息队列的集成方案算是一个总体比较合理的选择。这里,我们先针对具体的一个消息队列Activemq的基本通信方式进行探讨。activemq是JMS消息通信规范的一个实现。总的来说,消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。另外,通过结合这些模式的具体应用,我们在处理某些应用场景的时候也衍生转载 2015-04-22 16:35:23 · 424 阅读 · 0 评论 -
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类转载 2015-04-07 14:42:10 · 304 阅读 · 0 评论 -
EasyMock 使用方法与原理剖析
文章摘自-IBM DevelopWorks: http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock转载 2015-04-07 09:42:50 · 430 阅读 · 0 评论 -
并发编程 Promise, Future 和 Callback
在并发编程中,我们通常会用到一组非阻塞的模型:Promise,Future 和 Callback。其中的 Future 表示一个可能还没有实际完成的异步任务的结果,针对这个结果可以添加 Callback 以便在任务执行成功或失败后做出对应的操作,而 Promise 交由任务执行者,任务执行者通过 Promise 可以标记任务完成或者失败。 可以说这一套模型是很多异步非阻塞架构的基础。这一套转载 2015-04-15 13:59:37 · 1737 阅读 · 0 评论 -
Fork/Join框架介绍
1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。转载 2015-04-15 17:42:59 · 361 阅读 · 0 评论 -
JAVA CAS原理深度分析
本文摘自:http://blog.csdn.net/hsuxu/article/details/9467651转载 2015-04-15 15:21:24 · 448 阅读 · 0 评论 -
Netty内存泄露检测原理分析
引用计数netty中使用引用计数机制来管理资源,当一个实现ReferenceCounted的对象实例化时,引用计数置1.客户代码中需要保持一个该对象的引用时需要调用接口的retain方法将计数增1.对象使用完毕时调用release将计数减1.当引用计数变为0时,对象将释放所持有的底层资源或将资源返回资源池.内存泄露按上述规则使用Direct和Pooled的ByteBuf尤其转载 2015-04-16 11:50:47 · 5038 阅读 · 4 评论