<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yichigo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yichigo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yichigo]]></copyright><item><title><![CDATA[IPFS内部原理入门（An Introduction to IPFS）]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/79655922</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/79655922</guid><author>yichigo</author><pubDate>Thu, 22 Mar 2018 16:40:16 +0800</pubDate><description><![CDATA[原作：An Introduction to IPFS

作者：Dr. Christian Lundkvist, Director of Engineering, andJohn Lilic, ConsenSys Enterprise

翻译：伏神

原文地址：https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0

（译...]]></description><category></category></item><item><title><![CDATA[阿里云OSS修改大文件数据优化方案]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/73850495</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/73850495</guid><author>yichigo</author><pubDate>Wed, 28 Jun 2017 17:31:38 +0800</pubDate><description><![CDATA[阿里云OSS的程序开发中会遇到修改一个很大对象（object）中一段数据的情况。而OSS的特性决定了，在整个生命周期内，OSS对象的数据不可变更。因此，OSS 不支持修改文件的部分内容等操作。重复上传同名的对象会覆盖之前的对象。如果需要修改一个文件的部分内容，通常的方案是将整个文件下载到本地，然后将修改后的文件上传到OSS，覆盖原始文件。对于大文件而言，这样的做会带来不必要的网络开销，浪费大量时间。利用OSS的一些数据接口的特性，可以对改问题的处理流程做一定的优化。]]></description><category></category></item><item><title><![CDATA[Windbg扩展指令开发教程]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/53033650</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/53033650</guid><author>yichigo</author><pubDate>Fri, 04 Nov 2016 13:10:03 +0800</pubDate><description><![CDATA[之前我曾提供了导出stl map和set内容的windbg扩展指令库，并给出了使用方法。授人以鱼不如授人以渔，下面的文章将以开发一个导出CMap容器内容的windbg扩展指令cmap为例，介绍如果开发一个windbg的扩展指令库。]]></description><category></category></item><item><title><![CDATA[Linux下c++程序内存泄漏检测代码范例]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/45092265</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/45092265</guid><author>yichigo</author><pubDate>Fri, 17 Apr 2015 09:27:05 +0800</pubDate><description><![CDATA[Linux下对于程序内存泄漏检测的方法很多，最常用的的莫过于使用valgrind工具。但是valgrind相当于让程序在虚拟机中运行，会带来较大的系统资源开销，还会对程序的运行效率产生较大影响，对于那种资源占用大的程序，如果需要长时间运行才能暴露的泄漏问题，它就显得不太好用。
linux下的c++程序中自己实现一个轻量级的泄漏检测代码其实是比较方便的，下面我就给出一个简单的范例，并作简单的说明。]]></description><category></category></item><item><title><![CDATA[C++中的goto陷阱]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/45077009</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/45077009</guid><author>yichigo</author><pubDate>Thu, 16 Apr 2015 17:00:40 +0800</pubDate><description><![CDATA[尽管程序设计中不提倡使用goto语句，但是有的时候为了简化代码，难免会使用到goto。下面我要讨论的这个陷阱C语言程序中不会遇到，反而C++中稍不注意就会引起问题。
直接看以下代码：
int _tmain(int argc, _TCHAR* argv[])
{
	int t1 = 1;
	if (t1 >0)
	{
		goto __next;
	}
	int t2 = 5;]]></description><category></category></item><item><title><![CDATA[windbg导出stl map和set的插件]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/38232511</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/38232511</guid><author>yichigo</author><pubDate>Mon, 28 Jul 2014 16:50:50 +0800</pubDate><description><![CDATA[windbg自带的stl_map等指令不能正确导出stl容器中的数据，所有我自己写了一个windbg插件stlkit，用于导出stl map和set的数据。
1.stlkit拷贝到windbg安装路径下的winext目录中；
2.windbg没有自动加载stlkit时，使用.load stlkit指令手动加载；
3.!set或!stlkit.set指令导出STL set的内容，
使用方法是：
!set 变量名
!set 地址#成员类型
4.!map或!stlkit.map指令导出STL map的内容，
使用]]></description><category></category></item><item><title><![CDATA[VC和gcc在保证函数static变量线程安全性上的区别]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/37878117</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/37878117</guid><author>yichigo</author><pubDate>Wed, 16 Jul 2014 15:10:48 +0800</pubDate><description><![CDATA[VC和gcc不同，不能保证静态变量的线程安全性。这就给我们的程序带来了很大的安全隐患和诸多不便。这一点应该引起我们的重视！尤其是在构造函数耗时比较长的时候，很可能给程序带来意想不到的结果。本文从测试代码开始，逐步分析原理，最后给出解决方案。
 
多线程状态下，VC不能保证在使用函数的静态变量的时候，它的构造函数已经被执行完毕，下面是一段测试代码：
 
 class TestStatic]]></description><category></category></item><item><title><![CDATA[linux 下实现高性能读写锁（read/write lock）]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/37510463</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/37510463</guid><author>yichigo</author><pubDate>Mon, 07 Jul 2014 15:05:40 +0800</pubDate><description><![CDATA[前一篇文章分析了Windows slim read/write lock的工作原理，]]></description><category></category></item><item><title><![CDATA[windows slim read/write lock 原理剖析]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/36898561</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/36898561</guid><author>yichigo</author><pubDate>Fri, 04 Jul 2014 16:53:30 +0800</pubDate><description><![CDATA[Windows在Vista之后提供了一组称为slim
读写锁的API函数，网上传闻效率很高。关于这组读写锁的功能和用法在mdsn和《windows核心编程第五版》上都有详细介绍。
 




SRW lock function


Description




AcquireSRWLockExclusive


Acquires an SRW lock in ]]></description><category></category></item><item><title><![CDATA[pthread_cond_timedwait按相对时间等待超时完整示例代码]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/23459613</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/23459613</guid><author>yichigo</author><pubDate>Fri, 11 Apr 2014 17:48:49 +0800</pubDate><description><![CDATA[#include 
#include 
#include 

typedef struct mutex_cond
{
		pthread_condattr_t cattr;
        pthread_mutex_t i_mutex;
        pthread_cond_t i_cv;
		void* i_sigevent; // when "OR" flag i_si]]></description><category></category></item><item><title><![CDATA[Android Wi-Fi Direct 开发指南]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/8472570</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/8472570</guid><author>yichigo</author><pubDate>Sun, 06 Jan 2013 13:33:07 +0800</pubDate><description><![CDATA[Android Wi-Fi Direct 开发指南
（本文为Android官方开发文档译文） 
使用Wi-Fi Direct技术可以让具备硬件支持的设备在没有中间接入点的情况下进行直接互联。Android 4.0（API版本14）及以后的系统都提供了对Wi-Fi
 Direct的API支持。通过对这些API的使用，开发者可以实现支持Wi-Fi Direct的设备间进行相互探测和连接，从而获得]]></description><category></category></item><item><title><![CDATA[全角字符大小写转换实现]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/8112342</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/8112342</guid><author>yichigo</author><pubDate>Thu, 25 Oct 2012 18:33:26 +0800</pubDate><description><![CDATA[在windows上应用层提供的字符串处理函数一般是不能够处理全角字符大小写问题的。例如，_wcsicmp()并不会认为全角字符Ａ和全角字符ａ是相等的。又如，CString的方法LowerCase()也不能将全角的Ａ转换为全角的ａ。遇到需要对全角字符进行大小写转换和大小写不敏感的比较的时候，我们需要用到windows提供的API函数LCMapString
函数原型是：
int LCMapStri]]></description><category></category></item><item><title><![CDATA[IMAP协议程序设计入门（VC篇）]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/8057115</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/8057115</guid><author>yichigo</author><pubDate>Wed, 10 Oct 2012 16:51:42 +0800</pubDate><description><![CDATA[IMAP协议程序设计入门（VC篇）


最近在搞邮件接收的程序，网络上找到很多pop3的例子代码，很遗憾，我认识的所有邮箱都不再支持pop3，无奈只能用imap。Imap编程的资料相当匮乏，以至于没有找到一个示例程序，通过抓包和学习协议，终于把整个流程跑通了。不多废话，直接上一个简单而且相对完整的基本流程。
1. 登录
指令：LOGIN user password
C语言字符串示例："]]></description><category></category></item><item><title><![CDATA[Mac OS X设置程序开机启动]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/7678750</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/7678750</guid><author>yichigo</author><pubDate>Wed, 20 Jun 2012 09:50:38 +0800</pubDate><description><![CDATA[以启动/usr/local/lib/FiDaemon程序为例
1.进入/Library/StartupItems目录，如果StartupItems不存在，需要创建。创建后确定StartupItems用户和组为"root:wheel"，权限为"755"。
2.在StartupItems下创建目录FiDaemon。修改用户和组为"root:wheel"，权限为"755"。
3.在FiDaemon]]></description><category></category></item><item><title><![CDATA[Analysis of undocumented Windows function NhGetInterfaceNameFromDeviceGuid]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/7450788</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/7450788</guid><author>yichigo</author><pubDate>Wed, 11 Apr 2012 18:59:18 +0800</pubDate><description><![CDATA[The function NhGetInterfaceNameFromDeviceGuid is derived from the DLL IPHLPAPI. Its effect is to obtain device interface name according corresponding GUID. Such as the network interface card GUID for]]></description><category></category></item><item><title><![CDATA[linux启动程序和结束程序相关问题解决方法]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/7450722</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/7450722</guid><author>yichigo</author><pubDate>Wed, 11 Apr 2012 18:12:56 +0800</pubDate><description><![CDATA[（一）linux下普通用户下以root身份运行程序（例如：程序FiDaemon的设置）：
 
（1）sudo chown root:root FiDaemon
（2）sudo chmod u+s FiDaemon
（3）启动FiDaemon
这时，即使是普通用户下启动FiDeamon，此程序也是以root方式运行的
  
（二）linux下用户登录后自动运行程序（例如：FiDaemo]]></description><category></category></item><item><title><![CDATA[windows未公开函数NhGetInterfaceNameFromDeviceGuid分析]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/7414327</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/7414327</guid><author>yichigo</author><pubDate>Sat, 31 Mar 2012 09:54:45 +0800</pubDate><description><![CDATA[windows未公开函数NhGetInterfaceNameFromDeviceGuid分析
IPHLPAPI.dll中导出了函数NhGetInterfaceNameFromDeviceGuid，其作用是根据设备GUID获取对应的接口名称。例如网卡GUID为“94C913BF-EFA9-419B-8506-BB88B0F3B34F”，对应的设备接口名称为“本地连接”。但是微软并未公开该函数的使用]]></description><category></category></item><item><title><![CDATA[解决CFile输出汉字为乱码的问题]]></title><link>https://blog.youkuaiyun.com/yichigo/article/details/6155801</link><guid>https://blog.youkuaiyun.com/yichigo/article/details/6155801</guid><author>yichigo</author><pubDate>Thu, 20 Jan 2011 21:10:00 +0800</pubDate><description><![CDATA[ 使用CFile操作文件十分方便，但是却会遇到输出汉字到文件后变成乱码的困扰。然而网上流行的解决方案却少有命中问题要害的！其实，解决的办法并不是想像中的那么复杂]]></description><category></category></item></channel></rss>