摘要:
编译单元,顾名思义,就是一次编译的单位,C/C++语言中编译器都是以被做了include递归展开的cpp文件为编译单位,这也就是最小的编译单位了。 换句话说,你可以让编译器编译一个cpp源文件,而编译器会自动处理它所包含的内容,最终把它所包含的内容以及它自身的内容编译成一个目标文件。 你无法让编译器 阅读全文
摘要:
代理:接口一致、创建混入(替代)、消息转发 阅读全文
摘要:
工程是材料清单(包含材料用途),工程师负责将材料组合到一起 阅读全文
摘要:
前言 苹果提供了 URLProtocol 让开发者可以介入 URL Loading System 做一些定制操作。 注册 protocol 注册 protocol 有两种方式 [NSURLProtocol registerClass:protocol.class] 手动修改 protocolClas 阅读全文
摘要:
强类型语言 强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 强类型语言包括:Java、.net、Python、C++等语言。其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言。 强类型 阅读全文
摘要:
https://blog.csdn.net/blomule/article/details/43058111 在这个非常依赖第三方库完成项目或产品的时代,必须要关注好依赖间的版本是否正确。 背景 AbstractMethodError异常对于我来说还是比较不常遇见的,最近有幸遇到,并侥幸的解决了,在 阅读全文
摘要:
1. 前言 从 WebView 开始加载一条请求,到页面完整呈现这一过程发生了什么?无论是做 WebView 性能优化还是异常问题监控与排查,我们都离不开对这一问题的思考与探索。 在本篇文章中,我们将在上一篇《深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析》的基础上,结合 阅读全文
摘要:
class_addMethod will add an override of a superclass's implementation, but will not replace an existing implementation in this class. To change an exi 阅读全文
摘要:
本文最初成稿于 2016 年 5 月初,后于 2020 年 2 月中进行了较大的更新和修订,后续会持续保持更新。 什么是动态追踪 动态追踪的优点 DTrace 与 SystemTap SystemTap 在生产上的应用 火焰图 方法论 知识就是力量 开源与调试符号 Linux 内核的支持 硬件追踪 阅读全文
摘要:
前言 在iOS日常开发中,对某些方法进行hook是很常见的操作。最常见的是使用Category在+load中进行方法swizzle,它是针对类的,会改变这个类所有实例的行为。但是有时候我们只想针对单个实例进行hook,这种方法就显得无力了。而Aspects框架可以搞定这个问题。 它的原理是通过Run 阅读全文
摘要:
容器提供了与平台隔离的运行环境支持 容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。 这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。容器就像是一个气泡(或者是应用周围的计算环境) 阅读全文
摘要:
0 引言 时代演进,技术也随之发展。到今天,APP已然成为绝大多数互联网企业用来获取用户的核心渠道。与此同时,伴随着业务量的增长,愈来愈大、愈来愈多的APP也在不断地、持续地挑战着每一个移动端研发人员的知识深度,而我们的移动端技术人员也在这个不断接受挑战的过程中,成就了今天的移动互联网时代。饿了么移 阅读全文
摘要:
文章目录 @[TOC] 1.引入 1.1 标准I/O 1.2直接I/O 1.3 mmap1.引入让我们先看一下Linux系统下IO结构模型 从图中可以看到标准 I/O、mmap、直接 I/O 这三种 I/O 方式在流程上的差异1.1 标准I/O 大多数文件系统的默认I/O操作都是标准I/O。在Lin 阅读全文
摘要:
在Git操作中,有一些典型的情况需要考虑,比如回滚Merge操作。这里记录下遇到需要这种操作的时候怎么处理 中断合并 在合并的时候,出现了冲突,但是还没有解决冲突,没有进行提交的时候,放弃合并。 方案: git merge --abort 方案2 git reset命令是使HEAD节点指向曾经提交的 阅读全文
摘要:
建模与外化:操纵抽象的能力 联想关联抽象的能力 阅读全文
摘要:
https://blog.csdn.net/chaoyuan899/article/details/107183847 // Replaced by CF (throws an NSException) + (void)doesNotRecognizeSelector:(SEL)sel { _obj 阅读全文
摘要:
一、release与debug模式 Debug和Release仅仅是编译选项的不同,那么为什么要区分Debug和Release版本呢? Debug和Release,主要是针对其面向的目标不同的而进行区分的。 Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任 阅读全文
摘要:
一、大项目的困境 第一版发布后,拿给客户使用,反响不错。客户要求的新功能,能够很快开发出来,Bug 修补也很快,因为早期客户往往可以与开发人员直接沟通,快速反馈。 公司于是决定投入更多人员,开发这个项目。团队慢慢变大了,软件开始变得复杂,开发速度逐渐变慢了,2.0 版花费的时间比预期要长一点。Bug 阅读全文