<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cong____cong的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cong____cong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cong____cong]]></copyright><item><title><![CDATA[Redis 手把手教你搭建Redis集群]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/111173911</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/111173911</guid><author>cong____cong</author><pubDate>Mon, 14 Dec 2020 16:49:02 +0800</pubDate><description><![CDATA[Redis Cluster 即 Redis 集群，是 Redis 官方在 3.0 版本推出的一套分布式存储方案。完全去中心化，由多个节点组成，所有节点彼此互联。Redis 客户端可以直接连接任何一节点获取集群中的键值对，不需要中间代理，如果该节点不存在用户所指定的键值，其内部会自动把客户端重定向到键值所在的节点。

Redis 集群是一个网状结构，每个节点都通过 TCP 连接跟其他每个节点连接。在一个有 N 个节点的集群中，每个节点都有 N-1 个流出的 TCP 连接，和 N-1 个流入的连接，这些 TCP]]></description><category></category></item><item><title><![CDATA[Spring Boot优雅关闭之Redisson中ExecutorService的关闭流程源码追溯]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/110119402</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/110119402</guid><author>cong____cong</author><pubDate>Wed, 25 Nov 2020 12:00:57 +0800</pubDate><description><![CDATA[起因


起源：在使用Redisson实现分布式定时调度的过程中，遇到一个非常奇怪的问题：经过一些操作后，调度器会报一个莫名其妙的错误，status is shutdown，经过多次观察发现是在rancher平台重新发布Spring Boot项目后就会报这个错误，怀疑和Spring Boot优雅关闭有关系，所以进行一个追溯确认的过程。


报错信息：



Reids数据：



然后翻阅RScheduledExecutorService 的方法，发现shutdown方法代码执行的 lua 脚本和目前...]]></description><category></category></item><item><title><![CDATA[利用Redisson实现分布式延时任务调度功能]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/109999330</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/109999330</guid><author>cong____cong</author><pubDate>Mon, 23 Nov 2020 16:52:34 +0800</pubDate><description><![CDATA[定时任务


定时任务是在编码世界中经常遇到的问题，比如定时备份数据库、定时刷新缓存等，可以通过Linux定时任务完成，也可以通过框架如Spring完成，但是在分布式场景中传统单机可以完成功能就不太行了，所以需要借助其他工具来实现任务调度的功能


场景：在一些订单场景中，用户下单后会锁定一些资源，然后用户非正常退出（没有触发取消订单操作），导致订单资源占用无法释放的问题。

借助工具：redisson分布式服务中的分布式调度任务服务（Scheduler Service）

代码

关单任务


定时执..]]></description><category></category></item><item><title><![CDATA[zookeeper 手把手教你搭建zk伪分布式]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/109024035</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/109024035</guid><author>cong____cong</author><pubDate>Mon, 12 Oct 2020 12:01:16 +0800</pubDate><description><![CDATA[由于资金和电脑配置的问题，只能搭建个伪分布式玩玩了，建议有理想的新青年尝试搭建分布式。


服务器：阿里云
shell：finalShell
zk：zookeeper-3.4.10（可以直接在官网下载，其他版本应该也可以）


# 解压一下，目录看个人，这里用的是 ~/software
tar -xvf zookeeper-3.4.10.tar.gz



重点关注一下 "bin"和"conf"这两个目录，是存储zk命令和配置文件的地方


# 修改配置文件
cp zoo_sample.cfg zoo...]]></description><category></category></item><item><title><![CDATA[Redis 数据结构——字典]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106993485</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106993485</guid><author>cong____cong</author><pubDate>Sun, 28 Jun 2020 10:12:15 +0800</pubDate><description><![CDATA[字典

一个键（key）可以和一个值（value）进行关联（或者说将键映射为值）， 这些关联的键和值就被称为键值对。

字典在 Redis 中的应用相当广泛， 比如 Redis 的数据库就是使用字典来作为底层实现的， 对数据库的增、删、查、改操作也是构建在对字典的操作之上的。

除了用来表示数据库之外， 字典还是哈希键的底层实现之一： 当一个哈希键包含的键值对比较多， 又或者键值对中的元素都是比较长的字符串时， Redis 就会使用字典作为哈希键的底层实现。

Redis 的字典使用哈希表作为底层实现， 一]]></description><category></category></item><item><title><![CDATA[Redis 数据结构——链表]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106993409</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106993409</guid><author>cong____cong</author><pubDate>Sun, 28 Jun 2020 10:09:42 +0800</pubDate><description><![CDATA[链表

链表在Redis中的应用非常广泛，比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素，又或者列表中包含的元素都是比较长的字符串时，Redis就会使用链表作为列表键的底层实现。

除了链表键之外， 发布与订阅、慢查询、监视器等功能也用到了链表， Redis 服务器本身还使用链表来保存多个客户端的状态信息， 以及使用链表来构建客户端输出缓冲区（output buffer）。

每个链表节点使用一个 adlist.h/listNode 结构来表示：


typedef struct li]]></description><category></category></item><item><title><![CDATA[Redis 数据结构——SDS]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106978800</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106978800</guid><author>cong____cong</author><pubDate>Sat, 27 Jun 2020 09:46:49 +0800</pubDate><description><![CDATA[简单动态字符串(sds)

定义

Redis没有直接使用C语言传统的字符串表示（以空字符结尾的字符数组），而是自己构建了一种名为简单动态字符串（simple dynamic string，SDS）的抽象类型，并将SDS用作Redis的默认字符串表示。


struct sdshdr {
  //记录buf
  数组中已使用字节的数量
  //等于SDS
  所保存字符串的长度
  int len;
  //记录buf
  数组中未使用字节的数量
  int free;
 ...]]></description><category></category></item><item><title><![CDATA[MySQL 简单聊聊并发控制、事务及多版本并发控制(MVCC)]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106843712</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106843712</guid><author>cong____cong</author><pubDate>Thu, 18 Jun 2020 21:34:14 +0800</pubDate><description><![CDATA[并发控制

读写锁

在处理并发读或者写时，可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁通常被称为共享锁. (shared lock)和排他锁(exclusive lock)，也叫读锁(read lock)和写锁(write lock)。

读锁是共享的，或者说是相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源，而互不干扰。写锁则是排他的,也就是说一个写锁会阻塞其他的写锁和读锁，这是出于安全策略的考虑，只有这样，才能确保在给定的时间里，只有一个用户能执行写入，并防止其他用户读取]]></description><category></category></item><item><title><![CDATA[Nginx 原理及配置文件]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106480397</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106480397</guid><author>cong____cong</author><pubDate>Mon, 01 Jun 2020 19:48:03 +0800</pubDate><description><![CDATA[master&amp;worker机制



work方式



master-workers 的机制的好处

首先，对于每个 worker 进程来说，独立的进程，不需要加锁，所以省掉了锁带来的开销，同时在编程以及问题查找时，也会方便很多。其次，采用独立的进程，可以让互相之间不会

影响，一个进程退出后，其它进程还在工作，服务不会中断，master 进程则很快启动新的 worker 进程。当然，worker 进程的异常退出，肯定是程序有 bug 了，异常退出，会导致当前 worker 上的所有请求失败，不过]]></description><category></category></item><item><title><![CDATA[Redis 主从配置]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106410423</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106410423</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 18:42:55 +0800</pubDate><description><![CDATA[就是我们所说的主从复制，主机数据更新后根据配置和策略，自动同步到备机的master/slaver机制，Master以写为主，Slave以读为主

主要功能


	读写分离
	
	
	容灾恢复
	
配置方法


	配从(库)不配主(库)
	

	从库配置：slaveof 主库IP 主库端口

	
		每次与master断开之后，都需要重新连接，除非你配置进redis.conf文件
		
		
		Info replication：可以查看Redis主从情况
		
	
修改配置文件细节操作


	拷贝多个red]]></description><category></category></item><item><title><![CDATA[MySQL MySQL 性能分析之show profile基本使用]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106407662</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106407662</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 16:25:42 +0800</pubDate><description><![CDATA[Show Profile

Show Profile 是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优测量。

默认情况下，参数处于关闭状态，并保存最近15次的运行结果

分析步骤

1. 是否支持，看看当前的SQL版本是否支持


Show variables like 'profiling';
# 默认是关闭，使用前需要开启

2. 开启功能


set profiling=on;

3.运行sql

我已经提前使用脚本在emp表中插入50w数据，所以这个直接写SQL.]]></description><category></category></item><item><title><![CDATA[MySQL 性能分析之慢查询日志、日志分析工具]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106406604</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106406604</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 16:09:51 +0800</pubDate><description><![CDATA[查询优化分析过程


=========分析==========
1.观察，至少跑1天，看看生产的慢SQL情况。
2.开启慢查询日志，设置阈值，比如超过5秒钟的就是慢SQL， 并将它抓取出来。
3.explain+慢SQL分析
4.show profile
5.运维经理orDBA，进行SQL数据库服务器的参数调优。

==========总结==========
1.慢查询的开启并捕获
2.explain+慢SQL分析
3.showprofile查询SQL在Mysql服务器里面的执行细节和生命周期情况
4.]]></description><category></category></item><item><title><![CDATA[MySQL 性能分析之ExPlain的基本使用]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106405792</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106405792</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 15:28:16 +0800</pubDate><description><![CDATA[MySQL Query Optimizer

Mysql中有专门负责优化SELECT语句的优化器模块，主要功能：通过计算分析系统中收集到的统计信息，为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式，但不见得是DBA认为是最优的，这部分最耗费时间)

当客户端向MySQL请求一条Query，命令解析器模块完成请求分类，区别出是SELECT并转发给MySQL Query Optimizer时，MySQL Query Optimizer首先会对整条Query进行优化，处理掉一些 常量表达]]></description><category></category></item><item><title><![CDATA[MySQL 聊聊索引]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106400730</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106400730</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 15:11:57 +0800</pubDate><description><![CDATA[索引

索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质：索引是数据结构。

可以简单理解为"排好序的快速查找数据结构"。

在数据之外，数据库系统还维护着满足特定查找算法的数据结构，这些数据结构以某种方式引用(指向)数据，这样就可以在这些数据结构上实现高级查找算法。这种数据结构，就是索引。

优劣

优势


	类似大学图书馆建书目索引，提高数据检索效率，降低数据库的IO成本
	
	
	通过索引列对数据进行排序，降低数据排序成本，降低了CPU的消耗
	
劣势


	实际上索引也]]></description><category></category></item><item><title><![CDATA[MySQL MySQL主从配置——一主一从]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106396967</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106396967</guid><author>cong____cong</author><pubDate>Thu, 28 May 2020 11:19:44 +0800</pubDate><description><![CDATA[master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件，binary log events;
	
	
	slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) ;
	
	
	slave重做中继日志中的事件，将改变应用到自己的数据库中。MySQL复制是异步的且串行化的
	
slave会从master读取binlog来进行数据同步 

复制的原则


	每个slave只有一个master
	
	
	每个slave...]]></description><category></category></item><item><title><![CDATA[MySQL 聊聊MySQL锁机制及事务]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106382923</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106382923</guid><author>cong____cong</author><pubDate>Wed, 27 May 2020 20:14:35 +0800</pubDate><description><![CDATA[锁机制

锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中，除传统的计算资源( 如CPU、RAM、 I/O等) 的争用以外，数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题，锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说，锁对数据库而言显得尤其重要，也更加复杂。

分类


	从数据操作的类型（读、写）分

	
		读锁（共享锁）：针对同一份数据，多个读操作可以同时进行而不会互相影响
		
		
		写锁（排它锁）：当前写操]]></description><category></category></item><item><title><![CDATA[Java JDK内置实用工具——监视工具、故障排除工具]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106349866</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106349866</guid><author>cong____cong</author><pubDate>Tue, 26 May 2020 10:41:39 +0800</pubDate><description><![CDATA[监视工具

JConsole

JConsole 图形用户界面是一种符合 Java 管理扩展 （JMX） 规范的监视工具。JConsole 使用 Java 虚拟机 （Java VM） 的广泛检测来提供有关在 Java 平台上运行的应用程序的性能和资源消耗的信息。

使用方法

本地

使用jconsole命令：监视本地运行的所有 Java 应用程序，JConsole 可以连接到这些应用程序。

使用jconsole PID命令：监视指定PID的Java应用程序。


获取java PID的方法：通过任务管理]]></description><category></category></item><item><title><![CDATA[MySQL 基础知识——配置文件、逻辑架构、存储引擎]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106149398</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106149398</guid><author>cong____cong</author><pubDate>Fri, 15 May 2020 20:56:30 +0800</pubDate><description><![CDATA[配置文件

二进制日志log-bin

用于主从复制

错误日志log-error

默认是关闭的，记录严重的警告和错误信息，每次启动和关闭的详细信息等。

查询日志log

默认关闭,记录查询的sql语句，如果开启会减低mysql的整体性能，因为记录日志也是需要消耗系统资源的

数据文件

frm文件

存放表结构

myd文件

存放表数据

myi文件

存放表索引

逻辑架构









和其它数据库相比，MySQL有点与众不同，它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存..]]></description><category></category></item><item><title><![CDATA[MySQL 入门及安装]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106149327</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106149327</guid><author>cong____cong</author><pubDate>Fri, 15 May 2020 20:52:48 +0800</pubDate><description><![CDATA[简介

概述

MySQL是一个关系型数据库管理系统，由瑞典MySQL AB公司开发，目前属于Oracle公司。 MySQL是一种关联数据库管理系统，将数据保存在不同的表中，而不是将所有数据放在一个大仓库内， 这样就增加了速度并提高了灵活 性。 Mysql是开源的，所以你不需要支付额外的费用。 Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 MySQL使用标准的SQL数据语言形式。 Mysq可以允许于多个系统上，并且支持多种语言。这些编程语言包括C、C++、Python、 Java、 P]]></description><category></category></item><item><title><![CDATA[Git 教程看这一篇就够了]]></title><link>https://blog.youkuaiyun.com/cong____cong/article/details/106148793</link><guid>https://blog.youkuaiyun.com/cong____cong/article/details/106148793</guid><author>cong____cong</author><pubDate>Fri, 15 May 2020 20:11:22 +0800</pubDate><description><![CDATA[基础杂项

Git基础概念


* 客户端并不只是提取最新版本的文件快照，而是把代码仓库完整的镜像下来
* git核心本质上是一个键值对数据库。可以向该数据库插入任意类型的内容，他会返回一个键值，通过该值可以在任意时刻再次检索该内容。


区域&amp;对象

区域


* 工作区 （沙箱环境 git不会管理 随便更改操作）
​
git add
​
* 暂存区  （记录文件的操作）
​
git commit 
​
* 版本库  （最终的代码实现提交到这里 .git目录就是版本库）

对象


* Git对.]]></description><category></category></item></channel></rss>