<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[惊叹号]]></title><description><![CDATA[当我们有站在同一个起跑线的机会时，绝不能把机会让给别人]]></description><link>https://blog.youkuaiyun.com/weiyuan2011</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weiyuan2011]]></copyright><item><title><![CDATA[Ruby读取二进制文件]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/43987619</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/43987619</guid><author>weiyuan2011</author><pubDate>Sat, 28 Feb 2015 17:04:17 +0800</pubDate><description><![CDATA[贴上一段代码，用Ruby读取BMP图像的，以作备忘。其中，sysread方法中的参数表示读取的字节数。bmp_read_file = File.open("E://test_example//C++.bmp","rb")  
write_file = File.new("E://test_example//target","wb")  
  
while true  
  begin   
   ]]></description><category></category></item><item><title><![CDATA[ruby常用字符串处理函数]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/38819893</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/38819893</guid><author>weiyuan2011</author><pubDate>Mon, 25 Aug 2014 14:04:56 +0800</pubDate><description><![CDATA[附图是我归纳的ruby常用字符串处理函数：]]></description><category></category></item><item><title><![CDATA[排序算法性能与使用场景总结]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/21041709</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/21041709</guid><author>weiyuan2011</author><pubDate>Tue, 11 Mar 2014 21:35:30 +0800</pubDate><description><![CDATA[按平均时间将排序分为四类：

（1）平方阶(O(n2))排序
　一般称为简单排序，例如直接插入、直接选择和冒泡排序；

（2）线性对数阶(O(nlgn))排序
　如快速、堆和归并排序；

（3）O(n1+￡)阶排序
　￡是介于0和1之间的常数，即0

（4）线性阶(O(n))排序
　如桶、箱和基数排序。

各种排序方法比较

简单排序中直接插入最好，快速排序最快，当]]></description><category></category></item><item><title><![CDATA[什么是回调函数]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/19491667</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/19491667</guid><author>weiyuan2011</author><pubDate>Wed, 19 Feb 2014 16:13:00 +0800</pubDate><description><![CDATA[通常在我们所写的应用程序中，会调用WinAPI函数，在调用传参时，传入一个函数名，也就是一个函数地址，这个函数地址其实就是回调函数的地址。回调函数是我们自己所写，由WinAPI调用。在WinAPI执行时，如果发生某种情况，就会调用我们传入的这个函数。
        所谓的回调就体现在：原来是由我们程序员调用别人写好的底层WinAPI函数，现在是由底层WinAPI调用我们所写的函数。
    ]]></description><category></category></item><item><title><![CDATA[经典线程同步问题（三）]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18982809</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18982809</guid><author>weiyuan2011</author><pubDate>Sat, 08 Feb 2014 12:06:45 +0800</pubDate><description><![CDATA[问题：
有四个线程1、2、3、4。线程1的功能就是输出1，线程2的功能就是输出2，以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式：
A：1 2 3 4 1 2....
B：2 3 4 1 2 3....
C：3 4 1 2 3 4....
D：4 1 2 3 4 1....
请设计程序。
#include 
/*
整体思想如下：关键段实现对]]></description><category></category></item><item><title><![CDATA[经典线程同步问题（二）]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18959611</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18959611</guid><author>weiyuan2011</author><pubDate>Fri, 07 Feb 2014 11:08:55 +0800</pubDate><description><![CDATA[问题：
编写一个程序，开启3个线程，这3个线程的ID分别为A、B、C，每个线程将自己的ID在屏幕上打印10遍，要求输出结果必须按ABC的顺序显示；如：ABCABC….依次递推。
解答：
在这里我们将题简化为循环打印5遍
HANDLE g_eventA;
HANDLE g_eventB;
HANDLE g_eventC;
unsigned int __stdcall threadFun]]></description><category></category></item><item><title><![CDATA[经典线程同步问题(一)]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18958375</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18958375</guid><author>weiyuan2011</author><pubDate>Fri, 07 Feb 2014 09:56:52 +0800</pubDate><description><![CDATA[问题：
子线程循环 10 次，接着主线程循环 100 次，接着又回到子线程循环 10 次，接着再回到主线程又循环 100 次，如此循环50次，试写出代码。
 
解答：这里我们讲题简化为 “子线程循环2次，接着主线程循环 4次，接着又回到子线程循环 2次，接着再回到主线程又循环 4 次，如此循环5次，试写出代码”
HANDLE g_eventMain;
HANDLE g_eventSon;]]></description><category></category></item><item><title><![CDATA[Python学习笔记[2]]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18079721</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18079721</guid><author>weiyuan2011</author><pubDate>Fri, 10 Jan 2014 12:18:49 +0800</pubDate><description><![CDATA[【备注：本文是学习http://blog.youkuaiyun.com/ithomer/article/details/8907268过程中记下的笔记】
【EX:所注为代码示例】
【Tips:所注为标识，可能是一个小技巧】
一、进阶08 异常处理
 类似于C++中的异常处理一样
 具体过程如下：
 try -> func() ->except somecase: -> except -> else]]></description><category></category></item><item><title><![CDATA[C++实现各种基础排序（冒泡、选择、快排、插入、堆排、希尔、归并）]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18045193</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18045193</guid><author>weiyuan2011</author><pubDate>Thu, 09 Jan 2014 17:12:06 +0800</pubDate><description><![CDATA[#include "sort.h"
/*-----------------交换类排序------------------------------*/
//冒泡排序
bool BubbleSort(int arr[],int len)
{
	if (arr == NULL)
	{
		return false;
	}
	bool bDone = true;
	//一个标记，只有当]]></description><category></category></item><item><title><![CDATA[Python学习笔记[1]]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18039895</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18039895</guid><author>weiyuan2011</author><pubDate>Thu, 09 Jan 2014 14:23:57 +0800</pubDate><description><![CDATA[【备注：本文是学习http://blog.youkuaiyun.com/ithomer/article/details/8907268过程中记下的笔记】
【EX:所注为代码示例】
【Tips:所注为标识，可能是一个小技巧】
一.进阶05 循环设计
 
 1.range()的应用
 EX：
>>> m = [1,2,3,4,5,6]

 >>> for i in range(0,len(m),]]></description><category></category></item><item><title><![CDATA[C++中对Lib及Dll的链接调用]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18006469</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18006469</guid><author>weiyuan2011</author><pubDate>Wed, 08 Jan 2014 18:21:08 +0800</pubDate><description><![CDATA[首先介绍静态链接库*.lib的链接
Step1.创建一个lib文件
//lib.h
#ifndef _LIB_H
#define _LIB_H
int add(int a = 0,int b = 0);
#endif//lib.cpp
#include "lib.h"

int add(int a,int b)
{
	return a+b;
}
Step2.在main函数]]></description><category></category></item><item><title><![CDATA[TinyXML来操作XML文件（C++）<二>]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18004329</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18004329</guid><author>weiyuan2011</author><pubDate>Wed, 08 Jan 2014 17:34:14 +0800</pubDate><description><![CDATA[在上一篇文章《TinyXML来操作XML文件（C++）》我们练习了创建XML、读取XML的方法，在本文中我们继续学习XML文件的增删改操作：包括读取声明、读取某结点文本属性、删去某结点、修改结点属性文本，增加结点操作
读取XML声明：
void ReadDeclaration(char *FileName,string& version,string& standalone,string& e]]></description><category></category></item><item><title><![CDATA[python学习笔记[0]]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/18002281</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/18002281</guid><author>weiyuan2011</author><pubDate>Wed, 08 Jan 2014 16:20:12 +0800</pubDate><description><![CDATA[Python是一个面向对象开发语言，大部分情况下被用来作脚本的开发，所以也有一大部分的人说他是脚本语言
Python的优点：高质量
       高效率————不用像C C++静态语言一样，进行编译连接，直接可以运行
              可移植————适用于各种平台linux windows Mac Unix android等，可直接将这个平台的程序拷贝到另一个平台运行]]></description><category></category></item><item><title><![CDATA[TinyXML来操作XML文件（C++）]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/17803651</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/17803651</guid><author>weiyuan2011</author><pubDate>Fri, 03 Jan 2014 23:22:01 +0800</pubDate><description><![CDATA[XML文件
     （Extensible Markup Language可扩展标记语言)
1）  
元标记语言，所谓“元标记”就是用户可自定义，而HTML是预定义的，不允许自定义
2）  
语义/结构化语言，可描述文档的结构和语义
3）  
数据交换，因为它是跨平台的，跨系统、跨应用程序，所以就可以将这个数据很方便的将一个数据在两个应用程序间交换
4）  
结构化数据，可以定]]></description><category></category></item><item><title><![CDATA[检测内存泄露]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/17735093</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/17735093</guid><author>weiyuan2011</author><pubDate>Wed, 01 Jan 2014 16:12:35 +0800</pubDate><description><![CDATA[C++程序的复杂性很大一部分在于他的内存管理，没有C#那样的垃圾回收机制，内存管理对初学者来说很困难。经常会出现内存泄露的情况。那么我们写程序如何避免内存泄露呢？首先我们需要知道程序有没有内存泄露，然后定位到底是哪行代码出现内存泄露了，这样才能将其修复。
本文描述了如何检测内存泄露。最主要的是纯C，C++的程序如何检测内存泄露。
现在有很多专业的检测工具，比如比较有名的BoundsCheck,]]></description><category></category></item><item><title><![CDATA[我的2013总结]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/17732311</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/17732311</guid><author>weiyuan2011</author><pubDate>Wed, 01 Jan 2014 09:47:59 +0800</pubDate><description><![CDATA[在2013年的最后一天来总结我自己，心情是沉重的。说来这一年快也不快，经历了很多事情，角色的转变，居住地的转变，原来觉得很遥远很期待很紧张的一系列事情就这么仿佛看了一部电影的时间就过去了。
按时间线来回忆，让这一切种种再回放一遍：
 
-------------------------------------------------------------------------------]]></description><category></category></item><item><title><![CDATA[默认构造函数]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/17630367</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/17630367</guid><author>weiyuan2011</author><pubDate>Sat, 28 Dec 2013 12:50:30 +0800</pubDate><description><![CDATA[今天看C++Primer时，对它所讲的默认构造函数觉得有些疑惑，尤其是“每一个类必须有一个自己的默认构造函数”，我就郁闷了，如果我定义类的时候都有参数给进传也要写吗？
     
于是，整理了下默认构函数的事情：
    Q1.什么是默认构造函数？
    A1.默认构造函数就是形如构造函数无参数列表或者参数有给定的默认值，在定义对象时，如果没有显式调用某个带参构造函数，就会调用这个默认构]]></description><category></category></item><item><title><![CDATA[内存池？进程池？线程池？]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/12321819</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/12321819</guid><author>weiyuan2011</author><pubDate>Sat, 05 Oct 2013 22:45:44 +0800</pubDate><description><![CDATA[内存池
平常我们使用new、malloc在堆区申请一块内存，但由于每次申请的内存大小不一样就会产生很多内存碎片，造成不好管理与浪费的情况
内存池则是在真正使用内存之前，先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时，就从内存池中分出一部分内存块，若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片，使得内存分配效率得到提升。
进程池&&线]]></description><category></category></item><item><title><![CDATA[核心态与用户态]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/12320597</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/12320597</guid><author>weiyuan2011</author><pubDate>Sat, 05 Oct 2013 21:23:44 +0800</pubDate><description><![CDATA[究竟什么是用户态，什么是内核态，这两个基本概念以前一直理解得不是很清楚，根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上，先看一个例子：
1）例子
C代码

1.     
voidtestfork(){
2.     
if(0==fork()){
3.     
printf(“createnewprocesssucce]]></description><category></category></item><item><title><![CDATA[多线程同步]]></title><link>https://blog.youkuaiyun.com/weiyuan2011/article/details/12320361</link><guid>https://blog.youkuaiyun.com/weiyuan2011/article/details/12320361</guid><author>weiyuan2011</author><pubDate>Sat, 05 Oct 2013 21:02:19 +0800</pubDate><description><![CDATA[我们来一起理一理什么是线程、线程与进程的区别、什么是多线程、线程同步又是什么、线程同步的方法
 
一、什么是线程？
在多任务环境下，进程与进程间要不断进行切换，而进程是拥有资源与独立调度的基本单位，所以在晋城不断切换是其所拥有的资源会浪费处理剂时间、空间开销。
为了减少处理机空转时间、切换时间与空间开销我们引入了“线程”，以提高CPU的利用率与并发性
“线程”是处理机进行调度与处理的基本]]></description><category></category></item></channel></rss>