自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 iOS高级工程师该掌握哪些知识?

作为一个6年的iOS开发者,经历了从UI到底层的探索,也经历了很多大公司的面试。不自觉的要去归纳大厂对iOS高级工程师有哪些能力上的要求。1.数据结构与算法其实基本没有逃脱严蔚敏那本《数据结构与算法》的范畴。我刚毕业时有次被阿里的面试官问到kmp算法,我心想这是啥高级算法,当场回答不会。后来去复习的时候,才发现其实这其实是在自己大学课本里面的算法。大学里面没有去搭理这个算法,以至于错失一次毕业就进大厂的机会。具体来说,我按面试频率高低来排个序:* 排序算法(快排、希尔、归并、堆排)* 二叉树 (

2021-09-13 16:41:25 334

原创 反汇编iOS App为可编译xcode工程

我研究了反编译的原理,发现好多反编译工具只会帮忙翻译出代码段的汇编语言,没有办法直接反编译成可以直接编译执行的xcode工程(hopper disassmbler 和ida反汇编的无法编译),因为我利用工具otool -tV machOFile,先反编译出代码段,然后对照clang -S xxx.m 编译出的汇编语言,写了一个工具,将数据段的变量也反汇编到代码,生成了一个oc xcode工程对应的 汇编xcode工程,验证了执行结果是一样的。但是,更为复杂的工程,需要更为精细地了解maco-O dyld-i

2021-08-31 17:56:28 404

原创 fishHook实现原理

fishhook原理像NSLog这种系统提供的函数是在动态库里面的。在动态库的实现代码被加载之前,"NSLOG"这个符号会对应到一个叫做lazy_symbol_Pointers(__la_symbol_ptr)的表里面的某一项,这一次项的值将会存放指向NSLOG函数的实现地址。这个地址在调用到NSLOG函数的时候才会被填入。MachO文件分为三部分:header段(CPU架构、文件大小等简要信息)load commands指名动态库等资源如何被加载data  (存放代码\符号表\字符表\

2021-07-14 16:45:10 187

原创 记一次越狱砸壳iOSApp的艰辛过程

越狱砸壳目的:学习别人家的优秀app越狱的过程:1.先用un越狱ios13.5.1 各种折腾,失败;找了一台iOS 12.5.1爱思越狱,各种折腾,然后失败;某鱼花200买了台iOS10 iphone 5s,越狱失败(Cydia闪退且无法抹除数据);再买一台iphoen 6p iOS 10.2.1 (¥368),爱思越狱终于成功。2.显示用dumpdecrypted砸了主mach-o文件,但是发现还有动态库frameWork 文件也需要砸壳参考这篇文章iOS逆向(11)-砸壳原理剖析,主动加

2021-07-09 10:51:30 975

原创 自旋锁、互斥锁、信号量、读写锁、递归锁、乐观锁、悲观锁的底层实现

自旋锁、互斥锁、信号量、读写锁、递归锁、乐观锁、悲观锁(一)我们知道 每个操作系统都有这样一些锁,各个锁之间好像可以互相转换,但概念上又总是模棱两可。下面从Linux系统对这些锁的实现方式下手,谈一下这些锁之间的联系。原子性:一条汇编指令的执行过程中是原子性的,cpu不可能将一条汇编语言执行一半,然后去执行别的汇编指令。这称为原子性,及,一条汇编语言就是cpu最小的执行时间单位,不可以分割,执行的时候不可暂停。因此,实现单一变量的原子读写操作是容易的,只要保证读写操作只对应一条汇编语言即可。但是,很多

2021-06-22 14:49:29 757 1

原创 C语言逆向分析

下面有这样一个简单的//file 1.c#include <stdio.h>int add(int a,int b){return a+b;}int main(){int result = add(1,2);printf("%d\n",result);return 0;}我们使用 gcc -S 1.c ,可以将 上面这段代码转换为同目录下的 1.s 汇编文件,其内容如下: .file "1.c" .text .globl add .type add, @func

2021-05-06 11:28:26 480

原创 GPUImage中的生产流水线

我们知道,GPUImage 是一个著名的图片滤镜处理工具,里面提供了一百多种滤镜,需要什么滤镜,就把需要的滤镜添加到targets 中去,实现任意滤镜直接的组合。那么这种滤镜任意的组合是怎么实现的呢?我们可以把GPUImage 看做是一个照片处理工厂,工厂里面有一个处理图像的流水线,流水线上有数台机器,每一台机器其实是一个叫做帧缓存(FrameBuffer)的盒子,每一个盒子就是一个图像处理单元。每个单元处理完图片之后,就将图片交给下一个处理单元(FrameBuffer)去处理。如图,所示,每一个Fr

2020-07-02 17:20:55 183

原创 一道关于 GCD\RunLoop的面试题

一道关于 GCD\RunLoop的面试题下面这道题打印出来的顺序是什么?- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ; dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"A"); [self performSelec

2020-06-02 22:13:35 210

原创 iOS 中 OpenGL ES的两种创建方式GLKit和CAEAGLLayer的区别

OpenGL ES是一套多功能开放标准的用于嵌入系统的C-based的图形库,用于2D和3D数据的可视化。OpenGL被设计用来转换一组图形调用功能到底层图形硬件(GPU),由GPU执行图形命令,用来实现复杂的图形操作和运算,从而能够高性能、高帧率利用GPU提供的2D和3D绘制能力。OpenGL ES规范本身不定义绘制表面和绘制窗口,因此ios为了使用它必须提供和创建一个OpenGLES 的呈...

2019-12-06 22:26:15 1232

原创 Androoid 视频、图像采集时相机预览时的效率改善问题

曾经试图在GPUImage这个工程基础之上来开发一个项目,由于这个开源工程很知名,start非常多,就毫不犹豫地将这个工程拿来用了。谁知功能完成进入测试阶段之后,才暴露出各种问题和坑点。 第一个坑点是当一个渲染管道叠加了两个以上的滤镜的时候,稍微低端一点的手机已经在相机预览的时候已经卡得不行了。第二个坑点是,录制的过程中会概率性的包EGL_BAG_SURFACE错误,然后预览...

2017-12-29 23:11:18 648

原创 Android 短视频采集之视频断点拍摄、回删功能的实现方法总结

本文介绍了实现类似美拍、秒拍的段短视频断点录制功能的两种方案,并给出了其优劣比较。

2017-12-27 11:59:25 2622

原创 Android 音视频编辑经验总结及开源工程分享

提到音视频编辑方案,大家最容易搜到的可能是ffmpeg这个牛X的开源方案。ffmpeg 是基于C语言的著名视频编解码方案。国内有也有不少的公司将ffmpeg 移植到iOS和android 平台进行视频处理,例如,美拍、秒拍等。但是其实iOS和Android自带的多媒体框架一点也不比ffmpeg弱。下面就中常遇到的问题谈一谈在安卓视频编辑上面的经验分享。一.做Android视频编辑...

2017-11-03 16:38:54 7283 1

原创 基于android MediaCodec 的音视频播放器原理

大多数情况下,安卓原生的播放器已经能满足需求。但是,当你需要倍速、慢速播放,播放时预览滤镜效果的时候,原生播放器就难以满足需求了。Andriod 的MedaCodec框架,基于StageFright开源编解码库,支持原生硬解,不必添加so文件。首先通过MediaExtractor将视频文件中的视频轨数据分别抽取出来,视频轨道数据送人MediaCodec的视频解码器,音频数据送入音频解码器,

2017-10-30 13:21:00 1396

HEVC编码原理讲义.zip

HEVC编码规范的讲义,ppt+pdf.

2021-09-09

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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