- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 String类型数据结构内存分析
1、redis中字符串类型的结构:redis构建了一种名为简单动态字符串(simple dynamic string SDS)的数据抽象类型,默认字符串都是使用这种数据结构保存。整体结构如下:struct sdshdr{ //记录buf数组中已使用的字节的数量,等于SDS所保存字符串的长度 int 占用四字节 int len; //记录buf数组中未使用的字节数量 int占用4字节 int free; //字节数组,用户保存字符串; //为了表示字节数组的结束,
2021-12-22 11:29:20
1006
原创 redis哨兵机制
哨兵机制:主要任务监控,选主和通知,运行在特殊模式下的redis进程。1、哨兵基本流程监控就是哨兵周期性的给主从库发送ping命令,如果在规定时间没有响应,就会将该实例标识为下线状态,如果是主库,就标识为主库下线,开始自动切换主库。选主,主库挂了之后,哨兵从多个从库中按照规则选择。通知,选主完成之后将主库链接信息同步给其余从库。整体流程如图:2、主观下线和客观下线主观下线: 哨兵进程使用ping命令检测自己和主从库的网络链接情况,如果ping超时,会将该机器标识为主观下线。客观下线: 当标识主观
2021-12-20 15:40:58
892
原创 redis主从库
redis通过AOF和RDB完成了对数据可靠性的保障,也提供主从库模式应对服务高可用的需求。整体如图所示:读操作,主从库都可以接收客户端请求。写操作只有主库能够执行,然后将写操作同步给从库。1、主从库数据如何同步a、通过命令:replicaof(Redis 5.0之前使用slaveof)形成主库和从库的关系。过程如图所示:在实例:172.16.19.5上执行命令 replicaof 172.16.19.3 6379 会将该实例变成主实例的从库。让后经过三个阶段完成第一次同步。b、第一阶段:主从
2021-12-13 15:38:40
1292
原创 redis持久化处理
redis数据持久化主要有两大机制,AOF日志和RDB快照。1、AOF日志实现:和数据库日志(写前日志,记录修改后得数据)逻辑相反,AOF是写后日志,就是先执行命令,将数据写入内存然后再记录日志(记录redis收到得每一条命令),如图所示:1.1、AOF优点: redis为了避免额外得检查开销,在记录日志得时候不会校验语法,所以先执行命令,再记录日志,而且不会阻塞当前线程。1.2、AOF风险有两点: 1、就是执行完命令还没记录日志redis就宕机了,会导致当前数据无法恢复。2、AOF避免了对当前命
2021-12-08 18:03:31
375
原创 tomcat启动流程
1、通过startup.sh脚本调用catalina.sh如截图代码:2、通过catalina.sh脚本调用tomcat启动类:BootStrap.java的start方法3、在start方法中判断类加载器是否已经创建,如果没有创建调用init()方法初始化类加载器,并创建java.lang.ClassLoader的子类对象(org.apache.catalina.startup.Catalina)4、然后执行Catalina对象的start方法(通过反射),如图所示:5、创建digester
2021-12-06 17:24:26
1044
原创 redis单线程模式
1、redis单线程指的是:Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。**2、多线程开销:**共享资源的并发访问控制问题会导致额外得开销为何系统吞吐率没有根据线程增加而增加:只是简单地采用一个粗粒度互斥锁,就会出现不理想的结果:即使增加了线程,大部分线程也在等待获取访问共享资源的互斥锁,并行变串行,系统吞吐率并没有随着线程的增加而增加。3、
2021-12-06 17:00:01
2017
原创 reids数据结构学习总结
1、键和值用什么结构组织?Redis 使用了一个哈希表来保存所有键值对。因为这个哈希表保存了所有的键值对,所以,我也把它称为全局哈希表。(O(1) 的时间复杂度来快速查找到键值对)如图所示:2、为什么哈希表操作变慢了?(哈希表的冲突问题和 rehash 可能带来的操作阻塞。)2.1、链式哈希(解决Hash冲突)就是指同一个哈希桶中的多个元素用一个链表来保存,它们之间依次用指针连接。链表元素只能通过一个节点一个节点一次查找,如果链过长,查询到对应key的时间过长。2.2、解决链表过长问题,对has
2021-11-25 16:34:08
1207
原创 Linux配置多nameserver导致DNS问题
问题现象1、请求响应时间很长,无业务逻辑也很慢;2、启动时间很长,很难重启;3、通过arthas(阿里云开源代码分析工具)跟踪定位发现:org.apache.catalina.core.StandardHostValve.invoke(org.apache.catalina.connector.Request request, org.apache.catalina.connector.Response response)该行代码运行时间超过10s。解决问题1、StandardHostVal
2020-07-07 15:17:46
2434
原创 分布式skywalking安装部署总结
1、服务器配置服务器规划2 skywalking服务端安装2.1 zookeeper安装2.1.1 jdk安装 在服务器上安装jdk1.8,由于系统模板已经集成jdk 1.8.0_221,这里不在单独安装2.1.2 获取zookeeper安装程序将安装程序分别上传到zookeeper服务器的/workspaces目录下wget http://mirror.bit.edu.c...
2020-01-16 17:31:21
3817
7
原创 drools规则引擎分析研究
3 规则引擎的优点:3.1 使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性,降低应用程序的维护和可扩展性成本。3.2 分离商业决策者的商业决策逻辑和应用开发者的技术决策。3.3 能有效的提高实现复杂逻辑的代码的可维护性。3.4 在开发期间或部署后方便修复代码缺陷。3.5 应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内。3.6 符合组织对敏捷或迭代开发过程的使用。4 R...
2019-05-28 15:35:48
979
原创 阿里云消息队列mq(消费者)如何集成springboot,并能使用services
创建一个消息队列的数据库维护表:CREATE TABLE `consumer_local` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `version` bigint(20) NOT NULL, `topic` varchar(30) NOT NULL COMMENT '消费者所属的主题', `consumer_id` varch...
2018-07-04 17:14:21
3559
1
原创 分数计算问题和答案
题目内容: 设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。 这个类的构造函数是:Fraction(int a, int b) 构造一个a/b的分数。这个类要提供以下的功能:double toDouble(); 将分数转换为double Fraction plus(Fraction r); 将自己的分数和r的分数相加,产生一个
2017-04-24 18:27:45
3086
原创 springboot测试环境中为什么会将mongodb的数据自动存储到test表中
今天学习进入到mongodb使用springdata支持进行简单的增删改查部分,在使用springboot进行测试的时候,有一个很神奇的问题,在程序中存入数据,但在mongodb中我指定的数据库中却找不到数据,在mongodb指定的数据库中存入数据,在程序中也查不到。但很神奇的是,在程序中能够正常存取,还不会报错。感觉简直郁闷到吐血的程度。代码如下: springboot中的配置文件:spring
2017-04-17 16:17:55
2856
9
原创 基于spring注解切面的简单实现
首先定义一个注解:package com.permission.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Targe
2017-04-14 17:19:37
6049
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人