2025/1/4期末复习 密码学 按老师指点大纲复习
我们都要坚信,道路越是曲折,前途越是光明。
---------------------------------------------------------------------------------------------------------------------------------
现代密码学 第五版 杨波
第一章 引言
1.1三大主动攻击
1.中断
2.篡改
3.伪造
1.2 五大安全业务
1.保密业务
2.认证业务
3.完整性业务
4.不可否认业务
5.访问控制
1.3 安全的网络通信考虑四个方面
1.加密算法
2.用于加密算法的秘密信息
3.秘密信息的分布和共享
4.使用加密算法和秘密信息以获得安全服务所需的协议
1.4 信息安全包括三个层次
1.系统安全(数据库、操作系统)
2.数据安全(数据的存储、传输)
3.内容安全(病毒的防护、不良内容的过滤)
1.5 保密通信系统构成
明文消息空间M、密文消息空间C、密钥空间K1和K2,在单钥体制下K1=K2=K,此时密钥K需经安全的密钥信道由发送方传给接收方,加密变换E(K1):M---->C,由加密器完成,解密变换D(K2):C----->M由解密器实现。总体(M,C,K1,K2,E,D)为保密通信系统。
1.6 保密通信系统应该满足的要求
1)系统即达不到理论上是不可破的,也就是说,从截获的密文或已知的明文,去决定密钥在计算上是不可行的。
2)系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥。
3)加密算法和解密算法适用于密钥空间中的所有元素。
4)系统便于实现和使用。
1.7 单钥体制对明文加密的两种方式
1)明文消息按字符逐位加密,称为流密码
2)明文消息分组(含多个字符),逐组地进行加密,称为分组密码。
单钥体制不仅可以用于数据加密,也可用于消息认证
1.8 对密码系统的攻击类型
唯密文攻击
已知明文攻击
选择明文攻击
选择密文攻击
1.9 几种古典密码
1.9.1 恺撒密码(填空题)
公式:
加密:c=E3(m)=m+3 ,0<=m<=25
解密:m=D3(c)=c-3 ,0<=c<=25
1.9.2 移位变换(凯撒密码的推广)
公式的写法只不过将密钥写成了K
c=Ek(m)=m+k ,0<=m,k<=25
m=Dk(c)=c-k ,0<=c,k<=25
1.9.3 仿射变换(大题出现,十分左右)
相比前面的公式出现了两个密钥
c=Ea,b(m)=am+b(mod26)
m=Da,b(c)=a的逆运算(c-b)(mod26)
求乘法逆元,简单的我们很快就能出结果,但是稍微数值大的,还是需要掌握欧几里得去计算乘法逆元。这里我私下问豆包进行了练习。乘法结合律小学数学不过关呜呜呜。
但是我找到了一个规律就是余数是几,就消除几。我们可以拼拼凑凑。去有意消除某一个余数。
书上的两道习题可以巩固我们对仿射加密算法的理解,P11
设仿射变换的加密是:
E11,23(m)=11m+23(mod26)
对明文THE NATIONAL SECURITY AGENCY加密,并使用解密变换
解密变换使用公式:
D11,23(c)=11^-1(c-23)(mod26)
首先求出乘法逆元
11^-1mod26
11在模26下的乘法逆元为为19,计算过程不再赘述。
要强调的是c-23为负数时,先正常计算乘法,最后把得到的负数结果通过加上合适的模数倍数,转化为到之间的非负整数,也就是模运算的标准结果。
比如m为12,加密结果应该是k
k为10,10-23=-13
-13*19/26=9....13那么余数是13,即为n
第二章 流密码
2.1 流密码的基本概念
流密码的基本思想是利用密钥k产生一个密钥流z=z0z1...,并使用如下规则对明文串x=x0x1x2...进行加密:y=y0y1y2...=Ez0(x0)Ez1(x1)Ez2(x2).......
这里 Ez0(x0)
代表使用密钥流中的第 0 个元素 z0
对明文的第 0 个元素 x0
执行加密变换。
第三章 分组密码体制
3.1.什么叫分组密码?
分组密码是将明文消息编码表示后的数字序列,x0,x1,xi...划分成长n的组x=(x0,x1......xn-1),各组(长为n的矢量)分别在密钥k=(k0,k1,ki-1)控制下变换成等长的输出数字序列y=(y0,y1...ym-1),其加密函数E:Vn*K---->Vm,Vn和Vm是n维和m维矢量空间,k为密钥空间。
3.2 分组密码设计算法应该满足什么要求? P书本33
1)分组长度n要足够大
2)密钥量要足够大,但密钥又不能过长
3)密钥确定置换的算法要足够复杂
4)加密和解密运算要简单
5)数据扩展尽可能小
6)差错传播尽可能小
3.3 为什么DES不安全?
答:密钥长度短,DES 使用 56 位的密钥长度,在计算能力飞速发展的当下,通过穷举密钥进行暴力破解的难度已经大幅降低。(就是老师说的的穷苦攻击)
(谈二重DES,三重DES)
二重 DES:使用了两个密钥, 但实际上,存在一种中间相遇攻击法。安全性和普通的DES差不多。
三重DES运算速度相对较慢,但是在 AES 正式广泛推行前,三重 DES 是一种被广泛认可且应用的对称加密标准。
3.4 为什么现在还要使用DES(好处谈一谈)
DES 加密算法虽然安全性有所欠缺,但在加解密速度与层级特性上,仍有值得一提的优势:
- 加解密速度快
- 运算逻辑简单:DES 的加密和解密过程基于固定的置换、代换操作,并且按轮次依次开展。每一轮内部的变换都是预先定义好的简单位运算,像是异或、移位、替换等基础操作,现代处理器能够极为高效地执行这类底层指令,无需复杂的浮点运算或高耗时的矩阵操作,使得单次加密或解密的运算速度非常可观。
- 成熟优化:作为问世多年的经典算法,DES 积累了海量的优化经验与代码实现范例。无论是软件层面,程序员们通过汇编语言、C 语言对关键运算步骤精细调优;还是硬件层面,芯片厂商将 DES 运算模块集成进专用电路,都使得 DES 在实际应用场景下,能实现高速的加解密吞吐,快速处理输入数据。
- 层级不高
- 易于集成:相较于一些新兴的高级加密算法,DES 层级架构简单。它没有多层嵌套的复杂加密模式,对于很多小型设备、简易系统而言,这种低层级加密方案更容易嵌入。举例来说,智能家居里的一些基础传感器,只需简单几步就能把 DES 加密模块整合进其有限的固件当中,不涉及复杂的架构适配与多层加密协同难题。
- 便于理解与维护:低层级意味着其加密原理清晰直白,技术人员不需要深厚的密码学专业知识储备,就能明白 DES 的加密、解密流程走向。当出现问题或者需要对加密过程微调时,运维、开发人员能够快速定位故障、做出调整,降低了运维成本与系统的故障风险。
3.5 混淆和扩散 P34
答:扩散和混淆是由Shannon提出的设计密码系统的两个基本方法,目的是抗击敌手对密码系统的统计分析。
扩散的目的是使明文和密文之间的统计关系尽可能复杂,使敌手无法得到密钥。混淆是使密钥和密文关系尽可能复杂,使敌手无法得到密钥。
扩散和混淆成功实现了分组密码的本质特性,因而成为设计现代分组密码的基础。
3.6 S盒的输入输出模式 P42
答:具体原理我没懂。我只能用自己的话说了。
在 DES(数据加密标准)算法中,S 盒是极为关键的组件
输入 6 位二进制数据。将这6位二进制数据放入S盒中处理一次就得到四位二进制数,一共处理8次,经过内部查表后,输出32位的二进制数。
3.7 分组密码的4种模式 p47
电码本模式
密码分组链接模式
密码反馈模式
输出反馈模式
3.8 IDEA 通过哪两种来实现算法
可以非常方便的通过软件和硬件实现
1.软件:采用16比特子段处理,可通过使用容易编程的加法、移位等运算实现算法的三个运算
2.硬件:由于加解密相似,差别仅为使用密钥的方式,因此可以使用同一器件实现。
3.9 AES算法 P59
它的设计策略是宽轨迹策略,是针对差分分析和线性分析提出的,它最大的优点是可以给出算法的最佳差分特征的概率及最佳线性逼近的偏差的界,因此,可以分析算法抵抗差分密码分析及线性密码的分析能力。
多项式的表示 :填空题出现
四位二进制代表一个十六进制数。
比如57就是 5和7
0101 0111
最后应该表示为 x+x^2+x^4+x^6+1
57+83=D4
记住我们是需要把十进制拆成两位数,去表示十六进制的
也就是5和7,8和3
0101 0111 1000 0011
x+x^2+x^4+x^6+1+(x^7+x+1)=x^7+x^6+x^4+x^2
结果我们会发现常数项被约掉了,这是因为在有限域 GF (2) 当中,系数只有 0 和 1,做加法遵循异或规则。
所以结果是:11010100
字节的乘法 大题出现
书上的例题是
57 * 83 =C1
老子真的是学得要疯了,最讨厌算算术了。这个我根本算不出,算不懂。
昨天去问了一班学委,告诉我字节的乘法是,移位相加减。异或。
第四章 公钥密码
4.1 群、环、域概念 P84
群、环、域都是代数结构,代数系统是对要研究的现象或过程建立起的一种数学模型,模型中包括要处理的数学对象的集合以及集合上的关系或运算,运算可以是一元的也可以是多元的,可以是一个也可以有多个。
懂都不懂,我感觉,不重要,因为不懂。哈哈哈哈哈哈哈哈哈哈哈哈哈哈。》
---------------------------------------------------------------------------------------------------------------------------------
群:封闭性、结合性、存在单元、存在逆元 (二元运算) 例如:非零有理数
有理数是:整数和分数的统称。
环:有两个二元运算,通常记为加法 “+” 和乘法 “*” ,构成环的集合 满足:
- 关于加法 “” 构成一个阿贝尔群,也就是加法满足封闭性、结合律、有单位元、每个元素有加法逆元,还满足交换律。
- 关于乘法 “” 满足封闭性和结合律。
- 例如:整数集Z
域:特殊的环,满足环的所有特点。实数R。
4.2 模运算
模逆运算,学会仿射加密的解密就应该会这个才对!
一些简单的我们不必进行欧几里得计算,比如5^-1mod13
遇到简单的我们只需要想简单的定义就好,5乘以多少去mod13=1,五八四十,三*13=39,也就是8,有时候进行欧几里得去算,反而显得我们很呆知道吗?难能可贵的是我可能去算,算的可能是错的。
模运算有以下性质:
[ ( a mod n ) + ( b mod n ) ]mod n = (a + b)mod n
[ ( a mod n ) - ( b mod n ) ]mod n = (a - b)mod n
[ ( a mod n ) * ( b mod n ) ]mod n = (a * b)mod n
4.3 欧拉定理
在密码学的 RSA 加密算法里,欧拉定理起到了核心作用。RSA 算法利用大整数分解难题以及欧拉定理来实现加密和解密过程,保障信息传输的安全性。例如,公钥和私钥的生成、加密消息与解密消息的数学变换,背后的理论依据都离不开欧拉定理构建的同余关系体系。
计算逻辑一般是,这个数的因子里如果有平方,那么就 这个数乘以(1-1/p)乘以(1-1/q)
这是一种情况
还有一种情况是这样的
比较简单
有时候我们想要计算4^12=4^4+4^8=(4^2)^2+((4^2)^2)^2
4.4 欧几里得算法
用来求最大公因式的,也叫辗转相除法
(108,386)=(62,108)=(46,62)=(16,46)=(14,16)=(2,14)
所以最大公因数是2
用大的除以小的,余数作为下一个小的.
4.5 陷门单向函数
研究公钥密码算法就是要找出合适的陷们单向函数。
称一个函数是陷门单向函数,是指该函数是易于计算的,但求它的逆是不可行的,除非再已知某些附加信息。当附加信息给定后,求逆可在多项式时间完成。总结为:陷门单向函数是一族可逆函数。
老师给我们举的例子是,已知大素数P,Q 求N=P*Q
在计算上是可行的,反过来已知N,但是求PQ是不可行的。这也反映了陷门单向函数的一种思想。
4.6 公钥密码算法要满足的六点要求
1.产生的公钥和私钥在计算上是容易的。
2.发送方使用公钥加密产生密文在计算上是容易的。
3.收方B用自己的秘密钥解密,在计算上是容易的。
4.敌手使用公钥求密钥是不可行的。
5.敌手由知道密文和公钥,是恢复不出明文的。
6.加解密次序可以互换。(不对所有做要求)
4.7 公钥加密过程四步
书上懂都不懂 还是豆包好
- 密钥生成:
- 接收方利用特定的加密算法生成一对密钥,分别是公钥和私钥。这两个密钥在数学上存在紧密关联,但通过公钥很难推算出私钥。例如在 RSA 算法中,会挑选两个大质数,经过一系列复杂的数论运算得出公钥和私钥。公钥会被公开分享,可随意发布在网络等渠道,供任何想要给接收方发送加密信息的人获取;而私钥则被严格保密,只有接收方自己持有 。
- 明文加密:
- 发送方获取接收方的公钥后,使用公钥对原始的明文消息进行加密。加密算法会依据公钥的参数,将明文中的每一个字符、数据块,通过复杂的函数运算,转化为一串看似毫无规律的密文。这一过程保证了只有对应的私钥才能逆向还原出原始信息,即便其他人截获密文,由于没有私钥,也难以解读内容。
- 密文传输:
- 经过加密生成的密文,会通过不安全的公开通信渠道, 如互联网,从发送方传输至接收方。因为密文已经经过加密处理,所以即使传输过程中被第三方监听、窃取,第三方也无法直接知晓其中的含义。
- 密文解密:
- 接收方拿到传输过来的密文后,使用自己一直秘密保存的私钥对密文进行解密。解密算法利用私钥的特性,逆转加密时的运算过程,将密文重新还原成原始的明文消息,至此,接收方成功获取发送方发来的真实信息。
4.8 掌握RSA加解密
要死啊什么都是重点,挂科算了。
其实不难,也就是是一个计算顺序的问题,首先求出大素数欧拉值,之后选一个整数必须小于欧拉值也必须与欧拉值互为质数,使用公钥加密,使用私秘钥,解密。
不像人类学的东西一样。哈哈。
这里的三个横线(≡)是同余符号,表示两个数在除以某个特定数(模数)时余数相同。
首先密钥生成选两个保密的大素数 p q
计算欧拉值,也就是 =(p-1)(q-1) n=pq
选取整数e,小于欧拉值,必须与刚刚计算的欧拉值互质。作为公钥的一部分。
计算私钥d:找到一个整数d,使得(e*d)mod欧拉值=1
d=e^-1modn
4.9 P114 4-26
计算RSA算法的题目
选p=7,q=17,求n=p*q=119,欧拉值为96,取e=5
d=e^-1mod(欧拉值)
d=19
c=m^5mod119
m=c^19mod119
在书中,明文是自己设置的。m=19,在进行计算时,我们可以将次方拆解后进行计算
算术题一共有三道:1.仿射加密 2.多项式乘法 3.RSA加解密
4.10 RSA的安全性问题和密码分析问题(与分组密码对应着)
答:RSA算法的安全性主要依赖于大数分解的困难性。给定一个非常大的合数(即两个或多个质数的乘积),目前没有已知的高效算法能够在合理的时间内分解出它的质因数。这使得RSA算法在合理选择密钥长度和参数的情况下具有很高的安全性。
RSA是非对称密码,分组密码是对称密码。
分组密码的安全性依赖于密钥,而RSA的安全性不仅依赖于密钥而且依赖于算法。
对称密码适用于需要高速处理大量数据的场景,如文件传输。非对称密码适用于需要高安全性的场景,如网络传输和数字签名。
4.11 简答题出现 :共模攻击和低指数攻击 P118
答: 只有彻底弄懂RSA,才可以理解
4.12 IFP问题和DLP问题分析。
答:
4.13 AES移位相加法
第五章 密钥分配与密钥管理
5.1 密钥交换的问题(如何进行的安全性问题)P143
该算法的唯一目的是使得两个用户能够安全地交换密钥,得到一个共享的会话密钥,算法本身不能用于加解密。
BBS产生器(谈安全性,算法,分析题)P149
安全性:密码强度最强的伪随机数产生器。安全性较高
秘密分割 P150
有三个门限方案,名字真高级,字太多了,我不学
秘密分割门限方案
Shanmir门限方案
基于中国剩余定理的门限方案
第六章 消息认证和哈希函数
P157 消息认证
消息认证码是指消息被一个密钥控制的公开函数作用后产生的,用作认证符的、固定长度的数值,也称密码校验和。
哈希函数(公开函数)
性质:
1.函数的输入可以是任意长
2.函数的输出是固定长
3.已知x,求H(x)较为容易,可用硬件或软件实现。
.................................看书吧其实都不懂。P162
MD5哈希算法
如果不懂的话,其实不如不记
处理过程:
1.对消息的填充
2.附加消息的长度
3.对MD缓冲区的初始化
4.以分组为单位对消息进行处理
第七章 数字签名和认证协议
数字签名的性质:
1.能够验证签名产生者的身份,以及产生签名的日期和时间
2.能用于证实被签消息的内容
3.数字签名可由第三方验证,从而能够解决通信双方的争议。
数字签名的要求:
1.签名的产生必须使用发方独有的一些信息以防伪造和否认
2.签名的产生较为容易
3.签名的识别和验证较为容易
4.构造假冒的数字签名是不可行的,无论是对于新的消息还是已知的消息。
数字签名产生的方式:P183
加密算法和签名算法产生.
时间戳、时间和应答
第一次听到时间戳还是python课上面,下面是豆包的回答。
可以稍微多看两眼,考试知道怎么多写点字就好了。老师,菜菜捞捞。
时间戳:
在数字签名场景下,时间戳常被添加到待签名的消息当中。这样做可以防止重放攻击,因为带有时间戳的消息,接收方能够核查消息生成的时间是否合理,拒绝接收过时的、可能是攻击者重放的消息。在区块链技术里,时间戳更是关键要素,每一个区块都带有生成时的时间戳,用于确定交易的先后顺序,维持区块链账本的时序性与不可篡改性。
时间:
在分布式系统中,多个节点的时间同步至关重要。不同节点如果时间不一致,会引发一系列问题,例如在加密协议里,若双方时间偏差过大,可能导致密钥交换、认证流程出错。网络时间协议(NTP)就是常用的用于同步计算机网络中各个设备时间的协议,它让设备能够与权威时间源(如原子钟服务器)保持精确同步,误差可控制在毫秒级。
应答:
在安全协议中,应答也融入了安全考量。如身份认证环节,服务端收到客户端的认证请求后,返回的应答可能携带验证码、加密挑战等信息,客户端需正确回应才能完成认证;数字签名验证时,接收方验签后的应答会明确告知签名是否有效,发送方借此判断后续操作流程。
RSA与数字签名的安全性问题
写在最后
大家一起备考复习,如果有错,请在评论区或私信指正,互相学习,共同进步。🌹🌹
相关文章:
2025/1/4期末复习 密码学 按老师指点大纲复习
我们都要坚信,道路越是曲折,前途越是光明。 --------------------------------------------------------------------------------------------------------------------------------- 现代密码学 第五版 杨波 第一章 引言 1.1三大主动攻击 1.中断…...
【数据仓库金典面试题】—— 包含详细解答
大家好,我是摇光~,用大白话讲解所有你难懂的知识点 该篇面试题主要针对面试涉及到数据仓库的数据岗位。 以下都是经典的关于数据仓库的问题,希望对大家面试有用~ 1、什么是数据仓库?它与传统数据库有何区别? 数据仓库…...
deepFM模型pytorch实现
deepFM deepfm包含两个部分:因子分解机FM和神经网络DNN,分别负责低阶特征和高阶特征的提取。可以处理全是分类特征的数据,或者分类与数值型结合的数据。 FM部分是对一阶特征和二阶特征(一阶特征之间的交互)的处理。 …...
【Linux】传输层协议UDP
目录 再谈端口号 端口号范围划分 UDP协议 UDP协议端格式 UDP的特点 UDP的缓冲区 UDP注意事项 进一步深刻理解 再谈端口号 在上图中,有两个客户端A和B,客户端A打开了两个浏览器,这两个客户端都访问同一个服务器,都访问服务…...
MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分
MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分 目录 MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分MOE划分不同专家的方法K-Means聚类算法来实现将神经元特征聚类划分成不同专家(行或者列聚类)举例说明怎么聚类,最后神经网络怎么保存M…...
Redis两种主要的持久化方式是什么?
Redis支持两种主要的持久化方式,它们分别是RDB(Redis Database Snapshotting)和AOF(Append Only File)。以下是这两种持久化方式的详细介绍: 一、RDB(Redis Database Snapshotting) …...
【生活】冬天如何选口罩(医用口罩,N95, KN95还是KP95?带不带呼吸阀门?带不带活性炭?)
💡总结一下就是: 日常防护的话,医用口罩就可以啦。要是想长时间佩戴N95(KN95)口罩的话也可以. 在高风险环境(像医院、疫情防控期间),一定要选不带呼吸阀门的N95口罩KN95)…...
机器学习基础-卷积的计算
1 掌握卷积计算的基本过程 1.1 单通道单卷积核 如图3所示,现在有一张形状为[5,5,1]的灰度图,我们需要用图3右边的卷积核对其进行卷积处理,同时再考虑到偏置的作用。计算过程如下: 1.2 单通道多卷积核 如下图所示,左…...
使用LINUX的dd命令制作自己的img镜像
为了避免重复安装同一镜像,配置环境,首先我准备一个正常使用的完整系统。 使用Gparted软件先将母盘(如U盘,TF卡)分区调整为只有数据的大小。如:60G的TF卡,只用了3.5G,将未使用的空间…...
pdf预览兼容问题- chrome浏览器105及一下预览不了
使用的"tato30/vue-pdf": "^1.11.2"预览插件,发现chrome浏览器105及一下预览不了 pdfPreview预览组件: <template><div id"vue_pdf_view"><div class"tool_tip"><template v-if"pa…...
SpringBoot中实现拦截器和过滤器
【SpringBoot中实现过滤器和拦截器】 1.过滤器和拦截器简述 过滤器Filter和拦截器Interceptor,在功能方面很类似,但在具体实现方面差距还是比较大的。 2.过滤器的配置 2.1 自定义过滤器,实现Filter接口(SpringBoot 3.0 开始,jak…...
基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask,vueflask模式的前端和后端之间进行数据的传递通常是借助 API(应用程序编程接口)来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如,前端可能通过发送…...
GitHub的简单操作
引言 今天开始就要开始做项目了,上午是要把git搭好。搭的过程中遇到好多好多的问题。下面就说一下git的简单操作流程。我们是使用的GitHub,下面也就以这个为例了 一、GitHub账号的登录注册 https://github.com/ 通过这个网址可以来到GitHub首页 点击中间绿色的S…...
LLM大语言模型自动化测试(ROUGE和RAGAS)及优化方案
1. 模型自动化测试 模型的测试中,不同类型的任务评测指标有显著差异,比如: 分类任务: 准确率(Accuracy):正确预测的比例。 精确度(Precision)、召回率(Recal…...
你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?
你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗? 一. JVM、JDK与JRE的关系二. JVM、JDK与JRE的作用2.1 什么是JVM?2.2 什么是JDK?2.3 什么是JRE? 前言 点个免费的赞和关注,有错误的地方请指出,看个人主页有…...
实际开发中,常见pdf|word|excel等文件的预览和下载
实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…...
Elasticsearch:Lucene 2024 年回顾
作者:来自 Elastic Chris Hegarty 2024 年对于 Apache Lucene 来说又是重要的一年。在本篇博文中,我们将探讨主要亮点。 Apache Lucene 在 2024 年表现出色,发布了许多版本,包括三年来的首次重大更新,其中包含令人兴奋…...
springboot实战纪实-课程介绍
教程介绍 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。 Spring Boot通过自动配置功能,降低了复杂性,同时支持…...
什么是TDD测试驱动开发(Test Driven Development)?
什么是测试驱动开发? 软件开发团队通常会编写自动化测试套件来防止回归。这些测试通常是在编写应用程序功能代码之后编写的。我们将采用另一种方法:在实现应用程序代码之前编写测试。这称为测试驱动开发 (TDD)。 为什么要应用 TDD?通过在实…...
学习随记:word2vec的distance程序源码注释、输入输出文件格式说明
word2vec中有5个程序,其中demo-word.sh中涉及两个:word2vec、distance。考虑到distance比较简单,所以我从这个入手,希望通过简单代码理解如何在一个高维数据空间计算距离(查找)。一维数据的查找,…...
CSS 之 position 定位属性详解
CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、静态定位:position:static;二、相对定位:position:relative三、绝对定位:pos…...
初学STM32 --- USMART
目录 USMART简介 USMART主要特点: USMART原理 USMART组成: USMART 的实现流程简单概括 USMART扫描函数: USMART系统命令 USMART移植 USMART简介 USMART是一个串口调试组件,可以大大提高代码调试效率! USMART主…...
MySQL叶子节点为啥使用双向链表?不使用单向呢?
文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ MySQL 中的 B 树索引&#x…...
4_TypeScript 条件语句 --[深入浅出 TypeScript 测试]
在 TypeScript 中,条件语句用于根据不同的条件执行不同的代码块。这些语句包括 if 语句、else if 语句、else 语句和 switch 语句。通过使用条件语句,你可以编写出能够根据特定逻辑分支的代码,从而实现更加动态和灵活的功能。 1. if 语句 i…...
vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。
vue elementUI Plus实现拖拽流程图,不引入插件,纯手写实现。 1.设计思路:2.设计细节3.详细代码实现 1.设计思路: 左侧button列表是要拖拽的组件。中间是拖拽后的流程图。右侧是拖拽后的数据列表。 我们拖动左侧组件放入中间的流…...
图漾相机基础操作
1.客户端概述 1.1 简介 PercipioViewer是图漾基于Percipio Camport SDK开发的一款看图软件,可实时预览相机输出的深度图、彩色图、IR红外图和点云图,并保存对应数据,还支持查看设备基础信息,在线修改gain、曝光等各种调节相机成像的参数功能…...
【阅读笔记】基于FPGA的红外图像二阶牛顿插值算法的实现
图像缩放技术在图像显示、传输、分析等多个领域中扮演着重要角色。随着数字图像处理技术的发展,对图像缩放质量的要求也越来越高。二阶牛顿插值因其在处理图像时能够较好地保持边缘特征和减少细节模糊,成为了图像缩放中的一个研究热点。 一、 二阶牛顿插…...
K210识别技术简介与基础使用方法
目录 一、K210芯片概述 二、K210的硬件配置与开发环境 1. 硬件配置 2. 开发环境 三、K210的识别技术基础 1. 图像识别 2. 语音识别 四、K210识别技术的基础使用方法 1. 图像识别基础使用 2. 语音识别基础使用 五、K210识别技术的应用场景 六、总结与展望 一、K210芯…...
【Android学习】Adapter中使用Context
参考文章 文章目录 1. 通过 Adapter 构造函数传入 Context2. 通过 Parent.context 获取3. 通过 onAttachedToRecyclerView() 方法获取4. 通过 ImageView 获取 context (局限于本例子中)5. 四种方法对比分析6. 作者推荐的方法 需求: Glide加载图片需要用到Context 1…...
LLM大模型RAG内容安全合规检查
1.了解内容安全合规涉及的范围 我们先回顾一下智能答疑机器人的问答流程。问答流程主要包括用户、智能答疑机器人、知识库、大语言模型这四个主体。 涉及内容安全的关键阶段主要有: 输入阶段:用户发起提问。 输出阶段:机器人返回回答。 知识…...
Flink operator实现自动扩缩容
官网文档位置: 1.Autoscaler | Apache Flink Kubernetes Operator 2.Configuration | Apache Flink Kubernetes Operator 1.部署K8S集群 可参照我之前的文章k8s集群搭建 2.Helm安装Flink-Operator helm repo add flink-operator-repo https://downloads.apach…...
数据挖掘——集成学习
数据挖掘——集成学习 集成学习Bagging:有放回采样随机森林 BoostingStacking 集成学习 集成学习(Ensemble learning)方法通过组合多种学习算法来获得比单独使用任何一种算法更好的预测性能。 动机是为了提高但分类器的性能 Bagging&…...
XGBoost 简介:高效机器学习算法的实用指南
1. 什么是 XGBoost? XGBoost,全称 eXtreme Gradient Boosting,是一种基于 梯度提升决策树(GBDT) 的高效实现。相比传统的 GBDT,XGBoost 在速度、内存利用和并行化等方面做了很多优化,因此在大规…...
【NLP高频面题 - Transformer篇】什么是缩放点积注意力,为什么要除以根号d?
什么是缩放点积注意力,为什么要除以根号d? 重要性:★★★ Transformer 自注意力机制也被称为缩放点积注意力机制,这是因为其计算过程是先求查询矩阵与键矩阵的点积,再用 d k \sqrt{d_k} dk 对结果进行缩放。这…...
HTML——56.表单发送
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单发送</title></head><body><!--注意:1.表单接收程序,放在服务器环境中(也就是这里的www文件目录中)2.表单发送地址&#x…...
C++26 函数契约(Contract)概览
文章目录 1. 什么是契约编程?契约编程的三大核心: 2. C26 契约编程的语法语法示例 3. 契约检查模式3.1. default 模式3.2. audit 模式3.3. axiom 模式检查模式的设置 4. 契约编程与传统 assert 的区别示例对比 5. 契约编程的应用场景6. 注意事项7. 示例: 带契约的矩形面积计算…...
【HTML】Day02
【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用:布局内容排列整齐…...
Kafka的rebalance机制
1、什么是 rebalance 机制 重平衡(rebalance)机制规定了如何让消费者组下的所有消费者来分配 topic 中的每一个分区。 2、rebalance 机制的触发条件是什么 (1)消费者组内成员变更 成员增加:当有新的消费者加入到消费…...
Spring Boot - 日志功能深度解析与实践指南
文章目录 概述1. Spring Boot 日志功能概述2. 默认日志框架:LogbackLogback 的核心组件Logback 的配置文件 3. 日志级别及其配置配置日志级别3.1 配置文件3.2 环境变量3.3 命令行参数 4. 日志格式自定义自定义日志格式 5. 日志文件输出6. 日志归档与清理7. 自定义日…...
【React+TypeScript+DeepSeek】穿越时空对话机
引言 在这个数字化的时代,历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里,我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物"活"起来?如何让历史学习变得生动有趣?带着这些思考&…...
2025年贵州省职业院校技能大赛信息安全管理与评估赛项规程
贵州省职业院校技能大赛赛项规程 赛项名称: 信息安全管理与评估 英文名称: Information Security Management and Evaluation 赛项组别: 高职组 赛项编号: GZ032 1 2 一、赛项信息 赛项类别 囚每年赛 □隔年赛(□单数年…...
2、蓝牙打印机点灯-GPIO输出控制
1、硬件 1.1、看原理图 初始状态位高电平. 需要驱动PA1输出高低电平控制PA1. 1.2、看手册 a、系统架构图 GPIOA在APB2总线上。 b、RCC使能 GPIOA在第2位。 c、GPIO寄存器配置 端口:PA1 模式:通用推挽输出模式 -- 输出0、1即可 速度:5…...
推荐系统重排:DPP 多样性算法
行列式点过程(DPP)算法:原理、应用及优化 推荐系统【多样性算法】系列文章(置顶) 1.推荐系统重排:MMR 多样性算法 2.推荐系统重排:DPP 多样性算法 引言 行列式点过程(Determinanta…...
【业务场景】sql server从Windows迁移到Linux
目录 1.背景 2.Linux安装sql server 3.服务器不开端口的问题 4.数据库导入导出问题 1.背景 博主在24年年底接手运维了一个政府的老系统,整个应用和数据库单点部署在一台Windows Server服务器上,数据库选型是经典的老项目标配——sql server。随着近…...
SpringMVC(三)请求
目录 一、RequestMapping注解 1.RequestMapping的属性 实例 1.在这里创建文件,命名为Test: 2.复现-返回一个页面: 创建test界面(随便写点什么): Test文件中编写: 编辑 运行: 3.不返回…...
【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜
HeadFirst设计模式开胃菜 前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模…...
Spring线程池优雅关闭
前言 线程池大家一定不陌生,常被用来异步执行一些耗时的任务。但是线程池如何优雅的关闭,却少有人关注。 当 JVM 进程关闭时,你提交到线程池的任务会被如何处理?如何保证任务不丢? ThreadPoolExecutor Java 对线程…...
Spring为什么要用三级缓存解决循环依赖?
1.什么是循环依赖 本文为了方便说明,先设置两个业务层对象,命名为AService和BService。其中Spring是如何把一个Bean对象创建出来的,其生命周期如下: 构造方法–> 不同对象 --> 注入依赖 -->初始化前 --> 初始化后–&…...
【苏德矿高等数学】第4讲:数列极限定义-1
2. 数列极限 数列极限是整个微积分的核心。它的思想贯穿整个微积分之中。 数列极限是最基本的、最核心的、最重要的、最难的。 2.1 数列 【定义】无限排列的一列数 a 1 , a 2 , ⋯ , a n , ⋯ a_1,a_2,\cdots,a_n,\cdots a1,a2,⋯,an,⋯就称为数列,记作 { …...
Go语言的 的并发编程(Concurrency)核心知识
Go语言的并发编程(Concurrency)核心知识 在现代软件开发中,尤其是处理高并发任务时,优秀的并发编程能力显得尤为重要。Go语言(或称Golang)是为并发编程而生的一种编程语言,它通过简洁的语法和强…...