作者: Yuyy

494 篇文章

thumbnail
一、单例模式
解决的问题 有些数据在系统中只应该保存一份,比如系统的配置信息类 资源访问冲突的问题,比如多个logger写入同一个日志文件 几种实现方式 饿汉式 静态成员变量,类加载时实例化 线程安全 不支持延迟加载 public class HungryManDemo { private static final HungryManDemo instance …
JMH基准测试
前言 我们写的代码性能如何?用StopWatch来监控方法得出方法执行时间就是准确的? 使用JMH就可以回答第一个问题。JMH是方法级别的性能测试工具,并且是openjdk官方开发的(值得信赖),它有很多针对性能测试的功能,例如预热,该功能就可以解决StopWatch测试不准确的问题。 StopWatch测试不准确的原因如下: Java8引入的la…
《代码整洁之道》笔记(10-12章节)
类 类的组织 标准的Java约定,类结构定义如下: 公共静态变量 私有静态变量 私有实体变量 公共函数 私有函数 类应该短小 不应有太多全责。 单一权责原则 Single Responsiblility:类或模块应该有且只有一条加以修改的理由。 职责越清晰,被复用的可能性就越大。 内聚 类应该只有少数实体变量,方法操作的实体变量越多,内聚性越强。 …
《代码整洁之道》笔记(7-9章节)
错误处理 使用异常而非返回码 多个条件分支记录错误信息,可以封装进一个方法,在记录异常信息的地方抛出异常,并给出相应信息。在该方法外部捕获,记录异常信息。异常处理和正常业务流程隔离。 缩小异常类型,反例:全部使用Excception。 使用未检异常 代价:违反开闭原则。该方法调用链路上的方法签名都得修改。 给出异常发生的环境说明 应创建信息充分的错…
《代码整洁之道》笔记(4-6章节)
注释 什么也不会比陈旧,提供错误信息的注释更有破坏性。 若编程语言有足够的表达力,就根本不需要注释。 注释的恰当用法时弥补我们在用代码表达意图时遭遇的失败。 如果你发现自己需要写注释,就再想想看是否有方法翻盘。 个人认为注释还是要写,算是对代码的中文翻译,因为我们的英语水平,命名习惯各不相同。 注释掉的代码 其他人不敢删除注释掉的代码。他们会想,代…
thumbnail
排序算法(冒泡,快排,插入)
冒泡排序 @Test public void test() { int[] arr = new int[]{3, 4, 1, 76, 3, 889, 8, 4}; for (int i = 0; i < arr.length - 1; i++) { for (int j = arr.length - 2; j >= i; j--) { …
《代码整洁之道》笔记(1-3章节)
序言:这是一本很多前辈推荐的书,阅读这本书后,我最大的感想就是:特别实在。书中时不时的出现一个句子,戳中你的内心。例如序言中的: 那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐败。 对于软件而言,百分之八十或更多的工作量集中在我们美其名曰“维护”的事情上:其实就是修修补补。 习艺之要有二:知和行。你应当习得有关原则、模式和实践的知识,穷尽应知…
查找第K小/大数据,千万数据排序
思路 刚开始我以为这题的考点是如何快速读取文件(因为这是公司多线程学习分享后布置的作业),我就用多线程来解题。后来出题人跟我说:200m测试数据时我的程序OOM了,我才醒悟这题的考点不是快速读取文件,而是大文件排序。 这题挺有意思的,解题运用了多路归并,有个巧妙的地方估计只有实操才知道——复用流。 题目 查找第K小/大数据 每个法官都有不同的办案能…
thumbnail
线程池(一)What Is ThreadPool
一、写在前面 1.1 线程池是什么 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开…
代码重构,消灭if
最近工作中,开发一个功能,可以参照已有类似的功能。二话不说,CtrlCV,修修补补,完事。 写完后,看着这段代码,陷入了沉思。我写了这段代码,得到了什么。一、完成工作任务。二、。。。(想不出来了)。这不是工具人吗? 随后重新审视了这段代码。一、用到了WebService。二、代码重复率高。三、代码臃肿,没有区分主干。 那,优化?最近手上的挺多的,而…