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

从0开始掌握动态规划

动态规划的核心思想 -- 以空间换时间

复杂点说通过分解问题为子问题并存储子问题解来优化复杂计算的算法策略。

简单看个问题。

一,初始:求最长连续递增子序列

nums = [10,9,2,5,3,7,101,18]

求上面数组中的最长连续递增子序列,输出其长度

暴力解法中我们需要以每个数为开头去遍历数组,得到最长的子数组。

会产生如下遍历

3,7,101

7,101

可以看到,有重复的计算。我们先用java写一下暴力解法。

暴力解法
    public int lengthOfLIS(int[] nums) {if (nums == null || nums.length == 0) {return 0;}int res = 0;for (int i = 0; i < nums.length; i++) {int temp = 1; // 当前子序列的长度,初始为1(单个元素)for (int j = i + 1; j < nums.length; j++) {if (nums[j] > nums[j - 1]) {temp++;} else {break;}}res = Math.max(res, temp); // 更新最长子序列的长度}return res;}

双重for循环,时间复杂度为 (O(n^2)),空间复杂度为 (O(1))。

动态规划

初始化dp的int数组。值为到当前位置的最大连续数。这样整个遍历完dp数组的值应该是

[1,1,1,2,1,2,3,1]。 可以看到最大长度为3。

    /*** 方法二: 动态规划求解连续递增子序列* @param nums* @return*/public int lengthOfLIS2(int[] nums) {if (nums == null || nums.length == 0) {return 0;}int n = nums.length;int[] dp = new int[n];dp[0] = 1; // 单个元素本身就是一个长度为 1 的连续递增子序列int res = 1; // 初始化结果为 1for (int i = 1; i < n; i++) {if (nums[i] > nums[i - 1]) {dp[i] = dp[i - 1] + 1;} else {dp[i] = 1; // 当前元素本身可以作为一个新的连续递增子序列的起点}res = Math.max(res, dp[i]); // 更新最长子序列的长度}return res;}

时间复杂度:(O(n))
空间复杂度:(O(n))

二,升级:求最长递增子序列

nums = [10,9,2,5,3,7,101,18]

求上面数组中的最长递增子序列,输出其长度

将上面一道题进行稍微变化一下,我们可以看出,现在的结果应该是2,3,7,101。输出结果应该是4。

如果不用动态规划,这道题有点难解。需要用到回溯+记忆,单纯的暴力解法并不适用。

比如我再加一个测试用例

nums =[0,1,0,3,2,3]

 回溯法
    /*** 方法一: 暴力解法* @param nums* @return*/public int lengthOfLIS(int[] nums) {if (nums == null || nums.length == 0) return 0;int maxLen = 0;for (int i = 0; i < nums.length; i++) {maxLen = Math.max(maxLen, backtrack(nums, i, new ArrayList<>()));}return maxLen;}// 回溯法生成所有递增子序列private int backtrack(int[] nums, int index, List<Integer> current) {if (index >= nums.length) return current.size();int maxLen = current.size();  // 不选当前元素的默认长度// 选择当前元素的情况if (current.isEmpty() || nums[index] > current.get(current.size() - 1)) {current.add(nums[index]);int lenWith = backtrack(nums, index + 1, current);current.remove(current.size() - 1);maxLen = Math.max(maxLen, lenWith);}// 不选当前元素的情况int lenWithout = backtrack(nums, index + 1, current);return Math.max(maxLen, lenWithout);}

时间复杂度: (O(2^n))

空间复杂度:O(n)

该方法容易超过时间限制

动态规划

这个就需要在上个动态规划样例中稍微改动一下。

我们先模拟一下对照样例生成的dp数组应该的样子。

int[] nums = {10, 9, 2,  5, 3, 7, 101, 18};
int[] dp =   {1,  1, 1,  2, 2, 3,  4,  4};

先举个简单的方便观察的例子

int[] nums = {1, 2, 3, 4, 2, 6, 7};
int[] dp =   {1, 2, 3, 4, 1, 5, 6};

即便当数组为递减数组时,长度也会输出1

  1. 所以我们还是需要先将dp数组全部初始化1
  2. 第一次遍历,2 > 1的,所以dp[1] = dp[0] + 1;
  3. 第二次遍历,3 > 1的,所以dp[2] = dp[0] + 1; 然后 3 > 2的,所以 dp[2] = dp[1] + 1;
  4. ……
  5. 第五次遍历,6 > 4的,所以dp[5] = dp[3] + 1;但是6 > 2,不能得出dp[5] = dp[4] + 1,需要dp[4] + 1与当前的dp[5]的值进行比较。取最大的一个。
  6. ……

所以综上我们可以写出代码

    /*** 方法二: 动态规划求解递增子序列* @param nums* @return*/public int lengthOfLIS2(int[] nums) {if (nums == null || nums.length == 0) {return 0;}int n = nums.length;int[] dp = new int[n];Arrays.fill(dp, 1);int res = 1; // 初始化结果为 1for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {dp[i] = Math.max(dp[i], dp[j] + 1);}res = Math.max(res, dp[i]);}}return res;}

 时间复杂度为 ​O(n²),空间复杂度为 ​O(n)。

三,再升级:删除最少元素,使剩余元素先递增后递减

动态规划

还是以刚刚的例子为例

nums = [10,9,2,5,3,7,101,18]

删除最少元素,使剩余元素先递增后递减,输出最少需要删除多少元素。

 通过上面两个例子,我们可以看出一个dp数组只能保存一个状态。

对于这道题,我们可以考虑使用两个dp数组来完成。

nums = [10,9,2,5,3,7,101,18]
int[] dp1 =   {1,  1, 1,  2, 2, 3,  4,  4}; //递增dp
int[] dp2 =   {4,  3, 1,  2, 1, 1,  2,  1}; //递减dp

 可以看出在dp1[6] + dp2[6] = 6的时候是最大的,所以最大长度应该是dp1[6] + dp2[6] - 1 = 5;

因为6这个节点重复计算了,所以需要减1

那么就能得出答案需要删除:nums.length() - 5 = 3;

最少需要删除3个元素。

    /*** 方法二: 动态规划求解删除最少元素,使剩余元素先递增后递减* @param nums* @return*/public int lengthOfLIS3(int[] nums) {if (nums == null || nums.length == 0) {return 0;}int n = nums.length;int[] dp1 = new int[n];int[] dp2 = new int[n];Arrays.fill(dp1, 1);Arrays.fill(dp2, 1);// 递增子序列for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {dp1[i] = Math.max(dp1[i], dp1[j] + 1);}}}// 递减子序列for (int i = n - 2; i >= 0; i--) {for (int j = n - 1; j > i; j--) {if (nums[j] < nums[i]) {dp2[i] = Math.max(dp2[i], dp2[j] + 1);}}}// 合并int max = 0;for (int i = 0; i < n; i++) {if (dp1[i] + dp2[i] > max) {max = dp1[i] + dp2[i];}}return n - max - 1;}

 四,看一道力扣原题

322. 零钱兑换

 这道题可以换个角度看看,我们要求amount的最小硬币个数。可以构建dp[amount + 1]数组,

求从1 - amount间的所有最小个数。

换个简单的实例

输入:coins = [1, 2], amount = 5

以外层coins为循环,内层循环amount得到最小值

如上面例子。

初始化dp数组,因为要求最小,所以初始值应该为最大,且dp[0] = 0;

第一次外层循环1得到dp数组[0,1,2,3,4,5]

第二次外层循环2得到dp数组[0,1,1,2,2,3]

构建dp公式:

dp[i] = Math.min(dp[i], dp[i - coin] + 1);

 得到解法

    public int coinChange(int[] coins, int amount) {int[] dp = new int[amount + 1];Arrays.fill(dp, amount + 1); // 初始化为不可达标记dp[0] = 0; // 基础情况// 外层循环遍历硬币for (int coin : coins) {// 内层循环遍历金额(完全背包正序遍历)for (int i = coin; i <= amount; i++) {dp[i] = Math.min(dp[i], dp[i - coin] + 1);}}return dp[amount] > amount ? -1 : dp[amount];}

相关文章:

从0开始掌握动态规划

动态规划的核心思想 -- 以空间换时间 复杂点说通过分解问题为子问题并存储子问题解来优化复杂计算的算法策略。 简单看个问题。 一&#xff0c;初始&#xff1a;求最长连续递增子序列 nums [10,9,2,5,3,7,101,18] 求上面数组中的最长连续递增子序列&#xff0c;输出其长度 …...

解锁向量数据库:实现高效过滤与管理的实用方法

1. 带过滤的相似性搜索 大多数向量数据库不仅可以存储向量数据&#xff0c;还支持存储相关元数据。这些元数据可以包括文本原文、扩展信息、页码、文档 ID、作者、创建时间等自定义信息&#xff0c;通常用于实现数据检索。 向量数据库记录 向量(vector)元数据(metadata)id遗…...

数码管LED显示屏矩阵驱动技术详解

1. 矩阵驱动原理 矩阵驱动是LED显示屏常用的一种高效驱动方式&#xff0c;利用COM&#xff08;Common&#xff0c;公共端&#xff09;和SEG&#xff08;Segment&#xff0c;段选&#xff09;线的交叉点控制单个LED的亮灭。相比直接驱动&#xff0c;矩阵驱动可以显著减少所需I/…...

C++模板初阶

1.函数模板 模板是C中一个非常重要的东西&#xff0c;也是下一步学stl的最后一块拼图。那看看最后一块拼图是什么呢&#xff1f;C祖师爷在写C语言时遇到了有个非常难受的地方&#xff1a; 遇到有很多类型变量交换的时候就要写不同的交换函数&#xff0c;再新增类型的交换还要…...

第六章:6.3求一个3*3的整型矩阵对角线元素之和

//求一个3*3的整型矩阵对角线元素之和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int i 0, j 0;int arr[3][3] { 0 };printf("请输入一个3*3的矩阵:\n");for (i 0; i < 3; i){for (j 0; j < 3; j){scanf("%d", …...

Oracle 19c部署之初始化实例(三)

上一篇文章中&#xff0c;我们已经完成了数据库软件安装&#xff0c;接下来我们需要进行实例初始化工作。 一、初始化实例的两种方式 1.1 图形化初始化实例 描述&#xff1a;图形化初始化实例是通过Oracle的Database Configuration Assistant (DBCA)工具完成的。用户通过一系…...

RAGFlowwindows本地pycharm运行

Python环境准备 1. 安装pipx。如已经安装&#xff0c;可跳过本步骤&#xff1a; python -m pip install --user pipxpython -m pipx ensurepath## 验证安装pipx --version2. 安装 uv。如已经安装&#xff0c;可跳过本步骤&#xff1a; pipx install uv ## 设置为阿里云 PyPI…...

阿里云RAM账号免密登录Java最佳实践

参考官方文章地址&#xff1a;如何使用免登访问流程_阿里云集成转售解决方案-阿里云帮助中心 参考代码地址&#xff1a;如何使用安全访问服务Python及Java示例代码_阿里云集成转售解决方案-阿里云帮助中心 1. RAM的含义 阿里云的访问控制RAM&#xff08;Resource Access Manag…...

基于LightRAG进行本地RAG部署(包括单卡多卡本地模型部署、调用阿里云或DeepSeekAPI的部署方法、RAG使用方法)

1.简介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的自然语言处理模型架构。它旨在解决传统生成模型在面对复杂任务时可能出现的生成内容缺乏准确性和多样性的不…...

GPIO输出模式

这个 typedef enum 是 STM32 中 GPIO 模式的定义&#xff0c;每一个模式都代表着 GPIO 引脚的不同工作方式。不同的模式会影响引脚的输入或输出状态&#xff0c;以及是否具有其他功能&#xff08;如外设功能&#xff09;。接下来&#xff0c;我将详细解释每个模式的作用和如何使…...

Linux,redis数据库安装使用

Redis 非关系型数据库 介绍 安装 主从模式 哨兵模式 集群模式 redis 数据类型/增删改查 redis 持久化 redis 雪崩 击穿 穿透 LAMPredis 数据迁移 git redis 安装部署 1&#xff0c;下载或者上传redis 6.2.14 wget http://download.redis.io/releases/redis-6.2.14.tar.gz …...

3DS 转 STL 全攻略:传统工具与迪威模型网在线转换深度解析

在 3D 建模与 3D 打印的技术领域中&#xff0c;常常会遇到需要将不同格式的文件进行转换的情况。其中&#xff0c;把 3DS 文件转换为 STL 格式是较为常见的操作。3DS 文件作为一种旧版 Autodesk 3D Studio 使用的 3D 图像格式&#xff0c;存储着丰富的信息&#xff0c;包括网格…...

最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

远程医疗系统安全升级:构建抗CC攻击的全方位防护网

随着云计算、大数据和互联网技术的不断发展&#xff0c;远程医疗系统正在逐步走进大众视野&#xff0c;为患者提供便捷高效的医疗服务。然而&#xff0c;远程医疗系统在便利性的背后也面临着严峻的网络安全挑战&#xff0c;其中&#xff0c;CC攻击&#xff08;Challenge Collap…...

【Java学习笔记】进制与进制转换

进制与进制转换 一、进制介绍 二进制&#xff1a;0、1&#xff0c;满 2 进 1&#xff0c;以 0b 或 0B 开头。 十进制&#xff1a;0-9&#xff0c;满 10 进 1。 八进制&#xff1a;0-7&#xff0c;满 8 进 1&#xff0c;以数字 0 开头表示。 十六进制&#xff1a;0-9 及 A(10…...

《SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战》​

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是Scheduled和Quartz对比分析&#xff1a; 新手常见困惑&#xff1a; 刚学SpringBoot时&#xff0c;我发现用Scheduled写定时任务特别简单。但当我看到同事在项目里用Quartz时&…...

RestSharp和Newtonsoft.Json结合发送和解析http

1.下载RestSharp和Newtonsoft.Json 2编写ApiRequest和ApiResponse和调用工具类HttpRestClient 请求模型 /// <summary>/// 请求模型/// </summary>public class ApiRequest{/// <summary>/// 请求地址/api路由地址/// </summary>public string Route {…...

[图论]Kruskal

Kruskal 本质&#xff1a;贪心&#xff0c;对边进行操作。存储结构&#xff1a;边集数组。适用对象&#xff1a;可为负权图&#xff0c;可求最大生成树。核心思想&#xff1a;最短的边一定在最小生成树(MST)上&#xff0c;对最短的边进行贪心。算法流程&#xff1a;对全体边集…...

腾讯云对象存储以及项目业务头像上传

腾讯云上传步骤&#xff1a; service-vod模块化中 ①、参考文档&#xff0c;引入依赖 ②、配置文件application.properties ③、创建工具类 初始化bean的时候读取配置文件 Component public class ConstantPropertiesUtil implements InitializingBean{Value("${t…...

Windows下导入文件中的环境变量

在Windows批处理脚本&#xff08;.bat&#xff09;中&#xff0c;通过文件获取并设置环境变量通常涉及逐行读取文件内容并动态赋值给变量。以下是具体实现方法及示例&#xff1a; 一、从文件读取变量并设置到环境变量 假设有一个配置文件&#xff08;如env_config.txt&#xf…...

【音视频开发】第五章 FFmpeg基础

【音视频开发】第五章 FFmpeg基础 文章目录 【音视频开发】第五章 FFmpeg基础一、播放器框架1.媒体文件读取阶段2.音频处理流程3.视频处理流程 二、常用音视频概念1.常用音视频术语2.复用器3.编解码器 三、FFmpeg 库1.整体结构 四、FFmpeg 常用函数1.libavformat 封装/解封装2.…...

【ESP32|音频】一文读懂WAV音频文件格式【详解】

简介 最近在学习I2S音频相关内容&#xff0c;无可避免会涉及到关于音频格式的内容&#xff0c;所以刚开始接触的时候有点一头雾水&#xff0c;后面了解了下WAV相关内容&#xff0c;大致能够看懂wav音频格式是怎么样的了。本文主要为后面ESP32 I2S音频系列文章做铺垫&#xff0…...

数据通信学习笔记之OSPF路由汇总

区域间路由汇总 路由汇总又被称为路由聚合&#xff0c;即是将一组前缀相同的路由汇聚成一条路由&#xff0c;从而达到减小路由表规模以及优化设备资源利用率的目的&#xff0c;我们把汇聚之前的这组路由称为精细路由或明细路由&#xff0c;把汇聚之后的这条路由称为汇总路由或…...

【C++】priority_queue的底层封装和实现

目录 前言基本结构如何设置默认大小堆底层实现仿函数的使用向上调整算法向下调整算法其他接口 end 前言 priority_queue的介绍 优先级队列默认使用vector作为其底层存储数据的容器&#xff0c;在vector上又使用了堆算法将vector中的元素构造成堆的结构&#xff0c;因此priorit…...

2023年全国青少年信息素养大赛 Python编程挑战赛 小学全年级组 初赛真题答案详细解析

2023信息素养大赛 Python编程挑战赛 选择题&#xff08;共15题&#xff0c;每题5分&#xff0c;共75分&#xff09; 1、关于列表的索引&#xff0c;下列说法正确的是 A、列表的索引从0开始 B、列表的索引从1开始 C、列表中可能存在两个元素的索引一致 D、列表中索引的最大…...

十三种通信接口芯片——《器件手册--通信接口芯片》

目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…...

PyTorch生成式人工智能实战(1)——神经网络与模型训练过程详解

PyTorch生成式人工智能实战&#xff08;1&#xff09;——神经网络与模型训练过程详解 0. 前言1. 传统机器学习与人工智能2. 人工神经网络基础2.1 人工神经网络组成2.2 神经网络的训练 3. 前向传播3.1 计算隐藏层值3.2 执行非线性激活3.3 计算输出层值3.4 计算损失值3.5 实现前…...

【软件系统架构】事件驱动架构

一、引言 在当今的软件开发和系统架构领域&#xff0c;事件驱动架构&#xff08;Event - Driven Architecture&#xff0c;EDA&#xff09;正逐渐成为构建复杂、分布式和可扩展系统的热门选择。随着信息技术的不断发展&#xff0c;传统的架构模式在应对高并发、实时性要求高、数…...

Doris FE 常见问题与处理指南

在数据仓库领域&#xff0c;Apache Doris 凭借其卓越性能与便捷性被广泛应用。其中&#xff0c;FE&#xff08;Frontend&#xff09;作为核心组件&#xff0c;承担着接收查询请求、管理元数据等关键任务。然而&#xff0c;在实际使用中&#xff0c;FE 难免会遭遇各类问题&#…...

Manus AI “算法-数据-工程“三位一体的创新

Manus AI在多语言手写识别领域的技术突破&#xff0c;通过算法创新、数据工程与场景适配的协同作用&#xff0c;解决了传统手写识别的核心痛点。以下是其关键技术路径与创新点的系统性分析&#xff1a; 一、深度学习模型与算法优化 混合神经网络架构Manus AI采用"CNN与LST…...

Flutter Expanded 与 Flexible 详解

目录 1. 引言 2. Expanded 的基本用法 3. Flexible 的基本用法 4. Expanded vs Flexible 的区别 4.1 基础定义 4.2 关键差异 5. Expanded 深度解析 5.1 按比例分配 5.2 强制填充特性 6. Flexible 深度解析 6.1 基础用法&#xff1a;动态收缩 6.2 结合 fit 参数控制…...

乘用车制动系统设计:保障行车安全的核心技术

摘要 随着汽车工业的快速发展&#xff0c;乘用车制动系统的设计至关重要。本文详细阐述了乘用车制动系统的工作原理、组成部分、常见类型&#xff0c;深入分析了制动系统设计过程中的关键要点&#xff0c;包括制动力分配、制动管路设计、制动助力系统选型等。同时&#xff0c;…...

电力行业在保障用电安全方面正积极采用先进的物联网技术

电力行业在保障用电安全方面正积极采用先进的物联网技术 电力行业的物联网安全用电监管装置正发挥着至关重要的作用。 ASCO 电不着安全用电装置凭借其卓越的性能&#xff0c;成为了解决用电安全问题的得力助手。 当电漏电这种危险情况悄然发生时&#xff0c;物联网 ASCO 电不着…...

TDengine 语言连接器(PHP)

简介 PHP 语言广泛用于 Web 开发的开源脚本语言。它语法简单&#xff0c;容易学习&#xff0c;既支持面向过程&#xff0c;也支持面向对象编程。具有跨平台性&#xff0c;能与多种数据库交互&#xff0c;可与 HTML 等前端技术配合&#xff0c;动态生成网页内容。常用于开发各类…...

使用docker该怎么做:从公有仓库拉取镜像并上传到私有仓库

在容器化部署中&#xff0c;将公有镜像仓库&#xff08;如Docker Hub&#xff09;的镜像迁移到私有仓库&#xff08;如Harbor、Nexus&#xff09;是常见需求。 一、为什么需要将镜像从公有仓库传到私有仓库&#xff1f; 网络连通性&#xff1a;公有仓库依赖公网访问&#xff…...

list的使用

1&#xff1a;list文档 list文档 在之前我们对于链表有过最初始的模拟实现&#xff0c;现在进入C之后&#xff0c;我们可以在STL库中发现到链表这个容器的使用&#xff0c;list的底层也是我们最初实现的双向链表。 2&#xff1a;list的使用 list的接口有很多&#xff0c;我们…...

Redis遇到Hash冲突怎么办

在 Redis 中&#xff0c;哈希冲突通常是指当多个键的哈希值相同或位于相同的哈希槽中时发生冲突。Redis 通过底层的哈希表和一些冲突解决机制&#xff08;如开放地址法、链表法等&#xff09;来处理哈希冲突问题。这些通常是透明的&#xff0c;作为开发者&#xff0c;我们无需直…...

OpenCV 图形API(42)颜色空间转换-----将 BGR图像转换为 I420(YUV 4:2:0)格式函数BGR2I420()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从BGR色彩空间转换为I420色彩空间。 该函数将输入图像从BGR色彩空间转换为I420。R、G和B通道值的传统范围是0到255。 输出图像必须是8位无…...

简述Apache RocketMQ

整体架构分析 基本流程 模块特性 发送消息流程原理分析 同步发送 sync 异步发送 async 直接发送 one-way 主从同步&#xff08;HA&#xff09;机制分析 消息投递 持久化机制 RocketMQ的RPC通信 RocketMQ中Remoting通信模块的具体实现 消息的协议涉及与编码解码 消…...

AI融合SEO关键词实战指南

内容概要 随着人工智能技术的迭代升级&#xff0c;SEO关键词策略正经历从人工经验驱动向数据智能驱动的范式转变。本指南聚焦AI技术在搜索引擎优化中的系统性应用&#xff0c;通过构建多层技术框架实现关键词全生命周期管理。核心方法论涵盖语义分析引擎的构建原理、基于NLP的…...

RK3588 实现音视频对讲

RK3588 实现音视频对讲方案 RK3588是瑞芯微推出的一款高性能处理器&#xff0c;非常适合用于音视频对讲系统的开发。以下是基于RK3588实现音视频对讲的方案概述&#xff1a; 硬件架构 核心处理器&#xff1a;RK3588 (4xCortex-A76 4xCortex-A55)视频处理&#xff1a; 内置8…...

OSPF区域间路由计算

ABR&#xff1a;区域边界路由器&#xff0c;连接两个不同区域的设备就称为ABR&#xff08;不同厂商不同&#xff0c;定义很模糊&#xff09; ASBR&#xff1a;自治系统边界路由器&#xff0c;引入了外部路由&#xff0c;将不是自治系统外部的不是OSPF路由的条目变成OSPF路由条目…...

NAT、代理服务、内网穿透

NAT、代理服务、内网穿透 1、NAT1.1、NAT过程1.2、NAPT2、内网穿透3、内网打洞3、代理服务器3.1、正向代理3.2、反向代理1、NAT 1.1、NAT过程 之前我们讨论了IPv4协议中IP地址数量不充足的问题。NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。 NAT能够将…...

阿尔特拉 EP1C12F324I7N AlteraFPGA Cyclone

EP1C12F324I7N 属于 Altera Cyclone I 系列 FPGA 中的中低密度型号&#xff0c;面向成本敏感、功耗受限的嵌入式与数据通路应用。该器件采用 0.13 μm 全层铜 SRAM 工艺&#xff0c;集成约 12 060 个逻辑单元&#xff08;LE&#xff09;、239 616 位片上 RAM、249 路可编…...

解决“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接“问题

参考链接: https://blog.csdn.net/yyj12138/article/details/123073146...

QtApplets-实现应用程序单例模式,防止重复运行

QtApplets-实现应用程序单例模式&#xff0c;防止重复运行 ​ 文章目录 QtApplets-实现应用程序单例模式&#xff0c;防止重复运行摘要引言实现原理核心代码实现头文件定义实现文件 使用方法技术要点解析1. 文件锁机制2. 进程 ID 管理3. Windows 互斥量4. 跨平台兼容 注意事项…...

nodejs使用pkg打包文件

pkg配置 "pkg": {"assets": ["*.html","*.css","*.js"],"mirror": "https://npmmirror.com/mirrors/node-v8-compile-cache/"},"bin": "server.js",嵌入到exe中的资源使用assets打…...

学习笔记十六——Rust Monad从头学

&#x1f9e0; 零基础也能懂的 Rust Monad&#xff1a;逐步拆解 三大定律通俗讲解 实战技巧 &#x1f4e3; 第一部分&#xff1a;Monad 是什么&#xff1f; Monad 是一种“包值 链操作 保持结构”的代码模式&#xff0c;用来处理带上下文的值&#xff0c;并方便连续处理。 …...

Idea连接远程云服务器上的MySQL,开放云服务器端口

1.开放云服务器的3306端口 &#xff08;1&#xff09;进入到云服务器的控制台 &#xff08;2&#xff09;点击使用的云服务器 &#xff08;3&#xff09;点击 配置安全组规则 &#xff08;4&#xff09;添加规则 &#xff08;5&#xff09;开放端口 2.创建可以远程访问…...

云服务器CVM标准型S5实例性能测评——2025腾讯云

腾讯云服务器CVM标准型S5实例具有稳定的计算性能&#xff0c;CPU采用采用 Intel Xeon Cascade Lake 或者 Intel Xeon Cooper Lake 处理器&#xff0c;主频2.5GHz&#xff0c;睿频3.1GHz&#xff0c;CPU内存配置2核2G、2核4G、4核8G、8核16G等配置&#xff0c;公网带宽可选1M、3…...