Java老K

16
获赞数
2
关注数
12
粉丝数
上海
西安电子科技大学 | 计算机科学与技术
IP 属地未知
2020-11-01 加入
浏览 9.2k

十年java老兵,现就职上海某一线互联网大厂,专注java技术,包括多线程并发,RXjava,JVM,Spring,Springboot,DDD,分布式中间件Dubbo,kafka,redis,微服务等,不定期分享面试题和业界最新动态以及人生感悟。

36 声望|新手
java
35
异步编程
16
rxjava
11
reactor
11
spock
8
黄金勋章
暂未获得该勋章
如何获得
白银勋章
暂未获得该勋章
如何获得
1 青铜勋章
个人动态
  • 发布了文章2021-01-08
    如何使用Eclipse内存分析工具定位内存泄露
    打开公司监控系统查看应用各项指标发现JVM中老年代在持续增长(从上次发布10月30号到11月10号的12天内一直在增长, 存在内存泄露迹象)从图中可以看出, 从10月30号发布到11月10号oom期间11天老年代一直在缓慢上涨, 虽然有下降, 但整体趋势是上升的,平均每天泄露约5...
  • 发布了文章2020-12-10
    Spock单元测试框架实战指南十一 - 小结
    前面的几篇文章介绍了Spock的各种语法,和power mock的结合,以及注意事项,这篇做个总结,让大家对Spock有个全面客观的了解Spock优点遵循BDD模式、功能强大、语义规范、可读性好、易于维护、富有表现力更灵活的控制测试行为,专注代码的逻辑测试而不是书写语法上用...
  • 发布了文章2020-12-09
    Spock单元测试框架实战指南十 - 注意事项
    要使用Spock首先需要引入相关依赖,目前使用下来和我们项目兼容的Spock版本是1.3-groovy-2.5,以maven为例(gradle可以参考官网),完整的pom依赖如下:
  • 发布了文章2020-12-08
    Spock单元测试框架实战指南九 - 模拟抽象类方法
    我们平时写单元测试时经常会遇到调用抽象类或父类的方法,这些抽象方法可能是调用底层接口或数据库,需要mock掉,让抽象方法返回一个我们指定的值,以便测试当前代码逻辑的场景。
  • 发布了文章2020-12-06
    Spock单元测试框架实战指南八 - 常用mock封装成基类
    在前面几篇文章讲解Spock结合power mock实现静态方法mock功能时,示例代码里经常会用到LogUtils等工具类的静态方法去记录日志,那我们就可以把LogUtils类的mock代码抽到一个公共类中,然后我们的测试类去继承我们自己实现的公共类
  • 发布了文章2020-12-04
    Spock单元测试框架实战指南七 - 动态Mock
    这段代码的if else分支逻辑主要是依据HttpContextUtils这个工具类的静态方法getCurrentSource()和getCurrentCurrency()的返回值决定流程的
  • 发布了文章2020-12-04
    Spock单元测试框架实战指南六 - 静态方法测试
    前面的文章讲到Spock的单测代码是继承自Specification基类,而Specification又是基于Junit的注解@RunWith()实现的,代码如下:
  • 发布了文章2020-12-02
    Spock单元测试框架实战指南五 - void方法测试
    一般来说无返回值的方法,内部逻辑会修改入参的属性值,比如参数是个对象,那代码里可能会修改它的属性值,虽然没有返回,但还是可以通过校验入参的属性来测试void方法
  • 发布了文章2020-12-01
    Spock单元测试框架实战指南四 - 异常测试
    有些方法需要抛出异常来中断或控制流程,比如参数校验的逻辑: 不能为null,不符合指定的类型,list不能为空等验证,如果校验不通过则抛出checked异常,这个异常一般都是我们封装的业务异常信息,比如下面的业务代码:
  • 发布了文章2020-11-27
    Spock单元测试框架实战指南三-If esle 多分支场景测试
    这样的 if else 嵌套代码因为业务的原因很难避免,如果要测试这样的代码,保证覆盖到每一个分支逻辑的话,使用传统的Junit单元测试代码写起来会很痛苦和繁琐,虽然可以使用Junit的@parametered参数化注解或者dataprovider的方式,但还是不够直观,调试起来也不方便
  • 发布了文章2020-11-26
    Spock单元测试框架实战指南二-mock第三方依赖
    其中userDao是使用spring注入的用户中心服务的实例对象,我们只有拿到了用户中心的返回的users,才能继续下面的逻辑(根据uid筛选用户,DTO和VO转换,邮编、手机号处理等)
  • 发布了文章2020-11-24
    Spock单元测试框架实战指南一Spock是什么?它和JUnit有什么区别?
    这是Spock系列的第一篇文章,整个专辑会介绍Spock的用途,为什么使用Spock?它能给我们带来什么好处?它和JUnit、JMock、Mockito有什么区别?我们平时写单元测试代码的常见问题和痛点,Spock又是如何解决的,Spock的代码怎么编写以及Spock的优势和缺点等内容,让大家...
  • 发布了文章2020-11-19
    一文带你彻底了解Java异步编程
    随着RxJava、Reactor等异步框架的流行,异步编程受到了越来越多的关注,尤其是在IO密集型的业务场景中,相比传统的同步开发模式,异步编程的优势越来越明显。
  • 发布了文章2020-11-17
    Java异步编程指南
    在我们平时开发中或多或少都会遇到需要调用接口来完成一个功能的需求,这个接口可以是内部系统也可以是外部的,然后等到接口返回数据了才能继续其他的业务流程,这就是传统的同步模式。
  • 发布了文章2020-11-16
    线程池ForkJoinPool简介
    ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。
  • 发布了文章2020-11-13
    JVM学习笔记之Client Server端区别
    java -version 命令大家都用过,大部分就是看下jdk版本或检查下环境变量的设置,但最后一行的信息也挺重要,如下图所示:Server VM表示我们的虚拟机类型,mixed mode表示虚拟机以混合模式工作。一. 虚拟机先说下本篇文章的内容都是基于HotSpot虚拟机。我们熟知的Java...
  • 发布了文章2020-11-12
    JVM学习笔记之CodeCache
    从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。
  • 发布了文章2020-11-11
    Java开发规范之性能篇
    对于不需要外部访问的方法改为私有的,不仅仅是因为面向对象的思想,符合数据封装和安全访问原则,还有一个很大的好处就是任何private方法都是隐性的final!
  • 发布了文章2020-11-10
    Java踩坑记系列之线程池
    线程池大家都很熟悉,无论是平时的业务开发还是框架中间件都会用到,大部分都是基于JDK线程池ThreadPoolExecutor做的封装,比如tomcat的线程池,当然也有单独开发的,但都会牵涉到这几个核心参数的设置:核心线程数,等待队列,最大线程数,拒绝策略等。
  • 发布了文章2020-11-09
    Windows环境下如何进行线程Dump分析
    现在大部分公司都有自己完整的一套监控系统,比如美团的CAT,我们公司的监控系统也是基于CAT做的二次开发。一般测试环境或生产环境有问题可以直接使用这些系统查看线程和内存运行情况,分析排查问题。