c

笨办法学C 练习45:一个简单的TCP/IP客户端

练习45:一个简单的TCP/IP客户端原文:Exercise 45: A Simple TCP/IP Client译者:飞龙我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫做netclient。为此我需要向Makefile添加一些工具,来处理bin/目录下的小程序。扩展Makefile首先,为程序添加一些变量,就像单元测试的TESTS和TEST_SRC

Lower case to upper case – An interesting fact

原文網址,並不是完全是原文的翻譯,而是瞭解之後,用自己的想法解釋一遍Problem有一個英文字串,請將這個字串變為大寫Solution一般我們的想法像這樣: char str[256] = "segmentfault"; for(int i = 0 ; str[i] != '\0' ; i++){ if('a' 01000001 B->010

笨办法学C 练习47:一个快速的URL路由

练习47:一个快速的URL路由原文:Exercise 47: A Fast URL Router译者:飞龙我现在打算向你展示使用TSTree来创建服务器中的快速URL路由。它适用于应用中的简单的URL匹配,而不是在许多Web应用框架中的更复杂(一些情况下也不必要)的路由发现功能。我打算编程一个小型命令行工具和路由交互,他叫做urlor,读取简单的路由文件,之后提示用户输入要

操作系统思考 第一章 编译

第一章 编译作者:Allen B. Downey原文:Chapter 1 Compilation译者:飞龙协议:CC BY-NC-SA 4.01.1 编译语言和解释语言人们通常把编程语言描述为编译语言或者解释语言。前者的意思是程序被翻译成机器语言,之后由硬件执行;而后者的意思是程序被软件解释器读取并执行。例如,C被认为是编译语言,而Python被认为是解释语言。但是二者之

笨办法学C 练习41:将 Cachegrind 和 Callgrind 用于性能调优

练习41:将 Cachegrind 和 Callgrind 用于性能调优原文:Exercise 41: Using Cachegrind And Callgrind For Performance Tuning译者:飞龙这个练习中,我打算上一节速成课,内容是使用Valgrind的两个工具callgrind和cachegrind。这两个工具会分析你程序的执行,并且告诉你哪一部

笨办法学C 练习43:一个简单的统计引擎

练习43:一个简单的统计引擎原文:Exercise 43: A Simple Statistics Engine译者:飞龙这是一个简单的算法,我将其用于“联机”(不储存任何样本)收集概要统计。我在任何需要执行一些统计,比如均值、标准差和求和中使用它,但是其中我并不会储存所需的全部样本。我只需要储存计算出的结果,它们仅仅含有5个数值。计算标准差和均值首先你需要一系列样本。它可

笨办法学C 练习44:环形缓冲区

练习44:环形缓冲区原文:Exercise 44: Ring Buffer译者:飞龙环形缓冲区在处理异步IO时非常实用。它们可以在一段接收随机长度和区间的数据,在另一端以相同长度和区间提供密致的数据块。它们是Queue数据结构的变体,但是它针对于字节块而不是一系列指针。这个练习中我打算想你展示RingBuffer的代码,并且之后你需要对它执行完整的单元测试。# ifndef

笨办法学C 练习37:哈希表

练习37:哈希表原文:Exercise 37: Hashmaps译者:飞龙哈希表(HashMap、HashTable以及Dictionary)广泛用于许多动态编程语言来储存键值对的数据。哈希表通过在键上执行“哈希”运算产生整数,之后使用它来寻找相应的桶来获取或储存值。它是非常快速的使用数据结构,因为它适用于任何数据并且易于实现。下面是哈希表(也叫作字典)的一个使用示例:fr

笨办法学C 练习38:哈希算法

练习38:哈希算法原文:Exercise 38: Hashmap Algorithms译者:飞龙你需要在这个练习中实现下面这三个哈希函数:FNV-1a以创造者Glenn Fowler、Phong Vo 和 Landon Curt Noll的名字命名。这个算法产生合理的数值并且相当快。Adler-32以Mark Adler命名。一个比较糟糕的算法,但是由来已久并且适于学习。D

笨办法学C 练习35:排序和搜索

练习35:排序和搜索原文:Exercise 35: Sorting And Searching译者:飞龙这个练习中我打算涉及到四个排序算法和一个搜索算法。排序算法是快速排序、堆排序、归并排序和基数排序。之后在你完成基数排序之后,我打算想你展示二分搜索。然而,我是一个懒人,大多数C标准库都实现了堆排序、快速排序和归并排序算法,你可以直接使用它们:# include # inc