<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mrdothe的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mrdothe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mrdothe]]></copyright><item><title><![CDATA[Nagle算法]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51724196</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51724196</guid><author>mrdothe</author><pubDate>Tue, 21 Jun 2016 00:02:31 +0800</pubDate><description><![CDATA[原文：http://blog.163.com/li_xiang1102/blog/static/607140762011111103213616/

1. Nagel算法

        TCP/IP协议中，无论发送多少数据，总是要在数据前面加上协议头，同时，对方接收到数据，也需要发送ACK表示确认。为了尽可能的利用网络带宽，TCP总是希望尽可能的发送足够大的数据。（一个连接会设置MSS]]></description><category></category></item><item><title><![CDATA[Quorum/NRW机制]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51712705</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51712705</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 16:06:16 +0800</pubDate><description><![CDATA[原文：http://www.fwqtg.net/quorumnrw%E6%9C%BA%E5%88%B6.html



　　Quorom 机制，是一种分布式系统中常用的，用来保证数据冗余和最终一致性的投票算法，其主要数学思想来源于鸽巢原理。

　　什么是鸽巢原理？ 
　　其中一种简单的表述法为： 
　　若有n个笼子和n+1只鸽子，所有的鸽子都被关在鸽笼里，那么至少有一个笼子有至少2]]></description><category></category></item><item><title><![CDATA[Quorum的NRW策略]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51712694</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51712694</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 16:04:39 +0800</pubDate><description><![CDATA[原文：http://blog.youkuaiyun.com/chennut0802/article/details/49029165


分布式系统的设计中会涉及到许多的协议、机制用来解决可靠性问题、数据一致性问题等，Quorum 机制就是其中的一种。我们通过分布式系统中的读写模型来简单介绍它。

分布式系统中的读写模型


　　分布式系统是由多个节点（指代一台服务器、存储设备等）构成，由于网]]></description><category></category></item><item><title><![CDATA[万亿级调用系统：微信序列号生成器架构设计及演变]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51712533</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51712533</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 15:29:50 +0800</pubDate><description><![CDATA[原文：https://www.sdk.cn/news/3844
作者介绍
曾钦松，微信高级工程师，目前负责微信后台基础服务、朋友圈后台等开发优化，致力于高可用高性能后台系统的设计与研发。2011年毕业于西安电子科技大学，早先曾在腾讯搜搜从事检索架构、分布式数据库方面的工作。
微信在立项之初，就已确立了利用数据版本号实现终端与后台的数据增量同步机制，确保发消息时消息可靠送达对方手机，避免了大量]]></description><category></category></item><item><title><![CDATA[Java集合框架的层次结构和使用规则梳理]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51711658</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51711658</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 11:26:19 +0800</pubDate><description><![CDATA[原文：http://www.devstore.cn/essay/essayInfo/6786.html?ref=myread

在Java语言中，Java语言的设计者对常用的数据结构和算法做了一些规范（接口）和实现（具体实现接口的类）。所有抽象出来的数据结构和操作（算法）统称为Java集合框架（JavaCollectionFramework）。

Java程序员在具体应用时，不必考虑数据结]]></description><category></category></item><item><title><![CDATA[JAVA多线程和并发基础面试问答]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51711641</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51711641</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 11:24:08 +0800</pubDate><description><![CDATA[原文：http://www.devstore.cn/essay/essayInfo/6777.html

多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里，从面试的角度列出了大部分重要的问题，但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。

Java多线程面试问题

1. 进程和线程之间有什么不同？

一个进程是一个独立(self con]]></description><category></category></item><item><title><![CDATA[AliRedis单机180w QPS, 8台服务器构建1000w QPS Cache集群]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51708102</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51708102</guid><author>mrdothe</author><pubDate>Sun, 19 Jun 2016 01:01:29 +0800</pubDate><description><![CDATA[原文：http://blog.sina.com.cn/s/blog_e59371cc0101br74.html


引言:
        如今redis凭借其高性能的优势, 以及丰富的数据结构作为cache已越来越流行, 逐步取代了memcached等cache产品, 在Twitter,新浪微博中广泛使用,阿里巴巴同样如此. redis已经占据了其不可动摇的地位, 然而在实际的生产环境中]]></description><category></category></item><item><title><![CDATA[Redis持久化]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51707944</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51707944</guid><author>mrdothe</author><pubDate>Sat, 18 Jun 2016 23:59:21 +0800</pubDate><description><![CDATA[众所周知，Redis是内存数据库，且使用单个线程来处理命令请求。它将自己的数据库状态（非空数据库以及它们的键值对）存储在内存里面。所以如果没有持久化机制，不把数据保存到硬盘里面，那么一旦服务器进程退出，服务器中的数据库状态也会消失不见。

为了解决这个问题，redis 提供两种方法进行数据持久化，分别是RDB和AOF。RDB可以将Redis在内存中的数据库状态保存到磁盘里面以实现持久化，AOF]]></description><category></category></item><item><title><![CDATA[Java 并发之 CountDownLatch、CyclicBarrier 和 Semaphore]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51707841</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51707841</guid><author>mrdothe</author><pubDate>Sat, 18 Jun 2016 23:36:56 +0800</pubDate><description><![CDATA[原文：http://my.oschina.net/lifany/blog/207995#OSC_h2_6

这次说一下 JUC 中的同步器三个主要的成员：CountDownLatch、CyclicBarrier 和 Semaphore（不知道有没有初学者觉得这三个的名字不太好记）。这三个是 JUC 中较为常用的同步器，通过它们可以方便地实现很多线程之间协作的功能。（下面的代码出自
 JDK ]]></description><category></category></item><item><title><![CDATA[JVM内存区域划分Eden Space、Survivor Space、Tenured Gen，Perm Gen解释]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/51707771</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/51707771</guid><author>mrdothe</author><pubDate>Sat, 18 Jun 2016 23:25:31 +0800</pubDate><description><![CDATA[原文:http://blog.chinaunix.net/xmlrpc.PHP?r=blog/article&uid=29632145&id=4616836

jvm区域总体分两类，heap区和非heap区。heap区又分：Eden Space（伊甸园）、Survivor Space(幸存者区)、Tenured Gen（老年代-养老区）。 非heap区又分：Code Cache(代码缓存区)、]]></description><category></category></item><item><title><![CDATA[阻塞、非阻塞、异步、同步以及select/poll和epoll]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50851811</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50851811</guid><author>mrdothe</author><pubDate>Fri, 11 Mar 2016 00:57:42 +0800</pubDate><description><![CDATA[数据终于准备好了，A现在要把数据取回去，有几种做法：  1）A自己把数据从内核空间拷贝到用户空间。 
  2）A创建一个新线程（或者直接使用内核线程），这个新线程把数据从内核空间拷贝到用户空间。 
  第一种情况，所有的事情都是同一个线程做，叫做同步，有同步阻塞（BIO）、同步非阻塞（NIO） 
  第二种情况，叫做异步，只有异步非阻塞（AIO） 

同步阻塞：

同一个线程在IO时]]></description><category></category></item><item><title><![CDATA[Java虚拟机 运行时数据区]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50831928</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50831928</guid><author>mrdothe</author><pubDate>Wed, 09 Mar 2016 00:07:30 +0800</pubDate><description><![CDATA[Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间，有一些是随虚拟机的启动而创建，随虚拟机的退出而销毁，有些则是与线程一一对应，随线程的开始和结束而创建和销毁。

Java虚拟机所管理的内存将会包括以下几个运行时数据区域



 

程序计数器（Program Counter Register）

它是一块较]]></description><category></category></item><item><title><![CDATA[从JVM并发看CPU内存指令重排序(Memory Reordering)]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50831839</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50831839</guid><author>mrdothe</author><pubDate>Tue, 08 Mar 2016 23:47:04 +0800</pubDate><description><![CDATA[这两天，我拜读了 Dennis Byrne 写的一片博文Memory
 Barriers and JVM Concurrency，文中提到：

对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存（caching）能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说，程序的读写操作不一定会按照它要求处理器的顺序执行。

这段话是作者对内存屏障重要性]]></description><category></category></item><item><title><![CDATA[Java Memory Model基础]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50831787</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50831787</guid><author>mrdothe</author><pubDate>Tue, 08 Mar 2016 23:36:38 +0800</pubDate><description><![CDATA[Java 内存模型 ( Java Memory Model )



根据Java Language Specification中的说明, JVM系统中存在一个主内存(Main Memory或Java Heap Memory)，Java中所有变量都储存在主存中，对于所有线程都是共享的。

每条线程都有自己的工作内存(Working Memory)，工作内存中保存的是主存中某些变量的拷贝]]></description><category></category></item><item><title><![CDATA[linux下IPTABLES配置详解]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50726147</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50726147</guid><author>mrdothe</author><pubDate>Tue, 23 Feb 2016 21:16:01 +0800</pubDate><description><![CDATA[来源：http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html




如果你的IPTABLES基础知识还不了解,建议先去看看.

开始配置

我们来配置一个filter表的防火墙.

(1)查看本机关于IPTABLES的设置情况

[root@tp ~]# iptables -L -n
Chain IN]]></description><category></category></item><item><title><![CDATA[iptables详解]]></title><link>https://blog.youkuaiyun.com/mrdothe/article/details/50726123</link><guid>https://blog.youkuaiyun.com/mrdothe/article/details/50726123</guid><author>mrdothe</author><pubDate>Tue, 23 Feb 2016 21:12:05 +0800</pubDate><description><![CDATA[来源: http://blog.chinaunix.net/uid-26495963-id-3279216.html

一：前言




防火墙，其实说白了讲，就是用于实现Linux下访问控制的功能的，它分为硬件的或者软件的防火墙两种。无论是在哪个网络中，防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作，这就是防火墙的策略，规则，以达到让它对出入网络的]]></description><category></category></item></channel></rss>