<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[码到功成]]></title><description><![CDATA[技术人生]]></description><link>https://blog.youkuaiyun.com/psc928624742</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; psc928624742]]></copyright><item><title><![CDATA[Java字符编码—Unicode与UTF-8的区别]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/96473494</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/96473494</guid><author>psc928624742</author><pubDate>Fri, 19 Jul 2019 08:59:16 +0800</pubDate><description><![CDATA[Unicode字符集
Unicode，是计算机科学领域里的一项业界标准。为每种语言中的每个字符设定了统一并且唯一的整数值，把这个数值称为码点(Code Point)。
但是它并不规定计算机如何存储和传输这个数值（以多少个字节存储，是定长还是变长，Unicode没有字节长度的概念）。
Unicode 定义了一个码点空间包含1,114,112个码点，范围从0到0x10FFFF，也就是说，它仅仅是一个字...]]></description><category></category></item><item><title><![CDATA[elasticsearch节点角色]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/80247662</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/80247662</guid><author>psc928624742</author><pubDate>Tue, 08 May 2018 23:38:43 +0800</pubDate><description><![CDATA[在生产环境下，如果不修改elasticsearch节点的角色信息，在高数据量，高并发的场景下集群容易出现脑裂等问题。 
默认情况下，elasticsearch集群中每个节点都有成为主节点的资格，也都存储数据，即双重角色。

由两个属性控制：node.master和node.data，默认情况下这两个属性的值都是true： 
* node.master：表示节点是否具有成为主节点的资格，值为true...]]></description><category></category></item><item><title><![CDATA[ElasticSearch核心概念]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/80247634</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/80247634</guid><author>psc928624742</author><pubDate>Tue, 08 May 2018 23:34:10 +0800</pubDate><description><![CDATA[核心概念


Cluster，服务节点集合，集群名称必须唯一，默认为”elasticsearch”。
Node， 单服务节点，通过名称标识，默认为UUID，节点通过集群名加入集群中。
Index，把一个或多个分片的分组在一起的逻辑空间，默认分为5个主分片和一个replica分片，全部小写。
Type，索引的逻辑分区，在Index里可定义多个Type。
Document，被索引的基本单元，JSON格...]]></description><category></category></item><item><title><![CDATA[常用负载均衡策略分析]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/80215760</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/80215760</guid><author>psc928624742</author><pubDate>Sun, 06 May 2018 16:39:10 +0800</pubDate><description><![CDATA[背景

一般生产环境单机所能承受的QPS压力为2w左右，过大的压力会导致服务器爆炸。即便是单机能够撑住2w QPS，一般也不会这么做，生产环境一般会预留50%的冗余能力，防止QPS因为某个热门的活动而爆炸。当QPS超过单机所能承受的压力时，自然而然会想到引入分布式集群。那么，某一个请求会被哪台服务器处理呢，这是随机的，还是说按照一定的规则处理的？这就是负载均衡算法所要干的事。



负载均衡器

...]]></description><category></category></item><item><title><![CDATA[Java并发执行任务的几种方式]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/80211524</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/80211524</guid><author>psc928624742</author><pubDate>Sun, 06 May 2018 08:33:59 +0800</pubDate><description><![CDATA[背景

在编写业务代码时经常遇到并发执行多个任务的需求，因为串行执行太慢，会影响业务代码性能。特别对于直接面向普通用户的业务来说用户体验至关重要，保证用户体验重要的一点是要“快”。业务代码中经常需要调用其它业务接口或者同时从多个数据源取数据再处理等，这种情况下势必要走网络请求，网络消耗必不可少，最好的情况是毫秒级别，一般情况下是几十毫秒级别，甚至几百毫秒，TimeoutException恐怕大家并...]]></description><category></category></item><item><title><![CDATA[JAVA类加载器原理]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/78207251</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/78207251</guid><author>psc928624742</author><pubDate>Wed, 11 Oct 2017 19:20:51 +0800</pubDate><description><![CDATA[ClassLoader用于在运行时加载class文件。可以从文件系统、网络及其他源加载 Java有三个默认的ClassLoader，分别是：Bootstrap、Extension、System or Application类加载器。每一种类加载器都有预定义的加载路径，见下图。Java的类加载器遵循三原则： 
 1. 委派模型：当前ClassLoader优先把类加载请求委派给父ClassLoader加]]></description><category></category></item><item><title><![CDATA[solr集群搭建]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/77119459</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/77119459</guid><author>psc928624742</author><pubDate>Sat, 12 Aug 2017 15:54:05 +0800</pubDate><description><![CDATA[solrcloud介绍
SolrCloud(solr 云)是Solr提供的分布式搜索方案，支持大规模、容错、支持分布式索引和检索。它是基于solr和zookeeper的分布式搜索方案，使用zookeeper作为配置管理中心。

版本说明
本文根据业务场景，并没有使用最的版本，相关版本：solr-4.6.1、zookeeper-3.4.6。
搭建说明


下载]]></description><category></category></item><item><title><![CDATA[Tinyhttpd源码解析]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/50086945</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/50086945</guid><author>psc928624742</author><pubDate>Sat, 28 Nov 2015 21:06:59 +0800</pubDate><description><![CDATA[简介
Tinyhttpd是一轻量级的web服务器，它由美国学生J. David Blackstone于1999年在学习网络课程时编写。源码不到500行，非常适合学习Web编程和Linux/Unix编程接口。
分析
Tinyhttpd执行流程如下图：



主线程完成socket的创建、绑定、端口监听、创建子线程处理每一个请求。代码如下：
int main(void)
{
	int]]></description><category></category></item><item><title><![CDATA[nginx自定义字符串]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/49838051</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/49838051</guid><author>psc928624742</author><pubDate>Sat, 14 Nov 2015 19:27:33 +0800</pubDate><description><![CDATA[ngx_str_t是nginx自定义的字符串格式，其定义在ngx_string.h中，如下：typedef struct {
    size_t      len; //字符串长度，不含'\0'
    u_char     *data; //真正字符串
} ngx_str_t;它本质上就是一个结构体，nginx中广泛使用这种格式字符串。 
优点：减少对字符串长度的计算次数，nginx作为web服]]></description><category></category></item><item><title><![CDATA[线程安全单例模式几种优雅的实现]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/49056539</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/49056539</guid><author>psc928624742</author><pubDate>Sun, 11 Oct 2015 23:32:55 +0800</pubDate><description><![CDATA[线程安全的单例模式实现有几种思路，个人认为第2种方案最优雅： 
 1. 饿汉式 
 2. 列表内容 
 3. 借助内部类 
 4. 普通加锁解决 
 5. 双重检测，但要注意写法如果单体模式继续扩展为N元单体模式，那就是对象池模式了 
饿汉式单例public class Singleton {
   private final static Singleton INSTANCE = new Sing]]></description><category></category></item><item><title><![CDATA[行编辑器]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48845583</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48845583</guid><author>psc928624742</author><pubDate>Thu, 01 Oct 2015 11:45:38 +0800</pubDate><description><![CDATA[题目你知道行编辑器吗？不知道也没关系，现在我会告诉你： 
1.如果你收到一个’#’，那么你应该删掉一个你已经收到的字符，不包括’#’; 
2.如果你收到一个’@’，那么你应该把你收到的一整行都删掉。 
(‘#’和‘@’都为不可见字符。) 
你明白了吗？现在轮到你去解决这个问题啦！ 
输入 
第一行是一个整数T，代表有T组数据。 
每组数据的开始时一个字符串，字符串长度小于100，每个字符一定是(‘a]]></description><category></category></item><item><title><![CDATA[最长回文串]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48845083</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48845083</guid><author>psc928624742</author><pubDate>Thu, 01 Oct 2015 10:28:08 +0800</pubDate><description><![CDATA[题目回文串是指给定一个字符串，字符串的第一个字符等于最后一个字符，第n个字符等于倒数第n个字符，比如”a”, “aa”, “aba”, “abba”都是回文串。现在给定一个字符串，返回其中最长的回文子串，如果有多个一样长的子字符串，则返回第一个。 
测试样例1：输入是”a”, 程序输出”a”; 
测试样例2：输入是”abc”, 程序输出”a”; 
测试样例3：输入是” 121abcbad”, 程序输]]></description><category></category></item><item><title><![CDATA[二叉树的两个节点之间最远的距离]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48786963</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48786963</guid><author>psc928624742</author><pubDate>Mon, 28 Sep 2015 17:07:15 +0800</pubDate><description><![CDATA[题目：求二叉树的两个节点之间最远的距离。package java_exam;/**
 * 题目：求二叉树的两个节点之间最远的距离。
 * @author ShaoCheng
 * @version 1.0 2015-9-28
 */
/*
 * 计算一个二叉树的最大距离有两个情况:
 *  情况A: 路径经过左子树的最深节点，通过根节点，再到右子树的最深节点。
 *  情况B: 路径不穿过根节点，而]]></description><category></category></item><item><title><![CDATA[最长连续子数组和为0]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48752207</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48752207</guid><author>psc928624742</author><pubDate>Sat, 26 Sep 2015 16:23:51 +0800</pubDate><description><![CDATA[题目找出最长的连续子数组，其和为0。分析穷举法：两次扫描数组把所有的和为0的子数组长度均找出，然后再选择最大的。时间复杂O(n2)O(n^2)。改进：给定一个数组如，1, 2, 3, 4, -1, -2, -4, -3, 1, 1,1,1,1，求出其累加和数组1,3,6,10,9,7,3,0,1,2,3,4,5。顺序扫描数组，遇到0记录其索引值index，那么长度为index-0+1。如果遇到非0，]]></description><category></category></item><item><title><![CDATA[完全二叉树插入]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48742239</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48742239</guid><author>psc928624742</author><pubDate>Sat, 26 Sep 2015 00:03:14 +0800</pubDate><description><![CDATA[题目：给一颗完全二叉树，要求插入一个节点后，依然是完全二叉树。 
分析：利用完全二叉树的性质，找到要插入的位置，先判断左子树的最右结点与右子树的最右结点高度，如果相等，只需要插入到左子树即可，否则插入右子树。实现：/**题目：给完全二叉树插入一个节点，插完后保证还是完全二叉树
 * @author ShaoCheng
 * @version 1.0 2015-9-24
 */class TreeNo]]></description><category></category></item><item><title><![CDATA[正整数分解质因子]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48666191</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48666191</guid><author>psc928624742</author><pubDate>Tue, 22 Sep 2015 23:40:50 +0800</pubDate><description><![CDATA[输入正整数n，分解正整数n的质因子，并输出。 
分析： 
对n进行分解质因数，应先找到一个最小的质数k，是一个逐步分解的过程。因为我们知道任何n=2k1∗3k2∗5k3∗7k4...n=2^{k_1}*3^{k_2}*5^{k_3}*7^{k_4}...都可以分解成如下形式。 
代码如下：
递归实现
循环实现
import java.util.ArrayList;
import java.util.]]></description><category></category></item><item><title><![CDATA[硬币组合问题]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48576447</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48576447</guid><author>psc928624742</author><pubDate>Sat, 19 Sep 2015 16:57:28 +0800</pubDate><description><![CDATA[题目假设我们有8种不同面值的硬币｛1，2，5，10，20，50，100，200｝，用这些硬币组合够成一个给定的数值n。例如n=200，那么一种可能的组合方式为 200 = 3 * 1 + 1＊2 + 1＊5 + 2＊20 + 1 * 50 + 1 * 100. 问总过有多少种可能的组合方式？原题 转载分析这道题目是非常经典的动态规划算法题。给定一个数值sum，假设我们有m种不同类型的硬币v1,v2,]]></description><category></category></item><item><title><![CDATA[猴子分桃子问题]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48574027</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48574027</guid><author>psc928624742</author><pubDate>Sat, 19 Sep 2015 12:12:45 +0800</pubDate><description><![CDATA[题目题目：海滩上有一堆桃子，五只猴子来分。第一只猴子把这堆桃子凭据分为五份，多了一个，这只猴子把多的一个扔入海中，拿走了一份。第二只猴子把剩下的桃子又平均分成五份，又多了一个，它同样把多的一个扔入海中，拿走了一份，第三、第四、第五只猴子都是这样做的，问海滩上原来最少有多少个桃子？]]></description><category></category></item><item><title><![CDATA[【转】Google如何管理20亿行代码]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48573933</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48573933</guid><author>psc928624742</author><pubDate>Sat, 19 Sep 2015 11:55:42 +0800</pubDate><description><![CDATA[《Wired》今天一篇文章谈到Google的代码量已达到20亿行，并简单介绍了Google是如何管理这些代码的。这20亿行代码，涉及搜索、Gmail、文档、地图、YouTube、Google+等绝大多数Google提供的服务，存储在“一个”代码仓库中，两万五千名Google工程师都可以访问——这可能是世界上最大的单一代码库。只有几个例外：涉及机要信息的代码，如PageRank算法，或者相对独立的项目]]></description><category></category></item><item><title><![CDATA[计数排序]]></title><link>https://blog.youkuaiyun.com/psc928624742/article/details/48534191</link><guid>https://blog.youkuaiyun.com/psc928624742/article/details/48534191</guid><author>psc928624742</author><pubDate>Thu, 17 Sep 2015 23:47:59 +0800</pubDate><description><![CDATA[原理通过统计各个元素出现次数，以决定元素的位置。应用场景适合元素值不大，且重复较多的情况。计数排序的精髓在于通过统计次数进行排序，相比于比较排序算法，性能更佳。当适用场景有限，比如对公司员工按年龄排序等。性能时间复杂度仅O(n)，空间复杂度O(n)。代码    /* 非常巧妙的实现 */
    public static void countSort(int a[]){
        if(a]]></description><category></category></item></channel></rss>