Git Product home page Git Product logo

commentforblog's People

Watchers

 avatar

commentforblog's Issues

OC类与元类 | 芝士就是力量

https://xq-120.github.io/2023/05/07/OC%E7%B1%BB%E4%B8%8E%E5%85%83%E7%B1%BB/

实例对象、类与元类实例对象的类称为类(类对象),类(类对象)的类称为元类(元类对象)。他们都是对象。 OC中对象、类和元类的关系如下图: 总结下: 实例对象的类是类对象,类对象的类是元类对象.元类对象的类是根元类,根元类对象的类就是自己本身.这里形成了一个闭环. 类对象里面保存的是实例方法. 元类对象里面保存的是类方法. 根类对象的superClass是nil,根类对象的类是根元类对象,

TAS、CAS简介 | 要为真理而斗争

https://xq-120.github.io/2021/08/01/TAS%E3%80%81CAS%E7%AE%80%E4%BB%8B/

原子操作是指操作是不可分割的,要么发生,要么不发生。事物只会处于原始状态和成功状态两种中的一种,不会处于一种完成一半的状态。 TAS和CAS指令是原子操作,但我感觉原子操作不仅是原子操作而且还是排他的,一个线程正在执行某个原子操作时,其他线程不能同时再执行该原子操作。 C语言里的volatile作用: 保证可见性 表示用到这个变量时必须每次都重新从内存里读取这个变量的值,而不是使用保存在寄存器里

RSA算法原理介绍 | 芝士就是力量

https://xq-120.github.io/2020/08/24/RSA%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%E4%BB%8B%E7%BB%8D/

前置知识质数 质数又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数(也称为合成数)。最小的质数为2。 互质关系 如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。

OC property、synthesize、dynamic关键字 | 芝士就是力量

https://xq-120.github.io/2014/12/13/OC-property%E3%80%81synthesize%E3%80%81dynamic%E5%85%B3%E9%94%AE%E5%AD%97/

OC的变量: OC有4种基本数据类型:char,int,float,double。它们又有一些限定词:signed,unsigned,short,long,long long。 实例变量+基本数据类型变量=成员变量。 实例变量指的是由类定义的变量。 @Property@property指令作用:声明了一个属性及属性的两个访问器方法。 如果在@implementation块里@synthesize

OC中的访问控制 | 要为真理而斗争

https://xq-120.github.io/2023/03/08/OC%E4%B8%AD%E7%9A%84%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6/#more

OC中提供了4个访问控制符:@Private @Package @Protected @public@Private(当前类访问权限):成员只能在当前类内部可以访问,在类实现部分定义的成员变量相当于默认使用了这种访问权限。 @Package(同映像访问权限):成员可以在当前类或和当前类实现的同一映像中使用,同一映像就是编译后生成的同一框架或同一个执行文件,跨框架不可用。简单点讲就是使用pack

TCP协议报文 | 芝士就是力量

https://xq-120.github.io/2022/07/29/TCP%E5%8D%8F%E8%AE%AE%E6%8A%A5%E6%96%87/

TCP传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP协议位于四层模型中的传输层 TCP报文 源端口:16bit,共65536个端口,端口0有特殊含义,不能使用,这样可用端口最多只有65535。 目的端口:16bit,接收方的端口号。 序号:32bit,可靠传输服务的关键字段。序号(sequence

Swift中的关键字 | 要为真理而斗争

https://xq-120.github.io/2023/02/26/Swift%E4%B8%AD%E7%9A%84%E5%85%B3%E9%94%AE%E5%AD%97/#more

@inline说明:函数内联,一种编译器优化技术。声明内联的函数,编译器会把该函数调用的地方用它的实现替换有点类似C语言的宏,这样就减少了函数的调用开销,属于一种微优化,如果函数实现简单,调用非常频繁可以使用内联进行优化。由于内联是把函数调用的地方用它的实现替换,因此内联可能会让程序的二进制包变大,取决于编译优化等级,编译器可能会自动对一些频繁调用的函数进行内联,如果这个函数实现比较复杂,那么此时

C语言整型类型长度与类型溢出 | 芝士就是力量

https://xq-120.github.io/2023/04/06/C%E8%AF%AD%E8%A8%80%E6%95%B4%E5%9E%8B%E7%B1%BB%E5%9E%8B%E9%95%BF%E5%BA%A6%E4%B8%8E%E7%B1%BB%E5%9E%8B%E6%BA%A2%E5%87%BA/

题外话C语言由Dennis M. Ritchie在1973年设计和实现。从那以后使用者逐渐增加。到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的《The C Programming Language》,将C语言推向全世界,许多国家都出了译本,国内有一些C语言书就是这本书的翻译或者编译。由这本书定义的C语言后来被人们称作K&R C。 随着C语言使用得越

IP协议报文 | 芝士就是力量

https://xq-120.github.io/2022/07/29/IP%E5%8D%8F%E8%AE%AE%E6%8A%A5%E6%96%87/

网络模型网络模型常见的有7,4,5层模型。 IP协议位于四层模型中的网络层。 IP报文 版本:IP协议的版本,占4bit,目前的IP协议版本号为4,下一代IP协议版本号为6。注意这里讨论的是IPv4的报文,IPv6的报文已经不长这个样了。 首部长度:IP报头的长度。固定部分的长度(20字节)和可变部分的长度之和。共占4位。最大为1111,即10进制的15,以32bits4字节为单位,代表IP报头

SDWebImage源码分析 | 要为真理而斗争

https://xq-120.github.io/2018/03/10/SDWebImage%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/

SDWebImage源码分析 本文主要分析解决以下几个疑问: 同一图片的请求,SD如何从缓存中查找出来(key的命名规则)?或者说查找过程是怎样的?OK SD工作过程以及是如何从服务器下载的? SD是如何缓存图片的?OK 当空间不足时,它的删除策略是什么(按时间顺序,还是图片质量)? SD图片缓存机制与系统的NSURLCache的区别,为什么SD说自己的性能要略高于系统的性能? SDWebI

IO模型简介 | 要为真理而斗争

https://xq-120.github.io/2022/07/25/IO%E6%A8%A1%E5%9E%8B%E7%AE%80%E4%BB%8B/

大致有下面五种IO模型: 阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动IO模型,异步IO模型。 阻塞IO模型读数据,发现没有数据,线程就一直等待直到有数据读取。 非阻塞IO模型读数据,发现没有数据,线程不等待直接返回读错误码。由于不知道什么时候会有数据所以这种非阻塞IO模型需要调用方不断检查是否有数据。 fd默认是阻塞IO访问,可以使用fcntl函数设置为非阻塞IO: 1status =

可变参数的函数 | 要为真理而斗争

https://xq-120.github.io/2022/10/03/%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E7%9A%84%E5%87%BD%E6%95%B0/

如何声明一个可变参数的函数在无法给出所有传递给函数的参数的类型和数目时,可以使用省略号(…)指定函数参数表。有如下几种形式: 123void fun1(int a, double b, ...); //给出确定的几个参数,其他用省略号void fun2(int a ...); //省略号前有或者没有逗号都是可以的void fun3(...);

类别覆盖原始实现引发的薛定谔的bug | 芝士就是力量

https://xq-120.github.io/2021/12/18/%E7%B1%BB%E5%88%AB%E8%A6%86%E7%9B%96%E5%8E%9F%E5%A7%8B%E5%AE%9E%E7%8E%B0%E5%BC%95%E5%8F%91%E7%9A%84%E8%96%9B%E5%AE%9A%E8%B0%94%E7%9A%84bug/

Bug出现机型:iPhone7Plus iOS15.1。 描述:在开发过程中发现弹出弹窗点击关闭之后界面就卡死了。多次尝试之后,最终发现只有在调试的时候出现,把线一拔不调试的时候一切又正常了。拿另一部iPhone6Plus iOS12.5.4的手机又都不会出现。顿时感觉遇到”薛定谔的bug”了。 分析项目中对UIAlertController做了一层简单的封装,是在自己的window上presen

iOS循环播放视频 | 芝士就是力量

https://xq-120.github.io/2022/05/29/iOS%E5%BE%AA%E7%8E%AF%E6%92%AD%E6%94%BE%E8%A7%86%E9%A2%91/#more

有一个需求需要循环播放一个视频,UI希望的效果是无缝循环播放。当时觉得应该问题不大,但事实却并非如此。如果只是单纯的循环播放,确实简单。但是想要无缝丝滑连贯的循环播放却并不那么简单。 方案一:ijkplayer项目中用的ijkplayer,刚开始是监听播放完成通知,播放完后重新播放,结果发现每次播完后都要停顿一下才会继续播放。达不到无缝循环的要求。 一顿搜索之后,发现可以通过设置option的lo

补码完全指南 | 要为真理而斗争

https://xq-120.github.io/2022/07/31/%E8%A1%A5%E7%A0%81%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97/

本文基于自己的理解,试图让猪都能理解补码的概念^_^。老规矩,先是几个概念。 机器数机器数是将符号数字化的数,最高位是符号位,正数符号位为0,负数符号位为1,其余位表示数值。 真值机器数所对应的实际数值。  编程语言类型无符号数全部二进制位均代表数值,没有符号位。 有符号数最高位代表符号位(“0”表示“+”,“1”表示“-”),其余位表示数值。

layoutSubviews的调用时机 | 要为真理而斗争

https://xq-120.github.io/2017/08/20/layoutSubviews%E7%9A%84%E8%B0%83%E7%94%A8%E6%97%B6%E6%9C%BA/

layoutSubviews的调用时机方法说明: 该方法在iOS 5.1及更低版本上不执行任何操作。 否则,该方法将使用你设置的约束来确定子视图的大小和位置。 该方法由layoutIfNeeded自动调用,所以我们不能手动去调用它.在需要重新布局子视图时,可以调用[self layoutIfNeeded]或[self setNeedLayout]; 手动触发layoutSubviews调用[sel

OC block基本操作--Block的声明、赋值与调用 | 芝士就是力量

https://xq-120.github.io/2017/12/03/OC%20block%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C--Block%E7%9A%84%E5%A3%B0%E6%98%8E%E3%80%81%E8%B5%8B%E5%80%BC%E4%B8%8E%E8%B0%83%E7%94%A8/

Block的声明、赋值与调用Block变量的声明和C语言的函数指针声明几乎一样,只是将”*”改为”^”.如下: 返回值类型 (^变量名称) (变量类型 变量1, 变量类型 变量2, ...) 例:int (^blkVar)(int a, int b); Block语法一个Block语法代表一个Block类型变量的值.它的写法和C语言函数的定义很像.仅有两点区别: 没有函数名. 在返回值前面加上”

制作CocoaPods公开库 | 要为真理而斗争

https://xq-120.github.io/2020/04/16/%E5%88%B6%E4%BD%9CCocoaPods%E5%85%AC%E5%BC%80%E5%BA%93/

  1. 创建要公开的pod库 主要包含pod源码和pod sepc文件、许可证等。 这个过程可以先在本地创建好,再到GitHub创建对应的仓库,然后将本地pod添加到远程仓库。 也可以先在GitHub创建好仓库,再clone到本地,然后在clone的目录下创建pod。 pod sepc文件的说明可以参考: CocoaPods 系列之三 Podspec 语法说明 cocoapods官网文档 Pods

iOS 事件分发与手势识别 | 要为真理而斗争

https://xq-120.github.io/2019/05/19/iOS%20%E4%BA%8B%E4%BB%B6%E5%88%86%E5%8F%91%E4%B8%8E%E6%89%8B%E5%8A%BF%E8%AF%86%E5%88%AB/

iOS 事件分发与手势识别在讲事件的分发之前,有三个概念不得不提:响应者对象, nextResponder, 响应者链. 响应者对象在iOS系统中,能够响应并处理事件的对象称之为responder object, UIResponder是所有responder对象的基类。UIApplication,UIViewController,UIView和所有继承自UIView的UIKit类(包括UIWin

左移与右移 | 要为真理而斗争

https://xq-120.github.io/2022/10/17/%E5%B7%A6%E7%A7%BB%E4%B8%8E%E5%8F%B3%E7%A7%BB/

左移与右移: 1234567891011121314151617181920">>"右移操作规则:最低位丢弃。正数前面补零,负数前面补1。"<<"左移操作规则:最高位丢弃。无论正负数,后面补零。建议:左右移时参数最好限定为无符号数或正整数。有符号数需要注意的地方太多了。有符号数:根据内存分布,按上述规则移动。左移:由于有符号数最高位为

OC内存管理之对象的引用计数 | 芝士就是力量

https://xq-120.github.io/2020/09/16/OC%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E4%B9%8B%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%BC%95%E7%94%A8%E8%AE%A1%E6%95%B0/

源码版本:objc4-781 我们都知道OC的内存管理是通过引用计数来管理的,对象刚创建时引用计数为1,retain后+1,release后-1,当引用计数减为0时就会被销毁。那么问题就来了,操作的这个引用计数值是保存在哪的?今天就来研究一下这个问题。 先说结论:早期OC对象的引用计数都是存储在引用计数表中的,但是后来Apple的工程师可能觉得每次都从表中查找修改效率有点低,于是做了一些优化,如果

iOS输入输出流 | 芝士就是力量

https://xq-120.github.io/2023/05/14/iOS%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%B5%81/

流式读写数据,所谓流式就是像小溪流一样细水长流避免峰值影响。它可以让你避免一次性将数据加载到内存,从而导致内存暴涨。比如播放一个本地视频文件,你不需要先将整个视频都加载到内存再播放,而是读取一段播放一段。 系统提供了两个子类NSInputStream和NSOutputStream用于流式处理。NSInputStream用于流式读取数据,NSOutputStream用于流式写入数据。 NSInpu

KVO的使用及实现原理 | 要为真理而斗争

https://xq-120.github.io/2022/11/24/KVO%E7%9A%84%E4%BD%BF%E7%94%A8%E5%8F%8A%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/?

KVO使用KVO,观察者与被观察者.被观察者添加某个观察者,观察自身某一属性的变化.当被观察者的属性值发生变化时,被观察者会直接将变化发送给观察者 (通过给观察者发送observeValueForKeyPath:消息),这也是和通知差别比较大的地方. 1.观察者需要实现observeValueForKeyPath:方法,并在该方法中做出相应行为.如果观察者没有实现observeValueForKe

UITableViewCell重用导致的图片错乱问题 | 要为真理而斗争

https://xq-120.github.io/2016/04/24/UITableViewCell%E9%87%8D%E7%94%A8%E5%AF%BC%E8%87%B4%E7%9A%84%E5%9B%BE%E7%89%87%E9%94%99%E4%B9%B1%E9%97%AE%E9%A2%98/

tttttttttt之前做过一个视频信息列表展示的模块,cell很简单就是左边图片,右边文字信息。当时用的SDWebImage加载图片并没有看到图片错乱的情况。但是,如果是自己写的图片下载器,不注意处理是会导致图片错乱的。 今天写了个Demo,验证及解决这个问题。实验环境:cell依然是左边图片,右边文字信息。图片两张,一张大图片A(风景),一张小图片B(人物),采用自己实现的原始图片下载器异步下

iOS synchronized实现原理 | 要为真理而斗争

https://xq-120.github.io/2021/08/01/iOS%20synchronized%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/

源码版本:objc4-781 @synchronized介绍@synchronized 所做的事情跟锁(lock)一样:它防止不同的线程同时执行同一段代码。但相比于使用 NSLock 创建锁对象、加锁和解锁来说,@synchronized 用着更方便,可读性更高。 @synchronized是对mutex递归锁的封装, @synchronized(obj)内部会根据传入的同步对象obj得到一把递归

C语言基本数据类型长度 | 芝士就是力量

https://xq-120.github.io/2023/04/06/C%E8%AF%AD%E8%A8%80%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E9%95%BF%E5%BA%A6/#more

题外话C语言由Dennis M. Ritchie在1973年设计和实现。从那以后使用者逐渐增加。到1978年Ritchie和Bell实验室的另一位程序专家Kernighan合写了著名的《The C Programming Language》,将C语言推向全世界,许多国家都出了译本,国内有一些C语言书就是这本书的翻译或者编译。由这本书定义的C语言后来被人们称作K&R C。 随着C语言使用得越

一种可行的边下边播方案for AVPlayer | 芝士就是力量

https://xq-120.github.io/2020/07/18/%E4%B8%80%E7%A7%8D%E5%8F%AF%E8%A1%8C%E7%9A%84%E8%BE%B9%E4%B8%8B%E8%BE%B9%E6%92%AD%E6%96%B9%E6%A1%88for%20AVPlayer/

前言什么是边下边播? 个人理解边下边播指的是从服务器获取到的数据一边供给播放器播放一边缓存到本地,即使用一遍的流量完成播放和缓存。下次播放时有缓存的地方则播放缓存数据,没有缓存的地方则从服务器获取再播放。 0.边下边播方案目前的边下边播实现方案大致有两种:一种是使用本地代理服务器,一种是使用系统的AVAssetResourceLoaderDelegate。 使用本地代理服务器该方案是在播放器与视频

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.