自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 SpringBoot源码解析之注解

本文的代码基于1.5.9版本 启动类中都需要添加 @SpringBootApplication 注解,该注解中包含了三个重要注解: 1、@SpringBootConfiguration 标记为springBoot应用,在这个注解中又有@Configuration表示是个注解配置。 2、@EnableAutoConfiguration 该注解中又包含@AutoConfigurationPackage...

2019-09-17 14:19:31 602

原创 Effective Java 3rd (九)

目录 并发工具优于 wait 和 notify 文档应包含线程安全属性 明智审慎的使用延迟初始化 不要依赖线程调度器 优先选择 Java 序列化的替代方案 非常谨慎地实现 Serializable 考虑使用自定义的序列化形式 保护性的编写 readObject 方法 对于实例控制,枚举类型优于 readResolve 考虑用序列化代理代替序列化实例 81. 并发工具优于 wait 和 noti...

2019-07-23 18:25:23 283

原创 Effective Java 3rd (八)

目录 避免不必要的使用受检异常 优先使用标准的异常 抛出与抽象对应的异常 每个方法抛出的异常都需要创建文档 在细节消息中包含失败一捕获信息 保持失败原子性 不要忽略异常 同步访问共享的可变数据 避免过度同步 executor 、task 和 stream 优先于线程 71. 避免不必要的使用受检异常 方法中使用受检异常,会强迫调用方必须处理异常,增加了可靠性,但是像stream则无法处理受检异...

2019-07-22 16:08:48 198

原创 Effective Java 3rd (七)

目录 基本数据类型优于包装类 当使用其他类型更合适时应避免使用字符串 当心字符串连接引起的性能问题 通过接口引用对象 接口优于反射 明智审慎地本地方法 明智审慎地进行优化 遵守被广泛认可的命名约定 只针对异常的情况下才使用异常 编程错误使用运行时异常 61. 基本数据类型优于包装类 需要注意自动拆箱、装箱产生的bug // Broken comparator - can you spot th...

2019-07-19 11:38:46 213

原创 ReentrantReadWriteLock之锁降级

概念 **锁降级是指在读写锁中,为了保证写后数据的一致性,将写锁降级为读锁。**其实就是利用了读写锁的互斥性。 代码 public class DegradeLock { private int value; private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); private Lock re...

2019-07-17 15:29:52 417

原创 Effective Java 3rd (六)

目录 仔细设计方法签名 明智审慎地使用重载 明智审慎地使用可变参数 返回空的数组或集合,不要返回 null 明智审慎地返回 Optional 为所有已公开的 API 元素编写文档注释 最小化局部变量的作用域 for-each 循环优于传统 for 循环 了解并使用库 若需要精确答案就应避免使用 float 和 double 类型 51. 仔细设计方法签名 仔细选择方法名名称 名称应始终遵守标准...

2019-07-16 18:07:09 238

原创 Effective Java 3rd (五)

目录 使用标记接口定义类型 lambda表达式优于匿名类 方法引用优于lambda表达式 优先使用标准的函数式接口 明智审慎地使用Stream 优先考虑流中无副作用的函数 优先使用Collection而不是Stream来作为方法的返回类型 谨慎使用流并行 检查参数有效性 必要时进行防御性拷贝 41. 使用标记接口定义类型 标记接口(marker interface),不包含方法声明,只是指定(...

2019-07-12 19:17:28 271

原创 Effective Java 3rd (四)

31. 使用限定通配符来增加 API 的灵活性

2019-07-08 16:25:50 169

原创 Effective Java 3rd (三)

21. 为后代设计接口 jdk8新增的default 默认方法会让类继承这些默认方法,存在一些风险,例如: Collection接口的removeIf方法是jdk8新增的default 方法,org.apache.commons.collections4.collection.SynchronizedCollection 类承诺提供的方法都是同步的,SynchronizedCollection ...

2019-06-28 11:02:13 283

原创 Effective Java 3rd (二)

11.当你覆写equals时每次都覆写hashCode

2019-06-25 11:46:52 259

原创 Effective Java 3rd (一)

1、考虑使用静态工厂方法替代构造方法

2019-06-18 15:19:04 411

原创 Redis命令笔记

incr : 原子加1 expire key sec : 设置过期时间 ttl key : 剩余过期时间 list*** LPUSH key value1 [value2…] : 从左边插入list,可带多个值,链表实现,返回list长度 RPUSH : 同上,从右边插入 LLEN key : 返回 list长度 LRANGE key start stop : 从start 到stop读取list...

2019-03-21 16:12:32 252

原创 ThreadPoolExecutor源码解析

Doug Lea大神的设计思路 1、线程池状态跟线程数合并到一个32位的int变量中,头三位为状态,剩下的为worker数。 2、线程封装成Worker对象,启动线程的时候优先执行这个任务firstTask。小于设置的核心线程数量或者最大线程数量则添加worker,否则丢到任务队列中, 3、默认Worker是不会终止的,一直循环去任务队列中取任务。 核心代码 成员变量 // * RUNNING&l...

2019-03-19 16:32:36 139

原创 ArrayList大数据级别高效删除头元素

ArrayList的内部维护着一个数组,当调用remove方法的时候,会将删除位置之后的所有的数据向前移动,java中是以删除位置起始,用System.arrayCopy来复制删除位置后面的数据到当前数组的删除位置: 由于ArrayList的读取效率很高,所以可以利用这个特性,把头元素跟尾元素调换位置,再把尾部元素删掉即可。 ...

2019-03-17 18:39:26 745 1

原创 在IDE中启动flume

上一篇讲到,在windows中通过命令行来运行flumewindos搭建flume,本篇将讲到如何在IDE中启动服务端agent。 查看cmd 首先进入FLUME_HOME\bin,查看 flume-ng.cmd ,会发现只有一行命令: powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -File %...

2019-02-28 18:27:17 853

原创 在windows搭建Flume

flume是一个分布式的支持高并发的日志收集系统。 本文将介绍在windows下的环境搭建。 # 下载 [下载链接](http://flume.apache.org/download.html) ![](https://img-blog.csdnimg.cn/2019022616062459.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naG...

2019-02-26 16:50:05 1771 3

原创 Logback杂谈之继承

logback相信大家都很熟悉,基本用法就是: Logger log =LoggerFactory.getLogger("com.xxx.yyy"); log.info("abc"); 但是其中有些细节可能你没注意到。 #继承 Logback有继承的概念,顶层为根,即root,所有定义出来的log实例都继承自这个root,相当于java中的Object。 Logger字符串也会有继承,根据点号...

2019-02-22 19:08:59 1069 1

空空如也

空空如也

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

TA关注的人

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