- 博客(13)
- 收藏
- 关注
原创 OTP的supervisor tree如何保证子进程一定随父进程的退出而退出
利用OTP行为包构建的应用之所以可靠,是因为我们按照OTP的设计模式,将所有进程组织成了一棵可靠的supervisor tree。每一个supervisor监控其子进程,并在其子进程出错时按照重启策略进行相应的处理。但是,你是否考虑过,如果supervisor意外终止,其子进程会怎样?当然,直觉告诉我们连监控进程的没有了,所有的子进程应全部终止。但是,你在代码中是否真正考虑过这种情况?你的
2014-05-07 17:15:57
2304
原创 OTP supervisor的monitor_child是否有漏洞
问题描述OTP的supervisor中为了防止淘气的Child从link的另一端断掉link,supervisor会在shutdown child之前unlink(Child)并切换为monitor状态,这样supervisor对Child的监控将无法被Chlid终止。这段代码是由monitor_child/1实现的,其具体实现代码如下:872 %% Help function to
2014-05-07 17:08:18
976
原创 笔试题——通过指针修改const变量
首先我们先看一个例子:#include #include using namespace std;struct S{ const int c; //常量普通成员变量 static const int sc; //常量静态成员变量 S():c(0){ } };const int S::s
2014-04-14 23:09:16
2239
原创 《The Google File System》论文阅读笔记——GFS设计原理
本文是我在阅读论文《The Google File System》时记下的笔记,对论文的各部分内容进行了梳理。系统设计过程往往就是在各种因素间根据目标需求权衡利弊的过程。分布式系统设计需要权衡的问题存在许多共性,GFS在设计过程中基于分布式环境的特点,做的许多重要决策对于其他分布式系统开发具有指导性的意义。所以,我尽力把觉得有趣的设计要点进行了提炼,并对重要细节进行了重点分析,特别是各种权衡带来的好处和坏处,以及针对最终选择带来的坏处的弥补方案。
2014-01-14 13:53:17
4757
原创 面试题——栈的最大值问题
常数时间求栈的最大值问题描述:一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。算法描述:一个存储所有最大值的栈Sm。1. 当push入栈的
2013-03-09 01:53:29
13135
4
原创 学习笔记——shell中的引号和括号使用的总结
对shell中各种引号的使用区分的不是太清楚,今天再次总结下来,一方面加深印象,另一方面以后用到时也可以回来看~ 1、双引号 使用双引号可引用除字符$、`、/外的任意字符和字符串。 举例: grep tao tao /home/taotaotheripper 运行结果:grep: tao: 没有哪个文件或目录 grep "tao tao /home/taotaotheripper" 就可以正常运行了 var=taotaotheripper echo "$va
2010-07-25 20:43:00
1607
原创 学习笔记——getchar()与EOF
<br />本文主要讨论的是如下输入方式中隐含的种种:<br />#include<stdio.h><br />int main()<br />{<br /> char c;<br /> while((c=getchar())!=EOF)<br /> {<br /> putchar();<br /> }<br /> return 0;<br />}<br /><br />1、输入文件结束符的方法<br /> 在
2010-07-25 16:29:00
762
原创 学习笔记——shell中进行数学运算的方法
<br /> shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵。<br /> 1、错误方法举例<br /> a)<br /> var=1+1<br /> echo $var<br /> 输出的结果是1+1,悲剧,呵呵<br /> <br /> b)<br /> var=1<br /> var=$var+1<br /> echo $v
2010-07-24 15:56:00
1761
原创 学习笔记——shell中测试变量是否已经设置
<br />在学习shell编程过程中遇到的小细节,在此记下。<br /> 1、shell中测试变量是否已经设置的两种方法<br /> ${variable:-value}<br /> ${variable:=value}<br /> <br /> 2、两种方法的相同点<br /> 如果variable已经被设置过,则两种方法都不对变量进行任何操作<br /> <br /> 3、两种方法的不同点<br /> 如果var
2010-07-23 15:14:00
979
原创 学习笔记——Makefile中的=与:=
今天在看书时,看到了一个Makefile中非常细节的地方,为了以后用到时能够想起,在此记下~ 1、Makefile中的赋值方式 Makefile中的变量赋值有两方形式:=赋值和:=赋值 2、两种赋值方式的区别 使用=赋值时,是把函数和参考变量赋给左边; 使用:=赋值时,是把函数和参考变量展开后赋给左边。 3、举例说明 a)=赋值举例 A = taotaotheripper B = $(A) 则此时B的值就是$
2010-07-23 11:59:00
629
原创 学习笔记——内联函数
上一次看到内联函数,是在学习CUDA时看到的”所有的device函数默认情况下都是内联的“,由于不知道内联函数是什么,所以就上网查阅了一番。今天在学习GCC的参数指令时,在看到“-O3比-O2选项能更进一步优化,包括inline函数”时,一时间又迷惘了,内联函数是什么???(大悲剧啊,我又忘了)。所以几天在此记下,以免时间长了再忘掉。 一、内联函数的作用 每一次函数调用都要把原来正在运行的函数的大量数据以及状态标志等压栈,所以每一次函数调用都要消耗栈空间,而频繁的调用小函数便会大
2010-07-22 15:44:00
1122
原创 学习笔记——关于size_t的一些思考
今天突然发现,我一直都不知道size_t是什么数据类型,于是在此记下,以便以后不时之需。 1、size_t的解释 size_t是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小,由typedef unsigned int size_t定义。 2、发现的一个小问题 在容器中用到的size_type同样也是unsigned类型,为什么一个unsigned要定义这么多相同的类型呢? 3、问题的解决 经过在网上的资料收集和阅
2010-07-19 15:27:00
667
原创 第一次linux下的ssh远程并行程序测试
昨天刚刚安装linux,还是个超级菜鸟,今天在linux下第一次远程登录校内的并行程序测试服务器,记下登录过程中用到的东东,以防下一次登录的时候忘记了,呵呵。 1.使用SSH登陆软件,因为有账号,所以要采用特定用户名登陆:使用命令——ssh -l 用户名 IP地址。注意要输两遍密码,然后自动登入NODE2。 2.输入exit,退出回到NODE1 3.cd C/src/ 这里是存放源码的目录,cd liuliu(我建立的目录)。 4.建立源码文件,
2010-07-14 21:43:00
894
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人