Android开发知识学习——编码、加密、Hash、序列化和字符集

文章目录

  • 学习资源来自:扔物线
  • 加密
    • 古代密码学
    • 现代密码学
      • 对称加密
      • 非对称加密
      • 密码学密钥和登录密码
      • Base64
      • URL 使用的百分号编码
      • 压缩与解压缩
      • 图片与音频、视频编解码
  • 序列化
  • Hash
  • 字符集
  • 课后题

学习资源来自:扔物线

加密

古代密码学

  • 起源:古代战争——古典密码学
  • 移位式加密:密码棒
    • 加密算法:缠绕木棒后书写
    • 密钥:木棒的尺寸规格
  • 替换式加密
    • 加密算法:替换文字
      按规则使⽤不同的⽂字来替换掉原先的⽂字来进行加密。
      码表:
原始字符:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码字符:BCDEFGHIJKLMNOPQRSTUVWXYZA
原始书信:I love you
加密书信:J mpwf zpv
解读后:I love you

加密算法:替换⽂文字
密钥:替换的码表

现代密码学

不止可以用于文字内容,还可以用于各种二进制数据

对称加密

对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密

加密过程如下:明文 + 加密算法 + 私钥 => 密文
解密过程如下:密文 + 解密算法 + 私钥 => 明文

在这里插入图片描述

  • 经典算法

    • DES(56 位密钥,密钥太短⽽逐渐被弃⽤)、AES(128 位、192 位、256 位密钥,现在最流行)
  • 对称加密作⽤

    • 加密通信,防⽌信息在不安全网络上被截获后,信息被人读取或篡改。
  • 对称加密(如 AES)的破解
    破解思路路

    • 拿到一组或多组原文-密文对
    • 设法找到一个密钥,这个密钥可以将这些原⽂-密文对中的原⽂加密为密文,以及将密文解密为原文的组合,即为成功破解

反破解
一种优秀的对称加密算法的标准是,让破解者找不到⽐穷举法(暴力破解法)更有效的破解手段,并且穷举法的破解时间足够长(例如数千年)。

对称加密的缺点
密钥泄露露:不能在不安全⽹络上传输密钥,一旦密钥泄露则加密通信失败。

非对称加密

使用公钥对数据进行加密得到密文;使用私钥对数据进行解密得到原数据。

加密过程如下:明文 + 加密算法 + 公钥 => 密文,
解密过程如下:密文 + 解密算法 + 私钥 => 明文

在这里插入图片描述
使⽤非对称加密通信,可以在不可信⽹网络上将双方的公钥传给对方,然后在发消息前分别对消息使用
对方的公钥来加密和使用⾃己的私钥来签名,做到不可信网络上的可靠密钥传播及加密通信。
在这里插入图片描述
由于私钥和公钥互相可解,因此非对称加密还可以应用于数字签名技术。
在这里插入图片描述
通常会对原数据 hash 以后对 hash 签名,然后附加在原数据的后⾯作为签名。这是为了让数据更小
在这里插入图片描述
经典算法:RSA(可用于加密和签名)、DSA(仅⽤用于签名,但速度更更快)

  • 非对称加密的优缺点

    • 优点: 可以在不安全网络上传输密钥
    • 缺点: 计算复杂,因此性能相比对称加密差很多
  • 非对称加密(如 RSA、ECDSA)的破解
    破解思路

    • 和对称加密不同之处在于,非对称加密的公钥很容易获得,因此制造原⽂-密⽂对是没有困难的
    • 所以,非对称加密的关键只在于,如何找到⼀个正确的私钥,可以解密所有经过公钥加密过的密文。找到这样的私钥即为成功破解
    • 由于非对称加密的⾃身特性,怎样通过公钥来推断出私钥通常是⼀种思路(例如 RSA),但往最佳⼿段依然是穷举法,只是和对称加密破解的区别在于,对称加密破解是不断尝试⾃己的新密钥是否可以将⾃己拿到的原文-密文对进⾏加密和解密,⽽非对称加密时不断尝试⾃己的新私钥是否和公钥互相可解。

反破解
和对称加密⼀样,⾮非对称加密算法优秀的标准同样在于,让破解者找不到⽐穷举法更有效的破解⼿段,并且穷举法的破解时间⾜够长。

密码学密钥和登录密码

  • 密钥 (key)
    • 场景: 用于加密和解密
    • 目的: 保证数据被盗时不会被人读懂内容
    • 焦点: 数据
  • 登录密码 (password)
    • 场景: 用户进入网站或游戏前的身份验证
    • 目的: 数据提供方或应用服务方对账户拥有者数据的保护,保证“你是你”,的时候才提供权限
    • 焦点: 身份

Base64

将二进制数据转换成由 64 个字符组成的字符串的编码算法

  • 什么是二进制数据?
    • 广义: 所有计算机数据都是二进制数据
    • 狭义:非文本数据即二进制数据

算法
将原数据每 6 位对应成 Base 64 索引表中的一个字符编排成一个字符串 (每个字符 8 位)
Base64 索引表:
在这里插入图片描述
编码示例:把Man进行Base64编码
在这里插入图片描述
编码示例:Base64的末尾补足
在这里插入图片描述
Base64 的用途

  1. 将二进制数据扩充了储存和传输途径(例如可以把数据保存到文本文件、可以通过聊天对话框或短信形式发送二进制数据、可以在 URL 中加入简单的二进制数据)
  2. 普通的字符串在经过 Base64 编码后的结果会变得肉眼不可读,因此可以适用于一定条件下的防偷窥 (较少用)

Base64 的缺点
因为自身的原理 (6 位变 8 位),因此每次 Base64 编码之后,数据都会增大约 1/3,所以会影响存储和传输性能。

Base64 加密图片传输更安全和高效? ? ?
不。首先,Base64 并不是加密;另外,Base64 会导致数据增大 1/3,降低网络性能,增大用户流量开销,是画蛇添足的手段。 (最好不要拿来 diss 你们公司的后端哟,友善)Base64 对图片进行编码的用于在于,有时需要使用文本形式来传输图片。除此之外,完全没必要使用 Base64 对图片进行额外处理。

变种: Base58
bt币使用的编码方式,去掉了 Base64 中的数字“ 0 “,字母大写“ O ”,字母大写” I “,和字母小写” l “,以及“ + ”和“ / ”符号,用于bt币地址的表示,
Base58 对于 Base64 的改动,主要目的在于用户的便捷性。由于去掉了难以区分的字符,使得Base58 对于[人工抄写,更加方便。另外,去掉了”+”"/"号后也让大多数的软件可以方便双击选取。

URL 使用的百分号编码

在 URL 的字符串中,对一些不用于特殊用途的保留字符,使用百分号”%”为前缀进行单独编码,以避免出现解析错误。

例如,要在 http://hencoder.com/users 后面添加查询字符串,查询 name 为隐匿&伟大]的用如果直接写成 http://hencoder.com/user/?name=隐匿&伟大,"&”符号就会被解析为分隔符号、因此需要对它进行转码,转码后的 URL为 http://hencoder.com/user/?name=隐匿%26伟大

这种编码仅用于URL,目的是避免解析错误的出现

压缩与解压缩

  • 含义

    • 压缩:将数据使用更具有存储优势的编码算法进行编码。
    • 解压缩:将压缩数据解码还原成原来的形式,以⽅便使⽤。
  • ⽬的

    • 减小数据占用的存储空间

举例:
将下面的文本压缩

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

使用算法压缩后:

compress:a:1062;b:105
  • 压缩是编码吗?

    • 是。所谓编码,即把数据从一种形式转换为另一种形式。压缩过程属于编码过程,解压缩过程属于解码过程。
  • 常见压缩算法

    • DEFLATE、JPEG、MP3 等。

图片与音频、视频编解码

  • 图片的编码:把图像数据写成 JPG、PNG 等文件的编码格式

  • 图片的解码:把JPG、PNG 等文件中的数据解析成标准的图像数据

  • 含义

    • 将图像、音频、视频数据通过编码来转换成存档形式 (编码),以及从存档形式转换回来 (解码)
  • 目的

    • 存储和压缩媒体数据 (大多数媒体编码算法会压缩数据,但不是全部)
  • 图片压缩粗暴算法举例
    一张纯白 (白色的 16 进制数值为 xffffff) 的 64x64 不透明像素图片,原数据格式大致为:

width:64;height:64;ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff.......f
fffff

使用算法压缩后:

width:64;height:64;ffffff:[0,0]-[63,63]

音频与视频的编码与上面的图片编码同理

序列化

把数据对象(一般是内存中的,例如JVM 中的对象)转换成字节序列的过程。对象在程序内存里的存放形式是散乱的(存放在不同的内存区域、并且由引用进行连接),通过序列化可以把内存中的对象转换成一个字节序列,从而使用 bvte 等形式进行本地存储或网络传输,在需要的时候重新组装(反序列化)来使用

  • 反序列化:把字节序列重新转换成内存中的对象
  • 序列化:把数据对象(一般是内存中的,例如JVM 中的对象)转换成字节序列的过程
  • 目的:让内存中的对象可以被存储和传输
    序列化是编码吗?
    • 严格来说不是,序列化是jvm管理的内容,编码是将A格式变B格式

Hash

  • 定义:把任意数据转换成指定大小范围 (通常很小)的数据
  • 作用:摘要、数字指纹
  • 经典算法: MD5、SHA1、SHA256等
  • 实际用途:
    • 唯一性验证
      Java 中的 hashCode() ⽅方法。

    • 数据完整性验证

    • 快速查找:
      hashCode()和 HashMap

    • 隐私保护
      当重要数据必须暴露的时候,有事可以选择暴露它的 Hash 值 (例如 MD5),以保障原数据的安全例如网站登录时,可以只保存用户密码的 Hash 值,在每次登录验证时只需要将输入的密码的 Hash值和数据库中保存的 Hash 值作比对就好,网站无需知道用户的密码。这样,当网站数据失窃时,用户不会因为自己的密码被盗导致其他网站的安全也受到威胁

注意: 这不属于加密

  • Hash 是编码吗?
    不是。Hash 是单向过程,往往是不可逆的,无法进行逆向恢复操作,因此 Hash 不属于编码

  • Hash 是加密吗?
    不是。Hash 是单向过程,往往是不可逆的,无法进行逆向恢复操作,因此 Hash 不属于编码

字符集

含义:一个由整数向现实世界中的文字符号的 Map
分支:

  • ASCI: 128 个字符,1 字节
  • ISO-8859-1: 对 ASCII 进行扩充,1 字节
  • Unicode: 13 万个字符,多字节
    。 UTF-8: Unicode 的编码分支
    。 UTF-16: Unicode 的编码分支
  • GBK/GB2312/GB18030: 中国自研标准,多字节,字符集 +编码

课后题

  1. 【单选题】现代密码学可以加密什么数据?
    A. 文本数据
    B. 二进制数据
    C. 文本数据和二进制数据都可以

答案: C
答案解析:现代密码学可以加密的数据类型包括文本数据和二进制数据。文本数据通常是指人类可读的字符信息,例如文本文件、电子邮件等。二进制数据则是指计算机内部以0和1表示的数据,例如图片、音频、视频等。通过使用不同的加密算法和密钥,可以对这些数据进行加密和解密操作,以保护数据的机密性和完整性。因此,答案为C. 文本数据和二进制数据都可以。

  1. 【单选题】对称加密的加密与解密过程?
    A. 使用相同的密钥,相同的算法,对数据进行计算后得出的结果就是密文,之后再对密文进行计算之后得出的结果就是解密后的原数据
    B. 使用密钥和加密算法,对数据进行计算后得出的结果就是密文;使用相同的密钥,以及加密算法的逆过程,对密文进行计算之后得出的结果就是解密后的原数据
    C. 使用公钥对数据进行加密算法,计算得出的结果就是密文;使用私钥以及和加密过程同样的加密算法,对密文进行计算之后得出的结果就是解密后的原文。

答案: B
答案解析:对称加密的加密和解密过程是:使用相同的密钥和相同的算法,对数据进行加密计算,得到密文;然后使用相同的密钥和加密算法的逆过程,对密文进行解密计算,得到原始数据。因此,答案是B

  1. 【单选题】非对称加密的加密与解密过程?
    A. 使用相同的密钥,相同的算法,对数据进行计算后得出的结果就是密文,之后再对密文进行计算之后得出的结果就是解密后的原数据
    B. 使用密钥和加密算法,对数据进行计算后得出的结果就是密文;使用相同的密钥,以及加密算法的逆过程,对密文进行计算之后得出的结果就是解密后的原数据
    C. 使用公钥对数据进行加密算法,计算得出的结果就是密文;使用私钥以及和加密过程同样的加密算法,对密文进行计算之后得出的结果就是解密后的原文。

答案: C
答案解析:非对称加密的加密与解密过程是:使用公钥对数据进行加密算法,计算得出的结果就是密文;然后使用私钥以及和加密过程同样的加密算法,对密文进行解密计算,得到解密后的原文。因此,答案是C

  1. 【单选题】使用非对称加密进行数字签名的原理?
    A. 使用公钥对数据进行加密,然后使用私钥对数据进行解密。
    B. 使用私钥对数据进行加密,然后使用公钥对数据进行解密。

答案: B
答案解析:非对称加密是一种加密方法,其中有两个密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密数据。数字签名是一种用于验证数据完整性和身份认证的技术,它使用了非对称加密的原理。数字签名的过程是:发送方使用私钥对数据进行加密,然后接收方使用公钥对数据进行解密,以验证数据的完整性和身份认证

  1. 【单选题】在实际运用中,为什么要用原数据的 hash 来进行数字签名?
    A. 因为直接签名会导致原数据变得不直接可读
    B. 因为如果直接对原数据进行签名,然后把签名附加在原数据的后面,会导致签名数据过大,占用传输和存储空间。
    C. 以上两点都有

答案: C
答案解析:在实际运用中,要使用原数据的哈希值来进行数字签名,而不是直接对原数据进行签名,原因有两点:

  1. 如果直接对原数据进行签名,然后把签名附加在原数据的后面,会导致签名数据过大,占用传输和存储空间。
  2. 使用哈希值进行签名可以保证原数据的完整性,因为任何微小的改变都会导致哈希值发生改变,从而使得签名无效。
  1. 【单选题】在不可信网络上直接传输对称加密的密钥,然后使用密钥来通信,会有什么风险?
    A. 会被别人拦截到密钥,然后窃听通信内容
    B. 会被别人拦截到密钥,然后篡改通信内容
    C. 以上两个都有

答案: C 答案解析:在不可信网络上直接传输对称加密的密钥,然后使用密钥来通信,会面临以下两个主要风险:

  1. 密钥被拦截:由于是在不可信网络上进行密钥传输,攻击者可能会在网络上拦截这个密钥。一旦攻击者获得了密钥,他们就能够解密之后的通信内容,从而窃听通信内容。
    2.通信内容被篡改:使用同一个密钥进行通信意味着攻击者不仅能够拦截通信内容,而且可以篡改通信内容。这是因为使用同一个密钥进行加密和解密,攻击者可以修改通信内容(例如,插入、删除或更改信息)而不改变加密和解密的结果。因此,正确答案是C
  1. 【单选题】在不可信网络上直接传输非对称加密的公钥,然后只使用对方的公钥来加密通信内容,而不是用自己的私钥来签名,有什么风险?
    A. 被别人拿到对方公钥,然后窃听通信内容
    B. 被别人拿到对方公钥,然后篡改通信内容
    C. 以上两个都有

答案: B
答案解析:在不可信网络上直接传输非对称加密的公钥,然后只使用对方的公钥来加密通信内容,而不是用自己的私钥来签名,仍然存在以下两个主要风险:

  1. 公钥被拦截:由于是在不可信网络上进行公钥传输,攻击者可能会在网络上拦截这个公钥。一旦攻击者获得了这个公钥,他们就能够解密之后的通信内容,从而窃听通信内容。
  2. 通信内容被篡改:使用对方的公钥进行加密,虽然不能直接解密内容,但攻击者仍然可以篡改通信内容。这是因为非对称加密的公钥只是用于加密,而不是用于验证信息的完整性。因此,即使通信内容被篡改,接收方也很难察觉。因此,正确答案是C

8.·【单选题】Base64 编码的本质是什么?
A. 把数据做成字符串
B. 把数据加密
C. 把数据加密并做成字符串

答案: A 答案解析:Base64 编码的本质并不是加密数据,而是将二进制数据转化为可打印的 ASCII
字符。它是一种编码方式,目的是在不考虑字符集和编码的情况下,将任意二进制数据转换为可打印的 ASCII
字符串。这样做的好处是可以方便地在不支持二进制数据的场景(例如电子邮件)中传输数据。因此,答案是A

9.【单选题】压缩与解压缩属于编码与解码吗?
A. 属于
B. 不属于

答案: A
答案解析:压缩与解压缩是一种将数据从一种格式转换为另一种格式的过程。在压缩过程中,数据被编码为一个更小的表示形式,这样可以节省存储空间或提高传输效率。解压缩则是相反的过程,将压缩的数据解码或转换回原始的形式。这两个过程可以看作是编码和解码的一种形式,因为它们涉及到将数据从一种形式转换为另一种形式。因此,答案是A

  1. 【单选题】序列化的本质是什么?
    A. 把二进制数据变成可读写的形式
    B. 把内存中的对象变成二进制形式

答案: B
答案解析:序列化的本质是把内存中的对象变成二进制形式。序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化过程中,对象被转换为二进制序列,可以保存在文件中、传输到另一个计算机或通过网络发送到另一个进程。这个二进制序列可以在需要时通过反序列化重新创建对象。因此,答案为B

  1. 【单选题】Hash 的本质是?
    A. 把数据进行一种不可逆加密
    B. 从数据中提出摘要信息
    C. 把数据变成字符串

答案: B
答案解析:Hash 的本质是从数据中提取摘要信息。Hash函数将任意长度的二进制值映射为固定长度的二进制值,这个映射的结果就是所谓的“摘要”。摘要可以看作是原始数据的“指纹”,它提供了数据的简要表示,同时保留了足够的信息以便可以进行比对和验证。这种摘要信息的提取是单向的,也就是说,一旦数据被哈希,它就不能被还原回原始数据。因此,答案为B

  1. 【多选题】Hash 的作用有:
    A. 唯一性验证:判断一个数据是否是原数据,通过对比 hash 值就可以大概率做到
    B. 数据完整性验证:从网络上下载文件后,通过 MD5 值等 hash 值来判断文件是否损坏
    C. 快速查找:在 HashMap 的实现中,使用 hash 值快速寻找目标值的内存地址
    存地址
    D. 隐私保护:将用户的密码进行 hash 计算后再保存,防止网站数据泄露后暴露用户密码

答案: A B C D
答案解析:A. 唯一性验证:判断一个数据是否是原数据,通过对比 hash 值就可以大概率做到。这个选项是正确的,因为hash 函数的输出结果具有很高的唯一性,也就是说,输入稍微变化一点,输出的 hash值就会完全不同。因此,我们可以利用这个特性来判断一个数据是否是原数据,即通过对比 hash 值来判断。
B.数据完整性验证:从网络上下载文件后,通过 MD5 值等 hash 值来判断文件是否损坏。这个选项也是正确的,因为 hash 函数可以用于检测数据的完整性。在下载文件后,我们可以计算下载的文件和源文件的 hash值,并将这两个值进行对比。如果两个值相同,那么文件就是完整的;否则,文件就可能已经损坏。
C. 快速查找:在 HashMap 的实现中,使用hash 值快速寻找目标值的内存地址。这个选项也是正确的,因为 HashMap 是一种使用 hash 表的关联式容器,它通过计算键的hash 值来定位键值对在内存中的位置。这种做法可以大大提高查找速度,使得查找操作的时间复杂度为 O(1)。
D.隐私保护:将用户的密码进行 hash 计算后再保存,防止网站数据泄露后暴露用户密码。这个选项也是正确的,因为通过对用户的密码进行 hash
计算并保存其 hash 值而不是原始密码,即使网站数据泄露,攻击者也无法直接获取到用户的密码。这是因为 hash函数是单向的,即从原始密码到 hash 值的计算是很容易的,但是从 hash 值反推出原始密码是非常困难的。因此,通过保存用户密码的hash 值而不是原始密码,可以有效地保护用户的隐私。因此,所有选项 A、B、C、D 都是正确的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/171862.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++面试常见问题——const关键字的作用和用法

首先我们需要一下const关键字的定义,const名叫常量限定符,当const修饰变量时,就是在告诉编译器该变量只可访问不可修改,而编译器对于被const修饰的变量有一个优化,编译器不会专门为其开辟空间,而是将变量名…

Win10中Pro/E鼠标滚轮不能缩放该怎么办?

Pro/E安装好后,鼠标滚轮不能缩放模型,该怎么办?问题多发生在win8/win10上,新装了PROE,发现滑动鼠标中键不能放大缩小。 彩虹图纸管理软件_图纸管理系统_图纸文档管理软件系统_彩虹EDM【官网】彩虹EDM图纸管理软件系统…

Windows下安装Anaconda、Pycharm以及iflycode插件图解

目录 一、下载Anaconda、Pycharm以及iflycode插件 二、创建相关文件夹 三、Pycharm社区版安装详细步骤 四、Anaconda安装详细步骤 五、配置Pycharm 六、安装iflycode插件 Anaconda是一款集成的Python环境,anaconda可以看做Python的一个集成安装,安…

WebGL笔记:矩阵的变换之平移的实现

矩阵的变换 变换 变换有三种状态:平移、旋转、缩放。当我们变换一个图形时,实际上就是在移动这个图形的所有顶点。解释 webgl 要绘图的话,它是先定顶点的,就比如说我要画个三角形,那它会先把这三角形的三个顶点定出来…

云端代码编辑器Atheos

什么是 Atheos ? Atheos是一个基于 Web 的 IDE 框架,占用空间小且要求最低,构建于 Codiad 之上,不过 Atheos 已从原始 Codiad 项目完全重写,以利用更现代的工具、更简洁的代码和更广泛的功能。 注意事项 群晖内核版本太…

【计算机毕设小程序案例】基于微信小程序的图书馆座位预定系统

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 👉IT源码社-SpringBoot优质案例推荐👈 👉IT源码社-小程序优质案例…

理解V3中的proxy和reflect

现有如下面试题 结合GeexCode和Gpt // 这个函数名为onWatch,接受三个参数obj、setBind和getlogger。 // obj是需要进行监视的对象。 // setBind是一个回调函数,用于在设置属性时进行绑定操作。 // getlogger是一个回调函数,用于在获取属性时…

项目管理工具ConceptDraw PROJECT mac中文版自定义列功能

ConceptDraw PROJECT Mac是一款专业的项目管理工具,适用于MacOS平台。它提供了成功规划和执行项目所需的完整功能,包括任务和资源管理、报告和变更控制。 这款软件可以与ConceptDraw office集成,利用思维导图和数据可视化的强大功能来改进项目…

【Linux】操作系统以及虚拟机的安装与配置

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.操作系统的介绍 二.VMWare虚拟机的安装…

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意:VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…

底层全部重构,小米澎湃OS完整系统架构公布

上周,雷军发文称小米全新操作系统澎湃 OS 正式版已完成封包,将逐步接替 MIUI。而后,又有网友曝光小米澎湃 OS 界面。 今日,雷军再度发表长文预热小米澎湃 OS,正式公布了完整系统架构。 据介绍,从架构设计之…

【咕咕送书 | 第四期】《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》

🎬 鸽芷咕:个人主页 🔥 个人专栏:《粉丝福利》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 ⛳️ 写在前面参与规则一、前言1.0 人工智能新技术如何创新工作 ? 二、内容简介三、作者简介四、专家推…

请解释一下React中的条件渲染(conditional rendering)。

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Linux 系统调用IO口,利用光标偏移实现文件复制

用系统调用IO函数实现从一个文件读取最后2KB数据并复制到另一个文件中,源文件以只读方式打开,目标文件以只写的方式打开,若目标文件不存在,可以创建并设置初始值为0664,写出相应代码,要对出错情况有一定的处…

【C++项目】高并发内存池第六讲 当申请内存大于256K时的处理

目录 1.申请过程2.释放过程 1.申请过程 当申请的内存大于256kb时直接向堆中申请: static void* ConcurrentAlloc(size_t size) {if (size > MAX_BYTES){size_t alignSize SizeClass::RoundUp(size);size_t kpage alignSize >> PAGE_SHIFT;PageCache::…

Python爬虫核心模块urllib的学习

​ 因为在玩Python challenge的时候,有用过这个模块,而且学习这个模块之后也对系统学习网络爬虫有用。 ​ 当时查了各种资料学习,没有碰官网文档(因为还是对英语有抗拒性),但是还是官方的文档最具权威和学…

go创建完美的枚举类型

文章目录 一.前言二. 枚举基本要素描述三. 枚举设计源码3.1 EnumCommon-通用能力3.2 Enum_news 业务枚举3.3 定制化业务枚举 一.前言 用惯了springboot和Jakarta.才发现springboot和Jakarta的语言是多么精妙! 一些场景我们需要使用枚举: 如建立字典值映射,仅通过代码实现方便快…

macOS Sonoma 14.1正式版(23B74)发布(可下载黑白苹果镜像)

系统介绍 黑果魏叔苹果今天为 macOS Sonoma 推出了 14.1 版本更新,魏叔发现,本更新主要改善了 Apple Music 界面,设置中新增保修状态,并修复了多项错误内容。 根据苹果的新说明,这次的 Mac 更新不仅提供了一系列的改善…

electron27+react18集成搭建跨平台应用|electron窗口多开

基于Electron27集成React18创建一个桌面端exe程序。 electron27-vite4-react18基于electron27结合vite4构建工具快速创建react18跨端应用实践。 版本列表 "vite": "^4.4.5" "react": "^18.2.0" "electron": "^27.0.1&…

IT新人如何在职场弯道超车?强推荐考取当下最有价值的云计算认证证书!

疯狂的裁员!股价降低!在美国,一股寒冷的创业寒流正在席卷而来。不只是硅谷进入了冬天,国内的传统互联网寒潮也凛冽地来了。在传统 IT体系结构逐渐式微、产业规模不断缩小的情况下,许多 IT工程师都面临着下岗、跳槽等问…