技术进阶之路

记录技术进阶之路

责任链模式你用对了吗

责任链是很多框架和项目常用的设计模式,可有效保证代码的可扩展性、复用性、高内聚低耦合,责任链模式本身并不复杂,但是很多博客的示例代码的用法属于“教科书”式的实践,不适合在实际软件工程中的运用,笔者将结合在项目中使用的心得体会,谈谈使用责任链模式的正确姿势。 一、何谓责任链 责任链的设计模式其实...

2019-04-06 18:41:26

阅读数 24

评论数 0

如何保证db与缓存的数据一致性

为了提升性能,缓存在系统开发中具有普遍的应用。常见的模式是先查询/更新db后再去更新缓存,那么如何保证db和缓存的数据一致性的问题是实际开发中经常遇到的问题。这种场景下容易造成数据不一致的问题主要是缓存双写。   一、缓存双写问题   先查询或者更新db,然后再更新缓存,这里可能出...

2018-10-28 13:51:54

阅读数 2332

评论数 2

Mybatis selectKey 采坑笔记

1.现象描述观察某张表的数据时,发现设置了自增属性的AutoId,在插入数据后并不是自增的,而是数值跳跃着增加的。2.问题排查在确认AutoId的自增属性设置没有问题后,开始怀疑是不是insert语句的问题,insert语句是MyBatis Generator自动生成的,示例如下:&amp...

2018-06-13 15:54:54

阅读数 2134

评论数 0

spring 事务应用误区总结:那些导致事务不回滚的坑

基于JDBC的 Spring事务在项目中常用来保证数据的一致性, 想要正确的使用,绝不是加一个@Transactional那么简单。最近团队内在排查事务不生效的问题时,就遇到了一个很典型的错误应用的场景。本文就几个容易遇到的导致事务不生效的场景做个总结。一、Spring事务原理在使用JDBC事务操...

2018-05-13 15:36:11

阅读数 1988

评论数 1

技术人的软实力(0)不可忽视的软实力培养

作为一个开发者,我们常常更喜欢专研技术,研究一个框架,看个源码等等,这是我们的硬实力,无可厚非,可是我们却也常常忽视了软实力的培养,很多时候,一个项目的进度,代码质量,线上故障等不仅仅取决于开发者的技术实力,也和软实力息息相关。软实力其实就是一个人的内在综合素养的体现,很难用具体的方式来衡量,却在...

2018-04-10 08:30:04

阅读数 561

评论数 0

【高质量代码系列2】switch 语句重构技巧总结

switch 语句在日常开发中,常常用来根据不同的类型,执行不同的操作。如果类型很多,整个swtich代码会变得很臃肿,代码可扩展性、可阅读性都很差。针对这个问题,我们可以考虑使用多态来解决,将每个类型的行为封装到一个子类中。下面以加减等计算类型的操作为例说明这个问题 1public enum C...

2018-03-28 09:36:01

阅读数 416

评论数 0

【高质量代码系列1】过多的if else 代码重构技巧总结

一、if else 的滥用在实际业务开发中,常常面临多个条件判断的情况,如果不加思索就写代码,很容易出现一堆if else 的代码,导致代码逻辑不清晰,可阅读性很差,笔者现在改造中的一个历史遗留项目,大片大片的if else,给后来人带来很大的理解成本。过多的if else ,这是很明显的坏代码的...

2018-03-15 21:04:29

阅读数 3538

评论数 0

java BigDecimal :注意,这是你可能会踩到的坑

在BigDecimal 应用的过程中,有两个坑是我们比较容易遇到的,使用不当会出现莫名其妙的错误。 1.构造函数的坑先看下面这段代码:public void constructTest(){ BigDecimal value1 =new BigDecimal(10.511); Syste...

2017-08-06 15:23:19

阅读数 9686

评论数 2

干货:Dao单元测试项目实战

Dao单元测试技术方案:H2+spring-test+spring-test-dbunit+testng 一.* 技术方案的选择*H2:内存数据库,支持标准SQL,相当于把数据库本地化,可以避免对测试环境的依赖,也可以提升单测的速度。spring-test: 提供了@DirtiesContex ...

2017-08-06 15:21:10

阅读数 307

评论数 0

DBUnit--测试数据准备与验证的利器

单元测试时数据的准备与验证是一个很繁琐的过程,DBUnit为之提供了一套优雅的解决方案,可以帮我们从中解脱出来。 DBUnit数据准备DBUnit支持将准备的数据放置在一个xml文件中,在执行测试用例之前自动同步到数据库中,执行完成后数据也可以自动销毁。示例如下:<?xml version=...

2017-08-06 15:20:10

阅读数 497

评论数 0

H2:构建单元测试的本地内存数据库

dao层的单元测试不能依赖测试环境的数据库以避免环境的影响,H2是一个内存数据库,支持标准SQL,相当于把数据库本地化,可以避免对测试环境的依赖,也可以提升单测的速度 SpringBoot与H2的整合由于springBoot提供了H2的默认配置,如果使用是的springBoot则不需要新增h2的配...

2017-08-06 15:18:57

阅读数 600

评论数 3

不依赖第三方环境和服务

一切依赖于第三方环境和服务的测试都不能叫做单元测试 单元测试的粒度 单元测试的是围绕着一个单点的功能来展开的,如果加入其他依赖因素,就会对单元测试的结果造成干扰,所以单元测试一定要把依赖因素给排除掉。 如何消除依赖 组件本地化实现 这种情况常见于数据库和中间件的依赖。比如...

2017-07-02 23:02:14

阅读数 257

评论数 0

重新认识单元测试

单元测试是对系统中最小可测试单元的功能进行自动化测试,来验证代码功能是否符合预期。单元测试的意义虽说都很清楚,但是实际开发中写出真正有意义的单元测试并不多或者说并不那么容易,甚至很多项目是根本没有单元测试的,本文旨在让大家对单元测试有一个完整的认识。

2017-07-02 23:00:10

阅读数 274

评论数 0

你必须要掌握的测试利器--TestNG

是时候告别Junit了! 一、 青出于蓝而胜于蓝TestNG是一款脱胎于JUnit和NUnit的测试框架,借鉴了后者的设计思想,在此基础上又引入了新的功能,比如分组测试、依赖测试、多线程测试等。 TestNG除了支持单元测试外,还可以用来做集成测试、功能测试、端到端测试等等,而junit只是用来...

2017-07-02 22:56:30

阅读数 1237

评论数 0

Java项目部署总结(三)nginx安装与配置

1.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2.安装 PCRE 下载 PCRE 安装包 wget http://downloads.sourceforg...

2016-01-06 19:46:44

阅读数 4852

评论数 0

java项目部署总结(二)tomcat安装与配置Native APR 模式

APR是Apache HTTP服务器的支持库,提供了一组映射到下层操作系统的API。通过 tomcat-native 库,使tomcat运行时通过APR更多的调用本地API,达到提升性能的目的。而tomcat-native依赖于三个组件:APR, OPENSSL, JDK。 1.安装JDK yu...

2016-01-05 21:52:51

阅读数 6110

评论数 0

java项目部署总结(一)JDK 、git、maven、ssh等安装与配置

这几天根据公司需要,把最近做的一个项目部署到了阿里云上,阿里云操作系统是centos,总共五台服务器:API服务器,BOS管理后台服务器,task定时任务服务器,deplpoy发布服务器,nginx服务器。

2015-12-29 07:53:45

阅读数 1474

评论数 0

设计模式系列(2)---单例模式解析与应用

单例模式是一种对象创建模式,它用于产生一个唯一的对象具体实例,可以节省常用对象频繁创建的开销,也能减轻GC的压力。在实际开发和框架中有很多应用。

2015-12-26 11:31:37

阅读数 436

评论数 0

设计模式系列(1)---观察者模式解析与应用

在实际开发中,有时候会遇到多个不同类依赖某个目标类的情况,当目标类发生发生变化时,依赖目标类的其他类也要做出相应的调整,若要目标类和依赖类之间松耦合,则可以应用观察者模式。 1.什么是观察者模式 Head First设计模式是这样定义的:观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对...

2015-12-25 07:44:21

阅读数 436

评论数 0

bootstrap-datetimepicker和uploadify应用总结

bootstrap-datetimepicker是一款轻便的时间选择插件,支持Time选择,国际化,应用起来相当简单。而uploadify则是一款支持多文件上传的插件。最近应用这两个插件做了些小应用,感觉不错,简单做个总结。 1.引入插件注意事项 到 bootstrap-datetimepi...

2015-12-19 17:00:16

阅读数 1874

评论数 1

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