首页
学习
活动
专区
工具
TVP
发布

欧阳大哥的轮子

原创技术文章分享
专栏成员
80
文章
119056
阅读量
27
订阅数
动态规划的数学本质以及通用解法
很多算法或者面试题中都会涉及到:动态规划 的问题。 动态规划从数学的角度来看,就是存在一个有
欧阳大哥2013
2022-01-20
5500
iOS疑难Crash的寄存器赋值追踪排查技术
我们会借助一些崩溃日志收集库来定位和排查线上的崩溃信息,但是有些崩溃堆栈所提供的信息有限又不是必现崩溃,很难直观排查出问题的所在。这里我给大家分享一个采用寄存器赋值追踪的技术来排查和分析崩溃日志的技巧。话不多说先看案例:
欧阳大哥2013
2021-04-01
3.2K3
iOS文本尺寸自适应异步计算实现
目前市面上的非UI线程文本算高方法或多或少都有一些问题。本文通过逆向和分析UILabel的sizeThatFits方法实现来得到一个最佳的文本算高的精简方法。方法可以运行在任意线程,因此可以有效的应用在那些异步算高或者要求尺寸进行提前计算的场景中。
欧阳大哥2013
2020-07-24
1.5K0
静态拦截iOS对象方法调用的简易实现
最近出现了几篇关于二进制重排启动优化的文章。所有方案中都需要事先统计所有的函数调用情况,并根据函数调用的频次来进行代码的重排。
欧阳大哥2013
2020-01-15
1.8K0
一种查看Block中引用的所有外部对象的实现方法
在我的前一篇文章:iOS调试Block引用对象无法被释放的一个小技巧 中有介绍一种显示某个block对象的实现函数的方法,以及从Debug Memory Graph中查看某个对象被哪个block所引用的方法,其实有更加简单的两个方法来查看持有某个对象的block的信息:
欧阳大哥2013
2019-09-18
1.8K0
iOS线程生命周期的监控
iOS系统通过Core Services层的Foundation框架提供基于OC语言的NSThread和NSOperationQueue类来实现对线程和线程池的管理和使用。同时也提供了一套基于C语言的GCD线程池函数库来支持多线程的处理应用。这些高级的线程类或者函数的内部实现大部分最终都会调用POSIX标准中的pthread线程库中的pthread_xxx系列函数(#include <pthread.h>)来完成线程的创建、运行、暂停、恢复、销毁、结束等操作。用户态下的线程创建通过系统调用到达内核态的BSD层并创建bsdthread对象,而BSD层则调用Mach层的ksthread对象来完成最终线程的创建和调度的。
欧阳大哥2013
2019-05-14
1.6K0
iOS标准库中常用数据结构和算法之cache
缓存是以键值对的形式进行数据的存储和检索,内部采用哈希表实现。当系统出现内存压力时则会释放掉部分缓存的键值对。 iOS系统提供了一套基于OC语言的高级缓存库NSCache,同时也提供一套基于C语言实现的缓存库libcache.dylib,本文主要介绍基于C语言的缓存库的各种API函数。
欧阳大哥2013
2019-05-14
5020
iOS标准库中常用数据结构和算法之链表
功能:对双向链表进行添加、删除功能。 头文件:#include <search.h> 平台:POSIX 函数签名:
欧阳大哥2013
2019-05-07
6380
iOS标准库中常用数据结构和算法之排序
排序是指将乱序数组变为有序排列的处理。iOS提供了快速排序、堆排序、归并排序、并行排序、基数排序一共5种排序函数。具体每种排序的概念介绍请大家参考相关的文档这里就不再赘述了。下面的表格将会从时间复杂度、稳定性、是否需要分配额外内存、是否对有序数组进行优化、 应用范围、平台支持6个维度来考察各种排序函数:
欧阳大哥2013
2019-05-07
8290
iOS标准库中常用数据结构和算法之查找
我本来想说的是Unix系统C标准库所提供的一些算法和数据结构API,但毕竟带有iOS标题可能更加吸引眼球一些。其实我说的也没有错,因为iOS毕竟是从Unix衍生出来的系统,所以说标题所述也算是正确的。下面将要介绍的几类API,有些可以在POSIX平台中支持,有些则只能在FreeBSD中支持,有些则只有在iOS系统中单独支持。
欧阳大哥2013
2019-05-07
5040
iOS标准库中常用数据结构和算法之哈希表
系统提供一个全局的key为字符串的哈希表。并提供哈希表的创建、元素添加、元素查找、哈希表的销毁的能力。存储在哈希表中的元素是一个如下的标准结构:
欧阳大哥2013
2019-05-06
8560
iOS标准库中常用数据结构和算法之二叉排序树
功能:二叉排序树的标准实现是一颗平衡二叉树。二叉排序树主要用来解决高效插入和高效检索以及进行排序的问题。系统分别提供了二叉排序树节点的查找、添加、删除、遍历4个功能。
欧阳大哥2013
2019-05-06
6350
iOS标准库中常用数据结构和算法之KV数据库
对于结构化数据的存储一般我们使用关系型数据库,而对于基于key-value类型的数据存储则不适合用关系型数据库。因此iOS系统也内置了一套基于key-value存储的文件数据库:ndbm。
欧阳大哥2013
2019-05-06
7900
深入iOS系统底层之程序中的汇编代码
合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。--(老子·道德经 )
欧阳大哥2013
2019-03-06
1.6K0
深入iOS系统底层之映像文件操作API介绍
iOS系统生成的可执行程序或者动态库文件的存储布局格式被称之为mach-o格式。文件中存放着程序的代码和数据,而程序运行时系统会为其建立一个进程,以及分配虚拟内存空间。同时会把程序文件中的内容加载到虚拟内存地址空间中去,这种加载的方法一般采用内存映射文件的技术来实现。所谓的映像可以理解为将一个程序文件的内容加载到进程虚拟内存中的内容,也就是说进程的映像就是程序磁盘文件在内存中的一个副本。 一般来说一个进程中映像的内容和内存布局结构会和程序文件的内容以及存储布局结构一致,映像的首地址是一个struct mach_header的结构体指针。映像中内容的排列布局和程序文件都是以段(Segment)为单位进行排列的。但是有一些情况映像的内存布局和内容可能会和程序文件的内存布局和内容不一致:
欧阳大哥2013
2019-03-06
1.5K0
深入iOS系统底层之静态库介绍
程序员编写的是源代码,而计算机运行的则是CPU能识别的机器指令,因此必须要有一系列工具或程序来将源代码转化为机器指令,这个转化的过程需要经历编译和链接两个主要阶段。所谓编译就是将源代码文件转化为中间的目标文件(Object file)。目标文件的后缀一般为.o。iOS系统的目标文件也是一种mach-o格式的文件,mach-o文件的头部结构体:struct mach_header中的filetype成员字段用来描述当前文件的类型,目标文件所对应的类型是MH_OBJECT。目标文件中的布局结构和内容和可执行文件中的布局结构和内容非常相似,编译后形成的目标文件中的代码段(__TEXT Segment)中的节(__text Section) 中的内容存放的是已经被编译为机器指令的二进制代码了。下面就是一个目标文件的布局结构:
欧阳大哥2013
2019-03-04
1.3K0
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档