Category Archives: Hack Space

才不是什么黑科技呢,哼哒~

一段时间前就看见某公司的音乐App宣传自己的工程师用黑科技在iOS的锁屏界面添加了一些小功能,昨天晚上又有人提到。

其实这个真不是什么黑科技,是iOS的Public API啊,只不过Apple的文档里对这个API的描述略少,实际中也很少有App使用,于是就被说成黑科技了,说成黑科技有什么好处呢,好处自然多了,特别是对于商业公司。

于是这里就给出一个如何正确使用的例子吧,这个东西才不是什么黑科技呢,哼哒~

Continue reading 才不是什么黑科技呢,哼哒~

自己实现一个malloc

昨天阿里校招有这样一道题:

常常会有频繁申请、释放内存的需求,比如在发送网络报文时,每次都要分配内存以存储报文,等报文发送完成后又需要删除报文。
为了避免频繁的new/delete对系统带来的开销,需要实现一个通用的FreeList机制。使用者总是从free list中分配内存,如果存在没有使用的内存块就直接摘出来使用,如果没有的话再从系统中分配。使用完毕后并不去直接delete该内存块,而是交给FreeList保管。
要求:
1. 实现一个对固定大小内存块进行管理的通用FreeList类,给出定义和实现。要求不能使用STL中的容器类。定义类的接口和实现时注意通用性、健壮性和可测试性。
2. 如果该类的对象可能会被多个thread同时访问,请描述如何怎样保证线程安全。有没有办法在保证线程安全的同时尽可能增大并发度?如果有也请描述你的思路。

坑了5、6个小时终于写好了第一问,不过似乎写出来和要求的不太一样。。。(但是是绝对可用的)

Continue reading 自己实现一个malloc

iOSOpenDev的补丁~

之前写过为iOSOpenDev增加指定设备端口功能 (English ver. is here),今天在看LPI的时候,书中提到了Linux的内核升级,其中就用了patch来给内核文件打补丁。

这样的方式比起我当时给出的“自己对应目录层级”覆盖文件好多了,于是就当是学习diff和patch的使用方法,做了一个iOSOpenDev的补丁,不过我是按照1.6-2版本的iOSOpenDev做的,其他版本的没有测试。

文件在这: iOSOpenDev.patch

Usage: sudo gzip -cd iOSOpenDev.patch.gz | patch -p0

Continue reading iOSOpenDev的补丁~