- 博客(34)
- 资源 (6)
- 收藏
- 关注
转载 Shell脚本编程的常识
http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTMShell脚本编程的常识(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用)七种文件类型d 目录
2013-10-08 14:34:37
906
转载 中缀表达式转换为后缀表达式
一、后缀表达式求值后缀表达式也叫逆波兰表达式,其求值过程可以用到栈来辅助存储。假定待求值的后缀表达式为:6 5 2 3 + 8 * + 3 + *,则其求值过程如下:1)遍历表达式,遇到的数字首先放入栈中,此时栈如下所示:2)接着读到“+”,则弹出3和2,执行3+2,计算结果等于5,并将5压入到栈中。3)读到8,将其直接放入栈中。
2013-07-18 21:31:24
654
转载 轻松搞定面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.youkuaiyun.com/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树
2013-07-05 22:14:09
781
转载 正确地做事与做正确的事同样重要
正确地做事与做正确的事同样重要一位软件工程师的6年总结作者:成晓旭http://blog.youkuaiyun.com/cxxsoft(声明:欢迎转载,请保证文章的完整性)“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标
2013-07-05 18:09:28
756
转载 三层以太网交换机CPU收发包问题的分析
在当前的三层以太网交换设备中,报文的二层交换和三层路由主要由交换芯片和网络处理器完成,CPU基本上不参与交换和路由过程,主要完成管理和控制交换芯片的功能[1]。在这种情况下,CPU的负载主要来自以下几个方面:协议的定时驱动、用户的配置驱动、外部事件的驱动。其中,外部事件的驱动最为随机,无法预料。典型的外部事件包括端口的连接/断开(Up/Down),媒体访问控制(MAC)地址消息的上
2013-06-27 10:18:05
2252
转载 可重入与线程安全
可重入与线程安全(整理自网上资料)线程安全函数:概念: 线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时, 它会一直产生正确的结果。确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空 间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因此,对于同一进程的不同线程来说
2013-06-16 18:11:12
601
原创 进程与线程
线程也被称作是轻量级进程(LWP),是调度和分派的基本单位,而进程是拥有资源的基本单位。子进程和父进程拥有不同的代码和数据空间,而同一进程创建出的多个线程共享代码和数据空间,只是有各自的堆栈和程序计数器。由于线程共享代码和数据空间,所以其切换、创建等所用到的开销要远远小于进程,并且因为同一进程的线程由于共享同一地址空间,同步和通信业变得更加容易。一个标准的线程由线程ID、当前指令指针(PC)、
2013-06-14 20:33:32
553
原创 几种简单排序算法
/*002:几种简单排序算法*/ 插入排序、冒泡排序、选择排序/*插入排序--InsertionSort,从第二个元素开始,在前面找合适的位置插入*/void InsertionSort(int a[], int len){ int i,j; int temp; for (i = 1; i { temp = a[i];
2013-05-31 15:37:30
580
原创 多个有序链表,找出数据均相同的结点
/*001: 多个有序链表,找出数据均相同的结点*/list_type * list_array[5];int curr_value;int curr_list;int i;bool end = false;list_array[0] = list0->head;list_array[1] = list1->head;list_array[2] = li
2013-05-29 20:04:08
821
原创 编程小技巧
代码中常用的宏:#define MIN(a, b)(((a)#define MAX(a, b)(((a)>(b))?(a):(b))#define ROUNDUP(x,y) ((((ulong)(x)+((y)-1))/(y))*(y))#define ISALIGNED(a,x) (((ui
2013-05-29 16:26:22
800
转载 位域的使用
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个类型单元中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以达到压缩数据的目的。位域定义
2013-05-29 14:10:23
950
转载 位域与大小端
C中的位域与大小端问题(整理自网上资料)字节内也是有大小端问题,与字节中的大小端类似:1)little endian中的位应该这样排列: 01234567 即排在前面的是低位。因此,先分配least significant bits 2)而在Big endian中,位应该这样排列: 76543210 即排在前面的是高位。因此,先分配most significan
2013-05-29 10:48:31
18629
6
原创 地址空间
最近搞驱动开发,接触到了地址空间这个概念。这个题目比较大,慢慢整理。CPU地址空间I/O地址空间I/O作为CPU和外设交流的一个渠道,主要分为两种,一种是Port I/O,一种是MMIO(Memory mapping I/O)。前者就是我们常说的I/O端口,它实际上的应该被称为I/O地址空间。对于x86架构来说,通过IN/OUT指令访问。PC架构一共有6
2013-03-19 10:37:56
729
原创 DMA与 kmallloc
DMA控制器是一个硬件设备,只能访问特殊的物理地址。在mips架构下,分配出的逻辑地址需要转换成其对应的物理地址,然后才能交给DMA控制器来使用。最近在GMAC DMA驱动层的实现中发现DMA的内存分配需要调用kmalloc函数而不是最常用的malloc函数来进行。在网上查到的资料如下:在设备驱动程序或者内核模块中动态开辟内存,不是用malloc,而是kmall
2013-03-19 09:48:49
1369
原创 也谈大小端
大小端问题是一个很简单的概念,但在实际使用中却是一个所必须考虑的非常重要的细节。虽然简单却也曾经困扰过我很多次,今天正好有空整理出来做个笔记。 字节序的大小端通常指的是在一个字内(32位或者64位)各字节在内存中的存放顺序。注意这里仅是一个字内Byte的顺序,各个字之间的顺序不受大小端的影响。另外还要注意想一个int数据进行左右移位是跟大小端没关系的,因为编译器已经屏蔽了这层差异,不
2013-03-17 15:50:53
789
转载 linux seqlock & rcu 浅析
在linux内核中,有很多同步机制。比较经典的有spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)、等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rcu应该可以不算在经典之列,它们是两种比较有意思的同步机制。seqlock(顺序锁)用于能够区分读与写的
2013-03-06 15:49:23
576
转载 进程上下文和中断上下文
整理自网上资料上下文的概念 上下文context:上下文简单说来就是一个环境,相对于进程而言,就是进程执行时的环境。具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。 用户级上下文: 正文、数据、用户堆栈以及共享存储区;
2013-03-04 19:19:13
491
原创 无符号数溢出与回绕的正确判断
在系统的计时计数过程中,大多采用无符号数来表示。一个无符号数总有一个最大表示范围,比如unsigned int 的最大表示数为2的32次方-1 4294967295,此时如果继续增加则回绕(wrap around)为0.此时就涉及到一个正确比较的问题,下面以linux中的节拍记录变量jiffies为例说明这个问题,jiffies记录开机以来发生的节拍数,每次时钟中断程序都会增加这个值(每秒增加的值
2013-03-04 14:45:34
6055
原创 块I/O调度程序
最近在看《linux内核设计与实现》这本书,写些东西记录一下学习过程。块设备最突出的特点是可以随机访问固定大小的数据片,这些固定大小的数据片称为块,块设备通过安装文件系统来访问。注意块设备都有自己的物理最小寻址单元(如扇区),但是在文件系统下,其有着最小逻辑可寻址单元——块,不要搞混淆了。与块设备相对的是字符设备,字符设备按字符流来有序访问,如串口和键盘。像硬盘这样块设备,其寻
2013-02-27 22:06:24
626
转载 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路(转)
http://www.cnblogs.com/figure9/archive/2013/01/09/2853649.html
2013-02-26 18:01:10
536
转载 以太网交换机芯片
转自 http://winkuo.blog.163.com/ 网络织工当今的世界是一个通信技术高速发展,以太网交换机也正从神秘的机房走进千家万户。事实上很多家庭用的所谓路由器就是一个具有路由功能的L3层交换机。具体交换机的概念可以看我上一篇博客。 1、网络交换机芯片的架构形式由于网络交换功能是在以太网的第二层(MAC)实现,所以在早期以太网交换芯片中只包含MAC层,要想真正接
2013-02-18 21:00:04
1980
原创 '\0'的ASCII是0
今天帮同事调程序,进行一串码流的移位操作,循环体没执行一定的个数就跳出了。调了半天,后来发现是循环条件有问题。该老兄用的是字符串的结尾判断,“ '\0' != * p" 导致遇0结束。告知后,该兄竟不知' \0'的ASCII是0!!!!
2013-02-18 17:22:37
5386
转载 semaphore与Mutex
semaphore与Mutex(转)C# Semaphore Classhttp://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspxwikiSemaphore (programming)http://en.wikipedia.org/wiki/Semaphore_%28programming%
2013-01-28 11:26:41
757
转载 BROADCOM sdk
目前正在参与一个工业以太网交换机的开发工作,用到了broadcom交换芯片的SDK。完全没个概念啊下面先收集一些网上搜到的资料,等开发完成后回来整理。Broadcom以太网交换芯片培训http://blog.youkuaiyun.com/xkarl/article/details/6546250千兆以太网交换机http://www.go-gddq.com/html/
2013-01-09 16:02:18
3979
转载 可重入函数和线程安全(转)
最近,项目要求可能需要做博通的交换芯片的驱动程序,涉及到多用户同时进行操作,和大量的数据处理,因此在进行代码架构的时候需要进行前期简单的验证设计。考虑到一点就是程序设计的可重入性。经过简单的搜索,在维基百科和其他朋友的帖子里找到了相关概念。为了帮助自己今后理解,特地将此概念加上自己的理解整理在此。维基百科和百度百科介绍的侧重点不同,个人理解可重入函数的使用场景应该是中断场景和SMP场景。明
2013-01-09 15:42:39
622
转载 C结构体中赋值使用的冒号和点号
今天在看broadcom交换芯片SDK的时候,偶然发现,结构体的赋值竟然是用了冒号!一番搜索之后,原来是这个样子。原文地址:http://blog.youkuaiyun.com/unbutun/article/details/4648307结构体:struct usb_driver { const char *name; int (*probe) (struct usb
2013-01-05 19:38:40
3315
转载 C语言中的宏定义 #define
整理自网上资料宏展开的时机:C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念):其中预处理器产生编译器的输入,它实现以下的功能: (1) 文件包含 可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。 (2) 条件编译 预处理器根据#if和#i
2012-11-10 16:55:49
1084
转载 系统栈原理
http://zhongcong386.blog.163.com/blog/static/134727804201110774335161/?suggestedreading&wumii
2012-11-07 21:03:52
408
转载 C语言头文件
整理于网上资料 http://blog.youkuaiyun.com/janders/article/details/611081 和 http://www.cnblogs.com/polestar/archive/2012/02/24/2366724.html头文件的理论概述:.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。1)h文件
2012-11-03 20:48:15
739
转载 C中变量的存储类型及作用域
C语言变量的存储类别收集网上资料整理 内存中供用户使用的存储空间分为代码区与数据区两个部分。变量存储在数据区,数据区又可分为静态存储区与动态存储区。 静态存储是指在程序运行期间给变量分配固定存储空间的方式。如全局变量存放在静态存储区中,程序运行时分配空间,程序运行完释放。 动态存储是指在程序运行时根据实际需要动态分配存储空间的方式。如形式参数存放
2012-11-03 20:43:26
644
转载 C程序中的内存结构
一个由C/C++编译的程序占用的内存分为以下几个部分摘取自网上资料1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局/静态存储区
2012-11-03 19:36:25
432
转载 C指针的用法小结
在人人网上看到了一篇C指针的总结,讲一些基本概念,写的不错,原地址:http://blog.renren.com/blog/226041764/873143492char *p, **p, ***p;char p[],p[][],p[][][];char *p[],*p[][],**p[],**p[][],*(*p)[],(**p)[],(**p)[][];
2012-11-03 16:21:59
394
转载 回调函数与简单的例子
摘自:1、 http://blog.sina.com.cn/s/blog_5061633601009lmb.html 2、 http://blog.youkuaiyun.com/p_w_m/article/details/7184332回调函数: 回调函数是用户由用户实现的、注册到低层API当中的、当满足一定条件时会触发该回调函数按照用户的意图运行
2012-11-03 16:07:31
481
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人