ARTS 第六周
Algorithm
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
示例:
1
2
3
4
5
6
7
8 输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
思路
可看作将一个栈中的数据依次弹出存入另一栈中,但需要考虑溢出的情况,即入栈后的数字若超过Int32
的范围,应直接返回零。
解答
1 | func reverse(_ x: Int) -> Int { |
Review
NASA’s 10 rules for developing safety-critical code - SD Times
本文介绍了 NASA 经过数十年软件工作所积累下来的软件开发领域的编码准则,堪称经典。再看目前项目中累计多年下来的代码觉得有很多由于规范上的、标准上的缺失,导致可读性、可维护性和可拓展性较差。
Tip
记录一下如何获取应用的内存阀值。iOS 使用 Jetsam 机制来控制系统的内存使用,当某个进程超过内存阀值就会被 Jetsam 强杀,当然从系统内存使用角度来看,你的 APP 可能并未到达阀值也会被杀,为了给其他活跃 APP 腾出空间。
使用 JetsamEvent 日志计算内存限制值,该日志会存于手机的设置-隐私-分析与改进-分析数据下,以 JetsamEvent 开头。日志中都是系统内核强杀 APP 留下的内存信息,使用顶部的pageSize
字段和rpages
字段,即rpages * pageSize
即可得到 OOM 的阀值。
Share
下周可能开始做数据上报组件的开发工作,最近也在了解相关的内容。看到这篇文章对 OOM 的机制和底层原理介绍的比较详细,与上周分享的那篇针对 OOM 的文章结合来看,可以对系统的内存分配机制、监控 OOM 、记录数据、内存优化等都会有一定的帮助。