07 区块链安全技术
概述
区块链的安全特性
区块链解决了在不可靠网络上可靠地传输信息的难题,由于不依赖与中心节点的认证和管理,因此防止了中心节点被攻击造成的数据泄露和认证失败的风险。
区块链安全防护的三大特点
- 共识机制代替中心认证机制
- 数据篡改“一发动全身”
- 抵抗分布式拒绝服务(DDoS)
安全性技术挑战
安全性威胁是区块链迄今为止所面临的最重要的问题之一,面临着五方面的安全性挑战:
- 算法安全性
- 协议安全性
- 使用安全性
- 实现安全性
- 系统安全性
最大隐患-智能合约
智能合约技术过于新颖,同时又与资金联系过于紧密,很多黑客利用大量时间去研究智能合约的漏洞,一旦找到漏洞,他们便立刻发起攻击,让很多项目方和参与者损失惨重。
隐患产生原因
智能合约具有不可篡改性,一旦被部署上线便无法修改。
很多项目会公开智能合约源码。
智能合约的开发过程存在纰漏。
整数溢出
若数值超出了变量类型所能表示的范围,则会导致溢出。溢出主要可分为两种情况,即整数上溢(overflow)和下溢(underflow)。
简单举例:
代码实例
在solidity智能合约中,uint8表达的是一个8位的无符号整数,它的取值范围是0-255,一旦两个数运算后超过255,那么就将出现溢出。
攻击方法:
向withdraw函数传入大于accountBalance的参数_value,使得accountBalance-_value的结果为正数(发生整数溢出)。
漏洞修复:
将代码中的require语句改为require(accountBalance > _value),避免了加减运算所造成的整数溢出。
解决方法
运用safeMath合约
源自OpenZeppelin提供的合约库:专门为了解决整数溢出而做出的安全数学库,且使用简单
使用Solidity编译器
使用Solidity编译器是0.8.0以上版本:编译器会对溢出问题自动进行限制
交易依赖攻击
区块链系统的交易是需要矿工打包确认的,而整个过程有一定的延迟性,攻击者可以利用这样的特性进行攻击。
攻击流程概要
- 攻击者提交一个有奖竞猜合约,让用户找出这个问题的解,并允诺给予丰厚的奖励
- 攻击者提交完合约后就持续监听网络,观察是否有人提交了答案的解
- 有人提交答案,此时提交答案的交易还未确认,攻击者就马上发起一个交易降低奖金的数额使之无限接近0
- 攻击者提供较高的Gas,使得自己的交易先被矿工处理
- 矿工先处理提交答案的交易时,答案提交者所获得的奖励将变得极低,攻击者就能几乎免费获得正确答案
解决方案
限制Gas上限
加密交易
时间戳依赖攻击
时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
时间戳的值
从格林威治时间1970年01月01日00时00分00秒起,截止到现在的总秒数。
引入时间戳的原因
UTXO和时间戳技术结合可以解决双花攻击的记账后双花问题。
时间戳的作用
在区块链中扮演了公证人的角色,比传统的公正制度更为可信。
时间戳依赖攻击解读
背景
智能合约中使用了时间戳作为依赖条件
出现问题原因
- 矿工可以对时间戳动手脚
- 矿工可以设置未来的比较接近时间戳作为块时间戳
- 因此时间戳的限制条件对矿工形同虚设
如何解决
- 不要在伪随机数产生代码中使用时间戳
- 尽量不要让时间戳对游戏规则起到决定性作用
算法错误
一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。
算法缺陷由以下两个方面导致的:
智能合约缺乏统一规范
智能合约的开发者水平参差不齐
底层函数误用
在智能合约开发过程中,需要跨合约调用,而跨合约如果误用了底层函数,很可能送给黑客攻击的机会。
底层函数误用的危害包括但不限于以下几种
盗走TOKEN
绕过权限检查
传入虚假数据
权限验证错误
权限验证错误也是智能合约开发过程中经常容易出现的错误。在这类错误中,有些是开发者疏忽而导致权限控制形同虚设。
共识安全
51%攻击
在不同的共识算法中,51%有不同的表现方式。比如PoW共识算法,攻击方只要控制了超过51%的算力,就可以按照自己的目标进行分叉从而影响交易。
我们不妨将“51%”和“攻击”分开理解,以便更好地认识这种攻击模式。
51%理解
51%的算力不是绝对的:作恶节点算力>诚实节点算力
算力竞争只是竞争的一方面:51%指的不仅是算力,更是指网络节点的接受度
攻击理解
算力竞争本身并不是攻击
51%攻击达成,某条链将被摧毁,攻击方和防守方都会一无所获
女巫攻击
女巫攻击的提出者将这种攻击定义为一种网络安全威胁,这种威胁是由网络某些节点谎称自己拥有多个身份而造成的。
攻击者可以伪造多个身份加入网络
当攻击者伪造了一定数量的节点和身份后,便有机会威胁到区块链网络
女巫攻击存在,是因为计算网络很难保证每一个未知的节点是一个确定的物理的计算机
女巫攻击的实际表现
女巫攻击会带来很多危害,但也并非全是恶意的。
女巫攻击 | 恶意 | 降低区块链网络节点的查询效率 |
传输非授权文件、破坏网络中文件共享 | ||
正向应用 | 对抗僵尸网络 |
双花攻击
双花攻击是虚拟数字货币特有的攻击方式,在法币现金系统下是不存在双花攻击的,人们一手交钱一手交货的行为并不会出现双花。
依托于区块链能够分叉机制
网络安全
分布式拒绝服务攻击概念与分类
当黑客使用网络上两个或以上被攻击的电脑作为“僵尸”向特定的目标发动“拒绝服务’式攻击时,称为分布式拒绝服务攻击(Distributed Denial-of-Service attack,简称DDoS攻击)。
按拒绝对象可以分为两种类型
带宽消耗型攻击
资源消耗型攻击
按攻击行为可以分为两种类型
主动攻击
被动攻击
典型的攻击行为
SYN FLOOD攻击
利用TCP协议的一些特性发动的,通过发送大量伪造的TCP报文使目标服务器连接耗尽,达到拒绝服务的目的。
ACK FLOOD攻击
利用TCP三次握手的缺陷实现的攻击,迫使主机查询状态,消耗大量的CPU资源。
路由广播劫持
边界网关协议概念
边界网关协议(Border Gateway Protocol,缩写:BGP)是互联网上一个核心的去中心化自治路由协议。
路由广播劫持也指BCG劫持。
网络数据窃听
网络监听是指利用计算机的网络接口截获目的地为第三方计算机的数据报文的一种技术。当监听用于非法活动的时候,我们称之为网络窃听。
日蚀攻击
日蚀攻击的目标是使目标节点被隔离,它使一些攻击节点和目标节点建立连接,并阻止最新的区块信息传递到目标节点,将目标节点保留在一个隔离的网络中的攻击方式。
日蚀攻击的机制-分区
日蚀攻击可以将节点进行隔离,产生分区。恶意者可以针对分区产生进行破坏。
日蚀攻击行为-双花攻击
日蚀攻击产生分区之后双花攻击示意
病毒
根据《中华人民共和国计算机信息系统安全保护条例》,病毒的明确定义是“指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
病毒需要满足以下基本特征:
自行执行
自行复制
病毒危害
病毒危害性主要表现为以下两点:
- 损坏计算机
- 破坏交互性
蠕虫
蠕虫(worm)是一种可以利用操作系统存在的漏洞及其他相关漏洞传播自身的恶意软件,一种通过网络传播的恶性病毒。
蠕虫病毒的特性
- 自我传播
- 范围广
- 消耗内存或网络带宽
木马
木马是指那些表面上是有用的软件、实际目的却是危害计算机安全并导致严重破坏的计算机程序。
木马的特性
- 隐蔽性
- 非授权性
网络渗透
网络渗透是攻击者常用的一种攻击手段。
渗透攻击不同于普通网络攻击,它是一个更高级的、渐进式的综合攻击方式。
网络渗透划分
- 正向渗透
- 恶意渗透
数据安全
数据安全概述
根据《中华人民共和国数据安全法》,数据安全是指通过采取必要措施,确保数据处于有效保护和合法利用的状态,以及具备保障持续安全状态的能力。
字典攻击
字典攻击通常也会被称为彩虹表攻击,它实际是一种以空间换时间的手段。
抵御字典攻击的手段通常是在哈希运算时的输入项做文章。通过一个函数我们来说明一下。
后门攻击
后门攻击指的是在信息系统中存在非公开访问控制途径,可以绕开信息系统合法访问控制体系,隐蔽地获取计算机系统远程控制权,或者加密系统的密钥或受保护信息的明文。
后门攻击方式
- 欺诈方式
- 攻陷方式
- 开发方式
交易聚类攻击
所谓交易聚类攻击,就是对交易进行聚类分析,进而得到交易参与方的一些属性或个人隐私信息,最终达到攻击的目标。
侧信道攻击
是一种利用计算机不经意间释放出的信息信号(如电磁辐射,电脑硬件运行声)来进行破译的攻击模式。
1985年,计算机研究人员发现通过远距离检测电脑屏幕放电的电信号,在电脑屏幕上可以重建图像。
2015年,研究人员发现通过使用望远镜观察室内悬挂的灯泡的振动,可以窃听房间内的对话。
类型
根据侧信道信息的不同,主要攻击方式可分为以下四种攻击。其中功耗攻击是最强有力的手段之一。
功耗分析攻击
故障注入攻击
电磁信道攻击
时序攻击
密钥泄露
用户私钥在密码系统中具有举足轻重的地位,它的泄露意味着系统安全性的彻底丧失。
密钥泄露的发生不可避免,那么就应当采取合适的技术来尽量减轻它所带来的危害,而不仅仅是预防它的发生。
核心思想:在保持公钥不变的前提下,对用户私钥采取进化的处理方法
密钥泄露防御
前向安全(Forward-Security)
前向安全的密码机制虽然可以保证在密钥泄露发生之前的安全性,但是不能保证之后的安全性。
密钥隔离(Key-Insulation)
入侵回弹(Intrusion-Resilience)
单点故障
指的是单个节点发生的故障导致整个链路瘫痪。
节点可以是:
- 一台服务器
- 一个数据库
- 一台网络设备
- 乃至一个应用程序
区块链隐私保护
数字签名
数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。
盲签名
概念
盲签名是签名者看不到要签署的文件而完成签名,是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签名技术。
特点
- 要签名的文件对于签名者是不可见
- 签名者本人也无法追踪之前的签名
性质
一般来说,一个好的盲签名应该具有以下性质
- 不可伪造性
- 不可抵赖性
- 盲性
- 不可跟踪性
操作过程
- 接收者首先将待签数据进行盲变换,把变换后的盲数据发给签名者。
- 经签名者签名后再发给接收者
- 接收者对签名再做去盲变换,得出的便是签名者对原数据的盲签名
- 使签名者事后看到盲签名时不能与盲数据联系起来,需要依靠某种协议来实现的
群签名
概念
群签名(group signature)就是满足这样要求的签名:在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。
特征
- 目的:允许用户代表群签名消息,并在该群内保持匿名
- 群管理员可以通过使用秘密信息(密钥))来消除(恶意)用户的匿名性
- 群管理员要负责添加群成员,并能够在发生争议时揭示签名者身份
功能
群签名在生活中有诸多应用,比如在公共资源的管理,重要军事情报的签发,重要领导人的选举,尤其是在电子现金系统中。
流程
创建->加入->签名->认证->打开
环签名
环签名是一种数字签名,可由一组用户中的任何成员执行,每个用户拥有密钥。因此,用环签名签名的消息由特定人群中的某个人背书。
安全性要求
一个好的环签名必须满足以下的安全性要求
- 无条件匿名性
- 不可伪造性
- 环签名具有良好的特性
特征
环签名是一种特殊的群签名,没有可信中心,没有群的建立过程,对于验证者来说,签名人是完全正确匿名的。环签名在对信息需要长期保护的一些特殊环境中非常有用。
环签名的特征
- 正确性
- 无条件匿名性
- 不可伪造性
零知识证明
零知识证明(Zero-Knowledge Proof)是指证明者(prover)能够在不向验证者(verifier)提供任何有用的信息的情况下,使验证者(verifier)相信某个论断是正确的。
基本性质
- 正确性
- 完备性
- 零知识性
同态加密
同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样,即“可算不可见”。
分类
全同态加密
半同态加密
应用
同态加密技术在分布式计算环境下的密文数据计算方面具有比较广泛的应用领域
安全云计算与委托计算
文件存储与密文检索
安全多方计算协议设计的工具
电子选举
安全多方计算
安全多方计算(Secure Multi-Party Computation)是密码学的一个子领域,其目标是为各方创建方法以在其输入上联合计算函数,同时保留这些输入的私密性。
特点
安全多方计算理论主要研究参与者间协同计算及隐私信息保护问题,其有三大特点:
- 输入隐私性
- 计算正确性
- 去中心化
相关文章:
07 区块链安全技术
概述 区块链的安全特性 区块链解决了在不可靠网络上可靠地传输信息的难题,由于不依赖与中心节点的认证和管理,因此防止了中心节点被攻击造成的数据泄露和认证失败的风险。 区块链安全防护的三大特点 共识机制代替中心认证机制数据篡改“一发动全身”…...
第84期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…...
柔性数组与c/c++程序中内存区域的划分
1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的,其大小在编译时未确定,而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下: struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...
react页面定时器调用一组多个接口,如果接口请求返回令牌失效,清除定时器不再触发这一组请求
为了实现一个React页面使用定时器调用一组多个接口,并在任意一个接口请求返回令牌失效时清除定时器且不再触发这一组请求,可以遵循以下步骤: 1. 定义API调用函数:创建一个函数来处理一组API调用。每个API调用都应该检查响应状态以…...
使用 .NET Core 6.0 Web API 上传单个和多个文件
示例代码: https://download.csdn.net/download/hefeng_aspnet/90138968 介绍 我们将在 IFormFile 接口和 .NET 提供的其他接口的帮助下,逐步讨论单个和多个文件上传。 .NET 提供了一个 IFormFile 接口,代表 HTTP 请求中传输的文件。 此外…...
AJAX笔记入门篇
黑马程序员视频地址: 黑马程序员前端AJAX入门到实战全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2 目录 AJAX 概念和axios 使用 什么是AJAX? …...
RoHS 简介
RoHS(Restriction of Hazardous Substances Directive,限制有害物质指令)是欧盟制定的一项环保法规,旨在限制电气和电子设备中某些有害物质的使用,以减少这些产品对环境和人体健康的危害。 RoHS限制的有害物质及其限量…...
C# 中 default 使用详解
总目录 前言 在C#中,default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型,并返回该类型的默认值。随着C#版本的发展,default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一…...
无人机在城市执法监管中的应用:技术革新与监管挑战
随着科技的不断进步,无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势,正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…...
[ACTF2020 新生赛]Upload1
题目 以为是前端验证,试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…...
ASP.NET代码审计 SQL注入篇(简单记录)
sql注入,全局搜索 Request QueryString ToString() select select * aspx是设计页面,而aspx.cs是类页面,也就是说设计页面用到的类信息在这个页面里面,其实就是把设计和实现分离开来。 源码 using System; using System.Collect…...
数据结构 链表2
目录 前言: 一,反转一个链表(迭代) 二,打印一个链表(递归) 三,反转一个链表(递归) 四,双向链表 总结 前言: 我们根据 [文章 链表1] 可以知道链表相比较于数组的优缺点和计算机…...
【leetcode100】二叉树的层序遍历
1、题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 2、初始思路…...
MyBatis进阶
1. 动态SQL 1.1 <if>标签的使用(xml版本) 动态 SQL 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。 现在有一个需求.注册分为两种字段:必填字段和⾮必填字段,那如果在添加用户的时候有不确定的字段传⼊,程…...
迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
在前面的章节中我们从0开始编写了一个mcp2515的驱动程序,而跟I2C设备类似,在Linux内核中也有着通用SPI设备驱动,在本章节将会讲解通用SPI设备驱动的使用,并讲解如何在应用程序中通过ioctl对SPI进行配置和使用。 硬件:迅…...
DDD架构实战第五讲总结:将领域模型转化为代码
云架构师系列课程之DDD架构实战第五讲总结:将领域模型转化为代码 一、引言 在前几讲中,我们讨论了领域模型的重要性及其在业务分析中的渐进获得方法。本讲将聚焦于如何将领域模型转化为代码,使得开发人员能够更轻松地实现用户的领域模型。 二、从模型到代码:领域驱动设计…...
C++----STL(list)
介绍 list的数据结果是一个带头双向链表。 使用 有了前面string、vector的基础,后续关于list使用的讲解主要提及与string和vector的不同之处。 使用文档:cplusplus.com/reference/list/list/?kwlist 迭代器问题 insert以后迭代器不失效 #include…...
软件测试 —— 性能测试(jmeter)
软件测试 —— 性能测试(jmeter) 什么是jmeter安装jmeterjmeter常用组件线程组取样器结果树 我们之前学习了接口测试工具Postman,我们今天要学习的是性能测试工具——jmeter 什么是jmeter Apache JMeter 是一个开源的性能测试工具ÿ…...
Zemax 非序列模式下的颜色检测器和颜色混合
在 Zemax 的非序列模式中,探测器用于捕获系统中射线的信息。可以使用各种类型的探测器来捕获光学系统性能的不同方面,例如矩形探测器,它存储撞击它的 NSC 源射线的能量数据。 另一种经常使用的探测器类型是 Detector Color,它是一…...
DBO优化最近邻分类预测matlab
蜣螂优化算法(Dung Beetle Optimizer,简称 DBO)作为一种新兴的群智能优化算法,于 2022 年末被提出,其灵感主要来源于蜣螂的滚球、跳舞、觅食、偷窃以及繁殖等行为。 本次使用的数据为 Excel 格式的分类数据集。该数据…...
【第二天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-五种常见的排序算法(持续更新)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python数据结构与算法的详细介绍1.Python中的常用的排序算法1.排序算法的介绍2.五种详细的排序算法代码 总结 前言 提示:这里可以添加本文要记…...
合并两个有序数组(Leetcode)
解题思路: 三个指针: $p1: 指向 nums1 中的最后一个非零元素。$p2: 指向 nums2 的最后一个元素。$p: 指向 nums1 的最后一位,用于存储合并后的元素。 从后往前填充: 比较 nums1[$p1] 和 nums2[$p2],较大的放入 nums1[…...
特殊类设计
[本节目标] 掌握常见特殊类的设计方式 1.请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构…...
2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计
题目来源:buuctf [RCTF2015]EasySQL1 目录 一、打开靶机,整理信息 二、解题思路 step 1:初步思路为二次注入,在页面进行操作 step 2:尝试二次注入 step 3:已知双引号类型的字符型注入,构造…...
【esp32-uniapp】uniapp小程序篇02——引入组件库
一、引入组件库(可自行选择其他组件库) 接下来介绍colorUI、uview plus的安装,其他的安装可自行查找教程 1.colorUI weilanwl/coloruicss: 鲜亮的高饱和色彩,专注视觉的小程序组件库 下载之后解压,将\coloruicss-ma…...
基于单片机的智能小区门禁系统设计(论文+源码)
1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心,STM32单片机作为主控单元,通过WiFi模块实现与手机APP的连接,构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…...
tkinter绘制组件(44)——浮出ui控件
tkinter绘制组件(44)——浮出ui控件 引言布局函数结构ui框架对齐方向绑定已有控件出现和隐藏逻辑出现和隐藏动画完整代码函数 效果测试代码最终效果 github项目pip下载 引言 TinUI的浮出ui控件(flyout)其实是一个之间创建在UI框架…...
CDSN 2024博客之星总评选-主题文章创作,我的AI之路-起手篇
CDSN 2024博客之星总评选-主题文章创作,我的AI之路-起手篇 一. 回顾自己的机器学习之路二. 2024年的大模型学习三. 对自己的期望 一. 回顾自己的机器学习之路 自2019年起,我开始涉足机器学习领域,最初接触的是通过模型实现自动化的任务&…...
LLM基础知识
代替你的不是ai,而是会使用ai的人。而在这之上还有会打造ai的人。 1、大语言模型的大体现在哪里 LLM(Large Language Model 大语言模型)的大不仅仅是指训练数据巨大,更指参数数量巨大。 参数即模型内部的变量,…...
Linux 网络:交换芯片 EDSA 以太网帧简介
文章目录 1. 前言2. EDSA 协议以太网帧的发送和接收2.1 什么是 EDSA ?2.2 EDSA 以太网帧的发送2.3 EDSA 以太网帧的接收 3. 验证 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. EDS…...
【Git版本控制器--3】Git的远程操作
目录 理解分布式版本控制系统 创建远程仓库 仓库被创建后的配置信息 克隆远程仓库 https克隆仓库 ssh克隆仓库 向远程仓库推送 拉取远程仓库 忽略特殊文件 为什么要忽略特殊文件? 如何配置忽略特殊文件? 配置命令别名 标签管理 理…...
深入理解GPT底层原理--从n-gram到RNN到LSTM/GRU到Transformer/GPT的进化
从简单的RNN到复杂的LSTM/GRU,再到引入注意力机制,研究者们一直在努力解决序列建模的核心问题。每一步的进展都为下一步的突破奠定了基础,最终孕育出了革命性的Transformer架构和GPT大模型。 1. 从n-gram到循环神经网络(RNN)的诞生 1.1 N-gram 模型 在深度学习兴起之前,处理…...
【2024年华为OD机试】 (E卷,200分) - 最优资源分配芯片资源占用(JavaScriptJava PythonC/C++)
一、问题描述 题目解析 题目描述 某块业务芯片的最小容量单位为 1.25G,总容量为 M * 1.25G。芯片资源编号为 1, 2, …, M。该芯片支持 3 种不同的配置,分别为 A、B、C: 配置 A:占用容量为 1.25G(1 个单位ÿ…...
Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中,我们常常会遇到各种有趣且具有挑战性的问题。今天,我们就来深入探讨一个在实际开发中较为常见的问题:当连续快速发送 Post 请求时,前端会弹出 “数据正在处理,请…...
【开源免费】基于Vue和SpringBoot的常规应急物资管理系统(附论文)
本文项目编号 T 159 ,文末自助获取源码 \color{red}{T159,文末自助获取源码} T159,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
差分进化算法 (Differential Evolution) 算法详解及案例分析
差分进化算法 (Differential Evolution) 算法详解及案例分析 目录 差分进化算法 (Differential Evolution) 算法详解及案例分析1. 引言2. 差分进化算法 (DE) 算法原理2.1 基本概念2.2 算法步骤3. 差分进化算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 单目标优化…...
优选算法——哈希表
目录 1. 哈希表简介 2. 两数之和 3. 判定是否为字符重排 4. 存在重复元素 5. 字母异位词分组 1. 哈希表简介 2. 两数之和 题目链接:1. 两数之和 - 力扣(LeetCode) 题目展示: 题目分析: 大家来看上面的图&…...
【前端SEO】使用Vue.js + Nuxt 框架构建服务端渲染 (SSR) 应用满足SEO需求
Nuxt.js 是一个基于 Vue.js 的通用应用框架,它简化了使用 Vue 构建服务端渲染 (SSR) 应用的流程。除了 SSR 之外,Nuxt.js 还支持静态站点生成(Static Site Generation, SSG),渐进式网络应用(Progressive We…...
AI学习指南Ollama篇-Ollama简介
一、定义 大语言模型(LLM)是一种基于深度学习的自然语言处理模型,能够生成文本、回答问题、翻译语言、撰写代码等。这些模型通过海量的文本数据进行训练,学习语言的模式和结构,从而能够生成自然流畅的文本内容。随着技术的不断进步,大语言模型在各个领域都展现出了巨大的…...
Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
在人工智能的浩瀚宇宙中,深度学习犹如一颗璀璨的星辰,引领着机器学习和计算机视觉领域的前沿探索。而神经网络,作为深度学习的核心架构,更是以其强大的数据建模能力,成为解决复杂问题的重要工具。今天,我们…...
《最优化理论基础》8课时层次化教案
《最优化理论基础》8课时层次化教案 课程总目标 掌握最优化核心理论(最优性条件、凸分析、对偶理论);能独立实现经典优化算法(梯度法、牛顿法、约束优化建模);理解优化理论与机器学习模型的关联ÿ…...
从源码深入理解One-API框架:适配器模式实现LLM接口对接
1. 概述 one-api 是一个开源的 API 框架,基于go语言开发,旨在提供统一的接口调用封装,支持多种 AI 服务平台的集成。通过 Gin 和 GORM 等框架,框架简化了多种 API 服务的调用流程。通过适配器模式实现了与多种 大模型API 服务的集…...
2025年国产化推进.NET跨平台应用框架推荐
2025年国产化推进.NET跨平台应用框架推荐 1. .NET MAUI NET MAUI是一个开源、免费(MIT License)的跨平台框架(支持Android、iOS、macOS 和 Windows多平台运行),是 Xamarin.Forms 的进化版,从移动场景扩展到…...
Tensor 基本操作4 理解 indexing,加减乘除和 broadcasting 运算 | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作3 理解 shape, stride, storage, view,is_contiguous 和 reshape 操作 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started Tensor 基本使用 索引 indexing示例代码 加减…...
图扑 2024 全年精彩回顾 | 稳步向前
2024 年即将过去,回顾这一年,图扑软件在多个领域取得了显著成就,我们斩获多项行业奖项,稳步提升了市场地位,并在产品创新上推出了一系列新功能,提升了用户体验。与此同时,通过与合作伙伴紧密协作…...
[Python学习日记-79] socket 开发中的粘包现象(解决模拟 SSH 远程执行命令代码中的粘包问题)
[Python学习日记-79] socket 开发中的粘包现象(解决模拟 SSH 远程执行命令代码中的粘包问题) 简介 粘包问题底层原理分析 粘包问题的解决 简介 在Python学习日记-78我们留下了两个问题,一个是服务器端 send() 中使用加号的问题,…...
【数据结构】深入解析:构建父子节点树形数据结构并返回前端
树形数据结构列表 一、前言二、测试数据生成三、树形代码3.1、获取根节点3.2、遍历根节点,递归获取所有子节点3.3、排序3.4、完整代码 一、前言 返回前端VO对象中,有列情况列表展示需要带树形结构,例如基于RBAC权限模型中的菜单返回…...
【统计的思想】假设检验(二)
假设检验是根据人为设定的显著水平,对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设,只是说明在设定的显著水平下,零假设成立的概率比较小,并不是说零假设就肯定不成立。如果零假设事实上是成立…...
IT服务规划设计
1. IT服务设计的作用 1) 设计满足需求的IT服务。 2) 设计SAL,测量方法和指标。 3) 设计服务过程及控制方法。...
高效查找:二分查找算法解析
1.二分查找简介 二分查找算法(Binary Search)是一种高效的查找算法,适用于有序数组或序列。它的基本思想是通过逐步缩小查找范围,将查找区间一分为二,直到找到目标值或确定目标值不存在。 算法原理:在数组…...