Renchao's Blog

世上每个人都是驯兽师,而那匹猛兽,就是每人各自的性情。

计算机网络的各种协议

计算机网络的各种协议 网络层 网际协议 TCP/IP 互联网协议族(英语:Internet Protocol Suite,缩写IPS)[1]是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP[2]。因为该协议家族的两个核心协议:...

TCP粘包问题

TCP粘包问题 什么是粘包? 粘包问题的意思是接收方接受的数据可能是几个数据包连在一起的结果,比如说发送了三个数据aaa,bbb,ccc,但是在接受方看来就是一个数据包aaabbbccc。 粘包问题来源于TCP的一种优化方案——Nagle算法。这种算法的大致意思是,当提交一段数据交给TCP发送时,TCP并不立即发送此段数据,而是等待一小段时间,看看在等待期间内是否还有要发送的数据,如果...

进程间通信的方式

进程间通信 [TOC] 我们知道,进程是操作系统能够将资源分配的最小独立单元。不同的进程之间不可以直接共享资源,必须通过一些通信方式进行资源的交换分享。每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间...

iOS签名机制

iOS签名机制 当初在上线第一款APP的时候,步骤可以说是非常复杂了。各种证书,签名,英文的,开发者官网的各种ID。。。一堆概念让人非常头疼。这篇博客通过原理流程来理清当时踩过的那些坑。 在讲iOS签名机制之前,可以先看看我在另一篇博客中对RSA非对称加密算法的理解。 目的 在 iOS 出来之前,在主流操作系统(Mac/Windows/Linux)上开发和运行软件是不需要签名的,软件...

RSA算法

RSA算法 在算法世界里,非常重要的一个算法就是RSA算法。因为RSA算法是网络世界中保证安全的基石之一。只要在有网络的地方,就有RSA的存在,可见RSA算法的地位。 写本文的目的是真正理解RSA算法为什么能够非常安全,参考了阮一峰老师的一片博客:RSA算法原理。 概述 对称加密是通过同一份密钥加密和解密数据,而非对称加密则有两份密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥...

block知多少

像函数的block是什么东西

block知多少 block对象就是一个结构体,里面有isa指针指向自己的类(global malloc stack),有desc结构体描述block的信息,__forwarding指向自己或堆上自己的地址,如果block对象截获变量,这些变量也会出现在block结构体中。最重要的block结构体有一个函数指针,指向block代码块。block结构体的构造函数的参数,包括函数指针,描述bl...

iOS和android的推送机制分析

RT

iOS和android的推送机制分析 iOS-APNs大中枢 iOS的推送中心叫做APNS(Apple Push Notification service),苹果公司统一的推送平台,也就是说全球所有使用苹果的设备,想接到通知必须经过APNs这个大中枢。 简单来说,苹果设备联网后,发送消息给APNs中心,中心就会知道有这个设备的存在了。注意这里是设备(iOS系统)发送消息而不是APP,这...

一个iOSer对Java GC垃圾回收的理解

iOS和android系统流畅性的关键-内存管理

一个iOSer对Java GC垃圾回收的理解 前言 对于用OC写的iOS程序来说,内存管理机制是非常重要的内容。OC中采用引用计数的机制,对象的引用计数器会因被引用而加1,被释放而减1。当引用计数为0时,便将该内存收回。这就要求程序员在合适的地方加上计数语句,非常麻烦。还好后来出现了ARC自动引用计数,编译器自动加语句而让程序员的工作大大减少,但是对于C对象还是要手动管理。这种机制的优点...

iOSer对Java虚拟机的理解

什么是JVM

Java虚拟机 概述 对于JVM自身的物理结构,我们可以从下图了解: 维基百科对JVM的解释为: Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件实现,实现能...

iOS设计模式

RT

iOS设计模式 MVX MVC 混乱的MVC架构 作为最出名并且应用最广泛的架构模式,MVC 并没有一个明确的定义,网上流传的 MVC 架构图也是形态各异,作者查阅了很多资料也没有办法确定到底什么样的架构图才是标准的 MVC 实现。 设计 MVC 的重要目的就是在人的心智模型与计算机的模型之间建立一个桥梁,而 MVC 能够解决这一问题并为用户提供直接看到信息和操作信息的功能。 A...