- 博客(17)
- 资源 (8)
- 收藏
- 关注
原创 数组一些模糊概念
数组例子1:int a[3] = {1,2,3};先记住几个概念,(1)数组名代表的是一块内存的名称,即例1中,a代表的是一块内存的名称,这个内存的大小是sizeof(a) = sizeof(int)*3 = 12(2)数组名不能作为左值,只能作为右值。左值是指值可以改变的,而右值只能读。a代表的是一块内存的名称,如果作为左值,如a=3,意思是对整块内存区域进行赋值为3,这是不
2013-09-11 15:47:22
664
原创 互斥锁的理解
当多个线程对同一个共享变量进行修改时,正常情况下操作可能会出现不同步。比如一个变量修改包括以下步骤:读取内存—放入寄存器—操作寄存器(如加1等)--写回内存。如a = 10;两个线程AB对变量进行减1操作在A线程中,当程序运行到放入寄存器时,此时的值为10;恰在此时引发一次调度,B线程走一段时间,B将a值减为9;然后过会开始调度回A运行,A将寄存器的值减1,即为9,然后写回a中,最终a
2013-09-07 17:17:25
853
原创 linux 线程常用函数
头文件#include 线程的创建Int pthread_create(pthread_t *tid,constpthread_attr_t *attr,void *(*func)(void*),void *arg);一个进程中每个线程都有一个线程ID,其数据类型是pthread_t //等待一个线程的终止,相当于waitpid的作用Int pthread_join(pth
2013-09-07 16:39:04
548
原创 Traceroute原理学习
Traceroute可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。曾经介绍过IP记录路由的选项RR,为什么不使用这个选项而另外开发一个新的应用程序Traceroute呢?原因有三:其一,并不是所有的路由器都支持记录路由这个选项;其二,记录路由一般是单向的选项,发送端设置了该选项,接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端。大多数的ping服
2013-09-07 10:09:45
941
原创 ping命令的学习
1.发送回显请求的ping程序为客户,而被ping的则称为主机ICMP回显请求与回显应答的报文如下序列号从0开始,没发送一次新的回显请求就增加1,ping打印出的信息可以查看分组丢失、失序和重复信息。在unix系统中,实现ping程序时是把ICMP报文中标识符字段置成发送进程的ID号,这样同一台主机上同时运行了多个ping程序后,ping程序也能识别出返回的信息。 Ping
2013-09-07 10:07:30
829
原创 百度 求矩形的个数
百度一道面试题,顿时不会。征集一下大家的思路,看题:有一个由长为x,宽为y的网格,写出程序返回矩形的个数?int calRectangle(int x, int y){}
2013-08-23 09:21:40
666
原创 C++多态
// polymorphism.cpp : 定义控制台应用程序的入口点。//虚函数多态性#include "stdafx.h"#include "iostream"using namespace std;class CBase{public: int data1; int data2; void fun1() { cout } virtu
2013-07-14 16:46:11
404
原创 二叉查找树实现
二叉查找树所有的操作时间复杂度均为O(lg n)//.h#ifndef BINARYSEARCH_H#define BINARYSEARCH_H#include "stdio.h"class CBinaryNode{public: CBinaryNode():data(0),left(NULL),right(NULL){}public: int da
2013-07-04 19:51:31
487
原创 算法导论 第7章部分习题解答
习题 7-6//此题本质就是对 间隔区间 进行排序//本程序核心在于提出公因子//有交叉的区间属于相等区间程序见下面网址(已经写的很好了)http://blog.youkuaiyun.com/mishifangxiangdefeng/article/details/7681109 习题7-3 时间复杂度T(n) = 3T(2n/3) + O(1) 习题7-4
2013-06-30 11:39:13
687
原创 关于堆排序中MAX-HEAPIFY中时间复杂度的分析
算法导论中计算MAX-HEAPIFY中时间复杂度的分析时提到节点i的子树至多时2n/3,针对2n/3的由来进行了推导。假设树是从第k层开始的,先计算第k层的子树。(见图)
2013-06-29 12:49:44
3418
原创 在各个平台上关于数据类型的定义
//linux内核精妙之处,可以在各种平台上移植#define USHORT_MAX ((u16)(~0U))#define SHORT_MAX ((s16)(USHORT_MAX>>1))#define SHORT_MIN (-SHORT_MAX - 1)#define INT_MAX ((int)(~0U>>1))#define INT_MIN (-
2013-06-28 23:33:43
748
原创 linux内核中typeof的使用说明
typeof说明功能:获取某一变量或表达式类型 C99关键字 (1)typeof(int*) == int * (2)函数int max() typeof(max()) == int,且max函数不会执行,typeof只是获取返回类型(3)const typeof( ((type *)0)->member ) *__mptr = (ptr);获取member在t
2013-06-28 23:32:55
991
原创 Linux中的container_of的说明
container_of说明通过一个成员变量地址以及该成员变量的名称获取该结构体指针// ptr为该成员变量地址// type结构体类型// member成员变量名称#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->mem
2013-06-28 23:32:03
408
原创 linux内核list.h中对链表的操作
#include #include #include #include //说明://list.h中关于链表的操作//需要注意的是head本身并不是一个链表的成员,只能算是链表的头结点//因此,head->next才是第一个成员,而head->prev是链表的最后一个成员//此点需要注意,整个链表其实就是由head将首尾连接/* * Simple
2013-06-28 23:29:53
850
原创 linux内核List中关于hash链表
//双向链表对于hash表来说太浪费了//因此设计了单向链表,但是,这样在访问尾节点时间上就不再是O(1)的时间复杂度/* * Double linked lists with a single pointer list head. * Mostly useful for hash tables where the two pointer list head is * to
2013-06-28 23:28:36
875
原创 堆构造优先级队列
/*************************堆构造优先级队列*******************/class PriorityQueue:public HeapSort{public: //取出最大值并重新构造为最大堆 int HeapExtractMax(int *A,int len); //将元素i的值增加到key,且key不能小于i原来的值 void
2013-06-28 23:22:14
627
原创 堆排序(依据算法导论伪代码)
// MAX_HEAP.cpp : 定义控制台应用程序的入口点。////堆排序(依据算法导论伪代码)//数组有效是从1开始的//程序仅供记录自己的学习历程#include "stdafx.h"#include "iostream"using namespace std;//此类实现了最大堆的创建//排序class HeapSort{public:
2013-06-28 22:23:23
1553
LCD12864(KS0108) C51程序
2011-10-30
键盘 LCD1602 的MSP430F169 C语言程序
2011-10-30
DAC8831 MSP430 c语言控制程序
2011-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人