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

ZK-ALU-在有限域上实现左移

先看在实数域上实现左移, 再看在有限域上的实现

左移-整数

计算机中的左移计算(<< 操作)通常由处理器的硬件电路直接支持,因此效率非常高。在编程语言中,左移操作可以通过位移运算符(例如 C/C++ 中的 <<)来完成,其底层实现如下:

1. 左移的基本原理

左移操作是将二进制数的每一位向左移动指定的位数,右边用 0 填充。

  • 如果一个数是 xxx,左移 nnn 位后,结果为 x×2nx \times 2^nx×2n。
  • 举例:
    5 ( 10 ) = 10 1 ( 2 ) 5_{(10)} = 101_{(2)} 5(10)=101(2) 左移 2 位:
    10 1 ( 2 ) < < 2 = 1010 0 ( 2 ) = 2 0 ( 10 ) 101_{(2)} << 2 = 10100_{(2)} = 20_{(10)} 101(2)<<2=10100(2)=20(10)

2. 硬件实现

处理器的算术逻辑单元(ALU)通常支持位移操作,通过移位寄存器(Shift Register)完成。其工作原理如下:

  • 输入一个二进制数。
  • 按位移动数据流,通过硬件电路将高位移出(可能被丢弃)并在低位补 0

现代处理器中,移位操作通常是一个单周期的操作,直接在 ALU 中完成。

3. 软件层的实现

在编程语言中,左移通常是直接调用处理器指令完成的。例如:

  • C语言实现

    int x = 5;
    int y = x << 2; // 等效于 5 * 2^2 = 20
    
  • 底层会使用类似以下汇编指令(取决于具体的 CPU 架构):

    SHL eax, 2  ; 将寄存器 eax 的值左移 2 位
    

4. 左移的注意事项

  • 溢出问题:

    左移可能导致高位的有效位丢失,从而发生溢出。需要确保目标寄存器或变量有足够的位宽。

    • 例如,对于 8 位整数: 20 0 ( 10 ) = 1100100 0 ( 2 ) 200_{(10)} = 11001000_{(2)} 200(10)=11001000(2) 左移 2 位后会变成 1001000 0 ( 2 ) = 14 4 ( 10 ) 10010000_{(2)} = 144_{(10)} 10010000(2)=144(10)
  • 符号位的影响
    在带符号数中(例如 int),左移不改变符号位的处理规则,但右移可能需要区分算术移位和逻辑移位。

5. 与逻辑运算结合

左移操作可以与按位与、按位或等操作结合,实现特定的算法逻辑。例如:

  • 清除某些位:

    int x = 0b101011;
    int mask = ~(1 << 3);  // 生成掩码
    int result = x & mask; // 清除第 3 位
    

左移-有限域(大整数)

在有限域中,左移计算的实现需要特别考虑有限域的特性,尤其是模运算和多项式表示法的影响。以下是有限域中左移计算的具体解释和实现细节:

1. 有限域的表示方式

  • 有限域通常记作 G F ( 2 m ) GF(2^m) GF(2m),其中元素可以用二进制多项式表示。例如, x 3 + x + 1 x^3 + x + 1 x3+x+1 可以表示为二进制数 101 1 2 1011_2 10112
  • 左移在有限域中的表现类似于将多项式的所有项的幂次增加,但需要结合模多项式 P ( x ) P(x) P(x) 限制结果。

2. 有限域左移的意义

有限域的左移操作本质上是多项式乘以 xx。例如:

A ( x ) = a m − 1 x m − 1 + ⋯ + a 1 x + a 0 A(x) = a_{m-1}x^{m-1} + \cdots + a_1x + a_0 A(x)=am1xm1++a1x+a0

左移后变为:

A ( x ) ⋅ x = a m − 1 x m + ⋯ + a 1 x 2 + a 0 x A(x) \cdot x = a_{m-1}x^m + \cdots + a_1x^2 + a_0x A(x)x=am1xm++a1x2+a0x

如果幂次超过 m − 1 m-1 m1,需要模 P ( x ) P(x) P(x) 进行化简。

3. 有限域左移的实现

实现中需要考虑溢出项的处理,具体步骤如下:

步骤 1:左移多项式
  1. 将当前多项式的每一位向左移动 1 位。
  2. 高位溢出时,需要与模多项式 P ( x ) P(x) P(x) 进行异或运算(相当于取模)。
步骤 2:检查溢出
  1. 判断最高位(对应 x m x^m xm 的系数)是否为 1。
  2. 如果为 1,减去(或异或)模多项式 P ( x ) P(x) P(x)

4. 具体算法

用伪代码表示:

def gf2m_left_shift(poly, m, modulus):"""在有限域 GF(2^m) 中实现左移操作。:param poly: 待左移的多项式,用整数表示(如 0b1011)。:param m: 有限域的位数。:param modulus: 模多项式,用整数表示(如 0b10011 表示 x^4 + x + 1)。:return: 左移后的结果。"""# 左移操作poly <<= 1# 检查是否需要模运算if poly & (1 << m):  # 如果超过了 m 位poly ^= modulus  # 异或模多项式相当于取模# 返回结果,确保结果位数不超过 m 位return poly & ((1 << m) - 1)

5. 例子

G F ( 2 4 ) GF(2^4) GF(24) 为例,模多项式 P ( x ) = x 4 + x + 1 P(x) = x^4 + x + 1 P(x)=x4+x+1 (即 0 b 10011 0b10011 0b10011):

  • A ( x ) = x 3 + x = 101 0 2 A(x) = x^3 + x = 1010_2 A(x)=x3+x=10102
  • 左移 1 位: A ( x ) ⋅ x = x 4 + x 2 A(x) \cdot x = x^4 + x^2 A(x)x=x4+x2 (即 1010 0 2 10100_2 101002
  • 取模: 1010 0 2 ⊕ 1001 1 2 = 0011 1 2 10100_2 \oplus 10011_2 = 00111_2 101002100112=001112
  • 结果: x 2 + x + 1 x^2 + x + 1 x2+x+1(即 0 b 0111 0b0111 0b0111)。

6. 硬件实现

在硬件中,有限域左移操作可通过移位寄存器和异或逻辑门实现:

  1. 使用移位寄存器完成左移操作。
  2. 当最高位溢出时,通过异或门与模多项式进行模运算。

7. 应用场景

  • 加密算法:如 AES 中的 GF(2^8) 操作。
  • 误差校正:如 CRC 校验。
  • 多项式运算:如 Reed-Solomon 编码。

往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

相关文章:

ZK-ALU-在有限域上实现左移

先看在实数域上实现左移, 再看在有限域上的实现 左移-整数 计算机中的左移计算&#xff08;<< 操作&#xff09;通常由处理器的硬件电路直接支持&#xff0c;因此效率非常高。在编程语言中&#xff0c;左移操作可以通过位移运算符&#xff08;例如 C/C 中的 <<&a…...

建表注意事项(2):表约束,主键自增,序列[oracle]

没有明确写明数据库时,默认基于oracle 约束的分类 用于确保数据的完整性和一致性。约束可以分为 表级约束 和 列级约束&#xff0c;区别在于定义的位置和作用范围 复合主键约束: 主键约束中有2个或以上的字段 复合主键的列顺序会影响索引的使用&#xff0c;需谨慎设计 添加…...

PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络

神经常微分方程&#xff08;Neural ODEs&#xff09;是深度学习领域的创新性模型架构&#xff0c;它将神经网络的离散变换扩展为连续时间动力系统。与传统神经网络将层表示为离散变换不同&#xff0c;Neural ODEs将变换过程视为深度&#xff08;或时间&#xff09;的连续函数。…...

【PyQt】keyPressEvent键盘按压事件无响应

问题描述 通过load ui 文件加载程序时&#xff0c;keyPressEvent键盘按压事件无响应 原因 主要是由于事件处理的方式和窗口的显示方式不正确所导致的。 解决代码 self&#xff1a;这里的self作为loadUi函数的第二个参数&#xff0c;意味着加载的界面将被设置为当前类实例&…...

redis的分片集群模式

redis的分片集群模式 1 主从哨兵集群的问题和分片集群特点 主从哨兵集群可应对高并发写和高可用性&#xff0c;但是还有2个问题没有解决&#xff1a; &#xff08;1&#xff09;海量数据存储 &#xff08;2&#xff09;高并发写的问题 使用分片集群可解决&#xff0c;分片集群…...

PHP Composer:高效依赖管理工具详解

PHP Composer:高效依赖管理工具详解 引言 在PHP开发领域,依赖管理是项目构建过程中的重要环节。Composer的出现,极大地简化了PHP项目的依赖管理,使得开发者可以更加高效地构建和维护PHP应用程序。本文将深入探讨PHP Composer的使用方法、功能特点以及它在项目开发中的应用…...

【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能

近期在做跟毕业设计相关的数据后台管理系统&#xff0c;其中的列表项展示有图片展示&#xff0c;添加/编辑功能有文件上传。 “文件上传/删除”也是我们平时开发会遇到的一个功能&#xff0c;这里分享个人的实现过程&#xff0c;与大家交流谈论~ 一、准备工作 本次案例使用的…...

【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】

Jetson配置YOLOv11环境&#xff08;6&#xff09;PyTorch&Torchvision安装 文章目录 1. 安装PyTorch1.1安装依赖项1.2 下载torch wheel 安装包1.3 安装 2. 安装torchvisiion2.1 安装依赖2.2 编译安装torchvision2.2.1 Torchvisiion版本选择2.2.2 下载torchvisiion到Downloa…...

relational DB与NoSQL DB有什么区别?该如何选型?

Relational Database(关系型数据库,简称RDB)与NoSQL Database(非关系型数据库)是两类常见的数据库类型。它们在设计理念、数据存储方式、性能优化、扩展性等方面有许多差异。下面我们将会详细分析它们的区别,以及如何根据应用场景进行选型。 一、数据模型的区别 关系型…...

解决对axios请求返回对象进行json化时报“TypeError Converting circular structure to JSON“错误的问题

发现直接对axios请求返回对象进行json化会报"TypeError: Converting circular structure to JSON"错误&#xff0c;而对返回对象下的data属性进行json化就没问题 如果想对循环引用的对象进行json化&#xff0c;解决方案可参考&#xff1a; TypeError: Converting c…...

优化代码性能:利用CPU缓存原理

在计算机的世界里&#xff0c;有一场如同龟兔赛跑般的速度较量&#xff0c;主角便是 CPU 和内存 。龟兔赛跑的故事大家都耳熟能详&#xff0c;兔子速度飞快&#xff0c;乌龟则慢吞吞的。在计算机中&#xff0c;CPU 就如同那敏捷的兔子&#xff0c;拥有超高的运算速度&#xff0…...

Rust场景示例:为什么要使用切片类型

通过对比 不用切片 和 使用切片 的场景&#xff0c;说明切片类型在 Rust 中的必要性&#xff1a; 场景&#xff1a;提取字符串中的单词 假设我们需要编写一个函数&#xff0c;从一个句子中提取第一个单词。我们将分别展示 不用切片 和 使用切片 的实现&#xff0c;并对比二者的…...

ubuntu直接运行arm环境qemu-arm-static

qemu-arm-static 嵌入式开发有时会在ARM设备上使用ubuntu文件系统。开发者常常会面临这样一个问题&#xff0c;想预先交叉编译并安装一些应用程序&#xff0c;但是交叉编译的环境配置以及依赖包的安装十分繁琐&#xff0c;并且容易出错。想直接在目标板上进行编译和安装&#x…...

HTTP 黑科技

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

【Vite + Vue + Ts 项目三个 tsconfig 文件】

Vite Vue Ts 项目三个 tsconfig 文件 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f;首先我们先了解什么是 tsconfig.json ? 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f; 在使用 Vite 创建 vue-ts 模板的项目时&#xff0c;会发现除了 ts…...

Mac怎么彻底卸载软件,简单彻底的卸载方式

一个阳光明媚的下午&#xff0c;咖啡厅里&#xff0c;珂珂正在和他的好友帅帅讨论如何优化他们的Mac电脑&#xff0c;特别是谈到Mac怎么彻底卸载软件的时候&#xff0c;帅帅就特别感同身受&#xff0c;因为他近期就遇到了这个的麻烦&#xff0c;并且找了很久才找到号的解决方案…...

15 刚体变换模块(rigid.rs)

rigid.rs是一个表示三维刚体变换&#xff08;Rigid Transformation&#xff09;的结构体定义&#xff0c;用于在计算机图形学、机器人学以及物理模拟等领域中表示物体在三维空间中的旋转和平移。在这个定义中&#xff0c;所有长度在变换后都保持不变&#xff0c;这是刚体变换的…...

springboot使用rabbitmq

使用springboot创建rabbitMQ的链接。 整个项目结构如下&#xff1a; 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…...

【Linux】一文带你入门了解线程和虚拟地址空间中页表映射的秘密(内附手绘底层逻辑图 通俗易懂)

绪论​ 每日激励&#xff1a;“努力去做自己该做的&#xff0c;但是不要期待回报&#xff0c;不是付出了就会有回报的&#xff0c;做了就不要后悔&#xff0c;不做才后悔。—Jack” 绪论​&#xff1a; 本章是LInux中非常重要的线程部分&#xff0c;通过了解线程的基本概念&am…...

高并发、高可用的消息队列(MQ)设计与实战

目录 背景与历史消息队列的核心功能高并发、高可用的业务场景消息队列的实用性企业规模与消息队列的选择Java实战案例&#xff1a;基于RabbitMQ的高并发、高可用消息队列 6.1 环境准备6.2 RabbitMQ的安装与配置6.3 Java客户端集成6.4 生产者与消费者实现6.5 高并发处理6.6 高可…...

nginx 新手指南

文章来源&#xff1a;https://nginx.cadn.net.cn/beginners_guide.html 本指南对 nginx 进行了基本的介绍&#xff0c;并描述了一些 可以用它完成的简单任务。 假设 nginx 已经安装在阅读器的机器上。 如果不是&#xff0c;请参阅 安装 nginx 页面。 本指南介绍如何启动和停止…...

7-4 西安距离

小明来到了古都西安&#xff0c;想去参观大唐西市&#xff01; 西安的道路可以看做是与x轴或y轴垂直的直线&#xff0c;小明位于(a,b)&#xff0c;而目的地位于(c,d)&#xff0c;问最少几步可以到达。 输入格式: 一行中四个整数&#xff0c;a,b,c,d&#xff0c;表示坐标为(a…...

VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)

使用VSCode编辑出现Recipe terminated with fatal error: spawn xelatex ENOENT问题咋办&#xff1f; 很好解决&#xff0c;大概率的原因是因为latex没有添加到系统环境变量中&#xff0c;所有设置的编译工具没有办法找到才出现的这种情况。 解决方法&#xff1a; winR 然后输…...

使用 Elastic Cloud Hosted 优化长期数据保留:确保政府合规性和效率

作者&#xff1a;来自 Elastic Jennie Davidowitz 在数字时代&#xff0c;州和地方政府越来越多地承担着管理大量数据的任务&#xff0c;同时确保遵守严格的监管要求。这些法规可能因司法管辖区而异&#xff0c;通常要求将数据保留较长时间 —— 有时从一年到七年不等。遵守刑事…...

51单片机 02 独立按键

一、独立按键控制LED亮灭 轻触按键&#xff1a;相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 #include <STC89C5xRC.H> void main() { // P20xFE;while(1){…...

海外问卷调查渠道查,具体运营的秘密

相信只要持之以恒并逐渐掌握技巧&#xff0c;每一位调查人在踏上征徐之时都会非常顺利的。并在日后的职业生涯中拥有捉刀厮杀的基本技能&#xff01;本文会告诉你如何做好一个优秀的海外问卷调查人。 在市场经济高速发展的今天&#xff0c;众多的企业为了自身的生存和发展而在…...

Vue.js 的介绍与组件开发初步

Vue.js 的介绍与组件开发初步 Vue.js 的介绍与组件开发初步引言第一部分&#xff1a;Vue.js 基础入门1.1 什么是 Vue.js&#xff1f;1.2 搭建 Vue.js 开发环境安装 Node.js 和 npm安装 Vue CLI创建新项目运行示例 1.3 第一个 Vue.js 示例 第二部分&#xff1a;Vue.js 组件开发基…...

Shadow DOM举例

这东西具有隔离效果&#xff0c;对于一些插件需要append一些div倒是不错的选择 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>演示例子</title> </head> <body> <style&g…...

kamailio-Core 说明书 版本:Kamailio SIP Server v6.0.x(稳定版)

Core 说明书 版本&#xff1a;Kamailio SIP Server v6.0.x&#xff08;稳定版&#xff09; 概述 本教程收集了 Kamailio 导出的函数和参数 core 添加到配置文件中。 注意&#xff1a;此页面上的参数不按字母顺序排列。 结构 kamailio.cfg 的结构可以看作是三个部分&#xff…...

PHP XML操作指南

PHP XML操作指南 引言 随着互联网的快速发展&#xff0c;数据交换和共享变得越来越重要。XML&#xff08;可扩展标记语言&#xff09;作为一种灵活的标记语言&#xff0c;被广泛应用于各种数据交换场景。PHP作为一种流行的服务器端脚本语言&#xff0c;具有强大的XML处理能力…...

一文了解DeepSeek

1. DeepSeek 的起源 创立时间&#xff1a;DeepSeek 于 2023 年由中国的梁文锋创立。 V3 模型训练成本&#xff1a;最终训练成本为 600 万美元。 开源&#xff1a;DeepSeek 提供开源版本。 流行度&#xff1a;DeepSeek R1 模型成为 Apple 应用商店中下载量最高的应用。 2. …...

三角形的最大周长(976)

976. 三角形的最大周长 - 力扣&#xff08;LeetCode&#xff09; 可以一起总结的题目&#xff1a;三数之和&#xff08;15&#xff09;-CSDN博客 官方解法&#xff1a; class Solution { public://官方解法int largestPerimeter(vector<int>& nums) {sort(nums.be…...

10:预处理

预处理 1、宏替换2、头文件包含3、条件编译4、typedef和#define的区别5、#define中的注意点5.1、使用do....while(0)5.2、#和##的含义 C语言编译器在编译程序之前&#xff0c;会先使用预处理器(预处理器)处理代码&#xff0c;代码经过预处理之后再送入编译器进行编译。预处理器…...

一文讲解HashMap线程安全相关问题(上)

HashMap不是线程安全的&#xff0c;主要有以下几个问题&#xff1a; ①、多线程下扩容会死循环。JDK1.7 中的 HashMap 使用的是头插法插入元素&#xff0c;在多线程的环境下&#xff0c;扩容的时候就有可能导致出现环形链表&#xff0c;造成死循环。 JDK 8 时已经修复了这个问…...

C++泛型编程指南04-(对默认调用参数的类型推断)

文章目录 问题描述解决方案示例代码 关键点解释进一步改进&#xff1a;结合概念约束 你提到的情况确实是一个常见的问题&#xff1a;在C中&#xff0c;类型推断不适用于默认调用参数。这意味着如果你希望函数模板能够通过默认参数来实例化&#xff0c;你需要为模板参数提供一个…...

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

浅谈知识蒸馏技术

最近爆火的DeepSeek 技术&#xff0c;将知识蒸馏技术运用推到我们面前。今天就简单介绍一下知识蒸馏技术并附上python示例代码。 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种模型压缩技术&#xff0c;它的核心思想是将一个大型的、复杂的教师模型&#xff0…...

【人工智能】使用Python和Hugging Face构建情感分析应用:从模型训练到Web部署

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的重要任务,它通过分析文本来判断情绪或观点的倾向性。近年来,预训练语言模型如BERT、GPT等在情感分析任…...

【R语言】函数

一、函数格式 如下所示&#xff1a; hello&#xff1a;函数名&#xff1b;function&#xff1a;定义的R对象是函数而不是其它变量&#xff1b;()&#xff1a;函数的输入参数&#xff0c;可以为空&#xff0c;也可以包含参数&#xff1b;{}&#xff1a;函数体&#xff0c;如果…...

python leetcode 笔记

只为记录一些python相关的特殊写法 无穷大&#xff0c;无穷小&#xff0c;NAN float(inf), float(-inf), float(nan) 判断字符的类型 isdigit(x) isspace(x) 字符串拼接 /.join([a,b,c]) # a/b/c 格式转换&#xff0c;字符转整形 ord(a) # 97 chr(97) # a 进制转…...

基于SpringBoot的青年公寓服务平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

深入剖析 HTML5 新特性:语义化标签和表单控件完全指南

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 02-HTML常见文本标签解析&#xff1a;从基础到进阶的全面指南 03-HTML从入门到精通&#xff1a;链接与图像标签全解析 04-HTML 列表标签全解析&#xff1a;无序与有序列表的深度应用 05-HTML表格标签全面…...

kamailio的kamctl的使用

kamctl 是 Kamailio SIP 服务器的管理工具&#xff0c;用于执行各种管理任务&#xff0c;如启动、停止、重启 Kamailio 进程&#xff0c;管理用户、ACL、路由、信任的 IP 地址等。以下是对 kamctl 命令的解释及举例说明&#xff1a; 1. 启动、停止、重启 Kamailio start: 启动…...

[创业之路-270]:《向流程设计要效率》-2-企业流程架构模式 POS架构(规划、业务运营、支撑)、OES架构(业务运营、使能、支撑)

目录 一、POS架构 二、OES架构 三、POS架构与OES架构的差异 四、各自的典型示例 POS架构典型示例 OES架构典型示例 示例分析 五、各自的典型企业 POS架构典型企业 OES架构典型企业 分析 六、各自典型的流程 POS架构的典型流程 OES架构的典型流程 企业流程架构模式…...

【leetcode100】路径总和Ⅲ

1、题目描述 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点…...

用结构加法3ax+1预测第4点的分布

有1个点在19*19的平面上在某种力的作用下运动&#xff0c;轨迹为 共移动了90步&#xff0c;按照&#xff08;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff09;&#xff0c;&#xff08;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff09;&#xff0c;…&#xff0c;&…...

CTF-web: Python YAML反序列化利用

PyYAML存在以下几个特殊标签,如果这些标签被不安全的解析,会造成解析漏洞 从 PyYaml 版本 6.0 开始&#xff0c;load 的默认加载器已切换到 SafeLoader&#xff0c;以降低远程代码执行的风险。更新后易受攻击的是 yaml.unsafe_load 和 yaml.load(input, Loaderyaml.UnsafeLoade…...

JDK-1.8.0_432安装(CentOS7)

目录 1、卸载系统自带JDK 2、下载安装包并解压 3、赋予可执行权限 4、设置环境变量 5、刷新环境变量 6、查看JDK版本 1、卸载系统自带JDK # 查询出自带的jdk rpm -qa | grep jdk rpm -qa | grep java # 将上述命令列出的包依次删除 rpm -e --nodeps xxxxxxx 2、下载…...

OpenGL学习笔记(五):Textures 纹理

文章目录 纹理坐标纹理环绕方式纹理过滤——处理纹理分辨率低的情况多级渐远纹理Mipmap——处理纹理分辨率高的情况加载与创建纹理 &#xff08; <stb_image.h> &#xff09;生成纹理应用纹理纹理单元练习1练习2练习3练习4 通过上一篇着色部分的学习&#xff0c;我们可以…...

【Pytorch和Keras】使用transformer库进行图像分类

目录 一、环境准备二、基于Pytorch的预训练模型1、准备数据集2、加载预训练模型3、 使用pytorch进行模型构建 三、基于keras的预训练模型四、模型测试五、参考 现在大多数的模型都会上传到huggface平台进行统一的管理&#xff0c;transformer库能关联到huggface中对应的模型&am…...