<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Robin的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/crazycz</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; crazycz]]></copyright><item><title><![CDATA[队列的数据结构及基本运算]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/16851871</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/16851871</guid><author>crazycz</author><pubDate>Wed, 20 Nov 2013 23:12:43 +0800</pubDate><description><![CDATA[1 特点
插入在队列头（front）进行，删除在队列尾（rear）进行，简称先进先出（first in first out）
2 数据结构定义
typedef struct
{
	int queue[MAXSIZE];
	int front;
	int rear;
}sequeue;sequeue *q;
入队列操作
q->queue[++q->rear] = x;
出队列操作
q-]]></description><category></category></item><item><title><![CDATA[栈数据结构及基本运算]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/12587099</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/12587099</guid><author>crazycz</author><pubDate>Thu, 10 Oct 2013 23:08:10 +0800</pubDate><description><![CDATA[定义
操作受限的线性表，限定对元素的插入和删除只能在表的一端进行。

数据结构定义

#define MAXSIZE 100
typedef struct
{
	int data[MAXSIZE];
	int top;
}STACK_S;

通常把0作为栈底，栈空时，栈顶指针top = -1；栈满时，top = MAXSIZE-1;
操作：入栈时，top++；出栈时，top--；]]></description><category></category></item><item><title><![CDATA[程序员，如何在工作中崭露头角？]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/12454133</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/12454133</guid><author>crazycz</author><pubDate>Tue, 08 Oct 2013 22:13:49 +0800</pubDate><description><![CDATA[摘要：程序员是很特别的个体，有的人在IT这个行业里取得了成功；有的人对自己的现状很满意，于是就一直在一家公司的一个岗位上干了很多年；还有一部分人被炒鱿鱼了。那么作为一个特别的程序员，如何能在工作中崭露头角呢？


文章作者 Yuriy Lopotun有着8年的IT工作经验，分别在4家不同的公司。在这期间有幸和一些程序员一起共事，他们都很特别：有的人在这个行业里取得了成功；有的人对自己的现状很]]></description><category></category></item><item><title><![CDATA[windows下C调用socket实现TCP和UDP通信]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/12071705</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/12071705</guid><author>crazycz</author><pubDate>Thu, 26 Sep 2013 23:25:48 +0800</pubDate><description><![CDATA[TCP SERVER实现

#include
#include
#include
#include
#include 

#pragma comment( lib, "ws2_32.lib" )

#define PORT 2046
#define BACKLOG 10
#define TRUE 1

void main( void )
{
	int iServerSock;
	int iCl]]></description><category></category></item><item><title><![CDATA[linux链表管理-先转，待编辑]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/12029535</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/12029535</guid><author>crazycz</author><pubDate>Wed, 25 Sep 2013 23:21:00 +0800</pubDate><description><![CDATA[linux链表，是一种非常实用，方便的链表管理。
 链表数据结构的定义很简单（节选自[include/linux/list.h]，以下所有代码，除非加以说明，其余均取自该文件）：
    struct list_head {
     struct list_head *next, *prev;
    }; 

list_head结构包含两个指向list_head结构的指针prev和]]></description><category></category></item><item><title><![CDATA[链表数据结构与基本运算]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11908245</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11908245</guid><author>crazycz</author><pubDate>Sun, 22 Sep 2013 22:36:27 +0800</pubDate><description><![CDATA[定义
链式存储结构

特点
通过链指针来表示数据元素之间的逻辑关系，而非顺序存储结构
插入，删除方便。容易扩充表容量。
数据结构

typedef struct node
{
	int data;
	struct node *next;
}linklist;

基本运算
使用带头结点的单链表

// creat linklist
linklist *creat_linkl]]></description><category></category></item><item><title><![CDATA[顺序表数据结构及基本运算]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882443</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882443</guid><author>crazycz</author><pubDate>Sun, 22 Sep 2013 00:05:14 +0800</pubDate><description><![CDATA[1、定义
    借组数组开辟地址连续的存储空间。
2、特点
    1、地址连续的存储单元
    2、最简单的，最自然的存储方法。
3、数据结构描述

#define MAXSIZE 100
typedef struct
{
    int data[MAXSIZE];
    int last;
}sequencelist;

sequencelist *seqlist;]]></description><category></category></item><item><title><![CDATA[C语言嵌入式系统编程修炼之道——性能优化篇]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882353</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882353</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 22:52:17 +0800</pubDate><description><![CDATA[1.使用宏定义
在C语言中，宏是产生内嵌代码的唯一方法。对于嵌入式系统而言，为了能达到性能要求，宏是一种很好的代替函数的方法。
写一个“标准”宏MIN
，这个宏输入两个参数并返回较小的一个：
    
错误做法：
#define MIN(A,B)
　( A 
正确做法：
#define MIN(A,B)
（（A）<=
 (B) ? (A) : (B) )
对于宏，我们需要知]]></description><category></category></item><item><title><![CDATA[C语言嵌入式系统编程修炼之道——内存操作篇]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882325</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882325</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 22:50:57 +0800</pubDate><description><![CDATA[数据指针
在嵌入式系统的编程中，常常要求在特定的内存单元读写内容，汇编有对应的MOV指令，而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中，多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况：
(1)  
某I/O芯片被定位在CPU的存储空间而非I/O空间，而且寄存器对应于某特定地址；
(2)  
两个CP]]></description><category></category></item><item><title><![CDATA[C语言嵌入式系统编程修炼之道——软件架构篇]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882311</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882311</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 22:49:59 +0800</pubDate><description><![CDATA[1.模块划分
模块划分的“划”是规划的意思，意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言，在模块的划分上主要依据功能（依功能进行划分在面向对象设计中成为一个错误，牛顿定律遇到了相对论），C语言模块化程序设计需理解如下概念：
（1）   
模块即是一个.c文件和一个.h文件的结合，头文件(.h)中是对于该模块接口的声明；
（2]]></description><category></category></item><item><title><![CDATA[想成为嵌入式程序员应知道的0x10个基本问题]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882261</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882261</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 22:44:31 +0800</pubDate><description><![CDATA[C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年，我既参加也组织了许多这种测试，在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息，此外，撇开面试的压力不谈，这种测试也是相当有趣的。
        从被面试者的角度来讲，你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗？这是个愚蠢的问题吗？如要你答出某个字]]></description><category></category></item><item><title><![CDATA[多任务看门狗流程图]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11882197</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11882197</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 22:37:17 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[多任务程序看门狗设计]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11877825</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11877825</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 18:02:39 +0800</pubDate><description><![CDATA[看门狗一般分为硬件看门狗和软件看门狗，主要用来解决程序CPU异常，程序跑飞挂死等问题，提高系统的可靠性。
    看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路，其定时输出连接到电路的复位端，程序在一定时间范围内对定时器清零(俗称“喂狗”)，因此程序正常工作时，定时器总不能溢出，也就不能产生复位信号。如果程序出现故障，不在定时周期内复位看门狗，就使得看门狗定时器溢出产生复位信号并]]></description><category></category></item><item><title><![CDATA[多任务下看门狗程序实现]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11877725</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11877725</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 17:59:59 +0800</pubDate><description><![CDATA[探讨多任务下喂狗的方式

一直以来，我不断的探索RTOS的使用方法，以UC/OS-II为基础。当然努力的结果是逐渐形成了一个可以使用的软件平台。但我意识到如果没有相应文档的支持或许这个东西也许只有我自己能使用了。另外提高的空间有限。所以今天就从这个困扰我许久的问题入手，慢慢的介绍我这两年来努力的成果。
关于多任务下如何才能有效的使用看门狗这个问题其实也不是很难。关键是在于喂狗的策略。你没办法]]></description><category></category></item><item><title><![CDATA[多任务程序看门狗结构设计]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11870673</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11870673</guid><author>crazycz</author><pubDate>Sat, 21 Sep 2013 17:50:14 +0800</pubDate><description><![CDATA[看门狗一般分为硬件看门狗和软件看门狗，主要用来解决程序CPU异常，程序跑飞挂死等问题，提高系统的可靠性。
    硬件看门狗，由硬件电路组成，主要有独立的看门狗芯片。一般嵌入式芯片或者单片机芯片中都设计了看门狗电路。
看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路，其定时输出连接到电路的复位端，程序在一定时间范围内对定时器清零(俗称“喂狗”)，因此程序正常工作时，定时器总不能溢]]></description><category></category></item><item><title><![CDATA[假如生活欺骗了你]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11661283</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11661283</guid><author>crazycz</author><pubDate>Fri, 13 Sep 2013 21:27:12 +0800</pubDate><description><![CDATA[（俄）普希金–假如生活欺骗了你

假如生活欺骗了你

不要悲伤 不要心急

忧郁的日子里须要镇静

相信吧 快乐的日子将会来临

心儿永远向往着未来

现在却常是忧郁

一切都是瞬息

一切都将会过去

而那过去了的

就会成为亲切的回忆]]></description><category></category></item><item><title><![CDATA[基本数据结构]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11584083</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11584083</guid><author>crazycz</author><pubDate>Wed, 11 Sep 2013 23:41:49 +0800</pubDate><description><![CDATA[1、字符串--字符串匹配，KMP算法
2、顺序表--存储结构与基本运算
3、链表-单链表，双链表，双向循环链表（linux链表），基本运算，链表使用和各种题型
4、栈-顺序栈和链栈，基本运算，递归思想
5、队列-顺序队列和链式队列，基本运算
6、广义表-存储结构，基本运算，以及十字链表
7、二叉树
8、图与网
9、算法复杂度评价，时间与空间效率 ，大O表示
9、检索
10、排序]]></description><category></category></item><item><title><![CDATA[OJ练习1]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11498183</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11498183</guid><author>crazycz</author><pubDate>Mon, 09 Sep 2013 23:52:47 +0800</pubDate><description><![CDATA[给出一段数据流，如7e7e7e020301067e7e7e0301010106帧头为等于或大于3个7e7e7e 则后面为有效报文，紧接着1个字节为报文长度，报文长度n有效范围 【1，64】之后为连续n个字节的报文内容，报文内容之后一个字节为报文校验位check。只有报文内容+报文长度 = 报文校验位 则报文有效否则为无效，丢弃。从下一个字节开始找新的帧头。如果当中也出现无效报文，则从下一个字节找新]]></description><category></category></item><item><title><![CDATA[C语言学习笔记2]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11403899</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11403899</guid><author>crazycz</author><pubDate>Sun, 08 Sep 2013 23:33:39 +0800</pubDate><description><![CDATA[1、运算符的优先级和结合方向，看多了也就记住了。
2、#define 和#undef（撤销已定义的宏名）
      #line 例子 #line number["filename"]改变当前行数和文件名称
  #error 编译程序是遇到#error就会生成错误提示并停止编译，例如，#error  this is error info！
#pragram 向编译器传送各种指令
3、#d]]></description><category></category></item><item><title><![CDATA[C语言学习笔记]]></title><link>https://blog.youkuaiyun.com/crazycz/article/details/11349385</link><guid>https://blog.youkuaiyun.com/crazycz/article/details/11349385</guid><author>crazycz</author><pubDate>Sun, 08 Sep 2013 00:05:57 +0800</pubDate><description><![CDATA[1、register关键字，声明为寄存器变量，这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址，这样提高访问效率。ARM处理器通用寄存器R0-R15，定义太多register变量不可能全部分配到寄存器使用。
      register使用的限制，必须是单个的值，并且其长度应小于或等于整形的长度。而且register变量可能不存放在内存中，所以不能用&来取其地址。
2]]></description><category></category></item></channel></rss>