<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[NothingYCX的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/NothingYCX</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NothingYCX]]></copyright><item><title><![CDATA[【冒泡排序回顾】深入理解冒泡排序]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117480057</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117480057</guid><author>NothingYCX</author><pubDate>Wed, 02 Jun 2021 19:28:44 +0800</pubDate><description><![CDATA[文章目录冒泡排序个人理解1.原理：2.思路：3.算法分析：4.代码：5.几个思考问题：

冒泡排序个人理解
冒泡排序只会操作相邻的两个数据：

让小的数冒上来，大的数沉下去，N个数字要排序完成，总共进行N-1趟排序，每第i趟的排序次数为(N-i)次。
外层控制循环冒泡多少趟，内层控制每一趟的循环次数==

每次冒泡操作都会对相邻的两个元素进行比较，看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置，重复 n 次，就完成了 n 个数据的排序工作。
用一个例子，带你看.]]></description><category></category></item><item><title><![CDATA[【堆排序回顾】堆排序的理解]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117479704</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117479704</guid><author>NothingYCX</author><pubDate>Wed, 02 Jun 2021 19:22:32 +0800</pubDate><description><![CDATA[文章目录堆排序堆排序有两种方法堆排序第一种实现思路——构造堆+排序：步骤一 ：构造初始堆。将给定无序序列构造成一个大顶堆（一般升序采用大顶堆，降序采用小顶堆)。步骤二 ：将堆顶元素与末尾元素进行交换，使末尾元素最大。然后继续调整堆，再将堆顶元素与末尾元素交换，得到第二大元素。如此反复进行交换、重建、交换。堆排序过程：代码：为什么说堆排序没有快速排序快？如何理解“堆”？要实现一个堆，先要知道，堆都支持哪些操作以及如何存储一个堆。1、往堆中插入一个元素2.删除堆顶元素

堆排序
堆排序有两种方法
方法一：前提.]]></description><category></category></item><item><title><![CDATA[【插入排序、选择排序回顾】插入排序、选择排序、希尔排序的理解]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117479470</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117479470</guid><author>NothingYCX</author><pubDate>Wed, 02 Jun 2021 19:11:35 +0800</pubDate><description><![CDATA[文章目录插入排序（Insertion Sort）插入排序具体实现：代码：复杂度：选择排序（Selection Sort）：希尔排序

# 插入排序、选择排序、希尔排序
插入排序（Insertion Sort）
一个有序的数组，我们往里面添加一个新的数据后，如何继续保持数据有序呢？很简单，我们只要遍历数组，找到数据应该插入的位置将其插入即可。

这是一个动态排序的过程，即动态地往有序集合中添加数据，我们可以通过这种方法保持集合中的数据一直有序。而对于一组静态数据，我们也可以借鉴上面讲的插入方法，来进行排序，.]]></description><category></category></item><item><title><![CDATA[【归并排序回顾】深入理解归并排序]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117478596</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117478596</guid><author>NothingYCX</author><pubDate>Wed, 02 Jun 2021 19:03:37 +0800</pubDate><description><![CDATA[提示：文章写完后，目录可以自动生成，如何生成可参考右边的帮助文档

文章目录归并排序分治思想：分而治之划分时怎么知道划分成为一个一个的呢merge 合并并且排序，谁小把谁拉下来复杂度与稳定性：注意：常用排序算法复杂度对比：代码实现：

归并排序
一般用在数据量很大的外部排序（放到磁盘上的，内存放不下）


分治思想：分而治之
归并排序：先划分成（/2，向下取整，把mid也划分到左边）直到都只有单独的一个元素，再合并的过程就是排序的过程。
合并排序，哪一个更小就放在前面，怎么拆分的就怎么合并回去，比较要合并的]]></description><category></category></item><item><title><![CDATA[【快速排序回顾】详细分析]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117448531</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117448531</guid><author>NothingYCX</author><pubDate>Tue, 01 Jun 2021 18:11:47 +0800</pubDate><description><![CDATA[目录快速排序思路：原理图解：代码：复杂度O(nlogn)分析：
快速排序思路：


先把数组中的一个数当成基准数，一般会把数组最左边的数当成基准数，而不一定是从原数组的第0个位置开始；


如果把数组最左边的数当成基准数，那么【一定要先从右边开始检索比基准数小的，找到有小于基准数的就先停下】，（如果先从左边开始找大于基准数时恰好大于的基准数的在最右边时方法失效）；


再从左边检索比基准数大的，检索到了也暂时停下；


然后交换这两个元素，然后继续检索；


一旦左右检索指针相遇就立即停止检索，然后把基准数]]></description><category></category></item><item><title><![CDATA[【JUC】常用辅助类总结记录——线程减法、加法计数器、信号量]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117287817</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117287817</guid><author>NothingYCX</author><pubDate>Wed, 26 May 2021 13:46:55 +0800</pubDate><description><![CDATA[提示：多线程编程和操作系统结合着理解

文章目录一、CountDownLatch——countDown()、await()官方文档的描述：一眼看过去有点懵~直接看下面的举例示例结果注意原理二、CyclicBarrier——await()官方文档的描述：一眼看过去有点懵~直接看下面的举例示例结果原理三、Semaphore——acquire()、release()官方文档的描述：一眼看过去有点懵~直接看下面的“抢车位”举例示例注意观察结果原理

一、CountDownLatch——countDown()、awa]]></description><category></category></item><item><title><![CDATA[【二刷随笔】剑指 Offer 43. 1～n 整数中 1 出现的次数——绝对非常简单易懂的思路！！！]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117197863</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117197863</guid><author>NothingYCX</author><pubDate>Sun, 23 May 2021 17:36:42 +0800</pubDate><description><![CDATA[问题描述：
输入一个整数 n ，求1～n这n个整数的十进制表示中1出现的次数。
例如，输入12，1～12这些整数中包含1 的数字有1、10、11和12，1一共出现了5次。

示例 1：
输入：n = 12 输出：5
示例 2：
输入：n = 13 输出：6

解题思路——直接看代码就行
//【思路】找每一位出现1时分别一共有多少情况，注意输入是n，但代表的是1-n的n个整数，分成3类来讨论
class Solution {
    public int countDigitOne(int n) {
    ]]></description><category></category></item><item><title><![CDATA[【二刷随笔】剑指 Offer 56 - I. 数组中数字出现的次数 位运算（详解） / 暴力解]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117038258</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117038258</guid><author>NothingYCX</author><pubDate>Wed, 19 May 2021 18:00:39 +0800</pubDate><description><![CDATA[项目场景：
提示：这里简述项目相关背景：
例如：项目场景：示例:通过蓝牙芯片(HC-05)与手机 APP 通信，每隔 5s 传输一批传感器数据(不是很大)

问题描述：
提示：这里描述项目中遇到的问题：
例如：数据传输过程中数据不时出现丢失的情况，偶尔会丢失一部分数据
APP 中接收数据代码：
@Override
        public void run() {
            bytes = mmInStream.read(buffer);
            mHandler.obta]]></description><category></category></item><item><title><![CDATA[【日常记录】在某个时间点或一段时间内，Redis突然访问延迟的原因分析]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/117016338</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/117016338</guid><author>NothingYCX</author><pubDate>Wed, 19 May 2021 09:49:11 +0800</pubDate><description><![CDATA[分析一下在实际使用中，某个时间点或一段时间内导致Redis突然出现访问延迟可能出现的原因。有时间记得更出这些原因的具体排查方法。

可能导致Redis出现延迟的原因分析1. 使用了复杂度高的命令2. 存储了大key3. 大量的key集中过期4. 实例内存达到上限5. fork耗时严重6. 绑定CPU7. 开启了AOF8. （操作系统）使用了Swap9. 网卡负载过高后续

1. 使用了复杂度高的命令

通过查看慢日志记录，我们就可以知道Redis在什么时间执行哪些命令比较耗时，
如果你的业务经常使用O(n)]]></description><category></category></item><item><title><![CDATA[【二刷随笔】剑指 Offer 37. 序列化二叉树 / leetcode 297，BFS，超详细解题记录！]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/116671353</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/116671353</guid><author>NothingYCX</author><pubDate>Tue, 11 May 2021 22:13:53 +0800</pubDate><description><![CDATA[目录剑指 Offer 37. 序列化二叉树 / leetcode 297：代码，注释很详细，直接看也行：思路：1、序列化2、辅助函数strToNode3、反序列化

剑指 Offer 37. 序列化二叉树 / leetcode 297：
二叉树的序列化与反序列化
题目链接：https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/

代码，注释很详细，直接看也行：
 // BFS，层序遍历 时间：O（n）；空间：因为用到额外的queue ，O..]]></description><category></category></item><item><title><![CDATA[yum安装RabbitMQ]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/116333177</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/116333177</guid><author>NothingYCX</author><pubDate>Sat, 01 May 2021 21:03:57 +0800</pubDate><description><![CDATA[1.更新下yum源
yum update

2.安装erlang
yum install epel-release
yum install erlang

3.安装rabbitmq-server
yum install rabbitmq-server

4.启动
/usr/lib/rabbitmq/bin/rabbitmq-server -detached

日志文件：
/var/log/rabbitmq/rabbit@localhost.log

配置文件
/etc/rabbitmq/rabbitmq.c]]></description><category></category></item><item><title><![CDATA[【正则表达式】通俗易懂——正则表达式的零宽断言：?=、?＜=、?!、?＜! 的具体使用区别]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/116085261</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/116085261</guid><author>NothingYCX</author><pubDate>Sat, 24 Apr 2021 12:05:25 +0800</pubDate><description><![CDATA[ps：想吐槽一下，什么前瞻，后顾，负前瞻，负后顾，小白就想简单了解会用而已，为啥网上很多明明很简单的东西非得写的那么…举的例子也那么…，对小白一点也不友好~
一、个人理解：
1、将 &lt; 看成方向，包含这个箭头说明是放在要去匹配的目标内容的左边（来开头）；
2、把 ?! 看成 ?!= 就好了
3、一定要记住：匹配得到的结果并不包含 ?=、?&lt;=、?!和?&lt;!=里面的内容的！！！

二、?=、?&lt;=、?!、?&lt;! 的具体使用区别：
【1】?= ： 询问要去匹配的目标的后面跟着的东西]]></description><category></category></item><item><title><![CDATA[Error:(3, 29) java: 程序包org.junit.jupiter.api不存在]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/116020826</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/116020826</guid><author>NothingYCX</author><pubDate>Thu, 22 Apr 2021 16:57:40 +0800</pubDate><description><![CDATA[问题描述：Error:(3, 29) java: 程序包org.junit.jupiter.api不存在：
原因分析：
IDEA里默认的版本为3.8.1，修改为高版本就可以了,因为3.x使用的为编程的方式，4.x以后为注解的形式。

解决方案：
&lt;dependency&gt;
	&lt;groupId&gt;org.junit.jupiter&lt;/groupId&gt;
	&lt;artifactId&gt;junit-jupiter-api&lt;/artifactId&gt;
	&lt;ve.]]></description><category></category></item><item><title><![CDATA[JMeter压测接口报错如何定位问题所在]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115963204</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115963204</guid><author>NothingYCX</author><pubDate>Wed, 21 Apr 2021 17:06:07 +0800</pubDate><description><![CDATA[问题场景：
最近学习用到JMeter，初次接触难免遇到问题，记录一下最简单的解决办法。

1、暂时只启动一个线程跑一次，然后在服务器上debug
另外：
1、为什么不在自己的电脑上压测服务器下的网站，而是在服务器上压测？

主要是为了排除掉网络带宽的影响，比如在使用云服务器，网络带宽就是一个非常大的限制因素。一般压测机器和应用机器在同一个局域网之内，排除掉网络带宽的影响

2、压测时，有错误就说明达到系统处理能力的极限了，单机的QPS不可能无限制的高。

2、在jmeter中添加“查看结果树”，就可以看到详]]></description><category></category></item><item><title><![CDATA[＜日常记录＞使用@Transactional事务回滚失败的一个细小原因——MySQL中字段最好设置为非空（除非必要）]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115561202</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115561202</guid><author>NothingYCX</author><pubDate>Fri, 09 Apr 2021 23:04:23 +0800</pubDate><description><![CDATA[@Transactional注解事务失效

问题描述：
1、首先注解、各层代码均无问题；
2、然后尝试网上诸多办法未果（甚至去看了 @Transactional的原理…）；
3、最后回到数据库去检查，发现MySQL中新建一个表，其中事务要涉及的某个字段没有设置为 【非空】 ，更改后事务回滚成功！

原因分析：
提示：有时间再把原因整理出来（从MySQL事务角度出发分析即可）。


...]]></description><category></category></item><item><title><![CDATA[开放域对话系统的属性一致性识别研究]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115356470</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115356470</guid><author>NothingYCX</author><pubDate>Wed, 31 Mar 2021 19:44:32 +0800</pubDate><description><![CDATA[EMNLP 2020 | 开放域对话系统的属性一致性识别
论文：Proﬁle Consistency Identiﬁcation for Open-domain Dialogue Agents
作者：宋皓宇，王琰，张伟男，赵正宇，刘挺，刘晓江
论文链接：https://www.aclweb.org/anthology/2020.emnlp-main.539.pdf
资源地址：https://github.com/songhaoyu/KvPI

文章目录前言一、论文研究目的二、KvPI数据集三、KvBERT模]]></description><category></category></item><item><title><![CDATA[＜日常记录＞指标监控可视化工具的使用]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115326130</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115326130</guid><author>NothingYCX</author><pubDate>Tue, 30 Mar 2021 16:01:53 +0800</pubDate><description><![CDATA[指标监控功能可视化：
1、前提：对SpringBoot中指标监控功能有一定了解（SpringBoot Actuator相关），这里只是一个工具的快速使用示例记录，详细使用的话参照开源地址的A quick guide 。
2、利用一个可视化开源工具来每隔一段时间就收集各个微服务的监控指标并展示所有微服务模块的监控数据。

开源工具Spring Boot Admin地址
https://github.com/codecentric/spring-boot-admin

Step0：准备工作
1、模拟创建一个本地]]></description><category></category></item><item><title><![CDATA[阿里云部署SSM项目与SpringBoot项目超详细步骤（含JDK、Tomcat、MySQL、Redis、Nginx等）]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115286067</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115286067</guid><author>NothingYCX</author><pubDate>Mon, 29 Mar 2021 23:24:16 +0800</pubDate><description><![CDATA[日常记录：
1、在阿里云服务器上搭建程序执行环境，并在服务器上发布运行项目，遇到问题及解决措施。
2、从零开始部署项目，超详细步骤，干货满满，一步到位！
3、不过因为是整理回忆之前的笔记，难免有疏漏，但应该不会有哈哈哈。
ps：如有问题，还请大佬指点一二。

文章目录前言一、执行环境介绍1、阿里云服务器：CentOS 7.32、JDK 1.83、Tomcat 8.54、MySQL 5.75、Redis 4.0.26、Nginx 1.9二、服务器安装JDK与Tomcat2.1、JDK1.8安装2.2、Tomc]]></description><category></category></item><item><title><![CDATA[＜日常记录＞：请求域，会话域，上下文域。]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115183485</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115183485</guid><author>NothingYCX</author><pubDate>Wed, 24 Mar 2021 18:10:09 +0800</pubDate><description><![CDATA[Servlet的三个作用域：请求域，会话域，上下文域之间的区别




作用域
接口名
作用范围
生命周期




请求域
HttpServletRequest
1个用户的1次请求
1次请求


对话域
HttpSession
1个用户的所有请求
当1次会话结束


上下文域
ServletContext
所有用户的所有请求
重启或关闭服务器


三个作用域的通用方法




方法
作用




setAttribute
存放数据


getAttribute
获取数据


removeAttribute
]]></description><category></category></item><item><title><![CDATA[自定义微信公众号测试号时的小坑记录]]></title><link>https://blog.youkuaiyun.com/NothingYCX/article/details/115036211</link><guid>https://blog.youkuaiyun.com/NothingYCX/article/details/115036211</guid><author>NothingYCX</author><pubDate>Sat, 20 Mar 2021 23:19:03 +0800</pubDate><description><![CDATA[提示：这里我是在已经实现微信连接等第三方等功能之后测试发现并解决的一些问题记录。
文章目录1、微信公众号测试号设置自定义菜单：2、关注公众号之后，如果想要获取扫描微信用户的基本信息，则应在自定义body的时候要使用在微信浏览器里访问的url（前提自定义好相关接口），否则无法获取，影响相关功能的使用。3、如下举例：这里将会获取到code,之后再可以通过code获取到access_token 进而获取到当前微信用户信息。

1、微信公众号测试号设置自定义菜单：

1.1	申请测试号（直接微信扫码即可）：地址点这]]></description><category></category></item></channel></rss>