VMAdress - WBBlades 1234567891011121314151617181920212223242526+ (unsigned long long)getOffsetFromVmAddress:(unsigned long long )address fileData:(NSData *)fileData{ mach_header_64 mhHeader; [fileData getB 2022-01-13 底层实现
nlclslist - WBBlades 以 WBBlades 为源码解读二进制可执行文件 Mach-O 源码下面是 WBBlades 对 nlclslist 部分解析的源代码。 1234567891011121314151617181920212223242526272829303132333435363738+ (void)readNLClsList:(section_64)nlclsList set:(NSMutableSet *) 2022-01-13 底层实现 nlclslist WBBlades
2021,奉上 写之前去翻了一下 2020 ,2019,2018。 回顾自己的年度总结,还感觉挺有意思的。说说 21 年吧。 今年是换工作之后“常规”懈怠的第一年,能干且干。不过主动接了个有一点技术深度的包大小的任务,学习了底层的编译和二进制文件相关的知识。这是这一年自己遇到的最大的难题。 高级开发语言 → 编译 → 汇编 → 二进制文件 → 操作系统 这里作为一个年度任务就是继续深入了解,这条链路上的每一部分。 2022-01-11 年度总结
小数点的截取 最简单的截取小数位的方法: 123456/// 保留_位小数func afterDecimalNum(_ count: Int) -> String { guard count >= 0 else { return "" } let format = "%.\(count)f" return Str 2021-07-13 Swift 小数点 NumberFormatter
Swift-闭包 尾随闭包 官方定义:如果需要将闭包表达式作为函数的最终参数传递给函数,并且闭包表达式很长,则可以将其写为尾随闭包。写法:尾随闭包写在函数调用的圆括号之后,即使它是函数的最终参数。如果尾随闭包作为函数的最终参数,并且定义了相应的参数标签,在使用尾随闭包语法时,不能将闭包的参数标签写为函数调用的一部分。 实际需求中需要的将尾随闭包变成可选,也就是根据参数来判断是否需要执行。虽然没有用 @escapi 2020-06-03 Swift 闭包
WKWebView默认缓存策略与HTTP缓存协议 原文地址:WKWebView默认缓存策略与HTTP缓存协议可能是最被误用的 HTTP 响应头之一 Cache-Control: must-revalidate https://juejin.im/post/5df75e3a6fb9a016266459da 今天同事反应H5更新了资源,但iOS App里面仍然使用的是旧的缓存资源。为什么会这样呢?要弄清楚这个问题,首先得弄清楚WKWebView的缓存 2020-05-26 网络 WKWebView HTTP
‘反向对’问题解决思路的一般原则 此文是对 LeetCode-493. 翻转对 国际站上高票回答中,一遍总结回答的翻译原地址在此 ‘反向对’问题解决思路的一般原则看起来有一系列的解题思路( (BST-based, BIT-based, Merge-sort-based))。在这里,我想集中讨论这些解决方案背后的一般原则,以及这些解决方案可能应用于一些类似的问题。 基本思想很简单:分解数组并解决子问题。 数组的分解自然使我们想起子数 2020-05-10 算法 排序
3. 无重复字符的最长子串位运算 字符串123456789101112131415# 时间复杂度是 O(N*N),每次拿到新的字符都要和之前的做比较class Solution { func lengthOfLongestSubstring(_ s: String) -> Int { var tmp = "" var count = 0 2020-05-03 算法 队列
位运算 位运算符1234567891011<< //左移>> //右移| //或& //与~ //取反^ //异或 实战使用 123456789101112131415161718// 判断奇偶x%2 == 1 -> x&1 == 1x%2 == 0 -> x&1 == 0x >> 1 -> x/2// 清零最低位 2020-05-01 算法 二进制 位运算
十大经典排序算法(Swift) 排序 比较类排序通过比较来决定元素间的相对次序,由于其时间复杂度不能突破 O(logn),(在数学上证明了),因此也称为非线性时间比较类排序 非比较类排序不通过比较来决定元素间的相对次序,他可以突破基于比较排序的时间下界,以线性时间运行,一次也称为线性时间非比较类排序 初级排序 O(n*n) 选择排序每次找最小值,然后放到待排序的起始位置 插入排序从前到后逐步构建有序序列,对于未排序的数据 2020-05-01 算法 排序