自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(321)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Zookeeper实现选举 - 源码解读

Zookeeper实现选举选举的使用场景设计模式源码解读选举的使用场景在分布式环境下,为了保证系统的高可用性,我们必须消除单点,其中一个主要的解决方案就是建立集群。集群有多个提供相同服务的机器组成,在这样场景下,又会出现一致性问题,原因是我们无法保证多台机子上的数据是一致的。在这种情况下,我们可以通过一主多从的方案,通过主节点来进行读写操作,从节点只进行读操作的方式,通过主从复制来尽可能保证一致性。那么如何来决定谁来当主节点呢?这就是我们今天要讲的 — 选举设计模式在zookeeper选举的逻辑中

2021-03-28 15:26:04 319 1

原创 zookeeper集群搭建示例

zookeeper集群搭建下载zookeeperzookeeper配置启动节点客户端连接集群集群高可用测试下载zookeeper参考通过Zookeeper实现分布式锁示例zookeeper配置将zookeeper的安装包解压后复制三份,或者你准备三个配置文件即可,今天我们将搭建一个三节点的zookeeper集群:配置如下:节点1:# The number of milliseconds of each ticktickTime=2000# The number of ticks that

2021-03-24 12:48:35 449

原创 zookeeper实现一主多从协同服务的示例

zookeeper实现一主多从协同服务的示例介绍前期准备实现只能有一个master主节点实现对worker节点的监控介绍本文介绍zookeeper如何实现对一主多从的集群进行协同,要求系统中只能有一个master,master能实时监控系统中worker的情况。前期准备需要安装zookeeper,配好配置文件,启动zkServer.sh服务。可以参考:通过Zookeeper实现分布式锁示例实现只能有一个master启动两个zkCli.sh服务,其中一个客户端创建/master节点,此时另外一个就

2021-03-24 10:04:41 408

原创 通过Zookeeper实现分布式锁示例

通过Zookeeper实现分布式锁下载安装Zookeeper:通过Zookeeper实现分布式锁示例:获取锁设置监听释放锁下载安装Zookeeper:下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.2/我下载了最新的apache-zookeeper-3.6.2-bin.tar.gz通过tar命令进行解压,然后修改conf/zoo_sample.cfg为conf/zoo.cfg,并修改里面的配置。datadir为存储zook

2021-03-23 20:58:46 215

原创 optimizer trace 查看Mysql如何选择执行计划的过程

前面几篇讲了Mysql基于成本的优化,也看了执行计划,今天我们来看看Mysql提供的更详细的执行计划生成过程。optimizer traceoptimizer trace由来:optimizer trace的使用方式:optimizer trace实践:小结optimizer trace由来:1、我们平时查看SQL的执行计划,但是执行计划是相对粗略的,只告诉你使用了什么索引,采用了什么方式。但是没有告诉你它为什么选择这种查询方式。2、所以,在MySQL 5.6之后,提供了个optimizer tra

2021-03-19 12:21:25 701

原创 计算机科学速成课(观后感)

电子计算机的发展电子计算机在20世纪40、50年代,经历了从机械继电器 -> 真空三极管 -> 晶体三极管的变化。机械继电器通过电磁铁+机械的方式控制开关的开闭。真空三极管通过电子的释放控制开关的开闭。晶体三极管通过半导体控制开关的开闭。温暖的计算机会吸引虫子,有一次检修人员在修理故障继电器时找到的一个虫子,这也就是bug一词的由来。布尔逻辑与逻辑门计算机采用二进制而不是三进制、五进制的原因:避免电流大小不均的干扰 + 二进制有了一套完整的数学体系 - 布尔代数有一下几种常见

2021-03-18 11:16:58 789

原创 问题分析:Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.

今天在测试环境,测试报了这样一个错,是jedis报的,不知道怎么解决,我也是搞了好一会,最后发现问题了,做如下总结:本文将会讲解:问题总结发现问题排查问题问题定位发现问题org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Comman

2021-03-17 09:07:24 634

原创 Mysql 查询优化器有哪些优化手段?

当我们往黑窗口输入一条SQL给Mysql执行,Mysql 查询优化器会按照一定的规则帮我们对SQL进行重写,优化,本文将会讲解:Mysql基于规则的优化条件化简:常量表检测外连接消除子查询不相关标量子查询标量相关子查询IN子查询优化临时表半连接的实现方法半连接的使用条件:小结条件化简:条件化简就是我们平时很常见的消除一些冗余的条件,如:移除不必要的括号常量传递比如:a = 5 AND b > a可以转换为a = 5 AND b > 5等值传递比如:a = b and b = c

2021-03-16 14:51:32 575

原创 mysql索引访问方式实践 (const、ref、range、index、all、index merge)

如果你对mysql索引访问方式还一知半解,请继续看下去,相信本文会对你有帮助:本文会讲解:mysql索引的实现方式mysql有哪些索引访问方式mysql索引的实现方式Mysql索引的数据结构采用的是B+树,B+树是一棵多路搜索树。类似这样。在Innodb存储引擎中,又可分为聚簇索引(主键索引)与非聚簇索引,聚簇索引的非叶子结点记录的是索引,叶子结点记录了对应的数据行。非聚簇索引与聚簇索引不一样的是,它的叶子结点记录的是普通索引列与主键的对应关系。而在Myisam存储引擎中,就全是非聚簇

2021-03-11 11:06:02 17294 3

原创 构造器、静态代码块、普通代码块、静态变量初始化顺序 - 总结

问题引入一直对这个问题有了解,也会涉及到类似的问题。刚好有空便测试一把,作为记录。测试代码新建Student与Person类,Student继承Person类。public class Person { private String name; private Integer age; private Boolean sex; private static final String STATIC_FINAL_PARAM = getStaticFinalParam()

2021-03-09 19:44:39 341 2

原创 ApplicationContextAware的使用说明

引入问题今天讲一下ApplicationContextAware接口的使用,原因是我认为这一段代码可能是有问题的,我认为有问题的代码:@Controllerpublic class UserController { private static final User USER = SpringContextUtil.getBean(User.class); @ResponseBody @RequestMapping("/getUser") public String getUser(){

2021-03-08 15:38:45 1352

原创 SimpleDateFormat非线程安全解析

介绍SimpleDateFormat是JDK提供的rt包下的一个时间格式转换的类,它的全类名是:java.text.SimpleDateFormat。从该类的注释中,我们可以了解到:1、可以将date转为text格式2、可以将text转为date格式3、可以针对不同的时区进行转换4、允许你采用自定义的时间patter。(可以使用applyPattern方法来修改转换格式)他自己提供了一部分字母的含义,同时保留了’A’ to 'Z’和 ‘a’ to 'z’所有没有定义的字母,已提供的如下:

2021-03-03 12:32:42 385 1

原创 职场人5项底层能力(听课总结)

不同的职场思维:不同思维的人,后续的薪资表现:最终狮子型思维将会获得成功。因为他们创造价值的方式完全不同,从而引出决定薪水的职级。5项底层能力总结不同职位,不同思维的人,他们实现价值的方式不同。我们想做到的是可以不那么辛苦地实现更高的贡献。我们需要争取更多的资源。在工作中,我们可以向上级争取资源,做到对上级的管理,已达到更好的业绩。要有明确的计划,和目标,目标要量化,计划要合理,能完成的才叫计划。计划的一个误区,就是简单的资源分配。有效与无效的计划是怎么样的定期和直

2021-03-01 22:00:42 850 3

原创 矩阵

给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。示例 1:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出:true解释:在上述矩阵中, 其对角线为:“[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。各条对角线上的所有元素均相.

2021-02-22 19:29:17 263

原创 566. 重塑矩阵 [二维数组与一维数组转换]

在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行.

2021-02-17 15:10:06 372

原创 485、最大连续1的个数 [数组遍历,双指针]

给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。思路1:遍历数组,用一个int变量记录ans,时间复杂度O(n)class Solution { public int findMaxConsecutiveOnes(int[] nums) { int a.

2021-02-15 17:28:39 145

原创 888、[数组]公平的糖果棒交换

爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个答案,你可以返回其中任何一个。保证答案存在。示例 1:输入:A = [1,1], B = [2,2].

2021-02-01 10:36:53 117

原创 nacos启动报错Unable to start web server,Unable to start embedded Tomcat

背景:使用的nacos版本:1.1.4使用的jdk版本:1.8.0-131错误现象原因是因为JDK版本原因,虽然看到nacos-server.jar就是用1.8.0-131编译的,但内置的tomcat的依赖和jdk冲突了。将JDK改为1.8.0-221后问题解决。(当然也不一定是221,要看为什么jar冲突了)...

2021-01-26 20:18:59 3013 2

原创 nacos 未读取到合法数据,请检查导入的数据文件

现象nacos导入配置文件莫名其妙就报“未读取到合法数据,请检查导入的数据文件”配置文件格式路径都是对的,是从nacos上直接导出来的, XXX.zip/group_Id/*.properties排查查看nacos相关日志均正常,最后是因为测试环境nacos服务的所在磁盘满了...

2021-01-26 15:12:26 7810 6

原创 [字符串操作]给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = “abc”, s2 = “bca”输出: true示例 2:输入: s1 = “abc”, s2 = “bad”输出: false说明:0 <= len(s1) <= 1000 <= len(s2) <= 100Related Topics 数组 字符串边界条件:1、如果s1与s2是同一个对象,肯定相同2、s1与s

2021-01-22 11:13:47 3101

原创 [字符串操作] 确定一个字符串 s 的所有字符是否全都不同

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。Related Topics 数组看问题:首先,题目没有说字符的大小写要求,也没有说是26个字母,所以是比较通用的情况。边界判断:如果字符串为空或null或长度为1,肯定是不会重复的。或者假如是26个小写字

2021-01-22 10:51:07 1301 4

转载 第三方支付过程中session失效问题(Cookie无法带过来)

传送门:https://www.cnblogs.com/stupidMartian/p/6076981.html

2021-01-18 16:26:29 506

原创 二分查找(74. 搜索二维矩阵)

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:​​输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false提示:m == m

2021-01-15 18:59:13 271

原创 记一次mysql中文乱码问题,druid连接池+mysql8.0

前言乱码问题主要是字符编码不配对引起的,也就是编码和解码的字符集不一致,就造成了乱码。mysql的字符集编码可以参考:mysql字符集与比较规则乱码问题:讲讲我的解决思路1、一开始看到这个问题,首先我先看了该schema下的字符集:show variables like '%char%';都正常,为utf8mb4。主要关注的是character_set_client、character_set_connection、character_set_results这三个变量。他们的含义可以看以

2021-01-04 19:36:40 2201 4

原创 jenkins打包指定节点

背景当jenkins有多个打包节点时,出现了某些节点状态不好,打包成功率低,比如磁盘满了,内存不足时。或者只有某几个节点符合打包的要求时,可以采用指定打包节点的方式。具体如何配置呢?参考以下步骤。配置步骤1、配置节点1.1进入节点管理:1.2 进入节点配置1.3 在Labels新增标签,多个标签之间用空格隔开2、打包任务配置2.1、进入需要指定节点的打包任务配置2.2、设置打包的节点标签小结配置好之后,该任务只会分配给该标签对应的节点,实现了指定节点打包的目的。...

2020-12-29 09:50:12 1901

原创 shell脚本变量字符串拼接的一个坑

背景问题发生在jenkins持续集成的打包脚本上,我们需要将数据库脚本按照不同条件抽取出来,放到不同的文件夹下。问题分析要实现这个需求,其中自然少不了条件判断,其中有一段代码:if [ -d "$tempPath/$VERSION/$VERSION_$vstandard" ]; then它的逻辑是,如果存在标准(standard)的脚本目录,则需要做一段逻辑。你能看出这个语句有什么问题吗?是的,它的字符串拼接的方式错了,就是这句$VERSION_$vstandard。我们通过Linux黑窗

2020-12-29 09:07:55 5681 1

原创 JVM进程CPU飙升的问题排查步骤

JVM进程中CPU飙升的问题排查步骤排查步骤定位进程定位线程计算获得线程号的16进制表示分析线程栈排查步骤定位进程通过top命令找出cpu占用高的进程。找到第一个进程,cpu占用达到99.7%,找出pid为8418.定位线程找到问题进程之后,通过top -Hp 8418,查看该进程中的线程。如下:我们看到线程号8509的线程占用cpu很多。计算获得线程号的16进制表示在shell命令行中通过:printf %x 8509,获得线程号的16进制表示为213d:分析线程栈通过jsta

2020-12-23 11:03:44 1030

原创 3、mysql字符集与比较规则

mysql字符集与比较规则概念介绍字符编解码常见的编码格式介绍比较规则mysql的字符集与比较规则mysql有哪些维度的字符集一次sql查询经历了怎样的编解码过程,由哪些参数决定比较规则举例自定义字符集与比较规则的sql概念介绍字符编解码我们知道不管是计算机存储还是网络上传输数据,其中传输的都是0101的二进制流。所以我们平时在网上收发消息,电脑上保存文本最终都是以二进制流的形式展现。在这个过程中,我们以小明要给小红发送一个字符串为例,小明在对话框中输入一句话,需要经过聊天软件进行编码成二进制流,通

2020-12-20 16:39:33 341

原创 2、mysql的启动选项和配置文件介绍

百因必有果mysql服务端可以指定允许同时接入的客户端数量max-connections、客户端与服务器的通信方式、表的默认存储引擎default_storage_engine等等设置项,使得我们可以更加灵活地使用它。进入正题我们讲的是基于linux系统的,本文我们主要讲一下:1、有哪些常用的启动选择配置方式?2、采用配置文件 配置启动选项有哪些注意点?配置文件的优先级?3、如何查看和设置系统变量?> 有哪些常用的启动选择配置方式?1、命令行配置如:mysqld --skip-ne

2020-12-18 17:13:02 528 1

原创 IDEA在debug的字节码与代码不匹配(source does not match the bytecode)

解决方案File-》settings勾选:show alternative source switcher前面就是打开:如果存在多个源代码的时候,让你自己选择打开之后debug,你就能看到代码选择栏:选择正确的代码:当你选择了编译的代码包时,就能对上了。OK!...

2020-12-17 17:33:59 12336 3

原创 @Value注解注入List、Set、Map数据结构

百因必有果我今天要讲的配置注入时基于*.properties文件的,yaml格式可能有点区别。借助@Value注解、SPEL表达式实现,请看一下示例:List @Value("#{'${list.type}'.split(',')}") private List<String> listType; list.type=1,2,3,4Set @Value("#{'${spring.redis.cluster.nodes}'.split(',')}") p

2020-12-17 16:20:44 6395

原创 1、mysql服务器处理客户端请求

实现效果客户端进程向服务端进程发送一段文本(sql语句),服务端进程处理后再向客户端返回一段文本(处理结果)。借鉴大佬的一张图:连接管理我们讲的服务器就是一个mysql服务器进程,一个进程占用一个端口号(mysql默认端口为3306),服务器会在3306端口监听客户端的连接。当客户端通过mysql -h 127.0.0.1 -u root -p进行连接服务器的时候,如果认证通过,服务器就会为客户端分配一个线程,处理该客户端的请求。当客户端断开连接的时候,服务器不会将连接的线程直接销毁,而是

2020-12-17 14:14:39 326

转载 Linux环境变量配置详解

这篇文章主要介绍了Linux环境变量配置全攻略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。下面所有例子的环境说明如下:系统:Ubuntu 14.0用户名:uusama需要配置MySQL环境变量路径:/home/uusama/mysql/binLinux读取环境变量的方法:export命令显示当前系统定义的所有环境变量echo $P.

2020-12-16 22:25:27 255 1

原创 Spring AbstractApplicationContext#refresh()源码解析(1)

源码一览 public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 1、Prepare this context for refreshing. prepareRefresh(); // 2、Tell the subclass to refresh the internal bean factory.

2020-12-07 21:26:37 268 1

原创 spring+tomcat的web项目一开始是怎么启动的

问题由来我们平时常用的spring+tomcat的web项目是怎么启动的呢?带着这个疑问探索一下。Tomact查看tomcat下/conf/context.xml:<Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource></Context>我们大概知道,默认的上下文加载

2020-12-06 22:01:08 2725 5

原创 spring web项目启动,没有反应

背景准备测试spring的一个特性,顺便重新搭一个springweb的项目工程。结果启动之后,访问没有反应,启动也没有报错。问题原因原因是我们没有指定web.xml的位置,tomcat找不到服务启动的入口在哪里。 就类似于我们买了新电脑安装系统,有了系统盘,却没有配置启动引导盘的位置问题解决如果你用IDEA的话,在进行配置。配置好之后就可以了。项目地址你也可以直接下载这个模板:https://gitee.com/chenweibiao2019/springaction...

2020-12-04 08:49:27 1136

原创 Linux进程的创建过程

进程进程的产生极大地提高的cpu的利用率,进程是cpu的执行单元。cpu可以通过进程切换提高使用率。那么Linux的进程是如何创建的呢?这里一副图,我们先看个大概:1、首先,我们得知道,我们的进程准备要干什么,这就需要写程序。如图右上角的.h .c文件,可以通过gcc编译成.o(可重定位目标文件,它是ELF(Relocatable File)文件的一种格式),里面包含了.text:编译好的二进制可执行代码,.data:已经初始化好的全局变量等,具体如下:.text:放编译好的二进制可执行代码.

2020-12-03 17:20:34 7452

原创 Linux系统调用流程

什么是系统调用?系统调用是操作系统提供给程序设计人员使用系统服务的接口系统调用流程Linux 提供了 glibc 库, 它封装了系统调用接口, 对上层更友好的提供服务, 系统调用最终都会通过 DO_CALL 发起, 这是一个宏定义, 其 32 位和 64 位的定义是不同的32 位系统调用用户态将请求参数保存到寄存器将系统调用名称转为系统调用号保存到寄存器 eax 中通过软中断 ENTER_KERNEL 进入内核态内核态将用户态的寄存器保存到 pt_regs 中在系统调

2020-12-02 19:20:46 370

原创 汇编语言常用命令解析

汇编语言的常用命令本文主要内容包含:mov, call, jmp, int, ret, add, sub, or, xor, shl, shr, push, pop, inc, dec, cmp命令解析mov使用方式:mov dest, source示例:mov count, ebx解析:将ebx寄存器中的数据赋值给变量countcall使用方式:call subprogram(子程序)示例:call inputCheck解析:调用inputCheck子程序jmp使用方式

2020-12-02 12:21:03 2169

原创 LinkedBlockingQueue与ArrayBlockingQueue的区别

LinkedBlockingQueue看LinkedBlockingQueue之前可以参考前一篇:ArrayBlockingQueue源码解读例子将前面的例子改为LinkedBlockingQueue实现,我们看到,程序依然可以正常运行。package juc;import org.junit.Test;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;pu

2020-11-13 11:02:45 488

小熊造报文(适用于模拟报文的循环制作)

小熊造报文(适用于模拟报文的循环制作),使用说明请访问博客:https://mp.csdn.net/console/editor/html/106395766

2020-05-28

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

TA关注的人

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