<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[darmao的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/darmao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; darmao]]></copyright><item><title><![CDATA[ImportError: No module named mpl_toolkits解决方案]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/88093672</link><guid>https://blog.youkuaiyun.com/darmao/article/details/88093672</guid><author>darmao</author><pubDate>Sun, 03 Mar 2019 20:51:12 +0800</pubDate><description><![CDATA[一杯茶，一包烟，一个bug调一天
解决方案：
找到mpl_toolkits文件夹，在下边建一个文件：
_init_.py
try:
import(‘pkg_resources’).declare_namespace(name)
except ImportError:
pass # must not have setuptools
ps:mac用户需要先开启最高权限，否则__init__.py文件写...]]></description><category></category></item><item><title><![CDATA[二战图灵破解恩格玛机的原理]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/84504457</link><guid>https://blog.youkuaiyun.com/darmao/article/details/84504457</guid><author>darmao</author><pubDate>Sun, 25 Nov 2018 23:39:41 +0800</pubDate><description><![CDATA[
最近看了一部电影，叫《模仿游戏》，主要讲的就是二战期间图灵破解德军通讯密码的故事，最后的意义是导致二战提前两年结束，拯救了至少1400万人的生命。电影主要以讲故事为主，后来研究了一下伟人的破解原理，用最简单的语言科普一下，这里不需要各种数学知识，没有复杂的公式，相信我，坚持耐心看完，你一定能看懂。

1.第一回合：我们先来看一种最简单的加密：单表替换
所谓替换，就是将明文按照一张固定的表，替换成...]]></description><category></category></item><item><title><![CDATA[设计模式的c++实现之---观察者模式]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/82053846</link><guid>https://blog.youkuaiyun.com/darmao/article/details/82053846</guid><author>darmao</author><pubDate>Sat, 25 Aug 2018 18:06:24 +0800</pubDate><description><![CDATA[
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;list&amp;gt;
using namespace std;
class Observer
{
public:
    Observer(){}
    virtual ...]]></description><category></category></item><item><title><![CDATA[设计模式的C++实现之---工厂模式]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/81943470</link><guid>https://blog.youkuaiyun.com/darmao/article/details/81943470</guid><author>darmao</author><pubDate>Wed, 22 Aug 2018 14:35:50 +0800</pubDate><description><![CDATA[简单工厂模式



class SingleCore
{
public:
    virtual void Show()=0;
};
class SingleCoreA:public SingleCore
{
public:
    void show()
    {
        cout&amp;lt;&amp;lt;&quot;coreA&quot;&amp;lt;&amp;lt;endl;
    }
};
class SingleCor...]]></description><category></category></item><item><title><![CDATA[设计模式的C++实现之---单例模式]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/81942909</link><guid>https://blog.youkuaiyun.com/darmao/article/details/81942909</guid><author>darmao</author><pubDate>Wed, 22 Aug 2018 14:01:40 +0800</pubDate><description><![CDATA[懒汉：（非到用的时候才构造出来一个对象）


class Sigleton
{
private:
    Sigleton()
    {
        this-&amp;gt;id=0;
    }
    static Sigleton *sigleton;
    static pthread_mutex_t lock;


public:
    static Sigleton* getIns...]]></description><category></category></item><item><title><![CDATA[多重继承,菱形继承下的虚函数表和虚基类表]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/81454306</link><guid>https://blog.youkuaiyun.com/darmao/article/details/81454306</guid><author>darmao</author><pubDate>Mon, 06 Aug 2018 14:54:46 +0800</pubDate><description><![CDATA[虚函数与虚继承寻踪

封装、继承、多态是面向对象语言的三大特性，熟悉C++的人对此应该不会有太多异议。C语言提供的struct，顶多算得上对数据的简单封装，而C++的引入把struct“升级”为class，使得面向对象的概念更加强大。继承机制解决了对象复用的问题，然而多重继承又会产生成员冲突的问题，虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性，并且它是软件设计复用的本质...]]></description><category></category></item><item><title><![CDATA[一篇文章看懂makefile编写规则]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/81077055</link><guid>https://blog.youkuaiyun.com/darmao/article/details/81077055</guid><author>darmao</author><pubDate>Tue, 17 Jul 2018 10:39:58 +0800</pubDate><description><![CDATA[该篇文章为转载，是对原作者系列文章的总汇加上标注。

支持原创，请移步陈浩大神博客：（最原始版本）

http://blog.youkuaiyun.com/haoel/article/details/2886

 

我转自一个博主  基于原博客的整理版本：

http://blog.youkuaiyun.com/ruglcc/article/details/7814546/

 

makefile很重要
      ...]]></description><category></category></item><item><title><![CDATA[HDFS读写过程的详细分析]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/81012130</link><guid>https://blog.youkuaiyun.com/darmao/article/details/81012130</guid><author>darmao</author><pubDate>Thu, 12 Jul 2018 10:53:53 +0800</pubDate><description><![CDATA[转自https://www.cnblogs.com/wxplmm/p/7239342.html首先我们来认识一下HDFS， HDFS（Hadoop Distributed File System ）Hadoop分布式文件系统。它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件，为了降低文件丢失造成的错误，它会为每个小文件复制多个副本（默认为三个），...]]></description><category></category></item><item><title><![CDATA[如何绕过类的权限检查访问private变量？]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80779447</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80779447</guid><author>darmao</author><pubDate>Fri, 22 Jun 2018 22:55:02 +0800</pubDate><description><![CDATA[主要原理就是：首先搞明白对象的内存布局，然后直接用对象的首地址加上某个成员变量在对象中的偏移值去访问。下边代码中的这个例子，对象的内存布局为：直接用首地址加上偏移值去访问即可。#include &amp;lt;iostream&amp;gt;
using namespace std;
class CNumber
{
public:
	CNumber()
	{
		this-&amp;gt;nums=10;
		this-...]]></description><category></category></item><item><title><![CDATA[redis中基本的数据结构1]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80624530</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80624530</guid><author>darmao</author><pubDate>Fri, 08 Jun 2018 16:10:13 +0800</pubDate><description><![CDATA[1.动态字符串结构 2.链表结构 3.哈希表节点 当两个健的哈希值相同的时候,使用链表连接在一起,解决冲突 4.字典 5.给字典中添加新的键值对:  5.1使用字典设置的哈希函数,计算健key的哈希值     Hash=dict-&amp;gt;type-&amp;gt;hashFunction(key);  5.2使用哈希表的sizemask属性和哈希值,计算出索引值     Index=hash&amp;amp;di...]]></description><category></category></item><item><title><![CDATA[泛化，特化，偏特化,traits]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80321737</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80321737</guid><author>darmao</author><pubDate>Tue, 15 May 2018 13:54:56 +0800</pubDate><description><![CDATA[template&amp;lt;typename T&amp;gt;
struct _type_traits
{
    //泛化
    T t;
};
template&amp;lt;&amp;gt;
struct _type_traits&amp;lt;int&amp;gt;
{
    //特化
    int i;
};
_type_traits&amp;lt;Foo&amp;gt;::t;//使用泛化版本
_type_traits&amp;lt;int&amp;g...]]></description><category></category></item><item><title><![CDATA[不执行main函数可以执行一段程序吗？]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80111012</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80111012</guid><author>darmao</author><pubDate>Fri, 27 Apr 2018 17:26:18 +0800</pubDate><description><![CDATA[看代码：int main()
{
    printf(&quot;main\n&quot;);　　　　//从运行结果来看，并没有执行main函数
}
void func()
{
    printf(&quot;不想执行main函数\n&quot;);
    exit(0);
}
__attribute((destructor))void after()
{
    printf(&quot;after\n&quot;);

}
__attribute...]]></description><category></category></item><item><title><![CDATA[指针和引用的区别]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80106173</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80106173</guid><author>darmao</author><pubDate>Fri, 27 Apr 2018 12:19:44 +0800</pubDate><description><![CDATA[经常看到网上有人说引用和指针其实是一样，底层都是指针，也没有人来详细分析一下，今天我们来看一看。int main()
{
    int a=10;
    int &amp;amp;b=a;
    b=20;
}   0x00000000004028de &amp;lt;+0&amp;gt;:	push   %rbp
   0x00000000004028df &amp;lt;+1&amp;gt;:	mov    %rsp,%rbp...]]></description><category></category></item><item><title><![CDATA[深入理解虚函数]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/80003011</link><guid>https://blog.youkuaiyun.com/darmao/article/details/80003011</guid><author>darmao</author><pubDate>Thu, 19 Apr 2018 12:03:41 +0800</pubDate><description><![CDATA[我们先来看一下没有继承的情况下有虚函数的对象的内存布局： 
在对象的最开始处，是一个虚函数表指针，这个指针指向了一个虚函数表，表中的每一项都是一个虚函数的地址。接着来看看代码，如何不通过对象直接调用虚函数？甚至调用对象的私有函数。 
直接上代码吧，详细解释看注释：#include <iostream>
using namespace std;
class A
{
public:
    A()]]></description><category></category></item><item><title><![CDATA[关于析构函数和构造函数的调用]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79998977</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79998977</guid><author>darmao</author><pubDate>Thu, 19 Apr 2018 00:33:56 +0800</pubDate><description><![CDATA[代码如下：编译加上参数：-fno-elide-constructors,其中析构函数还有问题，请大神指导#include &amp;lt;iostream&amp;gt;
using namespace std;
class CNumber
{
public:
    CNumber()
    {
        m_nNumber=10;
        cout&amp;lt;&amp;lt;&quot;构造函数&quot;&amp;lt;&amp;lt;e...]]></description><category></category></item><item><title><![CDATA[我读过的最好介绍红黑树的文章]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79921227</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79921227</guid><author>darmao</author><pubDate>Thu, 12 Apr 2018 22:18:03 +0800</pubDate><description><![CDATA[前言      红黑树，对不少人来说是个比较头疼的名字，在网上搜资料也很少有讲清楚其演变来源的，多数一上来就给你来五条定义，红啊黑啊与根节点距离相等之类的，然后就开始进行旋转、插入、删除这些操作。一通操作下来，连红色和黑色怎么来的，是什么含义，有什么作用都云里雾里的，能搞清楚就怪了。      本文介绍红黑树，暂时不涉及任何代码，只是帮助你理解红黑树的演变来源，树结构中红黑色具体含义，保证你理解了...]]></description><category></category></item><item><title><![CDATA[PLT和GOT表（1）]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79523888</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79523888</guid><author>darmao</author><pubDate>Mon, 12 Mar 2018 10:42:16 +0800</pubDate><description><![CDATA[转载自：http://blog.youkuaiyun.com/linyt/article/details/51635768在介绍PLT和GOT出场之前，先以一个简单的例子引入两个主角，各位请看以下代码：#include &amp;lt;stdio.h&amp;gt;

void print_banner()
{
    printf(&quot;Welcome to World of PLT and GOT\n&quot;);
}

int m...]]></description><category></category></item><item><title><![CDATA[TCP层的分段和IP层的分片之间的关系 MTU和MSS存在的关]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79432644</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79432644</guid><author>darmao</author><pubDate>Sat, 03 Mar 2018 20:21:03 +0800</pubDate><description><![CDATA[转载自：http://blog.sina.com.cn/s/blog_648d306d0102v4z2.html分段发生在传输层，分片发生在网络层。但是对于分段来说，这是经常发生在UDP传输层协议上的情况，对于传输层使用TCP协议的通道来说，这种事情很少发生。1，MTU（MaximumTransmission Unit，MTU），最大传输单元（1）以太网和802.3对数据帧的长度都有一个限制，其最...]]></description><category></category></item><item><title><![CDATA[水平触发和边缘触发]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79426171</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79426171</guid><author>darmao</author><pubDate>Fri, 02 Mar 2018 18:36:46 +0800</pubDate><description><![CDATA[epoll也是实现I/O多路复用的一种方法，为了深入了解epoll的原理，我们先来看下epoll水平触发（level trigger，LT，LT为epoll的默认工作模式）与边缘触发（edge trigger，ET）两种工作模式。使用脉冲信号来解释LT和ET可能更加贴切。Level是指信号只需要处于水平，就一直会触发；而edge则是指信号为上升沿或者下降沿时触发。说得还有点玄乎，我们以生活中的一个...]]></description><category></category></item><item><title><![CDATA[条件变量之虚假唤醒]]></title><link>https://blog.youkuaiyun.com/darmao/article/details/79421526</link><guid>https://blog.youkuaiyun.com/darmao/article/details/79421526</guid><author>darmao</author><pubDate>Fri, 02 Mar 2018 11:37:38 +0800</pubDate><description><![CDATA[转载自：http://blog.youkuaiyun.com/q1007729991/article/details/620399881. 实现方法接下来，给出 pthread_cond_wait 和 pthread_cond_signal 的伪代码(参考man pthread_cond_signal)。语句后面的编号代表时间上的执行顺序。pthread_cond_wait(mutex, cond) {
  ...]]></description><category></category></item></channel></rss>