
JAVA
文章平均质量分 74
爱上Java8
个人主页www.uucode.net,出版过《实战Java虚拟机——JVM故障诊断与性能优化》、《实战Java高并发程序设计》2书,喜欢Java(JVM交流学习q群:397196583),喜欢人工智能,著有《自己动手写神经网络》和《Java函数式编程入门》两本百度电子书。
展开
-
【爱上Java8】BigInteger在Java8中的改进
BigInteger是什么?BigInteger如何使用?BigInteger在Java8中做了哪些改变?不知道不行,知道了也不一定行!原创 2014-08-21 16:26:38 · 1450 阅读 · 0 评论 -
实战Java虚拟机之二“虚拟机的工作模式”
目前的Java虚拟机支持Client和Server两种运行模式。使用参数-client可以指定使用Client模式,使用参数-server可以指定使用Server模式。默认情况下,虚拟机会根据当前计算机系统环境自动选择运行模式。原创 2015-04-08 11:11:47 · 1944 阅读 · 0 评论 -
实战Java虚拟机之三“G1的新生代GC”
新生代GC的主要工作是回收eden区和survivor区。一旦eden区被占满,新生代GC就会启动。新生代GC收集前后的堆数据如图5.6所示,其中E表示eden区,S表示survivor区,O表示老年代.原创 2015-04-14 11:09:16 · 2319 阅读 · 0 评论 -
实战Java虚拟机之四:提升性能,禁用System.gc() ?
默认情况下,System.gc()会显式直接触发Full GC,同时对老年代和新生代进行回收。而一般情况下我们认为,垃圾回收应该是自动进行的,无需手工触发。如果过于频繁地触发垃圾回收对系统性能是没有好处的。原创 2015-04-21 11:00:02 · 5329 阅读 · 0 评论 -
《实战Java虚拟机》参加京东买200-100的活动,又可以买很多好书了
#京东满200—100单# 图书放血大卖了,本书也参加活动。原创 2015-06-01 14:45:39 · 1123 阅读 · 0 评论 -
Java高并发是不是你的菜??
自从JAVA5.0增加了最初由DougLea编写的高质量的、广泛使用的、并发实用程序util.concurrent并变成了JSR-166的新包之后,在Java内置所提供的类库中,就提供了越来越多的并发编程的实用工具类。学习并掌握这些技术对于专注于Java并发编程的开发人员来讲是基本的公里,随着Java版本的不断更新与改进,开发人员可以通过Java新版本所带来的新特性,无需从头重新编写并发程序工具类。原创 2015-06-15 14:27:12 · 1670 阅读 · 0 评论 -
如何提高Java并行程序性能
在Java程序中,多线程几乎已经无处不在。与单线程相比,多线程程序的设计和实现略微困难,但通过多线程,我们却可以获得多核CPU带来的性能飞跃,从这个角度说,多线程是一种值得尝试的技术。那么如何写出高效的多线程程序呢?原创 2015-11-24 15:08:21 · 1093 阅读 · 0 评论 -
【实战Java高并发程序设计 1】Java中的指针:Unsafe类
Java中的指针有你看不到的一面。原创 2015-11-25 16:25:14 · 2812 阅读 · 0 评论 -
一图搞定【实战Java高并发程序设计】
只用一张图,了解Java高并发程序设计的所有技术点原创 2015-11-26 15:22:30 · 3337 阅读 · 1 评论 -
【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference
AtomicReference和AtomicInteger非常类似,不同之处就在于AtomicInteger是对整数的封装,而AtomicReference则对应普通的对象引用。也就是它可以保证你在修改对象引用时的线程安全性。在介绍AtomicReference的同时,我希望同时提出一个有关原子操作的逻辑上的不足。原创 2015-11-26 15:07:21 · 2891 阅读 · 0 评论 -
【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference
AtomicReference无法解决上述问题的根本是因为对象在修改过程中,丢失了状态信息。原创 2015-11-30 17:05:52 · 5022 阅读 · 0 评论 -
《实战Java高并发程序设计》问答录,看这些问题解决你所有java并行难题
《实战Java高并发程序设计》尽量避免采用过于理论的描述方式,简单的白话文风格贯穿全书,配图基本上为手工绘制,降低了理解难度,并尽量做到读者在阅读过程中少盲点、无盲点。大家提的问题也很尖锐。原创 2016-01-22 17:24:15 · 852 阅读 · 0 评论 -
【转】成为Java顶尖程序员 ,看这10本书就够了
很多程序员们往往有看书的冲动,但不知道看哪些书,下面我就给各位Java程序猿们推荐一些好书,其中绝大多数都是我自己平时在看的书,也算是我对于平时读的书做一个小总结和读后感吧。转载 2016-01-08 15:28:30 · 3658 阅读 · 0 评论 -
【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray
除了提供基本数据类型外,JDK还为我们准备了数组等复合结构。当前可用的原子数组有:AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray,分别表示整数数组、long型数组和普通的对象数组。原创 2015-12-08 16:10:01 · 2640 阅读 · 2 评论 -
小米网技术架构变迁实践
“先卖10000台再说!”2011年8月9日,小米网负责人黎万强在公司内部大会上这样说道。时间回到4年多前,在小米“标配”产品发布日8月16日前几天,小米公司100多号人沉浸在即将到来的第一款产品诞生的亢奋中,但是,没有人能告诉我们:未来,我们将能走多远\做多大。彼时,小米网仅有三位开发工程师,在经过两个多月的紧张开发后,小米网将要第一次面对公众在线销售产品,接受大考。由于工程师资源极度紧张,我们甚至考虑过使用ECSHOP之类的开源系统搭建小米网,不过幸好我们很快放弃了这一想法。因为在3个月之后,我们就发现转载 2016-02-17 11:34:42 · 943 阅读 · 0 评论 -
【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现
SynchronousQueue与其说是一个队列,不如说是一个数据交换通道。那SynchronousQueue的其妙功能是如何实现的呢?原创 2016-03-04 11:09:51 · 953 阅读 · 0 评论 -
【实战Java高并发程序设计5】让普通变量也享受原子操作
有时候,由于初期考虑不周,或者后期的需求变化,一些普通变量可能也会有线程安全的需求。如果改动不大,我们可以简单地修改程序中每一个使用或者读取这个变量的地方。但显然,这样并不符合软件设计中的一条重要原则——开闭原则。原创 2016-02-18 16:48:14 · 1181 阅读 · 0 评论 -
Java8中的简易并发
我们在《实战Java高并发程序设计》一书中,专门介绍过java 8中对并发的改进。这里我通过转载一篇博客来说简单介绍下。转载 2016-03-17 10:59:21 · 1506 阅读 · 0 评论 -
实战Java虚拟机之一“堆溢出处理”
在Java程序的运行过程中,如果堆空间不足,则有可能抛出内存溢出错误(Out Of Memory),简称为OOM。那么出现内存溢出的原因是什么呢?原创 2015-04-02 11:12:28 · 1759 阅读 · 0 评论 -
【Java】实战Java虚拟机之五“开启JIT编译”
Java虚拟机有3种执行方式,分别是解释执行、混合模式和编译执行,但是哪种方式最快呢?原创 2015-04-28 14:19:22 · 1890 阅读 · 0 评论 -
【爱上Java8】Java8函数式方法的方法引用
函数式语言为什么越来越多了,如何使用?java8的函数式方法又有哪些亮点?原创 2014-08-17 12:59:44 · 887 阅读 · 0 评论 -
【爱上Java8】一步一步走进 java8 lambda表达式
Java的lambda表达式可以大大简化Java的代码,Java令人诟病的一个地方就是,代码太繁琐,同样的功能使用pythong语言实现,可能只需要1/10的代码就可以完成,但是使用Java写,却会有一段的“废话”,令人很不爽,因此,java8引入了lambda表达式,致力于解决这个问题。12原创 2014-08-17 12:57:40 · 696 阅读 · 0 评论 -
【爱上Java8】Java 8 不在需要ORM了
首先,我要对ORM做一些吐槽,以hibernate为代表的ORM简直见识开发者的噩梦呀。本人对此深恶痛绝。什么one-to-many, many-to-many ,搞死人不说,还特别麻烦,该死的延迟加载等等,用起来就是非常不爽。这里我还是觉得MyBatis靠谱一点。很早就想吐槽Hibernate原创 2014-08-17 00:23:37 · 3680 阅读 · 0 评论 -
【深入JVM内核—原理、诊断与优化】第2期开课了
百度搜大数据开发人才要求信息,发现大部分都需要有 JVM知识,虽然使用Java的人很多,但真正有几个人懂JVM呢?如果jvm你都不懂,那java你又能怎么提高呢?程序的性能又能怎么优化呢?所以,JVM是必须要学习的!原创 2014-08-18 10:56:38 · 1838 阅读 · 0 评论 -
【爱上Java8】ACC_SUPER和早期的invokespecial
class文件中的access flag记录了一个类的相关信息,比如public abstract final等等。其中有一个值ACC_SUPER。现理解如下:ACC_SUPER是用来表示如何调用父类的方法。在jdk1.1之前,jvm使用一种invokenonvirtual的指令,调用父类方法。这个方法就是现在的invokespecial 前身。既然连名字都改过了,他们的实现差距可以认为已经比较大了。invokenonvirtual是不会进行虚函数查找的,也就是总是静态绑定。原创 2014-08-27 16:39:37 · 3410 阅读 · 1 评论 -
慎用自动装箱
Java的自动装箱和自动拆箱确实提供了一点小方便。但是一旦出问题,还是很痛苦的。123 int x; HashMapString,Integer> map = new HashMapString,Integer>(); x = map.get("hello");看上面的代码,看起来还算简介原创 2014-08-17 00:30:26 · 1502 阅读 · 0 评论 -
做个JAVA 8的调查?
有多少公司已经用上 java8?都是什么样的公司用上了java8?java7到java8原创 2014-08-17 13:00:27 · 878 阅读 · 0 评论 -
java substring内存泄露的解决
在《Java程序与性能优化》一书中提到过Java的substring方法有内存泄露的问题。其原因是一个String的构造函数引起的。12345 String(int offset, int count, char value[]) { this.value = value; this.offset原创 2014-08-17 00:26:51 · 1184 阅读 · 0 评论 -
java 8 使用Lambdas, Paths and Files
Java 8引入了Lambda表达式,流式的API,这里可以用这个新的东东来遍历文件夹。1234567891011121314151617181920212223242526272829303132333435363738原创 2014-08-17 00:25:31 · 3979 阅读 · 2 评论 -
用Java实现简单的遗传算法
遗传算法是解决复杂问题的一种搜索策略,是一种智能计算。他模拟自然界中的种群进化。从这点看,它和神经网络这些算法的起源很像,都是使用计算机去模拟一些自然法则和运作规律。同样,和神经网络一样,遗传算法也是一种基于概率的算法。当然,在现代启发式算法中,很多算法都都是基于概率的,比如神经网络,粒子群算法,模拟退火等。这类方法的要解决的一个问题就是NP问题,要求得结果是满意解,而非最优解。理解这点,我觉得很原创 2014-08-17 12:55:52 · 1418 阅读 · 0 评论 -
用Java这么久,你能说出Java启动过程嘛?别吹了,来看看
学了这么久Java,你肯定也不懂JVM,能说上JAVA启动总过程的,在面试时真没有几个!我们就错在学会知识很快,但掌握知识很难!原创 2014-09-03 16:50:22 · 2009 阅读 · 0 评论 -
【转发】关于Java性能的9个谬论
转载请注明出处,感谢大家的支持!本文来自优优码:http://www.uucode.net/201502/9%e4%b8%aa%e8%b0%ac%e8%ae%baJava的性能有某种黑魔法之称。部分原因在于Java平台非常复杂,很多情况下问题难以定位。然而在历史上还有一种趋势,人们靠智慧和经验来研究Java性能,而不是靠应用统计和实证推理。在这篇文章中,我希望拆穿一些最荒谬的技术神转载 2015-02-06 15:03:54 · 700 阅读 · 0 评论 -
【爱上Java8】使用gdb调试jvm,观察轻量级锁的获得
阅读本文前,你需要对轻量级锁有所了解。轻量级锁在ObjectSynchronizer::slow_enter里尝试获取,所以要先加个断点。当他进来的时候,可以看到:123Breakpoint 2, ObjectSynchronizer::slow_enter (obj=..., lock=0x7ffff7fe16e8, __the_thr转载 2015-01-23 14:22:12 · 1173 阅读 · 0 评论 -
学习实战java虚拟机的计划图
春天了,不能让java有瓶颈,来本jvm脑补一下。原创 2015-04-02 11:06:16 · 1124 阅读 · 0 评论 -
NIO的Buffer类族和Channel
在NIO的实现中,Buffer是一个抽象类。JDK为每一种Java原生类型都创建了一个Buffer原创 2015-05-08 13:59:17 · 984 阅读 · 0 评论 -
【Java二十周年】我比Java大10岁
20年中,Java在不断成长,从Oak到JDK1.0,从Classic VM到HotSpot,从薄弱到完善再到强大。20年里,我从接触Java到爱上Java,感慨万千……原创 2015-04-23 16:06:02 · 4704 阅读 · 6 评论 -
【实战Java高并发程序设计6】挑战无锁算法
相对于有锁的方法,使用无锁的方式编程更加考验一个程序员的耐心和智力。但是,无锁带来的好处也是显而易见的,第一,在高并发的情况下,它比有锁的程序拥有更好的性能;第二,它天生就是死锁免疫的。就凭借这2个优势,就值得我们冒险尝试使用无锁的并发。原创 2016-02-29 16:55:23 · 3055 阅读 · 0 评论