自定义博客皮肤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)
  • 资源 (5)
  • 收藏
  • 关注

原创 19、内存模型

1、内存统计查看内存:127.0.0.1:6379> info memory# Memoryused_memory:689408used_memory_human:673.25Kused_memory_rss:652472used_memory_rss_human:637.18Kused_memory_peak:766384used_memory_peak_human:748.42Ktotal_system_memory:0total_system_memory_human:0B

2020-10-21 15:22:04 206

原创 18、客户端协议RESP

RESP(REdis Serialization Protocol,redis序列化协议)语法:CRLF代表\r\n*<参数数量> CRLF$<参数1的字节数量> CRLF<参数1> CRLF...$<参数N的字节数量> CRLF<参数N> CRLF  示例:set hello world  客户端会将set hello world封装成*3\r\n$3\r\nset$5\r\nhello\r\n$5\r\nworld\r\

2020-10-21 13:47:44 138

原创 17、慢日志查询

相关参数  slowlog-log-slower-than:执行时间超过微秒(1秒=1000毫秒=1000000微秒),命令请求记录到日志上,默认10000(10毫秒)  slowlog-max-len:日志长度,默认128命令  slowlog get [n]:获取慢查询日志,n指定条数  示例:1) (integer) 6652) (integer) 14567184003) (integer) 120064) 1) "SETEX"2) "video_info_200"3) "30

2020-10-21 12:00:18 126

原创 16、sort排序

sort <key> [asc] [desc]:根据指定key的值排序,key的值只能是数字示例:127.0.0.1:6379> rpush numbers 5 3 4(integer) 3127.0.0.1:6379> sort numbers1) "3"2) "4"3) "5"sort <key> [alpha] [asc] [desc]:根据指定key的值排序,key的值可以是数字或字母示例:127.0.0.1:6379> sadd l

2020-10-21 11:57:22 345

原创 16、LUA

  redis服务器创建了一个伪客户端用来执行lua命令,lua_scripts字典用来保存lua脚本命令:  eval <脚本内容> <key个数> [key列表] [参数列表]:执行指定的脚本  示例:127.0.0.1:6379> eval 'return "hello " .. KEYS[1] .. ARGV[1]' 1 redis world"hello redisworld"  evalsha <校验和> <key个数> [ke

2020-10-21 11:53:10 122

原创 15、事务

语法multi命令1…命令Nexec或者discard示例:127.0.0.1:6379> multiOK127.0.0.1:6379> set name valueQUEUED127.0.0.1:6379> get nameQUEUED127.0.0.1:6379> exec1) OK2) "value"事务队列当客户端以事务状态运行时,除了exec和discard命令,其他的命令都会保存在redisClient/mstate里typedef st

2020-10-21 11:42:30 97

原创 14、发布与订阅

订阅:subscribe news.sport news取消订阅:unsubscribe news.sport发布:publish news.sport hello模式订阅:psubscribe news.*取消模式订阅:punsubscribe news.*查看已订阅的频道:pubsub channels [pattern]查看指定频道的订阅数:pubsub numsub [channel…]查看指定频道的模式订阅数:pubsub numpat [channel…]...

2020-10-21 11:30:26 67

原创 13、集群

启动集群  修改配置文件,设置cluster-enabled yes命令cluster info:查看集群信息cluster nodes:查看集群节点cluster meet ip port:关联节点到集群中cluster addslots <slot> ...:分配槽cluster keyslot <key>:计算key所在槽cluster getkeysinslot <slot> <count>:返回指定槽的count数据库键cluste

2020-10-21 10:53:31 91

原创 11、哨兵sentinel

Sentinel 命令  PING :返回 PONG 。  SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态。  SENTINEL slaves :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。  SENTINEL get-master-addr-by-name : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP 地址和

2020-10-20 16:42:22 338

原创 10、主从服务

复制过程  1、从服务器发送psync命令给主服务器,如果是第一次进行主从复制,那么发送psync ? -1命令,否则会发送psync 命令  2、主服务收到psync命令后,根据发送来的命令判断是完整同步还是部分同步,如果是完整同步,执行bgsave命令,后台会生成一个RDB文件,同时返回+FULLRESYNC 给从服务器,并且用一个缓冲区记录从现在开始所有的写命令。如果是部分同步,返回+CONTINUE给客户端标识进行部分同步操作。  3、从服务器将主服务发送的RDB文件或者复制挤压缓冲区的谢

2020-10-19 18:29:32 364

原创 9、服务器

serverCron函数  redis服务器中的serverCron函数默认每100ms执行一次(通过hz属性设置)更新服务器缓存时间  redis服务器中有不少地方获取当前时间,而每获取一次都要执行一次系统调用,为了减少调用次数,服务状态中的unixtime和mstime被用作当前时间的缓存,这两个时间会以每100ms的频率更新一次更新LRU时钟  redisServer.lruclock,保存了服务器的lru时钟,默认每10秒更新一次,redisClient.lru保存了最后一次命令的访问时间

2020-10-19 17:33:49 76

原创 8、客户端

客户端属性:  套接字描述符: redisClient.fd属性值可以是-1或者是大于-1的整数    伪客户端的fd属性值是-1,伪客户端处理的命令请求来源于载入AOF文件或者lua脚本,而不是网络,所以这种客户端不需要套接字连接,自然也不需要记录套接字描述符。    普通客户端的fd属性大于-1,因为它要通过套接字来于服务器进行通信,所有服务器会用fd属性来记录客户端套接字的描述符  输入缓冲区:redisClient.querybuf,用来保存客户端的请求命令命令参数:redisCilent

2020-10-19 17:29:00 116

原创 7、事件

redis服务器是一个事件驱动程序,服务器需要处理以下两种事件  1、文件事件:redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象,服务器和客户端的通信会产生相应的事件,服务器就是通过监听并处理这些事件来完成一系列网络通信操作。  2、时间事件:redis服务器的一些操作(如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件  redis基于Reactor模式开发了自己的网络事件处理器,这个处理器被称为文件事件处理器。

2020-10-19 17:21:24 119

原创 6、redis持久化之AOF

简介  AOF持久化功能的实现可以分为命令追加(append),文件写入,文件同步(sync)命令追加  当AOF功能打开时,服务器执行完一个写命令后,会以协议格式将执行的写命令追加到服务器状态的aof_buf缓冲区末尾AOF持久化的行为  通过配置文件中的appendfsync配置,取值如下  always:写入一个命令调用一次fdatasync  everysec:每隔一秒调用fdatasync,将缓冲区的命令写入磁盘中  no:由操作系统决定何时将aof_buf内容写入aof文件中,服

2020-10-19 17:16:33 91

原创 5、redis持久化之RDB

手动保存rdb持久化有两个命令,save和bgsave,save是线程阻塞的,当执行save的时候,服务器不能执行其他命令,bgsave非阻塞的,它会生成一个子进程,由它去执行创建rdb文件在执bgsave期间,如果执行save,bgsave或者bgrewriteaof命令,save和bgsave会被拒绝,bgrewriteaof会等到bgsave执行结束之后再去执行。如果bgrewriteaof命令正在执行,那么客户端发送的bgsave命令会被拒绝。自动间隔保存可以通过配置文件进行设置,默认是

2020-10-19 17:12:46 125

原创 4、redis的过期策略以及淘汰策略

过期键的删除策略,redis服务器使用的是惰性删除和定期删除  1、定时删除,在设置键过期的同时,创建一个定时器,让键在过期时间来临之时,删除键  2、惰性删除,每次从数据库获取键的时候再去判断键是否过期  3、定期删除,每隔一段时间程序就对数据库进行一次检查,删除过期键redis每隔100ms检查是否有过期的键,如果有就删除,每次检查会随机抽取key进行检查,可以通过配置文件属性hz设置,默认是10,即100ms检查一次。rdb、AOF和复制功能对过期键的处理  rdb:如果服务器是主服务器,

2020-10-19 17:10:53 57

原创 3、redis之数据库

数据库的数量通过database命令设置或在配置文件中设置,默认16读写键空间时的维护1、在读取或写入一个键时,服务器会根据键是否存在来更新服务器的键命中次数和不命中次数,可以通过info stats命令查看2、在读取一个键值,服务器会更新键的lru属性3、如果服务器在读取一个键时,如果这个键已经过期,会先删除这个键,再继续余下操作4、如果有客户端对某个键进行WATCH操作,那么服务器在对watch的键进行修改之后,会对这个键标记为脏(dirty),从而让事务程序注意到这个键已经被修改5、如果服

2020-10-19 17:09:45 104

原创 2、redis之对象命令

  TTL(time to live):生存时间  scan实现对key的非阻塞查找,它是基于游标的迭代器,每次查找都要带上上一次返回的游标作为游标参数。语法:SCAN cursor [MATCH pattern] [COUNT count] The default COUNT value is 10.1、自动过期   persist(key):删除key的过期时间  ttl:获得一个key的剩余过期时间(s)  pttl:获得一个key的活动时间(ms),返回-2:key不存在,-1:key

2020-10-19 17:09:01 268

原创 1、redis数据对象及对应的编码格式

1、String字符串对象字符串对象的编码是int、raw和embstr。如果一个字符串对象保存的是整数值,那么encoding是int,如果保存的是字符串值,并且长度大于32个字节,那么encoding是raw,否则是embstr2、list列表对象列表对象的编码是ziplist和linkedlist。使用ziplist的条件(可以通过命令修改)1、列表对象保存的所有字符串长度都小于64字节2、元素数量小于512个3、hash哈希对象哈希对象的编码可以是ziplist和hashtable

2020-10-19 16:56:05 428

原创 线程池--ThreadPoolExecutor

简单示例 @Test public void test1() { ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(2); ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2, 4, 10, TimeUnit.MINUTES, queue, new CallerRunsPolicy()); for (int i = .

2020-10-15 16:50:01 96

原创 synchronized锁升级过程

synchronized的介绍  synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性,synchronized用的锁存在Java对象头里,Java对象头里的Mark Word默认存储对象的HashCode、分代年龄和锁标记位。在运行期间,Mark Word里存储的数据会随着锁标志位的变化而变化。64位JVM的Mark Word可能变化存储为以下5种数据:锁的状态  优先级从低到高,无锁状态–>偏向锁状态–>轻

2020-10-15 16:28:02 184 1

转载 分布式事务解决方案

数据库事务  在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到。但是即使如此,可能对于一些细节问题,很多人仍然不清楚。比如很多人都知道数据库事务的几个特性:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID。但是再往下比如问到隔离性指的是什么的时候可能就不知道了,或者是知道隔离性是什么但是再问到数据库实现隔离的都有哪些级别,或者是每个级别他们有什么

2020-10-15 10:13:58 234

原创 1、seata的介绍及简单应用

seata是什么?  seata是阿里开源的分布式事务解决方案。它提供了高性能和简单易用的分布式事务服务,提供了AT、TCC、SAGA及XA事务模式。现在基于AT模式来介绍下seata的简单应用,在开始之前 ,首先先下载seata-server和源码包,seata版本为1.3,以下seata-1.3.0.源码包里包含了建库以及其他需要用到的脚本,下载地址:seata服务下载服务端配置1、建库建表。以mysql数据库为例。-- -------------------------------- The

2020-10-14 16:18:36 1074

原创 二叉树和B树的简单介绍

1、二叉查找树  特点:左子树的键值小于根节点的键值,右子树的节点大于根节点的键值。  示例:   缺点:如果存放的值一直大于根节点的值,就会造成树的不平衡,导致查询效率低下。2、平衡二叉树特点:在符合二叉查找树的条件下,还满足任何节点的两个子树节点的高度差小于等于1.3、B-tree:平衡多路查找树。一棵m阶的B-tree的特征如下:  1、树中的每个节点最多有m个孩子。  2、除根节点和叶子结点外,其他每个结点至少有cell(m/2)个孩子。  3、若根节点不是叶子结点,则至少有

2020-10-12 17:39:59 1742

原创 19、心跳机制

HeaderExchanger执行DubboProtocol.export会执行createServer方法创建dubbo心跳检测进程  目的:是为了维持提供者和消费者之间的长连接  实现:dubbo的心跳时间heartbeat默认是60s,超时时间默认是60s3,有一个定时任务每60s检测心跳,如果在60s内没有收到心跳响应,发送心跳消息,如果在60s3时间内没有收到心跳响应,如果是服务端,则关闭channel,客户端则重连。设置 可以通过protocolConfig.setHeartbeat(

2020-10-10 16:45:54 203

原创 18、日志适配

日志适配  dubbo 内置 log4j、slf4j、jcl、jdk  命令行: java -Ddubbo.application.logger=log4j  在 dubbo.properties 中指定  dubbo.application.logger=log4j  在 dubbo.xml 中配置  <dubbo:application logger=“log4j” />访问日志  如果你想记录每一次请求信息,可开启访问日志,类似于apache的访问日志。注意:此日志量比较大

2020-10-10 16:45:23 147

Redis开发与运维

由付磊、张益军编著的《Redis开发与运维》 是一本从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例与应用技巧的书籍。

2018-09-05

jqzoom2.3,另附示例代码和jqzoom2.3文档

jqzoom2.3,能让你的图片放大,本插件小巧实用,另附示例代码和jqzoom2.3文档,傻瓜式操作

2014-10-21

mybatis-3.2.2的jar包以及源代码,另外还有mybatis的PDF文档

mybatis-3.2.2的jar包以及源代码,另外还有mybatis的PDF文档

2014-10-21

贵美商城源代码(包含素材)

贵美商城源代码(包含素材)这是我们上机课做的项目,分享一下。

2013-09-17

空空如也

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

TA关注的人

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