Brown Blog

以终为始,聚沙成塔

谷歌MapReduce论文阅读笔记

大数据,MapReduce

1 标题 标题 MapReduce: Simplied Data Processing on Large Clusters 引用信息 Dean, Jeffrey, and Sanjay Ghemawat. “MapReduce: simplified data processing on large clusters.” Communica...

arthas学习

java,效率

1 简介 arthas是阿里推出的一款开源的java问题诊断工具,支持JDK6+,支持Linux/Mac/Windows系统。通过该工具,做如下事情: 查看JVM信息 查看class/classloader信息 监控方法运行信息 查看profiler/火焰图 他可以解决如下问题。 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exceptio...

lombok学习

java,效率,lombok

1 概述 java代码中,存在很多样板代码,例如类的getter/setter方法、构造器方法、try…catch方法,这些都有特定的规则。于是,偷懒的程序员自然会想到简化这些工作,减少代码的书写量。通过lombok注解,就可以做到这些,下面详细讲述lombok注解的功能。 2 注解原理 lombok的实现原理是在代码编译阶段,识别指定的注解,自动生成字节码文件。 lombok的解析过程...

java中的参数校验2:自定义返回结果

java,参数校验,validation

参数校验的几个层级: 前端校验 前端校验一般是为了更快速的响应用户输入,通知用户及时纠正错误输入。 Controller层校验 Controller层直接接受前端传递过来的参数。在这一层建议做参数的“基本校验”。这里的基本校验是指:字段非空判断、数字的最大值和最小值等,这些校验一般是JSR-303注解可以支持的。这里并不进行业务逻辑的校验,理由是Controller层...

java中的参数校验1:基本使用

java,参数校验,validation

1 背景 在业务代码开发中,为了代码稳健性的问题,不得不校验参数是否合法(防御性质的编程习惯)。但是,参数校验会很繁琐: 参数校验的逻辑大多数很相似且很枯燥 参数校验的逻辑大部分相似,很多场景大都是校验是否为空,例如字符串是否为空、数字是否大于0、列表是否为空、对象是否为null等。 为了提升开发效率,自然会想到将参数校验的逻辑抽象出来。 目前,JSR 380定义了一套参数校...

JVM垃圾回收器学习3:ZGC

jvm,gc,垃圾回收器,zgc,java

1 背景 我们前面介绍过G1是一款比较优秀的垃圾回收器,但是,仍然存在一些缺点: 对于内存很小的情况下不适用 因为G1仍然采用分代收集的方式,且采用标记整理和复制算法,所以需要预留一部分内存用来做缓冲。这样,就导致G1需要比较多的内存才可以正常工作。 仍然有可能发生Full GC 当内存不够用时,G1无法正常工作,就会触发Full GC。即暂停用户线程,对于整个堆空间进...

docker入门3:使用docker创建开发部署环境

docker,运维,虚拟化技术

之前介绍过docker的基本用法,包括镜像的CRUD操作和容器的CRUD操作。这里,介绍使用docker来安装具体的开发/构建环境。 1 为什么使用docker 前面介绍过,docker为我们创造了一个具体的开发/部署环境,从而,容易做到开发/线下/线上环境的一致性。这是在开发和运维上的优点。 对于开发者个人平时的学习而言,使用docker有如下优点 当软件开发/部署环境安装比较困...

docker入门2:docker run参数学习

docker,运维,虚拟化技术

docker run是启动容器的命令,参数很丰富,这里特意学习一下。 一般启动容器的常用命令为 > docker run -d -p [主机端口]:[容器端口] --name [容器名称] [镜像名称]:[tag] -d:--detach的简写,表示容器在后台运行,打印出容器id -p:--publish的简写,表示容器和主机之间的端口映射。 --name:赋予容器一个名字。不...

JVM垃圾回收器学习2:G1

jvm,gc,垃圾回收器

上一篇博客概括过G1之前的其他垃圾回收器的特点,这里开始介绍G1垃圾回收器。 1 G1出现的背景 之前介绍过的新生代和老年代的垃圾收集器,在表现上存在如下问题: 老年代一般比较大,Serial Old和Parallel Old都需要Stop The World,因此,停顿时间可能会比较长。而CMS则会有内存碎片的问题。 需要有新生代和老年代的垃圾收集器一起搭配使用 G1的出现...

JVM垃圾回收器学习1:新生代和老年代的垃圾回收器

jvm,gc,垃圾回收器

2018年9月份,jdk11问世。一个值得关注的地方是加入了zgc垃圾回收器。借此机会,复习一下jvm的垃圾回收器,然后看看新的zgc垃圾回收器。 1 垃圾回收器分类 按线程数分:串行垃圾回收器和并行垃圾回收器。串行垃圾回收器一次只使用一个线程进行垃圾回收,并行垃圾回收器一次可以开启多个线程进行回收。因此,在并行能力较强的CPU上,使用并行垃圾回收器可以缩短GC停顿时间。 按工...