1. 一个非典型Spring循环依赖的问题分析

    前言 这两天工作遇到了一个挺有意思的Spring循环依赖的问题,但是这个和以往遇到的循环依赖问题都不太一样,隐藏的相当隐蔽,网络上也很少看到有其他人遇到类似的问题。这里权且称他非典型Spring循环依赖问题。但是我相信我肯定不是第一个踩这个坑的,也一定不是最后一个,可能只是因为踩过的人比较少、鲜有记录罢了。因此这里权且记录一下这个坑,方便后人查看。 正如鲁迅(我)说过,“这个世上本没有坑,踩的人多了,也便成了坑”。 循环依赖 典型场景 经常听很多人在Review别人代码的时候有如下…

    Java, SpringBoot阅读全文

  2. IntelliJ常用配置备忘

    前言 最近IntelliJ又由于自己的骚操作给弄崩溃了,导致之前弄的一大波配置又找不到了,十分蛋疼的又要开始重头开始弄环境。很多之前精心搞过的配置又都记不住了,为了防止以后出现这种情况,这里就把我日常用的配置和注意点记一下,免得以后又要重新摸索。尽量持续更新。 安装 安装这块没啥好说的,不过要注意的是,虽然 IntelliJ 有 Community 版,但是毕竟还是少了一些东西的,比如对JavaScript的支持、一些静态检查的支持、Spring框架的整体支持等等。因此还是不要太委屈自己…

    Java, Tools阅读全文

  3. sofa-ark类隔离技术分析调研

    问题痛点 最近维护了一段时间的组件包,在向同事进行推广的时候,经常会听到身边会有类似的抱怨: * 我靠,为啥你们的包带了一大堆乱七八糟的依赖,把我的classpath都给污染的不像个样子了。 * 我靠,你们这个包依赖的xx包的版本跟我们自己依赖的xx包的版本不一样啊,会不会出锅? * 我靠,我这个代码编译的时候没问题啊,为啥一用你们的组件就报一堆的NoSuchMethodError啊。 有时候自己写代码的时候也会遇到一些容易被忽略的问题: * 哎,我看人家引这个包的时候都会exc…

    Java阅读全文

  4. Java运行期的版本控制方案

    前言 前两天我们组负责的一个组件发生了一个与jar包版本号有关的线上bug,最近没啥事情,就顺便分析了一下。 其实是个非常无脑的小bug:commons-lang3包中有一堆@since 3.5的新增方法,我们的组件依赖了3.5版本以上的一个包;业务方依赖了我们的这个组件,同时也直接依赖了一个3.5版本以下的包。在gradle打包的时候,由于老版本的是直接依赖,新版本的是间接依赖,直接依赖优先级高于间接依赖,因此最终采用的是老版本的包。这就导致在运行期调用新方法的时候会报NoSuchMeth…

    Java阅读全文

  5. 工作中遇到的一些坑(2)

    前言 这个礼拜似乎是写了一礼拜的业务代码,没遇到什么太恶心的坑,就是理解业务逻辑费了点功夫。下个礼拜似乎又要开始撸组件撸网页了,现在想想感觉还是写写业务比较舒服,没事可以怼怼产品,给前端找找bug,写完还可以慢慢测;撸组件就比较无聊了,容易出大锅,而且还得求着人家用,用出问题还会被怼。。。不过好处大概就是以后跳槽面试的时候不容易被问死吧。。。 知识&技巧 常用@see和@link注释 写代码的时候经常会遇到一些需要枚举的类型,比如“活动类型”、“数据来源”这类的。但是一般来讲…

    Java阅读全文

  6. 工作中遇到的一些坑(1)

    前言 好快啊,又是一周的轮回,本来打算把本周遇到的问题展开一个一个总结的,但是奈何踩的坑是在有点多,展开来根本没时间搞,索性就搞了这个类似周报的东西。希望从这一周开始,每一周都能坚持下来喽。 由于跟给老大看的周报不同,这个是给俺自己看的,所以成果啥的就不表了,主要表一表自己写的bug跟领悟。就记一些大实话吧,"写者有罪,闻者足戒"。 知识&技巧 while循环的控制逻辑写在循环体内 这句话是同事跟我讲的,领会了下他的意思,大概是,下面的写法二要比写法一好…

    Java阅读全文

  7. 从一个诡异的问题看JVM动态反优化

    前言 前一段时间在做代码性能比较的时候用到了jmh这个工具,原本以为拥有了这个方便的工具就能hold住java微基准测试这个命题。但是事实上,用着用着就发现自己的理解还非常不深入,有很多在测试的时候难以解释的现象。于是查阅了相关资料,才发现这里面的水比我想象要深,趁着记忆还热乎,赶紧记录一下。 动态编译VS静态编译 java作为一种动态编译语言与c/c++这种静态编译语言有本质的不同。静态编译语言是在编译时就已经对代码做好了编译优化(比如C/C++在编译时指定-O1 -O2 -O3参数)…

    Java, Benchmark, JMH阅读全文

  8. 字节数组转字符串技巧以及其JMH性能分析

    前言 前几天在面向 stackoverflow 编程时,遇到了一串有点诡异的代码: private String method1(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte aByte : bytes) { sb.append(Integer.toString((aByte & 0xff) + 0x100, 16).substring…

    Java, Benchmark, JMH阅读全文

  9. 一步一个脚印,向前进

    前言 好久不更新了,前段时间一直忙着毕业这段时期的各种腌臜事:找工作-当咸鱼-做毕设-当咸鱼-毕业旅行-沉迷游戏-搬家-办入职-适应新公司,到现在总算是有大把的时间闲下来做自己想做的事情了,还真是不容易。不过说是没时间,其实更大的可能还是懒吧,懒散了一段时间发现自己经常是提笔忘字,讲话以及做事情的逻辑不知道怎么就变乱了,真可怕。看来还是得重拾码字的习惯,理顺思路,整理逻辑。安顿下来的这段日子过得还算平稳,就想抽个时间把自己人生中第一次求职的经历记录下来, 实习 实习面试,想来也是一年多前…

    Life阅读全文

  10. 主流浏览器图片反防盗链方法总结

    前言 还记得之前写的那个无聊的插件,前一段时间由于豆瓣读书增加了防盗链策略使得我们无法直接引用他们的图片,使得我这个小插件无法工作。本以为是一个很简单的问题,但是没想到这个小问题硬是让我改了五六遍才改好,可以说是非常的蠢了。总结一下自己犯傻的原因,还是由于自己懒得去深入研究,谷歌百度了问题就直接把方案拿来用了,浅尝辄止人云亦云,解决了表面的问题而没有深入的总结。当然,从另外一个方面讲,我也是初步领会到了前端程序员面对要兼容各种浏览器的需求时头有多大了。 问题 问题很简单,就是我希望在自己…

    JavaScript, HTML阅读全文