背景

缓存数据库双写一致性一直是面试的一个高频问题,网上关于这个问题的文章也非常多,大家的观点都不一致。这几天在看了十几篇文章后,再加上一些自己的思考,决定写下来供大家一起讨论。

双写缓存一致性通常指的是1份数据要往缓存(Redis)和数据库(MySQL)里写,本质就是2个写的操作不是原子性的。因此我们可以从下面2个角度去思考

  1. 在无法达到原子性的前提下,哪一步操作失败危害最低?在高并发下的情况哪一种又会更好?
  2. 让2个写的操作原子性

下面我们分别展开

阅读全文 »

背景

今天我们来聊聊建造者模式,对于建造者模式的理论和一些描述代码网上已经有非常多的文章了,在这里也就不重复赘述了,所以今天来聊聊不一样的。
Lombok想必大家都听说过,就是通过注解,在编译期间修改语法树,最后javac再将修改后的语法树编译成class文件。
Lombok有一个@Builder注解,其作用是为添加了该注解的类生成建造者模式的api,例如有以下类

阅读全文 »

背景

最近项目中用到了Elasticsearch,需要在SpringBoot项目上配置,网上找了一圈发现都是使用ElasticsearchTemplate操作,官方最新的推荐是使用
ElasticsearchRestTemplate,基于HTTP协议与es交互。于是各种查资料,踩坑,在这里把一步步配置的过程记录一下。

阅读全文 »

背景

最近手里一个项目用到了layui,遇到了一个需求,上传文件的时候需要显示进度条,但是layui的上传模块没有提供进度条回调

阅读全文 »

背景

最近一直在做自己的代码生成器项目,遇到一个需求,需要把线上运行Jar包里resources文件夹下的某些文件夹按照原本的文件结构,复制到Jar包外的另一处位置。

阅读全文 »

场景

昨天线上的MySQL评测机的rabbitMQ消息队列时不时就会出现消息堆积的现象,影响了正常学生的提交,这个问题比较紧急,因此马上就着手排查。

排查

首先检查是否是rabbitMQ本身的问题,进入rabbitMQ的管理页面,发现一切正常,排除。

然后就怀疑是否消费者不消化消息了,这里消费者是SQL评测机,是在k8s集群上运行的一个容器,通过kubectl exec -it进入容器后,我们想到了用阿里巴巴的arthas工具,通过trace方法追踪阻塞原因,
在经过几个小时的trace后,终于找到执行慢的方法是在JdbcTemplate.execute(),卡在了执行sql语句的地方,于是我们怀疑是不是MySQL卡住了。

阅读全文 »

本文为个人安装并配置Manjaro系统的指南,可供后人安装学习指导用

阅读全文 »

fzf

fzf是一个模糊搜索文件/文件夹的命令行工具,通过标准输入传入的内容,在交互式窗口输入搜索的关键字,即可高亮显示符合的文件名,用法如下

1
find . -name "*.py" | fzf
阅读全文 »

背景

最近业务经常需要针对微信公众号开发,比如处理用户关注公众号事件,微信网页扫码登录及绑定帐号等。在开发过程中遇到许多问题,搜索了许多前人的文章,加上自己开发过程中的一些思考,特此来做个总结。

阅读全文 »
0%