
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
背景使用@SchedulerLock可以实现比较轻量级的简单的定时任务,也可以实现分布式锁,那具体的原理是啥?一探究竟不熟悉的同学可以先看一下用法:https://www.baeldung.com/shedlock-spring大概就是定义一个数据表注意这里的name是primary key,是不可重复的。利用了primary key的这个特性,实现了锁的抢占。细节下面会介绍然后加注解实现:看源码
规则引擎:golang: cel-go参考:gohttps://github.com/google/cel-spec/blob/master/doc/langdef.md
参考核心点for range的时候index和value每次都是同一个空间,然后把相应的数据拷进来,所以如果取地址的话用于都是同一个地址codefunc TestForRange(t *testing.T) {slice := []int{0, 1, 2, 3}myMap := make(map[int]*int)for index, value := range slice {fmt.Print
深入了解接口参考接口的本质是引入一个中间层,上游调的时候就直接调接口就行,而不需要关系具体的实现,简单的例子:定义一个phone interface里面有个call 方法那么定义一个struct:nokiephone实现了call 方法就认为nokiaphone实现了接口看下实战一般会怎么使用呢假设一个engine的执行流程是Match -> load -> modify然后需要根据请
需求做一个展示用户信息的页面,有一个users表,里面该有的信息都有。性能要求数据量30亿。页面必选条件:性别(男/女), 昵称前缀, 年龄。查询条件一定会带上这三个条件。每页展现10条记录。大翻页需求,如查第80w页。尽可能的高性能按注册时间倒序展现设计思路没有标准答案,可以考虑各种方案,大家一起来讨论好的解决方案~分表方式怎么分表呢?用出生时间分表每1年建一个表...
背景如何用redis实现分布式锁参考https://redis.io/commands/setnx其实redis官网直接就有介绍。注意1、Redlock算法里不推介以下做法;Redlock算法实现起来只是稍微难一丢丢,但是提供了更好的保证,以及容错能力。2、但是我们还是介绍一下这个老办法。3、假设是单实例的,2.6.12版本开始,可能更简单地实现锁,相当于这里讨论的,使用set命令获取锁,再加上简
需求做一个展示用户信息的页面,有一个users表,里面该有的信息都有。性能要求数据量30亿。页面必选条件:性别(男/女), 昵称前缀, 年龄。查询条件一定会带上这三个条件。每页展现10条记录。大翻页需求,如查第80w页。尽可能的高性能按注册时间倒序展现设计思路没有标准答案,可以考虑各种方案,大家一起来讨论好的解决方案~分表方式怎么分表呢?用出生时间分表每1年建一个表...
背景使用tk.mybatis,原来线上用的uuid主键,业务需求新增一个自增的索引列之后,调用insert插入方法,会将传入的对象的id回显;期望的是回显主键uuid,但是实际上回显的是自增id参考作者的文档https://github.com/mybatis-book/book/issues/45单步调试从insert开始一步一步地往里走应该就是这个后置处理的时候会回写id回头看发现是这里产生的
背景反复阅读sentinel的官方文档,发现:1、默认情况下sentinel的限流规则是写在内存里的,一旦重启,规则就会丢失2、限流规则的持久化,提供了以下几个推荐的方式,主要分为推和拉模式:公司一般不会直接暴露redis、ZooKeeper等给业务同学使用,看了下redis的demo是需要输入用户名密码等,无法与公司的系统融合再考虑到使用mysql相对比较简单,容易理解,于是选择使用拉模式定时从
问题描述Nginx访问日志文件内容如下:10.9.40.134 - - [01/Aug/2016:06:29:42 +0800] "POST / HTTP/1.1" 302 0 "-" "python-requests/2.4.3 CPython/2.7.9 Linux/3.16.0-4-amd64"10.9.40.134 - - [01/Aug/2016:06:29:42 +0800] "GET







