新版本的Mac OS系统在安装openssl的时候会报错
Error while installing pod: “cp: file.tgz: No such file or directory”错误详情
iOS组件化
CocoaPods Setup,更新repo缓慢
前言
CocoaPods在首次安装后,不管是search、install还是update,都会强制的升级他的repo。这个repo起到了CocoaPods在本地缓存索引的作用,比如我们进行pod search的时候,实际是在本地进行检索的,这个repo是git上的一个仓库,由CocoaPods官方创建,地址如下:https://github.com/CocoaPods/Specs,存放了CocoaPods支持的各种三方库的信息,每次在执行pod search的时候,首先CocoaPods会主动的pull这个git,确保本地的索引信息是最新的,然后再在本地repo中进行搜索,以保证加载的速度。
设计模式详解
设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
正确使用设计模式具有以下优点。
- 可以提高程序员的思维能力、编程能力和设计能力。
- 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
- 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。
设计模式六大原则
TCP/UDP协议
传输层协议
- TCP, 传输控制协议
- UDP,用户数据报协议 无连接,尽最大努力交付
TCP
- TCP 提供一种面向连接的、可靠的字节流服务
- 在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
- TCP 使用校验和,确认和重传机制来保证可靠传输
- TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
- TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
1 | 注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递 |
HTTP协议
消息发送和转发
消息发送(Messaging)是 Runtime 通过 selector 快速查找 IMP 的过程,有了函数指针就可以执行对应的方法实现;
消息转发(Message Forwarding)是在查找 IMP 失败后执行一系列转发流程的慢速通道,如果不作转发处理,则会打日志和抛出异常
YYDispatchQueuePool全局队列管理工具
大体上原理,就是通过创建不同优先级的context(5个),context中创建有限数量的queue(CPU核数)。
在使用的时候,通过优先级获取不同的context,然后轮着返回不同的queue让你换着用,你就可以一定程度上实现并行队列,并且控制线程数量。