<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[崔显龙的博客]]></title><description><![CDATA[简约至上]]></description><link>https://blog.youkuaiyun.com/cuixianlong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cuixianlong]]></copyright><item><title><![CDATA[赛马问题分析]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/108135919</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/108135919</guid><author>cuixianlong</author><pubDate>Thu, 20 Aug 2020 22:22:26 +0800</pubDate><description><![CDATA[最坏情况：C2全场第2名，C3全场第3名，则还需要C4与此时全场第4名进行一场比赛，确定最终的全场第4名，共计比赛11场。若J2未获取第2名，则需要J3与当前第3名进行第12场比赛，决出第3名（即全场第4名），共计12场；最好情况：C3未获得全场前3名位置，则C4必定不是全场前4名，则比赛结束，共计比赛10场；若全程都是情况三（最坏情况），则需要增加3场比赛，得出第2-4名次，最终比赛12场；保留：C2有可能成为第2-4名，C3有可能成为第3-4名，C4有可能成为第4名。]]></description><category></category></item><item><title><![CDATA[ElasticSearch 学习笔记：聚合(Aggregation) - Top Hits]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/104426160</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/104426160</guid><author>cuixianlong</author><pubDate>Fri, 21 Feb 2020 13:19:26 +0800</pubDate><description><![CDATA[聚合后，每一个聚合Bucket里面仅返回指定顺序的前N条数据。]]></description><category></category></item><item><title><![CDATA[Spring Boot 学习笔记：请求参数解析与返回数据处理]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/100590906</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/100590906</guid><author>cuixianlong</author><pubDate>Sun, 24 Nov 2019 19:58:34 +0800</pubDate><description><![CDATA[在刚刚使用 Spring 的时候，经常会有些疑问：（1）Spring 是如何帮我们把请求数据自动解析绑定到 Controller 方法入参？（2）Spring 是如何将 Controller 返回结果处理成 Response 返回给调用方的？（3）@RequestBody、@ResponseBody是干什么用的？（4）HttpMessageConverter、Converter有什么关系和区别？]]></description><category></category></item><item><title><![CDATA[后端项目结构管理]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/102882663</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/102882663</guid><author>cuixianlong</author><pubDate>Sun, 03 Nov 2019 16:02:00 +0800</pubDate><description><![CDATA[结合个人工作经验，对后端项目模块结构管理有一些见解，通过博文记录一下，欢迎各位博友指导。]]></description><category></category></item><item><title><![CDATA[Java 踩坑记录]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/102882437</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/102882437</guid><author>cuixianlong</author><pubDate>Sun, 03 Nov 2019 14:52:34 +0800</pubDate><description><![CDATA[当原包装类属性为null时（age==null），拆箱操作导致NullPointerException异常。不同浏览器对数值长度有不同的限制，导致数值会被截取掉部分内容（后面部分二进制位1变成0），最终显示错误。目前没有找到根本解决方案，临时方案是提供String类型字段，将长数值以字符串类型返回给前端展示。Functions是com.google.common.base包中的类，使用了错误的类方法。Integer包装类在遇到操作符==时，会先进行拆箱操作，然后获取实际数值进行比较；]]></description><category></category></item><item><title><![CDATA[Git：分支管理]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/102820543</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/102820543</guid><author>cuixianlong</author><pubDate>Wed, 30 Oct 2019 15:56:40 +0800</pubDate><description><![CDATA[结合个人工作经验，对代码分支管理有一些见解，通过博文记录一下，欢迎各位博友指导。]]></description><category></category></item><item><title><![CDATA[随记：真伪随机数]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/100702988</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/100702988</guid><author>cuixianlong</author><pubDate>Tue, 10 Sep 2019 16:51:17 +0800</pubDate><description><![CDATA[在Java中，可以通过 Random 构造一个对象，用于生成随机数。在构造方法中，可以传入一个 long 类型的 seed 参数作为“种子”，内部会基于这个“种子”来生成随机数，代码如下：


long seed = System.currentTimeMillis();
Random random = new Random(seed);
random.nextInt();  // 生成一个随机i...]]></description><category></category></item><item><title><![CDATA[Java i++ 与 ++i 原理]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/100151895</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/100151895</guid><author>cuixianlong</author><pubDate>Fri, 30 Aug 2019 11:22:29 +0800</pubDate><description><![CDATA[记得大学期间学习C语言的时候，对于 i++ 和 ++i （i-- 和 --i）的理解，一直似懂非懂的状态，因为很多人给出的解释都不够严谨，比如：i++是在操作之后增加，而++i是在操作之前增加。但是，如何确定“操作”的时间点呢？由于平时使用的时候，没有出现过什么问题，为了代码的可读性，也不会刻意写一些“看似很牛X”的复杂且冗长的代码，这个问题也就没有去深究。今天突然心血来潮，想弄清楚其中的原理，并以此文作为记录。]]></description><category></category></item><item><title><![CDATA[Spring Boot 学习笔记：启动过程方法]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/99833684</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/99833684</guid><author>cuixianlong</author><pubDate>Tue, 20 Aug 2019 13:30:12 +0800</pubDate><description><![CDATA[【代码】Spring Boot 学习笔记：启动过程方法。]]></description><category></category></item><item><title><![CDATA[图论-广度遍历：单词接龙]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/98487227</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/98487227</guid><author>cuixianlong</author><pubDate>Mon, 05 Aug 2019 14:53:49 +0800</pubDate><description><![CDATA[给定两个单词（beginWord 和 endWord）和一个字典，找到从 beginWord 到 endWord 的最短转换序列的长度。你可以假设 beginWord 和 endWord 是非空的，且二者不相同。中文版 LeetCode 127题 - 单词接龙 问题。转换过程中的中间单词必须是字典中的单词。如果不存在这样的转换序列，返回 0。每次转换只能改变一个字母。所有单词只由小写字母组成。（源自LeetCode）所有单词具有相同的长度。字典中不存在重复的单词。]]></description><category></category></item><item><title><![CDATA[Git：使用多个账号（ssh-key）]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/98101251</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/98101251</guid><author>cuixianlong</author><pubDate>Thu, 01 Aug 2019 20:54:02 +0800</pubDate><description><![CDATA[问题背景

工作使用的时候，使用公司的GitLab仓库，仓库域名为gitlab.biz.domain，员工账号为coder@biz.com；

维护个人项目的时候，使用GitHub仓库，仓库域名为github.com，个人账号为coder@163.com；

两个仓库都通过ssh-key验证，本地git提交代码时，可以根据需要，使用不同的key，提交至不同的仓库。



解决方案

本地生成两套...]]></description><category></category></item><item><title><![CDATA[随记：判断是否更新字段]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/95617035</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/95617035</guid><author>cuixianlong</author><pubDate>Fri, 12 Jul 2019 14:51:05 +0800</pubDate><description><![CDATA[问题背景：

在封装通用的数据库操作类时，对于“增、删、查”的编码没有太大问题，但是对于“改（更新）”，却出现了一个问题。

在首次存储一条记录时，可以将目标对象的所有字段值原样存入即可，有值则存值，为null则存null。

但在更新的时候，对于为null的字段，如何区分是“不更新该字段”，还是“将该字段更新为null”？

当然，可以先进行一次读取操作，然后在修改DTO对象的字段值，最终完全覆...]]></description><category></category></item><item><title><![CDATA[链表：快慢指针]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/95175312</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/95175312</guid><author>cuixianlong</author><pubDate>Tue, 09 Jul 2019 13:41:49 +0800</pubDate><description><![CDATA[快慢指针法是链表算法中常用的一种方法，通过两个步长不同的移动指针，可以帮助解决一些链表中的问题。通常，慢指针每次移动一个节点，快指针每次移动两个节点，因此，二者的路径存在一个二倍的数学关系（偶数节点情况下）。]]></description><category></category></item><item><title><![CDATA[最小堆：TopK问题]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/91870245</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/91870245</guid><author>cuixianlong</author><pubDate>Thu, 13 Jun 2019 16:16:23 +0800</pubDate><description><![CDATA[在解决TopK问题时，综合各方面考虑，最小堆方案比较好，其时间复杂度为O(n*lgK)，空间复杂度为O(K)。（1）构造一个大小为K的最小堆，用于存储当前TopK元素，堆顶为TopK元素中最小的元素，即第K个元素；由于空间复杂度取决于K值，因此，可应用于大量流数据的TopK问题（无法将全部数据载入内存的情况）。（2）每读入一个元素，与堆顶元素比较，若大于堆顶元素，则替换堆顶元素，并将新的堆顶元素进行排序。]]></description><category></category></item><item><title><![CDATA[状态机：只出现一次的数字II]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90577875</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90577875</guid><author>cuixianlong</author><pubDate>Sun, 26 May 2019 19:42:12 +0800</pubDate><description><![CDATA[以二进制数的角度考虑每一个数组元素，统计每一个二进制位上出现1的次数并对3取模（相当于：重复元素出现3次会被抵消清零），最终可以得到只出现一次的元素的二进制位情况，例如：对于 [ 9, 2, 2, 3, 2, 9, 9] 数组，其二进制位统计情况如表所示。通过观察，对于 nb1 的关系表达式，有公共项 ~ob2 可以提取，即 nb1 = ~ob2 & (ob1 & ~input | ~ob1 & input)注释：标红部分为计数增加的情况，由于取值范围为 0-2，因此，2 + 1 = 0。]]></description><category></category></item><item><title><![CDATA[动态规划：单词拆分]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90270628</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90270628</guid><author>cuixianlong</author><pubDate>Thu, 16 May 2019 19:46:59 +0800</pubDate><description><![CDATA[给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict，判定 s 是否可以被拆分为一个或多个在字典中出现的单词。（2）然后，从剩余部分开始，继续遍历寻找子字符串，若某子串str2为字典里的某个单词，则str1+str2部分满足条件；（1）首先，从开始位置，遍历寻找子字符串，若某子串str1为字典里的某个单词，则str1部分满足条件；其中，绿色部分表示当前步骤找到的满足条件的子字符串，黑色部分表示之前步骤确定的满足条件的子字符串部分。下面，通过图解方式，来描述该问题的动态规划思路。]]></description><category></category></item><item><title><![CDATA[回溯算法（试探算法）]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90257570</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90257570</guid><author>cuixianlong</author><pubDate>Thu, 16 May 2019 10:48:25 +0800</pubDate><description><![CDATA[以此类推，当最后一个满足条件的子字符串结束位置正好在原字符串 s 结尾处，则表示正好将原字符串 s 分割为多个回文子串，即该分割方案是满足条件的一个解。）是一种按指定策略遍历所有可能路径的方法，在遍历的过程中，找出所有满足条件的解。每走一步，判断当前情况是否满足条件，若满足条件，则在该路径上继续试探，若不满足条件，则回溯（回退）至上一步，然后换一条路径继续试探。例题：给定一个字符串 s，将 s 分割成一些子串，使每个子串都是回文串。由于该题需要找到所有满足条件的方案，因此，使用回溯算法进行求解。]]></description><category></category></item><item><title><![CDATA[动态规划：鸡蛋掉落]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90232587</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90232587</guid><author>cuixianlong</author><pubDate>Wed, 15 May 2019 13:48:57 +0800</pubDate><description><![CDATA[你知道存在楼层 F ，满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎，从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动，你可以取一个鸡蛋（如果你有完整的鸡蛋）并把它从任一楼层 X 扔下（满足 1 <= X <= N）。通过上述方案，可以找到题目的答案，但是，无法通过 LeetCode 检测，因为耗时超过限制。由于鸡蛋的数量在寻找过程中是变化的，即某一步骤的鸡蛋数量，取决于前一步骤的鸡蛋是否破碎。，因此，对于 1 <= X <= N 的所有解，应该取最小的一个解，即。]]></description><category></category></item><item><title><![CDATA[Java 8 日期、时间与格式化]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90177840</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90177840</guid><author>cuixianlong</author><pubDate>Mon, 13 May 2019 18:32:50 +0800</pubDate><description><![CDATA[本文目录

1 Instant

2 ZoneId

3 LocalDateTime

4 ZonedDateTime

5 关系图解

6 时间格式化

7 相关文章



1 Instant

Instant 表示基于世界标准时间（UTC）的时间线上的某一个时间点，通常用作事件的时间戳。

Instant 取值为 基于世界标准时间 从1970/01/01 00:00:00.000 到 某一...]]></description><category></category></item><item><title><![CDATA[异或（^）的性质与应用]]></title><link>https://blog.youkuaiyun.com/cuixianlong/article/details/90064348</link><guid>https://blog.youkuaiyun.com/cuixianlong/article/details/90064348</guid><author>cuixianlong</author><pubDate>Fri, 10 May 2019 16:06:28 +0800</pubDate><description><![CDATA[本文目录

1 基本概念

2 异或应用

3 相关文章



1 基本概念

1.1 符号

异或是一种二进制的位运算，符号以XOR 或 ^ 表示。



1.2 运算规则

相同为0，不同为1，即

1 ^ 1 = 0

0 ^ 0 = 0

1 ^ 0 = 1

由运算规则可知，任何二进制数与零异或，都会等于其本身，即 A ^ 0 = A。



1.3 异或性质

（1）交换律： ...]]></description><category></category></item></channel></rss>