摘要:
分布式系统的流量防卫兵 Sentinel 基本概念 资源 资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。 只要通过 Sentinel 阅读全文
摘要:
场景 在使用 SpringBoot 的过程中发现打包出来的 Jar 是一个 Fat Jar,里面包含了所有项目依赖的第三方 Jar,这就导致在部署的时候十分不方便,动辄 100M 左右的项目实在难以快速部署。 解决方案 由于打包出来的 Jar 绝大部分都由项目依赖的第三方 Jar 组成,所以只要将这 阅读全文
摘要:
最近在实现一个日志功能的时候需要对比两条数据前后的差异,对比的数据是两个 json 类型。想做一个类似于 git 对比差异的一个窗口,左边是旧数据,右边是新数据。 然后可以通过不同的颜色,比如绿色是新增的,红色是删除的等等的方式来展示两个数据的异同点。于是乎寻找到一个 Google 的开源项目:di 阅读全文
摘要:
在使用 Spring 框架进行项目开发的时候,往往会遇到事务不生效的问题,这里总结下常见的几种情况,避免以后入坑: 1.如果使用的是 Spring 代理模式的事务,只能用于 public 的方法上,否则事务不会生效。 2.如果在 Service 内部的 A 调用 B,如果 A、B 方法都没有添加事务 阅读全文
摘要:
背景 我们编写后端代码的时候往往伴随着很多的参数校验,比如 mobile 字段必须接收一个有效的手机号码,sort 只能接收指定的参数进行排序等。 如果在 Controller 层一个个参数校验的话会显得很混乱,也伴随着大量的重复的代码。 我们可以使用 Hibernate Validator 在做这 阅读全文
摘要:
背景 项目中往往需要发送短信、邮件、微信消息等,这类功能往往都是读取 properties 中的配置信息,然后通过各种 sdk 进行发送。之前我都是为每种功能编写一个静态 Util 然后直接调用。 这样的方式简单,直接。缺点也很明显,不符合各种范式,不能开闭,没有解耦,类的职责太多等等。 最近看到一 阅读全文
摘要:
GoAccess 是一个免费的(由MIT许可)且开源的实时 Web 日志分析器和交互式查看器,可在 *nix 系统的终端中或通过浏览器运行。 具体功能可以到 https://goaccess.io 查看。这里就不再赘述。 实战 -- 简单分析 Nginx 日志 先上命令 goaccess /usr/ 阅读全文
摘要:
@Component public class RedisUtils { private final StringRedisTemplate redisTemplate; @Autowired public RedisUtils(StringRedisTemplate redisTemplate) 阅读全文
摘要:
public class ThreadLocalUtil<T> { private static final ThreadLocal<Map<String, Object>> threadLocal = new ThreadLocal() { @Override protected Map<Stri 阅读全文
摘要:
介绍 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。 缓存和ConcurrentMap有点相似,但还是有所区别。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的元素,直到它们被从缓存当中手动移除。 但是,Caffeine的缓存Cache 通常会被 阅读全文