<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[知识需要积累。]]></title><description><![CDATA[一起探讨和学习]]></description><link>https://blog.youkuaiyun.com/shareyao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shareyao]]></copyright><item><title><![CDATA[POCO NotificationQueue Sample疑问]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/7798654</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/7798654</guid><author>shareyao</author><pubDate>Sun, 29 Jul 2012 11:14:09 +0800</pubDate><description><![CDATA[为啥打印这一句地方需要加锁互斥？


				WorkNotification::Ptr pWorkNf = pNf.cast();
				if (pWorkNf)
				{
					{
						FastMutex::ScopedLock lock(_mutex);
						std::cout data() << std::endl;
					}
					Thread::s]]></description><category></category></item><item><title><![CDATA[X.509证书校验]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5802793</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5802793</guid><author>shareyao</author><pubDate>Tue, 10 Aug 2010 23:31:00 +0800</pubDate><description><![CDATA[X.509证书校验这里讨论openssl中如何应用CRLs和来自证书体系的其他证书来进行证书校验。为此需要使用X.509包的功能函数。SSL协议实现已经处理了很多这里将要讨论的东西，即使如此，一些工作还是需要我们亲历亲为，特别是当我们希望在证书校验过程中使用CRLs的校验，大部分情况我们确实应该如此。通常讲，证书可以通过其他证书体系一系列的证书来验证是合法的，比如CA证书和CRLs。Openssl使用X509_STORE对象来表示证书和废止证书的集合来完成此校验目的。除此之外，Openssl使用类型X509]]></description><category></category></item><item><title><![CDATA[证书制作]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5800086</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5800086</guid><author>shareyao</author><pubDate>Mon, 09 Aug 2010 23:25:00 +0800</pubDate><description><![CDATA[	
	我们已经知道创建证书需要一个证书请求，CA证书，CA证书配套的CA私钥。创建证书分为如下几个步骤。
	
	验证证书请求及其内容（本例中包括subjectName和subjectAltName），从而决定是否同意使用CA证书来证书这些数据。
	创建一个新的证书并且设置所有需要的字段，比如公钥，subject和issuer名称，使用期限数据等等。
	增加应用扩展到证书中，包括请求中的subjectAltname。
	使用CA的私钥对证书进行签名。

步骤一最为重要。为了检验请求，首先必须检]]></description><category></category></item><item><title><![CDATA[如何创建证书请求]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5796742</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5796742</guid><author>shareyao</author><pubDate>Sun, 08 Aug 2010 14:14:00 +0800</pubDate><description><![CDATA[<br /><br /><br /><br /><br />   X509证书实质是公钥和与之相关的拥有者和签发者的一个打包。因此，为了创建一个证书请求，必须先产生一个公私密钥对。X.509证书在openssl中是用X509_REQ对象表示的。证书请求中主要包括密钥对中的公钥部分，除此之外还包括subjectName字段和其他一些X.509的属性。这些属性对于证书请求来说是可选参数，但是subject name却是必须有的。<br /><br /><br />  X509_NAME对象类型代表证书的名称。具]]></description><category></category></item><item><title><![CDATA[makefile .d的解释]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5610638</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5610638</guid><author>shareyao</author><pubDate>Thu, 20 May 2010 11:25:00 +0800</pubDate><description><![CDATA[在学写makefile时候，如果要写的好一点高手建议要用个．d文件．我那时候也是非常迷糊，我写的测试代码不用这个也照样运行的很好啊，为什么要写这个东西呢？下面先看这个情况．我们写的这个Makefile 一般要用隐晦规则．当然了如果就两个文件也没必要写这个东西了．用隐晦规则时候．.o 文件会自动找这个 .c文件．然后编译．这个是没问题．如果有两个文件first.c main.c 你可以这样写OBJS]]></description><category></category></item><item><title><![CDATA[编译错误undefined reference to `dlsym' ]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5362642</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5362642</guid><author>shareyao</author><pubDate>Tue, 09 Mar 2010 21:57:00 +0800</pubDate><description><![CDATA[今天编译碰到了问题，加了-ldl就ok了。dso_dlfcn.c:(.text+0x325): undefined reference to `dlsymdso_dlfcn.c:(.text+0x408): undefined reference to `dlerror ]]></description><category></category></item><item><title><![CDATA[[读书笔记]openssl证书制作]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5338127</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5338127</guid><author>shareyao</author><pubDate>Tue, 02 Mar 2010 11:10:00 +0800</pubDate><description><![CDATA[  1. CA命令 Openssl中CA功能命令为 ca，所以第一个关注的section就是ca了。这个section非常简单，仅包含一个key：default_ca。 三个default_crl_days，default_days和default_md，对于命令行中的crldays，days和md选项，可以通过使用这些选项来覆盖配置文件中设定的值。 Polic]]></description><category></category></item><item><title><![CDATA[证书配置文件]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5337992</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5337992</guid><author>shareyao</author><pubDate>Tue, 02 Mar 2010 10:47:00 +0800</pubDate><description><![CDATA[NAMEDESCRIPTIONCA CONFIGURATION DIRECTIVES[ ca ] Section[ CA_default ] Section[ policy_match ] and [ policy_anything ] SectionsREQ CONFIGURATION DIRECTIVES[ req ][ req_dist]]></description><category></category></item><item><title><![CDATA[openssl证书链的校验过程]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5294538</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5294538</guid><author>shareyao</author><pubDate>Sat, 06 Feb 2010 16:23:00 +0800</pubDate><description><![CDATA[ X509_STORE_CTX这个结构主要是用来校验证书用，一般都会使用X509_STORE这个已经设置好的对象来初始化X509_STORE_CTX，初始化函数如下： int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,	     STACK_OF(X509) *chain) ]]></description><category></category></item><item><title><![CDATA[ASN1编码笔记100103]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5126039</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5126039</guid><author>shareyao</author><pubDate>Sun, 03 Jan 2010 22:12:00 +0800</pubDate><description><![CDATA[X509_Value ASNI转DER编码并且保存文件，代码如下: #include #include #include "openssl/x509.h"int    main(){       char*buf,*p;       char read[1024];       int           len;	   BIO		*bwriteFile;]]></description><category></category></item><item><title><![CDATA[openssl中证书加载过程]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/5124800</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/5124800</guid><author>shareyao</author><pubDate>Sun, 03 Jan 2010 16:28:00 +0800</pubDate><description><![CDATA[首先看SSL_CTX的结构中跟证书相关的字段（其实结构里面的内容非常多）  struct ssl_ctx_st{    struct x509_store_st /* X509_STORE */ *cert_store;    STACK_OF(X509_NAME) *client_CA;    struct cert_st /* CERT */ *cert; ]]></description><category></category></item><item><title><![CDATA[有关auto pointer]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/2311180</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/2311180</guid><author>shareyao</author><pubDate>Mon, 21 Apr 2008 11:09:00 +0800</pubDate><description><![CDATA[#pragma oncetemplateclass type>class auto_ptr_test...{public:    auto_ptr_test( type * p = 0):p_(p)...{}    ~auto_ptr_test(void)...{delete p_;}    auto_ptr_test(const auto_ptr_test & auto_ptr)    ..]]></description><category></category></item><item><title><![CDATA[C++中关于operator assignment]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/2298465</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/2298465</guid><author>shareyao</author><pubDate>Wed, 16 Apr 2008 20:42:00 +0800</pubDate><description><![CDATA[最基本的形式是：widget & operator= (const widget  & )知道为什么要返回引用吗？1. 因为c++设计的目的是要使得自定义类也可以像内置类型那样可以有简单的操作：像operator assignment就是其中之一。比如int a, b,c,你可以像这样赋值 a=b=c;那么对于：widget wa, wb,wc;也应该可以进行这样的操作才是，wa= wb= wc,]]></description><category></category></item><item><title><![CDATA[zigzag]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1870313</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1870313</guid><author>shareyao</author><pubDate>Tue, 06 Nov 2007 20:56:00 +0800</pubDate><description><![CDATA[const int dimension  = 7;void make_zigzag(int n, int a[][dimension])...{    int i = 0, j= 0;    int num = 0;    while (1)    ...{                while (i>= 0 && j n-1)        ...{            a[i--][]]></description><category></category></item><item><title><![CDATA[C++构造和析构顺序]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1843801</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1843801</guid><author>shareyao</author><pubDate>Thu, 25 Oct 2007 18:40:00 +0800</pubDate><description><![CDATA[以为自己C++还算是比较 熟悉，可是发现自己离精通还差的好远，一个小小的问题就把我问倒了，无比郁闷:(。还需要修炼啊，C++真的很复杂。进入正题。我知道构造函数的执行顺序，先调用基类的构造函数，然后是自己的构造函数。析构的顺序刚好相反。可是成员变量呢？faint，这个我就不知道了。总结：（1）首先调用基类构造函数；（2）调用成员对象的构造函数；（3）自己的构造函数。]]></description><category></category></item><item><title><![CDATA[TCP连接的状态转换图深度剖析]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1831059</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1831059</guid><author>shareyao</author><pubDate>Thu, 18 Oct 2007 15:00:00 +0800</pubDate><description><![CDATA[这个图n多人都知道，它对排除和定位网络或系统故障时大有帮助，但是怎样牢牢地将这张图刻在脑中呢？那么你就一定要对这张图的每一个状态，及转换的过程有深刻地认识，不能只停留在一知半解之中。下面对这张图的11种状态详细解释一下，以便加强记忆！不过在这之前，先回顾一下TCP建立连接的三次握手过程，以及关闭连接的四次握手过程。1、建立连接协议（三次握手） （1）客户端发送一个带SYN标志的TCP报文到]]></description><category></category></item><item><title><![CDATA[字符串全排列]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1831033</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1831033</guid><author>shareyao</author><pubDate>Thu, 18 Oct 2007 14:50:00 +0800</pubDate><description><![CDATA[今天面试问到了一道题目，也不知道讲清楚了没，当时自己的思维也有些乱！求一个字符串的全排列。 void all_sort(char * a, int start, int end)...{    if (start == end)    ...{        for(int i = 0; iend; i++)        ...{            printf("%c", a[]]></description><category></category></item><item><title><![CDATA[STL容器删除]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1797603</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1797603</guid><author>shareyao</author><pubDate>Sun, 23 Sep 2007 22:07:00 +0800</pubDate><description><![CDATA[map amap;        amap.insert(map::value_type(3,5));        amap.insert(map::value_type(4,5));        amap.insert(map::value_type(5,5));        map::iterator iter = amap.begin();        for(;iter != am]]></description><category></category></item><item><title><![CDATA[回车和换行]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1772004</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1772004</guid><author>shareyao</author><pubDate>Tue, 04 Sep 2007 17:06:00 +0800</pubDate><description><![CDATA[在计算机还没有出现之前，有一种叫做电传打字机（Teletype Model 33）的玩意，每秒钟可以打10个字符。但是它有一个问题，就是打完一行换行的时候，要用去0.2秒，正好可以打两个字符。要是在这0.2秒里面，又有新的字符传过来，那么这个字符将丢失。于是，研制人员想了个办法解决这个问题，就是在每行后面加两个表示结束的字符。一个叫做“回车”，告诉打字机把打印头定位在左边界；另一个叫做“换行”]]></description><category></category></item><item><title><![CDATA[Command设计模式]]></title><link>https://blog.youkuaiyun.com/shareyao/article/details/1765430</link><guid>https://blog.youkuaiyun.com/shareyao/article/details/1765430</guid><author>shareyao</author><pubDate>Thu, 30 Aug 2007 14:57:00 +0800</pubDate><description><![CDATA[我的理解Command Pattern 设计一个命令的执行者，它负责执行命令，但是它并不知道这个命令是什么，它只负责去执行就好了，而且这个命令也总是会被正确的执行。 其实在看了前几页对这个模式的描述，差不多脑海中就已经构思出这个模式的大概实现了。 比较生动的2个例子： 1． 你去一家餐厅吃饭。当你把菜单点好，服务员会把你的菜单送到厨师那里，厨师会帮你做好你点的菜。就这么简单：其中服务员就相当于是命]]></description><category></category></item></channel></rss>