5 JaryPan

尚未进行身份认证

keep coding...

等级
TA的排名 5w+

深入理解C语言指针

一、指针的概念要知道指针的概念,要先了解变量在内存中如何存储的。在存储时,内存被分为一块一块的。每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就像酒店的门牌号一样。1.1、变量和地址先写一段简单的代码:void main(){ int x = 10, int y = 20;}这段代码非常简单,就是两个变量的声明,分别赋值了 10、20。我们把内存当做一个酒店,而每个房间就...

2019-10-08 22:49:41

2019年10月中国编程语言排行榜

2019年10月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下:编程语言比例rankpl_percentage1java33.54%2cpp16.38%3c_sharp12.79%4javascript12.59%5python7.68%6go7.25%7ph...

2019-10-08 22:36:03

面试官,不要再问我三次握手和四次挥手

三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的:面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就成...

2019-10-08 22:26:05

iOS多线程技术3 - GCD的详细用法

多线程的相关概念工欲善其事,必先利其器,在进入 GCD 学习之前,我们有必要先了解一下多线程的一些概念。进程:进程是程序在计算机上的一次执行活动。例如打开一个 app,就开启了一个进程,一个进程可以并发多个线程。线程:线程就是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个线程同一时间只能执行一个任务,平时我们所说的多任务并发实际上是多个线程并发去...

2019-09-12 00:12:50

GCD中dispatch_barrier的使用方法

假如现在有几组任务,我们并不关心每组中的各个任务的执行顺序,但是我们要求这几组任务按顺序分批进行,也就是说第一组任务全部执行之后,再启动第二组任务,以此类推。在这种情况下,我们使用 dispatch_barrier 函数将会非常高效,dispatch_barrier 函数又称作栅栏函数,顾名思义,就是像栅栏一样可以把不同任务分开。在下面例子中,我们假设有两组任务,第一组包含任务 1 和任务 2,...

2019-09-27 13:36:42

GCD中dispatch_group的使用方法

在实际开发中,我们经常会遇到这样的问题:有几个不同的任务,当所有任务完成后需要根据这些任务的结果去执行下一步操作(例如:下载多张图片,全部下载后进行拼接并显示出来)。我们利用上边刚刚讲过的 dispatch_barrier 方法或许可以达到此类目的,但下边要讲的 dispatch_group 相关方法才更适合解决类似问题。在编写测试代码之前,我们还要了解一下 dispatch_group_not...

2019-09-27 13:30:10

GCD中dispatch_apply函数的使用方法

当我们需要进行循环遍历时,例如遍历一个数组,我们一般会使用 For-In 循环,For-In 循环会从数组第一个元素开始依次循环遍历到最后一个元素:NSArray *arr = @[@"a", @"b", @"c", @"d", @"e"]; for (NSString *str in arr) { NSLog(@"str = %@", str);}// 打印:/*2...

2019-09-27 13:26:13

GCD中dispatch_semaphore(信号量)的使用方法

Dispatch Semaphore(信号量) 是持有计数的信号,该信号是多线程编程中的计数类型信号。信号类似于高速收费站的栏杆,可以通过时抬起栏杆,不可以通过时放下栏杆。在 Dispatch Semaphore 中使用了计数来实现该功能:计数小于 0 时等待,阻塞当前线程。计数为 0 或大于 0 时,唤醒线程,继续执行线程中的代码。Dispatch Semaphore 提供了三种方法来改变信号...

2019-09-27 13:15:49

iOS多线程技术2 - NSOperation和NSOperationQueue的详细用法

NSOperation 和 NSOperationQueue 是苹果提供的一套多线程解决方案,是基于 GCD 的封装,完全面向对象,代码可读性较高。NSOperationNSOperation 是一个抽象类,并不具备封装操作的能力,用作父类用来约束子类,要想封装操作,必须使用它的子类。我们可以使用系统提供的两个子类 NSBlockOperation 和 NSInvocationOperati...

2019-09-16 13:56:27

iOS多线程技术1 - NSThread的一般用法

NSThread 简介NSThread 是苹果官方提供的面向对象类线程操作技术,简单方便,可以直接操作线程对象,不过需要自己控制线程的生命周期,在平时使用较少。开启线程使用 NSThread 开启线程有类方法和实例方法两种,类方法会直接执行任务,实例方法需要在实例初始化后调用 start 方法才能开始执行任务。类方法创建线程使用类方法创建线程后会自动开始任务,不需要手动开启。类方法创建线...

2019-09-12 23:57:07

Objective-C runtime机制前传2 - Mach-O格式和runtime

在前传1中,我们分析了解了XNU内核所支持的二进制文件格式Mach-O。同时还留了一个小尾巴,就是Mach-O文件中和Objective-C以及runtime相关的Segment section。今天,就来了解一下它们。OC之源起我们知道,程序的入口点在iOS中被称之为main函数:#import <UIKit/UIKit.h>#import "AppDelegate.h"...

2019-09-08 01:06:28

Objective-C runtime机制前传1 - Mach-O格式

原文地址:https://blog.csdn.net/u013378438/article/details/80353267Mach-OMach-O是Mach Object文件格式的缩写。它是用于可执行文件,动态库,目标代码的文件格式。作为a.out格式的替代,Mach-O格式提供了更强的扩展性,以及更快的符号表信息访问速度。Mach-O格式为大部分基于Mach内核的操作系统所使用的,包括N...

2019-09-08 00:44:45

Swift自定义类型的字面量赋值

文章目录字面量类型字面量协议字面量协议实践字面量类型所谓字面量,就是指一段能表示特定类型的值(如字符串、布尔值)的值表达式。例如:let number:Int = 6let name: String = "Tom"上面例子中,6、Tom 都是字面量。所谓字面量类型,就是指支持通过字面量进行实例初始化的数据类型,如上面例子中的 Int、String 类型。Swift 中的字面量类型有...

2019-08-26 14:46:51

Swift 实现单例类

文章目录声明为类型常量使用GCD方法实现声明为类型常量,以闭包形式进行初始化工作在 Swift 中创建单例类总体来说可以使用两种方法,将单例对象声明为类型常量,或者使用GCD方法实现。声明为类型常量class SingletonClass1 { static let shared = SingletonClass1() private init() {} // 将初...

2019-08-26 13:28:02

Swift 修改状态栏颜色/样式(重写 preferredStatusBarStyle 无效的问题)

文章目录没有使用导航控制器的情况使用了系统导航控制器的情况使用了自定义导航控制器的情况默认情况下,顶部状态栏(statusBar)为 default 样式(即黑色文字和图标),但我们有时会希望可以修改状态栏的样,这样,我们的应用看起来会更加协调。我们针对不同的情况,所做的处理也不尽相同,这些情况包括:没有使用导航控制器的情况使用了系统导航控制器的情况使用了自定义导航控制器的情况前提...

2019-08-15 14:18:37

Swift learning part 26 - 高级运算符

文章目录位运算符按位取反运算符按位与运算符按位或运算符按位异或运算符按位左移、右移运算符无符号整数的移位运算有符号整型的移位运算溢出运算符值溢出优先级和结合性运算符函数前缀和后缀运算符复合赋值运算符等价运算符自定义运算符自定义中缀运算符的优先级和结合性作为基本运算符的补充,Swift 提供了一些对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运...

2019-08-08 13:40:30

Swift learning part 25 - 访问控制

文章目录模块和源文件访问级别访问级别基本原则默认访问级别单 target 应用程序的访问级别框架的访问级别单元测试 target 的访问级别访问控制语法自定义类型元组类型函数类型枚举类型嵌套类型子类常量、变量、属性、下标Getter 和 Setter构造器默认构造器结构体默认的成员逐一构造器协议协议继承协议遵循ExtensionExtension 的私有成员泛型类型别名访问控制可以限定其它源文件...

2019-08-07 15:52:11

Swift learning part 24 - 内存安全

文章目录理解内存访问冲突内存访问性质In-Out 参数的访问冲突方法里 self 的访问冲突属性的访问冲突默认情况下,Swift 会阻止你代码里不安全的行为。例如,Swift 会保证变量在使用之前就完成初始化,在内存被回收之后就无法被访问,并且数组的索引会做越界检查。Swift 也保证同时访问同一块内存时不会冲突,通过约束 代码里对于存储地址的写操作,获取那块内存的访问独占权。因为 Swift...

2019-08-06 15:33:55

Swift learning part 23 - 自动引用计数

文章目录自动引用计数的工作机制自动引用计数实践类实例之间的循环强引用解决实例之间的循环强引用弱引用无主引用无主引用和隐式解包可选值属性闭包的循环强引用解决闭包的循环强引用定义捕获列表弱引用和无主引用Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。通常情况下,Swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理。然而在少数情况下,为了能帮助你管理内存,ARC ...

2019-08-06 08:47:40

Swift learning part 22 - 泛型

文章目录泛型解决的问题泛型函数类型参数命名类型参数泛型类型泛型扩展类型约束类型约束语法类型约束实践关联类型关联类型实践扩展现有类型来指定关联类型约束关联类型在关联类型约束里使用协议泛型 Where 语句具有泛型 Where 子句的扩展具有泛型 Where 子句的关联类型泛型下标泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象...

2019-08-03 23:53:56

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。