自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构与算法 --- 目录

数据结构 — 并查集数据结构 — 图算法 — 排序算法 — 递归

2020-01-22 11:31:26 201

原创 编程范式 --- 目录

编程范式 — 函数式编程(Funtional Programming,简称FP)编程范式 — 面向协议编程(Protocol Oriented Programming,简称POP)

2019-09-29 14:29:05 162

原创 LeetCode题解 --- 目录

LeetCode — 21. 合并两个有序链表LeetCode — 23. 合并K个排序链表LeetCode — 98. 验证二叉搜索树LeetCode — 150.逆波兰表达式求值

2019-09-22 18:20:46 278

原创 Swift --- 目录

Swift — swfitcSwift — 属性(property)和输入输出参数(inout)Swift — 下标(subscript)Swift — 方法前缀,以及nonmutatingSwift — 初始化器相关(Initialize)Swift — 继承(Inheritance)Swift — 协议(protocol)Swift — 扩展(Ex...

2019-09-20 14:54:32 627

原创 iOS - GCD死锁

普通死锁队列 串行队列调度方法 同步调用(dispatch_sync)同一个Q 当前所分发到的Q 和 “外部Q” 是否是同一个Q{ NSLog(@"不死1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"死锁"); });} 高级死锁调度方法 同步阻塞调用(dispatch_barrier_sync)同一个Q 当前所分发到的Q 和 “外部Q” 是否是同一个Q{ //并行队

2022-05-31 14:47:30 346

转载 iOS | 响应链及手势识别

在上一篇「事件传递及响应链」中介绍了当屏幕上发生一次触摸之后,系统会如何寻找「第一响应者」,在寻找到「第一响应者」之后,如何确定「响应链」以及如何沿「响应链」传递事件。在上一篇文章的环境中,是不使用UIGestureRecognizer的。但是在我们平时的开发中想要给一个UIView加上处理事件的能力的话,使用UIGestureRecognizer及其子类比继承一个UIView的类、重写 touches 方法要方便的很多。这两种方法对事件的处理机制相互影响又有所不同。这也是本文的讨论内容...

2022-01-24 15:14:04 624

转载 iOS | 事件传递及响应链

2022-01-24 15:13:06 1999

原创 brew、gem、npm介绍

一、Homebrew介绍Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。相当于Linux听的yum、apt-get等软件管理工具。二、RubyGems介绍RubyGems简称gem,RubyGems是一个包管理框架,提供了ruby社区的gem的托管服务,用于ruby软件包的下载、安装、使用;ruby的软件包被称为gem,包含了ruby应用或库。和brew不同,brew用于操作系统层面上的软件包的安装,而gem只是管理ruby软件三、npm介

2021-05-26 11:23:20 738 1

原创 iOS - hitTest方法&pointInside方法

hitTest方法当事件传递给控件的时候,就会调用控件的这个方法,去寻找最合适的viewpoint:当前的触摸点,point这个点的坐标系就是方法调用者- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;pointInside方法作用:判断当前这个点在不在方法调用者(控件)上- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;hitTest

2021-05-21 15:22:33 584

转载 iOS之深入解析数组遍历的底层原理和性能分析

一、OC数组的类体系当我们创建一个 NSArray 对象时,实际上得到的是 NSArray 的子类 __NSArrayI 对象。同样的,创建 NSMutableArray 对象,得到的同样是其子类 __NSArray 对象。有趣的是,当我们创建只有一个对象的 NSArray 时,得到的是__NSSingleObjectArrayI 类对象。__NSArrayI 和 __NSArrayM,__NSSingleObjectArrayI 为框架隐藏的类。OC数组的类体系如下:通过

2021-04-22 14:24:27 613

原创 iOS 组件化方案

为什么要组件化?易移植、易维护、易重构、易根据业务做加减法、易开发理想中的组件化组件化最终应该达到每个组件可以单独开发,单独维护,不会对其他组件进行强依赖。理想的架构应该在横向上能够拆分出容器层,开源三方库,基础组件,业务形态SDK组件,普通业务组件;在纵向上能够进行组件解耦,组件之间可以单独开发、维护、复用以及组件之间合理的通信机制。随着业务的复杂度增加,理想中的架构也应该不断的变化,如何进行组件化先进行组件的拆分,然后进行组件的之间的服务调度,然后进行事件分发包含系统事件以及组件本身自定义

2021-04-21 20:49:09 3029

原创 iOS - UIStackView 布局 详解

UIStackView是iOS9之后推出的,我也是第一次接触,在学习的过程中对于其中的相关属性,尤其是对其中的distribution几个属性值,一知半解的,所以特写此文通过代码实例理解它们每个属性的区别。UIStackView主要包括了四大属性:axis、alignment、distribution、spacing。一、axis主要设置UIStackView布局的方向:水平方向或垂直方向。typedefNS_ENUM(NSInteger,UILayoutConstraintAxis) {UILay

2021-04-12 16:12:13 5741 1

原创 pod 指定版本

pod 'AFNetworking' //不显式指定依赖库版本,表示每次都获取最新版本pod 'AFNetworking', '~>0' //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本pod 'AFNetworking', '~> 0.1.2' //使用大于等于0.1.2但小于0.2的版本pod 'AFNetworking', '~>0.1' //使用大于等于0.1但小于1.0的版本.

2021-04-07 20:23:04 1650

原创 常用MIME Type 配置

Video TypeExtensionMIME TypeMPEG-4.mp4video/mp4Ogg Video.ogvvideo/oggFlash Video.flvvideo/x-flvA/V Interleave.avivideo/x-msvideoMicrosoft Windows Media.wmvvideo/x-ms-wmvRealMedia Variable Bitrate.rmvbapplication/vnd.rn...

2020-12-24 09:59:09 496

原创 iOS - PHImageManager、PHCachingImageManager

PHImageManager根据PHAsset获取资源图片API- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset - targetSize:(CGSize)targetSize - contentMode:(PHImageContentMode)contentMode - options:(nullable PHImageRequestOptions *)options - resultHandler:(void (^)(UI

2020-11-22 20:45:43 2038

原创 iOS - dispatch_after 取消操作

// dispatch_after取消操作typedef void(^DelayedBlockHandle)(BOOL cancel);DelayedBlockHandle perform_block_after_delay(CGFloat seconds, dispatch_block_t block);void cancel_delayed_block(DelayedBlockHandle delayedHandle);DelayedBlockHandle perform_block_afte

2020-10-21 13:40:04 1825

原创 网络协议 - 服务器搭建

配置环境:一、下载JDK,安装JDKJDK:https://www.oracle.com/java/technologies/javase-downloads.html二、安装TomcatTomcat:https://tomcat.apache.org/三、设置本地放置路径 把下载下来的包解压到 /Users/你的用户名/目录下四、启动Tomcatcd /Users/你的用户名/apache-tomcat-9.0.0.M21/bin(注释:切换到我们Tomcat的bi

2020-09-29 11:35:39 1172

原创 iOS - App Clip「苹果小程序」

App Clips是什么?官方对其的定义是——App clips are a great way for users to quickly access and experiencewhat your app has to offer. An app clip is a small part of your appthat’s discoverable at the moment it’s needed. App clips are fast andlightweight so a user

2020-09-23 13:41:13 4640 1

原创 terminal - 运行脚本文件的方法

例如存在脚本文件/tmp/ss.sh1、cd /tmp,然后运行./ss.sh2、/tmp/ss.sh3、cd /tmp, 然后运行 bash ss.sh 或 sh ss.sh4、cd /tmp, 然后运行 source ss.sh区别: 第一种和第二种需要执行权限,如果直接执行ss.sh可能会报permission denied 所以需要切换到root执行或者给ss.sh添加权限,执行chmod +x a.sh第三种和第四种方法sh文件不需要添加执行权限...

2020-07-28 21:00:19 2941

原创 iOS - 系统字体样式

NSString *sampStr = @"bytedance开发者012345";NSMutableAttributedString *fontStr = [NSMutableAttributedString new];for(NSString * familyName in [UIFont familyNames]){// NSLog(@"字体族科名 = %@",familyName); // 输出字体族科名字 NSAttributedString *aAttrStr =

2020-06-10 12:33:59 514

原创 iOS - 关键字 - 泛型ObjectType 协变__covariant 逆变__contravariant

一.泛型作用泛型:限制类型 为什么要推出泛型?迎合swift泛型作用:1.限制类型 2.提高代码规划,减少沟通成本,一看就知道集合中是什么东西二.泛型用法:__covariant:协变, 子类转父类__contravariant:逆变 父类转子类1.泛型声明:在声明类的时候,在类的后面<泛型名称>//第一步 声明泛型@interface Person<__covariant ObjectType> : NSObject// 语言@property

2020-05-20 19:29:10 1214

原创 iOS - ScrollView滚动详解

有两种滚动ScrollView的方法:1.用户手动滚动,即用户手势识别——主要识别两种手势:drag(拖拽)手势和flick(轻弹)手势区别:flick(轻弹)手势是drag(拖拽)手势的一个变种。flick(轻弹)手势在用户手指离开屏幕后有一个惯力,该惯力在手势结束后使scrollView继续减速滑动。在scrollView减速滑动期间,用户触摸屏幕会停止scrollView的减速滑动。问题:flick(轻弹)手势会产生一个惯力,该惯力由拖动的速度决定,该速度可以由- (void)scrollVi

2020-05-18 10:56:15 3119

原创 terminal - 解决重复输入密码的问题

使用Git,每次都提示输入命令。 烦人的很Enter passphrase for key ‘xxxx’输入一下命令:ssh-add -K xxx

2020-05-14 19:03:07 1048

原创 terminal - zsh-syntax-highlighting语法高亮插件

官网:https://github.com/zsh-users/zsh-syntax-highlighting安装:git clone https://github.com/zsh-users/zsh-syntax-highlighting.git echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc生效:sour..

2020-05-11 11:22:19 2082

原创 terminal - zsh-autosuggestions提示工具

Clone this repository somewhere on your machine. This guide will assume ~/.zsh/zsh-autosuggestions. git clone git://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestionsAdd the following to your .zshrc:vim ~/.zshrc 将下列语句添加到 ~/.zshrc.

2020-05-11 11:12:36 531

原创 iOS - dispatch_time_t

dispatch_time_t 类型,它的创建有两个函数1. dispatch_time(<#dispatch_time_t when#>, <#int64_t delta#>)第一个参数是从什么时间开始,一般直接传DISPATCH_TIME_NOW 表示从现在开始第二个参数表示具体的时间长度(不能直接传 int 或 float), 可以写成这种形式 (int64...

2020-04-24 11:45:30 809

原创 iOS - 增加按钮点击范围

#import <UIKit/UIKit.h>#import <objc/runtime.h> @interface UIButton (EnlargeEdge) /** 设置可点击范围到按钮边缘的距离 */- (void)setEnlargeEdge:(CGFloat)size; /** 设置可点击范围到按钮上、右、下、左的距离 */- (void)se...

2020-04-09 09:34:23 742

原创 Java - hashMap 链表是头插还是尾插

1.JDK8以前是头插法,JDK8后是尾插法2.为什么要从头插法改成尾插法?A.因为头插法会造成死链,参考链接B.JDK7用头插是考虑到了一个所谓的热点数据的点(新插入的数据可能会更早用到),但这其实是个伪命题,因为JDK7中rehash的时候,旧链表迁移新链表的时候,如果在新表的数组索引位置相同,则链表元素会倒置(就是因为头插) 所以最后的结果 还是打乱了插入的顺序 所以总的来看支撑JDK...

2020-04-08 22:37:51 2173

原创 C - (void*)0 与 (void)0

(void*)0例如:#define NULL ((void *)0)用来定义无效的指针(void *)0 就是将0强制转化为(void *)类型的指针char *ch = (void *)0;//ch指向地址0一般把(void*)0定义为NULL表示这是个空指针void的含义  void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数...

2020-04-08 13:39:04 2579

原创 C - (void*)0 与 (void)0

前几天看到一个宏, 它大概是这样的:  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))  我用 void 的时候, 有两种情况:    1.放到函数前面, 强调函数没有返回值, 也就是说函数不能作右值      如: void fun(int x);    2....

2020-04-08 13:32:00 154

原创 iOS - -void、void * 、id、NSObject 和 nil、Nil、NSNull、NULL

1. void、void * 、id1.1 void 和 void *1.1.1 void关键字表示“空类型”的抽象概念但这里的“空类型”不表示“任意类型”,实际上它也不是一种类型,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西作用:1、对函数返回值进行限定- (void)viewDidLoad { }2、对函数传入参数进行限定...

2020-04-08 13:28:47 1122

原创 面试总结 - UIView、UIWindow 和 CALayer 的区别与联系

UIView:数据UIKit.framework框架,负责渲染矩形区域的内容,为矩形区域添加内容,响应区域的触摸事件,布局和管理一个或多个子视图UIWindow:数据UIKit.framework框架,是一种特殊的UIView,通常在一个程序中只有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里.UIWindow在程序中主要起到三个作用:作为容器传递触摸消息到程序中的...

2020-03-15 19:24:29 356

原创 汇编学习

汇编王爽 《汇编语言》AT&T汇编 America telephone and telegraphIntel汇编地址总线,数据总线,控制总线CPU-寄存器,运算器,控制器小端 高地址存储高字节,低地址存储低字节大端 高地址存储低字节,低地址存储高字节***sp指向栈顶函数调用流程(内存)1.push 参数2.push 函数的返回地址3.push bp(保留bp之前...

2020-03-15 19:19:18 202

原创 面试总结 - YYCache

YYCacheYYCache 是提供用户使用的对象,内部对 YYMemoryCache 和 YYDiskCache 功能的整合封装。为 YYMemoryCache 提供了多线程功能,而 YYDiskCache 对象本身内部封装了异步读写功能。YYMemoryCacheYYMemoryCache 内部有一个储存对象,实现分为两部分:1.第一部分,淘汰算法,这里使用一个双向链表,每个节点为 _...

2020-03-15 19:16:42 269

原创 面试总结 - AFN

AFN调用流程分析:AFHTTPSessionManager: 发起网络请求(例如GET);AFHTTPSessionManager内部调用dataTaskWithHTTPMethod:方法(内部处理requestSerializer);dataTaskWithHTTPMethod内部调用父类AFURLSessionManager的dataTaskWithRequest: uploadPro...

2020-03-15 19:14:43 395

原创 面试总结 - cookie和session区别

cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是...

2020-03-15 19:12:17 541

原创 面试总结 - HTTP、TCP和UDP的理解

TCP是底层通讯协议,定义的是数据传输和连接方式的规范HTTP是应用层协议,定义的是传输数据的内容的规范HTTP协议是建立在TCP协议之上的一种应用。HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP网络传输协议?网络传输协议有Http,UDP和TCP。其中UDP和TCP属于长连接,Http属于短连接。TCP:不会丢失数据,更安全,所以用于聊天。UDP:...

2020-03-15 19:11:33 619

原创 面试总结 - 三次握手、四次握手

三次握手:第一次握手: 客户端给服务器发送一个 SYN 报文。第二次握手: 服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。第三次握手: 客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。四次挥手:第一次挥手: 主机1(可以使客户端,也可以是服务器端),向主机2发送一个FIN报文段;(主机1进入FIN_WAIT_1状态)第二次挥手: 主机2收到了主机...

2020-03-15 19:08:31 915

原创 面试总结 - HTTPS

HTTPSHTTPS其实是有两部分组成:HTTP +SSL/ TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息SSL的位置SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输...

2020-03-15 19:06:45 195

原创 面试总结 - HTTP请求方式

HTTP的八种请求方式GET:向服务器请求指定的资源POST:向服务器提交数据请求处理,数据被包含在请求体中。HEAD : 返回服务器上对指定资源数据的 HTTP 请求头,在不需要返回全部数据的情况。OPTIONS : 返回服务器对指定资源数据支持的 HTTP 请求方法,一般用于测试服务器功能的可用性。PUT : 向服务器上传指定的数据。DELETE : 向服务器发送请求删除指定数据。...

2020-03-15 19:04:51 370

空空如也

空空如也

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

TA关注的人

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