自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

【程序员不弃】的博客

你必须特别努力,才能看起来毫不费力。

  • 博客(154)
  • 资源 (3)
  • 收藏
  • 关注

原创 【JVM基础】 JVM 如何加载一个类以及类加载机制

如果你要 “new ReplicaManager()” 初始化这个类的实例,那么就会加载这个类,然后初始化这个类,但是初始化这个类之前,发现 AbstractDataManager 还没有加载和初始化,就需要先加载这个父类,并且初始化这个父类。然后从 main 方法的入口代码开始。假设你的应用程序需要去加载一个类,他首先会委派给自己的父类加载器去加载,经过层层床底,最终传递到顶层的类加载器去加载。但是如果父类加载器在自己负责范围加载的范围内没有找到这个类,就会将加载的权利给自己的子类加载器去进行加载。

2023-12-21 13:02:54 1633

原创 【Java基础】HashMap 原理

数据扩容 -> 2倍扩容 -> 重新对map中的每一个元素进行寻址->通过判断二进制结果是否多出来了一个bit为,判断index的位置是否变化;如果数组的长度扩容之后 = 32,重新对每个hash值进行寻址,也就是用每个hash值跟新数组的length - 1进行与操作判断二级制结果是否多出来一个bit的1如果没有多,那么还是原来的index如果多了出来,那么新的index = oldIndex + oldCap。

2023-12-16 17:48:41 1484

原创 【Yapi】Window10 超详细安装 Yapi 教程

Yapi 高效、易用、功能强大的API管理平台旨在为开发、产品、测试人员提供更优雅的接口管理服务

2022-07-16 16:30:24 4797 2

原创 【Yapi】Npm安装Yapi失败,提示 EPERM: operation not permitted, mkdir

operation not permitted ......

2022-07-16 12:54:51 800

原创 3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案

3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案文章目录3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案1. 最初级的缓存不一致的问题以及解决方案1.1 问题:先修改数据库,在删除缓存,如果删除缓存失败了,就会导致数据库中的是新数据,缓存中的是旧数据,数据出现不一致。1.2 解决思路:2. 复杂的数据不一致的问题分析(多线程并发读写同一个数据)2.1 问题2.2 出现原因:2.3 解决方案:数据库和缓存更新与读取操作异步串行化2.3 高并发场景下,该解决方案要注意的问题2.3.1 读请

2022-04-04 16:21:15 3423 2

原创 2.【多级缓存架构】Cache Aside Pattern缓存和数据库读写模式分析

2.【多级缓存架构】Cache Aside Pattern缓存和数据库读写模式分析文章目录2.【多级缓存架构】Cache Aside Pattern缓存和数据库读写模式分析1. Cache Aside Pattern2. 为什么要删除缓存,而不是更新缓存?3、总结:1. Cache Aside Pattern读的时候,先读缓存;缓存没有的话,那么就读数据库,然后再将数据放入缓存,同时返回响应。更新的时候,先删除缓存,然后再更新数据库,2. 为什么要删除缓存,而不是更新缓存?答案:

2022-04-04 15:56:25 2979

原创 1.【多级缓存架构】多级缓存架构以及每一层的意义

1.【多级缓存架构】多级缓存架构以及每一层的意义文章目录1.【多级缓存架构】多级缓存架构以及每一层的意义1. 多级缓存架构2. 缓存数据分类2.1 时效性高的数据,比如:库存2.2 失效性不高的数据,比如:商品颜色,版本,规格参数等等2.3 案例:nginx + lua脚本做页面动态生成的工作,3. 多级缓存架构中每一层的意义3.1 nginx本地缓存3.2 redis分布式大规模缓存3.3 tomcat jvm 对内存缓存1. 多级缓存架构nginx本地缓存 + redis分布式缓存 + tomc

2022-04-04 15:19:43 4336

原创 【Java基础】基于动态代理优雅高性能的拷贝对象?BeanCopier

1、场景:微服务层与层之间进行对象的拷贝微服务里面为了代码层次结构清晰,一般会进行分层,DAO层,Servic层,Controller。不同层使用不同后缀对象来进行数据传递DAO层一般会使用 DO 对象来进行传递Service层一般会使用 DTO 对象来进行传递Controller层一般会使用VO 对象来进行传递层与层之前进行传递数据的时候,往往对象之间的属性类似,就会重写对象的clone方法,进行对象的拷贝比如将 DO 对象转换为 DTO 对象,或者 DTO 对象转换为 VO 对象。

2022-03-29 23:38:14 2502

原创 03_Redis Cluster支撑海量数据、高并发、高可用架构

1.【Redis Cluster集群】Redis如何横向扩容,支撑海量数据2.【Redis Cluster集群】redis分布式数据存储核心原理3.【Redis Cluster集群】搭建高可用+支持海量数据+多Master的redis cluster集群4.【Redis Cluster集群】redis cluster 多mster写入,读写分离,高可用5.【Redis Cluster集群】redis水平扩容master,支持海量数据6.【Redis Cluster集群】自动化slave实现高可用的

2022-03-23 23:40:16 421

原创 【Redis Cluster集群】自动化slave实现高可用的架构方案

文章目录1、redis cluster 挂载冗余的slave,实现架构的高可用 -- slave迁移1、redis cluster 挂载冗余的slave,实现架构的高可用 – slave迁移场景描述:比如现在有10个master,每个有一个slave,然后新增3个salve作为冗余,有的master就有2个slave,出现了slave冗余;如果某个master的slave挂了,那么redis cluster会自动迁移一个冗余的slave给那个master,保证整个redis cluster的高可

2022-03-23 23:37:58 526

原创 【Redis Cluster集群】Redis线上环境常用参数设置

文章目录1. fork耗时导致高并发请求延时1.1 问题:rdb或aof时,会fork子进程,带来大量的磁盘IO消耗,导致耗时严重1.2 优化思路:2. AOF阻塞问题2.1 问题原因:2.2 优化思路3. 主从复制延迟的问题4. 主从复制风暴问题5. vm.overcommit_memory6. swapiness7. 最大打开文件句柄8. tcp backlog1. fork耗时导致高并发请求延时1.1 问题:rdb或aof时,会fork子进程,带来大量的磁盘IO消耗,导致耗时严重RDB和AOF的

2022-03-23 23:27:25 279

原创 【Redis Cluster机器】redis cluster核心原理分析:gossip通信,jedis smart定位,主备切换

文章目录1. 基础通信原理1.1 redis cluster 节点间采用gossip协议进行通信:1.2 10000端口1.3 交互的信息2. gossip协议3. ping消息深入4.面向集群的jedis内部实现原理-jedis cluster api1. 基于重定向的客户端5. smart jedis5.1 什么是 smart jedis5.2 jediscluster的工作原理5.3 hash slot迁移和ask重定向6. redis cluster 高可用性和主备切换原理(类似哨兵)6.1 判断节

2022-03-23 23:25:11 1672

原创 【Redis Cluster集群】自动化slave实现高可用的架构方案

文章目录1、redis cluster 挂载冗余的slave,实现架构的高可用 -- slave迁移1、redis cluster 挂载冗余的slave,实现架构的高可用 – slave迁移场景描述:比如现在有10个master,每个有一个slave,然后新增3个salve作为冗余,有的master就有2个slave,出现了slave冗余;如果某个master的slave挂了,那么redis cluster会自动迁移一个冗余的slave给那个master,保证整个redis cluster的高可

2022-03-23 23:23:23 1911

原创 【Redis Cluster集群】redis水平扩容master,支持海量数据

5. 【Redis Cluster集群】redis水平扩容master,支持海量数据redis是怎么扩容的1、加入新mastermkdir -p /var/redis/7007port 7007cluster-enabled yescluster-config-file /etc/redis-cluster/node-7007.confcluster-node-timeout 15000daemonize yes pidfile /var/run/redis_7007.

2022-03-23 23:20:46 351

原创 【Redis Cluster集群】redis cluster 多mster写入,读写分离,高可用

4. 【Redis Cluster集群】redis cluster 多mster写入,读写分离,高可用redis cluster,提供了多个master,分布式存储:数据可以分布式存储到多个master上;读写分离:每个master都带着slave,自动实现读写分离;高可用:每个master如果故障,redis cluster可以自动将slave切换成master,以此实现redis cluster的高可用1. 测试:多master写入 -> 海量数据的分布式存储1.1 redis c

2022-03-23 23:19:11 3297

原创 【Redis Cluster集群】搭建高可用+支持海量数据+多Master的redis cluster集群

3.【Redis Cluster集群】搭建高可用+支持海量数据+多Master的redis cluster集群redis cluster最最基础的一些知识redis cluster: 自动,master+slave复制和读写分离,master+slave高可用和主备切换,支持多个master的hash slot支持数据分布式存储停止之前所有的实例,包括redis主从和哨兵集群1、redis cluster的重要配置# 启用redis集群支持cluster-enabled <yes

2022-03-23 23:17:57 344

原创 【Redis Cluster集群】redis分布式数据存储核心原理

2.【Redis Cluster集群】redis分布式数据存储核心原理学习内容redis 数据存储的核心算法1. 最简单的数据分布算法-hash 算法1.1 hash原理来了一个key之后,计算hash值,然后对节点数量取模,取模的结果一定是在0-(节点数量-1)之间,就可以根据取模结果将请求打到具体的某一节点上去。1.1 hash算法缺陷一旦某一个master宕机了,当请求过来,会根据新的节点数量取模,请求会到和原先不同的master上去,导致几乎大部分请求,全部都无法拿到有效的

2022-03-23 23:15:13 1358

原创 02_【Redis主从架构】

1.【Redis主从架构】Redis如何支撑高并发2.【Redis主从架构】Redis replication以及master持久化对主从架构的意义3. 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理4. 【Redis主从架构】Redis replication完整流程和深入讲解5. 【Redis主从架构】搭建一个一主一从的Redis主从架构6. 【Redis主从架构】Redis主从如何做到99.99%高可用7. 【Redis主从架构和哨兵集群】哨兵基础知识

2022-03-22 21:09:32 89

原创 【网络基础】聊聊TCP/IP四层网络模型吗?OSI七层网络模型也说一下

文章目录1、TCP/IP四层模型:1.1 物理层1.2 数据链路层问题:你得定义哪些0和1分为一组,这些信号什么意思?45_你能聊聊TCPIP四层网络模型吗?OSI七层网络模型也说一下!(中)1、 mac地址2、以太网2.1 基于以太网协议 将数据包 广播到局域网的每台电脑2.2 以太网是如何知道哪些电脑是一个子网的?2.3 实际上,电脑单从ip地址是看不出来哪些机器是一个子网的?怎么办呢?2.3.1 子网掩码2.3.2 如何两个IP地址是否在一个局域网内?46_你能聊聊TCPIP四层网络模型吗,OSI七层

2022-03-12 19:22:23 3874

原创 【2021-03-20】【Mybatis】Mybatis 判断字符串非空和空串 报错, Encountered “ <IDENT> “AND ““ at line 1

【Mybatis】Mybatis 判断字符串非空和空串 报错, Encountered " "AND “” at line 11、Mybatis.xml 代码2、console 控制台报错org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'username != null AND

2021-03-20 10:57:29 2630 1

原创 【Redis Cluster集群】redis如何横向扩容,支撑海量数据

1. 【Redis Cluster集群】redis如何横向扩容,支撑海量数据1. 单机redis 在海量数据面前的瓶颈2. 如何才能突破单机瓶颈,让redis支撑海量数据?3. redis的集群架构 redis cluster支持N个redis master node,每个master node都可以挂载多个slave node读写分离的架构,对于每个master,写就写到master,然后读就从master对应的slave去读。高可用,因为每个master都有slave节点,那么如果mas

2020-08-15 22:19:56 1098

原创 【SpringBoot】SpringBoot测试类的应用

SpringBoot开启测试非常的简单,只需要加@RunWith(SpringRunner.class)和@SpringBootTest注解,在@SpringBootTest注解上加上Web测试环境的端口为随机端口的配置TestRestTemplate类为RestTemplate测试类,RestTemplate用于远程调用Http Api接口。SpringBoot测试用例package com.springboot.hellowork;import org.junit.Before;i.

2020-07-09 07:37:57 300

原创 【Redis主从架构】Redis集群和哨兵集群的容灾测试

12. 【Redis主从架构】Redis集群和哨兵集群的容灾测试1. 哨兵节点的增加和删除1.1 增加sentinal,会自动发现会基于master-slave的pub/sub机制,进行sentinal的发现1.2 删除sentinal停止sentinal进程SENTINEL RESET *,在所有sentinal上执行,清理所有的master状态。SENTINEL MASTER mastername,在所有sentinal上执行,查看所有sentinal对数量是否达成了一致2. s

2020-07-06 06:33:34 398

原创 【Redis主从架构】搭建经典的3节点哨兵集群

1. 哨兵配置文件位于redis解压根目录下:sentinel.conf最小配置每一个哨兵都可以去监控多个master-slaves的主从架构因为生产环境一般会部署多个master-slaves的redis主从集群相同的一套哨兵集群,可以去监控不同的多个redis主从集群。你可以给每个redis主从集群分配一个逻辑的名称:sentinel monitor mymaster 127.0.0.1 6379 2sentinel down-after-milliseconds mymast

2020-07-06 06:25:09 1219

原创 【Redis主从架构】redis哨兵核心原理的深入解析(包括slave选举算法)

10.【Redis主从架构】redis哨兵核心原理的深入解析(包括slave选举算法)1. sdown和odown转换机制1.1 sdown-主观宕机sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机了。主观宕机原理:sdown 达成的条件很简单,如果一个哨兵ping一个master,超过 is-master-down-after-milliseconds指定毫秒数之后,如果还没有响应,就主观认为master宕机了。1.2 odown-客官宕机odo

2020-07-06 06:09:06 709

原创 【Redis主从架构】Redis哨兵主备切换时数据丢失问题:异步复制,集群脑裂

9. 【Redis主从架构】Redis哨兵主备切换时数据丢失问题:异步复制,集群脑裂redis哨兵主备切换两种数据丢失的情况解决异步复制和脑裂导致的数据丢失1. 两种导致数据丢失的情况1.1 异步复制导致数据丢失因为 master -> slave的复制都是异步的,所以有可能出现master内存中的部分数据来不及复制到slave上,master就宕机了,随后通过哨兵执行主备切换,导致这部分数据丢失。1.2 脑裂导致的数据丢失脑裂脑裂:某个master所在的机器突然脱离了

2020-06-22 07:38:37 938

原创 【Redis主从架构】哨兵基础知识

8. 【Redis主从架构】哨兵基础知识文章目录8. 【Redis主从架构】哨兵基础知识1. 哨兵介绍1.1 哨兵主要功能2 哨兵集群2.1 哨兵集群工作原理3. 哨兵的核心知识4. 为什么redis哨兵集群只有2个节点无法正常工作4. 经典的3节点哨兵集群1. 哨兵介绍sentinal, 中文名是哨兵,哨兵是redis集群架构中非常重要的一个组件。1.1 哨兵主要功能(1)集群监控,负责监控redis master 和 slave 进程是否正常工作。(2)消息通知,如果某个redis实例

2020-06-08 07:59:44 257

原创 【Redis主从架构】Redis主从如何做到99.99%高可用

【Redis主从架构】Redis主从如何做到99.99%高可用1. 什么是系统99.99高可用?如果你的系统可以保证全年,99.99%的事件内,都是处于高可用的状态,那么就可以称为高可用99.9, 99% 都可以统称为高可用80%可用,低可用性定义:如果说你的系统可以保证在全年,99.99%的时间内,都是处于可用状态的,那么就可以称之为高可用性2. 什么是系统不可用?1. 机器死机了,宕机了2. jvm进程OOM了,挂了3. 机器CPU打满了,不工作了。4. 磁盘满了,系统各种I

2020-05-30 23:15:01 329

原创 【Redis主从架构】搭建一个一主一从的Redis主从架构

5. 【Redis主从架构】搭建一个一主一从的Redis主从架构1. 学习目标搭建一个一主一从的Redis主从架构。主节点去写,从节点去读,如果在主节点写入数据之后,从节点能读取到,就说明搭建成功了。2. 搭建 redis slave node2.1 安装tcl#1. 下载tcl安装包wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz#2. 解压tcl8.6.1-src.tar.gztar -zxvf tc

2020-05-23 19:17:21 675

原创 【Redis主从架构】Redis replication完整流程和深入讲解

4. 【Redis主从架构】Redis replication完整流程和深入讲解1. Replication完整复制流程slave node启动,仅仅保存 master node 的信息,包括 master node 的host和ip,但是复制流程还没有开始,master host和ip从哪里来,redis.conf里面的slaveof配置的。salve node 内部有个定时任务,每秒检查是否有master node要连接和复制,如果发现, slave node 就跟 master node

2020-05-23 16:15:25 363

原创 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理

3. 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理文章目录3. 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理1. Redis主从架构数据复制原理2. 主从复制断点续传3. 无磁盘化复制4. 过期key处理1. Redis主从架构数据复制原理当启动一个slave node的时候,它会发送一个PSYNC命令给master node节点,master node同时触发一次full resynchronization。开

2020-05-20 06:59:56 367

原创 【Redis主从架构】Redis replication以及master持久化对主从架构的意义

2. 【Redis主从架构】Redis replication以及master持久化对主从架构的意义1. 图解Redis的replication原理2. Redis rplication的核心机制redis采用异步的方式复制数据到slave节点,redis2.8之后,salve node会周期性的确认自己每次复制的数据量。一个master node可以有多个slave node;slave node 可以连接其他 salve node;slave node 进行数据复制的时候,

2020-05-20 06:55:50 259

原创 【Redis主从架构】1. Redis如何支撑高并发

1. 【Redis主从架构】Redis如何支撑高并发文章目录1. 【Redis主从架构】Redis如何支撑高并发1. 学习内容2. Redis高并发和系统的高并发有什么关系?2. Redis的瓶颈在哪呢?3. Redis如何支持高并发?1. 学习内容(1)Redis高并发和系统的高并发有什么关系?(2)Redis如何支撑高并发?2. Redis高并发和系统的高并发有什么关系?大型电商系统中,像商城首页,商品详情页,高峰时期,QPS可以到达10万,百万,甚至上千万,无论是单独靠数据库还是Red

2020-05-18 07:49:16 177

原创 【Redis安装】单机版Redis下载、安装以及生产环境启动方案

【Redis安装】单机版Redis下载、安装以及生产环境启动方案1. 安装单机版redis1.1 wget安装# 验证centos系统中wget是否安装rpm -qa|grep "wget"# 安装wegetyum install wget1.2 安装tcl# 下载tclwget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz# 解压tcltar -xzvf tcl8.6.1-src.tar.gzcd /

2020-05-18 07:42:04 155

转载 【Mybatis】SpringBoot + Mybatis 在控制台输出sql语句

SpringBoot + Mybatis 在控制台输出sql语句1. 如果使用application.properties在配置中添加:logging.level.com.looedu.mapper=debug格式:logging.level.Mapper类的包=debug2. 如果使用application.yml在配置中添加:logging: level: com: looedu: mapper: debug同样按照...

2020-05-15 17:04:48 445

原创 【IDEA】简单使用类注释,方法注释模板

【IDEA】类注释,方法注释模板1、类注释1.1 打开 File and Code Template界面快捷键:Ctrl + Alt + S 打开设置界面,搜索 “template”,选中 Editor菜单栏下面的 File and Code Templates。2. 添加下面代码/** * @Description: ${NAME} * @Author: zr * @Da...

2020-03-08 11:09:12 2026

原创 【JAVA基础】超时逻辑

【JAVA基础】超时逻辑public class WaitTimeoutTest { private static final Logger logger = LoggerFactory.getLogger(WaitTimeoutTest.class); private static volatile int num = 0; @Test public v...

2020-01-01 08:53:23 467

转载 【SpringBoot集成Kafka】

1. 比较旧的kafka_2.10-0.8.2.0版本:(参考自http://chengjianxiaoxue.iteye.com/blog/2190488)1.1 生产者代码:import java.util.Properties; import java.util.concurrent.TimeUnit; import kafka.javaapi.producer.Produ...

2019-12-08 23:05:50 523

原创 【Redis持久化】Redis企业级数据备份方案

【Redis持久化】Redis企业级数据备份方案9.1 redis数据备份方案写crontab定时调度脚本去做数据备份每小时cop一份rdb的备份,到一个目录中,仅仅保留最近48小时的备份每天保留一份当日的rdb的备份,到一个目录中,仅仅保留最近一个月的备份。每次copy备份的时候,都把旧的备份数据删除。每天晚上将当前服务器上所有的数据备份,发送到一份到远程服务器上去。9.2 每...

2019-11-16 18:26:20 189

原创 【Redis持久化】AOF持久化实验

【Redis持久化】AOF持久化实验1. 单机版Redis下载、安装以及生产环境启动方案文章目录【Redis持久化】AOF持久化实验8.1 学习内容8.2 AOF持久化配置8.2.1 配置打开AOF持久化8.2.2 配置AOF同步策略(共三种)8.3 AOF持久化实战8.4 AOF rewrite8.4.1 配置rewrite策略8.4.2 rewrite 原理8.5 AOF破损文件的修复8....

2019-11-16 18:24:02 199

Shell脚本学习指南.zip

这套 Shell 脚本学习指南针对初学者编写,它通俗易懂,深入浅出,不仅讲解了基本知识,还深入底层原理,能让你在 1 天时间内快速了解 Shell(当然,要想深入学习还得假以时日)。

2019-06-16

SwitchHosts

SwitchHosts是一个管理、快速切换Hosts小工具,开源软件,一键切换Hosts配置,非常实用,高效。 开发Web过程成,部署有多套环境,网址域名都相同,部署在不同的服务器上,有开发环境、测试环境、预发布环境、生产环境。经常要切换Hosts来访问,测试以及验证bug,如果纯手工修改这会花掉不少时间,而且这个过程毫无乐趣可言。

2017-08-23

jEasyUI1.3.6版API中文版.chm

jEasyUI1.3.6版API中文版.chm,EasyUI查询文档

2017-08-23

空空如也

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

TA关注的人

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