主页
李昊舒的博客
Cancel

程序员的自我修养 ——链接、装载与库读书笔记(四)

此系列为我学习经典的读书笔记,目的是理清知识脉络帮助理解记忆,内容深度、质量远远不及原书。如果您对相关知识感兴趣,强烈建议阅读原书程序员的自我修养 带着问题学习 为什么要动态链接 动态链接的关键结构有哪些 动态链接有哪些步骤 为什么要动态链接 静态链接使得不同开发者或部门之间能够按模块开发,这大大提高了生产效率,与此同时静态链接的两个缺点也显现出来。一个是占用...

程序员的自我修养 ——链接、装载与库读书笔记(三)

此系列为我学习经典的读书笔记,目的是理清知识脉络帮助理解记忆,内容深度、质量远远不及原书。如果您对相关知识感兴趣,强烈建议阅读原书程序员的自我修养 带着问题学习 静态链接中,输入的目标文件的各个段是如何被合并到输出文件的 链接器如何为他们分配在输出文件中的空间和地址 什么是 COMMON 块,未初始化的全局/静态变量为什么要使用它 空间与地址分配 对于链接器而...

程序员的自我修养 ——链接、装载与库读书笔记(二)

此系列为我学习经典的读书笔记,目的是理清知识脉络帮助理解记忆,内容深度、质量远远不及原书。如果您对相关知识感兴趣,强烈建议阅读原书程序员的自我修养 带着问题学习 源代码到可执行文件都经历了哪些步骤 编译器做了什么工作 什么是静态链接,静态链接都包含哪些步骤 可执行文件的生成 源代码到可执行文件的生成可分为预处理(Prepressing)、编译(Compilat...

程序员的自我修养 ——链接、装载与库读书笔记(一)

此系列为我学习经典的读书笔记,目的是理清知识脉络帮助理解记忆,内容深度、质量远远不及原书。如果您对相关知识感兴趣,强烈建议阅读原书程序员的自我修养 带着问题学习 计算机的软硬件基本结构是什么 计算机如何充分利用 CPU 以及内存 线程是什么,什么是线程安全,如何保证线程安全 计算机的软硬件基本结构 对于软件开发者来说,计算机硬件抓住三个关键部位 CPU、内存和...

Github Pages 博客迁移阿里云

虽然没什么人看,但是还是想把博客搭建在自己服务器上,也算是锻炼锻炼动手能力(纯折腾),也给想要迁移的同学做一个简单的分享。 前期准备 博客打包文件夹 我的博客使用 jekyll 搭建 编译 jekyll build 项目中的 _site 目录就是编译后的博客 服务器购买 我选择了一台阿里云 CentOS 7.3 轻量应用服务器 域名绑定 购买一个喜欢的域名阿里云也有相应...

2020 年终总结

距离上次写博客已经过去快两年了,可以说第一次搭建起博客之后写了 3 篇分析就放弃了。本着不输出怎么进步的思想,这次下定决心把博客写起来。把原来在 Github Pages 的博客迁移到了新服务器,买了域名,换了主题。基本上就是重新搭建了一遍,就以这篇 2020 的终点作为新起点吧。 关于学习 今年参加了极客大学的算法训练营和前端进阶训练营课程。 算法 程序 = 数据结构 + 算法。非...

PromiseKit 源码分析

面对回调地狱 PromiseKit 提供了一种简洁易用的异步编程模式。让你可以编写出更加易读,更加专注结果的代码。本文意在探寻简介背后的逻辑。 从最小类型谈去 搞清复杂封装的源码中最基本的类型就好比搞清一篇英文文章中所有看不懂的生词的意思。再想看懂文章,只需要把已知信息串联起来就行了。 Box box 是 PromiseKit 中基本的类,在介绍它之前,先得说一下同样定义在Box.swi...

SVProgressHUD 源码分析

众所周知 SVProgressHUD 是一个简洁易用的 HUD 库,我想探寻简洁易用背后的原理。 Singleton SVProgressHUD 同 MBProgressHUD 一样,都是 UIView 的子类,不同与 MB , SV 提供的是单例,这也是它简洁的一大因素。 + (SVProgressHUD*)sharedView { static dispatch_once_...

Kingfisher 源码分析

最近解决公司项目缓存问题时候发现自己对沙盒理解还不深刻,就从项目中看了一下喵神的实现,惊叹于 Kingfisher 这个库的整洁规范。所以就萌生了写一篇文章记录阅读源码这件事情的意愿。 从接口谈起 首先还是要稍微介绍一下 Kingfisher: Kingfisher is a lightweight, pure-Swift library for downloading and ca...