Java
文章平均质量分 89
Double_Name
为了获取积分来填写这个的我也是满鄙视自己的。
展开
-
JVM字节指令详解
在网上看到的字节指令集,忍不住转了过来大家一起学习一下。http://blog.csdn.net/lm2302293/article/details/6713147 JVM指令集(指令码、助记符、功能描述)指令码助记符功能描述0x00nop无操作转载 2016-04-25 15:12:35 · 557 阅读 · 0 评论 -
JDK8中matespace的引入
在Java虚拟机(JVM)内部,class文件中包括类的版本、字段、方法、接口等描述信息,还有运行时常量池,用于存放编译器生成的各种字面量和符号引用。在过去(自定义类加载器还不是很常见的时候),类大多是”static”的,很少被卸载或收集,因此被称为“永久的(Permanent)”。同时,由于类class是JVM实现的一部分,并不是由应用创建的,所以又被认为是“非堆(non-heap)”内转载 2016-04-19 20:20:27 · 7843 阅读 · 0 评论 -
Java中的IO介绍
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞? 散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如有不足之处,还望告知。转载 2016-04-19 20:22:05 · 312 阅读 · 0 评论 -
序列化与反序列化
#摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且转载 2016-04-19 20:24:00 · 471 阅读 · 0 评论 -
BufferedReader详解
以下内容转载自:http://www.cnblogs.com/skywang12345/p/io_23.htmlBufferedReader 是缓冲字符输入流。它继承于Reader。BufferedReader 的作用是为其他字符输入流添加一些缓冲功能。BufferedReader 函数列表BufferedReader(Reader in)Buff转载 2016-04-19 20:24:50 · 12740 阅读 · 0 评论 -
for,break和continue
我们知道For循环在Java中经常被使用,下面我们来看一下这个for的一些细节运行。例子一:?123for(int i=10;i>0;i--){ System.out.print(" "+i);}输出如下: 10 9 8 7 6 5 4 3 2 1原创 2016-04-19 20:25:33 · 751 阅读 · 0 评论 -
TCP握手详解
对于TCP链接我们首先要有一个基本认识是:TCP链接的开启和关闭都是做好了最坏的打算,以保证在网络情况最不稳定的情况下仍然可以成功的发送和结束TCP链接,这就好比我们做任何事都要考虑到最坏的情况一样,这充分说明了设计者的睿智,不是吗?在这个基本认知的基础上我们先来看看开启链接的3次握手是什么情况:现在假设有这么一个情景: A(北京)要和B(上海)进行信件来往,原创 2016-04-19 20:26:07 · 2530 阅读 · 3 评论 -
Java多线程学习笔记
开始于2015年4月10日:※Java的线程机制是抢占式的,这表示调度机制会周期性的中断线程,将上下文切换到另一个任务,从而为每个线程都提供时间片,使得每个线程都会分配到数量合理的时间去驱动他的任务。※如果当多个线程共同访问一个可变的状态变量的时候没事使用合适的同步,那么线程就会出现错误。有三种方式可以修复这个错误:不在线程之间共享该状态变量。将状态变量原创 2016-04-19 20:27:50 · 1417 阅读 · 1 评论 -
ThreadLocal详解
在网上看到了这篇文章,实在是写的太好了,忍不住转载了过来。原创地址:http://my.oschina.net/xianggao/blog/392440?fromerr=CLZtT4xCThreadLocal概述学习JDK中的类,首先看下JDK API对此类的描述,描述如下:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问转载 2016-04-23 14:44:32 · 878 阅读 · 0 评论 -
关于Java中线程池的解读
之前的面试中多次被问到线程池的相关内容,所以在之后的时间内我仔细的学习了一下线程池的相关内容。1.使用线程池的意义复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求,而单次请求响应时间通常比较短,此时Java基于操作系统的本地调用方式大量的创建和销毁线程本身会成为系统的一个性能瓶颈和资源浪费。若使用线程池技术可以实现工作线程的复用,即一个工作线程创建和销毁的生原创 2016-04-23 16:11:11 · 2603 阅读 · 0 评论 -
LinkedHashMap解读
HashMap: put -> addEntry(新建一个Entry) get getEntry LinkedHashMap: put -> addEntry(重写) 新建一个Entry,然后将其加入header前 e.a转载 2016-04-24 13:25:36 · 379 阅读 · 0 评论 -
实习记录(二)
这个距离上次更新日志大概有十天左右吧,适逢端午节也比较悠哉,于是还是再续一篇吧。这两周没做什么重要的内容,依然是之前的退货系统,但是我只是写一些简单的接口,所以内容还是比较有限的。其中我印象比较深刻的就是关于分页的操作吧,之前学长已经写过现成的例子了,当时我们有直接参考,而是照着自己的意思去写分页吧。。然而在这周被指出来了,我当初愚蠢地一次性取出来了所有的数据,然后想着以后放入缓存不久可以了,原创 2016-06-09 20:24:05 · 560 阅读 · 0 评论 -
实习记录(三)
距离上一次更新日志已经差不多有两周了,因为马上要回学校考试了,所以再更一波。准确来说这两周并没有什么任务可做,所以都属于自己的学习阶段,那么问题来了,两周都学了点什么呢?闲来蛋疼倒是看了两周的Dubbo,大致的实现都看了点吧,服务的发布调用过程等等。但是在这里让我讲讲具体如何实现我已记不大清楚了,只能说说读过部分源码后自己的感受。1.缓存在Dubbo的设计中有很多地方都出现了缓存,原创 2016-06-23 13:58:33 · 1164 阅读 · 0 评论 -
String常量池
引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不转载 2016-04-19 20:19:37 · 740 阅读 · 0 评论 -
深入理解synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令转载 2016-04-19 20:18:50 · 1322 阅读 · 0 评论 -
深入理解Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实转载 2016-04-19 20:17:56 · 396 阅读 · 0 评论 -
Java中的null
对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java。我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针、操作符重载转载 2016-04-19 15:38:51 · 828 阅读 · 0 评论 -
Java中static关键字的作用
我们经常在Java中使用static关键字,那么这么关键字究竟有哪些用途呢?我们一一道来。1.用static修饰变量与方法?1234567public class Main{ private static Object; public static v原创 2016-04-19 17:22:30 · 1263 阅读 · 0 评论 -
JFinal实现原理
一切都从web.xml开始说起:当服务器初始化的时候会初始化web.xml里面的相关配置信息。下面我们来看一个重要的过滤器配置:JFinalFilter。下面是相关的配置信息filter> filter-name>jfinalfilter-name> filter-class>com.jfinal.core.JFinalFilterfil原创 2016-04-19 17:23:42 · 5279 阅读 · 0 评论 -
Java中死锁的检测
死锁这个概念我相信大家都不陌生,现在的问题是在发生了死锁的时候我们怎么去检测死锁呢?下面给出两种常用的方式来检测死锁。我先给出一段运行在本地的死锁代码:?123456789101112131415161718原创 2016-04-19 17:24:53 · 1170 阅读 · 0 评论 -
Java中的CopyOnWrite容器
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。转载 2016-04-19 17:25:49 · 587 阅读 · 0 评论 -
volatile底层实现
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们转载 2016-04-19 17:26:55 · 999 阅读 · 0 评论 -
foreach的实现原理
java.util.List实现了java.lang.Iterable接口.jdk api文档中是这样描述Iterable接口的:实现这个接口允许对象成为 "foreach" 语句的目标。不过咋一看Iterable接口并没啥特别之处,只是定义了一个迭代器而已。[java] view plain copypublic interface Iterable {转载 2016-04-19 17:28:03 · 744 阅读 · 0 评论 -
G1垃圾回收器
我们先回顾一下主流Java的垃圾回收器(HotSpot JVM)。本文是针对堆的垃圾回收展开讨论的。堆被分解为较小的三个部分。具体分为:新生代、老年代、持久代。绝大部分新生成的对象都放在Eden区,当Eden区将满,JVM会因申请不到内存,而触发Young GC ,进行Eden区+有对象的Survivor区(设为S0区)垃圾回收,把存活的对象用复制算法拷贝到一个空的转载 2016-04-19 17:34:30 · 364 阅读 · 0 评论 -
CMS垃圾回收器
1.总体介绍:CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。2.CMS过程:初始标记(STW ini转载 2016-04-19 17:35:20 · 336 阅读 · 0 评论 -
关于GC的类型
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。文章要求读者熟悉 JVM 内置的通用垃圾回收原则。堆内存划分为 Eden、Survivor 和 Tenured/Old 空间转载 2016-04-19 17:37:19 · 604 阅读 · 0 评论 -
java多线程问题(上)
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应原创 2016-04-19 20:15:56 · 1208 阅读 · 0 评论 -
java多线程问题(下)
21、FutureTask是什么这个其实前面有提到过,FutureTask表示一个异步运算的任务。FutureTask里面可以传入一个Callable的具体实现类,可以对这个异步运算的任务的结果进行等待获取、判断是否已经完成、取消任务等操作。当然,由于FutureTask也是Runnable接口的实现类,所以FutureTask也可以放入线程池中。我们知道在Java的新版中中引入了AIO模原创 2016-04-19 20:16:53 · 1133 阅读 · 0 评论 -
实习记录(四)
Full GC原创 2016-07-24 14:49:59 · 1055 阅读 · 0 评论