摘要: Spock自带的Mock用法 在上一篇讲单元测试代码可读性和维护性的问题时举了一种业务场景,即接口调用,我们的用户服务需要调用用户中心接口获取用户信息,代码如下: /** * 用户服务 * @author 公众号:Java老K * 个人博客:www.javakk.com */ @Service pu 阅读全文
posted @ 2020-11-26 00:32 Java老K 阅读(1301) 评论(1) 推荐(0) 编辑
摘要: 这是Spock系列的第一篇文章,整个专辑会介绍Spock的用途,为什么使用Spock?它能给我们带来什么好处?它和JUnit、JMock、Mockito有什么区别?我们平时写单元测试代码的常见问题和痛点,Spock又是如何解决的,Spock的代码怎么编写以及Spock的优势和缺点等内容,让大家对Sp 阅读全文
posted @ 2020-11-23 23:52 Java老K 阅读(1692) 评论(0) 推荐(0) 编辑
摘要: 随着RxJava、Reactor等异步框架的流行,异步编程受到了越来越多的关注,尤其是在IO密集型的业务场景中,相比传统的同步开发模式,异步编程的优势越来越明显。 那到底什么是异步编程?异步化真正的好处又是什么?如何选择适合自己团队的异步技术?在实施异步框架落地的过程中有哪些需要注意的地方? 本文从 阅读全文
posted @ 2020-11-18 23:47 Java老K 阅读(2596) 评论(0) 推荐(0) 编辑
摘要: 在我们平时开发中或多或少都会遇到需要调用接口来完成一个功能的需求,这个接口可以是内部系统也可以是外部的,然后等到接口返回数据了才能继续其他的业务流程,这就是传统的同步模式。 同步模式虽然简单但缺点也很明显,如果对方服务处理缓慢迟迟未能返回数据,或网络问题导致响应变长,就会阻塞我们调用方的线程,导致我 阅读全文
posted @ 2020-11-18 00:01 Java老K 阅读(919) 评论(0) 推荐(0) 编辑
摘要: ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。 一. 应用场景 ForkJoinPool使用分治算法,用相对少的线程处理大量的任务,将一个大任务一拆 阅读全文
posted @ 2020-11-16 23:14 Java老K 阅读(22534) 评论(0) 推荐(3) 编辑
摘要: java -version 命令大家都用过,大部分就是看下jdk版本或检查下环境变量的设置,但最后一行的信息也挺重要,如下图所示: Server VM表示我们的虚拟机类型,mixed mode表示虚拟机以混合模式工作。 一. 虚拟机 先说下本篇文章的内容都是基于HotSpot虚拟机。 我们熟知的Ja 阅读全文
posted @ 2020-11-12 23:56 Java老K 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 一. CodeCache简介 从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native c 阅读全文
posted @ 2020-11-11 23:07 Java老K 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: JAVA开发中,大部分的性能问题原因并不在于JAVA语言本身,而是我们用这些语言写的程序,所以养成良好的编码习惯非常重要。 下面给大家分享一些日常开发中比较常见的典型案例: 一. 类中的内部方法声明为private 很多同学觉得这个无所谓,写代码时喜欢一个类里的所有方法都是public的(原因大家都 阅读全文
posted @ 2020-11-09 23:40 Java老K 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 线程池大家都很熟悉,无论是平时的业务开发还是框架中间件都会用到,大部分都是基于JDK线程池ThreadPoolExecutor做的封装,比如tomcat的线程池,当然也有单独开发的,但都会牵涉到这几个核心参数的设置:核心线程数,等待队列,最大线程数,拒绝策略等。 先说下我们项目组在使用线程池时踩到的 阅读全文
posted @ 2020-11-08 23:34 Java老K 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 现在大部分公司都有自己完整的一套监控系统,比如美团的CAT,我们公司的监控系统也是基于CAT做的二次开发。一般测试环境或生产环境有问题可以直接使用这些系统查看线程和内存运行情况,分析排查问题。 但对于我们开发人员来说还是有必要了解最原始的排查流程,也就是不借助这些系统,使用最基本的命令解决,毕竟了解 阅读全文
posted @ 2020-11-08 22:46 Java老K 阅读(2311) 评论(0) 推荐(1) 编辑