【算法 C/C++】一维差分
2025 - 03 - 08 - 第 69 篇
Author: 郑龙浩 / 仟濹
【一维差分】
文章目录
- 前缀和与差分 - 我的博客
- 差分(一维)
- 1 大体介绍
- (1)**1 原数组 2 差分数组 3 差分数组的前缀和数组**
- (2)记录区间操作的边界
- 2 差分原理是什么???
- 3 总结一下过程
- 4 某些区间所有的元素 + 某数(不使用差分)
- 5 某些区间所有的元素 + 某数(使用差分)
前缀和与差分 - 我的博客
一维前缀和
【算法 C/C++】一维前缀和
一维差分
【算法 C/C++】一维差分
二维前缀和
【算法 C/C++】二维前缀和
二维差分
【算法 C/C++】二维差分
差分(一维)
1 大体介绍
举例的数组
// 原数组
int arr[5] = {1, 3, 7, 5, 2};
// “原数组”的“差分数组” - 原生差分数组
int arr_d[5] = {1, 2, 4, -2, -3};
// 计算“差分数组”的“前缀和数组” --> 又变成了原数组
int sum_d[5] = {1, 3, 7, 5, 2};
(1)1 原数组 2 差分数组 3 差分数组的前缀和数组
// 原数组
1, 3, 7, 5, 2
// “原数组”的“差分数组” - 原生差分数组
1, 2, 4, -2, -3
// 计算“差分数组”的“前缀和数组” --> 又变成了原数组
1, 3, 7, 5, 2
差分数组
原生差分数组就是除了
arr_d[0]
外,其余arrr_d[i]
都是arr_d[ i ] = arr[i] - arr[i - 1]
说白了除了第一个元素是原封不动存入新的数组,其余的都是存储的后一个元素减去前一个元素的结果,重新存入一个新的数组
// “原数组”的“差分数组”
int arr_d[5] = {1, 2, 4, 2, -3};
原生差分数组 做前缀和计算 –> 原数组
当原生差分数组做前缀和计算的时候,会还原回原数组
// “原数组”的“差分数组” - 原生差分数组
int arr_d[5] = {1, 2, 4, 2, -3};
// 计算“差分数组”的“前缀和数组” --> 又变成了原数组
int sum_d[5] = {1, 3, 7, 5, 2};
(2)记录区间操作的边界
在增量差分数组中进行标记 –> 标记边界
当对 >=1 个区间进行加减value操作的时候,可以只计算 头 ** 和 尾,然后进行差分计算和前缀和计算**就可以得出加减的结果
( 无需再和以前一样通过循环进行累加操作了,节省了运算时间,提升了效率 )
Eg: [left, right] + value
的时候
操作如下
arr[left] += value;
arr[right + 1] -= value;
有多少个区间进行了 + value 操作,就循环多少次如上的操作
2 差分原理是什么???
这个原理想了挺久的,刚开始确实没明白,本来打算死记下来差分的步骤就好了,后来又看了一边网课,大致明白了,下面写一下
**一维差分 ** 的思路
define N 10
int arr_d[N] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
然后我想要对区间 [2, 6]
中所有的元素进行加 1
操作,则 原生差分数组 d[N]
的变化如下
arr[left] += value;
arr[right + 1] -= value;
// 下标:0 1 2 3 4 5 6 7 8 9
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
// 变化后 --> d[2] + 1 且 d[6 + 1] - 1
{0, 0, 1, 0, 0, 0, 0,-1, 0, 0}
前缀和操作
为什么是arr_d[2] + 1 且 arr_d[6 + 1] - 1
呢,这个实际上就是确定了 要进行 +1 操作的区间,从 arr_d[2]
开始做前缀和计算,直到d[7]
过程:
从
d[2]
开始做前缀和计算,答案一直为1
,直到加到d[6+1]
的时候,此时d[7]
为-1
,1 + (-1)
答案为0
,也就是到这+1
操作截止了。回过头去看过程,不就是利用差分数组确定要
+1
的区间吗。
结果为:
{0, 0, 1, 1, 1, 1, 1, 0, 0, 0}
那么进行了前缀和计算的差分数组是存储的什么呢???
实际上存储的就是所有元素要进行
+-
的value
所以,接下来的操作就是根据存储着所有位置要加减什么值得前缀和数组计算出不同区间+不同值得最终结果
增量差分数组!!!
注意区分,我上面的介绍均为 原生差分数组,因为课程中这么写的,我也就这样记得,后来写这个差分代码才意识到问题,又问了AI,才明白其实是并不是用的 这个原生差分数组,而是增量差分数组,然后增量差分数组刚开始并不是存储的每个位置的增量(增量差分数组在应用前缀和之前存储的是区间操作的边界标记。通过前缀和操作以后才是存储的每个位置的增量。
操作区间 | 标记方式 | 意义 |
---|---|---|
区间开始(left) | delta[left] += value | 从位置left 开始累积增加value |
区间结束(right) | delta[right+1] -= value | 在位置right+1 取消value 的累积 |
而在写程序的时候用 增量差分数组,直接存储每个元素位置的增量即可,而这个增量既可以是正也可以是负。
实际上在程序实现中,并不直接存储原数组的差分值,即不适用原生差分数组,而是通过 区间操作标记 来记录每个位置的增量变化(只存储增量),初始时
d
数组全为0,每个区间操作[left, right] + value
会修改d[left]
和d[right + 1]
,最终通过 前缀和计算 得到每个位置的总增量值。这些增量值会叠加到原数组上,完成最终的区间修改操作。
3 总结一下过程
假设现在所有的数值已经输入
//变量
arr[N] - 原数组
d[N] - 增量差分数组 - 刚开始存储的是区间操作的边界标记 - 前缀和操作后存储每个元素的增量
-
对增量差分数组
d[N]
进行如下操作,每个区间操作对应一次修改。d[left] += value; if (right + 1 < N) d[right + 1] -= value; // 防止越界
此过程用来计算 区间操作标记的位置
-
利用
d[N]
进行前缀和计算,这时候计算得出来的才是 每个元素的增量for (int i = 1; i < N; i++) {d[i] += d[i - 1]; // 此时 d[i] 表示 arr[i] 的增量 }
-
然后 将
d[N]
数组和arr[N]
数组的所有元素进行一对一的相加操作,得出将增量值叠加到原数组的结果for (int i = 0; i < N; i++) {arr[i] += d[i]; }
4 某些区间所有的元素 + 某数(不使用差分)
题目
有一个数组 arr[5] = {1, 3, 7, 5, 2}
,将如下区间内的元素加上指定的数字:
[2, 4] + 5, [1, 3] + 2, [0, 2] - 3
,并打印更改后的数组
答案为:-2, 2, 11, 12, 7
思路
原来的方法就是,直接硬将这些区间内的数字±操作,当计算区间过多的时候,运算时间太长
比如计算 arr[2]
的计算,就要进行三次运算 arr[2] + 5 + 2 - 3
,最终得出11,如果有好多的话,太麻烦了
代码
// Author: 郑龙浩 / 仟濹
// 2025-03-06
// 有一个数组 `arr[5] = {1, 3, 7, 5, 2}`,将如下区间内的元素加上指定的数字:
// `[2, 4] + 5, [1, 3] + 2, [0, 2] - 3`,并打印更改后的数组
// 答案为:`-2, 2, 11, 12, 7 `
// 差分
#include <iostream>
#include <algorithm>
using namespace std;
#define N 5
// 方法2
// #define get_sum(a, b) (a ? sum[b] - sum[a - 1] : sum[b])
int arr[ N ] = {1, 3, 7, 5, 2}; // 原数组
int d[ N ] = { 0 }; // 全部置为0
// 利用“差分数组”存储需要改变的范围以及值
void arr_add(int left, int right, int value){d[ left ] += value;// 避免越界if( right + 1 < N) d[ right + 1] -= value;
}
int main( void ){arr_add(2, 4, 5);arr_add(1, 3, 2);arr_add(0, 2, -3);// 对差分数组进行前缀和计算for( int i = 1; i < N; i ++ ){d[ i ] += d[i - 1];}// 将最终要加的值加到 arr[N] 原数组当中for( int i = 0; i < N; i ++ ){arr[ i ] += d[ i ];}// 打印结果for( int i = 0; i < N; i ++ ){cout << arr[ i ] << " ";}return 0;
}
5 某些区间所有的元素 + 某数(使用差分)
题目
有一个数组 arr[5] = {1, 3, 7, 5, 2}
,将如下区间内的元素加上指定的数字:
[2, 4] + 5, [1, 3] + 2, [0, 2] - 3
,并打印更改后的数组
答案为:-2, 2, 11, 12, 7
思路
前面也写过了
//变量
arr[N] - 原数组
d[N] - 差分数组
-
对原数组中的数据进行如下操作,有多少个区间进行 +value 操作就操作多少遍
d[left] += value, d[right + 1] -= value;
此过程用来计算差分数组中的值,而差分数组实际上就是存储的就是 对原数组的不同区间的加减不同的值为多少
-
利用
d[N]
进行前缀和计算,计算出每个元素应该 ± 多少 -
然后 将
d[N]
数组和arr[N]
数组的所有元素进行一对一的相加操作,得出最终答案。
代码
// Author: 郑龙浩 / 仟濹
// 2025-03-06
// 有一个数组 `arr[5] = {1, 3, 7, 5, 2}`,将如下区间内的元素加上指定的数字:
// `[2, 4] + 5, [1, 3] + 2, [0, 2] - 3`,并打印更改后的数组
// 答案为:`-2, 2, 11, 12, 7 `
// 差分
#include <iostream>
#include <algorithm>
using namespace std;
#define N 5
int arr[ N ] = {1, 3, 7, 5, 2}; // 原数组
int d[ N ] = { 0 }; // 全部置为0
// 利用“差分数组”存储需要改变的范围以及值
void arr_add(int left, int right, int value){d[ left ] += value;d[ right + 1] -= value;
}
int main( void ){arr_add(2, 4, 5);arr_add(1, 3, 2);arr_add(0, 2, -3);// 对差分数组进行前缀和计算for( int i = 1; i < N; i ++ ){d[ i ] += d[i - 1];}// 将最终要加的值加到 arr[N] 原数组当中for( int i = 0; i < N; i ++ ){arr[ i ] += d[ i ];}// 打印结果for( int i = 0; i < N; i ++ ){cout << arr[ i ] << " ";}return 0;
}
相关文章:
【算法 C/C++】一维差分
2025 - 03 - 08 - 第 69 篇 Author: 郑龙浩 / 仟濹 【一维差分】 文章目录 前缀和与差分 - 我的博客差分(一维)1 大体介绍(1)**1 原数组 2 差分数组 3 差分数组的前缀和数组**(2)记录区间操作的边界 2 差分原理是什么??ÿ…...
前后端数据加密传输【最佳方案】
AES和RSA区别 算法类型安全性密钥长度/输出长度速度应用场景AES对称加密高128位、192位、256位快适用于大规模数据加密,入HTTPS协议的数据传输RSA非对称加密高1024位、2048位、4096位较慢适用于数据安全传输、数字签名和身份验证 综上:兼顾安全性和性能…...
爬虫案例七Python协程爬取视频
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Python协程爬取视频 前言 提示:这里可以添加本文要记录的大概内容: 爬虫案例七协程爬取视频 提示:以下是本篇文章正文…...
算法每日一练 (9)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (9)最小路径和题目描述解题思路解题代码…...
对接RAGflow的API接口报错
对接RAGflow的API接口,报错: {"status":"success","message":"API连接正常","response":{"code":109,"data":false,"message":"Authentication error: API key …...
智慧城市智慧社区项目建设方案
一、项目背景 在全球化进程加速的今天,城市化问题日益凸显,传统的城市管理模式已难以满足现代社会对高效、智能化管理的需求。智慧城市和智慧社区的概念应运而生,其核心目标是通过信息技术手段,提升城市资源的利用效率࿰…...
Orale数据文件加错位置,你直接rm引发的故障
数据库可能面临硬件故障、人为错误、恶意攻击、自然灾害等多种潜在风险,那么今天这个故障就是由于业务人员加错数据文件的位置,然后直接从物理层面rm -f了,导致了生产的故障! 以下是针对Oracle数据库物理删除数据文件后的快速修复…...
Web网页开发——水果忍者
1.介绍 复刻经典小游戏——水果忍者 2.预览 3.代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…...
51 单片机中断控制寄存器 TCON
在 51 单片机中,中断控制寄存器 TCON(Timer/Counter Control Register,定时器 / 计数器控制寄存器)主要用于控制定时器 / 计数器的启动、停止以及外部中断的触发方式等。它既可以按字节寻址,也可以按位寻址,…...
电脑如何在系统默认的壁纸中切换自己喜欢的
1、声明:该切换壁纸仅支持win10。 当你想去切换系统默认的壁纸,但是不知道该怎么切换,别慌,小亦教你几招帮你快速切换自定义壁纸。 我们平常使用的win10桌面壁纸大部分都是 简单、朴素的壁纸,但如果你想要切换自己喜…...
AcWing 600. 仰视奶牛 单调栈模板题
https://www.acwing.com/problem/content/description/602/ 找x右边第一个大于x的数的位置 const int N 1e5 10,T 20;int n; LL a[N],stk[N],top,r[N];void solve() {cin >> n;for (int i 1;i < n;i ) cin >> a[i];for (int i n;i > 1;i --){while(top…...
使用Galaxy创建生物信息学工作流的步骤详解
李升伟 整理 Galaxy 是一个基于 Web 的生物信息学平台,提供了直观的用户界面和丰富的工具,帮助用户创建和管理生物信息学工作流。以下是使用 Galaxy 创建生物信息学工作流的主要步骤: 1. 访问 Galaxy 平台 打开 Galaxy 的官方网站ÿ…...
OmniDrive(2):环境搭建
文章目录 1. 环境安装1.1 cuda 和cudnn安装1.2 依赖包安装2. 准备数据集及权重2.1 下载nuScenes数据2.2 下载预训练权重3. 模型训练及推理3.1 训练3.2 推理根据OmniDrive 官方的环境配置 Environment Setup python 3.9 ubantu 22.04 cuda 11.7 torch1.13.11. 环境安装 1.1 cu…...
计算机底层知识一——从编程语言到可执行程序
好久没写博客了,近段时间事情比较杂,最近终于有时间回归了。其余代码写久了就会遇到许多奇奇怪怪的问题,这些问题绕不开许多底层知识,比如缺少动态依赖库、idea编译失败等等,虽然通过百度等搜索引擎,亦或是…...
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践
HarmonyOS Next~鸿蒙系统ArkCompiler跨平台编译技术的革新实践 引言 在万物互联时代,操作系统对编译技术的需求已从单纯的代码转换演变为跨设备协同、高效资源调度与极致性能优化的综合挑战。华为鸿蒙系统(HarmonyOS)自主研发的ArkCompiler…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules
声明在 src/core/ngx_module.h ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);实现在 src/core/ngx_module.c ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle) {/** create a list of modules to be used for this cycle,* copy static modules to it*/cycle->modul…...
Java多线程与高并发专题——关于CopyOnWrite 容器特点
引入 在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我们来看看Vector是如何实现线程安全的 ,还是…...
Wpf-ReactiveUI-Usercontrol与主界面交互
文章目录 Usercontrol与主界面方法一、使用属性绑定UserControl 部分(MyUserControl.xaml.cs)UserControl 视图模型部分(MyUserControlViewModel.cs)主界面部分(MainWindow.xaml)主界面视图模型部分(MainWindowViewModel.cs)方法二、使用消息传递UserControl 视图模型部…...
MySQL中like模糊查询如何优化?
大家好,我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,LIKE 模糊查询虽然非常常见,…...
用Ruby的Faraday库来进行网络请求抓取数据
在 Ruby 中,Faraday 是一个非常强大的 HTTP 客户端库,它可以用于发送 HTTP 请求并处理响应。你可以使用 Faraday 来抓取网页数据,处理 API 请求等任务。下面我将向你展示如何使用 Faraday 库进行网络请求,抓取数据并处理响应。 1.…...
2025天梯训练1
PTA | L3-1 直捣黄龙 30分 思路:多关键字最短路,同时还要记录最短路径条数。 typedef struct node{int from,d,pass,kl;bool operator<(const node &x)const{if(d!x.d) return d>x.d;if(pass!x.pass) return pass<x.pass;return kl<x.…...
DeepSeek教我写词典爬虫获取单词的音标和拼写
Python在爬虫领域展现出了卓越的功能性,不仅能够高效地抓取目标数据,还能便捷地将数据存储至本地。在众多Python爬虫应用中,词典数据的爬取尤为常见。接下来,我们将以dict.cn为例,详细演示如何编写一个用于爬取词典数据…...
揭开AI-OPS 的神秘面纱 第四讲 AI 模型服务层(自研方向)
AI 模型服务层技术架构与组件选型分析(自研方向) 基于自有开发寻训练方向 AI 模型服务层 是 AI-Ops 架构的 核心智能引擎,负责构建、训练、部署、管理和监控各种 AI 模型,为上层应用服务层提供智能分析和决策能力。 AI 模型服务层需要提供一个灵活、可扩展、高性能的平台…...
[通俗易懂C++]:std::optional
[通俗易懂C]:std::optional 考虑下面这样一个函数: int doIntDivision(int x, int y) {return x / y; }如果调用者传入一个语义上无效的值(例如 y 0 ),此函数无法计算一个返回值(因为除以 0 在数学上是未定义的)。在…...
深入理解与配置 Nginx TCP 日志输出
一、背景介绍 在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库…...
使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出
使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出,通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:htt…...
Spring-事务
Spring 事务 事务的基本概念 🔹 什么是事务? 事务是一组数据库操作,它们作为一个整体,要么全部成功,要么全部回滚。 常见的事务场景: 银行转账(扣款和存款必须同时成功) 订单系统…...
开源项目介绍:Native-LLM-for-Android
项目地址:Native-LLM-for-Android 创作活动时间:2025年 支持在 Android 设备上运行大型语言模型 (LLM) ,具体支持的模型包括: DeepSeek-R1-Distill-Qwen: 1.5B Qwen2.5-Instruct: 0.5B, 1.5B Qwen2/2.5VL:…...
vocabulary is from your listening,other speaking and your thought.
不要把单词放在自己的大脑里,放在自己的嘴巴里,自己在那疯狂重复的recite,its futile.只是单点记忆单词,记住也是temporary,而且是单点的记忆,当别人说此词汇,你也听不懂或分辨就是这个单词&…...
前端知识点---路由模式-实例模式和单例模式(ts)
在 ArkTS(Ark UI 框架)中,路由实例模式(Standard Instance Mode)主要用于管理页面跳转。当创建一个新页面时,可以选择标准实例模式(Standard Mode)或单实例模式(Single M…...
Matplotlib库中color 参数颜色有多少种
**当我们绘图超过十几种颜色。我都是 定义颜色列表( ** colors [blue, green, red, cyan, magenta, yellow, greenyellow, orange, purple, brown, pink, gray]1、 颜色名称 Matplotlib常用的颜色名称: red 或 r green 或 g blue 或 b yellow 或 y cy…...
LINUX虚拟机中,不能播放RTSP设备,怎么办
首先,主机能够打开RTSP设备。虚拟机无法打开。 虚拟机网络设置 桥接网卡,选择正确的网卡。 虚拟机IP设置 需要是同一个网段。交换机的设备是192.168.1.192 用ffplay测试...
宝塔的ssl文件验证域名后,会在域名解析列表中留下记录吗?
在使用宝塔面板进行SSL证书验证域名后,通常不会在域名解析列表中留下记录。验证过程中添加的TXT记录仅用于验证域名的所有权,一旦验证完成,就可以安全地删除这些记录,不会影响SSL证书的正常使用。根据搜索结果,DNS验证…...
mitt 依赖库详解
一、概述 mitt 是一个极其轻量级的 JavaScript 事件发射器库,实现了发布-订阅模式。该模式允许对象间松散耦合,一个对象(发布者)可以发布事件,而其他对象(订阅者)可以监听这些事件并作出响应。…...
OSPF网络类型:NBMA与P2MP
一、NBMA网络 NBMA网络的特点 连接方式: 支持多台设备连接到同一个网络段,但网络本身不支持广播或组播。典型例子:帧中继、ATM。 DR/BDR选举: 由于网络不支持广播,OSPF需要手动配置邻居。 仍然会选举DR(…...
VUE叉的工作原理?
Vuex 是 Vue.js 的一个专门用于状态管理的库,其工作原理基于单向数据流和集中式存储,旨在解决跨组件之间状态共享和管理的复杂性。以下是 Vuex 的核心工作原理及其关键组成部分: 核心概念 State(状态) Vuex 使用一个单…...
H.264语法结构分析之frame_cropping_flag
技术背景 开发者对接我们轻量级RTSP服务的时候,利用部分开源的播放器,播放流数据的时候,说分辨率不对,导致看到的图像有问题,用我们的player或常见的通用播放器,又都是好的,这就扯到了今天的主…...
【智能体】本地安装Conda和搭建OpenManus环境
整理不易,请不要令色你的赞和收藏。 1. 前言 没体验到 Manus?不妨使用 MetaGPT 开源的 OpenManus 搭建自己的 Manus。本文将带你安装 Conda 并搭建自己的 Manus。 2. 前提条件 已安装 conda,没安装的话,下文有介绍。 OpenManu…...
【linux网络编程】套接字编程API详细介绍
在C语言中,套接字(Socket)编程主要用于网络通信,尤其是在基于TCP/IP协议的应用程序开发中。常用的套接字编程API主要基于Berkeley Sockets(伯克利套接字)接口,这些函数通常在<sys/socket.h&g…...
杂项知识笔记搜集
1.pygame pygame可以画出来图形界面,pygame Python仓库 PyGame游戏编程_游戏程序设计csdn-CSDN博客 2.V4L2库 V4L2是Linux上的Camera采集器的框架 Video for Linux ,是从Linux2.1版本开始支持的。HDMI视频采集卡采集到的视频通过USB3.0输出࿰…...
模型微调——模型性能提升方法及注意事项(自用)
名词补充 人为为训练数据标注的标签称为黄金标准或真实值,这个过程一定程度上保证训练的准确性,但是其人工标注的成本和时间很高,并且标注的标签受人的主观因素影响。 导致模型性能不佳的因素和解决办法 ①不同类别的数据不平衡:统…...
RabbitMQ之旅(1)
相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…...
TCP7680端口是什么服务
WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...
<script setup>和export default { setup() { ... } }区别
在 Vue 3 组合式 API(Composition API)中,<script setup> 和 export default setup() {} 都用于定义组件的逻辑,但它们有一些重要的区别: 1️⃣ <script setup>(推荐) ✅ 更简洁、…...
leetcode hot100--动态规划【五步总纲】
五步: 1.dp数组以及下标定义 dp[i] 2.递推公式 dp[n]dp[n-1]dp[n-2] 3.dp数组如何初始化 注意:判断边界条件,n0dp[1]就不存在【斐波那契】 4.遍历顺序 for循环顺序 5.打印数组【debug】 第一题:斐波那契数列 首先回顾了…...
RtlLookupAtomInAtomTable函数分析之RtlpAtomMapAtomToHandleEntry函数的作用是验证其正确性
第一部分: NTSTATUS RtlLookupAtomInAtomTable( IN PVOID AtomTableHandle, IN PWSTR AtomName, OUT PRTL_ATOM Atom OPTIONAL ) { NTSTATUS Status; PRTL_ATOM_TABLE p (PRTL_ATOM_TABLE)AtomTableHandle; PRTL_ATOM_TABLE_ENTRY a; …...
【从零开始学习计算机科学】硬件设计与FPGA原理
硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…...
todo: 使用融云imserve做登录(android)
使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…...
从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动
目录 所以,键盘是如何工作的 说一说我们的8042 输出缓冲区寄存器 状态寄存器 控制寄存器 动手! 注册中断 简单整个键盘驱动 Reference ScanCode Table 我们下一步就是准备进一步完善我们系统的交互性。基于这个,我们想到的第一个可以…...