简介从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同。字符串对象字符串对象的编码可以是int、raw和embstr三者之一。embstr编码是专门用于保存简短字符串的一种优化编码方式,与raw编码会调用两次内存分配函数分别创建redisObject结构和sdshdr结构不同,embstr只会使用一次内存分配函数创建一块连续的内存空间同时存放redisObject结构和sdshdr结构。字符串转换编码的条件如下:如果字符串对象存储的是整数值并且不超过long的范围时,优先选择使用int作为编码方式如果存储的字符串长度大于32个字节,会使用r
一.汇编,C语言,C++,JAVA之间的关系汇编,C语言,C++可以通过不同的编译器,编译成机器码。而java只能由Java虚拟机识别。Java虚拟机可以看成一个操作系统,Java虚拟机是由汇编,C,Linux等编写而成的一个操作系统(面向os)不同的芯片,底层的CISC指令集不同,所以其机器码有区别,因此汇编不能跨平台。特定的CPU下只能执行特定的机器码。Java生成字节码,只有Java虚拟机识别,Java虚拟机跨平台,因此Java跨平台。二.CPU架构,指令集,汇编,硬编码之间的关系CPU架构1.CISC(复杂指令集)Intel芯片2.RISC(精简指令集)1.ARM芯片MacM1、M
alloc底层原理探究要想探索objc的底层原理,首先得初始化对象YDLog(@"alloc探索");YDPerson*p1=[YDPersonalloc];YDPerson*p2=[p1init];YDPerson*p3=[p1init];YDPerson*p4=[YDPersonalloc];NSLog(@"%@-%p-%p",p1,p1,&p1);NSLog(@"%@-%p-%p",p2,p2,&p2);NSLog(@"%@-%p-%p",p3,p3,&p3);NSLog(@"%@-%p-%p",p4,p4,&p4);alloc探索2021-06-2110:34:51.956810+08
block类型在MRC环境下1.全局block:如果没有使用外部auto变量,或者只使用全局变量或是静态变量,则是全局block2.栈block:如果使用了外部auto变量,则是栈block3.堆block:栈block调用了copy在ARC环境下1.全局block:如果没有使用外部auto变量,或者只使用全局变量或是静态变量,则是全局block2.栈block:如果使用了外部auto变量,会从栈block拷贝到堆block3.堆block:访问了外部auto变量的block,并进行的copy操作auto修饰变量,block会捕获,并且是值传递,内部无法修改值。static修饰变量,block
注:欢迎大家可以关-注Wei-Xin公--众--号:Style月月专栏,与简书同步更新~iOS底层原理objc4源码相关0、底层源码探索方式iOS-底层原理01:源码探索的三种方式1、对象底层:结构体+alloc分析iOS-底层原理02:alloc&init&new源码分析iOS-底层原理03:objc4-781源码编译&调试iOS-底层原理04:NSObject的alloc源码分析iOS-底层原理05:内存对齐原理iOS-底层原理06:malloc源码分析思路2、对象的本质:isa+isa属性分析+类结构iOS-底层原理07:isa与类关联的原理iOS-底层原理08:类&类结构分析iOS-底
iOS底层探索文章汇总目录一、类在内存中存在几份二、objc_object与对象的关系三、什么是属性&成员变量&实例变量?四、成员变量和实例变量什么区别?五、元类中为什么会有类对象的类方法?六、实例对象、类对象、元类对象到底有什么区别呢?七、探究class_copyMethodList等方法八、iskindOfClass&isMemberOfClass的理解九、iOS中内省的几个方法?一、类在内存中存在几份?类在内存中存在几份实际上是说类对象在内存中存在几份。由于类的信息在内存中永远只存在一份,所以类对象只有一份。二、objc_object与对象的关系所有的对象都是以objc_object为模
目录1.KVC2.KVO3.通知4.代理、委托、协议5.Block、KVO、通知、代理之间的区别6.分类Category和类扩展Extension7.类方法、实例方法、构造方法1.KVC概念:KVC(Key-ValueCoding)键值编码,是一种可以直接通过字符串类型的属性名key来访问或赋值某个类属性的机制,而不是通过调用Setter、Getter方法访问。这样就可以在运行时动态地访问和修改对象的属性,而不是在编译时确定,这也是iOS开发中的黑魔法之一。它是利用NSKeyValueCoding非正式协议实现的一种机制,对象采用这种机制来提供对其属性的间接访问。说明:1.写下KVC代码并点击
我们接下来看看类对象的本质,其实就是下面这个结构体:structobjc_class:objc_object{Classisa;//这个isa指针本来是在objc_object里面的,现在把它拿上来这里Classsuperclass;//指向父类的指针cache_tcache;//方法缓存class_data_bits_tbits;//class_rw_t*pluscustomrr/allocflags}最后一个bits存储着非常多的东西,跟之前说的位域一样,想要取出某些东西必须bits&XX_MASK掩码。比如我们要取出这个类对象里面存储的data数据class_rw_t,则必须bits&F
我正在使用通过Tcpstream实例化的StreamWriter像这样streamWriter=newStreamWriter(tcpClient.GetStream());我对关于异常的后续调用的行为感到困惑。以下两个函数预计会引发IOException令人惊讶的是,当tcpClient连接到的服务器断开连接时,它们不会引发IOException,因此底层TCP客户端连接已断开。这两行执行时不会引发任何异常。为什么?streamWriter.WriteLine(strBuffer);streamWriter.Flush();编辑:这篇文章也帮助我理解了原因,除了这里的专家回复。htt
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏🪔本系列专栏- 蓝桥杯嵌入式_勾栏听曲_0的博客🍻欢迎大家 🏹 点赞👍 评论📨 收藏⭐️📌个人主页- 勾栏听曲_0的博客📝🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆🎇安能以身之察察,受物之汶汶者乎?安能以皓皓之白,而蒙世俗之尘埃乎?📈GPIO查看原理图芯片电路原理图芯片数据手册找到引脚定义,理解引脚功能找到功能对应的Port微控制器参考手册 总结GPIOGPIO(英语:General-purposeinput/output),通用型之输入输