学计算机的那个

不是我觉到、悟到,你给不了我,给了也拿不住;只有我觉到、悟到,才有可能做到,能做到的才是我的.

0%

基本概念

系统调用

为了保证每一个进程都能安全的执行。现代OS中,CPU运行有两种模式:“用户模式”与“内核模式”。

内核模式下,应用具有对硬件的所有控制权,可以执行所有CPU指令,可以访问任意地址内存,在内核模式下的任何异常都是灾难性的,将会导致整台机器停机。

一些容易发生安全问题的操作都被限制在只有内核模式下才可以执行,例如I/O操作,修改基址寄存器内容等。

用户模式下,应用没有对硬件的直接控制权,也不能直接访问地址的内存,程序是通过调用系统API来达到访问硬件和内存,这种保护模式下,即使应用发生崩溃也是可以恢复的。

应用程序代码运行在用户模式下,当应用程序需要实现内核模式下的指令时,先向系统发送调用请求,操作系统收到请求后,执行系统调用接口,使处理器进入内核模式,当处理器完成系统调用操作后,OS会让处理器返回用户模式,继续执行用户代码。

连接用户模式和内核模式的接口称之为系统调用

应用程序中十大对文件的操作过程就是典型的系统调用过程。

阅读全文 »

为了提高项目中代码的复用,通常会把耦合度低的模块解耦出来做成Pod库放在私有仓库上,很多To B的业务,需要制作SDK给第三方使用,这时候需要提供静态framework给第三方。

阅读全文 »

前言

查了下资料,没找到关于组建化合理的定义,可以理解为模块化,对较大粒度的业务模块进行封装,组件间只有很少的依赖,只关注输入与输出。

阅读全文 »

前言

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

  • TCP 提供一种面向连接的、可靠的字节流服务
  • 在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP
  • TCP 使用校验和,确认和重传机制来保证可靠传输
  • TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复
  • TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制
1
2
3
注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递
送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100% 可靠的协议,
它所能提供的是数据的可靠递送或故障的可靠通知。
阅读全文 »

HTTP协议

在HTTP建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP是超文本传输协议。它是应用层协议的一种,请求/响应报文的组成结构

报文格式

请求报文的格式

1
2
3
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*
  • 三个部分
1
2
3
请求行
请求头,都是以 key-value形式组成
实体主体 , GET 请求一般不带有实体主体
阅读全文 »