自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebSocket 及 SocketRocket 库

Websocket 及 Objective-C 中的使用1. WebSocket1.1 概述1.1 握手1.1.1 打开阶段握手1.1.2 关闭阶段握手2. 数据帧2.1 基本帧协议2.2 分片2. SocketRocket2.1 API 调用2.2 粘包问题2.3 源码分析参考资料:RFC6455 - The WebSocket Protocol1. WebSocket1.1 概述WebSocket 是独立的,基于 TCP 的协议,它使用单个 TCP 连接进行双向传输。WebSocket 协议

2021-02-28 01:52:56 784

原创 内存管理:自动引用计数(ARC)

内存管理:自动引用计数(ARC)1. 引用计数式的内存管理1.1 内存管理方法1.2 引用计数的内部实现1.3 autorelease 的使用与实现1.3.1 使用方法1.3.2 内部实现2. ARC 规则2.1 所有权修饰符2.1.1 __strong 修饰符2.1.2 __weak 修饰符2.1.3 __autoreleasing 修饰符非显式附加第二种第三种2.1.4 __unsafe_unretained 修饰符2.2 编码规则2.3 属性3. ARC 的实现3.1 __strong 修饰符3.2

2021-02-26 23:40:29 968

原创 iOS 推送通知:UserNotifications框架

iOS 推送通知:UserNotifications框架1. 概述2. 申请通知权限3. 创建通知3.1 指定本地通知触发条件3.2 创建并注册UNNotificationRequest3.3 取消通知3.4 可交互式通知3.5. 设置代理对象3.5.1 处理与通知的交互3.5.1.1 actionable 通知3.5.1.2 前台通知4. 远程通知4.1 在APNs注册并接收device token4.2 通知发送流程1. 概述UserNotifications 是 iOS 10 中新增的框架,可以使

2021-02-26 14:12:40 956

原创 用Java实现DQN,训练不会死的FlappyBird

文章目录前言增强学习(RL)的架构CNN 训练简述训练数据训练的三个周期训练逻辑卷积神经网络模型(CNN)训练过程神经网络输入预处理训练优化总结使用 DeepJavaLibrary(DJL) - 基于Java 的深度学习框架前言FlappyBird 是2013年推出的一款手机游戏,因其简单的玩法(振翅 / 不振翅)但极度困难的设定迅速走红全网。随着深度学习(DL)与增强学习(RL)等前沿算法的发展,我们可以使用 Java 非常方便地训练出一个智能体来控制 Flappy Bird。今天,来一起看一下如何

2021-02-26 01:40:17 1397

原创 Objecitve-C:GCD 的使用

GCD1. GCD 概要2. GCD 的 API2.1 Dispatch Queue2.1.1 创建 Dispatch Queue应限制串行队列的数量2.1.2 系统提供的派发队列获取方法2.2 Dispatch Group2.3 dispatch_barrier_async2.4 dispatch_sync2.5 Dispatch Semaphore2.6 dispatch_apply2.7 dispatch_suspend / dispatch_resume2.8 dispatch_set_target

2021-02-24 16:54:29 192

原创 Objective-C:基础集合类的性能

可变性大多数的集合类存在两个版本:可变和不可变(默认)。不可变的集合完全是线程安全的,可以同时在多个线程中迭代,避免各种转变时出现异常的风险。你的 API绝不应该暴露一个可变的集合。当然从不可变到可变然后再回来是会有一定代价的 — 对象必须被拷贝两次,所有集合内的对象将被 retain/release。有时在内部使用一个可变的集合,而在访问时返回一个不可变的对象副本会更高效。其实也有同步的、线程安全的可以使用的可变集合案例,它们往往只需要用几行代码,通过子类和组合的方法建立,NSDictiona

2021-02-24 00:40:52 793

原创 Objecitve-C:Block 的内存管理

参考资料:《Objective-C 高级编程:iOS与OS X多线程和内存管理》Block 本质上是对象,能够作为参数传递给函数或方法,Block 的其中一个优势在于能够分配给其他线程执行。int (^gcd) (int, int) = ^(int u, int v){ return u;};// 编译器可以通过 Block 的内容推导出返回类型,所以返回类型是可以省略的。// 可以传参,也具有返回值,与函数不同的是,Blocks 定义在函数或方法内部。能够访问但是不能改变 在定义 b.

2021-02-23 18:55:55 313

原创 Git:内部原理

Git:内部原理1. 底层命令与上层命令2. Git 对象blob 对象树对象提交对象对象存储3. Git 引用HEAD 引用标签引用远程引用4. 包文件5. 引用规范引用规范推送6. 维护与数据恢复维护数据恢复移除对象1. 底层命令与上层命令上层命令主要涵盖了checkout、branch、remote等约 30 个 Git 的子命令。 然而,由于 Git 最初是一套面向版本控制系统的工具集,而不是一个完整的、用户友好的版本控制系统, 所以它还包含了一部分用于完成底层工作的子命令。 这些命令被设计成能

2021-02-23 18:46:55 586

原创 Git:常用命令

Git:常用命令1. 设置与配置git configgit help2. 获取与创建项目git initgit clone3. 快照基础git addgit statusgit diffgit commitgit resetgit revertgit rmgit mvgit clean4. 分支与合并git branchgit checkoutgit mergegit rebasegit cherry-pickgit loggit stashgit tag5. 项目分享与更新git fetchgit pul

2021-02-23 18:42:46 301

原创 HTTPS 及 Objective-C 中的使用

HTTPSHTTPS 是对 HTTP 协议的扩展,我们可以使用它在互联网上安全地传输数据,使用**安全套接字层(Secure Sockets Layer,SSL)保证数据传输的安全,随着传输层安全协议(Transport Layer Security,TLS)**的发展,目前已经使用 TLS 取代了废弃的 SSL 协议,不过仍然使用 SSL 证书一词。HTTPS 安全是由一套安全机制来保证的,主要包含这4个特性:机密性、完整性、真实性和不可否认性。机密性:传输的数据是采用Session Key(会话

2021-02-23 18:30:56 846

原创 读书笔记:Effective Objective-C

语法2.在类的头文件中尽量少引入其他头文件除非却有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用 @class 来提及别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合。有时无法使用向前声明,比如声明类遵循协议。这种情况可以将协议的声明移至“class-continuation 分类”。3. 使用字面量语法而不是与之等价的方法创建字符串、数值、数组、字典。NSNumber *someNumber = @1;NSArray *animals = @[@

2021-02-23 18:26:11 1407

空空如也

空空如也

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

TA关注的人

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