DearMiku

DearMiku

海纳百川 有容乃大 壁立千仞 无欲则刚

iOS对象判等---hash函数
iOS对象判等—hash函数要比较相等,我们需要实现 isEqual: 方法。我们希望 isEqual: 方法仅在所有属性都相等的时候返回真。Mike Ash 的 Implement Equality and Hashing 和 NSHipster 的 Equality 为我们很好地阐述了如何实现。首先,我们需要写一个 isEqual: 方法: 1234567891011- (BOOL)isEqual:(id)obj{ if(![obj isKindOfClass:[Person class]]) return NO; Person* other = (Person...
HTTP 2.0
HTTP 2.0HTTP 1.0 缺点在http 1.0 时,每进行一次请求时,都会建立一次TCP连接,开销很大 HTTP 1.1 缺点HTTP Pipelining(http管线技术)在http1.1中默认是启用该技术的,即消息头中:Connection:keep-alive. HTTP Pipelining其实是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应。这样就像在串行队列中执行任务一样,若前一个任务十分耗时,则会导致后续的响应卡顿.这就是所谓的线头卡顿(Head of line ...
iOS安全 -- 数据加密
Base64base64是一种基于64个可打印字符来表示二进制数据的表示方法.严格来说它只能算作一种编码方式.Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码 作用: 1, 由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法.2, 使用SMTP协议 (Simple Mail Transfer Protocol 简单邮件传输协议)来发送邮件。因为这个协议是基于文本的协议,所以如果邮件中包含一幅图片,我们知道图片的存储格式是二进制数据(binary data)...
iOS安全 -- 数据安全
概述在正常的iOS系统下,由于沙盒与随机地址的分配的作用下,应用数据的安全是没有问题的,但是在越狱情况下,应用间的数据是共享的,这就存在安全问题,同时也存在手机失窃,面临取证攻击(主要),所以我们在存储敏感数据时要格外小心. 防止数据泄露的方法正式版禁用NSLog/PrintNSLog方法本质并非向控制台输出调试信息,而是向苹果系统日志(Apple System Log)中输出错误信息,官方解释为 服务器接收到的消息(被输入规则过滤后)会存放在数据仓库(data store)中,该API允许客户端创建查询并搜索消息数据仓库中满足条件的消息. 换句话说可以把NSLog看做printf和...
iOS安全 -- 越狱检测
iOS安全 – 越狱检测越狱是什么越狱是指利用iOS系统的默写漏洞,通过指令取得了iOS的root权限.可以自己优化系统,获得系统权限可以修改系统文件,可以安装更多拥有高系统权限的软件,实现更多高级功能!例如:与其他设备蓝牙发送文件、短信回执、来电归属地、文件管理、浏览器下载插件、flash插件、内容管理等等。 所以在越狱情况下,难免会有一些恶意应用会危害到我们的应用,所以我们需要检测当前是否为越狱环境,从而禁用或者关闭一些功能(如截获我们的网络请求/响应 进行修改,获取我们沙盒的文件,,,,). 越狱检测方法检测沙盒机制和越狱工具在越狱环境下,iOS的沙盒机制将被破坏,所以可以去访问本...
NTA打洞
NTA打洞只有一方处于NAT设备后此种情况是所有P2P场景中最简单的,它使用一种被称为“反向链接技术”来解决这个问题。大致的原理如下所述。 如图所示,客户端A位于NAT之后,它通过TCP端口1234连接到服务器的TCP端口1235上,NAT设备为这个连接重新分配了TCP端口62000。客户端B也通过TCP端口1234连接到服务器端口1235上。A和B从服务器处获知的对方的外网地址二元组{IP地址:端口号}分别为{138.76.29.7:1234}和{155.99.25.11:62000},它们在各自的本地端口上进行侦听。 由于B 拥有外网IP地址,所以A要发起与B的通信,可以直接通过TC...
编译,汇编,反编译,反汇编
编译,汇编,反编译,反汇编编程要理解这个问题,先要看「正」编译的过程是怎样的。你有一个想法,这是一种人类自然语言可以表达出来的东西。你利用编程技能,把它「翻译」成你熟悉的一种编程语言:这个过程叫做编程。然后你使用编译器(compiler)将它翻译成机器所能理解的语言: 编译这个过程叫做编译。编程和编译都是「信息丢失」的过程。比如你说,我有一组整数,我要把这些数排个序,然后轻车熟路地写了个冒泡排序。然而一定程度上,你的原始动机其实已经从代码里丢失了——有经验的人可以一眼看出这段代码是在排序,而新手小明看到的只有一些 for 和 if 之类的东西。如果是更复杂的功能,可能过一段时间你自己都看...
NAT与内网穿透
NATNAT是什么 网络地址转换,就是替换IP报文头部的地址信息.由于IPv4地址有限,不可能为每一个上网设备分配一个ip,而NAT就是来解决这个问题的.我们在上网时很有可能处在一个NAT设备之后, NAT设备会在ip包通过时会修改其 源/目标IP地址,有时还会修改TCP/UDP协议的端口号,从而实现多台设备使用同一外网IP进行互联网通讯 如上,三台设备都使用120.131.92.21这一公网IP. 而对于这三台设备分别从各自端口发出的TCP/UDP请求,则映射至NAT设备不同的端口上,记录在NAT表上.这样就区分了某个请求试试来自哪个设备的哪个端口上. NAT特点 1,网络被分为私...
CocoaAsyncSocket实现局域网内通信
CocoaAsyncSocket实现局域网内通信内容概要利用CocoaAsyncSocket实现局域网内 iOS设备间的简单通讯. 结构1231,服务端,用于接受客户端连接.2,客户端,向服务端发起连接3,通讯协议,两端都遵守协议格式进行数据收发无误 代码通讯协议非常简略的协议只为实现简单的文字通讯功能 121,长度包: |内容包长度(8bit)|2,内容爆: |消息类型(1bit)|传输内容(不定)| 客户端1,创建GCDSocket 123self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue...
iOS中使用Protocol Buffer
iOS中使用Protocol Buffer简介Protocol Buffer(简称Protobuf或PB)是由Google推出的一种数据交换格式.与传统的XML和JSON不同的是,它是一种二进制格式,免去了文本格式转换的各种困扰,并且转换效率也是非常快,由于它的跨平台、跨编程语言的特点,让它越来越普及,尤其是网络数据交换方面日趋成为一种主流. 原理对于json和xml最终在网络传输时都是以字符串转二进制的进行传输的,使用的是utf8编码格式,而PB在编码与解码上进行了改进,使数据包更小,所以我觉得可以把他当做一种压缩格式.这里有一篇关于原理的博文,感兴趣大家可以去看一看 Protoco...
avatar
杨尚达
好好学习 天天向上