pipe 函数
管道是一种两个进程间进行单向通信的机制;因为管道传递数据的单向性,管道又称为半双工管道。
Linux 进程间通讯方式:
- 管道(pipe)和有名管道(fifo)
- 消息队列
- 共享内存
- 信号量
- 信号(signal)
- 套接字(sicket)
头文件
1 | #include <unistd.h> |
函数原型
1 | int pipe(int fd[2]); |
返回值:
1 | 1. 0,成功。 |
一个进程,包括代码、数据以及所分配的资源。
fork()
函数通过系统的调用创建一个与原来进程几乎完全相同的新进程,可以做完全相同的事;但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用
fork()
函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
1 | #include <unistd.h> |
1 | pid_t fork(void); |
1 | 1. -1, 创建失败。 |
WAVE
文件格式是微软用来存储多媒体文件的一个子集;遵循 RIFF资源交换档案格式。一个
RIFF
文件从一个文件头开始,然后是一个数据块的序列。WAVE文件通常只是一个重复的文件,其中包含一个WAVE块,它由两个子块组成——一个fmt块指定数据格式和一个包含实际示例数据的data块。
1 | typedef unsigned int uInt32; |
OpenAL
(Open Audio Library)是自由软件界的跨平台音效API。它设计给多通道三维位置音效的特效表现。其API风格模仿自 OpenGL。
OpenAL
主要的功能是在来源物体、音效缓冲和收听者中编码。PCM
格式的音效数据,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。OpenAL
函数组成的核心。Localizable.strings
导出到 xls
文档,然后再给相应的翻译部门或者外包翻译公司进行翻译。遗憾的是 Xcode 没有提供便捷地把 Localizable.strings
导出到 xls
或 csv
的功能(或者有而我并没有发现。)最后,这一简单而又非常繁琐的工作就落在了 Comm+C
和 Comm+V
身上了;如果是一百几十个还好,但如果是成千上万的,那是得多大的工作量啊,宝贵的时间就这样白白浪费了,而且还不能保证复制、粘贴过程中不会出错。便捷地把多个 Localizable.strings
文件合并转为一个 csv
文件。
同时支持把 csv
转化为多个 Localizable.strings
文件。
同时支持去重,保证对同一 key
的翻译唯一性。
在做视图展示是,为了保留原视图(如:视频、图片等)的比例不被改变,就必需把原始图进行 等比例缩放,以更好的展示。可以分为 4 种情况:
横屏展示横屏视图:
竖屏展示竖屏视图:
横屏展示竖屏视图:
竖屏展示横屏视图:
1 | /** |
记录
iOS
常用代码片段。
1 | /** 网络状态枚举 */ |
在 didFinishLaunchingWithOptions:
保存默认亮度值。
1 | [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:NO] |
在 applicationWillResignActive:
恢复默认亮度值(如果需要)。
1 | NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; |
在 applicationDidBecomeActive:
设定新亮度值(如果需要)。
1 | NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; |
在 viewWillAppear:
设定新亮度值(同时设为需要)。
1 | [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] |
在 viewWillDisappear:
恢复默认亮度值(同时设为不需要)。
1 | [GradualBrightness syResumeBrightness]; |
实现代码
1 | /** 亮度变换步幅 */ |
冒泡排序(Bubble Sort)是所有排序算法中最简单的、最基本的一种;其思路就是交换排序,通过相邻数据的交换来达到排序的目的。
O(n * n)
,最差时间复杂度为:O(n * n)
。O(1)
。排序原始数据:
39 52 89 44 86 26
排序后结果:26 39 44 52 86 89
概率算法(Probability)依照概率统计的思路来求解问题;但往往不能得到问题的精确解,却是通过数值计算来求解近似值。
2
;如果达到精度则输出近似值。S = π * r * r = π,(r == 1)
。S1 = S / 4 = π / 4
。S2 = r * r = 1
。分治算法(Divide and Conquer)是一种化繁为简的算法思想;其基本思想就是将一个计算复杂的问题分为规模较小,计算简单的小问题求解,然后综合各个小问题,得到最终问题的答案。
注意:使用分治算法需要待求解问题能够化简为若干个小规模的相同问题,通过逐步划分,达到一个易于求解的阶段而直接进行求解;然后,程序中可以使用递归算法来进行求解。
题意:一个袋子里有 N 个硬币,其中有一枚是假币,并且假币和真币外观一模一样,肉眼无法区分;目前只知道假币比真币重量轻一点;问,如何找出假币?
2
枚硬币,可用天平直接找出假硬币。