<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不会？学啊！]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/acaiwlj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; acaiwlj]]></copyright><item><title><![CDATA[LevelDB源码分析之从Put说起]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/79509715</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/79509715</guid><author>acaiwlj</author><pubDate>Sat, 10 Mar 2018 17:25:57 +0800</pubDate><description><![CDATA[之前分享的文章leveldb实现原理分析详细描述了LevelDB的实现原理，本文从Put接口来看下leveldb数据写流程的源码实现。LevelDB的读写接口在类DB中定义（leveldb/db.h），接口声明如下：// Set the database entry for &quot;key&quot; to &quot;value&quot;.  Returns OK on success,
  // and a non-OK st...]]></description><category></category></item><item><title><![CDATA[vim中复制粘贴]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50590445</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50590445</guid><author>acaiwlj</author><pubDate>Wed, 27 Jan 2016 21:09:59 +0800</pubDate><description><![CDATA[在vim中要进行复制粘贴,需要使用yy和p指令,但是会发现当我们想讲从vim外面复制的内容粘贴进文本中时,光使用p达不到效果.原因是,在vim中维护者许多的clipboard,而不是只有一个.我们从vim外部(如浏览器)复制的文本所在的clipboard不是粘贴指令p所使用的那个.
要查看vim中有多少个clipboard,以及每个clipboard中的内容,可以在vim中退出编辑模式,并输入指]]></description><category></category></item><item><title><![CDATA[Leetcode: Decode ways]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50352304</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50352304</guid><author>acaiwlj</author><pubDate>Fri, 18 Dec 2015 17:09:33 +0800</pubDate><description><![CDATA[A message containing letters from A-Z is being encoded to numbers using the
 following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26


Given an encoded message containing digits, determine the total nu]]></description><category></category></item><item><title><![CDATA[leetcode: Remove Duplicate Letters]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50340429</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50340429</guid><author>acaiwlj</author><pubDate>Thu, 17 Dec 2015 13:38:48 +0800</pubDate><description><![CDATA[Given a string which contains only lowercase letters, remove duplicate letters so that every letter appear once and only once. You must make sure your result is the smallest in lexicographical order a]]></description><category></category></item><item><title><![CDATA[Leetcode: Maximum Product of Word Lengths]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50332279</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50332279</guid><author>acaiwlj</author><pubDate>Wed, 16 Dec 2015 20:02:50 +0800</pubDate><description><![CDATA[Given a string array words, find the maximum value of length(word[i])
 * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case le]]></description><category></category></item><item><title><![CDATA[zookeeper原理]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50313335</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50313335</guid><author>acaiwlj</author><pubDate>Tue, 15 Dec 2015 11:51:56 +0800</pubDate><description><![CDATA[说明：本文为转载文章，用以学些收藏用，文章原始出处没找到，所以如果有侵犯您的权利，请告知。

ZooKeeper是一个分布式的，开放源码的分布式应用程序协调服务，它包含一个简单的原语集，分布式应用程序可以基于它实现同步服务，配置维护和命名服务等。Zookeeper是hadoop的一个子项目，其发展历程无需赘述。在分布式应用中，由于工程师不能很好地使用锁机制，以及基于消息的协调机制不适合在某些应]]></description><category></category></item><item><title><![CDATA[C++对象池实现]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50247877</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50247877</guid><author>acaiwlj</author><pubDate>Thu, 10 Dec 2015 11:58:59 +0800</pubDate><description><![CDATA[在实际中，我们会遇到一个类最多只允许若干个对象同时存在的情形。如果这个类的对象会被频繁的创建，使用并销毁，那这时会对系统性能造成影响，而这时可以考虑使用对象池的方法来避免每次使用对象都需要从“构造->使用->销毁”这个流程，对象池中的每个对象都一次构造多次使用，而析构也只会在对象池析构是才会发生。
    要实现对象池，那关键问题就在于如果在对象析构时不是真正的析构，而是重新回到对象池中。假如我]]></description><category></category></item><item><title><![CDATA[visual studio开启多核编译方法]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50240625</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50240625</guid><author>acaiwlj</author><pubDate>Wed, 09 Dec 2015 19:52:40 +0800</pubDate><description><![CDATA[visual studio在编译时可以启动多核并行编译，以减少编译所需时间。话不多说，直接看步骤吧：
1. Solution Explorer导航窗口右键需要并行编译的项目，进入属性页面
2.“C/C++" -> ”General“ -> "Multi-processor Compilation" -> "Yes(/MP)"


3. "C/C++" -> "Code Generatio]]></description><category></category></item><item><title><![CDATA[vs2010设置堆栈大小]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50240591</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50240591</guid><author>acaiwlj</author><pubDate>Wed, 09 Dec 2015 19:48:17 +0800</pubDate><description><![CDATA[原文链接地址：http://www.cnblogs.com/xlw1219/archive/2013/03/15/2961352.html

在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分：

1、栈区(stack segment)：由编译器自动分配释放，存放函数的参数的值，局部变量的值等。在Windows下，栈是向低地址扩展的数据结构，是一块连续的内存的区域。这]]></description><category></category></item><item><title><![CDATA[ActiveMQ集群简介]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50218377</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50218377</guid><author>acaiwlj</author><pubDate>Tue, 08 Dec 2015 14:27:17 +0800</pubDate><description><![CDATA[1. 概念
    有些环境具有高可用性、数据量巨大的特性，ActiveMQ可以通过组建集群来满足这些系统的需求，我们可以将这个理解为ActiveMQ集群。ActiveMQ集群是由多个相互连接通信的代理（broker）组成的，这些代理之间组成了一个代理网络。这些网络可以有多种拓扑结构，而每一种拓扑结构都有不同的用处，在后续的文章中我们会来了解这些，本文只介绍ActiveMQ中的网络连接器（net]]></description><category></category></item><item><title><![CDATA[配置ActiveMQ的Transport Connectors]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50207363</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50207363</guid><author>acaiwlj</author><pubDate>Mon, 07 Dec 2015 16:31:35 +0800</pubDate><description><![CDATA[一、概念
    从broker的角度来看，transport connector是用于接受和监听来自客户端的连接请求的一种机制。比如在”conf/activemq.xml“这个配置文件中可以找到：
    
    
        
            discoveryUri="multicast://default"/>]]></description><category></category></item><item><title><![CDATA[python getattr获取对象属性]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50113771</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50113771</guid><author>acaiwlj</author><pubDate>Mon, 30 Nov 2015 16:04:59 +0800</pubDate><description><![CDATA[getattr是一个很强大的功能，它能够获取任何对象的任何属性，包括方法。这样一来我们就可以通过getattr来动态的决定使用对象的哪个属性，或者方法。甚至用它还可以获取只有在运行才知道的属性。如，

>>> li = [1,2,3,4]
>>> getattr(li, 'append')(5)
>>> li
[1, 2, 3, 4, 5]

    以上通过getattr函数获取了lis]]></description><category></category></item><item><title><![CDATA[python函数装饰器（decorators）]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50098927</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50098927</guid><author>acaiwlj</author><pubDate>Sun, 29 Nov 2015 20:17:38 +0800</pubDate><description><![CDATA[原文出处：http://thecodeship.com/patterns/guide-to-python-function-decorators/  
在本文中我们主要介绍什么是函数装饰器？如何使用它？
1、关于函数我们需要知道这些
    在正式进入装饰器之前，我们需要知道python中函数都可以干嘛。
    可以将函数赋给变量：

def greet(name):
    ret]]></description><category></category></item><item><title><![CDATA[python操作符重载]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50098427</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50098427</guid><author>acaiwlj</author><pubDate>Sun, 29 Nov 2015 19:11:42 +0800</pubDate><description><![CDATA[二元运算符
特殊方法


+
__add__,__radd__


-
__sub__,__rsub__


*
__mul__,__rmul__


/
__div__,__rdiv__,__truediv__,__rtruediv__


//
__floordiv__,__rfloordiv__


%
__mod__,__rmod__
]]></description><category></category></item><item><title><![CDATA[python模块]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50096831</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50096831</guid><author>acaiwlj</author><pubDate>Sun, 29 Nov 2015 15:50:12 +0800</pubDate><description><![CDATA[本文主要介绍一些python module的一些有用的用法。
1. 使用_X和__all__
    在引用模块时，有两种方法，一种是"import ..."，另外一种是"from ... import ...".在使用后者时，有时因为 引用的名称较多，我们会选择”from ... import *"，即将模块中的所有变量、函数及类全部导入到当前模块中。这样有时会造成命名空间污染，为了减小因“]]></description><category></category></item><item><title><![CDATA[mysql支持的数据类型简介]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50095567</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50095567</guid><author>acaiwlj</author><pubDate>Sun, 29 Nov 2015 13:12:55 +0800</pubDate><description><![CDATA[每张数据表至少有一个数据列，每个数据列必须有一个数据类型。本文说一下mysql支持的数据类型。
1. 整数(xxxINT)
    整数包括正数和负数，但如果给INT数据列定义了UNSIGNED，则只包含正数。对于整数又包含如下几种类型：
    TYNYINT、SMALLINT、MEDIUMINT、INT、BIGINT，它们分别为8、16、24、32、64位整数。另外mysql还有一个类型]]></description><category></category></item><item><title><![CDATA[mysql数据表类型]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50095133</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50095133</guid><author>acaiwlj</author><pubDate>Sun, 29 Nov 2015 12:11:51 +0800</pubDate><description><![CDATA[创建mysal表时可以设置数据表的类型，这种做法在其他数据库中比较少见。mysql支持多种类型数据表，它们有各自的特点和属性，其中最重要的3种类型是：MyISAM, InnoDB, HEAP.如果在创建表时没有设置表类型，mysql会根据配置文件中的default-table-type选项来在MyISAM和InnoDB之间做出选择。
    本文对mysql支持的数据表类型做个简单的介绍。
1]]></description><category></category></item><item><title><![CDATA[利用putty在windows上通过脚本在远程Linux机器执行指令]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/50037845</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/50037845</guid><author>acaiwlj</author><pubDate>Wed, 25 Nov 2015 15:31:22 +0800</pubDate><description><![CDATA[一、前言
    借用百度百科关于putty的描述：PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台，在最近的版本中开始支持各类Unix平台，并打算移植至Mac
 OS X上。除了官方版本外，有许多第三方的团体或个人将PuTTY移植到其他平台上，像是以Symbian为基础的移动电话。PuTTY为一开放源代码软件，主要由Simo]]></description><category></category></item><item><title><![CDATA[用boost::tokenizer分割字符串]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/49998959</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/49998959</guid><author>acaiwlj</author><pubDate>Mon, 23 Nov 2015 18:08:36 +0800</pubDate><description><![CDATA[说明：本文是boost::tokenizer类的整理，原文出处为boost的document，此处仅作学习笔记之用。
1、boost::tokenizer
boost::tokenizer提供了一种灵活、易用的方式来将一个字符串分解为一个字符串列表。这是个模板类，类的声明为：

template <
        class TokenizerFunc = char_delimiters]]></description><category></category></item><item><title><![CDATA[std::mem_fun vs std::mem_fn, std::bind1st/std::bind2nd vs std::bind]]></title><link>https://blog.youkuaiyun.com/acaiwlj/article/details/49995639</link><guid>https://blog.youkuaiyun.com/acaiwlj/article/details/49995639</guid><author>acaiwlj</author><pubDate>Mon, 23 Nov 2015 15:26:02 +0800</pubDate><description><![CDATA[1.mem_fun
 vs mem_fn

在C++
 11之前，当需要使用STL算法对容器中的对象一次调用成员函数时，我们需要使用到mem_fun或者mem_fun_ref,至于mem_fun和mem_fun_ref之间的选择根据容器中存储的对象是对象指针还是对象本身来选择，其中mem_fun针对对象本身，而mem_fun_ref则针对对象本身。例如，


class T
{
pu]]></description><category></category></item></channel></rss>