自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010900754的专栏

真心希望国内博客环境 多一些原创 少一些复制

  • 博客(12)
  • 资源 (3)
  • 收藏
  • 关注

原创 【Java】G1 GC

简介Garbage First Collector是一款以降低最大暂停时间为目标的服务端回收器。region都知道cms使用标记清除算法,会导致内存碎片。g1就是用了划分region的方案来解决内存碎片。g1中,逻辑上可以认为整块内存仍是分代的。物理上,内存被划分为若干等大region。每一块region都可以被用作老年代或者年轻代。card每一个region又分为若干ca...

2019-01-26 17:58:25 568

原创 【Java】并发回收算法 理论

概述并发回收是指回收器和赋值器可以并发运行的回收算法。以往的算法比如标记整理,复制等都是假定回收时处于STW状态,会暂停其他的线程,而并发算法允许和其他线程同时运行。三色模型将对象分为三色黑:对象连同引用都被扫描过白:对象未被扫描过灰:对象被扫描过,引用仍有未被扫描过的回收过程可以看做是以灰色对象为波面向前推进的过程。灰色对象或者波面将黑色和白色对象分离开。回收算法正确性...

2019-01-26 16:25:27 397

原创 【Java】ForkJoin 框架简介

简介框架提供了将任务拆成子任务以后,并行执行子任务的能力。有点类似MapReduce,只不过mapreduce把子任务放在不同进程里执行,而forkjoin放在不同线程里执行。要理解forkjoin,最直观的就是在分治算法中应用,不用forkjoin的话分治算法实现是单线程的,也就是一个纯粹的递归函数,使用了forkjoin,每一次分出一个小任务都可以并行执行,执行效率会有提升。比如说快排算法...

2019-01-24 21:13:00 156

原创 【Java】-Xms -Xmx参数 相等?

一般而言,生产环境的jvm会把Xms和Xmx配置为相等,这样为什么合理?1)如果二者不等,最开始的时候堆大小是Xms,随着heap内存消耗,jvm很有可能需要申请更大的空间直到Xmx;相似的,jvm在申请到Xmx空间时可能又用不了,这时会缩小jvm空间,这样,虽然可以动态调整jvm堆申请的大小,但是每一次调整都需要一定的系统开销(jvm与os之间)。但是,注意前提——生产环境,生产环境意味着一...

2019-01-24 16:38:47 4112

转载 【资料】gc 相关

https://hllvm-group.iteye.com/group/topic/21468https://hllvm-group.iteye.com/group/topic/44381https://hllvm-group.iteye.com/group/topic/44529

2019-01-23 14:56:42 119

原创 【Java】CMS 垃圾回收 GC

CMS简介:全称是Concurrent Mark Sweep,年轻代使用了STW并行复制算法,老年代采用了并发的标记-清除算法,主要目的是减少老年代垃圾回收的暂停时间。缺点是采用了清除算法,所以会产生碎片垃圾。若想启动,使用参数“-XX:+UseConcMarkSweepGC”,该算法已经在jdk7及以后的版本中废弃了,建议使用G1,但是cms对于理解G1等更高级的垃圾回收器很有帮助。阶...

2019-01-19 11:20:31 1859

原创 【Java】jmap 命令

java程序要与当前执行shell的用户一致才能执行。先使用jps -l找出java程序的pid;jmap -heap pid:打印堆使用的概况;jmap -clstats pid:打印出类加载器使用情况,主要用来看加载的类的数量,jdk8及以后才可使用。之前版本的jdk使用jmp -perstats pid命令;jmap -histo[:live] pid:打印heap中各类的实...

2019-01-14 23:51:45 1240

原创 【Java】多态代替switch

尽量消除if-else,使用多态代替。原因在于,如果用if-else,新增一种或者删除一种,所有的if-else都要改动。而使用多态,只需要新增或者删除一个实现类。如果保证只有一处if-else,那么可以不用多态,但是如何保证只有一处呢?所以还是要用多态消除if-else。当然使用了多态也不是说完全不用if-else,多态会在构建子类对象时用一次if-else,之后子类信息已经确定了,后面的行为都...

2019-01-12 18:34:51 2734

原创 【Java】Optional类 使用 及 实现

为什么使用Optional类?还是一段出现了很多次的代码,我们定义一个Response类用于描述广告接口的返回,内部包含一个广告Ad,Ad内部包含素材信息Material,素材内部包含链接信息。类定义如下:@Dataclass Ad{ Material material; // other}@Dataclass Material{ String url; ...

2019-01-12 11:46:55 441

原创 【Java】日常 bug 记录

深浅拷贝 注意记一次深拷贝导致的bug。项目里有一个缓存,简单理解就是一个<Integer, List>的map,由于考虑不周,检索时直接返回了map里的list,后面有对list的过滤操作,然后返回给客户端。这样相当于直接把缓存的list的引用返回了,如果后面要对list做修改,比方说删除元素之类的,就会有副作用,导致缓存内被修改,影响后续的处理。这里其实应该做一个深拷贝,每一次...

2019-01-08 21:09:51 278

原创 【Java】log4j 多个配置文件

我们自己的项目肯定会定义一份log4j的配置文件,如果我们import的jar包里也包含配置文件,是否会有冲突?因为import的jar包最终也会加入到classpath,所以执行时,import的配置文件和我们直接定义的配置文件都会出现在classpath中,最终到底用哪一个取决于先加载到哪一个配置文件,与classpath中含有相同全类名的情况是一样的,具有不确定性。所以,一般建议不要在j...

2019-01-04 18:44:35 1693

原创 【Java】jvm 垃圾回收 算法 理论

概述最近在研究gc相关的内容,这里整理下。先从算法部分开始。为什么从算法开始,因为看过一点gc方面的内容都知道最基础的三个算法:标记整理,复制,标记清理,我看过后一直有一个疑问,年轻代使用的是复制算法,但是都知道复制算法的空间利用率不高,为什么不直接使用标记整理算法???大致想想,二者都需要移动活着的对象,但是标记-整理空间利用率高,为什么不直接用???看了许多博客,其中一些指出了原因:标记...

2019-01-03 19:57:39 696

设计模式的 课件

主要讲解了 设计模式的相关内容 包括类图等其他

2014-04-15

head first 审计模式

headfirst 一系列书籍中 对设计模式的讲解 很容易理解

2014-04-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除