草庐IT

objc_setProperty_atomic_copy

全部标签

apple 为什么要改 objc_msgSend 的类型申明

原文:https://mikeash.com/pyblog/objc_msgsends-new-prototype.html总结:objc_msgSend类型申明改变的原因:让错误在编译的时候发生,而不是等到运行时。为什么有运行时错误:ABI的错配,调用方的ABI(对参数的传递)和接收方ABI(对参数的处理)错配了为什么错配:我传的是float,你把我当double了,浮点转成双精度浮点,这可不是和short转int单单高位补几个0就可以了为什么float转double了:C语言经常搞这种骚操作,毕竟处理数据的时候,用更高的精度有好处。怎么阻止float转double:可以把函数中的参数类型申

Advanced-Copy—在 Linux 中复制/移动文件时显示进度条

概述Advanced-Copy是一个功能强大的命令行程序,非常相似,但对原始cp命令和mv工具进行了少许修改。这个cp命令的修改版本添加了一个进度条以及将大文件从一个位置复制到另一个位置所花费的总时间。此附加功能非常有用,尤其是在复制大文件时,这让用户了解复制过程的状态以及完成所需的时间。在Linux中安装Advanced-Copy在Linux系统中安装Advanced-Copy实用程序的唯一方法是使用以下单个curl命令从源构建,该命令将下载、修补、编译coreutils并生成文件:和../advcpmv/advcp./advcpmv/advmv。#curlhttps://raw.githu

Advanced-Copy—在 Linux 中复制/移动文件时显示进度条

概述Advanced-Copy是一个功能强大的命令行程序,非常相似,但对原始cp命令和mv工具进行了少许修改。这个cp命令的修改版本添加了一个进度条以及将大文件从一个位置复制到另一个位置所花费的总时间。此附加功能非常有用,尤其是在复制大文件时,这让用户了解复制过程的状态以及完成所需的时间。在Linux中安装Advanced-Copy在Linux系统中安装Advanced-Copy实用程序的唯一方法是使用以下单个curl命令从源构建,该命令将下载、修补、编译coreutils并生成文件:和../advcpmv/advcp./advcpmv/advmv。#curlhttps://raw.githu

Pulsar:一个由社区主导的以继承 Atom 的开源代码编辑器

微软决定杀死Atom文本编辑器,以支持VisualStudioCode,这并不奇怪。如果你不知道,你可以看一下我们以前的报道:​​为了支持微软VSCode,微软的GitHub正在扼杀GitHub的Atom编辑器​​虽然你可能有了更好的选择,但曾经流行的Atom是一个令人印象深刻的工具。它有一个可用的社区构建版;然而,还有一个新的版本(Pulsar),旨在实现与原始Atom对等的功能,并引入现代功能和更新架构。根据它的文档,原来开发Atom社区版的团队现在参与创建了Pulsar。他们之所以做一个独立的复刻版本,是因为项目的目标不同。Pulsar 希望将一切现代化,以成为Atom的继承者。?Pul

Pulsar:一个由社区主导的以继承 Atom 的开源代码编辑器

微软决定杀死Atom文本编辑器,以支持VisualStudioCode,这并不奇怪。如果你不知道,你可以看一下我们以前的报道:​​为了支持微软VSCode,微软的GitHub正在扼杀GitHub的Atom编辑器​​虽然你可能有了更好的选择,但曾经流行的Atom是一个令人印象深刻的工具。它有一个可用的社区构建版;然而,还有一个新的版本(Pulsar),旨在实现与原始Atom对等的功能,并引入现代功能和更新架构。根据它的文档,原来开发Atom社区版的团队现在参与创建了Pulsar。他们之所以做一个独立的复刻版本,是因为项目的目标不同。Pulsar 希望将一切现代化,以成为Atom的继承者。?Pul

翻译 Basic Operations atomic flush

原网址:https://github.com/facebook/rocksdb/wiki/Atomic-flush(有道)RocksDBsupportsatomicflushofmultiplecolumnfamiliesiftheDBoptionatomic_flushissettotrue.TheexecutionresultofflushingmultiplecolumnfamiliesiswrittentotheMANIFESTwith'all-or-nothing'guarantee(logically).Withatomicflush,eitherallornomemtableso

翻译 Basic Operations atomic flush

原网址:https://github.com/facebook/rocksdb/wiki/Atomic-flush(有道)RocksDBsupportsatomicflushofmultiplecolumnfamiliesiftheDBoptionatomic_flushissettotrue.TheexecutionresultofflushingmultiplecolumnfamiliesiswrittentotheMANIFESTwith'all-or-nothing'guarantee(logically).Withatomicflush,eitherallornomemtableso

IO-Zero Copy

要说IO的性能优化就不得不提ZeroCopy(零拷贝),虽然名字叫零拷贝,但其实并不是完全没有拷贝过程,而是尽量减少不必要的拷贝及上下文切换。各种消息队列可以说是将零拷贝技术用到了极致,像Kafka、RocketMQ都用到到了mmap、sendfile等零拷贝技术来提升服务的性能。我们最常用的应用服务Tomcat、Nginx在返回静态资源的时候,都有使用零拷贝技术。普通IO操作以实现类似Tomcat中返回静态资源的功能举例。这个过程一般是读取文件内容,不需要做任何处理直接将读取的数据写入网络Socket中返回给用户,类似下面的伪代码过程。read(file,tmp_buf,len);write

IO-Zero Copy

要说IO的性能优化就不得不提ZeroCopy(零拷贝),虽然名字叫零拷贝,但其实并不是完全没有拷贝过程,而是尽量减少不必要的拷贝及上下文切换。各种消息队列可以说是将零拷贝技术用到了极致,像Kafka、RocketMQ都用到到了mmap、sendfile等零拷贝技术来提升服务的性能。我们最常用的应用服务Tomcat、Nginx在返回静态资源的时候,都有使用零拷贝技术。普通IO操作以实现类似Tomcat中返回静态资源的功能举例。这个过程一般是读取文件内容,不需要做任何处理直接将读取的数据写入网络Socket中返回给用户,类似下面的伪代码过程。read(file,tmp_buf,len);write

@property声明的 NSArray、NSDictionary为什么经常使用 copy 关键字

分析:NSString、NSArray、NSDictionary含有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作(就是把可变的赋值给不可变的),为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。经常使用copy修饰是因为:1、遵循父类指针可以指向子类对象原理,使用copy修饰是为了让本对象的属性不受外界影响,无论给我传入是一个可变对象还是不可对象,我本身持有的是一个不可变的副本。2、如果我们使用是strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,