一、什么是缓存这里说的缓存是一种广义的概念,在计算机存储层次结构中,低一层的存储器都可以看做是高一层的缓存。比如Cache是内存的缓存,内存是硬盘的缓存,硬盘是网络的缓存等等。缓存可以有效地解决存储器性能与容量的这对矛盾,但绝非看上去那么简单。如果缓存算法设计不当,非但不能提高访问速度,反而会使系统变得更慢。从本质上来说,缓存之所以有效是因为程序和数据的局部性(locality)。程序会按固定的顺
iOS 底层探索篇 —— KVC 底层原理1. Method Swizzling的坑与应用1.1 method-swizzling 是什么?1.2 坑点坑点1:method-swizzling使用过程中的确保执行一次解决方案坑点2:子类没有实现,父类实现了解决方案坑点3:父类子类都没有实现解决方案class_replaceMethod, addMethod, method_exchangeImp
转载
2023-08-03 23:21:56
71阅读
碰见的问题是,客服反馈有一些图片没有及时更新导致自己没有抢到优惠,才注意到webview缓存相关的一些知识。后台配合做了一些修改,通过控制cache-control实现对不同的资源进行不同的缓存策略。现在做一下总结。 1.NSURLRequestUseProtocolCachePolicy如果缓存数据不存在,则直接从源端加载数据;否则,如果缓存响应中没有明确表示每次请求必须重新验证,
转载
2023-07-14 23:10:34
121阅读
1. HashSet底层原理 基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,hashset实现简单,hashset操作是调用底层hashmap的方法。默认初始一个容量未16负载因子为0.75的hashmap。2. HashMap底层原理 HashMap是基于哈希表的Map接口的非同步实现。 允许使用null值和null键。无序。 HashMap数据结构“数组+链表+
转载
2023-11-07 06:27:28
55阅读
前面一片文章介绍了如何上传和下载文件,这篇文章将介绍一下如何在iOS设备中进行缓存。 这篇文章将只介绍一下将内容缓存到内存中,下一篇文章就介绍一下在iOS磁盘上缓存内容。 使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。 内存缓存我们可以使用sdk中的NSURLCache类。N
转载
2024-01-31 21:11:16
87阅读
聪明,是客户对咨询顾问的印象,其实这种"聪明",更多是因为他们比普通人更熟练地运用"框架"思维,经过长期的咨询锤炼,如何界定问题、分析问题、解决问题的框架已经成为他们的一种本能。 在麦肯锡金字塔原理中,芭芭拉说过:“麦肯锡并不神秘、方法论铸就传奇”,的确,作为曾经的麦肯锡人,我认为很多思维方式并不像外界想象的那样神秘,而且很多人都懂,只是没有养成下意识的思维习惯。- 一、议题思维面对问题慢一点动手
JDK1.8之前HashMap在jdk1.8之前HashMap底层采用的数组+链表;HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。HashMap储存的是键值对,HashMap很快。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。数组:存储区间连续,占用内
转载
2023-07-13 18:16:46
162阅读
注意:想做缓存,一定是GET请求哦,POST请求的话你还做什么缓存啊!
前些日子,我因为不会做缓存,但是项目有需要,我就百度了很多,慢慢的对缓存有了了解。原理上明白了,但是还是不会做。我最后发现,百度到的那些是对的,就是很简单(需要我们做的很少)。
在这里我针对我做的做一下介绍(我希望得到大神的指点,毕竟我是理解而不会用AFN做,这里做的很简单)分为三步,你可以做一个demo试试:1、在AppDe
转载
2023-07-20 20:51:52
130阅读
# iOS RAC底层开发指南
## 1. 介绍
在iOS开发中,RAC(ReactiveCocoa)是一种基于响应式编程的框架,它可以帮助我们更方便地处理异步操作和事件响应。本文将指导你如何实现iOS RAC底层开发。
## 2. 实现流程
下面的表格展示了整个实现过程的步骤:
| 步骤 | 描述 |
|---|---|
| 步骤一 | 创建一个新的iOS项目 |
| 步骤二 | 导入
原创
2023-11-19 06:47:20
43阅读
转载:iOS开发-UITableView的底层实现
转载
2023-05-22 11:57:49
69阅读
# iOS set 方法的底层实现
在 Objective-C 和 Swift 中,`set` 方法是一个非常重要的概念,尤其是在 iOS 开发中。它用于设置对象的属性,通常与实例变量(ivars)搭配使用。然而,关于 `set` 方法的底层实现,很多开发者并不是特别清楚。本文将深入探讨 `set` 方法的底层实现,配合代码示例和类图,帮助大家更好地理解这个概念。
## 1. 基础概念
在
教你iOS改变frame的底层方法
作为一名经验丰富的开发者,我将教你如何在iOS中改变frame的底层方法。在开始之前,我将为你展示整个流程,并为每个步骤提供详细的说明和示例代码。
## 整体流程
下面是改变frame的底层方法的整体流程,你可以使用表格形式来展示。
| 步骤 | 描述 |
| ---- | ---- |
| 步骤1 | 获取要改变frame的视图 |
| 步骤2 | 创
原创
2023-12-13 09:48:06
38阅读
文章目录SideTables补充知识SideTablespinlock_t slock自旋锁锁分离锁、分拆锁自旋锁和互斥锁苹果的选择RefcountMapweak_table_tweak_entry_tSideTables和SideTable的关系对于__weak修饰符修饰的变量的处理objc_initWeak两个参数:作用storeWeak()weak_unregister_no_lockwe
转载
2023-07-25 09:18:58
165阅读
关于scrollView的思考在iOS开发中我们会大量用到scrollView这个控件,
转载
2022-11-28 16:51:45
137阅读
上一篇大致了解了AFNetworking。网络请求主要的核心就是建立连接传送自己的参数发送请求,然后得到返回结果,对数据进行解析。这里大致说一下AFNetworking的AFURLRequestserialization。构建请求 1)格式化参数 用户参数(NSArray,NSDictionary,NSSet等)转化为AFNetworking要求的数据,每一个key-value对都用一个对象A
转载
2023-11-21 22:43:35
94阅读
一、引言 AFNetworking是iOS/OS开发中常用的一个第三方网络库,可以说它是目前最流行的网络库,但其代码结构其实并不复杂,也可以说非常简洁优美。在AFNetworking中,大量使用的线程安全的开发技巧,读此源码也是一次很好的多线程学习机会。本篇博客从主要结构和网络请求的主流程进行分享,解析了AFNetworking的设计思路与工作原理,后面还有其中
转载
2024-02-29 09:22:42
194阅读
在 iOS 开发中,缓存是一种重要的技术手段,它可以显著提升应用的性能和用户体验。然而,随着缓存技术的使用,许多开发者会遇到缓存失效、数据不一致性等问题。为了更好地解决这些“iOS 开发缓存”问题,我将记录整个过程,涵盖背景定位、核心维度、特性拆解、实战对比、选型指南及生态扩展。
### 背景定位
在讨论 iOS 开发缓存之前,我们需要了解缓存的基本概念和作用。缓存是指在存储系统中,临时保存数
# 在 iOS 中实现方法缓存的结构
在 iOS 开发中,我们经常需要对方法执行的结果进行缓存,以提高性能并减少重复计算的时间。本文将引导你一步一步实现一个简单的“方法缓存”结构。我们将收藏方法的结果,以便在多次调用相同参数时直接返回之前计算的结果。
## 流程概述
我们可以将实现方法缓存的过程分为以下几个步骤:
```mermaid
flowchart TD
A[开始] -->
使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。内存缓存我们可以使用sdk中的NSURLCache类。NSURLRequest需要一个缓存参数来说明它请求的url何如缓存数据的,我们先看下它的CachePolicy类型。
NSURLRequest *request = [NSURL
转载
2023-12-29 23:10:04
85阅读
NSURLRequestCachePolicy指定缓存逻辑。URL加载系统提供了一个磁盘和内存混合的缓存,来相应网络请求。这个缓存允许一个应用减少对网络连接的依赖,并且增加性能。使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程序高效的运行。有时候我们需要将远程web服务器获取的数据缓存起来,减少对同一个url多次请求。
NSURL
转载
2023-10-27 12:48:34
40阅读