https://www.bilibili.com/video/BV13maZzJErs
Java开发者肯定都用过Redis做分布式锁,简单来说就是利用Redis的高性能,Redis加锁(插入一条数据),如果数据存在就说明已经被其它线程锁了,业务执行完毕后就释放锁(删除数据)。
但实际使用过程中,如果并发稍大,还是会存在一些问题,那么基于这些问题来学习分布式锁。有一个很好的开源工具 Redisson
用它来实现分布式锁可以有效的解决我们自定义锁的问题。
https://www.bilibili.com/video/BV13maZzJErs
Java开发者肯定都用过Redis做分布式锁,简单来说就是利用Redis的高性能,Redis加锁(插入一条数据),如果数据存在就说明已经被其它线程锁了,业务执行完毕后就释放锁(删除数据)。
但实际使用过程中,如果并发稍大,还是会存在一些问题,那么基于这些问题来学习分布式锁。有一个很好的开源工具 Redisson
用它来实现分布式锁可以有效的解决我们自定义锁的问题。
https://www.bilibili.com/video/BV19EapznEtX
https://www.bilibili.com/video/BV1ZUedzdEVr
昨天晚上系统从阿里云迁移到腾讯云,今天就出现MQ消息堆积。在已往的认知里,消息堆积基本上是消费者不给力,但在监控上看发现生产者消息很少,每秒也就几条,没理由消费者忙不过来。
但基于认知,还是第一时间去增加了消费者(把pod从3个节点加到了5个,队列始终是3个),过了几个小时又出现了消息堆积,这时候我们犯了第一个错误。当某个消费组的消费者数量大于队列数的时候,增加消费者其实是没用的。 可参看 RocketMQ 消费关系图
https://www.bilibili.com/video/BV163YyzbE9g
ConcurrentHashMap
之所以是安全的map
就是因为它在put
的时候进行了锁处理,下面是整个put的过程,基本上都写了注释,看完之后可以帮助你更好的理解它的原理。
https://www.bilibili.com/video/BV1RqNRz5Eo6
Jenkins是一款常见的构建管理工具,配置好后操作也很简单,只需去控制台找到对应的项目,再输入分支名即可
如果每次只发个位数的项目到也还好,一个个进去点嘛。但如果一次要发几十个项目呢?这就很费时费力了。好在Jenkins提供了rest接口,可以通过接口来进行批量构建
https://www.bilibili.com/video/BV1WaNbzQEoZ
gitlab是一个常用的代码存储仓库,通常都是使用各种工具(IDEA等)创建分支,再去gitlab页面去创建/合并MR。
开发流程分支几乎都是固定的,如 feature > dev > master
。现在开发几乎都是微服务,比如我们两周发一次版本,一次10-40个服务左右,在文档里面已经写好了每个MR的地址,但依旧需要每个人去合并MR,再创建 dev > master
的MR,再合一遍,这里面的步骤是很长的。
https://www.bilibili.com/video/BV1FH76zGEba
上一篇SpringAI入门搭建MCP,学习了一些AI相关的知识,今天在这些知识的基础之上,来做一个小小的应用:搭建一个套餐推荐的Agent。
https://www.bilibili.com/video/BV1WYjgzbEcA
MCP已经火了很久,最近公司也在考虑用MCP来完成一些业务功能,借此机会来学习一下SpingAI的MCP。这块的学习和以往的有很大不同,以往我们总是更注重实践,AI相对来说是个新事物,且不确定,所以它的理论要强于实践。
为了更好的使用Cursor的AI编程效果,也为了让从IDEA切换到Cursor更方便,今天继续在Curosr里面进行一些配置
快捷键汇总 : 请先安装插件 IntelliJ IDEA Keybindings
command + b
command + j
command + i
command + .
command + /
shift + command + j
command + ,
option + command + b
comand + L
双击shift + #
双击shift + @
command + 鼠标左键
https://www.bilibili.com/video/BV1WRX8YAEYi
看过很多使用Cursor,一天完成一个应用的文章或视频,前些日子脑子刚好有一个想法——搭建一个点餐管理系统,便用Cursor完成了前后端的开发。
具体功能可以看视频里面的演示。也算是从0到1完成了一个小的项目构建,来说说对它的看法。