04 2011 档案
摘要:更新debian的更新源,选择用中科大的源,对于教育网来说比较快。编辑文件sudo vim /etc/apt/sources.lst 添加源内容,把原来的注释,然后sudo apt-get updateIPv4版deb http://debian.ustc.edu.cn/debian lenny main contrib non-freedeb-src http://debian.ustc.edu.cn/debian lenny main contrib non-free deb http://debian.ustc.edu.cn/debian-security lenny/updates m
阅读全文
摘要:《CFileFind类学习》《CFile类学习》《CFileDialog类学习》《CStdioFile类学习》《CString类学习》《CArray类学习》
阅读全文
摘要:1.需求将不同电脑上的完成的代码提交到SVN服务器,达到代码同步的功能。这样实验室与宿舍里面就可以用同一份代码了,不必担心U盘拷贝的副作用了。2.在google code上建立一个项目请参考《Google Code 服务试用》一文,解决了在Windows下安装与提交问题3.在Debian下安装SVNsudo apt-get install subversion subversion-tools 由于只是使用SVN客户端,可以不安装apache4.SVN的使用简介svn checkout https://project-name.googlecode.com/svn/trunk/ local-d
阅读全文
摘要:0.前言前文已经叙述道,linux中链表的实现是节点与数据分离,如果要使用链表,只需在数据结构中包含链表的结构(非指针)即可。struct nf_sockopt_ops的定义为struct nf_sockopt_ops { struct list_head list; u_int8_t pf; …… int ( * set )( struct sock * sk, int optval, void __user * user, unsigned int len); …… int ( * compat_get)( struct sock * sk, int optval, void __user
阅读全文
摘要:网上关于list的源码分析很多,这里只是学习做比较。list的数据结构定义/* *双链表 */ struct list_head { struct list_head * next, ** prev; }; 或许我们比较习惯如下的形式struct list_head { struct list_head * next; struct list_head * prev; }; 前文已经说明,这与传统的经典定义有差异,只有链接指针,而无数据节点。这样做是为了带来数据定义的通用性。在C++中,使用模板技术来实现,而C中并没有相关的技术,那么如何访问到节点上的数据呢,成为面临的挑战之一。1.声明关于的
阅读全文
摘要:以下分析文字转载自《程序员面试题精选100题(36)-在字符串中删除特定的字符》题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。分析:这是一道微软面试题。在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的编程基本功。要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。但如何能
阅读全文
摘要:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:如果我们不考虑时间复杂度,最简单想法的莫过去先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的数字。可惜这种思路需要的时间复杂度是O(n2)。但是上述策略并没有考虑到数组是有序的特性。此处是不是可以在有序的基础上作工作呢?思路如下:找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数
阅读全文
摘要:转载自《Linux中的工作队列》http://blog.chinaunix.net/space.php?uid=487105&do=blog&cuid=971040[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。***************************************************************************************************************
阅读全文
摘要:Omnet++下载 OMNeT++ 4.1 win32 (source + IDE + MINGW, zip)安装教程下载安装前提1)安装了Java环境。2)解压的路径不能有空格。3)类似linux的方式进行安装 ./configure make4)测试参考教程 OMNeT++ 4.0 IDE(集成开发环境)教程
阅读全文
摘要:上篇分析了hashtable实现的相关接口与用法,本篇将深入到代码中,分析其代码原理。其源码有hash_function.h ——实现hash函数hash_table.h ——hashtable的实现list.h ——hashtable的开链法用到了链表test_hashtable.c ——测试结构定义用于链接节点的hash_entrystruct hash_entry { struct list_head list; unsigned char *key; unsigned int keylen;};用于全局结构的hash_tablestruct hash_table { struct ha
阅读全文
摘要:阅读代码上瘾了么?又看到一份代码,觉得很符合自己的风格,就贴上来。/* implementation of a simple hash table * -- thread safe functions as *_safe() * -- resolve collisions by chaining * Direct comments, concerns, questions, bugs to: * kulesh [squiggly] isis.poly.edu */该实现考虑到了线程安排,与STL的hashtable思想一致,都是基于resolve collisions by chaining(
阅读全文
摘要:GCC编译出现警告test_hashtable.c:52: warning: pointer targets in passing argument 3 of ‘hash_table_insert’ differ in signednesstest_hashtable.c:61: warning: pointer targets in passing argument 2 of ‘hash_table_lookup_key’ differ in signednesstest_hashtable.c:77: warning: pointer targets in passing argument
阅读全文
摘要:学习链表的实现,还是觉得linux下的显得不错。今天爬取了份可以用在linux下的代码。不必要重复造轮子了。对于这份代码的详细说明,请参考 《Linux Kernel Linked List Explained》如下代码的获取路径http://isis.poly.edu/kulesh/stuff/src/klist/list.hlist.h 1 #ifndef __LIST_H 2 #define __LIST_H 3 4 /* This file is from Linux Kernel (include/linux/list.h) 5 * and modified by simply re
阅读全文
摘要:list链表是双链表,在libnet中的实现同样简单,其借用了linux中list的实现思路,将指针域与数据域分离。要用list也是跟list中一样的。如下是指针域的实现代码——为了方便阅读,我用linux下的风格将语句分开了。/* Linked list code, inspired by Links, but written from scratch. */struct list_head { void *next; void *prev;};#define init_list(L) \ do { \ L.next = L.prev = &L; \ } while (0) #def
阅读全文
摘要:libnet 是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据报的构造、处理和发送功能(百度百科上有很详细的介绍哦)。貌似我下载的版本与网上教程说的不太一致。我在sf上下载的最新版,但是却是0.10.11版——网上有说1.0版的,我到底该信谁的呢!今天无意中看到该库的循环队列的实现,感觉真是简洁啊!有木有啊!!!/* Queues. */#define QUEUE_SIZE 2048struct queue { unsigned char data[QUEUE_SIZE]; int head, tail;};#define queue_wrap(x) ((x) & (QUE
阅读全文
摘要:我用gcc编译,有std=c99选项。出现mylist.c:88: warning: implicit declaration of function ‘typeof’mylist.c:88: error: expected expression before ‘)’ tokenmylist.c:88: error: expected expression before ‘)’ tokenmylist.c:91: error: expected expression before ‘)’ tokenmylist.c:91: error: expected expression before ‘
阅读全文
摘要:遇到一段代码,觉得很迷糊,觉得不对。于是做了个测试,代码如下#include <stdio.h>int main(){ int flag = flag ;//flag哪里定义? flag = 1; printf("flag is %d\n",flag);}在gcc下竟然可以通过,输出也是对的。如果不赋值的话,flag输出的为无意义值于是产生为什么flag不提示未定义的疑问,这是什么语法?gcc连警告都不提。水木上的牛人给出了网址http://cpp-style.info/Addison.Wesley-CPP.Gotchas-Avoiding.Common.Pro
阅读全文

浙公网安备 33010602011771号