前言 近来学习操作系统这门课,课程的实验基于linux 0.11,于是从图书馆借来了 C Traps and Pitalls 和 Expert C programming,打算提高一下c语言水平。先从前一本开始。这本书很薄,即使是英文版也只有140多页,讲的都是c语言中容易犯错的地方。注意:这篇笔记并没有包括整本书的内容,而只是摘抄了本人需要的知识(加上了一些自己的理解)。如需完整了解,还请自行看书。 第一章:词法陷阱 符号之间的空白(extra space)是被忽略的。 extra space包括空格、制表符和换…

2019年11月17日 0条评论 99点热度 阅读全文

在 『M4 说要有 Lambda,就有了 Lambda』一文的末尾,指出了使用 M4 所模拟的匿名函数无法作为闭包使用,并断言无法在 C 标准之内实现闭包。事实上,这个结论是武断的,因为当时我没有考虑 C 语言的全局变量的效用。 qsort 的故事 C 标准库中提供了一个 qsort 函数,它可以对任意类型的值构成的数组进行排序,其声明如下: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const voi…

2019年11月12日 0条评论 38点热度 阅读全文

Nodejs定义 Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. 什么是IO IO(Input & Output),顾名思义,输入输出即是IO。磁盘,网络,鼠标,键盘等都算IO;而大家通常说的IO,大部分指磁盘和网络的数据操作。对于磁盘,IO=读写;对于网络,IO=收发。 Blocking I/O,从一个作业说起 学习C语言时,有个作业,大意是写一个server程序和c…

2019年9月18日 0条评论 41点热度 阅读全文

C/C++中的数组名相当于一个指针常量 我们都知道,在C/C++中如果定义一个数组,那么这个数组的数组名就是这个数组的起始位置的指针,比如 int i[10]; 那么数组名 i 就是一个指针(准确的说是指针常量,因为它只能指向这个数组的首地址,不能被更改再去指向其他的地址),其就等于 &i[0] (取 i 数组的第一个元素的地址) 那么Delphi中的数组和数组名呢? 那就自己编写一个程序尝试一下 procedure TForm1.btn1Click(Sender: TObject); var a: arr…

2019年9月10日 0条评论 28点热度 阅读全文

1、sqlite之C接口简介 1.1 sqlite3_open int sqlite3_open ( const char *filename, /* Database filename (UTF-8) */ /* 数据库将采用UTF-8的编码方式,sqlite3_open16采用UTF-16的编码方式 */ sqlite3 **ppDb /* OUT: SQLite db handle */ /* 数据库连接对象 */ ): 打开一个sqlite数据库文件的连接并且返回一个数据库连接对象。 First: 数据库名…

2019年8月27日 0条评论 55点热度 阅读全文

PS: 更全面的总结可以从相关的文档中获取,为了叙述方便这里特指linux环境下 1. 涉及的一些背景知识 1.1. nonblock socket 描述 对应block,如果一个socket设置为nonblock,那么其相关的操作将变为非阻塞的。这里所说的非阻塞,并不是说异步回调什么的,例如,调用recv()函数: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_…

2019年8月20日 0条评论 27点热度 阅读全文

LEX/FLEX词法分析器 CONTENTS: [TOC] 这篇文章的内容包括: lex语法格式 linux下flex的安装和使用 flex实例 flex源代码的编译和使用 Lex/Flex词法分析器 Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具,主要功能是生成一个词法分析器(scanner)的C源码,描述规则采用正则表达式(regular expression)。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生成一个词法分析器。…

2019年8月2日 0条评论 52点热度 阅读全文

角谷猜想 描述 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。 程序要求输入一个整数,将经过处理得到1的过程输出来。 输入:一个正整数 输出:从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为: 7*3+1=22 22/2=11 11*3+1=34 34/2=17 17*3+1=52 52/2=26 26/2=13 13*3+1=4 40/…

2019年7月9日 0条评论 20点热度 阅读全文

原文:FastCGI+lighttpd开发之介绍和环境搭建 由于需要做一些简单的基于FastCGI的Web开发,开始学习和调研,本篇介绍CGI和FastCGI的概念以及基于FastCGI官方的devkit,以及lighttpd搭建起简单的开发环境,以作备忘。 为啥要搞这个? 现在开发Web有N种选择,啥php,C#,java,ruby,nodejs...哪个都比开发FastCGI要简单和强大的多,为何还要跑到这么个底层来做Web服务呢?答案是嵌入式系统需求!我们知道嵌入式系统往往由于硬件的限制,为了节约处理器和内存…

2019年5月15日 0条评论 41点热度 阅读全文

基本概念 适用对象:整数类型变量(char,short,int,long等)作用:改变二进制位 有什么用 判断某一位是否为1 只改变其中一位,其他位不变 快速计算 分类 & 按位与(双目) &verbar; 按位或(双目) ^ 按位异或(双目) ~ 按位非(取反)(单目) << 左移(双目) >> 右移(双目) 双目:两个数折腾单目:自己折腾 按位与& 口诀:同1为1x&1: 不变x&0: 结果必为0 例子 21 & 18 21: 0001 0…

2019年4月23日 0条评论 25点热度 阅读全文