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

算法学习(17)—— FloodFill算法

目录

关于FloodFill算法

部分OJ题详解

733. 图像渲染

200. 岛屿数量

695. 岛屿的最大面积

130. 被围绕的区域

417. 太平洋大西洋水流问题

529. 扫雷问题

LCR130. 衣橱整理


关于FloodFill算法

  • 爆搜,深搜,回溯的算法原理并不难,这类题目考察的就是我们的“代码能力”,就是我们能把思路转化为代码的能力
  • FloodFill算法解决的问题主要就是:“在一个有很多区域的矩阵中,找到性质相同的一个连通块”,做法也很简单,就是先遍历矩阵,当找到符合性质的第一个小区域时,对这个区域做一次深度优先遍历即可

部分OJ题详解

733. 图像渲染

733. 图像渲染 - 力扣(LeetCode)

给我们一个矩阵,然后又给了我们一个下标,要我们找到与这个下标的值相同的所有相邻的区域并把它们修改成另一个数color,下面来分析下这道题:

  • 解法很简单,就是从题目给我们的下标位置开始,上下左右依次做深度优先遍历即可,与我们上篇博客的解数独类题目类似,每次遍历后把符合要求的区域的值修改为color即可
  • 需要注意的是,如果原始颜色和目标颜色一样,就直接返回即可
class Solution 
{int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int m, n;int prev; //存原始颜色
public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {prev = image[sr][sc];m = image.size(), n = image[0].size();dfs(image, sr, sc, color);return image;}void dfs(vector<vector<int>>& image, int sr, int sc, int color){if(image[sr][sc] == color) return;image[sr][sc] =  color;for(int k = 0; k < 4; k++){int x = sr + dx[k], y = sc + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && image[x][y] == prev){dfs(image, x, y, color);}}}
};

200. 岛屿数量

200. 岛屿数量 - 力扣(LeetCode)

题目给我们一个二维矩阵,由两个值填充,1表示陆地,0表示水,题目要我们找出有多少个陆地组成的岛屿,如示例二,有3个陆地;下面来分析下这道题

  • 这道题是FloodFill算法的一个应用,题目就是要我们找出所有相通区域的数量
  • 其实有了上篇博客大量的题目练习的基础,这道题其实不难,基础算法也是深度优先遍历,然后把每个遍历后的区域用一个bool vis[][] 标记一下即可,就和“单词搜索”那道题一样
  • class Solution 
    {vector<vector<bool>> vis;int dx[4] = {0, 0, -1, 1};int dy[4] = {1, -1, 0, 0};int m, n;int ret = 0;
    public:int numIslands(vector<vector<char>>& grid) {m = grid.size(), n = grid[0].size();vis = vector<vector<bool>>(m, vector<bool>(n)); for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(!vis[i][j] && grid[i][j] == '1'){ret++;dfs(grid, i, j);}}}return ret;}void dfs(vector<vector<char>>& g, int i, int j) //作用是把与最开始位置连通的岛屿全部标记一下{vis[i][j] = true;for(int k = 0; k < 4; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && (!vis[x][y] && g[x][y] == '1')){dfs(g, x, y);}}}
    };

695. 岛屿的最大面积

695. 岛屿的最大面积 - 力扣(LeetCode)

这道题我们就不细讲算法原理了,只要把上一道题的代码改一下即可,只要每次递归时想办法计算一下递归次数,递归次数代表岛屿的面积,找到最大面积也就是递归次数最多的那一个值即可,如下代码:

class Solution 
{vector<vector<bool>> vis;int dx[4] = {0, 0, -1, 1};int dy[4] = {1, -1, 0, 0};int m, n;int a = 0;
public:int maxAreaOfIsland(vector<vector<int>>& grid) {int ret = 0;m = grid.size(), n = grid[0].size();vis = vector<vector<bool>>(m, vector<bool>(n)); for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(!vis[i][j] && grid[i][j] == 1){dfs(grid, i, j);ret = max(ret, a);a = 0;}}}return ret;}void dfs(vector<vector<int>>& g, int i, int j) //作用是把与最开始位置连通的岛屿全部标记一下{a++;vis[i][j] = true;for(int k = 0; k < 4; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && (!vis[x][y] && g[x][y] == 1)){dfs(g, x, y);}}}
};

130. 被围绕的区域

130. 被围绕的区域 - 力扣(LeetCode)

题目很好懂,主要就是“包围”是指上下左右包围的,斜着的不算,下面来分析下这道题:

  • 除了上面一个区域在边界的情况外,还有就是只要有一个连续的圈圈区域,只要有一个圈圈在边界上,那么这个大的圈圈连通区域都不要修改
  • 解法一:直接dfs,遇到边界了就回溯;但是不建议这样搞,因为代码不太好写,并且我们是在搜索过程中捕捉到边界区域的,所以我们得搞两个dfs函数,但是在dfs前我们无法知道一个联通区域是否含有边界区域,所以解法一pass
  • 解法二:正难则反;既然边界问题是这道题的难点,那么我们就先处理下边界,把与在边界的0区域相通的区域先干掉,那么剩下的自然就是在内部的没有边界的区域
  • 所以以解法二为例,先扫描边界,当扫描到边界0区域时,对其做深度优先遍历,把与边界0相通的区域全部打上标记,由于题目允许我们对内部做修改,我们就可以把边界区域修改成 ' . ',这样就不必再创建同等大小的bool vis 数组了
  • 处理完边界情况后,遇到‘ . ’,我们把它修改成0,遇到0时,我们把它修改成‘ × ’,这样就能从侧面完成值的修改
class Solution {int dx[4] = {1, -1, 0, 0};int dy[4] = {0, 0, -1, 1};int m, n;
public:void solve(vector<vector<char>>& board) {m = board.size(), n = board[0].size();// 1,把与边界O相连的连通块修改成点for (int j = 0; j < n; j++) {if (board[0][j] == 'O') dfs(board, 0, j); // 修改第一行if (board[m - 1][j] == 'O') dfs(board, m - 1, j); // 修改最后一行}for (int i = 0; i < m; i++) {if (board[i][0] == 'O') dfs(board, i, 0); // 修改第一列if (board[i][n - 1] == 'O') dfs(board, i, n - 1); // 修改最后一列}// 2,还原for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (board[i][j] == '.') board[i][j] = 'O';else if (board[i][j] == 'O') board[i][j] = 'X';}}}void dfs(vector<vector<char>>& b, int i, int j) {b[i][j] = '.';for (int k = 0; k < 4; k++) {int x = i + dx[k], y = j + dy[k];if ((x >= 0 && y >= 0) && (x < m && y < n) && b[x][y] == 'O') {dfs(b, x, y);}}}
};

417. 太平洋大西洋水流问题

417. 太平洋大西洋水流问题 - 力扣(LeetCode)

这道题描述不好懂,这里来解释一下:给我们一个矩阵,里面的数字相当于海平面高度,左边和上面代表太平洋,右边和下面代表大西洋;水可以从高往低处流,如果数字相等也可以流,然后题目就是要我们找到所有的水可以同时流向两个大洋的坐标。下面来分析下这道题:

  • 我们可以暴力枚举里面所有的点,判断能不能同时去两个大洋,能同时去就保存然后继续枚举下一个,这就是解法一,也就是直接解决问题;这种解法很简单,代码也不难写,但是有一个问题,直接枚举判断有很多重复的路径,所以,这种解法存在很大的优化空间
  • 解法二:正难则反;和上一道题一样,我们可以反过来,就是看看水向上能逆向流到什么位置,假设以示例一的图为例,从最左上角的1开始逆向推导,如下图:
  • 大西洋也是同样的道理,然后在最后,再遍历一次矩阵,找到有两种标记的坐标,然后记录一下即可
class Solution 
{int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};int m, n;
public:vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {m = heights.size(), n = heights[0].size();vector<vector<bool>> Pac(m, vector<bool>(n));vector<vector<bool>> Atl(m, vector<bool>(n));//1,先处理太平洋for(int j = 0; j < n; j++) dfs(heights, 0, j, Pac); //处理第一列for(int j = 0; j < m; j++) dfs(heights, j, 0, Pac); //处理第一行//2,再处理大西洋for(int j = 0; j < n; j++) dfs(heights, m - 1, j, Atl); //处理最后一行for(int j = 0; j < m; j++) dfs(heights, j, n - 1, Atl); //处理最后一列//3,统计vector<vector<int>> ret;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(Pac[i][j] && Atl[i][j])ret.push_back({i, j});}}return ret;}void dfs(vector<vector<int>>& h, int i, int j, vector<vector<bool>>& vis){vis[i][j] = true;for(int k = 0; k < 4; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && !vis[x][y] && h[x][y] >= h[i][j]){dfs(h, x, y, vis);}}}
};

529. 扫雷问题

529. 扫雷游戏 - 力扣(LeetCode)

这道题题意照样不好懂,下面来解释下题意:

题目给我们一个矩阵 board 和一个 坐标 click,其中矩阵由很多值:

  • ‘M’表示未挖出的地雷
  • ‘E’表示未挖出的空方块
  • ‘B’表示八个方向都没有地雷的已挖出的方块
  • 数字表示有多少地雷与这块已被挖出的方块相邻
  • ‘X’表示已挖出的地雷

click 表示我们要点击的位置,然后对于这个位置:

  • 如果这个位置有地雷('M'),就把它改为‘X’,然后游戏直接结束,直接返回盘面
  • 如果一个没有相邻地雷的空方块‘E’被挖出,将其修改为‘B’,并且所有和其相邻的未挖出方块都需要递归揭露
  • 如果一个至少与一个地雷相邻的‘E’被挖出,修改为数字,表示周围地雷的数量

最后就是如果在此次点击中,无更多方块可被揭露,则返回盘面,下面来分析下这道题 :

  •  把题目搞懂之后,就可以发现这道题其实是个模拟题,而且题目都告诉你用递归了,所以这道题的算法就是深搜
  • 当点击之后,如果周围没有地雷,就要递归地把周围地方块打开,所以在点击之后,我们需要统计下周围地雷地个数,也就是统计‘M’的个数,如果个数为0,修改成‘B’然后继续递归
  • 然后递归进入下一个区域后,继续统计地雷数量,没有地雷就全部打开;如果有地雷,就修改为地雷个个数,然后往没有地雷的空方格递归
  • 所以函数头的参数就是两个,就是给我一个坐标即可
  • 然后就是向量数组,前面几道题是4个方向,这次变成了8个方向, 我们其实不需要再搞其它的数组,只要把dx和dy扩展一下即可,具体会在代码中实现 
class Solution 
{int dx[8] = {0, 0, 1, -1, -1, -1, 1, 1};int dy[8] = {1, -1, 0, 0, -1, 1, -1, 1};int m, n;
public:vector<vector<char>> updateBoard(vector<vector<char>>& board, vector<int>& click) {m = board.size(), n = board[0].size();int x = click[0], y = click[1];if(board[x][y] == 'M') //如果直接点到地雷,就直接结束游戏{board[x][y] = 'X';return board;}    dfs(board, x, y);return board;}void dfs(vector<vector<char>>& b, int i, int j){//先统计下周围地雷的个数int count = 0;for(int k = 0; k < 8; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && b[x][y] == 'M') count++;}if(count != 0) //周围有地雷的话,就不用再递归展开了,修改为数字之后直接返回{b[i][j] = count + '0';return;}else //周围没有地雷{b[i][j] = 'B';for(int k = 0; k < 8; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && b[x][y] == 'E') dfs(b, x, y);}}}
};

LCR130. 衣橱整理

LCR 130. 衣橱整理 - 力扣(LeetCode)

给我们一个矩阵(大小为m × n)和一个数cnt,从最左上角开始,可以上下左右遍历,如果用 i 和 j 表示途中遍历的横纵坐标,那么不能遍历digit(i) + digit(j) > cnt 的格子,然后最后返回我们可以遍历的格子的数量,下面来分析下这道题:

  • 算法原理很简单,就是对左上角做一次深搜即可
class Solution 
{int ret = 0;int dx[4] = {0, 0, -1, 1};int dy[4] = {1, -1, 0, 0};int m, n, cnt;bool vis[101][101];
public:int wardrobeFinishing(int _m, int _n, int _cnt) {m = _m, n = _n, cnt = _cnt;dfs(0, 0);return ret;}void dfs(int i, int j){ret++;vis[i][j] = true;for(int k = 0; k < 4; k++){int x = i + dx[k], y = j + dy[k];if((x >= 0 && y >= 0) && (x < m && y < n) && (!vis[x][y] && check(x, y))){dfs(x, y);}}}bool check(int i, int j){int tmp = 0;while(i){tmp += i % 10;i /= 10;}while(j){tmp += j % 10;j /= 10;}return tmp <= cnt;}
};

相关文章:

算法学习(17)—— FloodFill算法

目录 关于FloodFill算法 部分OJ题详解 733. 图像渲染 200. 岛屿数量 695. 岛屿的最大面积 130. 被围绕的区域 417. 太平洋大西洋水流问题 529. 扫雷问题 LCR130. 衣橱整理 关于FloodFill算法 爆搜&#xff0c;深搜&#xff0c;回溯的算法原理并不难&#xff0c;这类题…...

Kubernetes ConfigMap的创建与使用

前提条件 拥有Kubernetes集群环境&#xff0c;可参考&#xff1a;Kubernetes集群搭建理解Kubernetes部署知识&#xff0c;可参考&#xff1a;使用Kubernetes部署第一个应用 、Deloyment控制器 ConfigMap简介 ConfigMap 是 Kubernetes&#xff08;通常简称为 K8s&#xff09;中…...

灵当CRM uploadfile.php 文件上传致RCE漏洞复现

0x01 产品简介 灵当CRM是一款专为中小企业打造的智能客户关系管理工具,由上海灵当信息科技有限公司开发并运营。广泛应用于金融、教育、医疗、IT服务、房地产等多个行业领域,帮助企业实现客户个性化管理需求,提升企业竞争力。无论是新客户开拓、老客户维护,还是销售过程管…...

老旧小区用电安全保护装置#限流式防火保护器参数介绍#

摘要 随着居民住宅区用电负荷的增加&#xff0c;用电安全问题日益突出&#xff0c;火灾隐患频繁发生。防火限流式保护器作为一种新型电气安全设备&#xff0c;能够有效预防因电气故障引发的火灾事故。本文介绍了防火限流式保护器的工作原理、技术特点及其在居民住宅区用电系统…...

在git commit之前让其自动执行一次git pull命令

文章目录 背景原因编写脚本测试效果 背景原因 有时候可以看到项目的git 提交日志里好多 Merge branch ‘master’ of …记录。这些记录是怎么产生的呢&#xff1f; 是因为在本地操作 git add . 、 git commit -m "xxxxx"时&#xff0c;没有提前进行git pull操作&…...

【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新)

文章目录 一、前言二、ShaderGraph1.什么是ShaderGraph2.在使用ShaderGraph时需要注意以下几点&#xff1a;3.优势4.项目 三、实例效果边缘发光进阶&#xff1a;带方向的菲涅尔边缘光效果裁剪进阶 带边缘色的裁剪溶解进阶 带边缘色溶解卡通阴影水波纹积雪效果不锈钢效果、冰晶效…...

单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

单机和微服务的区别&#xff0c;微服务有什么问题&#xff1f;数据一致性问题怎么解决&#xff1f;幂等问题怎么解决&#xff1f; 单机架构和微服务架构在设计理念、部署和扩展性上有显著区别。 单机架构 vs 微服务架构 单机架构 定义&#xff1a;所有组件&#xff08;前端…...

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件&#xff0c;包括移动订单进度跟踪和向客户发送营销通信&#xff08;交易和促销&#xff09;。 统一事件平台&#xff08;unified eve…...

Clickhouse(Centos)

地址信息 官网地址&#xff1a;Fast Open-Source OLAP DBMS - ClickHouse 下载地址&#xff1a;packages.clickhouse.com/rpm/stable/ 1.clickhouse-client-23.1.3.5.x86_64.rpm 2.clickhouse-common-static-23.1.3.5.x86_64.rpm 3.clickhouse-common-static-dbg-23.1.3.5.x86_…...

赛博错题本

机构抽象老师非得让我们整一个错题本&#xff0c;我寻思都学计算机了&#xff0c;还在整高中做题呢一套是什么意思呢&#xff0c;更何况考试也就一周一次&#xff0c;你整个本完完全全没有必要&#xff0c;整个赛博错题本得了。以后错题都会存在这里&#xff0c;基本上一周一更…...

【MySQL初阶】Ubuntu 环境安装 MySQL

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 Ubuntu 系统安装 MySQL 的相关内容。 如果看到最后您觉得这篇…...

【Kubernetes 指南】基础入门——Kubernetes 基本概念(二)

目录 二、Pod 1、Pod 简介 2、Pod 图示 3、nginx 容器 二、Pod 1、Pod 简介 - Kubernetes 使用 Pod 来管理容器&#xff0c;每个 Pod 可以包含一个或多个紧密关联的容器。 - Pod 是一组紧密关联的容器集合&#xff0c;它们共享 PID、IPC、Network 和 UTS namespace&#…...

Ubuntu系统下 npm install -g tauri 报错问题处理

处理在安装 Tauri 时遇到的问题&#xff0c;可以按照以下步骤进行操作 npm install -g taurinpm warn deprecated inflight1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async …...

数字逻辑(六)——下载Digital软件

Digital是一种用于设计和仿真数字逻辑电路的教育工具&#xff0c;它是免费、开源和跨平台的。这款软件十分适合新人&#xff0c;可以使用画简单的电路。 1 下载Digital软件 首先Digital的下载地址是&#xff1a; https://github.com/hneemann/Digital ​ 下载完成之后&…...

Ruby Raider使用教程

Ruby Raider是什么&#xff1f; Ruby Raider 是一款生成器和脚手架 gem&#xff0c;可让 UI 测试自动化更容易 Github链接&#xff1a;https://github.com/RaiderHQ/ruby_raider 目前支持的框架 Web自动化测试 Cucumber and Selenium Rspec and Selenium Cucumber and Wa…...

音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…...

Spring Boot 中的 @Scheduled 定时任务以及开关控制

Scheduled注解是Spring框架&#xff08;包括Spring Boot&#xff09;中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析&#xff1a; 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解&#xff0c;S…...

基于PXE与NFS共享的Ubuntu安装配置过程

假设存在服务器A、B、C 其中A为待装系统的服务器&#xff0c;DHCP&#xff08;IP池&#xff1a;192.168.0.150~192.168.0.160&#xff09;&#xff0c;假设需要安装的系统为Ubuntu 22.04 Desktop 其中B为PXE服务端服务器&#xff0c;IP: 192.168.0.100&#xff0c;这里将以Cent…...

Dots 常用操作

游戏中有多个蚂蚁群落&#xff0c;每个蚂蚁属于一个群落&#xff0c;如何设计数据结构&#xff1f; 方法1&#xff1a;为蚂蚁组件添加一个属性 ID&#xff0c;会造成逻辑中大量分支语句&#xff0c;如果分支语句逻辑不平衡可能带来 Job 调度问题&#xff0c;每个蚂蚁会有一份蚂…...

力扣-图论-20【算法学习day.70】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

ModbusTCP从站转Profinet主站案例

一. 案例背景 在复杂的工业自动化场景中&#xff0c;企业常常会采用不同品牌的设备来构建生产系统。西门子SINAMICS G120变频器以其高性能、高精度的速度和转矩控制功能&#xff0c;在电机驱动领域应用广泛。施耐德M580可编程逻辑控制器则以强大的逻辑控制和数据处理能力著称&…...

Linux 线程池

1.概念介绍 线程池是一种多线程处理形式&#xff0c;它维护着多个线程&#xff0c;这些线程处于等待状态&#xff0c;随时准备接受任务并执行。线程池的主要目的是为了提高系统的性能和资源利用率&#xff0c;避免在处理短时间任务时频繁创建和销毁线程所带来的开销。 线程池…...

计算机视觉目标检测-1

文章目录 摘要Abstract1.目标检测任务描述1.1 目标检测分类算法1.2 目标定位的简单实现思路1.2.1 回归位置 2.R-CNN2.1 目标检测-Overfeat模型2.1.1 滑动窗口 2.2 目标检测-RCNN模型2.2.1 非极大抑制&#xff08;NMS&#xff09; 2.3 目标检测评价指标 3.SPPNet3.1 spatial pyr…...

2024最新鸿蒙开发面试题合集(一)-HarmonyOS NEXT Release(API 12 Release)

1. HarmonyOS应用打包后的文件扩展名是? 打包后的文件扩展名为.hap&#xff08;HarmonyOS Ability Package&#xff09;&#xff0c;这是HarmonyOS应用的标准包格式 2. 页面和自定义组件生命周期有哪些? 页面和自定义组件生命周期说明 有Entry装饰器的component组件的生命…...

HarmonyOS NEXT 实战之元服务:静态案例效果--航空出行

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …...

详解 Python 中的json.loads和json.dumps方法:中英双语

中文版 详解 Python 中的 json.loads 和 json.dumps 方法 在 Python 的标准库中&#xff0c;json 模块用于处理 JSON 数据格式。JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;广泛用于前后端交互以及数据存储。json.loads …...

成方金融科技后端部分笔试题 - 解析

单选题 1.以下关于JAVA自动类型转换&#xff0c;描述错误的是哪一项?(B) A.byte->short B.char->short C.char->int D.float->double 2.请选择运行以下代码后&#xff0c;系统显示的内容什么?(B) public class Test {static {int x1;}static int x,y;publ…...

互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;无人机技术已经广泛应用于各个领域&#xff0c;为我们的生活带来了诸多便利。而在动植物保护工作中&#xff0c;无人机的应用更是为这一领域注入了新的活力。EasyDSS&#xff0c;作为一款集视频处理、分发、存储于一体的综…...

Vue3 中使用axios

1.安装axios、js-cookie、pinia axios命令行&#xff1a; npm install axios js-cookie命令行&#xff1a; npm install js-cookie store命令行&#xff1a; npm install pinia 2.配置文件 (1)缓存文件配置 src/plugins/auth.js const sessionCache {set (key, valu…...

【JAVA高级篇教学】第五篇:OpenFeign 微服务调用注意事项

在微服务架构中&#xff0c;OpenFeign 是一种常用的 HTTP 客户端工具&#xff0c;用于实现服务之间的调用。它提供了声明式的接口调用方式&#xff0c;大幅简化了开发工作。然而&#xff0c;在实际使用中&#xff0c;需要注意一些细节&#xff0c;尤其是在处理 GET、POST 请求和…...

Llama 3 简介(一)

目录 1. 引言 1.1 Llama 3 的简介 1.2 性能评估 1.3 开源计划 1.4 多模态扩展 ps 1. 缩放法则 2. 超额训练&#xff08;Over-training&#xff09; 3. 计算训练预算 4. 如何逐步估算和确定最优模型&#xff1f; 2. 概述 2.1 Llama 3 语言模型开发两个主要阶段 2.2…...

路由器做WPAD、VPN、透明代理中之间一个

本文章将采用家中TP-Link路由器 路由器进行配置DNS DNS理解知识本文DNS描述参考&#xff1a;网络安全基础知识&中间件简单介绍_计算机网络中间件-CSDN博客 TP LINK未知的错误&#xff0c;错误编号&#xff1a;-22025 TP-LINK 认证界面地址&#xff1a;https://realnam…...

Xcode 16 编译弹窗问题、编译通过无法,编译通过打包等问题汇总

问题1&#xff1a;打包的过程中不断提示 &#xff1a;codesign 想要访问你的钥匙串中的密钥“develop 或者distribution 证书” 解决&#xff1a;打开钥匙串&#xff0c;点击证书---显示简介---信任----改为始终信任 &#xff08;记住 &#xff1a;不能只修改钥匙的显示简介的…...

【编辑器扩展】打开持久化路径/缓存路径/DataPath/StreamingAssetsPath文件夹

代码 [MenuItem("Assets/Open Explorer/PersistentDataPath")]public static void OpenPersistentDataPath(){Application.OpenURL(Application.persistentDataPath);}[MenuItem("Assets/Open Explorer/DataPath")]public static void OpenDataPath(){Appl…...

shardingsphere分库分表项目实践1-让shardingsphere运行起来

学习新技术最快的方式就是&#xff1a; 1. 先找一个比较完善的demo跑起来 2. 弄清楚用法&#xff1a;配置、原理、使用场景 3. 移植到自己项目上&#xff0c;按照自己需求进行修改优化。 找demo项目的方法&#xff1a;优先去官方git库找&#xff0c;如果没有或者过于简单那么…...

Java预加载

预加载&#xff08;Preload&#xff09;是一种在程序运行之前预先加载所需资源或对象的优化技术&#xff0c;旨在提高程序的性能和响应速度。以下是对预加载的详细解释&#xff1a; 一、预加载的定义 预加载是指在程序实际运行之前&#xff0c;将预计会频繁使用的资源&#x…...

Vue3之状态管理Vuex

Vuex作为Vue.js的官方状态管理库&#xff0c;在大型或复杂的前端项目中扮演着至关重要的角色。本文将从Vuex的原理、特点、应用场景等多个方面进行深入解析&#xff0c;并通过代码示例展示如何在Vuex中实现特定功能。 一、Vuex原理 Vuex是一个专为Vue.js应用程序开发的状态管…...

优化 invite_codes 表的 SQL 创建语句

-- auto-generated definition create table invite_codes (id int auto_incrementprimary key,invite_code varchar(6) not null comment 邀请码&#xff0c;6位整数&#xff0c;确保在有效期内…...

ctfhub disable_functions关卡

1.CTFHub Bypass disable_function —— LD_PRELOAD 2.CTFHub Bypass disable_function —— ShellShock 3.CTFHub Bypass disable_function —— Apache Mod CGI 4.CTFHub Bypass disable_function —— 攻击PHP-FPM 5.CTFHub Bypass disable_function —— GC UAF 6.CTFHub B…...

Pikachu 漏洞练习平台 XXE漏洞学习记录

懒得自己搭建的可以直接FOFA找别人的靶场玩 FOFA "Pikachu 漏洞练习平台" 开始 随便输入个包含命名实体&#xff08;内部实体&#xff09;的xml数据&#xff08;以下代码中xxe是命名实体的实体名称&#xff09;&#xff1a; <?xml version"1.0"?>…...

机器学习基础 衡量模型性能指标

目录 1 前言 ​编辑1.1 错误率(Error rate)&精度(Accuracy)&误差(Error)&#xff1a; 1.2 过拟合(overfitting): 训练误差小&#xff0c;测试误差大 1.3 欠拟合(underfitting)&#xff1a;训练误差大&#xff0c;测试误差大 1.4 MSE: 1.5 RMSE: 1.6 MAE: 1.7 R-S…...

C#—内建接口: IEnumerable与IEnumerator接口详解

IEnumerable接口 在C#中&#xff0c;IEnumerable 是一个泛型接口&#xff0c;它表示一个可以通过 IEnumerator 迭代器进行迭代枚举的集合。这个接口是非常基础且重要的&#xff0c;因为它允许开发者以一致的方式遍历任何实现了该接口的集合&#xff0c;无论是数组、列表、自定…...

java日志框架:slf4j、jul(java.util.logging)、 log4j、 logback

SLF4J--抽象接口 SLF4J (Simple Logging Facade for Java) 是一个为各种 Java 日志框架提供简单统一接口的库。它的主要目的是将应用程序代码与具体的日志实现解耦&#xff0c;使得在不修改应用程序代码的情况下&#xff0c;可以轻松地切换不同的日志框架。 jul-to-slft4j.ja…...

SpringBoot 事务

事务是一组操作的集合, 是一个不可分割的操作.会把所有的操作作为一个整体, 一起向数据库提交或者是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败. 为什么需要事务? 我们在进行程序开发时, 也会有事务的需求. 比如转账操作: 第一步&#xff1a;A 账户 -100 元. …...

airflow docker 安装

mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…...

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容&#xff0c;方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里&#xff1a;发现正确识别和分析了链接里面的内容 链接如下&#xff1a;https://arxiv.org/pdf/2009.1…...

linux 常用 Linux 命令指南

常用 Linux 命令指南 以下是一些常用的 Linux 命令,分类并附带简单说明,适合日常操作和快速参考。 1. 文件与目录操作 ls: 列出当前目录下的文件和子目录ls -l # 显示详细信息 ls -a # 显示隐藏文件cd: 切换目录cd /path/to/directorypwd: 显示当前工作目录pwdmkdir: 创…...

《战神:诸神黄昏》游戏运行时提示找不到emp.dll怎么办?emp.dll丢失如何修复?

《战神&#xff1a;诸神黄昏》游戏运行时提示找不到emp.dll怎么办&#xff1f;emp.dll丢失的修复方法 在畅游《战神&#xff1a;诸神黄昏》这款史诗级游戏的过程中&#xff0c;如果突然遭遇“找不到emp.dll”的错误提示&#xff0c;无疑会打断你的冒险之旅。作为一名深耕软件开…...

PHP中替换某个包或某个类

在使用composer组件时&#xff0c;有时候需要对包进行一些自定义修改&#xff0c;有一些教程中写需要修改composer.json&#xff0c;然后发布到Packagist&#xff0c;但如果只是适应自己需求所作的小修改&#xff0c;其实并没有必要发布到Packagist&#xff0c;而这样做也是Pac…...

亚信安全春节14天双倍假期通告

亚信安全14天双倍假期来袭 “网安福利王”再次实至名归 2024年 8773小时&#xff0c;31582680秒 亚信安全一直驰骋于云网安世界 奋战在“安全 数智化”的壮阔征途上 如今&#xff0c;新春的脚步渐近 长达14天的春节长假 能让我们暂且放下忙碌的工作 去除班味&#xff0c…...