<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[heidou_2016的博客]]></title><description><![CDATA[永无止境]]></description><link>https://blog.youkuaiyun.com/heidou_2016</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heidou_2016]]></copyright><item><title><![CDATA[如何将一个git仓库拉下来的代码传到另一个仓库]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/148230907</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/148230907</guid><author>heidou_2016</author><pubDate>Mon, 26 May 2025 14:53:34 +0800</pubDate><description><![CDATA[git push new-origin <你的分支名称>（如果是所有分支使用 git push new-origin --all）如果 B 仓库已经有代码，推送时可能会遇到冲突或需要合并的情况，这时候需要根据冲突提示进行处理。git push --set-upstream new-origin <你的分支名称>git remote add new-origin <B仓库的URL>git clone <A仓库的URL> cd <仓库目录>验证推送是否成功 进入 B 仓库，确认代码已经上传成功。]]></description><category></category></item><item><title><![CDATA[部分浏览器 set-cookie 不成功踩坑记录]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/127705402</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/127705402</guid><author>heidou_2016</author><pubDate>Sat, 05 Nov 2022 16:36:46 +0800</pubDate><description><![CDATA[在WEB应用中，对于敏感业务，如：登录或者付款，需要使用HTTPS来保证内容的传输安全，而在用户成功获得授权之后，获得的客户端身份cookie如果没有设置为Secure，那么很有可能会被非HTTPS页面拿到，从而造成重要的身份泄露。公司正在做一个sso的单点登录的项目，做完之后，在测试阶段，不同的终端的兼容测试时候，好几个不同的浏览器出现了不同的问题，有登录之后自动退出，有登陆不成功等问题。而最终引发问题的原因是 set-cookie 中的 samesite 的兼容性引起的。]]></description><category></category></item><item><title><![CDATA[mysql 如何执行区分大小写的字符串比较]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106994984</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106994984</guid><author>heidou_2016</author><pubDate>Sun, 28 Jun 2020 11:16:47 +0800</pubDate><description><![CDATA[在windows平台下，mysql是不区分大小写的，因此字符串比较函数也是不区分大小写的，如果想执行区分大小写的比较，可以在字符串前面添加 BINARY 关键字，例如默认情况下'a'='A' 返回结果是1，如果使用BINARY关键字，BINARY 'a'='A'返回结果为0，在区分大小写的情况下，'a'与‘A’是不相同的。

代码验证如下：


SELECT 'a' = 'A';

SELECT * from test3 WHERE 'a' = 'A';

返回结果分别为 1 及 test3 表中数据...]]></description><category></category></item><item><title><![CDATA[mysql date类型数据插入]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106922316</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106922316</guid><author>heidou_2016</author><pubDate>Tue, 23 Jun 2020 14:08:35 +0800</pubDate><description><![CDATA[mysql允许"不严格"的语法：任何标点符号都可以作为日期部分之间的间隔符，例如"20/5/3","20@5@3","20@5/3","20.5.3"是等价的，这些值都可以正确的插入到数据库中。
]]></description><category></category></item><item><title><![CDATA[mysql 显示宽度]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106920005</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106920005</guid><author>heidou_2016</author><pubDate>Tue, 23 Jun 2020 11:52:12 +0800</pubDate><description><![CDATA[我们再MySQL中建表时常常要指定一个长度，但是这个长度并不是该数据类型占用的存储空间，而是所谓的显示宽度。下面我们来建个表测试下：


CREATE TABLE `test1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` tinyint(2) DEFAULT NULL,
  `name` varchar(3) COLLATE utf8mb4_bin DEFAULT NULL,
  `order` bigint(3) unsigned zerofill]]></description><category></category></item><item><title><![CDATA[高级排序之归并排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106615823</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106615823</guid><author>heidou_2016</author><pubDate>Mon, 08 Jun 2020 12:00:17 +0800</pubDate><description><![CDATA[1.什么是归并排序

归并排序（MERGE-SORT）是建立在归并操作上的一种有效的排序算法,该算法是采用分治法（Divide and Conquer）的一个非常典型的应用。将已有序的子序列合并，得到完全有序的序列；即先使每个子序列有序，再使子序列段间有序。若将两个有序表合并成一个有序表，称为二路归并。归并排序是一种稳定的排序方法。

2.归并排序图解



3.归并排序代码实现


    public static void mergeSort(int[] nums) {
        int len]]></description><category></category></item><item><title><![CDATA[高级排序之基数排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106614555</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106614555</guid><author>heidou_2016</author><pubDate>Mon, 08 Jun 2020 11:43:35 +0800</pubDate><description><![CDATA[1.什么是基数排序

基数排序（radix sort）属于“分配式排序”（distribution sort），又称“桶子法”（bucket sort）或bin sort，顾名思义，它是透过键值的部份资讯，将要排序的元素分配至某些“桶”中，藉以达到排序的作用，基数排序法是属于稳定性的排序，其时间复杂度为O (nlog(r)m)，其中r为所采取的基数，而m为堆数，在某些时候，基数排序法的效率高于其它的稳定性排序法。

2.基数排序图解



3.基数排序代码实现


     public static vo]]></description><category></category></item><item><title><![CDATA[高级排序之快速排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106613806</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106613806</guid><author>heidou_2016</author><pubDate>Mon, 08 Jun 2020 11:00:18 +0800</pubDate><description><![CDATA[1.什么是快速排序

快速排序（Quicksort）是对冒泡排序的一种改进。

快速排序由C. A. R. Hoare在1960年提出。它的基本思想是：通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列。

2.快速排序图解



3.快速排序代码


     public static void quickSort(int[] nums) {
       ]]></description><category></category></item><item><title><![CDATA[高级排序之希尔排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106575101</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106575101</guid><author>heidou_2016</author><pubDate>Fri, 05 Jun 2020 18:08:02 +0800</pubDate><description><![CDATA[1.什么是希尔排序

希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”（Diminishing Increment Sort），是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

希尔排序是把记录按下标的一定增量分组，对每组使用直接插入排序算法排序；随着增量逐渐减少，每组包含的关键词越来越多，当增量减至1时，整个文件恰被分成一组，算法便终止。

2.希尔排序图解





3.代码实现


public sta..]]></description><category></category></item><item><title><![CDATA[简单排序之插入排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106568924</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106568924</guid><author>heidou_2016</author><pubDate>Fri, 05 Jun 2020 13:57:02 +0800</pubDate><description><![CDATA[1.什么是插入排序

插入排序，一般也被称为直接插入排序。对于少量元素的排序，它是一个有效的算法。插入排序是一种最简单的排序方法，它的基本思想是将一个记录插入到已经排好序的有序表中，从而一个新的、记录数增1的有序表。在其实现过程使用双层循环，外层循环对除了第一个元素之外的所有元素，内层循环对当前元素前面有序表进行待插入位置查找，并进行移动。

2.插入排序图解



3.插入排序代码实现


    public static void insertSort(int[] nums) {
        ..]]></description><category></category></item><item><title><![CDATA[简单排序之选择排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106540764</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106540764</guid><author>heidou_2016</author><pubDate>Fri, 05 Jun 2020 12:03:40 +0800</pubDate><description><![CDATA[1.什么是选择排序

选择排序（Selection sort）是一种简单直观的排序算法。它的工作原理是：第一次从待排序的数据元素中选出最小（或最大）的一个元素，存放在序列的起始位置，然后再从剩余的未排序元素中寻找到最小（大）元素，然后放到已排序的序列的末尾。以此类推，直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

2.选择排序图解



3.选择排序代码实现


    public static void selectSort(int[] nums) {
        int len]]></description><category></category></item><item><title><![CDATA[简单算法之冒泡排序]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106540452</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106540452</guid><author>heidou_2016</author><pubDate>Thu, 04 Jun 2020 10:35:31 +0800</pubDate><description><![CDATA[1.什么是冒泡排序

冒泡排序（Bubble Sort），是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的元素列，依次比较两个相邻的元素，如果顺序（如从大到小、首字母从Z到A）错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换，也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端（升序或降序排列），就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样，故名“冒泡排序”。

2.冒泡排序图



3.冒泡排序代码实现


p]]></description><category></category></item><item><title><![CDATA[redis 主从 哨兵 集群 及原理]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106530299</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106530299</guid><author>heidou_2016</author><pubDate>Wed, 03 Jun 2020 18:59:39 +0800</pubDate><description><![CDATA[1.主从哨兵

1.主从哨兵架构图：



此图为最常见的一主两从结构，一个master主机，两个slave主机。每台主机上都运行着两个进程：

redis-server 服务，处理redis正常的数据操作与响应。master服务可读写，slave服务为只读，当master服务接受到数据修改或写入的命令时，会异步将命令发送到slave上，以此保持master与slave上数据的一致性。
	redis-sentinel 哨兵服务，此服务会监控master和slave服务是否正常运行，当超过半数的哨兵认定mas]]></description><category></category></item><item><title><![CDATA[redis 持久化策略 RDB AOF]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106526568</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106526568</guid><author>heidou_2016</author><pubDate>Wed, 03 Jun 2020 17:15:19 +0800</pubDate><description><![CDATA[大家都知道 redis是内存数据库，一旦断电就玩完，很多数据我们如果不去进行持久化的话，每次重启redis后，都需要对数据进行初始化，这样无疑给我们带来了不少的麻烦，并且你也并不知道断电时redis内的状况，为了解决这个令人头疼的问题，我们来了解下redis的两种持久化策略：RDB和AOF。

1.RDB

1）什么是RDB

RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢，你可以理解成把当前时刻的数据拍成一张照片保存下来。

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是]]></description><category></category></item><item><title><![CDATA[redis 过期键删除及内存释放策略]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106525042</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106525042</guid><author>heidou_2016</author><pubDate>Wed, 03 Jun 2020 15:29:53 +0800</pubDate><description><![CDATA[在Redis中，内存的大小是有限的，所以为了防止内存饱和，需要实现某种键淘汰策略。主要有两种方法，一种是对过期键进行删除的策略。另一种是当Redis内存不足时所采用的内存释放策略。

1.对过期键进行删除的策略

1，定时删除：在设置键的过期时间的同时，创建一个timer，让定时器在键的过期时间到达时，立即执行对键的删除操作。（主动删除）

优缺点：对内存友好，但是对cpu时间不友好，有较多过期键的而情况下，删除过期键会占用相当一部分cpu时间。

2，定期删除：每隔一段时间就对数据库进行一次检查，删除里面]]></description><category></category></item><item><title><![CDATA[redis 分布式锁实现及存在的问题]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106521017</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106521017</guid><author>heidou_2016</author><pubDate>Wed, 03 Jun 2020 14:35:57 +0800</pubDate><description><![CDATA[1.什么是分布式锁

为了防止分布式系统中的多个进程之间相互干扰，我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。

2.java中redis分布式锁的实现


    private static final String LOCK_SUCCESS = "OK";
    private static final String SET_IF_NOT_EXIST = "NX";
    private static final String SET_WITH]]></description><category></category></item><item><title><![CDATA[redis 缓存雪崩、穿透、击穿及解决方案]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106520015</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106520015</guid><author>heidou_2016</author><pubDate>Wed, 03 Jun 2020 11:34:12 +0800</pubDate><description><![CDATA[1.缓存雪崩

缓存雪崩，是指在某一个时间段，缓存集中过期失效。

产生雪崩的原因之一，比如马上就要到双十一零点，很快就会迎来一波抢购狂潮，这时候redis缓存中的数据集体过期了，而对这批商品的大量访问查询，都落到了数据库上，对于数据库而言，就会产生周期性的压力波峰。

面对这种情况，一般是采取不同分类商品，缓存不同周期。在同一分类中的商品，加上一个随机因子。这样能尽可能分散缓存过期时间，而且，热门类目的商品缓存时间长一些，冷门类目的商品缓存时间短一些，也能节省缓存服务的资源。

其实集中过期，倒不是非常致]]></description><category></category></item><item><title><![CDATA[redis配置文件中常用配置]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/106408258</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/106408258</guid><author>heidou_2016</author><pubDate>Thu, 28 May 2020 16:40:26 +0800</pubDate><description><![CDATA[打开redis.cof

################################### NETWORK###################################



# 指定 redis 只接收来自于该IP地址的请求，如果不进行设置，那么将处理所有请求
bind 127.0.0.1

#是否开启保护模式，默认开启。要是配置里没有指定bind和密码。开启该参数后，redis只会本地进行访问，
拒绝外部访问。要是开启了密码和bind，可以开启。否则最好关闭，设置为no
prot...]]></description><category></category></item><item><title><![CDATA[JVM指令手册]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/105669165</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/105669165</guid><author>heidou_2016</author><pubDate>Tue, 21 Apr 2020 22:07:05 +0800</pubDate><description><![CDATA[栈和局部变量操作



将常量压入栈的指令

aconst_null 将null对象引用压入栈

iconst_m1 将int类型常量-1压入栈

iconst_0 将int类型常量0压入栈

iconst_1 将int类型常量1压入栈

iconst_2 将int类型常量2压入栈

iconst_3 将int类型常量3压入栈

iconst_4 将int类型常量4压入栈

iconst_5 将...]]></description><category></category></item><item><title><![CDATA[Reactor模式详解]]></title><link>https://blog.youkuaiyun.com/heidou_2016/article/details/105382319</link><guid>https://blog.youkuaiyun.com/heidou_2016/article/details/105382319</guid><author>heidou_2016</author><pubDate>Wed, 08 Apr 2020 11:11:40 +0800</pubDate><description><![CDATA[什么是Reactor模式

要回答这个问题，首先当然是求助Google或Wikipedia，其中Wikipedia上说：“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The ser...]]></description><category></category></item></channel></rss>