摘要:
一,AQS原理 lock最常用的类就是ReentrantLock,其底层实现使用的是AbstractQueuedSynchronizer(AQS) 简单来说AQS会把所有的请求线程构成一个CLH队列,当一个线程执行完毕(lock.unlock())时会激活自己的后继节点,但正在执行的线程并不在队列中 阅读全文
摘要:
一,功能背景 领导偶然间问起我们的考核系统使用情况如何,最近考虑下做个活跃用户统计功能 二,功能设计 针对性能上要求实时统计,用户名都为8位数字等特点,拟采用redis方案: 使用bitmap,用户登录的同时,将用户所在的位置为1 三,代码 1,直接上代码 用户登录的功能模块调用该方法,bitmap 阅读全文
摘要:
一,问题描述 接之前一篇博客@schedule定时任务开启两次,使用xml配置解决以后,楼主部署war包上生产遇到另一个问题。 由于楼主公司paas应用是双边部署,异地双活机制,导致每台服务器的定时任务都启动一次。 二,解决方案 想过用数据库乐观锁解决问题,执行定时任务之前去数据库获取锁,其他线程将 阅读全文
摘要:
逻辑架构和存储引擎 自动提交 MySQL 中默认采用的是自动提交(autocommit)模式,如下所示: 在自动提交模式下,如果没有 start transaction 显式地开始一个事务,那么每个 sql 语句都会被当做一个事务执行提交操作。 通过如下方式,可以关闭 autocommit;需要注意 阅读全文
摘要:
1. 时间差函数(TIMESTAMPDIFF)统计考核指标时,需要计算差错影响期数,需使用TIMESTAMPDIFFF计算时间差,预研如下 2. 日期转换计算函数(date_add、date_sub) 阅读全文
摘要:
1,以毫秒计时 2,以纳秒计时 阅读全文
摘要:
一,redis数据结构 1,redis五大对象 redis提供给用户直接访问的对象有五个:字符串对象,列表对象,哈希对象,集合对象,有序集合对象。 2,redis有较高性能的原因 除了直接使用内存的原因以外,基本对象使用多种底层数据结构,且灵活变化是redis高性能的另一个原因 3,底层数据结构 整 阅读全文
摘要:
一,过期删除策略 redis数据库键的过期时间都保存在过期字典中,根据系统时间和存活时间判断是否过期。 redis有三种不同的删除策略: 1,定时删除:实现方式,创建定时器 2,惰性删除:每次获取键时,检查是否过期 3,定期删除:每隔一段时间,对数据库进行一次检查,删除过期键,由算法决定删除多少过期 阅读全文
摘要:
一,错误分析: my.ini 中设定的并发连接数太少或者系统繁忙导致连接数被占满。 连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关。 wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。 解决方式: 打开 阅读全文
摘要:
一,问题描述 最近在用devops流水线工具时,代码经过sonar扫描,总是提示某个服务类缺少构造函数,对private的变量进行初始化。 项目中类中变量初始化使用的是spring的注解@autowired。 二,问题定位 代码中private final static 的变量要放置最上面 底下依次 阅读全文