美文网首页
【Android】计算机编程相关知识点

【Android】计算机编程相关知识点

作者: 半罐子晃 | 来源:发表于2020-09-25 20:52 被阅读0次

    一、操作系统之Linux:

    Linux更多了解
    计算机由硬件+软件组成,操作系统(Operating System,OS)是软件的一部分,是硬件基础上的第一层软件,管控着其他软件,是硬件与其他软件之间沟通的桥梁。

    二、Socket网络编程

    本知识点推荐文章:
    TCP/UDP/IP详解
    IP协议图文
    网络编程考点
    1.网络架构模型


    三次握手
    四次挥手
    http请求报文

    2.TCP/UDP/IP

    • TCP(Transmission Control Protocol)传输控制协议:
      传输层、面向连接的传输层协议;数据传输可靠;面向字节流;网络开销大;
    • UDP(User Datagram Protocol)用户数据报协议:
      传输层、面向无连接的传输层协议;数据传输不可靠;数据报;网络开销小;支持一对多、多对一、多对多、多对一;场景:视频、语音通话等。
    • IP(Internet Protocol)网际协议:
      1.网络层、网络层引入了IP协议制定网络地址(IP地址),使我们能够区分两台主机是否同属于一个网络。
      2.IP提供了一种将数据从A主机跨网络送至到B主机的能力。
      3.IP协议将这个32位的地址分为两部分,前面部分代表网络地址(网络号),后面部分表示该主机在局域网中的地址(主机号)。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
      4.IP提供的这种能力并不能使数据每次都能送达(原因是可能发生数据包丢失问题),那么解决此种情况的方法是只要有数据丢失就重新发送即可。但IP不保证可靠性,所以重新发送需要TCP进行重传(TCP保证可靠性)。
    • TCP/IP网络通讯协议

    3.HTTP/HTTPS

    1. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
    2. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    3. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
    4. http:端口80,明文传输 ;https:443,加密传输,需要身份验证
      Android使用https步骤OkHttp中Https的处理

    4.Get请求Post请求
    GET产生一个TCP数据包;POST产生两个TCP数据包。
    GET方式的请求:浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。
    POST方式的请求:浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
    1.post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
    2.post发送的数据更大(get有url长度限制)
    3.post能发送更多的数据类型(get只能发送ASCII字符)
    4.post比get慢
    5.post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据。

    post请求的过程:

    • 1.浏览器请求tcp连接(第一次握手)
    • 2.服务器答应进行tcp连接(第二次握手)
    • 3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以- http会在此时进行第一次数据发送)
    • 4.服务器返回100 Continue响应
    • 5.浏览器发送数据
    • 6.服务器返回200 OK响应

    get请求的过程:

    • 1.浏览器请求tcp连接(第一次握手)
    • 2.服务器答应进行tcp连接(第二次握手)
    • 3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
    • 4.服务器返回200 OK响应

    三、加密方式和算法

    明文传输敏感数据如密码等,存储本地的敏感数据利用加密解密来存取。
    加密算法相关知识点详解请点击
    加密方式分类:
    1.对称加密算法(加密和解密密钥相同,DES、3DES、AES),密钥管理复杂,不适合互联网,一般用于内部系统;安全性中;加密速度极快,适合大数据量的加密处理;加解密的过程是可逆的。

    名称 密钥名称 运行速度 安全性 资源消耗
    DES 56位 较快
    3DES 112位或168位
    AES 128、192、256位
    • DES算法:DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。
    • 3DES算法:是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高。
    • AES算法:AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。本身就为了取代DES的,具有更好的安全性、效率和灵活性。

    2.非对称加密算法 (分公钥、私钥,加密跟解密不同但是一对,RSA、ECC),密钥管理 容易,安全性高,加密速度比较慢,适合 小数据量 加解密或数据签名。

    名称 成熟度 安全性 运算速度 资源消耗
    RSA
    ECC
    • RSA算法:RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。RSA 加密算法 基于一个十分简单的数论事实:将两个大 素数 相乘十分容易,但想要对其乘积进行 因式分解 却极其困难,因此可以将 乘积 公开作为 加密密钥。
    • ECC算法:ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。

    3.摘要算法hash算法 (变长变定长,不能还原,MD5、SHA、CRC ),它是不可逆的,不可以解密。所以它只能算的上是一种单向加密算法。

    名称 安全性 速度
    SHA-1
    MD5
    • MD5(Message-Digest Algorithm 5(信息-摘要算法5)):用的是哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。
    • HMAC(Hash Message Authentication Code): 密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法 (MD5、SHA1 等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。
      HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。

    4.Base64,它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密,它是一种使用4个字节的文本来表示3个字节的原始二进制数据。

    • 常用于网络传输,在某些基于文本的协议中,如果需要传输图片或者文件等,我们知道图片的存储格式是二进制数据,而非文本格式,我们必须将二进制的数据编码成文本格式,这时候Base64就派上用场了。
    • 另外,由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
    • Base64编码之后往往比原始数据要大,所以它并没有压缩数据。

    四、数据结构与算法

    强烈推荐B站:青岛大学--王卓老师的视频课,直通站
    1.数据结构

    数据结构分类
    Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration) 、位集合(BitSet)、向量(Vector)、栈(Stack)、字典(Dictionary)、哈希表(Hashtable)、属性(Properties)、集合(Collection)。
    Stack、TreeMap、Vector、ArrayList、LinkedList、HashMap、HashSet、LinkedHashSet、SortedSet,这些类分别实现了Map和Collection接口,图解常用数据结构直通车
    ①数组 (Array)
    具有相同类型的元素有序排列组织起来的集合称为数组。 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
    ②栈 (Stack)
    栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
    ③队列 (Queue)
    一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
    ④链表 (Linked List)
    一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
    链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
    ⑤树 (Tree)
    树是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
    (1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)
    (2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。
    (3)K中各结点,对关系N来说可以有m个后继(m>=0)。
    ⑥堆 (Heap)
    在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
    ⑦图 (Graph)
    图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
    ⑧散列表 (Hash)
    若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。

    2.算法
    1.基础的排序算法:重点考察快排。排序算法直通车~

    2.十大经典算法,KMP、贪心等直通车~
    3.Leetcode刷题,这玩意临阵磨枪没有,有空就刷,越早越好

    持续更新,欢迎留言补充。。。

    相关文章

      网友评论

          本文标题:【Android】计算机编程相关知识点

          本文链接:https://www.haomeiwen.com/subject/dzqquktx.html