My Blog

stay hungry, stay foolish

对象健身操

1. 方法只使用一级缩进。 重构前: class App{ public String action(int[][] data){ List<Integer> list = new ArrayList<>(); for(int i = 0;i<10;i++){ for (int j = 0;j&l...

实战总结|系统日志规范及最佳实践

前言 打印日志是一门艺术,日志信息是开发人员排查线上问题最主要的手段之一,但规范打日志被开发同学经常所忽视。日志就像保险,平时正常的时候用不上,但是一旦出问题就都想看有没有保险可以用。一条良好的日志,是我们向外部证明的材料。 一、概要 1.1 什么是日志? 日志,维基百科中对其的定义是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表。 一个打印良好...

JVM GC 配置指南

前言 本文是京东交易链路众多核心应用GC优化经验的总结,旨在简明扼要说明各种回收器的基本调优设置,为各应用GC配置提供指引。 JDK版本 以下所有优化全部基于JDK8版本,强烈建议低版本升级到JDK8,并尽可能使用update_191以后版本 如何选择垃圾回收器 响应优先应用:面向C端对响应时间敏感的应用,堆内存8G以上建议选择G1,堆内存较小或低版本JDK选...

关于代码规范的一些思考

有没有对错误进行处理?对于调用的外部服务,是否检查了返回值或处理了异常? 设计是否遵从已知的设计模式或项目中常用的模式? 开发者新写的代码能否用已有的SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? 工程中是否引入了无用的,功能重复的,不同版本的jar包依赖?(json类库,各种utils) 有没有无用的代码可以清除? ...

Java获取某段时间内周几的日期

由于每个月要报加班餐补(每周的周一、周四两天),需要填写加班日期明细表,每次还要打开日历,数一下从上次报销到今天中间有哪几天是周一和周四。所以做个小工具,打成jar包,使用时执行java -jar 后面跟参数即可。 /** * 获取某段时间内周几的日期,比如周一、周二... * @param beginDate 开始日期 * @param en...

IDEA快捷键-Mac版

toar 将List 转为Array ritar 倒序遍历数组 ittok 字符串空格分割 itco 自动生成iterator遍历 for 循环 itit 自动生成迭代器while循环遍历 lazy 自动判空 lst 取出数组中最后一个元素 ...

关于开会的那些事儿

如果会议通知对背景、目的、议程阐述不清楚,我可以在会前问会议发起人或组织人: “请问为什么要开这个会?会议要达到什么目标?会议议程是什么?” 当我觉得会议参会人范围不精准,或不明确为什么让我参加,我可以直接问会议发起人或组织人:“请问会上具体需要我做些什么?”如果觉得参加的必要性不大就可以婉拒啦。 我正忙着,有人临时把我拉进会议,打断思...

小马哥直播间面试题浅析

JUC并发包用过哪些? 待更新。。 读写锁实现的区别? 待更新。。 信号量的实现机制? 待更新。。 ConcurrentHashMap为什么不能插入null? 设计如此。源码中做了限制,如果k或者v为空时会抛出空指针异常 final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || val...

设计模式之美

访问者模式

访问者模式的概念 将一个或多个操作应用到一组对象上,用来解耦操作和该对象本身。 访问者模式的使用场景 比如我们目前有这样一个需求,要提取一组文件中的文本内容(假设这一组文件包括PDF、Excel以及TXT文件),用访问者模式实现大概是下面这个样子。 代码实现 定义访问者接口,其中提供三个方法,分别用来处理三种不同格式的文件 public interface...

设计模式之美

单例模式

单例模式的概念 一个类在内存中只允许创建一个实例,并且它们提供一个对自身的全局访问点。则该类可以被称为是一个单例的类,这种模式可以被称为单例模式。 单例模式的使用场景 系统的配置文件。比如数据源、服务的端口、黑白名单等信息以配置文件的方式进行管理,那么理论上同一个系统中应该只有一份该配置文件的实例。 日志类。通常日志类会以单例的形式实现,而不是每次执行日志操作时重新创...