自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 FactoryBean的大致流程图

2021-07-11 20:56:21 110 1

原创 spring循环依赖大致流程图

@TOC

2021-07-10 15:33:58 89

原创 JUC之读写锁

JUC之读写锁前言写锁exclusiveCount(acquires)前言很多时候,我们使用重入锁,是为了锁住共有资源保证每次只有一个线程进行修改,但是我们很多时候只是去读这些资源,如果每次都用reentrantLock锁的话,反而会降低吞吐量。锁的细粒度可以增加吞吐量,读写锁通过16位低位去写锁,高16位去读锁还是挺有意思的。写锁在进行查看源码的时候先进行思考一下,写锁 和ReentrantLock 感觉差不多的底层实现应该是差不多的。也分公平锁,和非公平锁。下面看看写锁的源码:prote

2021-05-05 22:33:24 226

原创 juc之condition

juc之condition前言conditionawait()前言之前学synchronized的时候,我们肯定就学了Object类上面的wait 和 notify,notifyAll方法,这两个方法呢,是需要获取了对象锁才能进行使用的,因为如果线程都没有获取到资源,那么执行wait方法又还有什么意义呢?没获取锁,线程本身就在等待。也由此可见,wait 和notify都要依赖于获取到了某个对象的锁才能进行操作。这也极大的限制了灵活性,而lock锁不会有这个缺点,它可以构建多个等待队列conditi

2021-04-22 21:11:42 139

原创 JUC之ReentrantLock

JUC之ReentrantLock前言NonfairSyncFairSync前言学习juc系列的可重入锁之前,可以先去看看aqs的实现,这个很关键,毕竟aqs是核心。传送门:也是我写的嘿嘿嘿,写的很详细学习了 synchronized的之后,面试肯定还会问到ReentrantLock// 可以看到ReentrantLock这个类的构造函数 对FairSync,或者是NonfairSync这个类进行了一下初始化 public ReentrantLock() { sync = new

2021-04-17 21:53:34 52

原创 JUC之AQS

JUC之AQS前言前言还记得刚学到AQS的时候,每天上完班回到家看书,看帖子差不多看了一个多星期才差不多看完。当时就是各种不理解,记不住。比如说。。。 今天再一次开篇帖子讲AQS,算是温故而知新了。刚开始我们学synchronized,但是synchronized 少了很多锁的特性,比如说:取锁与释放锁的可操作性,可中断、超时获取锁,而且进入到重量级锁的时候,也会效率很慢。后面就学到了Lock锁.里面有一个组件,很多锁都用到了该组件。那个组件就是AQSAbstractQueuedSynchroni

2021-04-17 16:47:16 64

转载 转载一篇CLH队列的讲解,整挺好的。

CLH队列讲解

2021-04-11 19:04:28 161

原创 java之synchronized讲解

java之synchronized讲解前言1.使用java对象头Mark Wordmonitor自旋锁适应自旋锁锁消除锁粗化偏向锁轻量级锁重量级锁前言学习java并发,如果保证共享数据的数据安全问题,最开始我们进行学习的时候肯定是讲到了synchronized。java 1.6版本后对synchronized进行了升级,就synchronized进行一个讲解1.使用1.普通同步方法,锁是当前实例对象;2.静态同步方法,锁是当前类的class对象;3.同步方法块,锁是括号里面的对象首先我写了一段

2021-04-11 10:47:10 105

原创 java之ThreadLocal

java之ThreadLocal前言前言多线程可以充分利用cpu的同时,也带来了很多问题,比如说共享变量的问题,有很多情况下,多个线程想持有自己的局部变量,或者说是某些变量需要与线程所关联,java提供了一个类叫做ThreadLoacl那么这个类有哪些作用呢?具体在哪里提现出来了呢?比如spring的获取数据库连接的时候,spring中的很多bean都是单例的,是非状态的,而数据库连接是一种有状态的对象,所以spring一定在创建出connection之后在threadlocal中保存了它其中有一

2021-04-09 17:50:48 118

转载 java设计模式-建造者模式的讲解

java设计模式-建造者模式的讲解1.简介其实网上讲设计模式的帖子已经很多了,为什么我还要写呢。主要是让自己加深一下自己的理解和记忆。前言建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。用户在不知道建造的细节和过程就可以构造出对象。建造者模式,顾名思义就是像建筑一样,一层一层的建造出产品。1.简介建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是

2021-03-21 17:04:08 98

原创 redis主从复制实践讲解

redis主从复制实践讲解1.主从最基本的配置就是一主二从2.全量复制,增量复制讲解注意点如果是想要在一台机器上面开多个端口去进行一个主从复制的测试以下的命令需要进行一个修改,最好进行以下配置的修改## 更改端口port 6380## 是否已守护进程的方式运行daemonize yes## 如果上面配置的是yes 则下面的这个也需要进行一个修改pidfile /var/run/redis_6380.pid## logfile也进行一个修改 如果到时候运行时提示权限不够 加上sudu即可l

2021-03-17 22:20:13 87

原创 redis 订阅发布讲解

redis 订阅发布讲解redis提供的命令应用场景结构原理解析订阅通道结构解析发布信息到频道结构解析发布订阅模式的缺陷Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发

2021-03-17 14:11:09 107

转载 redis 持久化配置AOF讲解

redis AOF原理讲解1.什么是AOF1.什么是AOF它也是Redis持久化的重要手段之一,aof-》Append Only File,只追加文件,也就是每次处理完请求命令后都会将此命令追加到aof文件的末尾。而RDB是压缩成二进制等时机开子进程去干这件事,rdb是基于全量的追加,是开子线程去将数据先写入到一个临时文件中去,待持久化完成后,再用这个临时文件去替代之前的dump.rdb文件优点:数据更加的可靠,因为是每次修改了值就会进行一个保存...

2021-03-17 10:55:30 198

转载 redis rdb持久化机制讲解

Redis rdb持久化机制讲解Redis rdb的实现原理Redis rdb的实现原理

2021-03-16 21:27:49 102

原创 redis 事务讲解

redis 事务讲解Redis事务的概念Redis的事务命令Redis没有隔离级别的概念 也没有原子性的概念Redis事务的概念Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。Redis的事务命令#Redis Multi 命令用于标记一个事务块的开始。#事务块内的多条

2021-03-15 12:32:53 78 1

原创 redis配置文件参数讲解

redis配置文件参数讲解1.文件大小1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes2 网络## 监听两个特定的ipv4地址#bind 192.168.1.100 10.0.0.1 # listens on two s

2021-03-14 21:48:34 583

原创 redis高级数据类型的具体应用场景

redis高级数据类型的具体应用场景bitmap的应用场景hyperloglogs应用场景geospatial 的使用场景bitmap的应用场景具体涉及到是否的需求模块 可以往bitmap上面去靠1.用来实现签到功能使用时间作为具体的key 用户id作为offset value作为是否签到也可以用bitpos 实现查看当天谁第一个签到的功能2.统计活跃用户比如说很多app不是可以统计日活跃量为多少嘛。可以这样做,用年份加日月作为key 用户id作为offset 来实现是否3.查看用

2021-03-14 11:31:32 97

原创 关于redis数据类型操作的应用场景及时间复杂度

关于redis数据类型操作的应用场景及时间复杂度String类型命令时间复杂度和应用场景string类型高时间复杂度的命令汇总List类型的命令的时间复杂度和应用场景String类型命令时间复杂度和应用场景set key value 时间复杂度: O(1)SETNX key value 时间复杂度: O(1)SetNX用来实现分布式锁SETEX key seconds value 时间复杂度: O(1)PSETEX key milliseconds value 时间复杂度:

2021-03-12 11:57:39 225

原创 redis bitmaps,geospatial,hyperloglogs基本命令

redis三种特殊类型命令geospatial 的基本命令hyperloglogs的基本命令geospatial 主要是对地理位置进行操作geospatial 的基本命令## 添加数据127.0.0.1:6379> GEOADD china::city 116.39 39.91 beijing(integer) 1127.0.0.1:6379> GEOADD china::city 112.98 28.25 changsha(integer) 1127.0.0.1:6379&gt

2021-03-10 13:30:47 107

原创 redis常用数据结构的操作命令

redis 常用数据结构的命令基本命令String类型的命令List类型的命令SET类型的基本命令zset类型的基本命令HASH类型的基本命令总结以下所有的命令都是我手敲过的,后面会另起文章对特殊的数据类型,以及一些操作的优弊性进行讲解。基本命令## 查询所有的键,* 是所有通配符127.0.0.1:6379> keys *(empty array)127.0.0.1:6379> keys *(empty array)## 清空当前库中所有的键127.0.0.1:6379&gt

2021-03-07 20:31:41 267

原创 redis-benchmark 讲解

redis-benchmark 讲解redis 自带测试性能的工具,benchmark其所在的位置 一般在/usr/local/bin目录下面参数列表下面 我们对本地的redis服务进行一个测试我们模拟了100个并发连接数,请求数为10w进行测试命令为redis-benchmark -h localhost -p 6379 -c 100 -n 100000 ##代表着有10w个请求 完成时间在1.12秒内完成 100000 requests completed in 1.12 s

2021-03-06 17:16:49 597

转载 TCP协议的三次握手和四次握手

TCP协议的三次握手和四次握手讲解

2021-03-05 13:38:23 105 1

转载 mysql事务日志undo log 和redo log

大概的讲一下mysql的事务日志undo log 和 redo log参考的大佬的帖子redo log的基本概念为什么需要经过OS bufferredo log的格式日志刷盘的规则LSN详细分析innodb的恢复行为和redo log有关的几个变量undo log的基本概念delete 和 update的内部操作机制binlog和事务日志的先后顺序及group commit参考的大佬的帖子讲undo log 和redo log的讲的很详细innodb事务日志包括redo log和undo log。re

2021-03-03 21:58:32 159

原创 基于canal中间件对redis缓存进行处理

使用mac进行基于cancal中间件对redis缓存进行处理问题点由于我是安装的5.8版本以上的mysql,并没有my.cnf文件。于是需要自己去创建一个文件取各个my.cnf配置文件的先后顺序是:/etc/my.cnf/etc/mysql/my.cnf/usr/local/mysql/etc/my.cnf~/.my.cnf我是直接配置在/etc环境下面,配置文件如下,配置好了之后配置文件重点注意log-bin=mysql-bin #添加这一行就okbinlog

2021-02-28 13:36:58 763 3

原创 缓存一致性

如何实现缓存一致性面试须知问题产生的来源文章的参考链接目前主要的解决方法先删除缓存,再更新数据库先更新数据库,再删除缓存总结问题产生的来源分布式环境和高并发环境都会导致缓存的不一致性,主要由于网络环境的复杂性及延时性导致。文章的参考链接大佬的帖子目前主要的解决方法先删除缓存,再更新数据库比如A线程,先删除了缓存,但是还没有更新数据库。然后B线程这个时候却进行查询,因为缓存中没有查到,然后就去查询数据库的值,并将其写入了缓存,然后A线程这个时候却写入了数据库,那么就会导致缓存不一致的问题。1.

2021-02-27 16:03:06 64

原创 2020/06/01日准备开始在csdn博客上记录一下自己学习的日常了

这是我的第一篇文章写这个博客纯粹只是为了记录一下自己的学习心得,当你撸了代码的时候 得出一些结论的时候,既希望这些结论可以有个记录,也希望自己能为中国的IT行业贡献出自己一点点的力量。...

2020-06-01 13:34:39 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除