- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 【经典面试题】是否栈的push,pop结果
实现函数bool isPushPop(char *s1, char *s2):输入两个字符串,判断一个字符串中的字符是否是另一个字符串中的字符入栈、出栈的结果(假设字符串不重复)。比如isPushPop("ABCDEF", "DCFEBA")返回true;isPush
2011-09-09 09:12:38 1528 3
原创 Linux IPC之共享内存
简介共享内存(shared memory)是最简单的Linux进程间通信方式之一。使用共享内存,不同进程可以对同一块内存进行读写。由于所有进程对共享内存的访问就和访问自己的内存空间一样,而不需要进行额外系统调用或内核操作,同时还避免了多余的内存拷贝,所以,这种方式是效率最高、
2011-08-25 11:52:49 10478 1
原创 【经典面试题】寻找单链表倒数第n个节点
面试中经常出现的编程题之一。最直接的办法是先遍历一遍单链表,记下链表的节点数,然后再次遍历,直到到达节点数减去n的节点,返回结果。实际情况中若链表数目很多而n相对不大,这种方法需要大约两次遍历。更简单的实现方法是采用双指针。一个指针先从链表头开始步进n步,然后另一个指针从头开
2011-08-19 11:01:42 4521 1
原创 【经典面试题】翻转单链表
翻转单链表是面试中经常出现的现场编程题,但是要用简洁的代码实现也不是那么简单。下面是一个优雅的实现:struct node* reverse(struct node *head){ struct node *p, *q, *r; p = NULL; q = head; w
2011-08-19 09:45:58 1694 4
原创 【自己动手】实现简单的C++ smart pointer
Why Smart Pointer?为什么需要智能指针?因为c++的内存管理一直是个令人头疼的问题。假如我们有如下person对象:每个person有自己的名字,并且可以告诉大家他叫什么名字:////a person who can tell us his/he
2011-08-16 15:53:14 8098 14
原创 玩转二进制
前段时间和朋友讨论到一个小题目:如何判断一个正整数是2的整数次幂。先举几个例子看一看:2^0 = 1;2^1 = 2 = 10b;2^2= 4 = 100b;2^3 = 8 = 1000b;2^4 = 16 = 10000b;将这些整数转换为二进制后,
2011-08-15 23:07:46 1305
原创 Linux下HTTP Server
想在Linux下实现一个简单的web Server并不难。一个最简单的HTTP Server不过是一个高级的文件服务器,不断地接收客户端(浏览器)发送的HTTP请求,解析请求,处理请求,然后像客户端回送数据。在大多是情况下,(GET、POST命令),服务求回传给客户端的都是文件(
2011-08-12 15:51:13 21638 11
原创 c语言字符串与整数之间的转换
在c语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题。将字符串转换为整数的函数在stdlib.h中定义:int atoi(const char *str);atoi函数会跳过str中前面出现的空格,从第一个数字开始转换。下面是我的实现:
2011-08-11 15:24:32 14039
原创 C语言字符串处理函数
这边文章对c语言的字符串处理的常用库函数总结一下,并进行实现。1.字符串比较int strcmp(const char *s1, const char *s2);比较两个字符串的大小(不忽略大小写),返回值很有学问:如果s1小于s2返回一个小于0的数,如果s1大于
2011-08-11 13:13:38 17317 1
原创 Facade和Adapter
设计模式初探设计模式有多么重要?身为在校学生,很少有人能有机会参与到真正的大型项目的设计中来,相信很多人在学习了C++和Java等面向对象的语言后,能够用面向对象语言提供的语法和特性设计一些程序并进行了一些实践后,就认为自己对面向对象有了一些体会。对于很多人来说,精通面向对象
2011-07-15 13:06:36 3474 1
原创 lwIP raw API
简介lwIP提供了两套API:1.底层的基于回调(callback)的raw API2.高层的顺序模型的API(类似BSD socket) 顺序模型的API为普通的顺序程序提供使用协议栈的API,和BSD风格的API很相似,也是基于阻塞的open-read-write-close模式。鉴于TCP/IP协议栈本身就基于时间的。所以TCP/IP代码和应用程序的代码必须在不同的线程
2011-06-30 16:47:00 16224 6
原创 netlink API changes
Netlink socket is a flexible interface for communication between user-space applications and kernel modules. It provides an easy-to-use socket API to both applications and the kernel. It provides adva
2011-06-22 14:47:00 1586
原创 C语言中的动态内存分配函数
动态内存分配即分配内存大小在运行时才确定,一般在堆中分配。C语言动态内存分配相关的函数。malloc #include void * malloc (size_t size);malloc的使用比较直接,一个成功的malloc调用返回分配的size大小的内存的指针。失败时返回NULL并将错误代码置为ENOMEM。教材中经常出现的用法是将malloc返回的void指针进行
2011-06-22 14:31:00 5770
原创 Linux内核内存分配函数
Linux内核中内存的管理不像在内核外这么简单。和用户空间最大的不同是内核的内从空间不像用户空间那么容易得到,并不是总能轻易的得到想要的内存。页:内核最基本的内存管理单元就是页(page),因为MMU管理的内存基本单位是page,其维护着提供虚拟地址到物理地址转换的页表。内核使用如下数据结构表述page: struct page { unsigned l
2011-06-22 14:25:00 1464
原创 编程珠玑 Column 1
概述Column 1由一个问题展开讨论:如何给一个包含0到9,999,999编号的记录文件排序并输出到另一个文件,其中编号不重复,只允许1M左右的内存空间。最优的解法自然是采用位数组,1.25×106B大小的位数组含10,000,000位,可以保存规定范围内数是否存在。这种方法很好的利用了编号不重复的特性。生成随机数文件要对算法进行实现,面临的第一个问题就是,如何生成这么一个记
2011-06-22 14:06:00 923
Visual C++ 2008 入门
2010-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人