自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(396)
  • 资源 (1)
  • 收藏
  • 关注

原创 iOS 崩溃防护

崩溃防护unrecognized selector crash当消息定义了, 但是没有实现, 也就是SEL没有对应的imp的时候, 消息发送就会报错.消息流程需要了解消息转发流程, 大致说一下:(BOOL)resolveInstanceMethod:(SEL)sel可以做消息的添加操作(id)forwardingTargetForSelector:(SEL)aSelector可以指定消息的接受者(IMP)instanceMethodForSelector:(SEL)aSelect

2021-09-07 19:38:18 434

原创 图像显示原理

一,图像显示原理从显示器屏幕刷新原理说起手机显示屏一般是液晶或者OLED,无论什么屏幕,现代显示屏都是由一个一个很小的像素点构成,比如液晶显示屏是由红绿蓝三色液晶组成的像素点构成,液晶本身不发光,需要加个LED灯做背光。OLED是目前比较先进的柔性显示屏,有机发光二极管,顾名思义,自己本身就是可以发光的二极管,也是红绿蓝三色组成。只要控制三原色像素点的明暗就可以控制屏幕显示不同的颜色。以下是显示器三原色像素常见的排列显示器是通过逐行扫描,一行行扫描完,直到扫描完整个屏幕成后显示器就呈现一帧画面,

2021-08-11 19:29:25 4314

原创 KVO的用法、底层实现原理

KVO的用法、底层实现原理Apple 使用了 isa 混写(isa-swizzling)来实现 KVO 。当观察对象A时,KVO机制动态创建一个新的名为: NSKVONotifying_A的新类,该类继承自对象A的本类,且KVO为NSKVONotifying_A重写观察属性的setter 方法,setter 方法会负责在调用原 setter 方法之前和之后,通知所有观察对象属性值的更改情况。NSKVONotifying_A类剖析:在这个过程,被观察对象的 isa 指针从指向原来的A类,被KVO机制修改为

2021-07-26 17:49:29 194

转载 iOS 开发技术栈与进阶

最近有一些开发朋友问我应该怎样提升自己的能力,回想起来做了这么久 iOS 开发,我也有过那种“让我做一个功能实现个需求我会做,但接下来怎样提高我不知道。”的时期,这里尝试列一下 iOS 开发的相关技术,再说说在学习进阶上我的一些想法。iOS 技术栈这里按我的理解给 iOS 相关技术分个类,以工程实现的角度,分成了基础、需求、效率、质量四个类别。基础指程序开发和 iOS 开发的基础知识和技能,需求就...

2018-03-26 11:04:25 503

转载 iOS 模块详解—「Runtime面试、工作」看我就

引导对于从事 iOS 开发人员来说,所有的人都会答出「 Runtime 是运行时 」,什么情况下用 Runtime ?,大部分人能说出「 给分类动态添加属性 || 交换方法 」,再问一句「 Runtime 消息机制的调用流程 || 能体现 Runtime 强大之处的应用场景 」,到这,能知道答案的寥寥无几,很少有人会说到 “黑魔法” 这三个字。Runtime 是 iOS 编程中比较难的模块,想要深...

2018-03-08 16:23:20 581

转载 一篇文章拿下《Effective Objective C 2 0编写高质量iOS与OS X代码的52个有效方法》

最近在重温这本OC经典之作《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》,这篇文章算是重温之后的产物吧,读完这篇文章你将快速读完这本书,由于个人能力有限,难免有一些遗漏或者错误,请各位看官不吝赐教!谢谢!同时如果有任何问题也可以在下方留言,欢迎一起交流进步!另外由于篇幅原因,书中一些基础知识的介绍文中就省略掉了。上面就是这本书的目录,可

2018-01-15 10:14:03 389

转载 京东iOS客户端组件管理实践

先大概交代下背景:京东的iOS客户端从2011年2月发布至今已历经6年+的时间,研发团队也从最终的几个人变成了N多人,业务的复杂度早已不可想象。我个人认为一个超过了10人的团队做组件化是合适的,也有必要。当然少于10个人也应该去思考一下应用框架该如何演变,组织的这件事。目标对于每家应用还得结合实际业务来考虑,毕竟技术最终也是为了业务而服务

2017-10-17 09:34:01 1993

原创 如何在gitLib 下创建私有 CocoaPods 仓库

1,概述   CocoaPods是iOS,Mac下优秀的第三方包管理工具,给我们项目管理带来了极大的方便。个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在CocoaPods中管理它们,那么通过gitLib创建私有仓库来管理代码就很必要。对于CocoaPods还不太熟悉的,建议参考一下唐巧的博客2,概念1.code repository

2017-07-26 18:50:15 3783

原创 iOS应用架构谈 组件化方案

简述前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路。我不认为这条组件化之路蘑菇街走对了。分享后我私聊了Limboy,Limboy似乎也明白了问题所在,我答应他我会把我的方案写成文章,于是这篇文章就出来了。另外,按道理说组件化方案也属于iOS应用架构谈的一部分,但是当初构思架构谈时,我没打算写组件化方案,因为我忘了还有这回

2017-06-07 14:40:15 303

转载 iOS应用架构谈

缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要开个博客专门来讲讲一些个人见解。其实对于iOS客户

2017-06-06 18:07:37 575

原创 吴军《智能时代》读书笔记

作者写这本书的时候时刻透露出自己对于人类文明的了解,和深深的人文情怀!在第一章里首先吴军从历史角度讲述了人类使用数据的实例,得出结论人类认识自然和科学实践的过程中总是伴随着数据的使用,获得和利用数据的水平反映出文明的水平。数据将成为下一次技术革命和社会变革的核心动力。第二章大数据和机器智能人工智能的算法从70年代就被发明,但是由于数据规模的局限性,机器表现的智能程度具有很大的局限性。当

2016-08-08 23:04:39 3108

转载 苹果在全世界的客服电话列表

苹果在全世界的客服电话列表

2014-02-07 18:08:50 5019

原创 毕业了,整理一下15年的职业生涯

一些经历后懂得的道理:1,跟对人很重要,同样做事情,跟马云,张一鸣一起干,比跟什么阿猫阿狗强太多。2,技术壁垒比商业模式的壁垒更有优势,科学技术是第一生产力毫无疑问是真理。3,一眼看透事物本质的人,比一辈子都看不透本质的人往往拥有不一样的人生,提高认知真的很重要,人的见识决定了人的高度。4,在互联网下半场的时代背景里,那些只研究好技术,跟对公司跟对人就能财富自由的故事可能越来越少,程序员想掌握好自己的职业生涯,可能要懂商业,懂管理,多沟通多开拓视野,多实践。5,怎样判断一个人是不是傻逼呢?看他遇见

2023-08-15 19:43:29 135

原创 代码规范化的七大原则

鄙人才疏学浅,见过最早的代码规范应该是上世纪七八十年代的C语音代码规范。再后来有了微软和linux,微软公开了自己的代码规范,而linux是世界上著名的开源软件项目。缩进是通过键盘上的 Tab 键实现的,缩进可以使程序更有层次感。如果属于某一个代码的内部代码就需要缩进。以上七条代码规范,是无数IT界的先辈总结出来的经验教训。我们搞IT的总讲颠覆颠覆,其实吧一些原则改遵守的还是要遵守,这些都是前人总结的智慧。代码规范化基本上有七大原则,体现在空行、空格、成对书写、缩进、对齐、代码行、注释七方面的书写规范上。

2022-10-18 21:08:10 753

原创 我就想让计算机识别一瓶可乐,并把他拿起来 (3)

五年前我想通过计算机识别一瓶可乐并把它拿起来,并从工程角度来分析了可行性,一步步的去研究,找了很多资料和书籍,觉得自己的经验和学识都不够解决这些问题。于是我去自学了机器学习和深度学习课程,接触到了这个领域后,我的视野拓宽了,还结识了一些资深大佬,大佬们给我指明了研究方向。作为现代计算机工程学的最大哲学就是,你不要重复造车轮,去找现成的方案,站在巨人的肩膀上解决问题。识别可乐就是个目标检测问题,可以用yolov,或者自己训练模型去识别图片也行,总之问题不大。可是把可乐拿起来,难度就大的多了,要做一个机器

2022-03-02 22:26:04 279

原创 元宇宙是什么?如何在元宇宙时代不被割韭菜?

当地时间10月28日,扎克伯格在公司的Oculus Connect 活动中宣布,Facebook 将正式更名为“Meta”,而“Meta”,正是“元宇宙”MetaVerse一词的前缀。扎克伯格同时发表演讲称,“元宇宙是下一个前沿,从现在开始,我们将以元宇宙为先,而不是Facebook优先”。之后各大企业纷纷祭出自己的元宇宙相关布局,相关的不相干的企业都开始向元宇宙这个概念靠拢,生怕晚了赶不上这波浪潮元宇宙到底是什么?至今呢,并没有一个公认的所有人都认同的一个定义,好像大家都对这个元宇宙有不同的理解,众说.

2021-12-14 22:02:27 946

原创 MMKV——基于 mmap 的高性能通用 key-value 组件

MMKV——基于 mmap 的高性能通用 key-value 组件https://github.com/tencent/mmkvMMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Windows 平台,一并开源。MMKV 源起在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的 crash,参考

2021-09-07 19:43:13 293 1

转载 2021-08-03

Tagged Pointer 技术定义Tagged pointer 是一项用于提高性能并减少内存使用的有趣技术。在 OS X 10.10 中,NSString 也开始使用了 tagged pointer 技术,今天我会在 Ken Ferry 的提议下,窥探其工作原理。概述Tagged pointer原理对象存储在内存中的时候是内存对齐的,因此他们的地址总是单个指针大小的倍数,在实际中通常是 16 的倍数。对象的指针通常是以一个完整的 64 位整型的结构进行存储,不过由于内存对齐的,指针中一些位总会为

2021-08-03 15:33:56 76

原创 iOS编程中isa指针详解

先从源码看下面是 id类的源码,#import<objc/objc.h>/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance of a class.struct objc_object { Class isa OBJC_ISA_AVAILABILITY;};/// A pointer to.

2021-07-26 14:39:27 584

原创 利用WireShark抓包iPhone手机4G网络数据

将iPhone 用数据线和mac 连接,获取iPhone的UDIDmac 安装wireshark 并打开运行 创建虚拟网卡 rvictl -s 3fd1c38039c36c0f97b8a3e250ecd86580 查看创建状态 ifconfig rvi0 开始抓包 sudo tcpdump -i rvi0 -n -vv 在wire...

2020-04-03 14:03:41 1147

原创 iOS开发视频库

视频播放 FFmpeg 一个处理多媒体数据的开源、免费的库,可以用来记录、转换数字音频、视频,并能将其转化为流. ffmpeg ffmpeg官网,FFmpeg在iOS上完美编译. vlc VLC media player. mpv 非常???????????? ???? Video player based on MPlayer/mplayer2. ijkplayer 非...

2020-02-29 11:51:55 780

转载 iOS逆向一步一步教你重签名ipa包

如果你想把一个ipa文件(别人发你的或者从第三方商店下载的…)安装到自己的iPhone上,你的手机如果没有越狱是无法正常安装的(排除企业证书分发),但是 我们可以通过为ipa重签名实现,原理是将我们自己的证书打进ipa。现在我们开始来进行重签名。????前提:要有自己的开发者账号。如果你没有开发者资格那么请看我的这篇文章使用AltDeploy或nullxImpactor(Cydia Impacto...

2020-02-02 11:22:57 2252 1

转载 iOS 多线程:『GCD』详尽总结

1. GCD 简介2. GCD 任务和队列3. GCD 的使用步骤4. GCD 的基本使用(六种组合不同区别,队列嵌套情况区别,相互关系形象理解)5. GCD 线程间的通信6. GCD 的其他方法(栅栏方法:dispatch_barrier_async、延时执行方法:dispatch_after、一次性代码(只执行一次):dispatch_once、快速迭代方法:dispatch_apply、队列...

2019-11-04 15:24:03 220

原创 iOS 多线程总结

1,从操作系统的角度看什么是线程,线程和进程的区别。对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要...

2019-10-28 14:25:05 167

转载 .Charles抓取https接口数据

https://blog.csdn.net/shyllin/article/details/80670659

2019-06-19 13:22:22 262

转载 10亿个数中找出最大的10000个数(top K问题)

先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这样处理就可...

2019-06-10 09:30:25 1172

原创 xcode打包优化级别设置

什么是Optimization Level下面是苹果的官方解释:Specifies the degree to which the generated code is optimized for speed and binary size.None[-O0]: Do not optimize. With this setting, the compiler's goal is to r...

2019-05-29 10:07:47 1421

转载 iOS 中几种常用的锁总结

多线程编程中,应该尽量避免资源在线程之间共享,以减少线程间的相互作用。 但是总是有多个线程相互干扰的情况(如多个线程访问一个资源)。在线程必须交互的情况下,就需要一些同步工具,来确保当它们交互的时候是安全的。锁是线程编程同步工具的基础。iOS开发中常用的锁有如下几种:@synchronized NSLock 对象锁 NSRecursiveLock 递归锁 NSConditionLoc...

2019-05-27 20:27:26 623

转载 iOS应用瘦身总结

1、LSUnusedResources去除冗余图片通过以下地址下载LSUnusedResources项目。运行项目,选择需要扫描的项目路径,找出项目当中的冗余图片资源。这里需要注意的是,在扫描前需要勾选Ignore similar name选项。2、ImageOptim图片无损压缩使用ImageOptim工具对图片进行无损压缩3、项目中较...

2019-05-25 06:44:35 238

转载 罗振宇的跨年演讲和知识付费到底哪里错了

最近看见很多人吐槽罗振宇和他的跨年演讲,朋友圈两级分化,一部分人挺罗,大部分人都觉得罗胖是个骗子开始喷。后来得知是由一篇头条文章引起的于是就去看了下这篇《罗振宇的骗局》 ,文章里面我比较认同的是最后一句话“求知这件事情,没有什么终南捷径可走。”             我们先不论对错,因为判断谁对谁错这件事要想客观就需要调查和分析,非黑即白的分析一件事情的对错是对成年人智商的一种侮...

2019-01-10 09:39:00 748

转载 堆——神奇的优先队列(下) 【经典】

接着上一Pa说。就是如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。 1 2 3 4 5 6 7 n=0; for(i=1;i&lt;=m;i+...

2018-12-27 11:27:36 171

转载 堆——神奇的优先队列(上) 【经典】

堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。        有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那这一特性究竟有什么用呢?        假如有14个数分别是99、5、36...

2018-12-27 10:56:37 150

原创 精读西瓜书(第九章-聚类)-聚类任务

在'无监督学习'(unsupervised learning)中, 训练样本的标记信息是未知的, 目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律, 为进一步的数据分析提供基础.“聚类”(clustering)算法是“无监督学习”算法中研究最多、应用最广的算法,它试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster)不同的簇分布代表着聚类算法...

2018-10-18 17:11:34 1401

转载 ijkplayer 的编译、打包 framework 和 https 支持

原文https://www.jianshu.com/p/9743a68c2939ijkplayer 是 bilibili 开源的一款优秀的播放器, 基于 FFmpeg, 支持 iOS/Android, 点播/直播, 以及多种编码. 官方并不直接提供 framework 框架包, 这样大家可以根据需要选择配置, 自己编译并打包. 但是也让很多第一次使用的小伙伴一脸懵逼, 并且默认配置只支持 ht...

2018-10-11 09:54:43 678

转载 2018 年将打响 AI 战争,7 条实战经验帮你战胜恐惧

你来或不来,人工智能的浪潮都已袭来。顺潮流者兴,逆潮流者只能被狠狠甩在后面。编者按:不管是对科技巨头还是对创业公司,人工智能可以说是移动互联网时代以来最大的一个机遇。但是,人工智能同时也是让大多数人感到非常困惑的一项新技术,对它的发展现状和未来都非常迷惑。为了消除人们对人工智能的迷惑,本文首先将简单介绍人工智能的一些发展现状,接着会重点罗列几个不同行业的不同企业顺应和利用人工智能潮流的7条...

2018-09-05 13:39:38 282

原创 西瓜书第二章笔记

概念错误率(error rate):分类错误的样本数占样本总数的比例精度(accuracy):精度 = 1 - 错误率误差(error):学习器的实际预测输出与样本的真实输出之间的差异训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差泛化误差(generalization error):学习器在新样本上的误差过拟合(...

2018-07-25 13:52:10 963

原创 西瓜书第一章笔记

本章从如何挑选西瓜的经验出发,介绍了本书所涉及基本术语和概念。数据集、样本、特征(属性)、特征空间(属性空间、样本空间、输入空间)、特征向量、维数;学习(训练)、训练数据、训练样本、假设、预测、标记、样例、标记空间(输出空间)、测试、测试样本;分类、回归、聚类、簇、监督、无监督、泛化能力;归纳、演绎、概念学习、假设空间、版本空间;归纳偏好(偏好)、奥卡姆剃刀;  同...

2018-07-25 13:50:10 495

转载 移动应用架构演变及泛前端趋势下移动团队破局

去年客户端团队从原生开发栈切 React Native 时想做一个分享,当时正是机票客户端主业务开始切 React Native 初期,有些原生开发者困惑为什么选择逐步放下已经熟悉的技能和经验,去使用 RN 这种较新的甚至 “带坑”的非官方的异构技术作为未来几年的主要技术设施。做这样一个主题是想对团队成员在技能和心理认知上的做前期引导。  原生开发体系的演进从2010年移动...

2018-07-25 13:40:18 876 1

原创 如何在linux上搭建深度学习环境 :Ubuntu16.04 上显卡驱动、CUDA、cuDNN、tensorflow安装

1,首先要有台牛逼的主机,主机上要有英伟达的显卡 NVIDIA+CUDA目前在机器学习领域的地位还无人能够撼动如何配主机请参照以下链接https://www.zhihu.com/question/33996159/answer/1026914142,Ubuntu系统安装好,考虑到大多数人都要装双系统具体可以参考以下链接https://blog.csdn.net/chandoudeyuyi/arti...

2018-05-02 17:10:57 886

转载 摩拜26岁高管:下不了手开除70、80后,公司死了谁负责

最近出了篇文章,把我吓出了一身冷汗,标题是《下不了手开除70、80后,公司死了谁负责?》这篇文章的作者是周喆吾,92年出生,现在才26岁,已经在摩拜单车担任移动端负责人。周喆吾上电视时的截图在文章里面,他分享了一个故事:公司有个资历很老的员工C,一开始就跟着创始人,快三年时间,没有功劳也有苦劳。然而,随着公司业务扩展,C开始变得三天打鱼两天晒网,业务不思进取,还不断打击新员工的积极性。在多次谈话无...

2018-05-02 13:20:57 354

Linux_进程间通信 共享内存shmget方式详解

Linux_进程间通信_-_共享内存shmget方式

2011-12-18

空空如也

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

TA关注的人

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