大家应该已经对刘遄老师的作品非常熟悉了~《Linux就该这么学》是一本注重于实用性的Linux系统技术自学书籍,从起笔创作到人民邮电出版社三审三校工作完毕总共花费近三年时间,各章节累计修订次数超过1500余次,是目前国内品质极高的Linux系统自学书籍之一,已在百度知道与知乎等平台获得八万余条推荐。
IT行业内的技术书籍每年销售1万册即是畅销图书,而《Linux就该这么学》平均每个月出货量已超过1.2万余册,2018全年...
阅读全文
1.Linus Torvalds
Linus Torvalds两次改变了技术,第一次是Linux内核,它帮助互联网的发展;第二次是Git,全球开发者使用的源代码管理系统。在一次TED的采访中,Torvalds以极其开放的态度讨论了他独特的工作方式和性格特点。Torvalds说:“我不是一个空想家,我是一名工程师,我非常乐意跟梦想家在一起,他们行走四方,仰望苍穹,看着满天星辰说,“我想到那儿去。”但我是低头看路的那种人,我只想填好眼前这个坑,不让自...
阅读全文
Canonical为其所有受支持的Ubuntu Linux版本发布了一批新的Linux内核安全更新,以解决最新的Intel CPU漏洞以及其他重要缺陷。
正如前几天所宣布的那样,Canonical迅速响应了影响英特尔CPU微体系结构的最新安全漏洞,因此他们现在发布了Linux内核更新来缓解这些漏洞。包括有 CVE-2019-11135,CVE-2018-12207,CVE-2019-0154 和 CVE-2019-0155,这些漏洞可能允许本地攻击者公开敏感信息或可能提升特权或导致拒绝服务。
...
阅读全文
登录系统后,在当前命令窗口下输入命令:
ls /
以下是对这些目录的解释:
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:
这个目录用来存放所有...
阅读全文
Linux与Windows之间的简单对比,分别对比他们的界面、驱动程序、使用、学习以及软件,达到让更多的新手快速了解Linux与Windows,更好的区别他们之间的关系。
Windows界面
界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同
Linux界面
图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
Windows驱动程序
...
阅读全文
NSMutableArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或数据错误
线程锁:使用线程锁对数组读写时进行加锁
派发队列:在《Effective Objective-C 2.0..》书中第41条:多用派发队列,少用同步锁中指出:使用“串行同步队列”(serial synchronization queue),将读取操作及写入操作都安排在同一个队列里,即可保证数据同步。
而通过并发队列,结合GCD的栅栏块(barrier)来不仅实现数据...
阅读全文
atomic 修饰的属性是绝对安全的吗?为什么?
不一定安全,所谓的安全只是局限于 Setter、Getter 的访问器方法而言的,你对它做 Release 的操作是不会受影响的。这个时候就容易崩溃了。
atomic原子性,是否是绝对线程安全的,不是绝对线程安全怎么理解?首先看一下代码以及打印结果
@property (atomic, assign) NSInteger intA; //有一个atomic的属性,表示是原子的
- (void)viewDidLoad {
[super viewDidLo...
阅读全文
所有的引用计数系统,都存在循环应用的问题。例如下面的引用关系:
对象a创建并引用到了对象b.
对象b创建并引用到了对象c.
对象c创建并引用到了对象b.
这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中。
这种情况,必须打断循环引用,通过其他规则...
阅读全文
Block的好处,我总结了下主要有2点:1.用于回调特别方便,2.可以延长对象的作用区域。但是,Block的内存管理这个模块一直不是很清楚,这个周末好好的看了下Block的原理,有些许心得。
为了性能,默认Block都是分配在stack上面的,所以它的作用区域就是当前函数。
#include
int main()
{
int i = 1024;
void (^blk)(void) = ^ {
printf("%d\n", i);
};
blk();
return 0;
}
...
阅读全文
1.对于autorelease的理解
Each thread in a Cocoa application maintains its own stack of autorelease pool blocks.(Advanced Memory Management Programming Guide:Using Autorelease Pool Blocks)
通过这句话,我们可以看出
autorelease pool 是栈的形式,and autorelease pool blocks can be nested
主线程中也有自己的autorelease pool,这又牵扯出run loop。实际上,每次执行一次runloop时,就会释...
阅读全文