<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sd6264456的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sd6264456</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sd6264456]]></copyright><item><title><![CDATA[Linux下socket基础实例]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/26288995</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/26288995</guid><author>sd6264456</author><pubDate>Mon, 19 May 2014 22:52:22 +0800</pubDate><description><![CDATA[﻿﻿
 
SimpleApp传感器实验笔记
 
把串口接收的数据送往应用层的方法






Linux下socket基础实例  
2010-06-17 11:31:36|  分类：

ARM/LINUX |  标签：
|举报
|字号大中小 订阅







 
说明：本例子完成的是一个客户端与一个服务器之间通信的功能，有两种功能可供选择，一是客]]></description><category></category></item><item><title><![CDATA[二分查找]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/22401043</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/22401043</guid><author>sd6264456</author><pubDate>Fri, 28 Mar 2014 14:43:51 +0800</pubDate><description><![CDATA[转自：http://www.cppblog.com/converse/archive/2009/10/05/97905.html
二分查找算法基本思想
二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序]]></description><category></category></item><item><title><![CDATA[重建二叉树]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18712183</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18712183</guid><author>sd6264456</author><pubDate>Thu, 23 Jan 2014 18:54:44 +0800</pubDate><description><![CDATA[输入某二叉树的前序遍历和中序遍历结果，重建出二叉树。
    对于这个问题，我们首先要明白二叉树的性质，在二叉树的前序遍历中，第一个数子总是树的根节点的值，在中序列中，根节点的值总在序列的中间，而在后序遍历中，根节点的值总是在序列的最后一个。因此我们需要扫描中序遍历序列，才能找到根结点的值，并不断递归得分成左右两部分，下面是实现代码：
#include 
#include 
#include]]></description><category></category></item><item><title><![CDATA[关于链表的一些操作（持续更新中）]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18657385</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18657385</guid><author>sd6264456</author><pubDate>Wed, 22 Jan 2014 11:32:28 +0800</pubDate><description><![CDATA[虽然以前写过几篇关于链表的博客，但是感觉以前代码太乱，不严谨，而且太分散，所以重开一帖，贴上一些关于链表的操作，以后遇到相关问题就不断补充。
struct ListNode
{
    int m_nValue;
    ListNode *m_pNext;
};

void BuildList(ListNode *&Head, int Val)          //构建链表
{]]></description><category></category></item><item><title><![CDATA[struct stat结构体的详解和用法]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18362269</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18362269</guid><author>sd6264456</author><pubDate>Thu, 16 Jan 2014 16:50:57 +0800</pubDate><description><![CDATA[//! 需要包含de头文件

#include 

#include  

int stat(const char *filename, struct stat *buf); //! prototype,原型 

struct stat
{

    dev_t       st_dev;     /* ID of device containing file -文件所在设备的ID*/

    ]]></description><category></category></item><item><title><![CDATA[C++中部分库函数的源码]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18185185</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18185185</guid><author>sd6264456</author><pubDate>Sun, 12 Jan 2014 16:56:04 +0800</pubDate><description><![CDATA[自己写的一部分C++中的关于字符串的库函数（不断更新中）。
char *strcpy(char *str, const char *ptr)
{
	if(str == ptr)
		return str;
	assert(str != NULL && ptr != NULL);
	char *temp = str;
	while((*str++ = *ptr++) != '\0');
	retu]]></description><category></category></item><item><title><![CDATA[进程间通信]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18141981</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18141981</guid><author>sd6264456</author><pubDate>Sat, 11 Jan 2014 16:20:34 +0800</pubDate><description><![CDATA[进程间通信分为两大类即低级通信 高级通信
   低级通信 是指 进程间只能传递很少量的控制信息，一般来说只有一个字节或一个整型变量，例如，信号量和信号就是低级通信方式。
   信号量：记录当前可用资源的数量（如饭店空闲桌子的数量。）
   信号量由操作系统来维护，用户进程只能通过初始化和两个标准原语 P原语V原语 访问它。在初始化的时候，可以指定一个非负整数值来表示空闲资源的个数；原语是就是]]></description><category></category></item><item><title><![CDATA[KMP模板]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18141475</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18141475</guid><author>sd6264456</author><pubDate>Sat, 11 Jan 2014 16:12:50 +0800</pubDate><description><![CDATA[详情点击http://blog.youkuaiyun.com/v_july_v/article/details/7041827
这里只是贴上模板备忘。
void GetNext(char str[])      //求next数组
{
	int len = strlen(str);
	int i = 0;
	int j = -1;
	while(i < len - 1)
	{
		if(j == -1 |]]></description><category></category></item><item><title><![CDATA[进程与线程的区别]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18040897</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18040897</guid><author>sd6264456</author><pubDate>Thu, 09 Jan 2014 14:48:49 +0800</pubDate><description><![CDATA[线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
4)二者均可并发执行. 
进程和线程都是由操作系统所体会的程序运行的基本单元，]]></description><category></category></item><item><title><![CDATA[面试题：求最小的K个数。]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/18011877</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/18011877</guid><author>sd6264456</author><pubDate>Wed, 08 Jan 2014 21:43:46 +0800</pubDate><description><![CDATA[这是编程之美上面的一道题，书中介绍了几种思路，当所要寻找的数据为海量时，普通的数组存不下，因为k一般不会太大，这时候我们可以建立一个容量为k的最大堆，遍历整个数列，不断更新堆顶元素并维护最大堆，当遍历完整个数列后，最大堆中的元素就是最小的K个数，该算法时间复杂度为n*logk。

    下面我要说的是当所求的数据不是海量的时候，我们可以选择用一种类似快排的快速选择算法来实现，总的时间复杂度能]]></description><category></category></item><item><title><![CDATA[拷贝构造函数和赋值表达式的区别]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17955673</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17955673</guid><author>sd6264456</author><pubDate>Tue, 07 Jan 2014 11:49:16 +0800</pubDate><description><![CDATA[一、引入

  拷贝构造函数，用已创建的对象来初始化新建对象，对于一个已经被初始化的对象则进行operator=赋值操作。

class   A;   

A a;

A b=a;   //拷贝构造函数调用

A b(a);   //拷贝构造函数调用

A a;

A b;

b =a;   //赋值运算符调用

拷贝构造函数首先是一个构造函数，它调用的时候产生]]></description><category></category></item><item><title><![CDATA[堆与堆排序]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17923485</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17923485</guid><author>sd6264456</author><pubDate>Mon, 06 Jan 2014 18:05:21 +0800</pubDate><description><![CDATA[二叉堆的定义
二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性：
1．父结点的键值总是大于或等于（小于或等于）任何一个子节点的键值。
2．每个结点的左子树和右子树都是一个二叉堆（都是最大堆或最小堆）。
当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。如下图所示

一般都用数组来表示堆，i结点的父结点下]]></description><category></category></item><item><title><![CDATA[C++拷贝构造函数(深拷贝，浅拷贝)]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17880323</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17880323</guid><author>sd6264456</author><pubDate>Sun, 05 Jan 2014 11:04:31 +0800</pubDate><description><![CDATA[对于普通类型的对象来说，它们之间的复制是很简单的，例如：
int a=88;
int b=a; 

而类对象与普通对象不同，类对象内部结构一般较为复杂，存在各种成员变量。下面看一个类对象拷贝的简单例子。



#include 
using namespace std;

class CExample {
private:
    　int a;
public:
    　CExa]]></description><category></category></item><item><title><![CDATA[c++中的命名控制]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17734903</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17734903</guid><author>sd6264456</author><pubDate>Wed, 01 Jan 2014 15:55:04 +0800</pubDate><description><![CDATA[C中的static关键字在人们发明"重载"这个概念之前实际上已经被重载了，而C++则为static增添了新的含义。

    在C和C++中，static都具备两个基本语意，不幸的是，两者经常混杂在一起。

    1.在固定地址空间分配内存，而不是每次函数调用时在栈上分配空间。这里static的意味是静态存储(static storage)。
    2.只对一个特定的转换单元(tra]]></description><category></category></item><item><title><![CDATA[面试题：链表翻转。]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17719837</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17719837</guid><author>sd6264456</author><pubDate>Tue, 31 Dec 2013 18:42:13 +0800</pubDate><description><![CDATA[1、链表翻转。给出一个链表和一个数k，比如链表1→2→3→4→5→6，k=2，则翻转后2→1→4→3→6→5，若k=3,翻转后3→2→1→6→5→4，若k=4，翻转后4→3→2→1→6→5，用程序实现。
思路：
         将长度为k的一段从链表中截取，分别进行翻转，后面不足K的部分按不足的节点数翻转。

//*Next代表节点所需要指向的点以及截出来的一段的指向的指针，*pre代表]]></description><category></category></item><item><title><![CDATA[关于const]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17654501</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17654501</guid><author>sd6264456</author><pubDate>Sun, 29 Dec 2013 16:05:41 +0800</pubDate><description><![CDATA[关键字const能将对象、函数参数、返回值及成员函数定义为常量，并能消除预处理器的值替代而不对预处理器有任何影响。
下面是关于const的几个用法：
一、关于值替代：
    1、c++中的const默认为内部连接。一般情况下，c++不为const分配存储空间，相反它把这个定义保存在它的符号表里。当const被使用时，它在编译时会进程常量折叠。
    2、const可以用于集合，但编译器]]></description><category></category></item><item><title><![CDATA[c++中define与inline的一些注意事项]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17469061</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17469061</guid><author>sd6264456</author><pubDate>Sat, 21 Dec 2013 17:36:40 +0800</pubDate><description><![CDATA[宏不会被编译，因为在源码进入编译器之前，他会被预处理器去掉，因此尽量用const代替。
     宏不是函数，只是在编译前预处理阶段将程序中有关字符串替换成宏体。因此要注意下列代码中的问题：
int a = 5, b = 0;
max(++a, b);// a 的值增加了2次
max(++a, b+10); // a 的值只增加了1次
    相比之下内联函数实现了宏的效率，但在编译中不单独]]></description><category></category></item><item><title><![CDATA[c++中关于友元的知识点]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17358111</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17358111</guid><author>sd6264456</author><pubDate>Mon, 16 Dec 2013 19:41:06 +0800</pubDate><description><![CDATA[#include 
using namespace std;
class x;
class y
{
public:
	void f(x);
};
class x
{
#include 
using namespace std;
private:
	int i;
public:
	friend void y::f(x);
	friend void g(x, int);
};
void y::]]></description><category></category></item><item><title><![CDATA[初学操作系统概论小结]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17350069</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17350069</guid><author>sd6264456</author><pubDate>Mon, 16 Dec 2013 12:22:03 +0800</pubDate><description><![CDATA[操作系统是管理计算机硬件并提供应用程序运行环境的软件。操作系统最为直观之处在于它提供了人与计算机系统的接口。
    为了让计算机执行程序，程序必须位于内存中。内存是处理器能直接访问的唯一大容量存储区域。
    计算机系统的设计有多种不同的方法。单处理器系统只有一个处理器，而多处理器系统包含两个或者更多的处理器来共享物理存储和外设。集群系统是一种特殊的多处理器系统。
多处理器系统分为了对称]]></description><category></category></item><item><title><![CDATA[c中static作用]]></title><link>https://blog.youkuaiyun.com/sd6264456/article/details/17230155</link><guid>https://blog.youkuaiyun.com/sd6264456/article/details/17230155</guid><author>sd6264456</author><pubDate>Mon, 09 Dec 2013 21:31:07 +0800</pubDate><description><![CDATA[1. static 变量
　　静态变量的类型说明符是static。静态变量当然是属于静态存储方式，但是属于静态存储方式的量不一定就是静态变量。例如外部变量虽属于静态存储方式，但不一定是静态变量，必须由
 static加以定义后才能成为静态外部变量，或称静态全局变量。
2. 静态局部变量
　　静态局部变量属于静态存储方式，它具有以下特点：
(1)静态局部变量在函数内定义它的生存期为整个源程]]></description><category></category></item></channel></rss>