<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[寻道]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ghsau</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghsau]]></copyright><item><title><![CDATA[求编辑距离]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/78903076</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/78903076</guid><author>ghsau</author><pubDate>Tue, 26 Dec 2017 15:50:08 +0800</pubDate><description><![CDATA[定义

编辑距离又称Leveinshtein距离，是由俄罗斯科学家Vladimir Levenshtein在1965年提出。编辑距离是计算两个文本相似度的算法之一，以字符串为例，字符串a和字符串b的编辑距离是将a转换成b的最小操作次数，这里的操作包括三种：


插入一个字符
删除一个字符
替换一个字符


举个例子，kitten和sitting的编辑距离是3，kitten -> sitten(k替]]></description><category></category></item><item><title><![CDATA[求素数个数]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/78768157</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/78768157</guid><author>ghsau</author><pubDate>Sun, 10 Dec 2017 22:20:17 +0800</pubDate><description><![CDATA[我最近在leetcode上撸了一个小算法，虽然已经工作了五年，当看到每次代码提交后排名的提升，内心依然很有成就感。题目比较简单，求小于n的素数个数，素数也叫质数，具有以下特点：
正整数
只能被1和本身整除
1既不是素数也不是合数，所以最小的素数是2
根据上面的特点，我们还可以推断出：
除了2，其它的素数都是奇数
依据这一点，我们可以写出下面的实现：class Solution {
    publi]]></description><category></category></item><item><title><![CDATA[服务化架构下的数据一致性如何保证]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/78362198</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/78362198</guid><author>ghsau</author><pubDate>Fri, 27 Oct 2017 10:40:24 +0800</pubDate><description><![CDATA[在系统服务化的过程中，我们不得不面临的一个问题是多个子系统间业务数据的一致性如何保证，解决这个问题有多种方式。XA可能很多人首先会想到XA规范中定义的分布式事务，下图是XA规范中定义的DTP(Distributed Transaction Processing)模型： 
 
但该模式并不适用于如今的互联网应用，主要有以下几点问题： 
1. XA采用2PC，并不能完全保证一致性； 
2. 2PC有同步]]></description><category></category></item><item><title><![CDATA[探究InnoDB可重复读]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/78258389</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/78258389</guid><author>ghsau</author><pubDate>Tue, 17 Oct 2017 11:15:35 +0800</pubDate><description><![CDATA[在RC（Read Committed）和RR（Repeatable Read）两种事务隔离级别下，InnoDB存在两种数据读取方式：



快照读（Snapshot Read）

故名思意，快照读读取的都是快照数据，快照怎么来，在InnoDB引擎下是基于undo log，那undo log又是什么？举例说明，假设有这样一个表：



-- 表结构
CREATE TABLE `innodb_test]]></description><category></category></item><item><title><![CDATA[CAP理论十二年回顾："规则"变了]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/78186152</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/78186152</guid><author>ghsau</author><pubDate>Mon, 09 Oct 2017 20:02:04 +0800</pubDate><description><![CDATA[CAP理论断言任何基于网络的数据共享系统，最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形，系统设计师可以做到优化数据一致性和可用性，进而取得三者之间的平衡。自打引入CAP理论的十几年里，设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统，甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于网络的数据]]></description><category></category></item><item><title><![CDATA[去哪儿网任务系统演进]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/77775782</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/77775782</guid><author>ghsau</author><pubDate>Fri, 01 Sep 2017 17:47:01 +0800</pubDate><description><![CDATA[这是我分享在公司公众号的一篇文章，比较偏业务： 
http://mp.weixin.qq.com/s/ttNjEgIQ01MgOol7piTjcg]]></description><category></category></item><item><title><![CDATA[增量接口的设计及实现]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/61202273</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/61202273</guid><author>ghsau</author><pubDate>Mon, 20 Mar 2017 15:26:57 +0800</pubDate><description><![CDATA[引言

在应用开发过程中，我们总会碰到这样的场景：某系统需要同步我们系统的数据去做一些业务逻辑，当数据量较小的时候，可以全量的提供，但当数据量很大时，全量提供就显得很笨重，不仅耗时而且做了很多无用功，这时我们需要一种提供增量数据的机制，只告诉对方变化的数据。提供增量数据大致可分为两种方式：MQ和接口提供，MQ的优点是及时，缺点是丢失、重复、回溯复杂等等问题(依赖于具体MQ实现)，这里不过多赘述；接]]></description><category></category></item><item><title><![CDATA[再聊线程池]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/53538303</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/53538303</guid><author>ghsau</author><pubDate>Fri, 09 Dec 2016 23:29:15 +0800</pubDate><description><![CDATA[最近恰好在组内分享线程池，又看了看四年前自己写的线程池文章，一是感叹时光荏苒，二是感叹当时的理解太浅薄了，三是感叹自己这么多年依然停留在浅薄的理解当中，没有探究其实现，羞愧难当。遂把分享的内容整理出来，希望能够让读者对线程池有一个全新的认识。]]></description><category></category></item><item><title><![CDATA[Hession反序列化导致CPU占用飙高]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/53414694</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/53414694</guid><author>ghsau</author><pubDate>Sat, 03 Dec 2016 00:08:26 +0800</pubDate><description><![CDATA[今天发布一个线上服务，暂且称之为O，发布完后，依赖O服务的2个服务C和W大量Time报警，并且这两个服务的CPU占用都飙到了40%左右，平时只有10%的样子。 
 
这时去看O服务的监控，Time并没有升高，QPS反倒降了一半。同时C和W服务器日志中出现了大量的WARNING，信息如下：java.lang.ClassNotFoundException: com.我是不可描述的信息.Propert]]></description><category></category></item><item><title><![CDATA[装修后记]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/53333396</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/53333396</guid><author>ghsau</author><pubDate>Sat, 26 Nov 2016 11:07:14 +0800</pubDate><description><![CDATA[硬装墙漆
品牌：多乐士
价钱：1000
数量：1桶18L面漆+2桶5L底漆
地址：京昌回龙观建材城3区4号
备注：官网找的门店，服务很差。进门点就推荐我买底漆，说底漆遮盖强，我进了两家店都这样讲。但从实际体验来看，不推荐买底漆，即使是无添加底漆也有味道，并且遮盖也不行，远远不如面漆
厨房地砖
品牌：蒙娜丽莎
价钱：490
数量：14片600mm
地址：京昌回龙观建材城
备注：橱柜底下没换，厨房地砖要]]></description><category></category></item><item><title><![CDATA[Java奇淫巧技之Lombok]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/52334762</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/52334762</guid><author>ghsau</author><pubDate>Thu, 08 Sep 2016 14:35:28 +0800</pubDate><description><![CDATA[背景

  我们在开发过程中，通常都会定义大量的JavaBean，然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法，当要对某个属性进行改变时，比如命名、类型等，都需要重新去生成上面提到的这些方法，那Java中有没有一种方式能够避免这种重复的劳动呢？答案是有，我们来看一下下面这张图，右面是一个简单的JavaBean，只定义了两个属性]]></description><category></category></item><item><title><![CDATA[如何替换博客的搜索模块]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/52205883</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/52205883</guid><author>ghsau</author><pubDate>Sun, 14 Aug 2016 20:56:38 +0800</pubDate><description><![CDATA[优快云的博客其实并不好用，问题很多，这里就不一一列举。前段时间突然发现，量子横道统计不知道从什么时候下线了，我当时正要跟同事去show一下我博客的pv，结果没show出来，我就反馈了什么时候把统计服务更换一下啊，当时是在一个升级公告底下反馈的，结果当然是没人鸟啦。这件事也没在意，官方不解决就拉倒吧，我可以自己去加统计，但后来某一天，我的博客加载异常缓慢，发现是量子横道的一个js加载一直是pendi]]></description><category></category></item><item><title><![CDATA[MySQL字符集不一致导致索引失效]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/52097612</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/52097612</guid><author>ghsau</author><pubDate>Tue, 02 Aug 2016 20:26:41 +0800</pubDate><description><![CDATA[两个表join查询，却不走连接条件的索引。当索引无问题，sql也无问题时，就可以去看看这两个表的字符集是否一致，这是我耗费一个下午得出来的经验教训。]]></description><category></category></item><item><title><![CDATA[如何实现基于商圈和地标的位置搜索]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/51925755</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/51925755</guid><author>ghsau</author><pubDate>Tue, 19 Jul 2016 18:11:46 +0800</pubDate><description><![CDATA[标题中包含了两个关键词，商圈和地标，先来解释一下商圈和地标这两个名词。商圈是一个地理范围，但并不是官方的划分，而是民间大致的划分，它通常提供了民众消费、娱乐的功能，产生了一个相对集中的活动区域，比如王府井、五棵松。地标是地图上的一个点，它通常在某个范围有一定知名度，大家都知道它，它可以是一个大厦、景点、酒店、饭店，比如人民大会堂、北京工人体育场、大裤衩大楼等等。那实现这两个的搜索有什么好处呢？]]></description><category></category></item><item><title><![CDATA[夏天蚊子来了]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/51712119</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/51712119</guid><author>ghsau</author><pubDate>Sun, 19 Jun 2016 13:47:53 +0800</pubDate><description><![CDATA[哈哈]]></description><category></category></item><item><title><![CDATA[Guava Predicate]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/51704892</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/51704892</guid><author>ghsau</author><pubDate>Sat, 18 Jun 2016 23:45:24 +0800</pubDate><description><![CDATA[Predicate<泛型>（断言，断定），是Guava中的一个基础接口，其内部只有一个方法`boolean apply(T input)`，这个方法输入是一个泛型对象，输出是一个布尔值，非常简单，下面来看一下这个小东西能帮助我们做]]></description><category></category></item><item><title><![CDATA[Java线程(七)：Callable和Future]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/7451464</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/7451464</guid><author>ghsau</author><pubDate>Fri, 05 Feb 2016 15:12:04 +0800</pubDate><description><![CDATA[接着上一篇继续并发包的学习，本篇说明的是Callable和Future，它俩很有意思的，一个产生结果，一个拿到结果。 
   Callable接口类似于Runnable，从名字就可以看出来了，但是Runnable不会返回结果，并且无法抛出返回结果的异常，而Callable功能更强大一些，被线程执行后，可以返回值，这个返回值可以被Future拿到，也就是说，Future可以拿到异步执行任务的返]]></description><category></category></item><item><title><![CDATA[如何实现按距离排序、范围查找]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/50591932</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/50591932</guid><author>ghsau</author><pubDate>Sat, 30 Jan 2016 11:58:03 +0800</pubDate><description><![CDATA[简介现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等基于位置的交互，那这样的功能是怎么实现的呢？本文提供的实现方式，适用于所有数据库。实现为了方便下面说明，先给出一个初始表结构，我使用的是MySQL：CREATE TABLE `customer` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增主键]]></description><category></category></item><item><title><![CDATA[Java线程(十一)：Fork/Join-Java并行计算框架]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/46287769</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/46287769</guid><author>ghsau</author><pubDate>Wed, 22 Jul 2015 21:12:51 +0800</pubDate><description><![CDATA[并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了，现在已经有单机多核甚至多机集群并行计算，注意，这里说的是并行，而不是并发。严格的将，并行是指系统内有多个任务同时执行，而并发是指系统内有多个任务同时存在，不同的任务按时间分片的方式切换执行，由于切换的时间很短，给人的感觉好像是在同时执行。 
Java在JDK7之后加入了并行计算的框架Fork/Join，可以解决我们系统中大数据计算的性能问题。]]></description><category></category></item><item><title><![CDATA[MySQL从5.5升级到5.6，TIMESTAMP的变化]]></title><link>https://blog.youkuaiyun.com/ghsau/article/details/45625841</link><guid>https://blog.youkuaiyun.com/ghsau/article/details/45625841</guid><author>ghsau</author><pubDate>Sun, 10 May 2015 23:47:32 +0800</pubDate><description><![CDATA[前言前段时间，系统MySQL从5.5升级到了5.6，系统出现了大量的异常。大部分异常引起原因是由于TIMESTAMP的行为发生了变化。TIMESTAMP在MySQL5.5中的行为
第一个未设置默认值的TIMESTAMP NOT NULL字段隐式默认值： 
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
后面未设置默认值的TIMESTAMP NOT NULL]]></description><category></category></item></channel></rss>