爱看书的阿东

赐他一块白色石头,石头上写着新名

浅谈设计模式 - 组合模式(十二)

前言

​ 组合模式是一种非常重要的设计模式,使用场景几乎随处可见,各类菜单和目录等地方都能看到组合模式的影子,组合模式通常情况下是和树形结构相辅相成的,而树是软件设计里面非常重要的数据结构,这篇文章将介绍什么是组合模式。

什么是组合模式

​ 允许你将对象组合到树形结构表现“整体部分”的结构,组合能让客户以一致的方式处理个别对象和对象组合,组合其实更像是对于对于各种独立组建的“统一性”,可以将一类相似的事物看为一个整体但是拥有完全不同的工作机制。

阅读全文 »

JDK常用优化手段

if/else嵌套问题:

问题诊断:

  • 利用if/else和缩进进行大量的逻辑判断
  • 逻辑重复,臃肿

反例:if条件仅仅包含一条,但是else内容很多,导致过多的缩进,比如像狭隘难这种代码,一旦多层嵌套很容易让逻辑变得复杂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (ArrayUtil.isEmpty(values)) {
return BigDecimal.ZERO;
} else {
String value = values[0];
BigDecimal result = new BigDecimal(null == value ? "0" : value);

for(int i = 1; i < values.length; ++i) {
value = values[i];
if (null != value) {
result = result.subtract(new BigDecimal(value));
}
}

return result;
}
阅读全文 »

深入理解JVM - 实战JVM工具(下)

前言

​ 接着上篇继续讲述,上一篇模拟了两个还算比较熟悉的场景,分析了之前老年代优化是如何处理的,以及使用jstat分析工具如何分析出JVM的问题,这一节会继续扩展,将会列举更多的案例来分析线上的JVM问题。

前文回顾

​ 上一节通过一个APP的JVM内存分析解释了一些比较特殊的参数如何影响JVM,以及分析了之前老年代优化的文章中关于jstat如何进行分析和优化。

概述:

  1. 介绍三个JVM调优的案例,一步一步分析问题和解决办法。
  2. 总结分析思路和解决流程,自我思考和反思。
  3. 总结和个人感想。
阅读全文 »

《股票作手回忆录》读书笔记

前言

​ 这本书在股票投资这个圈子的评价十分高,读这本书当然不会告诉你怎么买股票,作者作为一个20世纪初期的人,发过国难财,也当过“英雄”,当然最后也和书名一样成为赫赫有名的“作手”。那么看这本书可以学到什么,这篇笔记从个人的视角做一个总结。

推荐语

​ 人不可能赚到自己认知之外的钱的,哪怕是杰西*利弗莫尔这种天赋异禀15岁就进入证券市场也是在不断的翻车犯错中实现个人的成长,这本书更像是一本真实的成长历程书,只要是经历过基金或者股票投资的人,基本都会经历作者经历的一切。

​ 股神有很多,但是真正分享自己的人生阅历并且能出书的人却很少,杰西*利弗莫尔显然做到了这一点。看完整本书不得不说利弗莫尔是一个十分好运的人。

阅读全文 »

深入理解JVM - 实战JVM工具(上)

前言

​ 这篇文章主要介绍一下常用的JVM工具,当然介绍这些工具是没有意义的,因为不去使用吃个饭基本就会忘光,所以这篇文章主要为使用工具实操一下大致如何监控和调优代码。

前文回顾:

​ 上一节介绍了如何解读日志,可以网上搜一些调优的案例代码亲自试验一下,可以发现不同的机器哪怕是一样的JDK版本也会出现不同的效果,比如IDEA和Eclipse中执行的结果可能有出入,同时JVM本身产生的对象也会影响日志的结果。

​ 解读日志是掌握JVM的基本功,在掌握基本的解读能力之后,这篇文章来讲述JVM的工具实战技巧。

阅读全文 »

深入理解JVM - 解读GC日志

前言

​ 这次的文章会根据实战来介绍如何看JVM的日志,看JVM日志说难也难,说容易也容易,更多的是需要时间去不断的尝试进行总结。

​ 另外,因为代码的实际运行效果在不同的机器是不一样的!这篇文章使用的是jdk1.8.0_221 的版本,具体的系统配置查看:

阅读全文 »

原文地址:https://zhuanlan.zhihu.com/p/63925825

  1. 《这样读书就够了》
    本书中“标签读书法”,简单好用,帮助你吸收书本的知识,构建自己的知识体系,让知识真正用到实践当中。

  2. 《学习之道》
    个人觉得,每个人应该懂点心理学,因为一个人最大的敌人不是别人,而是自己。

  3. 《自控力》
    如果你有严重的拖延症,并且想改变这种状态,那么这本书你应该看看。

  4. 《富爸爸穷爸爸》
    为什么大部分人终其一生都深陷巨大的债务危机当中?为什么我们这么努力,却还是摆脱不了贫穷?

  1. 《穷查理宝典》
    这本书建议每个人都去读一下,会让你对如何经营自己和自我增值获得一些启发。

深入理解JVM - 阶段总结与回顾(一)

前言

​ 这篇文章不写新内容,而是回顾之前的文章内容。

为什么开设专栏

​ 开设这个专栏的目的毫无疑问是给个人的成长做一个记录和归档,因为这段时间下来发现学东西一定要系统并且有目的循序渐进的学才有更快的成长,JVM的内容和细节是学不完的,所以要清楚学这个东西的作用是什么很关键,个人学这个东西无非就是为了面试以及了解底层原理,同时本着书到用时方恨少的原则编写专栏。

系列文章阶段总结:

​ 专栏地址:深入理解JVM虚拟机

​ 第一篇:深入理解JVM虚拟机 - JVM的初步了解

​ 系列的开篇,在第一篇专栏我们需要了解JVM到底是个什么东西,他对于JAVA开发者而言的重要意义,同时我们编写的代码是如何通过JVM运行并且实现我们想要的效果的,重点在于JAVA加载到JVM的工作流程。

​ 这里也讲述了JVM的双亲委派模型和Tomcat的双亲委派模型是如何打破他的,类加载器也是JVM的一个核心内容。

​ 第二篇:深入理解JVM虚拟机 - 虚拟机的发展历史

​ 基本就是《深入理解JVM虚拟机》的笔记了,当然很多博客也介绍了。

​ 第三篇:深入理解JVM - 分代的基本概念

​ 讲述了JVM的传统分代模型的特点,以及新生代和老年代的划分,重点是新生代如何进入老年代,需要的条件以及相关的参数设置也是面试高频点。最后介绍了JVM的调优参数。

​ 第四篇:深入理解JVM虚拟机 - jvm的对象分配策略

​ 这篇文章个人认为值得关注的点是实际的JVM测试结果和书里面不一样!同时可以发现新版本当中的Parnew会在连续分配大对象的时候让对象直接进入老年代,真的很奇怪!还是建议学这些东西一定自己尝试,花点时间换来的收益是你意向不到的!

​ 第五篇:深入理解JVM - 垃圾回收算法

​ 和标题一样,介绍JVM的垃圾回收算法以及新生代老年代是如何运用算法进行回收的,需要注意的是这些垃圾算法没有好坏之分,一切看实际垃圾收集器开发者的设计理念。比如CMS还是典型的标记-清除,但是到了G1就是标记整理了。

​ 第六篇:深入理解JVM - CMS收集器

​ 讲述CMS收集器的手机细节,以及CMS的好搭档ParNew的一些处理细节,CMS+ParNew相信还是多数公司的首选垃圾收集器。毕竟不是谁都有那么庞大的用户量或者大项目这种。

​ 第七篇:深入理解JVM - 实战老年代优化

​ 无需多介绍,内容和标题类似。

​ 第八篇:深入理解JVM - G1收集器

​ 功能和使用看似都十分简单,然而内含的原理十分复杂,主要也是讲解G1收集器的一些功能和细节点。

​ 同时是否需要研究原理这就看个人需求了,当然多懂点总是好事。

​ 第九篇:深入理解JVM - G1调优简述

​ 感觉完全是水了一篇,可以不看,因为个人目前没遇到需要用上G1去调优的场景(=-=)

阅读全文 »

《月亮与六便士》读书笔记

前言

我不知道上了多少次“经典必读”这四个字的当了,这本书看完我是无感的,里面的有些描述甚至让我反感,而看这本书的理由也很简单,一方面毫无疑问是被广告吸引了,另一方面,它出现在多多的百亿补贴上面看着还挺便宜。

资源链接:

如果不想被我的观点影响,请上网找找书的评价然后自己翻翻书,这本书也算是经典读物了,应该有不少人知道名字但是没看过。

链接:https://pan.baidu.com/s/1P9Bvpo0sSodHTCV1WmCrrg
提取码:dn69
–来自百度网盘超级会员V6的分享

阅读全文 »

深入理解JVM - CMS收集器

前言

​ 上一节我们讲解分代和垃圾回收算法,这一节我们来讲解老年代重要的垃圾收集器:cms收集器。这一节的内容同样比较多。

​ 这一节主要围绕着十分常用的CMS垃圾收集器进行讲解。

前文回顾

​ 上一篇文章我们讲解分代的基础理论,同时讲解了新生代和老年代各自的算法复制算法和标记整理算法,之后我们总结了新生代进入老年代的条件,在最后我们介绍的引用类型,同时进行了练习的提问和相关的解答。

概述

  1. 讲述cms收集器之前,简单了解他的黄金搭档ParNew
  2. 讲解cms收集器的参数,以及核心的运行步骤部分。
  3. 讲解CMS收集器运行过程的一些细节以及CMS的参数的意义。
  4. 整理小部分常见的JVM问题
阅读全文 »