摘要: 1. !# /bin/bash 这句话是shell脚本的第一行,/bin/bash表示脚本的解释器位置。 2. 脚本的运行: (1)bash test.sh (2)bash -x test.sh (ps:-x用于观测脚本运行状态) (3)释放脚本权限:[1] chmod +x test.sh [2] 阅读全文
posted @ 2018-02-04 09:53 IvanB.G.Liu 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 使用强制转换 i = (const_cast<Iter>(ci)) 会造成编译错误,不能将const_iterator强制转换成iterator。 在STL中,正确的转换方法是: i = vi.begin(); advance(i, distance<ConstIter>(i,ci) ); 这种方法 阅读全文
posted @ 2018-01-20 13:15 IvanB.G.Liu 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 1. 定义: STL中的函数配接器,能够将函数子和另一个函数子、常数、普通函数结合起来。 STL中的函数配接器一共有4个,分别是: bind1nd(op ,value) 相当于构成op(value,param),即把value结合成op的第一个参数; bind2nd(op ,value) 相当于构成 阅读全文
posted @ 2018-01-19 22:21 IvanB.G.Liu 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1. 定义: 函数对象:所有重载了函数调用操作符(operator())的类对象,又称为函数子。在STL中,大多数使用函数子的地方都可以使用函数指针(ps:set和multiset的比较类型必须是函数对象,而不能是函数指针)通过将operator设置为内联函数,可以使程序性能加速。 函数指针:指向某 阅读全文
posted @ 2018-01-19 21:06 IvanB.G.Liu 阅读(2441) 评论(0) 推荐(0) 编辑
摘要: 1. unary_function: unary_function的定义如下: template<class Arg, class Result> struct unary_function { typedef Arg argument_type; typedef Result result_typ 阅读全文
posted @ 2018-01-19 19:15 IvanB.G.Liu 阅读(950) 评论(0) 推荐(0) 编辑
摘要: 1. 完全二叉树:叶节点只能出现在最后层或次下层,并且最下面一层的节点都集中在该层的最左边的二叉树。 2. 二叉堆:堆是一颗二叉树,并且满足下面的条件: (1)树的每一层都是满,除了最后一层的最右边元素 (2)任意一个父节点都大于或等于(小于或等于)两个子节点。(大于或等于的为最大堆,小于或等于的为 阅读全文
posted @ 2018-01-16 16:21 IvanB.G.Liu 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 1. 排序原理 2. 基本思想 设初始序列有n个元素,选定一个小于n大于或等于1的整数gap作为间隔,将全部元素分成gap个子序列,所有距离为gap的元素放在同一个子序列中,在每个子序列中分别采用直接插入算法进行排序;然后缩小间隔gap,如令gap=gap/2,重复上面的子序列划分和子序列排序动作; 阅读全文
posted @ 2018-01-16 16:10 IvanB.G.Liu 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 多线程程序常考虑三种性质:原子性、可见性、有序性。定义如下: 1. 原子性: 一个或多个操作的执行,只有两种情况:(1)全部执行并且执行过程中不会被打断;(2)不执行 2. 可见性: 当多个线程访问同一个共享变量时,一个线程修改了变量的值,其他线程能够立即看到被修改的新值。 例如: //线程1执行的 阅读全文
posted @ 2018-01-09 20:29 IvanB.G.Liu 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 1. 死锁: 一个进程集合中,每一个进程都在等待其他进程释放资源,那么所有进程都将被阻塞,即进程集合中所有进程死锁。 2. 死锁产生的条件: (1)互斥条件:资源一旦分配给一个进程,其他进程无法使用,只能阻塞以等待该进程释放资源。 (2)占有和等待条件:一个进程可以同时占有多个资源。 (3)不可抢占 阅读全文
posted @ 2018-01-08 14:14 IvanB.G.Liu 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 1. 竞争: 当多个进程同时读写共享数据时,会出现进程竞争。 2. 临界区: 对共享内存进行访问的程序片段成为临界区。 3. 睡眠与唤醒: sleep() :将进程睡眠,即阻塞 wakeup(a):将a进程唤醒,即从阻塞态转为就绪或者运行态 4. 信号量: 使用整型变量来累计唤醒次数,信号量的取值为 阅读全文
posted @ 2018-01-08 14:09 IvanB.G.Liu 阅读(231) 评论(0) 推荐(0) 编辑