Q05现金支付

本文是程序员算法趣题一书Q05 C语言实现,由于该书中所给的代码是Javascripts与Ruby,故在今后的阅读中会记录部分习题的C语言实现。

Q05现金支付就是大整数分解问题.将一个大整数,用指定的小整数进行组合。

Q05中作者先通过一个特定的例子,比如求1000元日元的组合,并且给出了限制,最多兑换的硬币个数不超过15.

1000日元的组合情况:

/......

Q04切分木棒

本文是程序员算法趣题一书Q04 C语言实现,由于该书中所给的代码是Javascripts与Ruby,故在今后的阅读中会记录部分习题的C语言实现。

Q04问题后面的Column中介绍了深度优先搜索和广度优先搜索。

深度优先搜索算法(英语:Depth-First-Search,简称DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问......

TLPI-Chapter 5深入探究文件I/O

原子操作

UNIX/Linux系统编程手册第5章深入探究文件I/O,所有的系统调用都是以原子操作方式执行。

内核保证系统调用中的所有步骤会作为一个独立操作而一次性加以执行,期间不会为其它进程或线程中断.

下面的代码中open并未使用O_EXCL标志,在程序中为了对执行该程序的进程加以区分,打印了进程号。

/*************************************************************************\

* Copyright (C) Michael Kerrisk, 2015. ......

TLPI-Chapter 4文件IO

所有执行I/O操作的系统调用都以文件描述符(一个非负整数)来指代打开的文件。文件描述符用以表示所有类型的已打开文件,包括管道、FIFO、socket、终端、设备、普通文件。它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。每个进程,文件描述符都自成一套。

三种标准的文件描述符:

0 标准输入 1 标准输出 2 标准错误

然后介绍执行文件IO操作的4个主要系统调用:

fd = open(pathname,flags,mode) 打开或创建一个新文件.

numread = read(f......

GCC编译链接多文件

gcc是Linux/Unix上非常强大的C语言编译器。并且如今也支持C++的编译。与VC不同,gcc是完全跨平台的。到目前为止很多工具都使用gcc作为其编译环境,比如cocos2d-x,android的NDK等等。 学习使用gcc编译器,就是学习它众多的编译参数。就是用连字符-连接的参数.

因为它的参数并不全是单字符的,所以不能使用一个连字符后加多个参数的写法, 要每个参数前面都要加一个连字符.

常用用法

直接在gcc后面加上要编译的C语言源文件

gcc hello.c

这种默认的情况下会生成一个名为a.out的可执行文件。

-o 最常用的编译选项,用于指定要生成的可执行文件的名......

TLPI-源代码运行

上周末开始看《UNIX/Linux系统编程手册》这本书(豆瓣评分高达9.5),周末的时间看到第四章,觉得这本书比直接看Linux内核要好接受的多,因为从代码入手,可以更好的理解,比如第三章系统调用的讲解,如果只是理论方面可能比较枯燥,那么这本书中的代码,如何运行呢?

下载代码

这本书的主页.代码版本有两个:

Distribution version: a tarball of the source code that includes extra material not shown in the book. Probably, this is the version of the c......

TLPI-Chapter 3系统编程概念

第三章内容概念讲的其实相对好理解,主要有如下几点:

系统调用是可控的内核入口,进程可以请求内核以自己的名义去执行某些动作,这就用到了系统调用,讲处理器从用户态切换到内核态。

在书中作者用到一个例子X86-32为例,按事件发生顺序:

1.应用程序通过外壳(wapper)函数,发起系统调用

2.参数入栈,传入外壳函数。

3.外壳函数将参数置入特定寄存器(包括系统调用编号)

4执行中断机器指令(int 0x80)。

5.内核响应中断指令,调用system_call()里程处理中断。

如何处理中断呢?

在内核栈保存寄存器的值

审核系统调用编号的有效性

通过编号找到相应的系统调用......

Q02翻牌

本文是程序员算法趣题一书Q02 C语言实现,由于该书中所给的代码是Javascripts与Ruby,故在今后的阅读中会记录部分习题的C语言实现。

100张写着数字1-100的牌,并按顺序排列着,最开始所有卡牌都是背面朝上放置,然后从第二张开始翻牌,隔一张继续翻牌到最后一张,然后从第三张开始翻牌,隔两张开始翻牌(如果本来正面朝上,则翻成背面朝上,如果本来背面朝上,则翻成正面朝上),依次类推直到没有可翻动的牌。

/*

Name: 程序员算法趣题Q03

Copyright: 52coder.net

Author: 52coder

Date: 04/09/17 22:44

Description......

Q01回文十进制数

本文是程序员算法趣题一书Q01 C语言实现,由于该书中所给的代码是Javascripts与Ruby,故在今后的阅读中会记录部分习题的C语言实现。

Q01

求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值。

/*

Name: 程序员算法趣题Q01

Copyright: 52coder.net

Author: 52coder

Date: 03/09/17 23:44

Description: Q01

*/

#include <stdio.h>

#include <stdlib.h>

/*判断十进制数是否是回文数*/

int vaild......

生活

在地铁上看到旁边的一个人在津津有味的看一段关于生活的描述:

生活是什么?

生活对我而言是活着,是存在,是每一口呼吸,每一顿饭,每一个晚安。

生活是医院里给家人打电话,慌慌张张擦泪的外地人。

生活是雨天里踩着共享单车没打伞,全身湿透只为一个全勤的年轻人。

生活是明白一段感情,很多事,徒劳无功,但还是要奋力一试。

如果你觉得他们在假装,那我想,你真的对生活有什么误解。

当我看到邻座的大姐看的kindle上这段话时,我鼓起勇气冒着搭讪的风险问能不能拍个照,就这样在大姐的满脸疑惑中我举起了我心爱的iphone6s手机拍下这段当时在我看来感动的一塌糊涂的文字。

那么生活到底是什么呢......