SSH是一种协议标准,它的主要目的是实现远程登录和提供安全网络服务。它的实现有很多种,最常用的就是开源openssh。
程序的生命周期
UIApperance协议
iOS中的锁
iOS中的多线程NSOperation
NSOperation 是 OC 语言中基于 GCD 的面向对象的封装
iOS中的多线程
线程安全
并行 和 并发 有什么区别?
并行:充分利用计算机的多核,在多个线程上同步进行 (多个操作同时进行)
并发:在一条线程上通过快速切换,让人感觉在同步进行(多个操作同时存在)
如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。
在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。
我相信你已经能够得出结论——“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。因此,凡是在求解单个问题时涉及多个执行流程的编程模式或者执行行为,都属于并发编程的范畴。
摘自:《并发的艺术》 — 〔美〕布雷谢斯
进程和线程
A process is basically a program in execution… It is fundamentally a container that holds all the information needed to run a program.
MMKV分析mmap
基本概念
系统调用
为了保证每一个进程都能安全的执行。现代OS中,CPU运行有两种模式:“用户模式”与“内核模式”。
内核模式下,应用具有对硬件的所有控制权,可以执行所有CPU指令,可以访问任意地址内存,在内核模式下的任何异常都是灾难性的,将会导致整台机器停机。
一些容易发生安全问题的操作都被限制在只有内核模式下才可以执行,例如I/O操作,修改基址寄存器内容等。
用户模式下,应用没有对硬件的直接控制权,也不能直接访问地址的内存,程序是通过调用系统API来达到访问硬件和内存,这种保护模式下,即使应用发生崩溃也是可以恢复的。
应用程序代码运行在用户模式下,当应用程序需要实现内核模式下的指令时,先向系统发送调用请求,操作系统收到请求后,执行系统调用接口,使处理器进入内核模式,当处理器完成系统调用操作后,OS会让处理器返回用户模式,继续执行用户代码。
连接用户模式和内核模式的接口称之为系统调用
应用程序中十大对文件的操作过程就是典型的系统调用过程。
iOS Pod私有库发布
为了提高项目中代码的复用,通常会把耦合度低的模块解耦出来做成Pod库放在私有仓库上,很多To B的业务,需要制作SDK给第三方使用,这时候需要提供静态framework给第三方。