后端
文章平均质量分 86
jiaowoshangege
这个作者很懒,什么都没留下…
展开
-
MySQL索引及调优回顾
MySQL索引及调优回顾原创 2022-11-17 13:58:09 · 609 阅读 · 1 评论 -
websocket系列基于spring-boot-starter-websocket实现
本篇主要是介绍怎么基于spring-boot-starter-websocket来实现websocket。原创 2022-10-10 16:54:25 · 1341 阅读 · 0 评论 -
几种时间格式化注解方式
时间格式注解说明原创 2022-06-16 18:13:53 · 8724 阅读 · 0 评论 -
Logback配置与运用
Logback配置与运用每个项目都涉及到日志这个模块。存在的意义无非就是两个:记录业务日志,方便后期排查问题以日志上的形式记录业务数据,并将日志文件推送第三方。原创 2022-06-09 16:56:21 · 707 阅读 · 0 评论 -
Spring Cloud Stream 配置说明
本文对spring cloud stream 的相关配置,进行逐一注释说明,作为工具在需要的时候查看使用。配置中的输入(input)输出(output)通道可以换成自己的,详情如下spring: cloud: stream: #实例数量,默认1 instance-count: 1 #实例索引,从0到instanceCount-1,用于分区和使用kafka。在Cloud Foundry中自动设置以匹配应用程序的实例索引。 instance-inde...原创 2022-04-22 09:22:31 · 3649 阅读 · 0 评论 -
布隆过滤器
布隆过滤器缓存穿透大家看下这幅图,用户可能进行了一次条件错误的查询,这时候redis是不存在的,按照常规流程就是去数据库找了,可是这是一次错误的条件查询,数据库当然也不会存在,也不会往redis里面写值,返回给用户一个空,这样的操作一次两次还好,可是次数多了还了得,我放redis本来就是为了挡一挡,减轻数据库的压力,现在redis变成了形同虚设,每次还是去数据库查找了,这个就叫做缓存穿透,相当于redis不存在了,被击穿了,对于这种情况很好解决,我们可以在redis缓存一个空字符串或者特殊.原创 2021-04-07 09:26:30 · 89 阅读 · 0 评论 -
可重入锁
可重入锁,也叫做递归锁,是指在同一个线程在调外层方法获取锁的时候,再进入内层方法会自动获取锁。ReentrantLock 和synchronized 都是 可重入锁。可重入锁的一个好处是可一定程度避免死锁。/** * @author chenhongshan * @date 2020/9/4 */public class LockTest implements Runnable { public synchronized void get(){ System.out原创 2020-09-04 15:54:59 · 170 阅读 · 0 评论 -
基于ZooKeeper实现分布式锁
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥原创 2020-09-04 15:22:02 · 107 阅读 · 0 评论 -
RedisTemplate用SETNX命令实现分布式锁
RedisTemplate用SETNX命令实现分布式锁使用SETNX命令获取分布式锁的步骤:C1和C2线程同时检查时间戳获取锁,执行SETNX命令并都返回0,此时锁仍被C3持有,并且C3已经崩溃C1 DEL锁C1 使用SETNX命令获取锁,并且成功C2 DEL锁C2 使用SETNX命令获取锁,并且成功ERROR : 由于竞态条件,C1和C2都获取到了锁以下面的步骤完全可以避免这种情况发生,看看C4线程如何操作C4使用SETNX命令获取锁C3已经崩溃但是仍然持有锁,所以Redis返回0给C原创 2020-09-04 15:05:44 · 1515 阅读 · 0 评论 -
基于redis的setnx()、get()、getset()方法的分布式锁
使用redis的setnx()、get()、getset()方法,用于分布式锁1. setnx(lockkey, 当前时间+过期超时时间) ,如果返回1,则获取锁成功;如果返回0则没有获取到锁,转向2。 2. get(lockkey)获取值oldExpireTime ,并将这个value值与当前的系统时间进行比较,如果小于当前系统时间,则认为这个锁已经超时,可以允许别的请求重新获取,转向3。 3. 计算newExpireTime=当前时间+过期超时时间,然后getset(lockkey, new原创 2020-09-04 15:02:36 · 169 阅读 · 0 评论 -
Docker+Jenkins+GitLab+Maven+SpringBoot自动化构建镜像与部署
1、前言与初衷本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲。 本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署(DevOps)应用工程,适合SpringCloud部署。 初衷想法:在学习过程中遇到比较有趣的问题、然而花了点心血和时间去整理,然而进行梳理出来一份文章比较完整有知识体系的DevOps自动化构建与部署工原创 2020-07-13 15:00:11 · 2363 阅读 · 0 评论