自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 iOS底层探索--内存管理

iOS底层探索--内存管理1. 五大分区全局变量和局部变量在内存中是否有区别?有什么区别?Block中是否可以直接修改全局变量全局静态变量的修改2. TaggedPointer3.NONPOINTER_ISA的优化3. retain & release & retainCount ...

2020-05-31 01:07:51 31 0

原创 数据结构与算法--聊聊散列表查找

数据结构与算法--聊聊散列表查找前言1. 散列函数常见手段1.1 直接定值法:1.2 数字分析法:1.3 平方取中法1.4. 折叠法1.5. 除留余数发2. 散列冲突的解决2.1 开放定址法2.2 再散列函数发2.3. 链地址发2.4. 公共溢出法3. 散列表实现 前言 在日常的工作中,经常会接触...

2020-05-24 00:42:06 46 0

原创 数据结构与算法--聊聊那些常见的排序算法

数据结构与算法--聊聊那些常见的排序算法前言1. 冒泡排序2. 简单选择排序3. 直接插入排序4. 希尔排序5. 堆排序6. 归并排序7. 快速排序 前言   在开发中会经常用到排序,经常用到排序比如:冒泡排序,选择排序,直接插入排序等。 那什么是排序呢?这个其实都很熟悉了,其实排序还分为内排序和...

2020-05-23 23:50:13 99 0

原创 数据结构与算法 -- 平衡二叉树的构建

数据结构与算法 -- 平衡二叉树的构建前言1. 平衡二叉树构建分析2. 平衡二叉树构建 前言 上一篇学习了一些常见的静态查找和动态查找中二叉搜索树的查找,插入和删除操作。在构建一个二叉搜索树的时候,假如给定的数据是一直递增的,那么就会一直存储在右子树上,构成一个斜树。这时在对其做查找时,效率一样很...

2020-05-22 16:56:24 28 0

原创 数据结构与算法--关于查找的常见算法

数据结构与算法--关于查找的常见算法1. 静态查找1.1 顺序查找1.2 折半查找1.3 插值查找1.4 裴波拉契查找2. 动态查找(二叉搜索树) 1. 静态查找 静态查找包括:顺序查找、插值查找、二分查找、裴波拉契查找 1.1 顺序查找 顺序查找,又称为线性查找。是最基本的查找技术。其查找过程:...

2020-05-21 00:14:18 37 0

原创 数据结构与算法--图的应用拓扑排序 & 关键路径

数据结构与算法--图的应用拓扑排序 & 关键路径1. 拓扑排序2. 关键路径 1. 拓扑排序 拓扑排序简介 假设在如下面的一张 有向图 中,顶点表示活动,弧表示活动之间的优先关系,这样的 有向图 顶点表示活动网,我们称之为 AOV 网。   上面 AOV 网的路径为:V1 -&g...

2020-05-19 19:33:13 24 0

原创 数据结构与算法--图的应用之最短路径

数据结构与算法--图的应用之最短路径前言1. Dijkstra 算法2. 佛洛依德(Floyd)算法 前言   上一篇简单的介绍了图的应用之最小生成树的两种求解方法,本篇来了解一下关于 图的最短路径 的两种求解方法 首先看下面的图, 从上图中可以很直观的看出: 最短路径:V0 -> V1 ...

2020-05-13 19:44:06 51 0

原创 iOS底层探索 -- 多线程

iOS底层探索 -- 多线程1. 多线程概念问题2. 多线程原理3. 端口通讯4. GCD 初探 1. 多线程概念问题 线程的定义 线程是进程的基本单元,一个进程的所有任务都在线程中执行 进程要想执行任务,必须得有线程,进程至少有有一条线程 程序启动默认会开启一条线程,这条线程被称为主线程或...

2020-05-08 17:58:51 16 0

原创 数据结构与算法 -- 图的应用之最小生成树问题

数据结构与算法 -- 图的应用之最小生成树问题前言1.最小生成树问题2.最小生成树求解(普里姆(Prim)算法)2.最小生成树求解(克鲁斯卡尔算法) 前言   前面对 图的存储 和 **图的遍历(广度优先/深度优先)**做了简单的学习和了解,本篇文章,学习一下最小生成树的问题,以及对应解决这个问题...

2020-05-07 21:27:58 41 0

原创 数据结构与算法--图的遍历方式(深度遍历和广度遍历)

数据结构与算法--图的遍历方式(深度遍历和广度遍历)1. 图的深度优先遍历2. 图的广度优先遍历 1. 图的深度优先遍历 深度优先搜索算法:数据结构是栈。通过将顶点存入栈中,沿着路径探索顶点,存在新的相邻顶点就去访问 邻接矩阵深度遍历思路: 1.将图的顶点和边的信息输入到图结构中 2.创建一个数组...

2020-05-06 14:55:02 39 0

原创 数据结构与算法--图的存储方式

数据结构与算法--图的存储方式 1. 图的定义2. 图的存储2.1. 图的存储介绍2.2. 邻接矩阵2.3. 邻接表 1. 图的定义 定义:图是由顶点的有穷非空结合和顶点之间的集合组成,数据元素(顶点)之间具有任意关系,图中任意两个数据元素之间都可能相关 各种图: 无向图(顶点到顶点之...

2020-05-06 12:40:12 21 0

原创 iOS底层探索 -- KVO探索

iOS底层探索 -- KVO探索前言1. KVO初探1.1 context 的作用1.2 自动观察1.3 多个因素影响1.4 可变数组的观察2. KVO 原理分析3. 自定义 KVO 思路4. KVO 函数式编程5. FBKVO 简单分析 前言   上一篇学习了KVC键值编码的查找原理,而KVO(...

2020-05-01 23:37:54 26 0

原创 iOS底层探索 -- KVC 底层原理分析

iOS底层探索 -- KVC 底层原理分析前言1.   KVC(Key-Value Coding)初探2.   KVC 深入2.1  访问对象属性2.2  访问集合属性2.3  集合运算符2.4  访问非对象属性2.5  属性验证2.6  KVC 取值和赋值原理 前言   在日常的开发中,在对数据...

2020-05-01 00:30:43 76 0

原创 数据结构与算法 -- 哈夫曼树&哈夫曼编码

数据结构与算法 -- 哈夫曼树&哈夫曼编码前言1. 哈夫曼树2. 哈夫曼编码3. 哈夫曼树 & 哈夫曼编码 的实现 前言   上一篇了解学习了线索化二叉树的一些知识,这一篇,对哈夫曼树和哈夫曼编码来做一个了解学习。 首先,我们先看一个经典的问题, 等级 优秀 良好 中等 及...

2020-04-30 23:08:28 57 0

原创 数据结构与算法--线索化二叉树

数据结构与算法--线索化二叉树前言1. 线索化二叉树初探2. 线索化二叉树实现 前言   前一篇简单的对二叉树进行初探,简单的了解了一下二叉树的一些概念,和二叉树的 顺序存储 和 链式存储 以及二叉树的一些简单操作,和二叉树的几种遍历方式。这一篇,我们在对二叉树进行了解,假如这个二叉树有很多的叶子...

2020-04-29 17:43:47 17 0

原创 iOS -- 经典面试题

iOS -- 经典面试题1. `Runtime` 是什么?2. 方法的本质是什么?SEL是什么?IMP是什么?两者之间的关系是什么?3. 能否向编译后的得到的类中增加实例变量?能否向运行时创建的类添加实例变量?4. isKindOfClass 和 isMemberOfClass 的区别5. [se...

2020-04-27 18:11:56 48 0

原创 数据结构与算法--二叉树的顺序存储&链式存储

数据结构与算法--二叉树的顺序存储&链式存储1. 树的相关概念2. 二叉树的顺序存储2.1 顺序二叉树的基本操作2.2 二叉树的遍历3. 二叉树的链式存储3.1 链式二叉树的基本操作3.2 链式二叉树的遍历 1. 树的相关概念 根节点(Root):树的顶部节点 子节点(Child):离开根...

2020-04-27 11:35:13 34 0

原创 数据结构与算法 -- 字符串匹配 KMP算法

数据结构与算法 -- 字符串匹配 KMP算法字符串匹配KMP算法 原理next 数组的推导KMP 算法代码实现KMP 算法优化KMP 算法优化实现 字符串匹配 题目: 给一个仅包含小写字母的字符串主串 S = abcacabdc,模式串 T = abd,请查找出模式串在主中第一次出现的位置; ...

2020-04-26 15:32:42 37 0

原创 数据结构与算法--字符匹配 & 字符去重

数据结构与算法--字符匹配 & 字符去重1. 去除重复字母2. 字符串匹配2.1  BF算法-爆发匹配算法2.2  RK算法 1. 去除重复字母 题目 给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的...

2020-04-24 13:23:00 45 0

原创 数据结构与算法--几个算法题目

数据结构与算法--几个常见算法题目1. 括号匹配检验2. 十进制转8进制3. 杨辉三角4.爬楼梯问题5. 每日温度问题6. 字符串编码问题 1. 括号匹配检验 题目:   假设表达式中允许包含两种括号:圆括号与方括号,其嵌套顺序随意,即([]())或者[([][])]都是正确的。而这[(]或者((...

2020-04-22 19:43:16 56 0

原创 数据结构与算法之如何基于顺序存储和链式存储设计一个队列

数据结构与算法之如何基于顺序存储和链式存储设计一个队列前言1.  队列的结构2.  顺序存储队列的设计2.1  顺序存储队列的设计2.2  顺序存储队列的基本操作3.  链式存储队列的设计3.1  链式存储队列的设计3.2  链式存储队列的基本操作 前言   上一篇,我们学习了栈的结构,以及基于...

2020-04-14 21:34:00 28 0

原创 iOS 类拓展分析、load_iamges分析、initalize分析

iOS 类拓展分析、load_iamges分析、initalize分析前言1.  类拓展分析2.  关联对象原理3.   load_images 分析4.   initalize 分析总结 前言   通过之前几篇对read_iamges的分析,我们知道了程序在启动运行时的流程,知道了什么是 懒加载...

2020-04-12 19:12:35 20 0

原创 数据结构与算法之如何基于顺序存储/链式存储不同角度设计一个栈

数据结构与算法之如何基于顺序存储/链式存储不同角度设计一个栈前言1. 栈的结构2. 顺序存储的栈2.1  顺序存储栈的设计2.2  顺序存储栈的操作3. 链式存储的栈3.1  链式存储栈的设计3.2  链式存储栈的操作4.栈和递归递归过程和递归工作栈 前言 前面几篇,我们学习了关于线性表的顺序存储...

2020-04-12 00:40:14 20 0

原创 iOS 应用程序加载

iOS 应用程序加载1. APP 加载分析1.1 动静态库1.2 加载过程2.`_dyld_start` 分析2.1 `reloadAllImages` 分析2.2 `initializeMainExecutable` 运行所有初始化程序总结 1. APP 加载分析 1.1 动静态库 ...

2020-04-11 19:45:34 32 0

原创 iOS 方法动态决议和消息转发机制

iOS 方法动态决议和消息转发机制1. 动态方法决议1.1 实例方法动态解析 _class_resolveInstanceMethod1.2 _class_resolveClassMethod小结2. 消息转发2.1 快速转发流程2.2 慢速转发流程总结 通过上...

2020-04-11 19:44:38 37 0

原创 iOS OC 方法查找流程

iOS OC 方法查找流程前言1. `_class_lookupMethodAndLoadCache3`方法查找流程2. 面试题 前言 上一篇关于方法的本质的探索中,我们知道了方法的底层是调用objc_msgSend发送消息,并对objc_msgSend的底层汇编进行了分析。当用汇编快速查找,未查...

2020-04-11 19:43:38 66 0

原创 iOS OC 方法的本质

iOS OC 方法的本质前言:1. 方法本质初探2. `objc_msgSend`汇编分析 前言: 前面探究了方法在类中的缓存,那么方法的本质是什么呢?方法调用在底层做了什么呢?今天我们来探索一下: 1. 方法本质初探 看一下一段代码: 先定义一个LGPerson类,然后定义sayNB对象方法,然...

2020-04-11 19:42:39 22 0

原创 iOS OC类原理二

iOS OC类原理二前言:1. `cache_t cache LLDB` 简单分析2.`cache_t cache` 流程源码分析`cache_fill_nolock`详细流程: 前言: 上一篇探索了属性 成员变量 方法在类中是如何存储的,即存储在class_ro_t *ro中,上一篇中提到为什么...

2020-04-11 19:40:57 13 0

原创 iOS 类的加载分析

iOS 类的加载分析前言1. objc_init分析1.1  environ_init() 环境变量1.2   tls_init()1.3   static_init()1.4   lock_init()1.5   exception_init()1.5   _dyld_objc_notify_r...

2020-04-11 19:36:41 32 0

原创 iOS 分类的加载

iOS 分类的加载前言1.  Runtime 面试题2.  类和非懒加载类的加载2.1  类和非懒加载类分析2.2  非懒加载类的加载2.3  懒加载类的加载3.  分类 Category 的加载3.1 clang 初探 分类 Category 的结构3.2 类 与 分类 Category 的搭配...

2020-04-11 19:32:09 36 0

原创 数据结构与算法之线性表算法练习

数据结构与算法之线性表算法练习前言题目一题目二题目三题目四题目五题目六题目七 前言 前面了解学习了线性表的单向链表和单线循环链表和双向链表的一些知识,本篇搞几个算法题实战一下。首先,做下面准备代码: #define OK 1 #define ERROR 0 #define TRUE 1 #de...

2020-04-10 19:59:40 21 0

原创 iOS OC 类原理一

iOS OC 类原理一1. `类`和`元类`的创建时机1.1 打印 `类`和`元类`的指针1.2 `command + B`生成可执行文件,然后使用 `MachoView` 打开程序二进制可执行文件查看2. 指针偏移2.1 普通指针 值拷贝2.2 指针拷贝2.3 指针偏移3. 类的结构3.1 类...

2020-04-07 15:02:23 37 0

原创 iOS OC 对象原理探索三

iOS OC 对象原理探索三前言:1. `isa`指针结构2. `isa`的初始化3. `isa`关联对象和类4. `isa`的走位5. 对象的本质6. `union`联合体补充1. 什么是联合体2.联合体的好处 前言: 前面分析了对象创建时alloc是怎么申请内存空间,通过研究Class的第一个...

2020-04-07 15:01:08 40 0

原创 iOS OC 对象原理探索二

iOS OC 对象原理探索二内存对齐原则1. 数据成员对齐规则:2. 结构体作为成员:3. 收尾工作:成员变量内存探究1.代码分析2.calloc源码分析Xcode 常用 LLDB 指令 上一篇提到alloc开辟内存是8字节对齐,用空间换取查找时间,那么像int、char这样非8字节的变量,在内...

2020-04-07 14:59:48 20 0

原创 iOS OC 对象原理探索一

iOS OC 对象原理探索一alloc源码探索思路探索方法alloc源码分析init函数源码分析new方法源码 alloc源码探索思路 iOS中 alloc是怎么创建对象的?init做了什么? 下面研究探索一下alloc底层实现 探索方法 方法一: 直接代码下断点 :通过control + in ...

2020-04-07 14:53:57 24 0

原创 数据结构与算法之线性表单向循环链表

数据结构与算法之线性表单向循环链表1.  单向循环链表概念2. 单向循环链表的操作2.1. 单向循环链表的创建2.2. 单向循环链表的遍历2.3. 单向循环链表的插入2.4. 单向循环链表的删除2.5. 单向循环链表的简单查询 在上一篇《数据结构与算法之基础篇》中,了解了算法和数据结构的一些概...

2020-04-05 18:53:37 41 0

原创 数据结构与算法之基础篇

数据结构与算法之基础篇1.  相关概念2.  时间复杂度和空间复杂度3. 线性表3.1  线性表顺序存储3.2  线性表链式存储(单链表)   对于很对人而言,“算法”和“数据结构”给人的第一印象就是很难懂,对于算法小白的我来说,更是一脸问号,但是作为一个优秀的开发者,不会数据结构和算法,还算是...

2020-04-05 18:51:09 43 0

原创 数据结构与算法--双向链表和双向循环链表

双向链表和双向循环链表1. **双向链表**1.1 概念1.2 代码示例2. **双向循环链表**导出与导入导出导入 1. 双向链表 1.1 概念 双向链表顾名思义,就是链表由单向的链变成了双向链。 使用这种数据结构,可以不再拘束于单链表的单向创建于遍历等操作,大大减少了在使用中存在的问题。 ...

2020-04-05 16:34:10 71 0

提示
确定要删除当前文章?
取消 删除