设计模式-行为型
行为型设计模式主要用于软件运行时复杂的流程控制。包含:模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式和解释器模式
Stay Hungry, Stay Foolish
在软件开发时为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,通常要遵守一定的设计原则:
有时候我们需要合并两个不同地址的Git仓库,比如:其中一个仓库A我们在GitHub上部署,另外一个仓库B我们在国内的Coding上部署,两者为同一个工程,如果我们希望将仓库A的所有改动合并到仓库B上。
整个操作的思路是伪造伪造其中一个远程仓库作为另一个仓库的一个分支,然后进行分支合并。
Structured Query Language:结构化查询语言
定义了了操作所有关系型数据库的规则
Objective-C Runtime 使得C具有了面向对象的能力,在程序运行时创建,检查,修改类,对象和它们的方法。Runtime 是 C和汇编写的,这里http://www.opensource.apple.com/source/objc4/可以下载Apple维护的开源代码,GUN也有一个开源的Runtime版本,它们都努力保持一致。Apple官方的runtime编程指南
对于 C 语言,函数的调用会在编译期就已经决定好,在编译完成后直接顺序执行。但是 OC 是一门动态语言,函数调用变成了消息发送,在编译期不能知道调用哪个函数,Runtime 就是去解决如何在运行时期找到调用方法的问题。
多线程同时访问同一块资源会造成资源抢夺,容易引发数据错乱和数据安全问题,此时我们需要保证资源同时只有一个线程访问,加锁就是为了解决这个问题。
常用的加锁方式:(性能由差到好)
OSSpinLock
自旋锁,存在优先级反转问题,破坏了 spinLock,后来Apple推出 os_unfair_lock_t
解决优先级翻转问题dispatch_semaphore
信号量pthread_mutex
互斥锁 (C语言)NSLock
对象锁NSCondition
条件锁NSRecursiveLock
递归锁NSConditionLock
条件锁@synchronized
性能最差java.lang.Object
类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
常用 API:
public String toString()
: 返回该对象的字符串表示
public boolean equals(Object obj)
: 与其他对象比较是否与当前对象“相等”