自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(185)
  • 资源 (12)
  • 收藏
  • 关注

原创 FVM安装的安装与使用

FVM是一款非常好用的` Flutter 版本管理工具`。FVM官网:[https://fvm.app/](https://fvm.app/)

2024-04-09 19:31:48 452

原创 rvm(ruby)的安装与使用

rvm的安装与使用

2023-04-17 19:28:29 1629 2

原创 iOS开发:Mach-O入门理解

Mach-O:是的缩写,是Mac\iOS上用于存储程序、库的标准格式。属于Mach-O格式的文件类型有:可以在源码中,可以查看到Mach-O格式的详细定义(https://opensource.apple.com/tarballs/xnu/)1、MH_OBJECT2、MH_EXECUTE:可执行文件3、MH_DYLIB:动态库文件4、MH_DYLINKER:动态链接编辑器5、MH_DSYM:存储着二进制文件符号信息的文件.o文件编译生成的流程:官方描述https://developer.apple.c

2022-06-27 00:00:00 1839

原创 iOS开发:对于动态库共享缓存(dyld)的了解

苹果官方从iOS3.1开始,为了提高手机性能,就将绝大部分的系统动态库文件都打包存放到了一个缓存文件中(`dyld shared cache`)其缓存文件路径为:`/System/Library/Caches/com.apple.dyld/dyld_shared_cache_armX`**dyld**全称为:dyld shared cache,直接翻译为动态库共享缓存。...

2022-06-24 00:00:00 3460 10

原创 汇编:汇编与C派系语言混用以及对应LLDB常用指令

汇编与C/C++/Objective-C混用,分两种类型:外联汇编、内联汇编。LLDB的一些常用指令可以协助我们更好的读取分析OC反编译,看懂汇编代码。

2022-06-10 15:21:32 1231 21

原创 汇编:寄存器简单分类 - Unix派系 vs Windows派系

如eax、ebx、ecx、edx、eip、esp、ebp、esi、edi等都是32位的寄存器段寄存器有16个常用64位寄存器:寄存器的具体用途:基于x86架构的处理器所使用的汇编指令一般由2种格式Intel汇编DOS(8086处理器)、WindowsWindows派系 --> VC编译器AT&T汇编:读作“AT and T”,是 American Telephone & Telegraph 的缩写Linux、Unix、Max OS、iOS(模拟器)Unix派系 --> GCC编译器作为iOS开.

2022-06-10 15:11:16 1849 8

原创 汇编:代码示例

代码示例

2022-06-10 00:00:00 2472

原创 汇编:关于函数完整流程的栈桢解析

栈桢(Stack Frame Layout):函数调用的具体流程,就是一个函数执行的环境,它包括参数、局部变量、返回地址等信息。

2022-06-09 20:50:19 759 18

原创 汇编:汇编指令分类

使用汇编语言编写一个完整的程序,步骤大致如下:这节我们来看下一个最简单的汇编代码包含哪些内容。下面是一段简单的汇编语言的代码:从上面的代码可以看出,汇编语言由两类指令组成:1、汇编指令2、伪指令............

2022-06-09 17:08:46 2695 4

原创 汇编:jmp指令

1、jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP。2、jmp指令要给出两种信息: 1、转移的目的地址 2、转移的距离(段间转移、段内短转移, 段内近转移)

2022-06-09 00:00:00 13047

原创 汇编:Debug的常用命令

Debug的常用功能: R命令:查看、改变CPU寄存器的内容; D命令:查看内存中的内容; E命令:改写内存中的内容: U命令:将内存中的机器指令翻译成汇编指令: T命令:执行一条机器指令; A命令:以汇编指令的格式在内存中写入一条机器指令。 Q命令:退出debug P命令:类似于step over(“t”命令类似于step into),可用于跳过loop循环 G命令:跳过前面的代码,停留到指定的代码位置............

2022-06-09 00:00:00 14222

原创 汇编:CPU结构 - FLAG标志寄存器和相关指令

FLAG是计算机的专业术语,状态标志寄存器。1、用来存储相关指令的某些数据结果。2、用来为CPU执行相关的指令提供行为依据。3、用来控制CPU的相关工作方式。标志寄存器是按位起作用,每一位都有专门的含义。上图中有字符标记的都具有特殊含义,其他位没有使用(造成影响的大多数是运算指令(逻辑/算数))。进行标志位学习和验证前,先看一下如何在debug里看标志位。...............

2022-06-08 23:22:53 3374 1

原创 汇编:CPU结构 - 段寄存器

8086在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。是什么部件提供段地址? 段地址在8086的段寄存器中存放。 8086有4个段寄存器:CS、DS、SS、ES,当CPU需要访问内存时由这4个段寄存器提供内存单元的段地址: CS (Code Segment):代码段寄存器 DS (Data Segment):数据段寄存器 SS (Stack Segment):堆栈段寄存器 ES (Extra Segment):附加段..

2022-06-07 17:37:16 5533 10

原创 汇编:CPU结构 - 通用寄存器

CPU结构介绍与CPU指令执行过程详解

2022-06-07 14:00:58 1757

原创 汇编:CPU与内存的读写关系

要想学好汇编语言,首先要对CPU等硬件结构有一定的了解。

2022-06-07 12:24:27 1464 6

原创 汇编:汇编的基本介绍

1、编程语言的发展 2、汇编语言的特点 3、汇编语言 VS 高级语言 4、汇编语言的用途 5、汇编语言的种类

2022-06-07 10:31:43 2701 23

原创 汇编:Mac系统搭建DOSBox汇编环境

Debug是一个DOS实用程序,是供程序员使用的程序调试工具,苹果的Mac系统上是没有DOS程序的,所以我们要下载一个名为DOSBOX的软件进行配置。

2022-06-06 22:33:22 3775 41

原创 算法技能树之初体验--期待会做的更好

一直觉得自己算法结构这块技能比较薄弱,想要学习一下。看到官方出台了算法技能树技能学习,突然间特别感谢官方能够想我之所想,于是就报名学习了一下。刷了几个题,初次体验了一下这个功能模块。总的来说,大方向是好的,可以正常刷题,但也发现了几个小点不太舒服的,这里记录几条几条,希望可以改进。

2022-06-02 11:43:26 836 15

原创 iOS事件传递链与响应链

当我们在手机上点击、滑动等屏幕操作进入到相应的页面,手机是如何区分相应指令并响应的呢?其中又是经历了怎样的过程呢?这里涉及到了事件响应链。文章目录1、事件链2、传递链3、响应链4、示例代码1、事件链如下图所示,用户点击屏幕时,首先UIApplication对象先收到该点击事件,再依次传递给它上面的所有子view,直到传递到最上层,即UIApplication ——> UIWindow ——> RootViewController ——> View ——> Button,即传递链

2022-05-29 16:08:24 3378 31

原创 iOS:关于APP架构设计的简单理解

App架构是软件设计的一个分支,它关心的是如何设计一个 App 的结构。我的理解结构设计分水平和垂直两个方向。垂直方向分:基础层、核心层、业务层、界面层。水平方向可以理解为对界面的的设计模式,目前比较通用的有MVC、MVP、MVVM三种,具体见下图:1、MVC - Apple版是 Cocoa app 中最为常⻅的架构,同时也是在 Cocoa 中讨论架构时所采用的基准线。1、实线部分代表编译期间的引用2、图中的虚线部分代表运行时的引用优点:View、Model可以重复利用,可以独立使用缺点

2022-05-25 00:00:00 1196 29

原创 APP性能优化

APP性能优化分:卡顿处理、耗电处理、安装包瘦身、APP启动四大方面。文章目录1、卡顿处理1.1、卡顿分析1.2、卡顿优化1、CPU 优化2、GPU 优化离屏渲染1、离屏渲染消耗性能的原因2、哪些操作会触发离屏渲染?1.3、卡顿检测2、耗电处理2.1、好点主要来源2.2、耗电优化3、安装包瘦身4、APP的启动4.1、APP启动分类4.2、APP启动时间分析4.2.1、dyld 阶段4.2.2、runtime 阶段4.2.3、main4.3、APP启动优化5、问答拓展1、卡顿处理1.1、卡顿分析APP

2022-05-24 00:08:14 2510 47

原创 APP内存管理

文章目录1、iOS程序的内存布局2、Tagged Pointer 标记指针问答拓展3、定时器3.1、NSTimer、CADisplayLink的使用注意点3.2、GCD定时器封装4、OC对象的内存管理4.1、引用计数的存储4.2、dealloc4.3、自动释放池4.3.1、autorelease 底层结构4.3.2、AutoreleasePoolPage1、链表关系2、实现原理3、触发逻辑5、问答拓展1、iOS程序的内存布局1、代码段:编译之后的代码2、数据段2.1、字符串常量:比如NSStr

2022-05-23 00:24:59 742 31

原创 Runtime系列:常见面试题【08】

讲一下 OC 的消息机制1、OC中的方法调用其实都是转成了objc_msgSend函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名)。2、objc_msgSend底层有3大阶段

2022-05-22 00:03:46 265 25

原创 Runtime系列:LLVM的中间代码(IR)【07】

Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)可以使用以下命令行指令生成中间代码:clang -emit-llvm -S main.m常用语法简介:@ - 全局变量% - 局部变量alloca - 在当前执行的函数的堆栈帧中分配内存,当该函数返回到其调用者时,将自动释放内存i32 - 32位4字节的整数align - 对齐load - 读出store - 写入icmp - 两个整数值比较,返回布尔

2022-05-21 23:56:34 450 38

原创 Runtime系列:常用API(附示例)【06】

文章目录1、类2、成员变量3、属性4、方法1、类1、动态创建一个类(参数:父类,类名,额外的内存空间)Class objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes)2、注册一个类(要在类注册之前添加成员变量)void objc_registerClassPair(Class cls) 3、销毁一个类void objc_disposeClassPair(Class cls)4、设置和获

2022-05-20 00:03:28 473 14

原创 Runtime系列:super调用函数本质、isMemberOfClass与isKindOfClass的区别、综合分析【05】

1、实例方法是类的判断: 1、isMemberOfClass:判断左边的实例对象是否等于右边的类 2、isKindOfClass:判断左边的实例对象是否属于右边的类或子类2、类方法是元类的判断: 1、正常情况下传参应该取元类对象进行判断断。 2、如果是传类对象判断,返回全部为0;除非右边入参为 [NSObject class],此时方法调用者不管是哪个类(只要是NSObject体系下的),都返回YES。

2022-05-20 00:02:08 334 8

原创 Runtime系列:消息机制【04】

OC中的方法调用的本质,都是转换为objc_msgSend函数的调用。这里所说的消息机制就是objc_msgSend的执行流程。objc_msgSend的执行流程可以分为3大阶段:1、消息发送1、首先判断消息接收者是否为nil,如果为nil则直接退出。所以存在使用 nil 调用方法,编译的时候也不会报错。2、如果消息接收者不为空,通过isa指针找到消息接收者类对象,然后去查找方法(如果类对象没有找到方法,通过superclass指针找到父类继续查询),具体流程如下图:receiver通过isa指

2022-05-19 00:05:05 218 21

原创 Runtime系列:Class的结构【03】

文章目录1、`bits`类信息1.1、`class_rw_t`结构1.2、`class_ro_t`结构1.3、`method_t`结构1、`IMP`代表函数的具体实现2、`SEL`代表方法\函数名,一般叫做选择器,底层结构跟`char *`类似3、`types`包含了函数返回值、参数编码的字符串2、`cache_t` 方法缓存列表通过isa、superclass指针指向中,我们知道了,isa、superclass的作用,接下来继续详细了探寻下Class结构其他成员变量的作用。Class的底层结构图如下图:

2022-05-19 00:03:50 289 20

原创 iOS的多线程安全隐患与线程同步方案

1、在资源共享时,一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源,比如多个线程访问同一个对象、同一个变量、同一个文件。2、当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题。

2022-05-18 00:40:43 997 37

原创 iOS中的多线程与GCD队列关系

文章目录1、iOS中的常见多线程方案2、GCD与队列2.1、常用函数2.2、queue队列2.3、同步、异步、并发、串行2.4、各种队列的执行效果2.5、队列组的使用3、问答拓展1、iOS中的常见多线程方案2、GCD与队列2.1、常用函数GCD中有2个用来执行任务的函数1、用同步的方式执行任务/*** @param: queue:队列* @param: block:任务*/dispatch_sync(dispatch_queue_t queue, dispatch_block_t b.

2022-05-18 00:00:00 461 20

原创 Runtime系列:isa位域详解【02】

要想学习Runtime,首先要了解它底层的一些常用数据结构,比如isa指针:1、在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址2、从arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多的信息isa指针共用体(以下均已64架构分析)结构:位域说明:nonpointer:0,代表普通的指针,存储着Class、Meta-Class对象的内存地址1,代表优化过,使用位域存储更多的信息has_a

2022-05-17 00:00:11 464 2

原创 小码哥底层原理之RunLoop

1、概念:顾名思义,RunLoop是一个运行循环,保证App能够持续运行,处理各种事件,节省CPU资源,没事处理的时候就进入休眠。2、RunLoop与线程关系 1、每条线程都有唯一的一个与之对应的RunLoop对象。 2、主线程的RunLoop是默认创建好并开启的,子线程的RunLoop默认是没有的,RunLoop会在第一次获取它时创建,然后手动开启。 3、RunLoop是保存在一个全局的字典里,线程作为Key,RunLoop作为Value。 4、RunLoop会在线程结

2022-05-17 00:00:00 510 23

原创 Runtime系列:位运算在OC中的取值和赋值【01】

本片文章介绍将数据(如:Bool类型的数据)存储到二进制位中,包括实现逻辑、代码示例以及各自的优缺点分析。

2022-05-16 01:35:05 240 27

原创 使用uniapp开发微信小程序的人脸采集功能/人脸识别功能

本篇文章是借助微信小程序平台,添加人脸采集的功能,你看上面的漂亮姐姐有什么理由不去采集一下她的人脸呢。😂😂

2022-05-16 01:33:51 8528 85

原创 跟着小码哥一起学习OC语法,都在这里了

1、手把手带你去分析NSObject本质是什么2、用几个示例带你去了解OC对象是怎么分配内存的3、OC的类信息存放在哪里,看完千万别说还不知道4、OC:对象的isa指针和superclass指针分别指向哪里,你知道了吗?5、OC:跟随小码哥一起学习KVO6、OC:跟随小码哥一起学习KVC7、OC:Category的实现原理8、OC:一步步带你如何给Category对象添加成员变量block系列:9、OC:关于block的本质,你懂了吗?10、一篇就带你读懂关于block的变量捕获(ca

2022-05-15 00:07:04 565 39

原创 Clang编译OC程序的常用命令

在Objective-C开发过程中,尤其在了解某些功能的底层实现时,常用到Clang编译器的命令。这篇文章是简单了解Clang和Clang的常用指令。

2022-05-15 00:04:34 2098 50

原创 前端面试宝典汇总

1、v-if和v-show的相同点和不同点?2、单页面与多页面间的区别及优缺点?

2022-05-11 20:42:41 594 40

原创 用uniapp实现微信小程序的电子签名效果

画布可以做很多事情,比如可以绘图,也可以做海报。在这里只是想拿它来的实现亲笔签名,开启不一样的亲笔签名姿势。

2022-05-11 00:01:02 9771 107

原创 你知道block循环引用怎么解决了吗?

✅作者简介:大家好我是瓜子三百克,一个非科班出身的技术程序员,还是喜欢在学习和开发中记录笔记的小白博主!📃个人主页:瓜子三百克的主页🔥系列专栏:OC语法🤟格言:作为一个程序员都应该认识到,好的代码是初级工程师都可以理解的代码, 伟大的代码是可以被学习一年计算机专业的新生所理解。💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞在使用block的时候,最需要注意的问题便是循环引用,这节主要讲解,block是如何产生的?碰到循环引用又该怎么解决。文章目录一、循环引用的..

2022-05-10 08:00:00 500 36

原创 一顿饭的功夫带你了解block是如何内存管理的

2.1、不需要内存管理的情况:>1、**当block在栈上**:block内部不会对__block变量产生强引用,所以不需要内存管理2、**基本数据类型,没有加 __block 修饰符的**:block内部是值存储,不涉及对象管理,所以不需要内存管理。3、**static变量和全局变量**:内存放在数据段,由程序统一管理,可全局访问,长期持有而且不会销毁,所以不需要内存管理。2.2、需要进行内存管理的情况:

2022-05-09 07:00:00 1110 31

微信小程序实时定位开发demo,uniapp框架

微信小程序实时定位开发demo,uniapp框架

2022-05-22

uniapp开发微信小程序-人脸采集功能

uniapp开发微信小程序-人脸采集功能

2022-05-16

uniapp亲笔签名demo

uniapp亲笔签名demo

2022-05-11

InterView-NSObject的内存分析

手把手带你去分析NSObject对象到底占用多少内存?

2022-05-01

libstdc--master

错误信息: ld: library not found for -lstdc++.6.0.9 报错原因:Xcode10移除了动态库libstdc

2020-12-07

nuxt.js+mint-ui :省/市/区三级联动

1、mint-ui导入;2、省市区json数据获取;3、省市区三级联动

2018-11-01

(vue.js)nuxt.js:IP端口/局域网配置

1、nuxt.js/vue.js安装与运行 2、Ip端口冲突解决 3、IP端口/局域网配置 4、运行[WebStorm]]的配置

2018-11-01

OKR的基本介绍

OKR的前世今生、OKR的前世今生、OKR的诠释、为什么使用OKR、使用OKR注意事项、OKR的实施流程、实施OKR的关键点、OKR的预期收益、OKR的学习案例

2018-10-21

日志记录文件及压缩上传服务器

1、日志记录 2、日志文件压缩 3、文件上传到阿里云服务器(OSS) 4、上传成功后文件删除

2018-10-12

日志记录文件与压缩上传服务器

1、日志记录 2、日志文件压缩 3、文件上传到阿里云服务器(OSS) 4、上传成功后文件删除

2018-10-12

Crash异常捕获与处理

通过【NSSetUncaughtExceptionHandler】机制捕获处理app的异常

2018-09-07

空空如也

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

TA关注的人

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