自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS开发 搞懂runtime系列文章(一)OC对象的底层结构

iOS开发中,runtime库作为底层基础设施,发挥着重要的作用,可以说,runtime赋予了OC这门语言灵魂,让OC这门语言变得动态化和极具灵活性,让开发者可以对代码本身进行编程,俗称元编程。万丈高楼平地起,只有明白了runtime底层的原理,才能在软件开发中游刃有余,避免隐秘的错误的发生。iOS开发中的很多知识点都和runtime息息相关,比如内存管理,弱引用,关联对象,分类,方法调用,继承等等。

2024-02-16 07:56:09 1013 1

原创 OC语言基础之@property和@synthesize、@dynamic的配合使用

对于程序员而言,@property非常常见,但是@synthesize和@dynamic却很少出现,这两个关键字有什么用呢?需要怎么配合@property使用呢?本文就要讲述这个问题。

2024-02-12 22:25:20 524 1

原创 iOS开发之KVC底层原理

KVC全称KeyValueCoding,称作键值编码。KVC的方法定义在Foundation框架下的NSKeyValueCoding.h文件下。Foundation为我们提供了NSObject、NSArray、NSDictionary、NSMutableDictionary、NSOrderedSet、NSSet关于KeyValueCoding的分类。也就是说,只有这几个类及其子类,才能使用KVC的方法。

2024-02-05 22:03:52 442 1

原创 从声明定义到底层原理,搞懂block的全部内容系列文章(四)__block的底层实现

本文是block系列的最后一篇,我们知道block有个特性,在block代码体内部不能修改所捕获的外部非静态局部变量的值(全局变量和静态局部变量的值可以修改),如果想修改,需要在变量前面加上__block,本文主要讲述__block的作用和实现原理。

2024-02-02 16:24:24 382

原创 从声明定义到底层原理,搞懂block的全部内容系列文章(三)block的变量捕获及内存管理

上篇文章中,我们看到了block的底层实现,知道了block作为oc对象,会封装函数及函数调用环境,而且我们知道函数指的是block代码体,函数调用环境其实就是block代码体所引用的外部变量。我们也可以换个常见的说法,block对象会捕获block代码体用到的外部变量。这篇文章,重头戏就在外部变量这个概念上。外部变量不同,block对象的类型也会不同,而block类型不同,就会导致内存管理的差别。所以本文将分别介绍block的类型和block的内存管理。

2024-02-02 15:49:20 823

原创 从声明定义到底层原理,搞懂block的全部内容系列文章(二)block在c层面的数据结构

block被称为封装了函数及函数调用环境的OC对象,如何理解这个概念呢?

2024-02-01 10:47:56 336 1

原创 从声明定义到底层原理,搞懂block的全部内容系列文章(一)block的声明和定义

block作为OC中一种高级语法,其重要性不言而喻,对于程序员而言,从简单的控制器反向传值到令人眼花缭乱的RXCocoa响应式编程,block无处不在。故扎实掌握好block,熟记它的语法及底层实现和原理,才能应对自如。本系列文章将从四个方面,由浅入深描述block。

2024-02-01 10:05:57 378 1

原创 Mac上使用sourcetree fork等工具 进行pull或push一直报错access denied,authentication failure等错误

等错误,但是直接在git工程目录下使用git命令行操作,可以成功。原因是sourcetree使用的git和命令行的git不是一个git,sourcetree默认使用的是自带的git,所以两个git的全局用户名密码设置不一样。故需要在sourcetree的设置页面的git选项卡中,将git version选项设置为"Use System Git"。Mac上使用sourcetree 进行pull或push一直报错。

2024-01-25 10:30:56 625

原创 java基础语法之final关键字

java基础语法

2023-02-23 17:55:17 52

原创 swift定义参数个数可变的函数

在OC中,当一个功能丰富的类对外暴露接口时,在.h文件中往往会提供一系列的API,参数由少到多。但是在.m文件的实现中,往往都是利用一个通用的实现。

2021-03-22 17:48:56 340

原创 2.3web缓存/代理服务器技术

在不访问服务器的前提下满足客户端的HTTP请求。为什么要发明这种技术?缩短客户请求的响应时间减少机构/组织的流量开销在大范围内实现有效的内容分发模型图:Web缓存/代理服务器用户设定浏览器通过缓存进行Web访问浏览器向缓存/代理服务器发送所有的HTTP请求* 如果所请求对象在缓存中,缓存返回对象;* 否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象缓存/代理服务器既充当客户端,也充当服务器缓存/代理服务器一般由ISP(Internet ser

2021-03-07 23:10:23 207

原创 Cookie技术

引言:为什么需要Cookie?HTTP协议无状态,但是很多应用需要服务器掌握客户端的状态,如何实现?Cookie技术某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。RFC6265Cookie的组件HTTP响应消息的cookie头部行HTTP请求消息的cookie头部行保存在客户端主机上的cookie文件,由浏览器管理Web服务器端的后台数据库Cookie的作用身份认证购物车推荐Web email…Cookie的隐私问题

2021-03-07 22:19:39 73

原创 2.3网络应用之Web

World Wide Webinventor:Tim Berners-Leetime of invention:1990Web的构成:网页(基本要素)网页互相链接(从而形成一个庞大的信息网络/内容网络/服务网络)网页(Web Page)包含多个对象(objects):对象:HTML文件、JPEG图片、视频文件、动态脚本等基本HTML文件:包含对其他对象引用的链接对象的寻址(addressing)URL(uniform resource locator):统一资源定位器 RFC1

2021-03-07 21:33:32 174 1

原创 了解CPU的总线

引言:CPU内部构造暂且不论,我们将它看作一个黑盒,那么如图所示,CPU和外部进行沟通(数据交换),就是通过这些肉眼可见的引脚。这些引脚和外部连接,一般称作总线。总线从功能上划分,可以分为三类:地址总线,数据总线,控制总线。总线的作用:下面从内存中读写数据这个场景来分析下三种总线的具体功能:如图,当CPU从内存中读取数据时,地址总线传输具体内存地址值,控制总线传输读的操作,数据总线则负责把相应内存中的数据传输给CPU。同样的,如果CPU往内存中写入数据时,地址总线传输具体内存地址的值,控制总线..

2021-03-03 10:40:18 1812

原创 2.2网络应用的基本原理(体系结构、进程通信)

网络应用的体系结构:问:网络应用有哪些特点?与单机应用有哪些本质的不同?答:问:网络应用应采取什么样的体系结构?答: (1)客户机/服务器结构(Client-Server,C/S);(2)点对点结构(Peer-to-Peer,P2P);(3)混合结构;客户机/服务器结构:服务器特点:7*24小时提供服务;永久性访问地址/域名;利用大量服务器实现可扩展性;客户端特点:与服务器通信,使用服务器提供的服务;间歇性的接入网络;可能使用动态IP地址;不会与其他客户机直接通信典

2021-02-16 10:45:41 1224

原创 2.1网络应用层内容概述

本讲内容:(1)网络应用体系结构: * 客户机/服务器 * P2P * 混合结构(2)网络应用的服务需求: * 可靠性 * 带宽 * 时延(3)Internet传输层服务模型 * TCP * UDP(4)特定网络应用及协议 * HTTP * SMTP,POP,IMAP * DNS * P2P应用(5)socket编程 * TCP * UDP...

2021-02-15 19:03:44 112 2

空空如也

空空如也

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

TA关注的人

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