- 博客(257)
- 资源 (13)
- 收藏
- 关注
原创 代理模式(Proxy Pattern)
代理模式通过引入代理对象,为客户端和目标对象之间提供了一个中间层,使得客户端可以在不改变目标对象的前提下,对目标对象的访问进行控制和扩展。在实际项目中,当需要对对象的访问进行控制、增强或扩展时,应考虑使用代理模式。同时,要根据具体的业务需求和场景,选择合适的代理类型,如远程代理、虚拟代理、保护代理等。
2025-04-06 16:10:20
15
原创 享元模式(Flyweight Pattern)
享元模式通过共享对象的内部状态,有效地减少了系统中对象的数量,从而节省了内存和提高了性能。在实际项目中,当遇到大量相似对象且这些对象的部分状态可以共享时,应考虑使用享元模式。但同时也需要注意,使用享元模式会增加系统的复杂性,需要合理设计内部状态和外部状态,确保共享对象的正确性和线程安全性。
2025-03-24 23:10:20
115
原创 外观模式 (Facade Pattern)
外观模式通过提供一个统一的高层接口,简化了复杂子系统的使用,降低了客户端与子系统之间的耦合度。在实际项目中,当遇到需要简化复杂系统使用或分层架构设计时,应优先考虑使用外观模式。根据具体的业务需求和系统架构,合理运用外观模式,确保代码的可维护性和可扩展性。
2025-03-24 22:25:50
213
原创 装饰器模式 (Decorator Pattern)
装饰器模式是一种常用的设计模式,它可以动态地给一个对象添加一些额外的职责,从而提高代码的灵活性、可读性和可维护性。在实际开发中,需要根据具体需求选择合适的实现方式。
2025-03-23 21:16:10
237
原创 组合模式 (Composite Pattern)
组合模式是一种常用的设计模式,它可以将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性,从而提高代码的灵活性、可读性和可维护性。在实际开发中,需要根据具体需求选择合适的实现方式。
2025-03-23 14:57:05
144
原创 桥接模式 (Bridge Pattern)
桥接模式是一种常用的设计模式,它可以将抽象部分与实现部分分离,使它们可以独立变化,从而提高代码的灵活性、可读性和可维护性。为处理多维度变化的系统提供了一种优雅的解决方案。在实际开发中,当遇到需要处理多个独立变化维度的场景时,应优先考虑使用桥接模式。
2025-03-22 23:30:42
138
原创 适配器模式 (Adapter Pattern)
适配器模式是一种常用的设计模式,它可以将一个类的接口转换成客户希望的另外一个接口,从而提高代码的灵活性、可读性和可维护性。在实际项目中,当遇到需要整合不同接口的类或库时,应优先考虑使用适配器模式。同时,要根据具体的业务需求和场景,合理选择类适配器、对象适配器或接口适配器,以达到最好的效果。
2025-03-22 18:31:03
304
原创 原型模式 (Prototype Pattern)
原型模式为对象创建提供了一种高效的方式,通过复制现有对象状态来创建新对象,避免了复杂的初始化过程。在实际开发中,当面临创建复杂对象或需频繁创建相似对象的场景时,可考虑使用原型模式。同时,应根据具体业务需求和系统架构,合理选择原型模式与其他创建型设计模式,以优化系统性能和代码结构。
2025-03-22 17:29:24
287
原创 建造者模式 (Builder Pattern)
建造者模式是一种常用的设计模式,它可以将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在实际开发中,需要根据具体需求选择合适的实现方式。
2025-03-22 15:09:04
147
原创 抽象工厂模式 (Abstract Factory Pattern)
抽象工厂模式通过将对象的创建和使用进一步分离,为创建一系列相关或相互依赖的对象提供了一种优雅的解决方案。它在提高系统的可扩展性和可维护性方面具有显著优势,但同时也增加了系统的复杂性。在实际开发中,需要根据具体的业务需求和系统架构来权衡是否使用抽象工厂模式。如果系统中存在多个产品族,并且产品之间存在复杂的依赖关系,那么抽象工厂模式是一个很好的选择。
2025-03-16 17:35:29
174
原创 工厂方法模式 (Factory Method Pattern)
工厂方法模式是一种强大的创建型设计模式,它将对象的创建逻辑封装在工厂类中,使得代码更加灵活和易于维护。通过合理运用工厂方法模式,可以有效提高软件系统的可扩展性和可维护性,降低代码的耦合度。
2025-03-15 20:54:39
530
原创 单例模式 (Singleton Pattern)
单例模式是一种常用的设计模式,但需要注意线程安全、序列化与反序列化、反射攻击等问题。在实际开发中,需要根据具体需求选择合适的实现方式。
2025-03-15 17:03:06
699
转载 CoreML 与Vision
本文环境为Swift4和iOS11.4参考文章1,参考文章2CoreMLCoreML是苹果在WWDC2017 新发布的Framework,方便了Machine Learning在苹果自家平台的接接入与使用,同时苹果提供了Python的coremltools,方便将各大开源模型训练工具的现有模型转化为MLModel。VisionVision是一个新的,强大的,易于使用的框架,是苹果于WWDC 2017上针对CoreML使用所提出的新Framework,能快速有效的用于面部检测、面部特征...
2021-06-19 23:29:36
408
转载 用机器学习来驱动一个iOS应用:如何开始使用Create ML和Core ML
转:https://zhuanlan.zhihu.com/p/90919163本文中提到的所有资源都可以从这里下载:GitHub repository机器学习目前是科技行业最热门的话题之一。能够将以前依赖人工操作的任务自动化,为许多创新和令人兴奋的可能性打开了大门。由于机器学习算法需要相当大的计算能力,过去它们只能在强大的后端实现。但是,随着手持设备嵌入了越来越强大的中央处理器(cpu),在这些设备上实现机器学习开始成为一个可行的选择。智能手机制造商抓住了这个机会。他们开始定期发布工具,使开发人
2021-06-19 11:50:26
558
原创 逆向学习 - class-dump
一、class-dump1. class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的classes、categories和protocols信息提取出来,并生成对应的.h文件2. git: https://github.com/nygard/class-dump二、源码分析1. 读取文件1.1 ...
2019-06-10 12:33:40
1075
1
原创 Mach-O 学习
学习逆向,掌握Mach-O 结构和原理必不可少,这方面的资料还是很多,把学习到的简单记录如下:1. iOS逆向学习笔记之--Mach-O文件结构介绍了Mach header 和 Load Commands;https://blog.youkuaiyun.com/wj610671226/article/details/825627642.class-dump 分析类方法名称的原理介绍从Data 模...
2019-04-06 20:05:17
287
原创 iOS 逆向工具 - restore-symbol
iOS应用在上线前都会裁去符号表,以避免被逆向分析,restore-symbol 便是用于恢复符号表的利器。符号表原理:https://blog.youkuaiyun.com/sharpyl/article/details/88610991git:https://github.com/tobefuturer/restore-symbol1.下载源码编译git clone --recursive ht...
2019-03-20 17:02:04
1556
转载 fishhook原理
fishhook是Facebook提供的一个动态修改链接mach-O文件的工具。利用MachO文件加载原理,通过修改懒加载和非懒加载两个表的指针达到C函数HOOK的目的。前提在分析fishhook原理前,我们先来想两个问题:1. Mach-O文件是被谁加载的?我们知道,在程序启动的时候 Mach-O 文件会被 DYLD (动态加载器)加载进内存。加载完 Mach-O 后,DYLD接着会...
2019-03-17 02:57:25
1471
转载 iOS-符号表恢复&逆向支付宝
转:https://blog.youkuaiyun.com/MinggeQingchun/article/details/80070534前言符号表历来是逆向工程中的“必争之地”,而iOS应用在上线前都会裁去符号表,以避免被逆向分析。本文会介绍一个自己写的工具,用于恢复iOS应用的符号表。直接看效果,支付宝恢复符号表后的样子:文章有点长,请耐心看到最后,亮点在最后。为什么要恢复符号...
2019-03-17 00:23:00
363
原创 iOS 逆向工具 - IDA
1. IDA简介逆向工程中神器之一!2. IDA加载文件打开IDA,直接将可执行文件拖到app里即可;3. IDA窗口功能a. Function Window. 展现分析出来的所有函数;双击函数,Main window 显示函数体;. Class-dump 导出的都是OC函数,可读性高;IDA还将所有subroutine罗列出来;subroutine的名称是一个代号,分析难度大。...
2019-03-03 15:39:14
1551
原创 iOS 逆向工具 - OpenSSH
OpenSSh 会在iOS上安装 SSH 服务。常用命令:1. ssh user@iOSIP用于远程登录例:ssh mobile@192.168.1.12. scp /path/local user@iOSIP:/path/remote 或 scp user@iOSIP:/path/remove /path/local本地、iOS之间文件拷贝例:scp ~/1.png roo...
2019-03-03 15:36:06
409
转载 理解和分析App崩溃报告(译)
转:https://www.jianshu.com/p/574a5a6d00c5Apple Develop官方原文:Understanding and Analyzing Application Crash Reports简介当一个应用程序崩溃, 会产生一个崩溃报告(crash report) ,并存储到那个设备。崩溃报告描述了应用程序崩溃的条件,大多数情况会包含每个执行线程的一个完整...
2019-03-01 21:05:56
2853
原创 iOS 逆向工具 - Reveal
Reveal 是一款UI分析工具,非常强大。下面介绍如何安装。1. 安装Reveal2LoaderCydia 搜索安装即可。2. 配置Reveal2Loader设置 - Reveal - 打开要调试的app3. 安装Reveal官方下载Reveal17;(https://revealapp.com/download/)下载Patcher17,把Reveal17拖到Patcher...
2018-11-03 00:19:03
670
1
原创 iOS 逆向工具 - Theos
一、安装和配置Theos是一个越狱开发工具包,Logos语法。1. 指定安装路径export THEOS=/opt/theos2. 从github下载sudo git clone --recursive git://github.com/DHowett/theos.git $THEOS3. 配置ldid. 用来签名iOS可执行文件的工具,用以在越狱iOS中取代Xcode自带的c...
2018-10-14 21:48:18
437
原创 iOS 9.3.5 越狱
1. 下载impactor;地址:https://cydia.ooo/cydia-impactor/2. 下载Phoenix.ipa;3. 运行impactor ,安装Phoenix.ipa 到手机上;4. 运行Phoenix. 点击prepare for jailbreak. 然后点Accept. 接着点击Dismiss. 点击下面的Proceed with jai...
2018-10-13 17:24:03
5495
2
原创 iOS 逆向工具 - class-dump
利用oc的runtime特性,将存储在Mach-O文件中的头文件信息提取出来,并生成对应.h文件。1. 定位App 可执行文件a. 进入app 目录;b. plutil -p Info.plist | grep CFBundleExecutable2. class-dump 可执行文件,生成头文件class-dump -S -s -H testApp -o /path/headers...
2018-10-13 11:39:52
180
原创 iOS 逆向常见问题
1. IDA 在 mojave macOS crash (2018-10-12)解决:下载工程中的libqcocoa.dylib 替换/Applications/IDA Pro 7.0/ida.app/Contents/PlugIns/platforms/libqcocoa.dylib。git: https://github.com/fjh658/IDA7.0_SP2. /usr/...
2018-10-12 23:04:10
944
原创 iOS 逆向-基础知识
一、汇编1.iOS arm64汇编中寄存器和基本指令https://blog.youkuaiyun.com/u012581760/article/details/80182494二、了解逆向1. iOS 逆向 - 微信 helloWorldhttps://www.jianshu.com/p/04495a429324三、工具包括:a.逆向检测工具:Reveal, snoop-it,...
2018-09-29 15:40:36
539
原创 xcodebuild 打包
1. 工程设置为手动签名2. plist 中添加: provisioningProfiles Dictionary $buildleID String profile name method String $method 其中:$buildleID 为app Bundle Identifier $method 包含四种,a...
2018-02-08 21:21:19
433
原创 MVVM 参考
1. iOS MVVM+RAC 从框架到实战https://www.jianshu.com/p/3beb21d5def2?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends2. MVVMFramework https://github.com/lovemo/MV
2018-01-07 22:58:18
259
转载 iOS Reactivecocoa(RAC)知其所以然(源码分析,一篇足以)
前言如今RAC大行其道,对其讲解的博客也多不胜数,稍微有点经验的估计也已经对这个爽到不要不要的框架运用自如了,真正沉下来研究其实现原理的估计也不在少数,这里仅仅是记录一下自己的分析理解,更是在写这篇博客的过程中深化自己对RAC的认知,可能就是想到哪写到哪,各位朋友能从其中学到东西是最好了,要是感觉没什么干货也别对小弟拍砖啊!一、关于常见类1、RACSiganl 信号
2017-12-31 21:37:17
498
转载 ReactiveCocoa进阶
在上篇文章中介绍了ReactiveCocoa的基础知识,接下来我们来深入介绍ReactiveCocoa及其在MVVM中的用法。转载自最快让你上手ReactiveCocoa之进阶篇,稍作修改ReactiveCocoa进阶思维导图常见操作方法介绍操作须知所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,因此只要继承RACStream
2017-11-27 23:45:01
460
转载 ReactiveCocoa基础
本文转载自最快让你上手ReactiveCocoa之基础篇,在此基础上稍作修改,欢迎交流。有关对 ReactiveCocoa 的看法可以看一下唐巧的这篇ReactiveCocoa 讨论会ReactiveCocoa思维导图ReactiveCocoa简介ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的
2017-11-27 23:43:34
1121
原创 Xcode 技巧
1. 对当前文件进行预处理,展开当前文件的宏定义:Product -> Perform Action -> Preprocess “MyViewController”;2. 打开block捕获self的强引用编译警告:Build Settings - Implicit retain of 'self' within block;
2017-11-23 23:50:48
278
原创 YYKit 学习
一、YYLabel学习 YYTextAsyncExample,YYLabel 异步绘制效率要比UILabel高许多。简单看下YYLabel实现原理:1. YYLabel 设置 textLayout 属性;2. YYLabel - setTextLayout a. 解析属性, b. 调用[self.layer setNeedsDisplay];
2017-11-01 00:11:20
700
原创 SDWebImage 学习
一、 通过 FLAnimatedImageView 、UIImageView、UIView、UIButton 调用sd_setImageWithURL...实现网络图片异步加载,缓存等功能,demo:FLAnimatedImageView *customImageView = [[FLAnimatedImageView alloc] initWithFrame:CGRectMake
2017-10-31 00:41:07
268
原创 setNeedsLayout、layoutIfNeeded and layoutSubviews区别
一、layoutSubviews在以下情况下被调用:1、init初始化不会触发layoutSubviews,但是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,会触发;2、addSubview会触发layoutSubviews;3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化;4、滚
2017-10-25 11:12:08
324
转载 iOS事件传递和响应机制-原理篇
前言:按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view、寻找最合适的view的底层实现、拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应)其中重点和难点是: 1.如何寻找最合适的view 2.寻找最合适的view的底层实现(hitTest:withEvent:底层
2017-10-15 18:03:29
297
转载 iOS知识原理篇
runtime怎么添加属性、方法等ivar表示成员变量class_addIvarclass_addMethodclass_addPropertyclass_addProtocolclass_replaceProperty是否可以把比较耗时的操作放在NSNotificationCenter中首先必须明确通知在哪个线程中发出,那么处理接受到通知的方法也在这个线程中调用如果在异步线程
2017-10-15 13:40:51
352
转载 iOS Block原理和内存中位置
Posted by 微博@iOS音视频原创文章,自由转载-非商用-非衍生-保持署名简介今天回顾一下blcok,基本用法在我的这篇文章中有较为详细的描述,这次不再回顾,本次block的原理和内存中的位置 是主角。如何理解blcokblock:可以理解为匿名的函数,就是预先准备好的一段代码,在需要的时候调用。底层实现block是一个指针结构体,在终端
2017-10-15 10:33:36
1171
C++ Primer 第5版
2020-11-18
深入理解C++11:C++11新特性解析与应用
2020-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人