自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络学习(四)应用层-HTTP

HTTP一、HTTP 准备阶段HTTP是基于TCP的上层协议 所以要先建立链接 也就是三次握手 HTTP1.1 版本以后就增加哀乐Keep-Alive 一次TCP链接可以在多次请求中使用二、HTTP 请求的构建过程HTTP 报文分3部分请求行请求的URL、 HTTP 版本、请求方法(GET/POST/…)请求首部Accept-Charset 表示客户端可以接受的字符集Content-Type 表示正文格式 例如JSONCache-control 控制缓存 当客户端中包含max-age指

2020-12-19 12:09:57 198

原创 计算机网络学习 (三)传输层

UDP一、 UDP 包头长什么样当我们发送的UDP包到达目标机器后 发现MAC地址匹配 于是取下来 将剩下的包传给IP层 把IP头取下来 发现IP匹配 IP头里有8位协议 这里存放的使用的是TCP还是UDP 这里是UDP 然后按照UDP的格式 把数据解析出来,传输层数据处理完之后 内核的事情算是干完了 交给对应端口的应用程序就好了 UDP头很简单 只有 源端口 目标端口 UDP长度 UDP校验和 数据二、 UDP 三大特点1. 沟通简单 默认就认为网络世界良好 发出去的包很容易到达2. 不会建

2020-12-14 20:55:37 309

原创 计算机网络学习之(二)网关

一、网关电脑上的网卡 相当于一个网关路由器也相当于一个网关网关往往是一个路由器 是一个三层转发设备 就是把MAC头和IP头取下来 然后根据里面的内容看看接下来包该往哪里转发的设备路由器 他有5个网卡或者网口 每个网口的IP都和局域网的IP地址在相同的网段 都个网口都是那个局域网的网关二、Mac 头 和 IP 头Mac 头源Mac 地址 和 目标Mac地址 协议类型IP头源IP 、目标IP 、 TTL、 协议、首部校验和 、总长度、标识一台机器要想访问另一个IP地址 首先

2020-11-23 19:24:27 1293

原创 计算机网络学习之(一)基础

一、查看ip地址linux操作系统下 运行 ip addrroot@test:~# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft fo

2020-11-18 18:57:10 199

原创 计算机组成原理学习(七)应用

一、DMA 一个协处理器DMA 本质上就是在主板上再增加一块独立的芯片,在进行内存和I/O设备的数据传输的时候,不再是CPU在控制数据的传输当I/O操作很耗时的时候 DMA就起上作用了 当有大量数据读的时候 可以用DMA 可以等到数据到齐了再给CPU主设备/从设备能主动发起数据传输的是主设备 否则是从设备比如 CPU是主设备和硬盘从设备 CPU可以主动的从硬盘里写数据 也可以从硬盘里读数据 硬盘只是向CPU发送控制信号。实际上是CPU把数据拉走的 而不是I/O设备给CPU的DMA 既是一个

2020-10-15 12:30:42 196

原创 计算机组成原理(六)存储

虚拟内存和内存保护一、内存简单页表内存是分页的 同一个页里的内存 在物理层面是连续的虚拟内存地址分为两部分 前部分是虚拟页号 后部分是偏移量页表中存储的是 虚拟页号和物理页号之间的对应关系内存地址转换把虚拟内存地址 切分成页号和偏移量的组合从页表里 查询出虚拟页号 对应的物理页号直接拿物理页号 加上前面的偏移量 得到物理内存地址多级页表就是将页表分为 4-1级页表 1级索引存储的就是对应的物理页号...

2020-10-13 09:12:00 536

原创 计算机组成原理学习(五)GPU

图形渲染流程顶点处理每个多边形都有多个顶点 而这每个顶点都是在一个三维空间的坐标,但是屏幕是二维的,所以在确定当前视角的时候,需要把三位坐标系里的坐标转换到二维坐标系中,这个过程就叫做顶点处理。在3D建模的时候 建模越精细 需要的计算就越大 那么这些顶点的计算之间没有相互依赖 所以可以并行执行图元处理其实就是把顶点处理的各个点链接起来,还要把不在屏幕中的坐标删除,减少下一层的计算量栅格化把图元处理后的多边形转化成屏幕里的一个个像素点,可以并行处理片段处理在栅格化变成像素点之后

2020-10-07 12:26:04 386

原创 计算机组成原理基础(四)流水线

单指令周期处理器一条CPU指令的执行,需要经历取得指令、指令译码、执行指令,如果一个指令在一个时钟周期内完成,那么指令的执行时间有长有短,时钟周期与主频有关,如果要保证每条指令都在一个时钟周期内完成的话,主频就要设置的和执行时间最长的指令一致,这就是单指令周期处理器。在这种情况下 我们的主频就不能太高,太高的话 例如复杂指令的执行结果就不会写入内存,那么结果就是下一条指令执行的结果不准现代处理器的流水线设计指令流水线把指令分成不同的阶段,每一个阶段的电路在完成对应的任务之后,不需要等待整个指令

2020-09-21 12:39:03 3966 1

原创 计算机组成原理基础 (三)指令+运算

计算+指令一、指令周期取得指令 从PC寄存器中取出要执行的那条指令的地址 然后从内存中找到具体的指令 加载到指令寄存器中,然后把PC寄存器自增 好执行下一条指令指令译码 根据指令寄存器中的指令 解析成要进行什么样的操作,是R I J 中的哪一种指令,具体操作那些寄存器,那些数据或者内存地址。执行指令 对这些R I J 指令 进行算数逻辑操作,数据传输或者直接地址跳转这样一个循环成为指令周期取指令阶段、指令译码 指令是放在存储器中的,是由控制器完成的执行指令 由算数逻辑单元(ALU)操作的

2020-09-03 19:49:28 1159

原创 计算机组成原理学习基础(二)

函数调用栈栈帧 整个函数A所占用的所有内存空间 就是A的栈帧函数 A 调用函数B是怎么执行的程序执行会先把A入栈当A中的函数指令执行到要调用B的时候,会调用call B把函数B调用结束后要执行的下一条指令地址压栈执行push rbp操作把函数B压栈函数B执行完毕 调用pod B B出栈 并且把刚才入栈的指令放入PC寄存器 同时把控制权返回给出栈后的栈顶其实程序最终的执行都是一条一条的指令,不断的更新PC寄存器中的指令地址,函数调用也是一个指令 call,如果所有的程序都在一个函数里执行也

2020-09-03 13:44:09 210

原创 计算机组成原理学习基础(一)

性能指标响应时间快吞吐率大CPU 时钟周期数=指令数*每条指令的平均时钟周期数(CPI)时钟周期时间(Clock Cycle) 我们程序可以识别出来的最小时间单位 比如电脑的主频是2.8GHz 可以粗浅的认为CPU在1秒内可以执行2.8GHz条简单的指令,由晶体振荡器来完成每一次时间的滴答,主频越高就意味着CPU跑的越快 但是跑的越快耗电量就越高 达到物理极限会崩溃 所以也是有上限的程序CPU执行时间=指令数 * CPI * 时钟周期时间指令一、指令集指令集 例如 手机端开发的程序

2020-08-29 11:08:09 1002

原创 SQL 学习(二)性能优化

数据表中的键数据表中的键 由一个或者多个属性组成超键 能唯一标示元组的属性集 叫做超键 能唯一标示这一条记录的属性(一个或者多个)或者和其他属性的任意组合候选键 不包含其他属性的超键主键 从候选键中选一个。一张表 只能有一个主键外键主属性 包含在任一 候选键中的属性叫候选键非主属性 与主属性相对三范式1NF 数据表中任何属性都是原子的 不可拆分2NF 非主属性完全依赖于候选键 也就是 确定候选键就能唯一确定这些非主属性3NF 任何非主属性都不传递依赖于候选键BCNF巴斯-科

2020-07-27 22:40:00 149

原创 SQL 学习之 (一)基础知识

SQL是如何被执行的(Oracle)语法检查语义检查权限检查共享池检查 共享池是一块内存 保存SQL的执行计划 对SQL进行hash 运算 然后在共享池中查找有没有当前SQL的执行计划 如果有就直接到执行器执行这是软解析 如果没有就到优化器 创建解析树 生成执行计划到优化器再执行这是硬解析优化器 硬解析 创建解析树 生成执行计划执行器SQL是如何被执行的(Mysql)解析器优化器执行器Mysql 8之后去掉了缓存 因为缓存之后 只要有数据表更新 所有的缓存就要全部更新一遍 造成

2020-06-29 18:05:39 145

原创 http学习之(三)

Http2头部压缩 使用HPACK算法压缩 在客户端和服务端建立字典,用索引号代表相同的字符串,并且用哈夫曼编码来压缩整数和字符串二进制格式的body虚拟的流实现多路复用 同一个消息会有同一个id 有序的消息组装起来就是http1中的header和body强化安全 http2 只是body使用二进制传输的 不加密 但实际上 大多数情况下 都是加密的 也就是http2 还是跑在 TLS上协议栈 http2 HPACK/stream - TLS - TCP IPHttp2 特点流是可以并发

2020-06-08 22:28:44 141

原创 http 学习记录 之 (二)

请求/响应报文请求行 也叫 起始行 以空格进行分割 比如 GET / HTTP1.0 代表以get请求的形式请求服务器根目录下的文件 其中http的版本是 1.0状态行 这里就是服务器响应的头部 比如 HTTP/1.1 200 OK 版本是1.0 状态吗是200 状态描述是OK请求头/响应头 比如 Host 字段 只能出现在请求头里 代表要访问的主机地址 User-Agent 只能出现在请求头里 Date通常出现在响应头里 代表更新的时间 客户端好做缓存加上一个空行 之后 就可以跟上http的

2020-05-30 14:47:02 189

原创 Http学习记录 之 基本概念篇

1. 什么是http总体来说 http 是超文本传输协议 那么怎么理解 超文本 传输 和 协议呢超文本:比如音频 视频 html 文本 等传输:提供了 A-> B 的数据传输能力协议:就是规范 定义了数据该怎么传 怎么包装 错误如何处理2. 什么是CDN 及 其作用CDN (Content Delivery Network)内容分发网络作用:CDN 有一套调度算法 可以缓存源站服务器的资源 让客户端不必要千里迢迢跑到源站服务器那数据 大大节约时间 也大大减少源站服务器的压力3. 什

2020-05-18 22:03:16 111

原创 一个iOS开发 2020 疫情之下 失业找工作的前前后后

失业之前2020年的疫情让无数行业受到了冲击,但是我的失业似乎跟这次疫情的关系并不是很大。2020年2月24号下午,这一天我永远忘不了,这个时候的我还在家里封闭着,凡是可以出去的路都被堵的连电动车都过不了。2月17日 伴随着杭州第一批公司复工了。我的老东家开了第一次全体员工视频会议,我都有点不好意思参加这次视频会议,因为我所在的项目在会议上只字未提。心里已经隐隐感觉到了什么,会议结束后看着满脸...

2020-04-29 18:23:26 2303 1

原创 ReactiveObjC 基本使用总结

本篇博客主要分析RAC 的基本使用 关于原理部分这里不再写,后边分析源码时会将相应的分析体会再做整理信号产生 订阅 发送形式 1- (void)testSignalSend{ // 创建 RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> ...

2020-04-26 17:49:46 188

原创 flutter 之 布局学习

前言flutter 中的布局常用的有 Container Row Column Static 等 有了这些 基本上都能搭配出不同的UI界面了 今天来逐一介绍Container flutter 中的UIViewclass LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) {...

2020-04-09 15:20:27 121

原创 iOS block 总结

一、block 分类block 常规使用下 分为 全局 堆 栈 但是还有系统级别的3种 所以有六种全局blok void(^block)(void) = ^{ }; block(); NSLog(@"---block---%@",block);// <__NSGlobalBlock__: 0x1000c8190>堆区 int...

2020-03-09 16:19:22 140

原创 iOS 之 锁总结

一、 iOS 中常用的锁实现方式锁分为 互斥锁(递归锁和非递归锁) 和 自旋锁(忙等) iOS中的锁都是对pthread的封装。@synchronized (self) 通过断点调试 看汇编 发现调用如下两个方法 objc_sync_enter、objc_sync_exit。源码实现如下int objc_sync_enter(id obj){ int result = OB...

2020-03-06 12:42:11 168

原创 多线程之GCD探索

一、多线程理解进程是操作系统的最小执行单元,线程是进程执行的最小单元,iOS是单进程,多线程执行的,进程之间资源不共享。多线程可以提高程序的执行效率,其实是提高了资源的利用率,对于单核CPU来讲,通过在不同任务之间切换来达到任务同时执行的假象,对于多核CPU来讲 才是真正的并发。GCD 正是充分的利用了多核cpu二、GCDgrand central dispatch 自动管理线程的生命...

2020-02-28 09:35:43 126

原创 KVO原理探究

一、初步探索简单使用准备工作@interface People : NSObject@property(nonatomic, copy)NSString *name;@property(nonatomic, copy)NSString *nickName;@endstatic void *PeopleNameContext = "PeopleName";self.p = [P...

2020-02-18 13:54:54 104

原创 iOS 类的加载过程

前言在我们的程序的main函数执行前,系统给我们做了那些事儿,编译阶段:词法分析、语法分析、语义分析、生成中间代码IR 目标代码优化、生成汇编、然后连接器进行静态链接,把未绑定的符号进行绑定。运行阶段: dyld 动态链接将动态库进行绑定 例如System、UIKit、lidispatch,今天从_objc_init开始分析方法调用链 最后会到_read_images _dyld_obj...

2020-01-09 22:52:52 894

原创 iOS 方法查找流程探索总结

断点调试找方法断点调试创建People 类对象调用方法 按住control键一步步调试 最后会发现如下图所示 这里会调用objc_msgSend继续按下control 往下走 回来到 接下来就看看_class_lookupMethodAndLoadCache3的方法实现_class_lookupMethodAndLoadCache3IMP _class_lookupMethodAnd...

2019-12-29 15:15:30 541

原创 iOS 方法缓存探索

iOS 中类的结构struct objc_class : objc_object { // Class ISA; Class superclass; cache_t cache; // formerly cache pointer and vtable class_data_bits_t bits; }从上述代码中我们发现了一个 c...

2019-12-25 14:53:50 185

原创 iOS isa指针初始化过程 & 类结构探索

isa 指针各位域所指代含义union isa_t { isa_t() { } isa_t(uintptr_t value) : bits(value) { } Class cls; uintptr_t bits;#if defined(ISA_BITFIELD) struct { uintptr_t nonpointer ...

2019-12-22 13:57:45 344

原创 iOS 对象所需内存和系统实际开辟内存详解

开始探索新建People类 任何属性都不加@interface People : NSObject@end创建对象People *p = [[People alloc]init];NSLog(@"---class_getInstanceSize--%ld",class_getInstanceSize(p.class));// 8这个时候是因为每个类或者类对象都有一个isa指针...

2019-12-18 00:16:47 448

原创 SDWebImage探索二 自己实现轻量级图片缓存

简介通过对SDWebImage源码的阅读,就尝试着自己封装一个轻量级的图片加载类。那么在开发的过程中遇到了几个问题UITableView上加载图片怎么做到不卡贞的如何解决图片重用问题的NSOperation 是如何使用的架构层面该如何设计下面我们就带着这些问题来一点一点写代码声明一个UIImageView 的类别UIImageView+XBWebCache- (void)xb...

2019-11-23 17:20:01 193

原创 iOS runtime初探和总结

内存分布程序运行内存分为5大部分 堆、栈、初始化变量区、未初始化变量区、代码区栈:存放指针地址堆:存放真实的对象查找过程: 先通过栈区找到指针 再通过指针找到堆上真实的对象类对象、实例对象、元类类在runtime中的样子 是一个类的结构体struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILITY;#if !_...

2019-11-10 11:14:55 120

原创 SDWebImage 原理解析及核心代码分析

简介SDWebImage 是一个非常强大的图片加载框架,从一开始工作都在用它,都知道他是先内存检查 再磁盘检查 都没有最后才走网络下载,那么他实现的代码究竟是什么逻辑呢,今天我们就来分析他的核心代码。主讲5个类UIImageView+WebCache.hUIView+WebCache.hUIView+WebCacheOperation.hSDWebImageManager.hSDW...

2019-11-07 09:50:22 497

原创 iOS AVPlayer 使用总结

简介iOS 中视频播放自定义能力最强的就是 AVPlayer,今天主要就介绍 AVPlayer使用的核心流程和代码。三个关键类 AVPlayerItem AVPlayer AVPlayerLayer这是AVPlayer播放视频的核心三个类,apple 按照MVC的模式封装了视频播放的整个逻辑,AVPlayerItem 是 Model层 AVPlayer 是C 控制层 AVPlayerLay...

2019-11-04 13:19:39 2128

原创 KVC详细使用总结 以及异常处理和特殊用法

前言简单来说KVC 就是通过如下方式进行间接设置和获取值的 People *p = [[People alloc]init]; [p setValue:@"xiaobing" forKey:@"name"]; [p setValue:<#(nullable id)#> forKeyPath:<#(nonnull NSString *)#>]; [...

2019-10-17 14:26:14 483

原创 iOS FMDB之FMDatabaseQueue的使用总结

前言最近项目中使用到 FMDatabaseQueue ,很久没有用过了,最近踩了不少坑,今天把它整理出来。个人觉得手机端处理这种数据库,还是麻烦的,调试起来非常麻烦,所以还是按照规范 一点一点写数据库代码,少走弯路。第一步创建数据库private var databaseQueue:FMDatabaseQueue = FMDatabaseQueue(path:pathName)!此处可以...

2019-08-03 11:48:36 665

原创 iOS 基于PhotoKit 获取系统所有相册 以及所有照片 包括iCloud的处理 细节详解及实战代码

前言最近在做一个相册的项目,一开始觉得项目没什么难度,可是真正上手做了之后,发现难度不小,苹果新推出Photokit之后,获取相册中图片对象是快的,可是在获取到具体图片个人实战比较慢,同时还有icloud的问题,那么本片博客就带你一起解决这些问题。第一步 获取系统所有相册import Photosprivate var allAsset:[PHAsset] = [] //相册中所有的照片...

2019-08-03 11:05:45 5067 3

原创 python 学习之 对象的比较和拷贝以及python中的参数传递

值比较(==) 与 对象比较(is)简单说明== 和 is 时python中常用的两种比较方式 其中前者是比较对象之间的值是否想等,而is 是比较两个对象的身份标示是否相等,即他们是不是同一个对象 是不是指向同一块内存地址。举例说明a = 10b = 10a == b #True 此处a b的值相等id(a) #4427562448id(b) #4427562448a...

2019-06-22 16:00:19 152

原创 python 自定义函数和匿名函数学习总结

函数在程序开发过程中是不可或缺的,其实一个函数就是完成单一功能的代码块,可以想像如果整个程序都没有函数,代码都堆叠到一起,如果程序有个几万行,天呐,整个宇宙都要毁灭了。基本函数使用先看下边的例子def do_something(message): print('我要做的事情是{}'.format(message))do_something('学习') # 我要做的事情是学习...

2019-06-15 15:31:21 433

原创 python学习基础之 字符串操作 和 I/O操作 以及条件与循环

字符串字符串的声明s1= ‘hello’s2 = “hello”s3 = “”“hello”""print(s1s2s3) # True字符串操作 切片 替换索引print(s1[0]) # h切片print(s1[1:3]) # el替换s = s.replace('h', 'H') # 此时创建了一个新的字符串拼接s2 += s1 等同于 s...

2019-06-15 13:37:31 248

原创 python 学习之 数据结构 列表(list)和元组(tuple)字典 (dict)和 集合(set) 以及各自性能

列表和元组基本使用在python 中 列表和元组都是可以放任意数据类型的集合 放的数据类型也可以不同比如如下代码l = [1,3,4,5,'5'] 列表l同时含有int 和 string类型的数据t = (1,2,3,'jsaon') 元组t同时含有int 和 string类型的数据二者区别声明方式 列表是一[]形式的 元组是以 () 形式的列表是动态的 可以随时进行增删改查 ...

2019-06-02 16:32:06 586

原创 无监督算法原理总结 EM 期望最大化 k-means LDA

EM 期望最大化算法原理首先初始化一个参数 A根据训练数据和当前的模型参数A 找出隐变量Z 也就是E步骤根据训练数据和Z对参数A做最大似然估计 (M步)重复2 3 步骤直到收敛或者找到局部最后解k-means 聚类先从样本集中随机选择k个样本作为随机质心将所有样本点归到距离质心最近的类簇中重新计算质心 作为新的质心 知道收敛或者找到局部最优解聚类的评判 可以根据 类间...

2019-05-28 10:54:23 756

空空如也

空空如也

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

TA关注的人

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