2014年7月

总的分为两步:
1、在aws后台上创建新的volume,然后右键attach到一个ec2上。
2、登录到ec2上格式化并挂载。
第一步很容易,界面操作。第二步需要一些命令操作,简述如下
查看当前磁盘情况
[code]
fdisk -l
[/code]
会发现多出来一个
[code]
Disk /dev/sdf: 536.8 GB, 536870912000 bytes
[/code]

- 阅读剩余部分 -

一、可见性
1、失效数据:数据未设置同步时,修改数据的线程有可能没把数据回写到内存,或读线程的缓存数据未从内存中同步。重排序也会导致失效数据。
2、非原子的64位操作:非volatile的64位变量(long或double),写操作会分为两个32位的操作,故有可能读到被修改一半的数据,即仅有高位或低位被修改的值。
3、加锁与可见性:多个线程在同一个同步块中看到的同一个数据,都是有效的,即可以保证它们的内存可见性。
4、Volatile变量:不重排序,只确保可见性。且写入和回写作为原子操作,读取和加载也做为原子操作。
二、发布与逸出:通过方法的return或共享变量发布数据;要防止构造时的this逸出(运行时问题:未构造完成,却被调用)。
三、线程封闭:共享数据仅在单个线程内部访问。Swing的强制封闭,JDBC的池化应用级封闭。
1、Ad-hoc线程封闭:由程序实现的线程封闭,叫做Ad-hoc。
2、栈封闭:方法的局部变量是栈封闭的,要防止栈封闭的对象逸出。
3、ThreadLocal类:方便的进行线程内传参,或共享线程数据。有隐含的耦合性,给后续改造留坑。

- 阅读剩余部分 -

先说一下概念

四舍六入五成双

对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进。(0是偶数)

- 阅读剩余部分 -

一、什么是线程安全性:某个类的行为与其规范完全一致。这个定义略有偷懒的感觉。无状态对象一定是线程安全的。
二、原子性
1、竞态条件:先检查后执行。
2、示例:延迟初始化中的竞态条件。典型的double check的例子,不用多说。
3、复合操作:先检查后执行和读取-修改-写入这类操作都是复合操作,需是原子的才能保障它是线程安全的。

- 阅读剩余部分 -

一、并发简历,原因有三点:
1、资源利用率。
2、公平性。
3、便利性:多任务用多个程序并发,比一个程序完成多个任务,实现起来容易。略觉牵强。
二、线程的优势
1、发挥多处理器的能力。
2、建模的简单性:同一、3。任务各自独立。
3、异步事件的简化处理。
4、响应更灵敏的用户界面。

- 阅读剩余部分 -

一、C语言运行库:入口函数、初始化、堆管理、基本IO。
1、开始:入口函数;main参数;CRT初始化;结束部分。
2、堆的实现:malloc()、free()。
3、IO与文件操作:fopen()、fread()、fwrite()、fclose()、fseek()。
4、字符串相关操作:itoa、strcmp、strcpy、strlen。
5、格式化字符串:fputc、fputs、vfprintf、printf、fprintf。
二、如何使用Mini CRT:导出Mini CRT的头文件,供开发时include即可。
三、C++运行库实现
1、new 与 delete:操作符函数。
2、C++全局构造与析构:MSVC为.CRT$XCA段和.CRT$XCZ段。GCC为.ctor段。
3、atexit实现。
4、入口函数修改。
5、stream和string。
四、如何使用Mini CRT++:编译、链接。