通讯相关基本概念

来源:互联网 发布:web 后端优化 编辑:程序博客网 时间:2024/05/20 06:29

1.通讯的概念
服务器概念
硬件(刀片机,电脑)
软件(服务器开发人员开发的软件)
公司的服务器—内网测试服务器,外网正式服务器
端口:区分软件服务器的
tcp/ip:ip32位,四个8位二进制组成
域名:可以注册(ip地址不好记.所以有了域名)
dns:域名解析服务——较常用的dns服务器:谷歌,114,阿里


Http协议:
请求报文:
---请求行(请求方法,请求地址,http版本)
---请求头(rang-数据范围)
---空行
—请求体(图片的数据)

响应报文:
---响应行(http版本,状态:200,500,404)
—响应头(数据的大小,服务器类型)
—响应数据


1,Get和Post请求方法
get:参数在url后面追加
post:参数在请求体里面

2,相对安全性
post相对get更安全
参数的位置决定的安全性

3,数据的大小和长度
理论上说post没有长度限制
而get有长度限制(url的长度有限制)

图片上传
UIImagePickerController
sourceType:资源类型
1,相机
2,相册-默认相册
3,图片库-很多相册

数据的解析
服务器返回的数据类型:XML JSON
区别:
1,数据量
XML数据量大
JSON数据量小
2,易读性
XML好读
JSON不好读
3,解析难度
XML解析复杂
JSON解析方便

XML解析:
使用NSXMLParser
1,创建解析器-设置代理-开始解析
2,开始标签(属性的解析)->结束标签->获得内容
JSON解析:
使用NSJSONSerialization
通过JSONObjectWithData:方法解析获得解析到的字典



1,下载小文件数据放在数据缓存器NSData
2,下载大文件,使用NSFileHandle边下载,边写入本地(使用seekToEndOfFile找到文件的末尾位置开始写入)
3,断点下载:
—1,告诉服务器需要的数据长度,通过设置请求头Rang(bytes=(当前已经下载的数据长度)-( ),获得从已经下载完毕的数据后面拿数据)
—2,保证程序已经关闭后,再启动,还能继续下载,从本地获取文件的大小,
—3,如何计算实时下载进度,当前下载的文件长度/文件的总大小

ASIHttpRequest的使用
1,使用ASI发起Post请求,get请求
—get:ASIHTTPRequest
—post:ASIFormDataRequest
—使用addPostValue:(添加请求参数)
—使用addData:(上传图片,追加图片data)
2,使用ASI做断点下载
—1,设置亲够允许断点下载
setAllowresumeForFileDownloads
—2,设置下载完成的最终地址,设置临时文件的存放地址
—3,设置进度代理

网络的判断
Reachability
—1,创建一个reachability对象,设置需要检测的服务器地址,开始检测
—2,使用通知的方式来获知网络的变化,变化类型有三中:无线网络,蜂窝网络,没有网络

新浪OAuth2.0授权
—1,请求授权,web现实新浪的登录界面,通过web的代理方法获得code
—2,使用code发起获得授权接口,获得token
token就是登录的凭证,他有有效期,再过期之前都可以拿token进行登录,(不需要再输入用户名和密码进行微博登录了)
SSO授权
—1.再工程的info里面添加URL schemes
—2,安装新浪规定的方式WEB+appkey(新浪微博开放平台的申请的appkey)

新浪微博的封装
1,登录界面
—1,显示WEB
—2,获得code
2,新浪引擎
—1,是否登录
—2,token是否过期
—3,根据code获得token—4,根据token获得列表

3,主视图ViewController

功能完善
1,动态计算Cell的高度
(boundingRectWithSize 根据内容计算高度) 
2,计算时间的间隔
—使用NSDateFormatter 格式化时间
—stringFromdate 得到格式化后的字符串dataFromString得到date对象
3,分页下载(下啦,上啦,三方控件)
—列表的接口需要传两个参数
——count(每页个数)
—— page(页码)
4,等待显示框
MBProgressHUD
5,图片加载三方空间
SDWebImage(通过类别)
6,类别
—1,直接给系统的类扩展方法
—2,不可以扩展属性
—3,不建议重载系统的方法
扩展:用于添加私有属性,变量和私有方法的


1,简答的加密:
— MD5+Base64
— MD5不可逆
— Base64可以加密,也可以解密

Block(块对象,oc特殊的对象)闭包
1,block的语法
////*********************************************///
有返回值,有参数
声明:int(^intBlock)(int a)=int
赋值:intBlock = ^(int a)
     {
          return a+10;
     }
调用:intBlock(8);
////*********************************************///
2,两个界面间数据的传递
:::A界面:给Block进行赋值
:::B几面:定义一个Block属性,copy来修饰
:::调用Block

3,Block引用外部变量,Block的内存管理
—1,Block内部引用外部变量两种,
—— 1,局部变量          引用局部的变量值
—— 需要添加__Block关键字修饰,达到引用指针的目的
—2,全局变量,实例变量,静态变量,成员变量
引用变量的本身的指针
—3,block内存管理
—— 1,block创建再栈中,我们使用需要copy到堆
——2,block被copy时,内部变量引用级数的变化
////*********************************************///
局部变量:变量本身 retain
实例变量:变量的对象 retain(self会被retain)
全局变量:不会改变
////*********************************************///
——3,循环引用(造成内存泄露)
:::A引用B,B引用A,导致A和B都释放不掉
:::对于Block来说:
:::—1,self中有copy修饰的Block,(self引用了Block)
:::—2,block内部引用了self的实例变量,这样block被copy时会对self进行retain;(Block引用了self)
—— 4,解决办法:弱引用
:::使用__block+临时变量来解决;

4,block再系统API中的使用
—1,动画
—2,模态弹出
—3,数组变量
—4,数组排序—升序降序

多线程技术
1,NSThread
—1,最轻量级的,自己创建线程,自己管理____苹果不推荐使用
—2,创建方式三种
——1,直接alloc
——2,performSelectorInbackground
——3,detacheNewThread
—3,线程安全
:::对线程同时访问一个资源,需要添加线程锁
:::NSLock:同步 @synchronized 方式加锁

2.NSOperation
:::它是一个抽象类,不可以拿来直接使用,必须使用它的子类
使用方式有三中:
——1,NSInvocationOperation
——2,NSBlockOperation
——3,自定义Operation
:::重写main函数,___(写操作代码)
Operation可以添加依赖关系
Operation可以自己start,但是自己start不会创建线程
Operation可以cancel取消
Operation添加到OperationQueue中会自动执行
OperationQueue可以设置并发量
:::默认-1,没有限制

3,GCD
:::系统通过的队列2个
—1,mainQueue___串行队列
—2,globalQueue___并行队列

自己创建___(串行/并行)
:::creatQueue
往队列中添加任务的方式有两种:
—1,同步添加
—2,异步添加
0 0
原创粉丝点击