当前位置: 首页 > news >正文

【密码学】面向小白的古典密码基础入门笔记

目录

Mindmap 

前言

破译方法

三类古典密码

替换密码

分类

单表替换密码 

凯撒密码

简单替换密码

仿射密码

普莱费尔密码

培根密码

猪圈密码

摩斯密码

多表替换密码

维吉尼亚密码

移位密码

滚筒密码

栅栏密码


Mindmap 

前言

1.所有古典密码都已不安全

2.密钥空间应该尽量大

3.密文应该扰乱统计规律

4.效率和安全是矛盾的

破译方法

1.穷举法:尝试所有密钥

2.分析法:确定性分析(数学公式);统计分析

三类古典密码

古典密码学中的替换密码,移位密码和机械密码是三种基本的加密技术,它们在实现原理和加密方法上有所不同:

  1. 替换密码

    • 定义:替换密码是一种通过将明文中的每个字符替换为另一个字符或符号来进行加密的技术。
    • 特点:最简单的替换密码是凯撒密码,其中明文字母按照一个固定的偏移量进行替换。其他替换密码可能使用更复杂的置换表,例如维吉尼亚密码就是使用多个凯撒密码表组成的多表替换密码。
  2. 移位密码

    • 定义:移位密码是一种替换密码的特例,其中每个明文字符按照固定的偏移量(位移)来替换。也称为凯撒密码。
    • 特点:凯撒密码中,明文的每个字母按照一个固定的偏移量向右(或向左)移动,例如偏移量为3的凯撒密码将'A'替换为'D','B'替换为'E',以此类推。移位密码属于替换密码的一种简单形式,易于实现,但安全性较低。
  3. 机械密码

    • 定义:机械密码是使用机械装置(通常是基于物理结构的装置)来实现加密和解密的密码系统。
    • 特点:机械密码通常涉及转轮、齿轮或其他物理结构,这些结构可以根据密钥或密码来调整,从而实现字符的替换或转换。最著名的例子是恩尼格玛机(Enigma machine),它在二战期间被纳粹德国用作加密通信的工具。

总结

  • 替换密码是通过替换明文中的字符来实现加密,可以是简单的移位替换,也可以是更复杂的多表替换。
  • 移位密码是替换密码的一种特例,其中每个字符按照一个固定的位移量进行替换。
  • 机械密码利用物理结构实现加密,通常比纯文本替换更复杂,提供了更高的加密强度和安全性。

替换密码

分类

  1. 单表替换密码

    • 定义:单表替换密码是指通过一个固定的替换表(例如字母表的置换表)来加密明文。最著名的例子是凯撒密码,其中字母表中的每个字母都按照一个固定的偏移量进行替换。
    • 特点:单表替换密码的加密过程是简单的替换操作,每个明文字符(或者字符块)都对应一个唯一的密文字符(或者字符块)。这种方法容易实现和理解,但由于固定的替换表,安全性较低,容易受到频率分析等攻击。
  2. 多表替换密码

    • 定义:多表替换密码是一种使用多个替换表(也称为秘钥表)的加密技术。加密时,根据密钥中的某种规则(如轮换、随机选择等),选择合适的替换表进行加密。
    • 特点:多表替换密码提高了安全性,因为不同的明文字符(或者字符块)可以映射到不同的密文字符(或者字符块),且同一个明文在不同的加密情况下可能对应不同的密文。这种方法可以抵抗频率分析等简单攻击,但仍然可能受到更复杂的密码分析攻击。

单表替换密码 

凯撒密码

这是一种替换加密技术,其中每个字母在字母表中移动固定数目的位置。例如,如果我们设定移动3个位置,那么'A'会变成'D','B'会变成'E',依此类推。一个例子是,加密“HELLO”时,每个字母都移动3个位置,结果是“KHOOR”。

简单替换密码

在这种加密方法中,字母表中的每个字母都被系统地替换为另一个字母。例如,我们可以决定将'A'替换为'D','B'替换为'E',等等,但替换是随机的,不像凯撒密码那样规律。例如,用一种特定替换规则加密“SIMPLE”可能得到“JKBCDE”。

仿射密码

这是一种使用数学函数的替换密码,具体公式为 (E(x) = (ax + b) \mod m),其中(m)是字母表中的字符数量,(a)和(b)是密钥,且(a)和(m)必须互质。例如,假设(a=5),(b=8),加密字母‘A’(设‘A’为0)的结果是(E(0) = (5*0 + 8) \mod 26 = 8),所以‘A’被加密为‘I’。

加密公式

给定明文 ( x )(其中 ( x ) 是字母在字母表中的位置,从 0 开始计算),加密函数 ( E ) 可表示为: [ E(x) = (ax + b) \mod m ] 这里的 ( m ) 是字母表中字母的总数(通常是 26),( a ) 和 ( b ) 是密钥,其中 ( a ) 必须和 ( m ) 互质(即 ( a ) 和 ( m ) 的最大公约数为 1,保证 ( a ) 在模 ( m ) 下有逆元)。

解密公式

解密是加密的逆过程。设密文 ( y ) 是通过上述加密公式得到的,解密函数 ( D ) 可表示为: [ D(y) = a^{-1}(y - b) \mod m ] 这里的 ( a^{-1} ) 是 ( a ) 在模 ( m ) 下的乘法逆元,意味着 ( a \cdot a^{-1} \equiv 1 \mod m )。计算 ( a^{-1} ) 通常可以通过扩展欧几里得算法来实现。

示例

假设我们使用 ( m = 26 ),( a = 5 ),( b = 8 ),并且要加密字母 ‘A’(记为 ( x = 0 )):

  1. 加密过程: [ E(0) = (5 \times 0 + 8) \mod 26 = 8 ] 所以 ‘A’ 加密后变成位置为 8 的字母,即 ‘I’。

  2. 解密过程: 首先,我们需要找到 5 的逆元。假设找到 ( 5^{-1} = 21 ),那么: [ D(8) = 21 \times (8 - 8) \mod 26 = 0 ] 因此,位置 8 的字母(即 ‘I’)解密后变回 ‘A’。

仿射密码的安全性在于选择合适的 ( a ) 和 ( b ),以及保持这些值的秘密。但在现代密码学中,由于其线性特性和限定的密钥空间,它被认为是较弱的加密方法。

普莱费尔密码

普莱费尔密码(Playfair Cipher)是一种使用5x5矩阵对成对字母进行加密的经典替换密码系统。它在19世纪由查尔斯·惠斯通发明,并以其朋友查尔斯·普莱费尔的名字命名。这种密码比单一替换密码更为复杂,因为它加密的是字母对,而不是单个字母。以下是普莱费尔密码的基本加密规则:

  1. 准备密钥方阵:首先选择一个密钥词(通常去除重复字母),将其字母按顺序填入5x5的方阵中,剩余的格子按字母表顺序填充,未使用的字母继续填充,通常将字母“I”和“J”视为相同,以适应25个格子。

  2. 准备明文:将明文分为字母对,如果有一个字母单独存在,则添加一个额外的字母(如'X'或'Q')使其成对。如果一对字母相同,则插入一个填充字母如'X',例如“HELLO”变为“HE LX LO”。

  3. 加密规则:对每对字母应用以下规则:

    • 如果字母对在同一行:对每个字母,用其右侧的字母替换(如果是行尾,则换到行首)。
    • 如果字母对在同一列:对每个字母,用其下方的字母替换(如果是列底,则换到列顶)。
    • 如果字母对在不同行不同列:字母对在方阵中形成一个矩形,用同行对角的字母进行替换,即保持行不变,交换列。

培根密码

这种密码将每个字母编码为一系列的'A'和'B'。例如,'A'可以编码为“AAAAA”,'B'为“AAAAB”,等等。密文通常看起来是无意义的,但通过特定的编码规则可以解码出原文。

猪圈密码

这种加密方法使用一系列的符号来代表字母,通常是在两个或三个不同的圆形图案中画分割线来表示。每个符号代表一个特定的字母,根据符号的形状和位置确定。

摩斯密码

这是一种早期的电报代码,使用短信号(点)和长信号(划)以及间隔来表示字母、数字和标点符号。例如,“SOS”在摩斯密码中表示为“··· --- ···”。

多表替换密码

维吉尼亚密码

维吉尼亚密码可以通过一个方便的密码表来实现加密和解密过程,这种表也被称为“维吉尼亚方阵”。这个方阵包含了26行26列的字母,每一行字母都向左或向右移动一位,从而形成了一个完整的字母表的移位序列。

维吉尼亚方阵的构建

密码表的每一行都是从前一行的最后一个字母开始,继续按照字母顺序排列。例如:

  • 第一行从 A 开始,依次排列到 Z。
  • 第二行从 B 开始,依次排列到 A。
  • 第三行从 C 开始,依次排列到 B。 依此类推,直到整个表格完成。

加密过程

使用维吉尼亚密码表进行加密时:

  1. 确定密钥:选择一个密钥。
  2. 重复密钥:将密钥重复至与明文长度相同。
  3. 使用密码表:找到明文中每个字符在表的顶部的列,密钥中对应字符在表的左侧的行。在行列交叉点的字母即为加密后的字符。

解密过程

解密与加密相反:

  1. 找到密文中的每个字符在表中的列。
  2. 找到密钥对应字符在表的左侧的行。
  3. 在该行中找到密文字符,然后跟随这一列向上直到表格的顶端,顶端的字母是明文中对应的字符。

这个方法使得加密和解密过程非常直观,并且易于通过手工或使用简单程序来实现。通过使用密码表,维吉尼亚密码的实现可以更为清晰且容易操作。

 

移位密码

滚筒密码

滚筒密码是古希腊时期的斯巴达人使用的一种加密技术。这种方法涉及到一块长条的皮革或羊皮纸和一个木制的滚筒。加密过程如下:

  1. 绑定:将长条的纸或皮革绕在滚筒上。
  2. 书写:在纸条上沿着滚筒的长度方向书写信息。
  3. 解开:当纸条从滚筒上解开后,原来的信息会被打乱,因为原文是沿着滚筒的轴向书写的。
  4. 传递和解读:纸条被送到接收者那里,接收者需要一个直径相同的滚筒才能重新绕上去,从而阅读信息。

滚筒密码的安全性依赖于滚筒的直径和用于绑定的材料的宽度。只有当拥有正确直径的滚筒时,接收者才能正确地解读信息。

栅栏密码

栅栏密码是一种简单的置换密码,用于通过重新排列字母的顺序来加密文本。它的基本操作如下:

  1. 写法:将文本字符顺序写入分成几行的“栅栏”结构中。例如,如果我们选择两行栅栏,第一个字母放在第一行,第二个字母放在第二行,第三个字母再回到第一行,依此类推。
  2. 读取:加密时按行读取字符。首先读取第一行的所有字符,然后读取第二行的所有字符,如果有更多行也按此方法继续。
  3. 解密:接收者按相同的行数重建栅栏结构,然后按写入时的Z字形或N字形路径重新填写并读取字符。

栅栏密码的安全性取决于栅栏的行数(也就是深度)。行数越多,密码通常越难破解,但同时解密也需要更精确的行数信息。

相关文章:

【密码学】面向小白的古典密码基础入门笔记

目录 Mindmap 前言 破译方法 三类古典密码 替换密码 分类 单表替换密码 凯撒密码 简单替换密码 仿射密码 普莱费尔密码 培根密码 猪圈密码 摩斯密码 多表替换密码 维吉尼亚密码 移位密码 滚筒密码 栅栏密码 Mindmap 前言 1.所有古典密码都已不安全 2.密…...

【Qt】之【Bug】大量出现“未定义的标识符”问题

背景 构建时出现大量错误 原因 中文注释问题 解决 方法1. 报错代码附近的中文注释全部删掉。。。 方法2. 报错的文件添加 // Chinese word comment solution #pragma execution_character_set("utf-8")...

C++中的常成员函数

2024年6月29日,周日下午 例如,以下是一个常成员函数的示例: class MyClass { public:int getValue() const {return value;} private:int value; };常成员函数是C中一种特殊的成员函数,它具有以下特点: 不可修改对象…...

小试牛刀-区块链代币锁仓(Web页面)

Welcome to Code Blocks blog 本篇文章主要介绍了 [区跨链代币锁仓(Web页面)] ❤博主广交技术好友,喜欢我的文章的可以关注一下❤ 目录 1.编写目的 2.开发环境 3.实现功能 4.代码实现 4.1 必要文件 4.1.1 ABI Json文件(LockerContractABI.json) 4.2 代码详解…...

Geoserver源码解读五 Catalog

系列文章目录 Geoserver源码解读一 环境搭建 Geoserver源码解读二 主入口 Geoserver源码解读三 GeoServerBasePage Geoserver源码解读四 REST服务 Geoserver源码解读五 Catalog 目录 系列文章目录 前言 一、定义 二、前置知识点 1.Spring 的 Bean 生命周期 ApplicationCon…...

安全与加密常识(5)自签名证书

文章目录 什么是自签名证书?自签名证书有什么优势?自签名证书有什么缺陷?企业可以使用自签名证书吗?如何创建自签名证书?前面我们介绍了什么是证书签名请求:证书签名请求(Certificate Signing Request,CSR)是一种数据文件,通常由申请者生成,并用于向证书颁发机构(C…...

Java官网网址及其重要资源

Java是一种广泛应用于开发各种应用程序的编程语言,它具有跨平台、面向对象和高性能等优势。若你想学习Java或深入了解它的最新动态,Java官网是你的首要目的地。在本文中,我们将向你介绍Java官网的网址以及一些重要资源。 Java官网网址&#x…...

Linux--start-stop-daemon

参考:start-stop-daemon(8) - Linux manual page 1、名称 start-stop-daemon:启动和停止系统守护程序。 2、简介 start-stop-daemon [option...] command 3、描述 start-stop-daemon用于控制系统级进程的创建和终止。使用其中一个匹配选项&#xff0…...

优化Java中XML和JSON序列化

优化Java中XML和JSON序列化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java应用程序中,对于XML和JSON的序列化操作是非常常见的需求。本文将…...

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。 老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。 其中&#xff0c…...

Rust 基础教程

Rust 编程语言教程 Rust是一门注重安全、并发和性能的系统编程语言。本文将从Rust的基本语法、常用功能到高级特性,详细介绍Rust的使用方法。 目录 简介环境配置基础语法 变量和常量数据类型函数控制流 所有权和借用 所有权借用 结构体和枚举 结构体枚举 模块和包…...

Study--Oracle-06-Oracler网络管理

一、ORACLE的监听管理 1、ORACLE网络监听配置文件 cd /u01/app/oracle/product/12.2.0/db_1/network/admin 2、在Oracle数据库中,监听器(Listener)是一个独立的进程,它监听数据库服务器上的特定端口上的网络连接请求&#xff0c…...

uniapp零基础入门Vue3组合式API语法版本开发咸虾米壁纸项目实战

嗨,大家好,我是爱搞知识的咸虾米。 今天给大家带来的是零基础入门uniapp,课程采用的是最新的Vue3组合式API版本,22年发布的uniappVue2版本获得了官方推荐,有很多同学等着我这个vue3版本的那,如果没有学过vu…...

数字信号处理教程(2)——时域离散信号与时域离散系统

上回书说到数字信号处理中基本的一个通用模型框架图。今天咱们继续,可以说今天要讲的东西必须是学习数字信号处理必备的观念——模拟与数字,连续和离散。 时域离散序列 由于数字信号基本都来自模拟信号,所以先来谈谈模拟信号。模拟信号就是…...

imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

1.应用层如何操控PWM: 与 LED 设备一样, PWM 同样也是通过 sysfs 方式进行操控,进入到/sys/class/pwm 目录下 这里列举出了 8 个以 pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了…...

等保2.0 实施方案

一、引言 随着信息技术的广泛应用,网络安全问题日益突出,为确保信息系统安全、稳定、可靠运行,保障国家安全、公共利益和个人信息安全,根据《网络安全法》及《信息安全技术 网络安全等级保护基本要求》(等保2.0&#x…...

7/3 第六周 数据库的高级查询

...

ubuntu20.04安装kazam桌面屏幕录制工具

在Ubuntu 20.04上安装Kazam可以通过以下步骤进行: 1.打开终端:可以通过按下Ctrl Alt T组合键来打开终端。 2.添加PPA源:Kazam不再在官方Ubuntu仓库中,但可以通过PPA源进行安装。在终端中输入以下命令来添加PPA: su…...

Python应对反爬虫的策略

Python应对反爬虫的策略 概述User-Agent 伪造应对302重定向IP限制与代理使用Cookies和Session管理动态内容加载数据加密与混淆请求频率限制爬虫检测算法法律与道德考量结语 概述 在数字化时代,网络数据采集已成为获取信息的重要手段之一。然而,随着技术…...

240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类

KNN(K近邻)算法实现红酒聚类 K近邻算法,是有监督学习中的分类算法,可以用于分类和回归,本篇主要讲解其在分类上的用途。 文章目录 KNN(K近邻)算法实现红酒聚类算法原理数据下载数据读取与处理模型构建--计算距离模型预测 算法原理 KNN算法虽…...

keil5模拟 仿真 报错没有读写权限

debug*** error 65: access violation at 0x4002100C : no write permission 修改为: Dialog DLL默认是DCM3.DLL Parameter默认是-pCM3 应改为 Dialog DLL默认是DARMSTM.DLL Parameter默认是-pSTM32F103VE...

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号) 文章目录 力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)一、78. 子集二、105. 从前序与中序遍历序列构造二叉树三、43. 字符串相乘四、155. …...

高薪程序员必修课-Java中 Synchronized锁的升级过程

目录 前言 锁的升级过程 1. 偏向锁(Biased Locking) 原理: 示例: 2. 轻量级锁(Lightweight Locking) 原理: 示例: 3. 重量级锁(Heavyweight Locking)…...

Vue项目打包上线

Nginx 是一个高性能的开源HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它在设计上旨在处理高并发的请求,是一个轻量级、高效能的Web服务器和反向代理服务器,广泛用于提供静态资源、负载均衡、反向代理等功能。 1、下载nginx 2、…...

算法题中常用的C++功能

文章目录 集合优先队列双端队列排序时自定义比较函数最大数值字符串追加:删除:子串: 元组vector查找创建和初始化赋值: 字典map引入头文件定义和初始化插入元素访问元素更新元素删除元素检查元素存在遍历元素int和string转换 集合…...

左扰动和右扰动

在SLAM(Simultaneous Localization and Mapping)中,使用左扰动还是右扰动主要取决于你如何定义坐标系和你希望扰动影响的姿态表示。这通常与你的坐标系选择和你正在解决的具体问题有关。 左扰动通常用于以下情况: 当你使用局部坐…...

【计算机网络】期末复习(2)

目录 第一章:概述 第二章:物理层 第三章:数据链路层 第四章:网络层 第五章:传输层 第一章:概述 三大类网络 (1)电信网络 (2)有线电视网络 &#xff0…...

ojdbc8-full Oracle JDBC 驱动程序的一个完整发行版各文件的功能

文章目录 1. ojdbc8.jar2. ons.jar -3. oraclepki.jar -4. orai18n.jar -5. osdt_cert.jar -6. osdt_core.jar -7. ojdbc.policy -8. README.txt -9. simplefan.jar -10. ucp.jar -11. xdb.jar - ojdbc8-full 是 Oracle JDBC 驱动程序的一个完整发行版,包含了连接和…...

在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。

在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。这通常是因为sqlite3在默认情况下会对空表进行“延迟创建”,即在实际需要写入数据之前,表不会被真正创建…...

【目标检测】DINO

一、引言 论文: DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 作者: IDEA 代码: DINO 注意: 该算法是在Deformable DETR、DAB-DETR、DN-DETR基础上的改进,在学习该算法前&#…...

一文包学会ElasticSearch的大部分应用场合

ElasticSearch 官网下载地址:Download Elasticsearch | Elastic 历史版本下载地址1:Index of elasticsearch-local/7.6.1 历史版本下载地址2:Past Releases of Elastic Stack Software | Elastic ElasticSearch的安装(windows) 安装前所…...

创建kobject

1、kobject介绍 kobject的全称是kernel object,即内核对象。每一个kobject都会对应系统/sys/下的一个目录。 2、相关结构体和api介绍 2.1 struct kobject // include/linux/kobject.h 2.2 kobject_create_and_add kobject_create_and_addkobject_createkobj…...

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构,是一种非线性结构。 非线性结构:在二叉树中&#x…...

Linux源码阅读笔记12-RCU案例分析

在之前的文章中我们已经了解了RCU机制的原理和Linux的内核源码,这里我们要根据RCU机制写一个demo来展示他应该如何使用。 RCU机制的原理 RCU(全称为Read-Copy-Update),它记录所有指向共享数据的指针的使用者,当要修改构想数据时&…...

【C++】双线性差值算法实现RGB图像缩放

双线性差值算法 双线性插值(Bilinear Interpolation)并不是“双线性差值”,它是一种在二维平面上估计未知数据点的方法,通常用于图像处理中的图像缩放。 双线性插值的基本思想是:对于一个未知的数据点,我…...

计算机网络知识普及之四元组

在涉及到TCP/UDP等IP类通信协议时,存在四元组概念 这里只是普及使用 先来一些前置知识,什么是IP协议? IP协议全称为互联网协议,处于网络层中,主要作用是标识网络中的设备,每个设备的IP地址是唯一的。 在网…...

深度探讨网络安全:挑战、防御策略与实战案例

目录 ​编辑 一、引言 二、网络安全的主要挑战 恶意软件与病毒 数据泄露 分布式拒绝服务攻击(DDoS) 内部威胁 三、防御策略与实战案例 恶意软件防护 网络钓鱼防护 数据泄露防护 总结 一、引言 随着信息技术的迅猛发展,网络安全问…...

“穿越时空的机械奇观:记里鼓车的历史与科技探秘“

在人类文明的发展历程中,科技的创新与进步不仅仅推动了社会的进步,也为我们留下了丰富的文化遗产。记里鼓车,作为一种古老的里程计量工具,其历史地位和技术成就在科技史上具有重要的意义。本文将详细介绍记里鼓车的起源、结构原理…...

DevOps CMDB平台整合Jira工单

背景 在DevOps CMDB平台建设的过程中,我们可以很容易的将业务应用所涉及的云资源(WAF、K8S、虚拟机等)、CICD工具链(Jenkins、ArgoCD)、监控、日志等一次性的维护到CMDB平台,但随着时间的推移,…...

Vue-路由

路由简介 SPA单页面应用。导航区和展示区 单页Web应用整个应用只有一个完整的页面点击页面中的导航连接不会刷新页面,只会做页面的局部更新数据需要通过ajax请求获取 路由:路由就是一组映射关系,服务器接收到请求时,根据请求路…...

【Rust入门教程】安装Rust

文章目录 前言Rust简介Rust的安装更新与卸载rust更新卸载 总结 前言 在当今的编程世界中,Rust语言以其独特的安全性和高效性吸引了大量开发者的关注。Rust是一种系统编程语言,专注于速度、内存安全和并行性。它具有现代化的特性,同时提供了低…...

Character.ai因内容审查流失大量用户、马斯克:Grok-3用了10万块英伟达H100芯片

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 1、爆火AI惨遭阉割,1600万美国年轻人失恋?Character.ai被爆资金断裂 美国流行的社交软件Character.ai近期对模型进行大幅度内容审查,导致用户感到失望并开始流失。…...

Spring源码九:BeanFactoryPostProcessor

上一篇Spring源码八:容器扩展一,我们看到ApplicationContext容器通过refresh方法中的prepareBeanFactory方法对BeanFactory扩展的一些功能点,包括对SPEL语句的支持、添加属性编辑器的注册器扩展解决Bean属性只能定义基础变量的问题、以及一些…...

大模型笔记1: Longformer环境配置

论文: https://arxiv.org/abs/2004.05150 目录 库安装 LongformerForQuestionAnswering 库安装 首先保证电脑上配置了git. git环境配置: https://blog.csdn.net/Andone_hsx/article/details/87937329 3.1、找到git安装路径中bin的位置,如:D:\Prog…...

类和对象(提高)

类和对象(提高) 1、定义一个类 关键字class 6 class Data1 7 { 8 //类中 默认为私有 9 private: 10 int a;//不要给类中成员 初始化 11 protected://保护 12 int b; 13 public://公共 14 int c; 15 //在类的内部 不存在权限之分 16 void showData(void)…...

免费最好用的证件照制作软件,一键换底+老照片修复+图片动漫化,吊打付费!

这款软件真的是阿星用过的,最好用的证件照制作软件,没有之一! 我是阿星,今天要给大家安利一款超实用的证件照工具,一键换底,自动排版,免费无广告,让你在家就能轻松搞定证件照&#…...

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后,第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …...

Linux 生产消费者模型

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 前言 1. 生产消费者模型 1.1 什么是生产消…...

深入浅出:MongoDB中的背景创建索引

深入浅出:MongoDB中的背景创建索引 想象一下,你正忙于将成千上万的数据塞入你的MongoDB数据库中,你的用户期待着实时的响应速度。此时,你突然想到:“嘿,我应该给这些查询加个索引!” 没错&…...

Spring事务十种失效场景

首先我们要明白什么是事务?它的作用是什么?它在什么场景下在Spring框架下会失效? 事务:本质上是由数据库和程序之间交互的过程中的衍生物,它是一种控制数据的行为规则。有几个特性 1、原子性:执行单元内,要…...