Decorative image frame

寒流‘s Blog

编程与生活

寒流‘s Blog

HTTP和HTTPS详解

计算机通信原理

互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议:

  • TCP: Transmission Control Protocol 传输控制协议
  • IP: Internet Protocol 网际协议。

引自维基百科TCP/IP协议族是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。这个协议族由互联网工程任务组负责维护。

Read More...

RunLoop的应用场景(一)- 保证线程长久存活

在iOS开发过程中,有时候我们不希望一些花费时间比较长的操作阻塞主线程,导致界面卡顿,那么我们就会创建一个子线程,然后把这些花费时间比较长的操作放在子线程中来处理。可是当子线程中的任务执行完毕后,子线程就会被销毁掉。

当子线程中的任务执行完毕后,线程就被立刻销毁了。如果程序中,需要经常在子线程中执行任务,频繁的创建和销毁线程,会造成资源的浪费。这时候我们就可以使用RunLoop来让该线程长时间存活而不被销毁。

Read More...

iOS-APP-运行时防Crash工具XXShield练就

前言

正在运行的 APP 突然 Crash,是一件令人不爽的事,会流失用户,影响公司发展,所以 APP 运行时拥有防 Crash 功能能有效降低 Crash 率,提升 APP 稳定性。但是有时候 APP Crash 是应有的表现,我们不让 APPCrash 可能会导致别的逻辑错误,不过我们可以抓取到应用当前的堆栈信息并上传至相关的服务器,分析并修复这些 BUG。

所以本文介绍的 XXShield 库有两个重要的功能:

  1. 防止Crash
  2. 捕获异常状态下的崩溃信息

类似的相关技术分析也有 网易iOS App运行时Crash自动防护实践
Read More...

SDWebImage4.0源码阅读

参拜一下SDWebImage的源码。

并不是说一定要读如何如何、只是觉得源码的阅读是一种很好的学习方式。无论从架构还是技术点方面。

目录

  • 常见疑问(面试大全?)
    • 磁盘目录位于哪里?
    • 最大并发数、超时时长?
    • 图片如何命名?
    • 如何识别图片类型?
    • 所查找到的图片的来源?
    • 所有下载的图片都将被写入缓存?磁盘呢?何时缓存的?
    • 磁盘缓存的时长?清理操作的时间点?
    • 磁盘清理的原则?
    • 下载图片时、会使用缓存协议么?
    • 下载图片的URL必须是NSURL么?
    • 读取缓存以及读取磁盘的时候如何保证线程安全?
  • 相关知识点
    • NS_OPTIONS枚举与位运算
    • 内联函数
  • 准备工作
  • 工作原理
  • 业务层级
  • 核心代码(正常读取下载图片)
    • 最上层:UIView+WebCache
    • 逻辑层:SDWebImageManager
    • 业务层:
      • 缓存&&磁盘操作(SDImageCache)
      • 下载操作(SDWebImageDownloader)
  • 一些启发
    • 分层的接口API设计
    • 线程安全
    • 内联函数
    • 精细的缓存管理原则
    • 回调设计
Read More...