<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[likelikebing的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/likelikebing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; likelikebing]]></copyright><item><title><![CDATA[多线程队列的算法优化]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38539793</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38539793</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 17:18:47 +0800</pubDate><description><![CDATA[多线程队列（Concurrent Queue）的使用场合非常多，高性能服务器中的消息队列，并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作：添加（enqueue）和删除（dequeue）节点。在一个（或多个）线程在对一个队列进行enqueue操作的同时可能会有一个（或多个）线程对这个队列进行dequeue操作。因为enqueue和dequeue都是对同一个队列]]></description><category></category></item><item><title><![CDATA[TCP/IP编程之四书五经——孟岩]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38539165</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38539165</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 16:48:31 +0800</pubDate><description><![CDATA[TCP/IP协议是当前广域网和局域网通用的网络协议，因此，基于TCP/IP的编程就格外重要。从应用上来说，现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了，各种现成的框架（如ACE、Java、.NET FCL）和控件（如IP*Works）大大简化了TCP/IP编程的难度。但是，如果想要在这个领域达到融会贯通的地步，不打下坚实的基础是不可想象的。正如Richard Ste]]></description><category></category></item><item><title><![CDATA[谈一谈网络编程学习经验——陈硕]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38538361</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38538361</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 16:05:32 +0800</pubDate><description><![CDATA[陈硕 
giantchen@gmail.com 
blog.youkuaiyun.com/Solstice 
2011-06-06 
PDF 版下载：https://github.com/downloads/chenshuo/documents/LearningNetworkProgramming.pdf
本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语的范围很广，本文指用Sock]]></description><category></category></item><item><title><![CDATA[关于 TCP 并发连接的几个思考题与试验 ——陈硕]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38533261</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38533261</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 10:41:13 +0800</pubDate><description><![CDATA[陈硕 (giantchen AT gmail)
blog.youkuaiyun.com/Solstice
前几天我在新浪微博上出了两道有关 TCP 的思考题，引发了一场讨论 
http://weibo.com/1701018393/eCuxDrta0Nn 。
第一道初级题目是：
有一台机器，它有一个 IP，上面运行了一个 TCP 服务程序，程序只侦听一个端口，问：从理论上讲（只考虑 TCP/IP 这]]></description><category></category></item><item><title><![CDATA[多线程服务器的常用编程模型——陈硕]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38532759</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38532759</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 10:12:55 +0800</pubDate><description><![CDATA[陈硕 (giantchen_AT_gmail)
Blog.youkuaiyun.com/Solstice
2009 Feb 12
 
建议阅读本文 PDF 版下载： http://files.cppblog.com/Solstice/multithreaded_server.pdf
 
本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型，归纳了进程间通讯与线程同步的最佳实践]]></description><category></category></item><item><title><![CDATA[并行编程中的“锁”难题]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38532703</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38532703</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 10:09:45 +0800</pubDate><description><![CDATA[注：本文发表于《程序员》2011年第8期并行编程专栏，略有删改。
在并行程序中，锁的使用会主要会引发两类难题：一类是诸如死锁、活锁等引起的多线程Bug；另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。
1. 用锁来防止数据竞跑
在进行并行编程时，我们常常需要使用锁来保护共享变量，以防止多个线程同时对该变量进行更新时产生数据竞跑（Data Race）。所]]></description><category></category></item><item><title><![CDATA[多核与异步并行]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38532007</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38532007</guid><author>likelikebing</author><pubDate>Wed, 13 Aug 2014 09:23:52 +0800</pubDate><description><![CDATA[原文发表于《程序员》杂志2012年第9期，文字略有修改。
我们在设计多线程程序时往往有很多性能指标，例如低延迟（latency），高吞吐量（throughput），高响应度（responsiveness）等。随着多核处理器上CPU核数的日益增加，如何高效地利用这些计算资源以满足这些设计目标变得越来越重要。这次向大家介绍的异步并行就是一种帮助实现低延迟、高吞吐量和高响应度的并行编程技术。
让我们]]></description><category></category></item><item><title><![CDATA[浅析C++多线程内存模型]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38518753</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38518753</guid><author>likelikebing</author><pubDate>Tue, 12 Aug 2014 17:46:28 +0800</pubDate><description><![CDATA[注：本文发表于《程序员》2011年第6期并行编程专栏，略有删改。
在即将到来的C++1x标准中，一个重大的更新就是引入了C++多线程内存模型。本文的主要目的在于介绍C++多线程内存模型涉及到的一些原理和概念，以帮助大家理解C++多线程内存模型的作用和意义。
1. 顺序一致性模型（Sequential Consistency）
在介绍C++多线程模型之前，让我们先介绍一下最基本的顺序一致性模型]]></description><category></category></item><item><title><![CDATA[memory barrier]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38518623</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38518623</guid><author>likelikebing</author><pubDate>Tue, 12 Aug 2014 17:39:36 +0800</pubDate><description><![CDATA[要了解如何使用memory barrier，最好的方法是明白它为什么存在。CPU硬件设计为了提高指令的执行速度，增设了两个缓冲区（store buffer, invalidate queue）。这个两个缓冲区可以避免CPU在某些情况下进行不必要的等待，从而提高速度，但是这两个缓冲区的存在也同时带来了新的问题。

要仔细分析这个问题需要先了解cache的工作方式。 
目前CPU的cache的工]]></description><category></category></item><item><title><![CDATA[为什么程序员需要关心顺序一致性（Sequential Consistency）而不是Cache一致性（Cache Coherence？）]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38517853</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38517853</guid><author>likelikebing</author><pubDate>Tue, 12 Aug 2014 16:58:10 +0800</pubDate><description><![CDATA[最后一次修改：2010年11月11日
本文所讨论的计算机模型是Shared Memory Multiprocessor，即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C++或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性介绍并给出了一些相关例子，目的是帮助程序员明白为什么需要在并行编程时关注Sequ]]></description><category></category></item><item><title><![CDATA[C#调用C++DLL的类型对应]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38435789</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38435789</guid><author>likelikebing</author><pubDate>Fri, 08 Aug 2014 10:40:03 +0800</pubDate><description><![CDATA[//C++中的DLL函数原型為
        //extern “C” __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)
        //extern “C” __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2]]></description><category></category></item><item><title><![CDATA[SOLID原则]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38419677</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38419677</guid><author>likelikebing</author><pubDate>Thu, 07 Aug 2014 15:29:19 +0800</pubDate><description><![CDATA[SOLID原则是SRP单一职责原则、OCP开闭原则、LSP里氏代换原则 、ISP接口隔离原则 、DIP依赖倒置原则 四个原则的第一个字母简称，如今还多了一个依赖注入DI。本文介绍了SOLID原则和现在新的流行OO设计思想。
设计七宗罪 


刚性 - 使其难以改变 脆弱性 - 可以很容易地打破 不可移动 - 使其难以重用 粘度 - 使其难以做正确的事 不必要的复杂性 – 过分设计 不必要的]]></description><category></category></item><item><title><![CDATA[面向对象10原则]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38419603</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38419603</guid><author>likelikebing</author><pubDate>Thu, 07 Aug 2014 15:25:16 +0800</pubDate><description><![CDATA[追求高内聚highly cohesive 和松耦合 loosely couple 的解决方案是面向对象设计基本核心原则。这里列出OO设计中十大原则：

1. DRY (不要重复你自己)
这是指不写重复的代码，取而代之是使用抽象共性的东西。如果超过一次使用硬编码，那么就要考虑将其公开为final修饰的不变量；如果你在两个以上地方有相同的代码块，那么就要考虑使其成为一个单独的方法。SOLID设计]]></description><category></category></item><item><title><![CDATA[CAP原则]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38419329</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38419329</guid><author>likelikebing</author><pubDate>Thu, 07 Aug 2014 15:14:52 +0800</pubDate><description><![CDATA[1        
CAP 理论
Consistency(一致性),
数据一致更新，所有数据变动都是同步的
Availability(可用性),
好的响应性能
Partition tolerance(分区容错性)
可靠性
定理：任何分布式系统只可同时满足二点，没法三者兼顾。
忠告：架构师不要将精力浪费在如何设计能满足三者的完美分布式系统，而是应该进行取舍。
1.1 Consis]]></description><category></category></item><item><title><![CDATA[什么是IOC]]></title><link>https://blog.youkuaiyun.com/likelikebing/article/details/38419031</link><guid>https://blog.youkuaiyun.com/likelikebing/article/details/38419031</guid><author>likelikebing</author><pubDate>Thu, 07 Aug 2014 15:06:17 +0800</pubDate><description><![CDATA[版权声明：
本文由冰云完成，首发于优快云，作者保留中文版权。
未经许可，不得使用于任何商业用途。
欢迎转载，但请保持文章及版权声明完整。
如需联络请发邮件：icecloud(AT)sina.com]]></description><category></category></item></channel></rss>