- 博客(14)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
原创 编程素养提升之基础技艺
如何才算是一个伟大的程序员,真的不是卷了多久的算法,刷了多少leecode,当然这在面试的时候很受用。真正伟大的程序员是他写的代码不会被后来者破口大骂,是可以给公司给同事一个整洁优雅可维护的代码库。所以回归本质、回归基础,让我们用工匠精神写出经得起推敲的简单代码吧。...
2022-06-07 11:49:25 173
原创 单元测试实践三板斧—开篇
一、什么是单元测试单元测试是指对软件中的最小可测试单元进行检查和验证。单元在质量保证中是非常重要的环节,根据测试金字塔原理,越往上层的测试,所需的测试投入比例越大,效果也越差,而单元测试的成本要小的多,也更容易发现问题。然而然而我们大多数人是不会写单元测试的,甚至不知道单元测试究竟是为了干什么。单元测试几个典型场景如下:开发前写单元测试,通过测试描述需求,由测试驱动开发。在开发过程中及时得到反馈,提前发现问题。应用于自动化构建或持续集成流程,对每次代码修改做回归测试(我们要继承Bamboo)。
2022-04-06 15:03:37 555
原创 单元测试实践三板斧-Triple Kill
一、Controller层单元测试说起Web Controller层的单元测试,可能许多研发同学都会觉得这层测试可有可无,因为我们这里没有复杂的业务逻辑。首先可以肯定的是Controller层我们确实没有也不应该有过于复杂的业务逻辑,但是其实仔细梳理,这层也承担着非常多的职责,通过单元测试可以大大减少出错几率,提高开发效率。从接收请求到数据返回Spring有很多魔法,做了很多事情,总结如下几个步骤:职责描述1.监听HTTP请求controller需要对特定的URL,HTTP
2021-11-15 18:41:48 334
原创 单元测试实践三板斧-Double Kill
注意:本篇教程是采用Junit的写法进行举例的,在单测实践过程中,为了验证不同框架混合开发可行性,导致不同层使用的框架不同,还未进行统一。一、数据层单元测试关于数据层的单元测试,为了遵从单元测试的原则,可能我们需要脱离数据库依赖;假设我们想这么做,那么就按照前面讲的业务逻辑层单元测试的方法,我们同样把数据库依赖Mock掉就可以了。但是,如果我们这么做,那么大多情况下我们的数据层是没有什么逻辑的,数据依赖都被Mock了,那么单测可验证的东西就太少了,所以我建议可以依赖测试数据库或者是依赖内存型数据库.
2021-11-15 18:41:20 1226
原创 单元测试实践三板斧-First Blood
一、业务逻辑层单元测试首先,我们来介绍业务逻辑层的单测实践。在写这部分代码的单元测试的过程中,我选择使用Spock框架来完成,因为在微服务架构下,业务逻辑层中相当多的场景都依赖其它接口返回结果才能验证自己的代码逻辑,同时逻辑中代码分支众多。如果采用Junit框架进行测试代码开发,需要借助JMock或Mockito等工具完成接口的Mock。在此同时为了保证分支覆盖率则会造成代码更加繁琐,后期维护困难。话不多说,我们一起了解一下Spock。二、Spock框架简介Spock 是基于 Groovy 的测试框
2021-11-15 18:39:58 1256
原创 Redis-持久化及内存淘汰机制
持久化机制RDB持久化原理优点List itemList item缺点List itemList itemAOF持久化原理优点List itemList item缺点List itemList itemAOF重写过期键删除策略在设置数据库过期键的时候会指定过期时间,那么一个键过期了,何时进行删除呢?常见的几种删除策略:定时删除:在设置键的过期时间的同时,创建一个定时器,键过期时立即执行对键的删除操作。优点:对内存是最友好的缺点:对CPU时间是
2020-07-22 17:13:06 275
原创 Guava Cache缓存回收策略分析
Guava Cache简介优点Guava Cache很好的封装了get、put操作。如:get数据时,获取缓存-如果没有-查询DB(get-if-absent-compute),再把查询结果放入缓存中Guava Cache是线程安全的缓存,内部实现与ConcurrentMap相似,但增加了更多的元素失效策略。Guava Cache提供了三种基本的缓存回收方式:基于容量回收、定时回收和基于...
2020-07-16 16:03:29 1996
原创 剖析Guava RateLimiter限流原理
限流的基础算法漏桶算法如上图所示,假设有一个水桶,水桶有一定的容量,入水口不限速度将水全部注入到水桶中,然后水桶的出水口以一个恒定的速度将水放出,当入水口速度过大时,这个漏斗中就会积水,如果水太多了就会溢出。优点:平滑突发请求,削减峰值缺点:漏出的速度可能会拖慢整个系统,不能有效地利用系统的资源令牌桶算法如上图所示,令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。...
2019-12-01 22:11:43 1685
转载 Java解析excel工具easyexcel 助你快速简单避免OOM
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要10...
2018-07-19 15:03:00 68755 26
原创 Java开发神器之Lombok介绍
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此。相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复写Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。那么今天本文将向大家介绍一款在Eclipse/Intellij IDEA主流的开发环境...
2018-07-19 14:24:11 9538
原创 重构—改善既有代码的设计
经典名言 Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ——Martin Fowler 任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的代码。 ——Martin Fowler
2017-05-24 23:13:36 1102
原创 Oracle 常用命令总结
创建表空间、用户并授权创建临时表空间 create temporary tablespace user_temp tempfile ‘D:\oracle\oradata\Oracle9i\user_temp.dbf’ size 50m autoextend on next 50m maxsize 2048m extent management local; 创建数据表空间 cre
2015-08-04 09:42:50 290 1
翻译 Linux 命令行学习笔记
一、几个简单的命令:date - 显示系统当前的时间和日期。cal - 显示当前月份的日历。df - 查看磁盘的剩余空间。free - 显示空闲内存的数量。exit - 退出终端会话。 二、幕后控制台即使终端仿真器没有运行,在后台仍有几个终端会话运行着。Linux启动的时候会同时启动几个控制台,可以通过Ctrl+Alt+F1到Ctrl+Alt+F6访问。当一个会话被访问时,要输入用户名和密
2015-08-03 16:44:22 334
Spring Boot实战
2017-08-17
editplus文本编辑器
2013-09-18
部分查询语句的事务隔离级别为串行化
2017-08-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人