这里略去有限域、射影几何等数学背景介绍。先给出实数域空间上椭圆曲线的一般形式:
y^2z + a_1xyz + a_3yz^2 = x^3 + a_2x^2z + a_4xz^2 + a_6*z^3 以上式子中,x,y,z均为变元。而令z=1, 则可以得到平面上的椭圆曲线Ep(x,y)。
对平面上椭圆曲线上的点P, Q, R,以及关于x轴对称的点P’, Q’, R’, 定义点的加法:
公钥密码体系又称为非对称密码,即加密和解密算法使用不同的密钥:一个是公钥Pu、一个是私钥Pr。公钥密码学的应用场景有:
到北京已经一个月有余了。初入公司被视为应届生,没有直接安排项目,而是参加了名目繁多的培训。和我一样,很多新同事也是半路出家,因此这些培训是有益的,不过应该浓缩一下。现在为止,大概弄清楚了部门和组里的工作内容,一部分是通信设备软件的特性开发,做链路层的通信协议,Linux C;另一部分是设备的云端管理平台,后台用Node.js实现。不是大数据云计算人工智能,也不是互联网+,和我此前涉足的Android、C++也没有关系。零基础的要求、从零开始的起点,可不就是应届生么?
距离上次更新已经过去了一个半月。一个半月前,我初窥Android源码而入门不得,彼时已裸辞两月有余,眼看入冬前找工作几无可能,加之今年移动端形势之大乱,于是我放弃了。我终究是没有成功踏入互联网行业。
在十月的一个难眠之夜,随手更新了简历,开始投工控软件开发等岗位。由于读研期间的一点儿背景,工作比想象中的好找,在科技园某自动化设备厂家写了3周的工控软件。期间又去北京面试了一家通信公司,几经权衡决定辞去深圳的工作北上。从深圳到北京,此番舍近求远,是好是坏,留待以后评价。
笔记:简单、直观、透彻地理解Android Binder进程间通信的基本原理和基本流程:数据在进程间是怎样流动传输的,客户端是怎样拿到服务端的接口的。
Android中的Binder机制涉及Java应用层、Native应用层(libbinder、C++)和Linux内核层(binder driver,C),其中Java层是对C++ Native层的包装,而应用层进程之间的通信则最终通过内核中的驱动Binder dirver完成。这种跨进程调用,进程之间的数据必须放在内核空间然后等待。
Binder机制作为Android的进程间通信方式(IPC),采用mmap共享内存方式,应用层直接从与kernel共享的缓冲区读取,只产生一次读写提高了数据传输效率。其实质是在Client-Server之间利用虚拟的字符设备/dev/binder作为CS两端的数据传输中介。应用层(Client、Server)的通信是 通过与driver的IO实现的:Client与Driver设备IO,Server则轮询Driver中的数据,并将结果反馈至Driver,Client再从Driver中读取结果。当然这里的Server通信依赖Binder机制,是一个Binder类型的Service。
Handler、Looper和MessageQueue: