所谓的设计模式,其实是对面向对象编程思想中的一个转变,是在繁重需求任务中做到可扩展,高度灵活,并且适应业务开发而产生的一种思想。
今天我们说的修饰者模式,是一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。
跳表的深入浅出——SkipList
跳表作为存储数据结构,在谷歌的数据库开源代码leveldb
中被广泛使用,当然还有大名鼎鼎的redis
。跳表的原理相当简单,只要你能熟练操作链表,就能轻松实现一个 SkipList。从而摆脱了红黑树,或者AVL树之类的复杂写法,因为这类数据结构体都要要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。跳表是在很多应用中有可能替代平衡树而作为实现方法的一种数据结构。跳跃列表的算法有同平衡树一样的渐进的预期时间边界,并且更简单、更快速和使用更少的空间。
一次进程的上下文切换需要多长时间
原文.
这个标题不自觉的挑起了我的兴致,我决定付出时间去找出答案。StumbleUpon公司的发布了这样一个假设,即随着Nehalem架构的所有改进(Nehalem架构被用在 i7 处理器上面),上下文切换将会变得更快。对于这个假设,换做是你,将会如何设计一个测试并且根据你的经验来找到这个问题的答案?究竟一次上下文切换有多昂贵呢?(直接告诉你答案:非常昂贵!)
静态库中Class的分类问题和符号冲突问题 (Xcode other Link Flags)
other linker flags 是 xcode 这个集成开发环境所特有的,目的是让连接器器 ld 除了默认参数外再根添加额外参数进行链接工作。 Object-C 链接特性: The “selector not recognized” runtime exception occurs du ...
白话并发——死锁
文章主要带大家理解什么是死锁,死锁什么情况下会发生,还有解决死锁的方法。文章主要用 C++11 标准库中的 std::thread 来讲解。std::thread 底层上还是调用的POSIX的线程标准的 pthread。
文中由头到尾通过孩子玩耍玩具的实力去带你理解死锁。
关于iOS调用Shell命令
一开始认为iOS是Unix系统,肯定是可以调用Shell命令的。但是后面发觉事情并不是那么简单。
确定是否能调用Shell命令的要项:
- 是否存在 Shell 程序
- 是否能使用多进程 (因为 shell 命令都是 fork 出一个进程进行处理的)
iOS高效图片 IO 框架是如何炼成的
当我们使用图片存储的时候,难免会涉及到文件IO,GPU渲染等问题,文章注重从计算机操作系统方面深入浅析地讲解如何优化图片IO的速度,提高 iOS 中 UIImageView 的渲染效率和内存优化,这对我们做多图片相册等应用会非常有帮助,而且让我们把阅读CASPP——进程篇和阅读CSAPP——虚拟内存篇这两篇文章学到的内容进行实战应用。
阅读CASPP——进程篇
在现代系统上运行一个程序时,我们会得到一个假象,就好像我们的程序是系统中当前运行的唯一的程序一样。我们的程序好像是独立地使用处理器和内存。处理器就好像是系统中当前运行的唯一程序一样。我们的程序就好像是独占地使用处理器和内存。处理器就好像是无间断地一条一条地执行我们程序中的指令。最后,我们程序中的代码和数据好像是系统内存唯一对象。而这些假象都是通过进程的概念提供给我们的。
未完待续…