首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在 Linux 使用 exa 不是 ls?

我们生活在一个繁忙的世界里,当我们需要查找文件和数据时,使用 ls 命令可以节省时间和精力。但如果不经过大量调整,默认的 ls 输出并不十分舒心。...这个工具是用 Rust 编写的,该语言以并行性和安全性闻名。...它使用颜色来区分文件类型和元数据。它能识别符号链接、扩展属性和 Git。而且它体积小、速度快,只有一个二进制文件。 跟踪文件 你可以使用 exa 来跟踪某个 Git 仓库中新增的文件。...image.png 相信 `exa 是最简单、最容易适应的工具之一。它帮助我跟踪了很多 Git 和 Maven 文件。...它的颜色编码让更容易在多个子目录中进行搜索,它还能帮助我了解当前的 xattrs。

1.9K40

Swift 中的 MainActor 使用和主线程调度

在构建应用程序时,在主线程执行UI更新任务是很重要的,在使用几个后台线程时,这有时会很有挑战性。使用@MainActor属性将帮助你确保你的UI总是在主线程更新。...如果您不熟悉 Swift 中的 Actors,建议您阅读的文章Swift中的Actors 使用以如何及防止数据竞争,全局Actors的行为类似于Actors,不会在这篇文章中详细介绍Actors的工作方式...MainActor 是一个全局唯一的 Actor,他在主线程执行他的任务。它应该被用于属性、方法、实例和闭包,以在主线程执行任务。...} } 换句话说,不再需要使用 DispatchQueue.main.async了。...应该在什么时候使用MainActor属性? 在 Swift 5.5 之前,你可能定义了很多调度语句,以确保任务在主线程运行。

2.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

了解 Swift 调度器

为了解决这个问题,我们可以使用 DispatchQueue.main 和 threads。 在本教程中,我们将学习什么是调度器,以及我们如何在iOS应用开发中使用它们来管理队列和循环。...上面的代码块是在主线程运行的。 RunLoop RunLoop 调度器用于在一个特定的运行循环执行任务。在运行循环的行动可能是不安全的,因为 RunLoops 不是线程安全的。...切换调度器 在使用 Combine 的 iOS 开发中,许多消耗资源的任务都是在后台完成的,以防止应用程序的 UI 冻结或完全崩溃。然后,Combine 切换调度器,使任务的结果在主线程执行。...name = null} Received e on thread {number = 7, name = null} 在上面的代码块中,这些值是从不同的线程不是线程发出的...现在,发布者不会因为阻塞我们的主线程冻结我们的应用程序。 总结 在这篇文章中,我们回顾了什么是调度器以及它们如何在 iOS 应用程序中工作。

2.5K10

iOS线程-GCD

前言 Hi Coder,是 CoderStar! 今天给大家带来多线程系列的第二篇文章 -- GCD,其大概率是我们在使用线程时最常用的方式了。...对开发者而言,面对的不再是一篇文章iOS线程-Thread所描述的线程,CGD 将线程概念模糊掉,开发者转而面对的是更上层的队列和任务,不再需要考虑线程的周期以及调度等等,这些交由 GCD 内部处理就好...GCD层次图 qos 属性扩展 如果大家对上次的iOS线程-Thread还有印象的话,想必会对Thread的qualityOfService属性有点印象,其类型为QualityOfService;iOS...---- QoS 覆盖信息 noQoS // 不指定 QoS,由调用线程或队列来指定。 inheritQoS // DispatchWorkItem 会采用队列的 QoS class,不是当前的。...enforceQoS // DispatchWorkItem 会采用当前的 QoS class,不是队列的。 那DispatchWorkItem与普通闭包方式有哪些区别呢?

77330

Swift多线程:GCD进阶,单例、信号量、任务组1. dispatch_once,以及Swift下的单例2. dispatch_after3. 队列的循环、挂起、恢复4. 信号量(semaphore

所以dispatch_after不会阻塞当前任务,并不是先把任务加到线程里面,等时间到了在执行。而是等时间了,才加入到线程中。 我们使用两种时间格式来看看。...如果需要循环的任务里面有特别耗时的操作,我们一篇文章里面说是应该放在global里面的。如何避免在主线程操作这个呐??? 来,给三秒时间想想。...看到调用这个方法的时候是不是就是在UI线程里面这么写下来的嘛?那就开启一个gloablQueue,让它来进行不就好了嘛!BINGO! 这位同学,你已经深得真谛,可以放学后到我家后花园来了。...iOS线程系列之三:使用GCD实现异步下载图片。 好奇宝宝们有没有想过,在创建信号量的时候初始值设置成2或者更大的数,例如50,会是什么效果? 自己敲敲代码试试喽,想想看。...两个任务都是多线程,我们其实并不知道什么时候才能执行完毕。这个时候,就可以靠信号量,让大家互相等待。 为了更简化这个过程,例子里面模拟了一个在另外一个方法中需要耗时1秒的一个操作。

2.4K50

iOS线程 - Operation

我们之前已经讲过 iOS线程-Thread 以及 iOS线程-GCD,我们今天来聊一聊 iOS线程中最后一种比较常用的方式--Operation。...的存在,同一个 Queue 的 Operation 之间有优先级,所以先进入 Queue 的 Operation 不一定先运行,所以当maxConcurrentOperationCount设置为 1 时并不是一个真正意义的串行队列...1、从两者所在层次来讲:GCD 底层是 C 语言的 API, Operation 是 GCD 基础更高层次的抽象,那 GCD 相对 Operation 来说肯定是又快又轻的。...(Operation 在使用 GCD API 的基础还会加上一些锁用来保证线程安全) 但是反过来说因为 Operation 是更高层次的抽象,按照一般的经验法则来看,我们应首先使用最高级别的 API,...*))出来之后,从一定意义讲,DispatchWorkItem可以类比到Operation对象,DispatchQueue可以类比到OperationQueue对象。

91230

Swift多线程之Operation:按优先级加载图片1. 进程和线程2. Operation3. Basic Demo4. 案例实现

于是果断的决定这个系列不出意外,基本就用Swift来写了。如果有特别强烈要求的同学,打算重金打赏宅胖两块钱要求提供OC源代码的,也会毫无底线的答应这个无理高瞻远瞩、英明神武的要求。 ?...嗯,说的是正常情况下。当然还是有不正常情况啊,例如使用iOS提供的极少数的几种进程间通讯的工具。 1.2 线程 线程:进程想要执行任务,必须要有线程,每个进程至少有一条线程线程就是用来干活的。...中的多线程 刚才说了,iOS App一旦运行,默认就会开启一条线程。...这个是苹果推荐使用的一种多线程技术,好处是不用关心线程线程的生命周期。 ? image.png 看完这个导图,是不是确实觉得Operation简单?属性、方法没有那么多。...Swift中出现了可选值这么一个东西,这个不是这次的重点。想深入了解的童鞋可以参看这篇:Swift可选值(Optional Values)介绍:?和!使用总结 。感谢@kmplayer 童鞋。

92030

iOS线程之GCD、OperationQueue 对比和实践记录

应用程序使用多核的传统方法是创建多个线程。与依赖线程不同,iOS 采用异步设计方法来解决并发问题。...通常,这项工作涉及获取一个后台线程,在该线程启动所需的任务,然后在任务完成时向调用方发送通知(通常通过一个回调函数)。 iOS 提供了一些技术,允许您异步执行任何任务,而无需自己管理线程。...相比较 GCD 使用更加简单,并且提供了一些用 GCD 不是很好实现的功能。是苹果公司推荐使用的并发技术。...更常见的做法是取消所有队列操作,以响应某些重要事件,如应用程序退出或用户专门请求取消,不是有选择地取消操作。...如果操作对象的执行顺序对您很重要,那么您应该在将操作添加到队列之前使用 依赖关系 建立该顺序,或改用 GCD 的 串行队列 实现序列化效果。

1.5K40

iOS-Swift 完整登录方案(touchID&faceID& keychain)一iOS-Swift 完整登录方案(touchID&faceID& keychain)一

需要实现的需求如下: 首次登录使用密码或第三方登录 登录完成后开启生物验证 对已开启生物验证的用户可免密登录 可使用多设备登录 用户token密文传输(RSA加密) 可在无网络的情况下个人信息的展示 需求整理完之后想说产品你...涉及到知识点: 接入三方登录(友盟等平台有成熟的方案,不是本文讨论的重点) touchID、faceID keychain RSA加密 本地缓存,安全起见我选择NSKeyedArchiver(归档) 明确了目标就开始搞...NSKeyedArchiver 这个也是iOS中比较基础的数据本地化方案,因为Apple对数据会做加密然后写成文件,安全性相对较高,个人信息推荐使用这种方式来缓存。...一定要注意这个坑补了好久,放出最基本的代码 //归档 if #available(iOS 11.0, *) { do { let data = try NSKeyedArchiver.archivedData...本人试过很多版本,也尝试着去了解RSA这个非对称加密,在iOS系统中用Security库来实现加密算法。 其实只要了解该加密算法是使用一对秘钥,公钥是用来加密的,私钥是用来解密的就好了。

2K20

iOS线程线程锁Swift-Demo示例总结

startTestBtnAction override func removeFromDataImageArray() -> Void { // 我们使用多个线程去删除一个数组里面的东西...NSCondition条件锁,首先它也是遵循NSLocking协议的,这点和我们上面说的NSLock是一致的,所以它的加锁和解锁方式和我们前面说的NSLock是一样的,就是lock和unlock方法,你要是简单的使用它来解决线程同步的问题...使用递归锁可以在一个线程中反复获取锁不造成死锁,在这个过程中也会记录获取锁和释放锁的次数,只有等两者平衡的时候才会释放,下面是我们Demo中的示例:        // 递归调用 func...但我们是在Swift中来讨论线程锁的,这里也就不能再使用 @synchronized,因为在Swift中它是不在使用了的,相应代替它的是下面下面这两句:objc_sync_enter()  中间是你需要加锁的代码...大概的了解一下,具体的问题可以去这里仔细看看:不再安全的 OSSpinLock       2、dispatch_barrier_async/dispatch_barrier_sync       这个在前面总结

3.1K81

用这些 iOS 技巧让你的 APP 性能更佳

但你有没有想过为什么必须使用这个笨拙的 API,不是只传递一个 TableViewCell的数组?让我们来看看为什么。 假设你有一个有一千行的表视图。...由于本节仅涵盖了状态保存和恢复的基础知识,因此推荐 Apple Inc. 的以下文章。...应当尽量避免在主线程执行复杂的计算,网络和繁重的IO操作(例如,磁盘的读取和写入)。 你可能曾经使用过突然对你的操作停止响应的应用程序,就好像应用程序已挂起。...较高的 QoS 值也会因使用更多资源消耗更多能量。 以下是从最高优先级到最低优先级的 QoS 值列表: ?...需要记住,所有 UIKit 代码始终都应该在线程执行。

3.2K30

优雅的处理网络数据,你真的会吗?不如看看这篇.

所以作为 iOS 开发者的我们,在日常的开发中,也早已不是处理显示零星的数据这么简单,为了流量往往我们需要在 App 里显示大量有价值的信息来吸引用户,如何优雅的显示这些海量的数据,考量的就是你的个人经验了...为了改善应用程序体验,在 iOS 10 ,Apple 对 UICollectionView 和 UITableView 引入了 Prefetching API,它提供了一种在需要显示数据之前预先准备数据的机制...其实这个无限滚动并不是真正意义的永无止尽,严格意义上来讲它是有尽头的,只不过这个功能背后的数据是不可估量的,只有大量的数据做支持才能让应用一直不断的从服务端获取数据。...如何避免滚动时的卡顿 当你遇到滚动卡顿的应用程序时,通常是由于任务长时间运行阻碍了 UI 在主线程的更新,想让主线程有空来响应这类更新事件,第一步就是要将消耗时间的任务交给子线程去执行,避免在获取数据时阻塞主线程...苹果提供了很多为应用程序实现并发的方式,例如 GCD,在这里对 Cell 的图片进行异步加载使用的就是它。

1.3K20

Swift 线程安全数组

有并发的地方就存在线程安全问题,尤其是对于 Swift 这种还没有内置并发支持的语言来说线程安全问题更为突出。下面我们通过常见的数组操作来分析其中存在的线程问题,以及如何实现一个线程安全数组。...读操作 } 由于写操作并不需要返回操作结果,所有这里可以使用异步的方式进行。...这与我们在学习操作系统是的 读者-作者 问题本质是一类问题,我们可以通过共享互斥锁来解决写操作的数据竞争问题。对于 iOS 来说它就是 GCD 中的写栏栅 barrier 机制。...通过 filePrivate 属性 array 和 queue , SafeArray 成功的实现了大多数数组常用功能,更为关键的是该类型并发安全:所有的写操作都通过 barrier 方式的异步进行,读操作则与内置...虽然由于使用了 GCD 机制导致速度慢了 30% 左右并且使用了更多的内存,但是与之对应的是我们实现了一个并发安全的数组类型。 原文地址

2K00
领券