自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 基于汇编实现 hook objc_msgSend,统计方法耗时的方案

介绍了一个通过hook objc_msgsend,来统计方法耗时,并支持可视化的方案

2024-12-25 14:06:02 796

原创 使用os_signpost进行iOS代码耗时分析

本文介绍了iOS应用如何使用os_signpost工具来进行代码耗时分析

2024-12-18 18:21:35 610

原创 iOS Delegate模式

本文介绍了iOS中常用的delegate模式

2024-12-17 19:36:07 1278

原创 iPhone所有机型的分辨率

在iOS开发中,pt 和 px 是两个重要的单位,它们分别代表逻辑分辨率和物理分辨率,本文总结了目前所有 iPhone 机型的分辨率,便于开发使用

2024-12-14 14:49:14 888

原创 用rand4()实现rand6()

你可以使用 rand4() 函数来实现 rand6(),通过以下方法来实现一个均匀分布的随机数生成器。

2024-09-04 23:33:52 1056

原创 iOS 中,用户点击一个按钮到响应的全部流程

整个过程涉及多个层次,从硬件传感器检测到用户触摸,到操作系统内核处理事件,再到 UIKit 事件分发和应用层的响应。这个流程保证了 iOS 应用在用户与设备交互时能够实时响应,并提供流畅的用户体验。

2024-09-03 09:43:55 1225

原创 React Native

React Native 是一个使用 React 和应用平台的原生功能来构建 Android 和 iOS 应用的开源框架。

2024-08-23 10:30:19 1064

原创 iOS WebView

在iOS开发中,WebView 是一个用于显示网页内容的控件。它允许你在应用程序中嵌入一个浏览器窗口,以便加载和显示网页。iOS 提供了两种主要的 WebView 类:UIWebView 和 WKWebView。其中,WKWebView 是较新的、更强大的选项,推荐在新项目中使用。

2024-08-21 11:05:29 1929

原创 iOS Native与JS通信:JSBridge

对于移动应用程序的开发,有多种技术选型,最基础的是原生开发,后面由于动态化和跨平台的需求,引入了跨端的方案,比如H5、RN。以原生+H5 混合开发模式为例,H5页面经常需要使用到Native端的功能,比如打开二维码扫描、调用本地相册、获取用户信息等,同时Native端也需要向H5页面发送消息、更新状态等。所以需要一种通信机制,来让两端进行通信。这时候就引入了桥(Bridge)的概念。

2024-08-21 10:51:18 1975

原创 iOS网络---NSURLSession

Foundation 是苹果公司提供的一个基本框架,用于支持 iOS、macOS、watchOS 和 tvOS 应用程序的开发。它提供了一系列基本的数据类型、集合、文件操作、日期和时间处理、网络通信等功能,是 Cocoa 和 Cocoa Touch 框架的核心部分。NSURLSession 是 Foundation 框架中的一个类,专门用于处理网络请求和数据传输。它在 iOS 7 中引入,用于替代 NSURLConnection,提供了一种更现代和灵活的方式来进行网络通信。

2024-08-11 19:31:24 1023

原创 iOS网络---AFNetworking

NSURLSession 是 Apple 提供的基础网络库,用于处理 HTTP/HTTPS 请求。

2024-08-11 19:11:11 1366

原创 iOS内存管理---MRC vs ARC

_unsafe_unretained与__weak类似,它不会增加对象的引用计数,但两者有一个重要的区别:当对象被释放时,__unsafe_unretained指针不会自动设置为nil,从而可能导致悬挂指针(dangling pointer),这会导致访问已释放对象时出现崩溃或未定义行为。引用计数的持有与释放应该是成对出现的,否则会出现内存泄漏。系统提供的对象,内存管理可能被优化过,所以引用计数打印是-1,官方文档也说明 retainCount 返回的引用计数可能是未定义的,所以用自定义对象来进行实验。

2024-08-11 18:54:24 923

原创 iOS基础---Protocol

为了使视图尽可能可重复使用,有关信息的所有决策都应留给另一个对象,即数据源。这意味着同一视图类的多个实例只需与不同的源进行通信即可显示不同的信息。饼图视图所需的最少信息包括段数、每个段的相对大小以及每个段的标题。默认情况下,协议中声明的所有方法都是必需方法。这意味着任何符合该协议的类都必须实现这些方法。协议中还可以指定可选方法。这些方法是类仅在需要时才可以实现的方法。就像 Objective-C 类可以从超类继承一样,您也可以指定一个协议符合另一个协议。相比之下,协议用于声明与任何特定类无关的方法和属性。

2024-08-11 18:40:47 524

原创 iOS基础---KVC vs KVO

Key-Value Coding (KVC) 是一种在 Objective-C 中通过字符串标识符(键)访问对象属性的机制。它是 Cocoa 的一部分,允许开发者通过键来获取或设置对象的属性,而不需要直接调用明确的访问器或修改器方法。

2024-08-11 18:33:33 906

原创 iOS基础---Block

Block 允许开发者为自定义控件提供灵活的事件处理机制,使得控件的使用更加灵活和强大。

2024-08-11 17:51:07 1722

原创 iOS基础---定时器:GCD、NSTimer、CADisplayLink

Dispatch Source 是 Grand Central Dispatch (GCD) 提供的一种数据结构,用于监控来自系统和应用程序的各种类型的异步事件。这些事件包括文件描述符活动、信号、定时器事件等。通过 Dispatch Source,开发者可以在特定事件发生时执行代码,而无需创建复杂的回调机制或者使用多线程轮询。

2024-08-11 16:56:49 1208

原创 iOS基础---常用三方库:Masonry、SDWebImage

定义SnapKit和Masonry是iOS开发中用于自动布局的流行框架。它们简化了使用 Auto Layout 的代码,使开发者能够更加直观和高效地进行布局设计。(🔗code背景Auto Layout 是Apple提供的一种布局系统,允许开发者定义视图之间的约束,以适应不同屏幕尺寸和设备。SnapKit和Masonry通过链式语法和简化的API,使Auto Layout的使用变得更加方便。简介Masonry。

2024-07-28 15:28:45 884

原创 iOS基础---Category vs Extension

在 iOS 开发中,类扩展(Class Extension)是一种用于在类的实现文件中声明私有方法和属性的机制。与 Category 不同,类扩展只能在类的实现文件中使用,并且必须在编译时确定。类扩展通常用于声明类的私有接口,隐藏实现细节,增强封装性。Category(类别)是Objective-C 2.0之后添加的语言特性,允许开发者在不修改原有类的情况下,为其添加新的方法。

2024-07-28 14:44:27 1148

原创 iOS基础---多线程:GCD、NSThread、NSOperation

NSThread 是苹果官方提供的,使用起来比 pthread 更加面向对象,简单易用,可以直接操作线程对象。不过也需要需要程序员自己管理线程的生命周期(主要是创建),在开发的过程中偶尔使用 NSThread。比如经常调用来显示当前的进程信息或调用来判断当前的进程是否为主线程。配合使用 NSOperation 和 NSOperationQueue 也是苹果提供的一套多线程解决方案。NSOperation 是基于 GCD 更高一层的封装,完全面向对象。但是比 GCD 更简单易用、代码可读性也更高。

2024-07-27 00:00:04 914

原创 点击一张图片,到最后渲染到屏幕,都经历了哪些流程?

读取的图片数据通常是压缩格式(如JPEG、PNG),需要解码成像素数据(位图-bitmap)。为了保证流畅的用户体验,iOS会进行一系列优化,如异步加载图片、使用CATiledLayer来分块加载大图片、使用UIImage的draw方法进行自定义渲染等。5.颜色空间转换:将解码后的图像数据从文件的颜色空间(如YCbCr或索引颜色)转换为显示设备的颜色空间(通常是RGB)。iOS系统会自动管理图片的内存使用,特别是当内存紧张时会释放不再使用的图片缓存。4.数据解码:将压缩或编码的图像数据解码为原始像素数据。

2024-06-09 14:24:41 1367 1

原创 Git分支管理(Git分支的原理、创建、切换、合并、删除分支)

在上一篇文章中,我们学习了如何使用Git的一些基本操作,例如安装Git、创建本地仓库、配置Git、添加文件、修改文件、删除文件、版本回退等操作,现在我们来学习一下Git的必杀技特性:分支模型。

2024-03-10 23:04:54 4910

原创 Git的基本操作(安装Git,创建本地仓库,配置Git,添加、修改、回退、撤销修改、删除文件)

这篇文章主要介绍了Git的一些基本操作,安装Git,创建本地仓库,配置Git,git add 和 git commit 文件,对文件进行修改,版本回退,以及如何撤销修改和删除文件,让我们对Git有初步的了解,能进行简单的版本管理。

2024-03-10 01:09:35 6636

原创 STL中push_back和emplace_back效率的对比

我们以STL中的vector容器为例。

2024-03-07 16:38:51 993

原创 什么是AJAX?它的运用场景有哪些?

AJAX 即 Asynchronous Javascript And XML(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX 是一种用于创建快速动态网页的技术。它可以令开发者只向服务器获取数据(而不是图片,HTML文档等资源),互联网资源的传输变得前所未有的轻量级和纯粹,这激发了广大开发者的创造力,使各式各样功能强大的网络站点,和互联网应用如雨后春笋一般冒出,不断带给人惊喜。Ajax是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。

2024-03-05 23:02:03 4509

原创 为什么有了HTTP协议,还要有WebSocket协议?

TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。

2024-03-05 22:28:27 985

原创 7层OSI网络模型中每一层的作用

本文主要介绍了7层OSI网络模型中每一层的作用

2024-03-04 10:43:20 496

原创 从浏览器输入一个URL后到底发生了什么?(总结自《网络是怎样连接的》)

从浏览器输入一个URL后到底发生了什么呢?浏览器向Web服务器发送请求,接收来自服务器的响应并将内容展现在浏览器中。但是这样的回答并不能体现出中间的重要过程,而这些过程会覆盖到计算机网络大部分的知识,所以我们对于这个问题回答的深度,体现了我们对计算机网络功力的深厚。而在互联网公司的面试中,也经常会通过这个问题来考察我们对网络的掌握情况。接下来我们便通过《网络是怎样连接的》一书中的思路来解答这个问题!!

2024-03-04 00:38:45 1495

原创 HTTPS的加密过程

什么是HTTPS?超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。具体介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯,而HTTPS占用443端口通讯。

2024-02-29 00:43:32 1549

原创 你真的了解Cookie和Session吗?

HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。什么是 CookieHTTP Cookie(也叫 Web Cookie或浏览器 Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。

2024-02-28 22:48:47 1225

原创 HTTP详解(HTTP的特点,状态码,工作原理,GET和POST的区别,如何解决无状态通信)!!!

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系、统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。

2024-02-28 21:33:25 1984

原创 MySQL 可重复读隔离级别,完全解决幻读了吗?

在mysql隔离可重复读级别中,针对快照读,用到了MVCC的方式解决幻读,针对当前读,用到了next-key lock解决幻读,但还有一些场景仍有幻读问题,这篇文章便是探讨这个问题!

2024-02-01 21:32:10 1880 1

原创 一篇文章带你弄懂MySQL事务!(事务特性ACID、并发读的问题、事务的隔离等级、Read View 原理、可重复读和读提交分别怎么工作)

这篇文章介绍了什么是事务,以及事务的原子性、一致性、隔离性、持久性,并介绍了4种隔离等级,并介绍了快照(Read View)的原理,然后用具体实例分析了可重复读和读提交的工作过程!

2024-02-01 17:09:02 1211

原创 MYSQL用户、权限管理(如何创建用户,给用户授权,远程登录)

MySQL的权限简单的理解就是MySQL允许你做你权利以内的事情,不可以越界。MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,由mysql_install_db脚本初始化。存储账户权限信息表主要有:user、db、tables_priv、columns_priv、procs_priv、proxies_priv这六张表(5.6版本之前还有host表,现在已经把host内容整合进user表)

2024-02-01 09:54:13 5174

原创 MYSQL视图特性

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。通过视图,可以展现基表的部分数据。而用来创建视图的表叫做基表 :base table。

2024-01-30 13:01:13 577

原创 一篇文章带你弄懂mysql的索引!(详解为什么有索引、b+树更适合做索引、索引操作、MyISAM和InnoDB索引实现)

这篇文章介绍了索引的作用,用在海量数据中查找作为实列,带我们看到了索引对查找效率的提示,然后介绍了mysql和磁盘的交互方式,探索了索引底层结构用什么实现效率更高,然后解释了索引操作,并且介绍了MyISAM和InnoDB的实现索引实现!

2024-01-30 09:40:50 892

原创 MYSQL内外连接

我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。如果联合查询,左侧的表完全显示我们就说是左外连接。如果联合查询,右侧的表完全显示我们就说是右外连接。

2024-01-29 15:45:43 585

原创 MYSQL复合查询(多表查询、自连接、子查询、union、union all)

这篇文章介绍了MYSQL的复合查询,包括多表查询、自连接、子查询、union、union all,用具体的实例来介绍了它们的用法

2024-01-29 15:25:06 990

原创 MYSQL内置函数

MySQL的内置函数不但可以在SELECT查询语句中应用,同样也可以在INSERT、UPDATE和DELECT等语句中应用。例如,在INSERT添加语句中,应用日期时间函数获取系统的当前时间,并且将其添加到数据表中。

2024-01-28 20:15:41 394

原创 MYSQL中group by分组查询的用法详解(where和having的区别)!

这篇文章主要介绍了MYSQL中分组查询 group by的用法,用具体实例介绍了其特性,并比较了where 和 having的区别!

2024-01-28 19:38:01 1494

原创 MYSQL基本查询(CURD:创建、读取、更新、删除)

本文主要介绍了MYSQL中常见的CURD操作:创建,读取,更改,删除,并利用了大量了例子来帮助我们去理解这些操作及用法!

2024-01-28 17:46:41 871

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除