自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr Mirror的博客

hi~我是Mirror,一个热爱coding的蒸汽波程序员

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

原创 06.深入学习redis replication的完整流程和原理

此篇文章是对上一篇文章的深入剖析,05.简单了解redis replication核心原理一、replication的完整流程1、slave配置master ip和port# slaveof <masterip> <masterport>slaveof 127.0.0.1 63792、slave node内部有个定时任务,每秒检查是否有新的master node要连接和复制,如果发现,就跟master node建立socket网络连接3、slave node发送pin

2020-08-27 15:03:09 206

原创 05.简单了解redis replication核心原理/断点续传/无磁盘化复制以及master持久化的意义

1、redis replication基本原理(1) 当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。(2) 如果这是 slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。(3) 此时 master 会启动一个后台线程,开始生成一份 RDB 快照文件,同时还会将从客户端 client 新收到的所有写命令缓存在内存中。(4) master 会将这个 RDB 发送给 slav

2020-08-26 18:50:28 231

原创 04.简单了解一下Redis企业级数据备份方案

1、企业级的持久化的配置策略(1)每隔1分钟去检查如果超过10000个可以变更,则生成一个快照。RDB最多丢1分钟的数据。save 60 10000(2)AOF一定要打开,fsync,everysec#就是当前AOF大小膨胀到超过上次100%,上次的两倍auto-aof-rewrite-percentage 100#最小触发sizeauto-aof-rewrite-min-size 64mb2、企业级的数据备份方案RDB非常适合做冷备,每次生成之后,就不会再有修改了数据备份方案(

2020-08-26 11:29:46 179

原创 01.图文理解RDB和AOF两种持久化机制

1、RDB和AOF两种持久化机制的介绍RDB:对redis中的数据执行周期性的持久化,每隔一个时刻生成一个RDB文件,这个RDB文件包含这个时刻所有的数据。AOF:记录每条写入命令,以append-only的模式写入一个日志文件中。redis重启后,可以通过回放AOF日志中的写入指令来重新构建整个数据集2、RDB持久化机制的优缺点优点(1)RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备,可以将这种完整的数据文件发送到

2020-08-25 14:17:44 1115

原创 09. jenkins配置不同用户显示不同视图

jenkins配置不同用户显示不同视图一、新建用户1.1 新建用户Manage Jenkins -> Manage Users -> 新建用户 1.2 我创建了三个用户,分别是开发者、test和uat  二、配置权限角色2.1 安装权限管理插件Manage Jenkins -> Manage Plugins选择安装Role-based Authorization Strategy插件。如果下载太慢可以手动下载然后到高级上传:插件下载 2.2 打开角色配置功能

2020-09-09 19:10:41 836 1

原创 启动报错:conflicts with existing, non-compatible bean definition of same name and class

问题:Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [org.mirror.wallet.walletApplication]; nested exception is org.springf

2020-09-04 11:07:27 3984

原创 10.redis cluster介绍与gossip协议

一、redis cluster 介绍自动将数据进行分片,每个 master 上放一部分数据提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的redis cluster架构下的每个redis都要开放两个端口号,比如一个是6379,另一个就是加1w的端口号16379。6379端口号就是redis服务器入口。16379端口号是用来进行节点间通信的,也就是 cluster bus 的东西,cluster bus 的通信,用来进行故障检测、配置更新、故障转移授权。clu

2020-09-03 09:35:54 552

原创 09.redis 哨兵主备切换时数据丢失的解决方案

一、两种数据丢失的情况1. 异步复制导致的数据丢失  因为master->slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了2. 脑裂导致的数据丢失脑裂是什么  某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着。此时哨兵可能就会认为master宕机了,然后开启选举将其他slave切换成了master。集群里就会有两个master,也就是所谓的脑裂引发的问题:  此时虽

2020-09-01 15:11:42 378

原创 深入学习redis 的线程模型

一、redis 的线程模型redis 内部使用文件事件处理器 file event handler,它是单线程的,所以redis才叫做单线程模型。它采用IO多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。文件事件处理器的结构:多个 socketIO 多路复用程序文件事件分派器事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)线程模型多个 socket 可

2020-08-31 00:04:25 160

原创 使用swaager(xiaoymin版本)生成在线文档并进行单元测试

swagger是什么支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。1、引入依赖<dependency> <groupId>io.springfox</groupId&g.

2020-08-30 15:21:03 6411 2

原创 08.redis哨兵主备切换和选举算法

一、选举的授权每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换如果quorum < majority,比如5个哨兵,majority就是3,quorum设置为2,那么就3个哨兵授权就可以执行切换但是如果quorum >= majority,那么必须quorum数量的哨兵都授权,比如5个哨兵,quorum是5,那么必须5个哨兵都同意授权,才能执行切换  二、

2020-08-30 15:00:18 859

原创 查漏补缺系列:写单例时需要注意这三点!

首先使用synchronized保证线程安全,使用double check机制来防止重复创建实例,避免jvm指令重排是用了volatile修饰符

2020-08-28 09:52:34 210

原创 07.redis哨兵机制功能介绍

一、哨兵(sentinal)的介绍哨兵是redis集群架构中非常重要的一个组件,主要功能如下:集群监控,负责监控redis master和slave进程是否正常工作消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员故障转移,如果master node挂掉了,会自动转移到slave node上配置中心,如果故障转移发生了,通知client客户端新的master地址哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作故障转移时,判断一个master no

2020-08-27 22:00:45 782

原创 03.AOF持久化机制配置与工作流程

1、AOF持久化的配置配置文件redis.conf,默认是/etc/redis/6379.confAOF持久化默认是关闭的,默认是打开RDB持久化appendonly yes2、工作流程:打开AOF持久化机制之后,redis每次接收到一条写命令,就会写入日志文件中,当然是先写入os cache的,然后每隔一定时间再fsync一下可以配置AOF的fsync策略,有三种策略可以选择,always: 每次写入一条数据,立即将这个数据对应的写日志fsync到磁盘上去,优点是保证数据都不会丢,但

2020-08-26 09:43:13 310

原创 02.RDB持久化配置与工作流程

1、如何配置RDB持久化机制配置文件redis.conf,默认是/etc/redis/6379.confsave 60 1000表示每隔60s,检查如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照。也可以手动执行save或者bgsave命令,同步或异步执行rdb快照生成,一般不怎么用save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check

2020-08-26 09:41:43 193

原创 Feign调用服务报错:Load balancer does not have available server for client:xxx

问题:Feign调用服务报错:Load balancer does not have available server for client:xxx原因:这个xxx服务未找到解决思路:1、先看看注册中心是否有这个xxx服务,服务名称必须是xxx,我们用的注册中心是nacos,发现还真的没有这个服务。2、然后去看看配置文件bootstrap.yml,bootstrap.yml里面的服务名确实是xxx,没问题啊server: port: 8009spring: application:

2020-08-24 15:50:26 54256 2

原创 08.Validation校验参数工具

spring的validation封装了很多校验工具,比如邮箱,时间,null的一些校验,直接通过注解实现,无需我们再花心思去写校验工具了,很方便。这里主要简单讲下基本用法。一、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dep.

2020-08-24 12:49:44 240

原创 问题报错: The server time zone value is unrecognized or represents more than one time zone

问题报错:Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configur

2020-08-24 09:57:30 689

原创 02.使用postman调试api接口返回Required request body is missing的错误

问题:用postman返回Required request body is missing的错误。原因:后台是用@RequestBody的方式来接受参数的,需要选择json格式传送参数。解决:用postman发起请求时要在body里选择raw的方式,并选择json格式来传参数。...

2020-08-24 09:39:05 3244 1

原创 01.控制台不停地输出nacos日志信息

控制台不停地输出nacos心跳日志

2020-08-24 09:31:19 4609 4

原创 06.使用JDK8-Optional优雅解决判断Null

之前面试有面试官问:你说说java8都有些什么新特性,我居然蒙了!以前使用if-else进行空判断,有点丑,现在可以试试JDK8-Optional优雅解决判断Null

2020-08-22 11:48:06 654

原创 05、使用java8的Stream流让代码更优雅

之前面试有面试官问:你说说java8都有些什么新特性,我居然蒙了!使用java8的Stream流让代码更优雅建议先使用多几次,慢慢理解Stream

2020-08-22 11:35:27 239

原创 04. 使用java8的Lambda让代码更优雅

之前面试有面试官问:你说说java8都有些什么新特性,我居然蒙了!使用java8的Lambda让代码更优雅

2020-08-22 11:27:16 253

原创 03.使用mybatis-generator自动生成代码

mybatis自动生成器,它能为我们根据数据库生成实体类代码生成是趋势了,但它只能为我们减少繁复代码量,如果你一直做的是简单的重复的工作是不是该行动起来了。

2020-08-22 11:10:37 115

原创 02.mybatis变强了(mybatis-plus),你呢?

Mybatis-Plus是一个 Mybatis 的增强工具,理念是只做增强不做改变,为简化开发、提高效率而生。它封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。

2020-08-22 10:35:16 195

原创 01. 还在手动setget吗,试试lombok

我们编写实体类,总需要繁复写set、get方法,使用lombok自动生成。可以先知道基本用法,有兴趣就研究研究,可以自己写一个出来

2020-08-22 09:47:15 129

原创 编译报了:程序包org.apache.tomcat.util.codec.binary不存在

编译报了:程序包org.apache.tomcat.util.codec.binary不存在解决:缺了这个包,默认并不会引入tomcat的这个jar包,需要手动添加打开project structure,选择你的tomcat添加lib包,进入tomcat路径下的lib文件夹,选择tomcat-coyote.jar包,并把tomcat的包提到前面...

2020-03-20 14:58:16 14782 2

原创 《深入理解JAVA虚拟机》笔记之JVM分区

Java虚拟机管理的内存,包括以下五个运行时数据区域(注意:经常有人把Java内存区分为堆内存和栈内存,这种分法不是比较粗糙的,Java内存区域的划分实际上远比这复杂。这种划分方式的流行只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块。其中“堆”即Java堆,“栈”则指虚拟机栈,或者说虚拟机栈中的局部变量表部分。)1.程序计数器是一块较小的内存空间,可以将其看做是当前线程所执

2017-11-24 10:13:20 456

原创 设计模式笔记之简单工厂模式

前言本系列设计模式的整理总结来自于《大话设计模式》的学习笔记,由于它采用的是C#语言,本人将它用Java语言来实现,进而更好的让新手们进行学习。简单工厂模式一、介绍简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模

2017-09-10 10:41:41 316

原创 学设计模式要看懂UML类图才行

一、UML类图概念:类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系。 下面是《大话设计模式》的UML类图的总结笔记,采用了里面的实例。以下的例子使用Visio2013画的。二、类的表示1、类图第一层:类的名称,如果是抽象类用斜体显示。 第二层:类的属性。 第三层:类的方法。 2、接口表示矩形表示

2017-09-10 00:42:45 1024 2

原创 面试总结之Java各种修饰符总结

一、访问修饰符1、访问修饰符权限注意: 对于外部类来说,只有两种修饰,public和默认(default),default代表包内可见,包外不可见。 对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致。2、默认访问修饰符-不使用任何关键字使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接

2017-09-08 13:58:56 440

原创 面试总结之泛型基础知识

一、泛型概念参数化类型,即将类型由原来的具体的类型参数化。 泛型类型在逻辑上看,可以看成是多个不同的类型,实际上都是相同的类型。如List和List实际上都是List类型二、类型通配符类型通配符一般是使用 ? 代替具体的类型实参。(注意是实参!不是形参) List三、泛型的擦除机制泛型作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出。比如说:成功编译过后的clas

2017-09-07 14:52:49 275

原创 面试总结之Session生命周期与工作原理

一、概念客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。二、生命周期1、创建时机:Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Sessio

2017-09-07 09:22:37 971

原创 面试总结之数组的四种排序方式

数组排列是非常基础的面试题目,必须掌握。1、利用Arrays的快速排序 public int[] quickSort(int[] arr){ Arrays.sort(arr); return arr; }2、冒泡排序思路:不断的与靠后元素比较将最小的数依次遍历出来 public int[] bubbleSort(int[] arr){

2017-09-06 22:18:56 307

原创 面试基础之序列化和反序列化的总结

一、什么是序列化和反序列化序列化(Serialization)是一种将对象转化为字节序列的过程; 反序列化(Deserialization)是一种将字节序列重建成一个对象的过程。二、对象的序列化主要有两种用途  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件或数据库中; 比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Sess

2017-09-06 22:14:41 2585

原创 面试总结之抽象类与接口的对比

相同点:都不能被实例化,位于继承树的顶端,都包含抽象方法不同点:1、设计目的:接口体现的一种规范,类似与整个系统的总纲,制订了系统各模块应该遵循的标准,因此接口不应该经常改变,一旦改变对整个系统是辐射性的。 抽象类作为多个子类的共同父类,体现的是一种模板式设计,可以当作系统实现过程中的中间产品,已经实现了系统部分功能。2、使用不同:一个子类只能继承一个抽象类,但能实现多个接口抽象类可以有构造方

2017-09-06 22:06:47 190

原创 面试总结之JSP原理、内置对象以及作用域

一、JSP原理:Jsp只会在客户端第一次发请求的时候被编译,之后的请求不会再编译,同时tomcat能自动检测jsp变更与否,变更则再进行编译。二、JSP内置对象有:1、request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。2、response对象 response对象包含了响应客户请求的有关信息

2017-09-06 22:02:48 275

原创 面试总结之Java中创建对象过程及方式

一、创建对象过程1、检测类是否被加载创建一个Java对象时,JVM首先会检查这个new指令的参数能否在常量池中定位到一个类的符号引用,然后检查与这个符号引用相对应的类是否已经成功经历加载、解析和初始化等步骤。如果没有,那必须先执行相应的类加载过程。2、为新生对象分配内存当类完成装载步骤之后,就已经完全确定出创建对象实例时所需的内存空间大小,接下来JVM将会对其进行内存分配,以存储所生成的对象实例。在

2017-09-06 21:54:22 667

原创 Maven安装,本地远程仓库创建以及eclipse的配置

一、Maven安装下载Maven,http://maven.apache.org/release-notes-all.html 下载下来其实是一个压缩包,把它解压在你安装的目录,建议D盘哈~配置Maven环境变量进入环境变量-》系统变量-》添加MAVEN_HOME,变量值为你安装的目录地址。 在PATH中添加%MAVEN_HOME%\bin 验证是否安装成功在cmd命令窗口,输入mvn -v

2017-09-05 22:32:56 2874

转载 Spring事务管理(详解+实例)

1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失

2017-09-04 11:12:09 212

Redis设计与实现学习思维笔记.xmind

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求

2020-08-25

springboot学习思维笔记.xmind

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。

2020-08-25

hijson-64位.zip

HiJson官方版是一款Json格式化工具,HiJson官方版用于格式化JSON,XML转JSON,MAP转JSON,格式化XML,节点查找及文本查找,以树的形式展示,方便json字符串查看,支持各种常用操作,支持多标签。

2020-08-25

空空如也

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

TA关注的人

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