蓝桥杯(Java)(ing)

Java前置知识

输入流:

(在Java面向对象编程里面有提过相关知识)

// 快读快写
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
// 常见读入
static Scanner sc = new Scanner(System.in);

 Scanner:

基本类型和字符串的读取方法

  • next():查找并返回下一个完整标记(token),即下一个由分隔符界定的字符串。
  • nextLine():返回当前行的剩余部分,并移动到下一行。注意,nextLine() 在使用其他 nextXxx() 方法后可能需要单独处理换行符的问题。
  • nextInt():扫描下一个整数作为 int 类型。
  • nextLong():扫描下一个整数作为 long 类型。
  • nextDouble():扫描下一个浮点数作为 double 类型。
  • nextFloat():扫描下一个浮点数作为 float 类型。
  • nextByte():扫描下一个字节值作为 byte 类型。
  • nextShort():扫描下一个短整数值作为 short 类型。
  • nextBoolean():扫描下一个布尔值作为 boolean 类型。
  • nextBigInteger() 和 nextBigDecimal():分别扫描下一个大整数或大浮点数。

检查下一个元素是否存在的方法

  • hasNext():如果输入有另一个标记,则返回 true。
  • hasNextLine():如果有另一行输入,则返回 true。
  • hasNextInt()、hasNextLong()、hasNextDouble() 等等:检查下一个标记是否为指定类型的值。

设置和获取分隔符

  • useDelimiter(String pattern) 或 useDelimiter(Pattern pattern):设置此扫描器用于划分标记的分隔符模式。
  • delimiter():返回此扫描器当前的分隔符模式。 

其他有用的方法

  • close():关闭此扫描器。如果这个扫描器已经关闭,则调用此方法将不起作用。
  • reset():重置此扫描器,使其丢弃所有局部状态并恢复到其初始状态。
  • findWithinHorizon(Pattern pattern, int horizon):尝试找到与给定模式匹配的输入子序列。
  • skip(Pattern pattern):跳过输入中的所有输入,直到遇到与给定模式匹配的内容为止。 

注意事项

当使用 nextXXX() 方法(如 nextInt()、nextDouble() 等)读取基本类型数据后,如果接下来想用 nextLine() 读取一整行输入,应该先调用一次 nextLine() 来消耗掉之前的换行符。否则,nextLine() 可能会立即返回一个空字符串。
使用完 Scanner 后应当调用 close() 方法以释放资源,尤其是在读取文件时。 

BufferedWriter 

  • 缓冲写入:BufferedWriter 可以显著减少磁盘I/O次数,从而提高写入速度。
  • 自动换行:newLine() 方法可以根据当前平台添加正确的换行符。
  • 批量刷新:使用 flush() 方法确保所有缓冲的数据都被写入目标输出流。  

BufferedReader 

  • 按行读取:BufferedReader 的 readLine() 方法可以高效地读取整行文本。
  • 字符数组读取:如果需要逐字符处理,可以使用 read(char[] cbuf, int off, int len) 方法批量读取字符到一个字符数组中。 

注意事项:

在读取多个值时,通常会先读取一行,然后用空格分割字符串,再转换为相应的类型。
使用 trim() 方法去除多余的空白字符,特别是换行符,这在读取整数或浮点数时非常重要。 

二维字符数组读取:

在Java中读取二维字符数组,通常是通过读取每一行的字符串,然后将这些字符串转换为字符数组,并将其分配给二维字符数组的相应行。 

for (int i = 0; i < 4; i ++) {String t = sc.nextLine();g[i] = t.toCharArray();}

递归和递推

指数型枚举

题目简述:从1~n中选取任意个数字,升序排列

解题思路:

对于每一个数字都有两种选择,选或者不选,从根节点开始搜索(空节点,什么都不选),可以类似于看作为有n位数字位,你往下搜索的过程中,你都可以选择向这个空位是否填数字,当你做完最后一个选择时(对第n个数进行选择之后),就可以递归回溯了,整个搜索的过程可以画出一个递归搜索树,如下图

import java.util.Scanner;public class Main{private static final int N = 20;private static int n;private static boolean[] st = new boolean[N];public static void dfs(int u) {if (u == n + 1){for (int i = 1; i <= n; i ++)if (st[i])System.out.printf("%d ", i);System.out.println();return; // 回溯}// 选当前数字st[u] = true;dfs(u + 1);// 不选当前数字st[u] = false;dfs(u + 1);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();dfs(1);sc.close();}
}

排列型枚举

题目简述:将1~n进行排列组合

题目思路:考虑每一位可以填哪几个数,用过的数字需要标记

补充:

输入输出流

InputStream/OutputStream 类:

InputStream.read(): 读取一个字节。
OutputStream.write(byte b): 写入一个字节。

BufferedReader/BufferedWriter 类:

BufferedReader.readLine(): 读取一行。
BufferedWriter.write(String str): 写入字符串。

import java.util.Scanner;
import java.io.*;public class Main {private static final int N = 15;private static int n;private static boolean[] st = new boolean[N];private static int[] path = new int[N];private static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));private static void dfs(int u) throws IOException{// 递归出口if (u == n) {for (int i = 0; i < n; i ++)out.write(path[i] + " ");out.write("\n");    return; // 回溯}// 向第u位填数for (int i = 1; i <= n; i ++) {if (!st[i]) {path[u] = i; // 第u位填上ist[i] = true; // 代表在当前分支上 i已经被用过了dfs(u + 1); // 填下一位st[i] = false; // 恢复现场,回溯过程}}}public static void main(String[] args) throws IOException{Scanner sc = new Scanner(System.in);n = sc.nextInt();dfs(0);out.flush();out.close();}
}

简单递推 

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();if (n == 0) System.out.println(0);else if (n == 1) System.out.println("0");else if (n == 2) System.out.println("0 1");else {int a = 0, b = 1, c = 0;System.out.printf("0 1");for (int i = 3; i <= n; i ++) {c = a + b;System.out.printf(" %d", c);a = b;b = c;}}}
} 

费解的开关

解析:

每一盏灯都有两种选择 : 按或者不按。

通过递推发现规律:

                        1. 当第一行的操作方案确定时,剩余行的操作方案也确定了

                         2.前一行的状态影响下一行的操作

举例:

假设第一行选择某一种方案进行操作后的状态如图所示:

第一行的状态决定了第二行的操作(要使得第一行灯灭的格子变亮,就必须对该格子下方的方格进行操作):

 

操作完成后第一行的格子全亮 

以此类推......

思路:

1.枚举第一行格子的每一种操作方案:使用二进制表示操作方式,1表示按,0表示不按

2.枚举前四行的状态,操作下一行,使得前四行的格子全亮

3.判断最后一行格子是否全亮

题目:

你玩过“拉灯”游戏吗?

25盏灯排成一个 5×5 的方形。

每一个灯都有一个开关,游戏者可以改变它的状态。

每一步,游戏者可以改变某一个灯的状态。

游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。

我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯

给定一些游戏的初始状态,编写程序判断游戏者是否可能在 6 步以内使所有的灯都变亮

输入格式

第一行输入正整数 n,代表数据中共有 n 个待解决的游戏初始状态。

以下若干行数据分为 n组,每组数据有 5 行,每行 5 个字符。

每组数据描述了一个游戏的初始状态。

各组数据间用一个空行分隔。

输出格式

一共输出 n 行数据,每行有一个小于等于 6 的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。

对于某一个游戏初始状态,若 6 步以内无法使所有灯变亮,则输出 −1

数据范围

0<n≤500

输入样例:

3
00111
01011
10001
11010
1110011101
11101
11110
11111
1111101111
11111
11111
11111
11111

输出样例:

3
2
-1
import java.io.*;
import java.util.Scanner;public class Main {static int n;static final int N = 510;static char[][] c = new char[N][N];static int[][] g = new int[N][N];static int[][] backup = new int[N][N];static int[] dx = {0, 1, 0, -1, 0};static int[] dy = {0, 0, 1, 0, -1}; // 改变上下左右四个灯的状态private static void turn(int x, int y){for (int i = 0; i < 5; i ++){int a = x + dx[i], b = y + dy[i];if (a >= 1 && a <= 5 && b >= 1 && b <= 5){if (g[a][b] == 0) g[a][b] = 1;else g[a][b] = 0;}}}// 当前状态的最小步数private static int bfs(int[][] g) {int cnt = 0;for (int i = 1; i <= 4; i ++){for (int j = 1; j <= 5; j ++){if (g[i][j] == 0) {turn(i + 1, j);cnt ++;}}}for (int i = 1; i <= 5; i ++)if (g[5][i] == 0)return -1;return cnt;}// 将g数组重置private static void AmemcpyB(){for (int i = 1; i <= 5; i ++){for (int j = 1; j <= 5; j ++){g[i][j] = backup[i][j];}}}public static void main(String[] args) throws IOException{Scanner sc = new Scanner(System.in);n = sc.nextInt();while (true){if (n == 0) break;if (n >= 1)sc.nextLine();for (int i = 1; i <= 5; i ++){String str;str = sc.nextLine();c[i] = str.toCharArray();}for (int i = 1; i <= 5; i ++){for (int j = 1; j <= 5; j ++){g[i][j] = c[i][j - 1] - '0';backup[i][j] = g[i][j];}}int ans = 10; // 最终步数for (int op = 0; op < (1 << 5); op ++){AmemcpyB();int res = 0;for (int i = 0; i < 5; i ++){if ((op >> i & 1) == 1){turn(1, i + 1);res ++;}}int x = bfs(g);if (x != -1){res += x;ans = Integer.min(ans, res);}}if (ans > 6) ans = -1;System.out.println(ans);n --;}}
}

组合型枚举 

 AcWing 93. 递归实现组合型枚举   

输入样例:

5 3

输出样例:

1 2 3 
1 2 4 
1 2 5 
1 3 4 
1 3 5 
1 4 5 
2 3 4 
2 3 5 
2 4 5 
3 4 5 
import java.util.Scanner;public class Main {static final int N = 50;static int n, m;static boolean[] st = new boolean[N];static int[] path = new int[N];private static void dfs(int u, int last) {if (m - u > n - last) return;if (u == m + 1) {for (int i = 1; i <= m; i ++)System.out.printf("%d ", path[i]);System.out.println();return;}for (int i = last; i <= n; i ++) {if (!st[i]) {path[u] = i;st[i] = true;dfs(u + 1, i);st[i] = false;}}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);n = scanner.nextInt();m = scanner.nextInt();dfs(1, 1);scanner.close();}
}

带分数

解析:  n = a + b / c 

             经过变形得:b = nc - ac

import java.util.Scanner;public class Main {static final int N = 15;static int n;static boolean[] st = new boolean[N]; // 标记用过的数字static boolean[] backup = new boolean[N];static int res = 0;// n = a + b / c// b = nc - ac// 枚举a的全排列: u表示当前用掉的位数,a表示当前啊的值private static boolean check(int a, int c) {long b = (long)n * c - (long)a * c;if (a == 0 || b == 0 || c == 0) return false;System.arraycopy(st, 0, backup, 0, N);while (b > 0) {int x = (int)(b % 10);b /= 10;if (x == 0 || backup[x]) return false;backup[x] = true;}for (int i = 1; i <= 9; i ++) {if (!backup[i]) return false;}return true;}private static void dfs_c(int u, int a, int c) {if (u == 9) return; // 用完了if (check(a, c)) res ++;for (int i = 1; i <= 9; i ++) {if (!st[i]) {st[i] = true;dfs_c(u + 1, a, c * 10 + i);st[i] = false;}}}private static void dfs_a(int u, int a) {if (u == 9) return; // 全部用光了if (a != 0) dfs_c(u, a, 0); // 枚举可填的数for(int i = 1; i <= 9; i ++) {if (!st[i]) {st[i] = true; // 表示当前这个数字已用dfs_a(u + 1, a * 10 + i);st[i] = false; // 恢复现场}}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);n = scanner.nextInt();dfs_a(0, 0);System.out.println(res);}
}

飞行员兄弟

输入样例:
-+--
----
----
-+--
输出样例:
6
1 1
1 3
1 4
4 1
4 3
4 4 

 思路:

这一题的数据范围较小,暴力枚举每一种方案,运用二进制表示操作方案

import java.util.Scanner;public class Main {private static final int N = 4;private static char[][] g = new char[N][N];private static char[][] backup = new char[N][N];public static void Print_Char(char[][] str) {for (int i = 0; i < 4; i ++) {for (int j = 0; j < 4; j++) {System.out.printf("%c", str[i][j]);}System.out.println();}System.out.println();}public static void op_c(char[][] str, int x, int y) {if (str[x][y] == '+') str[x][y] = '-';else if (str[x][y] == '-') str[x][y] = '+';}// 改变行列public static void Change_col_row(char[][] str, int x, int y) {// 改变x这一行,y这一列for (int i = 0; i < 4; i ++) {op_c(str, x, i);op_c(str, i, y);}op_c(str, x, y);}// 判断冰箱是否打开public static boolean is_success(char[][] str) {for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {if (str[i][j] == '+') {return false;}}}return true;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = 0; i < 4; i ++) {String t = sc.nextLine();g[i] = t.toCharArray();}for (int i = 0; i < (1 << 16); i ++) {for (int k = 0; k < 4; k ++) {System.arraycopy(g[k], 0, backup[k], 0, N);}int cnt = 0;for (int k = 0; k < 16; k ++) {if (((i >> k)&1) == 1) {Change_col_row(backup, k/4, k%4);cnt ++;}	}boolean flag = is_success(backup);if (flag) {System.out.println(cnt);for (int k = 0; k < 16; k ++) {if (((i>>k)&1) == 1) {System.out.printf("%d %d\n", k / 4 + 1, k % 4 + 1);}}}}}
}

翻硬币

 输入样例1:
**********
o****o****
输出样例1:
5
输入样例2:
*o**o***o***
*o***o**o***
输出样例2:
1

import java.util.Scanner;public class Main {private static final int N = 110;private static char[] a = new char[N];private static char[] b = new char[N];public static void turn(char[] str, int x) {if (str[x] == '*') str[x] = 'o';else if (str[x] == 'o') str[x] = '*';if (str[x + 1] == '*') str[x + 1] = 'o';else if (str[x + 1] == 'o') str[x + 1] = '*';}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);a = scanner.next().toCharArray();b = scanner.next().toCharArray();int cnt = 0;for (int i = 0; i < a.length - 1; i ++) {if (a[i] != b[i]) {cnt ++;turn(a, i);}}System.out.println(cnt);}
}

二分与前缀和

基础知识:

二分查找与前缀和文章浏览阅读197次。基础算法复习总结:快速排序+归并排序+二分查找+高精度运算+前缀和与差分+双指针算法+位运算+离散化+区间合并https://blog.csdn.net/m0_73569492/article/details/133460398?spm=1001.2014.3001.5501

 机器人跳跃问题

输入样例1:
5
3 4 3 2 4
输出样例1:
4
输入样例2:
3
4 4 4
输出样例2:
4
输入样例3:
3
1 6 4
输出样例3:
3

思路:

从左边开始查找的二分问题 


import java.util.Arrays;
import java.util.Scanner;public class Main {private static final int N = 1000010;private static int[] h = new int[N];private static int n;// 判断初始能量为e是否成功public static boolean check(int e) {for (int i = 0; i < n; i ++) {e += (e-h[i]);if (e < 0) return false;if (e >= N) return true;}return true;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();int l = 0, r = N;for (int i = 0; i < n; i ++) {h[i] = sc.nextInt();}// 二分法while (l < r) {int mid = (l + r) / 2;if (check(mid)) r = mid;else l = mid + 1;}System.out.println(l);}
}

 四平方和

输入样例:
5
输出样例:
0 0 1 2
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for (int a = 0; a * a <= n; a ++) {for (int b = a; a * a + b * b <= n; b ++) {for (int c = b; a * a + b * b + c * c <= n; c ++) {int x = n - a * a - b * b - c * c;if (x < c * c) continue;else {double t = Math.sqrt((double)x); if (t - (int)t == 0) {System.out.printf("%d %d %d %d\n", a, b, c, (int)t);return;}}}}}}
}

分巧克力

输入样例:
2 10
6 5
5 6
输出样例:
2

 思路:

分出来的巧克力边长越大越好,所以可以采用从右边开始查找的二分法

import java.util.Scanner;public class Main {private static final int N = 1000010;private static int[] h = new int[N];private static int[] w = new int[N];public static boolean check(int x, int n, int k) {int sum = 0;for (int i = 1; i <= n; i ++) {sum += (h[i] / x) * (w[i] / x);}if (sum >= k) return true;return false;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int k = scanner.nextInt();for (int i = 1; i <= n; i ++) {h[i] = scanner.nextInt();w[i] = scanner.nextInt();}int l = 1, r = h[1];while (l < r) {int mid = (l + r + 1) / 2;if (check(mid, n, k))  l = mid;else r = mid - 1;}System.out.println(r);}
}

激光炸弹

输入样例:
2 1
0 0 1
1 1 1
输出样例:
1

 思路:

二维前缀和

import java.util.Scanner;public class Main {private static final int N = 5100;private static int[][] g = new int[N][N];private static int[][] s = new int[N][N];private static int n, r;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n = scanner.nextInt();r = scanner.nextInt();for (int i = 1; i <= n; i ++) {int x, y, c;x = scanner.nextInt();y = scanner.nextInt();c = scanner.nextInt();g[x + 1][y + 1] += c;}// 求二维前缀和for (int i = 1; i < N; i ++) {for (int j = 1; j < N; j ++) {s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + g[i][j];}}if (r >= N) {System.out.println(s[N - 1][N - 1]);return;}// 枚举起点int res = Integer.MIN_VALUE;for (int i = 1; i < N - r; i ++) {for (int j = 1; j < N - r; j ++) {// (i, j) 到 (i + r - 1, j + r - 1)的和int sum = s[i + r - 1][j + r - 1] - s[i - 1][j + r - 1] - s[i + r - 1][j - 1] + s[i - 1][j - 1];res = Math.max(res, sum);}}System.out.println(res);}
}

K倍区间

输入样例:
5 2
1
2
3
4
5
输出样例:
6

 思路:

注意:

cnt[(int)(s[i] % k + k) % k]

因为s[i]的数据类型为long,数组下标可能会越界变成负数,所以需要将其操作使其为非负数 

import java.util.Scanner;public class Main {private static final int N = 100010;private static int[] a = new int[N];private static long[] s = new long[N];private static int[] cnt = new int[N];public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int k = scanner.nextInt();long sum = 0;for (int i = 1; i <= n; i ++) {a[i] = scanner.nextInt();s[i] = s[i - 1] + a[i];cnt[(int)(s[i] % k + k) % k] ++;}for (int i = 0; i < k; i ++) {if (cnt[i] != 0) sum += (long)(cnt[i] - 1) * cnt[i] / 2;}System.out.println(sum + cnt[0]);}
}

数学与简单Dp

买不到的数目

 思路:

1.只有互质的情况下才有解

2.当两数互质时,根据裴蜀定理 ax+by=1

import java.util.Scanner;public class Main {private static int p, q;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);p = scanner.nextInt();q = scanner.nextInt();System.out.println(p * q - p - q);}
}

注意:如有错误,欢迎指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498063.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax数据爬取

有时我们用requests 抓取页面得到的结果&#xff0c;可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据&#xff0c;而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档&#xff0c;而浏览器中的页面是JavaScript 处理…

tcpdump 网络数据包分析工具

简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的…

手机发烫怎么解决?

在当今这个智能手机不离手的时代&#xff0c;手机发烫成了不少人头疼的问题。手机发烫不仅影响使用手感&#xff0c;长期过热还可能损害手机硬件、缩短电池寿命&#xff0c;甚至引发安全隐患。不过别担心&#xff0c;下面这些方法能帮你有效给手机 “降温”。 一、使用习惯方面…

BUUCTF Pwn ciscn_2019_es_2 WP

1.下载 checksec 用IDA32打开 定位main函数 发现了个假的后门函数&#xff1a; 看看vul函数&#xff1a; 使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造 所以使用栈迁移&#xff1a; 栈迁移需要用到leave ret 使用ROPgadget找地址&#xff1a; …

IEDA 使用auto Dev编码助手配置Deep Seek V3

文章目录 API Key的申请和创建auto Dev的下载auto Dev的安装Deep seek V3的连接配置和注意事项错误解决&#xff1a;You LLM server Key is empty API Key的申请和创建 登陆Deep Seek开放平台&#xff0c;创建API Key 并复制 auto Dev的下载 auto Dev项目地址&#xff0c;发…

vue3学习笔记(6)-生命周期、hooks

1.生命周期 <template><div><div>{{ a }}</div><div click"test"></div></div> </template> <script setup lang"ts" name"hi"> import { ref, onBeforeMount, onMounted, onBeforeUpdat…

#端云一体化开发# #HarmonyOS Next#《说书人》鸿蒙原生基于角色的对话式文本编辑开发方案

1、写在前面 过去的一百年里&#xff0c;在“编程”的这个行业诞生之初&#xff0c;人们采用面向过程的方式进行开发&#xff0c;但是&#xff0c;伴随着程序规模的日益增大&#xff0c;程序的复杂度也随之增加&#xff0c;使用结构化编程方法来管理复杂的程序逻辑变得越来越困…

【ELK】ES单节点升级为集群模式--太细了!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言准备工作1. 查看现状【单节点】2. 原节点改集群模式3. 改es配置文件&#xff0c;增加集群相关配置项4. *改docker映射的端口* 启动新节点5. docker-compose起一…

Python跨年烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…

未来网络技术的新征程:5G、物联网与边缘计算(10/10)

一、5G 网络&#xff1a;引领未来通信新潮流 &#xff08;一&#xff09;5G 网络的特点 高速率&#xff1a;5G 依托良好技术架构&#xff0c;提供更高的网络速度&#xff0c;峰值要求不低于 20Gb/s&#xff0c;下载速度最高达 10Gbps。相比 4G 网络&#xff0c;5G 的基站速度…

艾体宝方案丨全面提升API安全:AccuKnox 接口漏洞预防与修复

一、API 安全&#xff1a;现代企业的必修课 在现代技术生态中&#xff0c;应用程序编程接口&#xff08;API&#xff09;扮演着不可或缺的角色。从数据共享到跨平台集成&#xff0c;API 成为连接企业系统与外部服务的桥梁。然而&#xff0c;伴随云计算的普及与微服务架构的流行…

# 【鸿蒙开发】多线程之Worker的使用

【鸿蒙开发】多线程之Worker的使用 文章目录 【鸿蒙开发】多线程之Worker的使用前言一、Worker的介绍二、注意事项三、Worker使用示例1.新建一个Worker2.主线程使用Worker3.子线程Worker的使用 四、效果展示 前言 本文主要介绍了多线程的方法之一&#xff0c;使用Worker开启多…

leetcode 面试经典 150 题:矩阵置零

链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1]…

适用于项目经理的跨团队协作实践:Atlassian Jira与Confluence集成

适用于项目经理的跨团队协作实践&#xff1a;Atlassian Jira与Confluence集成 现代项目经理的核心职责是提供可视性、保持团队一致&#xff0c;并确保团队拥有交付出色工作所需的资源。在过去几年中&#xff0c;由于分布式团队的需求不断增加&#xff0c;项目经理这一角色已迅速…

MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】

1.打开MySQL的官网&#xff0c;选择下载(Download) MySQL[这里是图片001]https://www.mysql.com/cn/ 2.往下划点击MySQL Community(GPL)Downloads 3.要下载MySQL的jar包的选择Connector/J 4.进入后&#xff0c;根据自己的需求选择相应的版本 5.下载完成后&#xff0c;进行解压…

WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)

在一个WPF项目中要用到样条曲线&#xff0c;必须过顶点&#xff0c;圆滑后还不能太走样&#xff0c;捣鼓一番&#xff0c;发现里面颇有玄机&#xff0c;于是把我多方抄来改造的方法发出来&#xff0c;方便新手&#xff1a; 如上图&#xff0c;看代码吧&#xff1a; ----------…

北京某新能源汽车生产及办公网络综合监控项目

北京某新能源汽车是某世界500强汽车集团旗下的新能源公司&#xff0c;也是国内首个获得新能源汽车生产资质、首家进行混合所有制改造、首批践行国有控股企业员工持股的新能源汽车企业&#xff0c;其主营业务包括纯电动乘用车研发设计、生产制造与销售服务。 项目现状 在企业全…

【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》

一、联合双边滤波背景 联合双边滤波&#xff08;Joint Bilateral Filter, JBF&#xff09;是一种图像处理技术&#xff0c;它在传统的双边滤波&#xff08;Bilateral Filter, BF&#xff09;基础上进行了改进&#xff0c;通过引入一个引导图&#xff08;guidance image&#x…

VIM: Vision Mamba基于双向状态空间模型的高效视觉表示学习

这篇文章的主要内容可以概括如下&#xff1a; 背景与动机&#xff1a; 近年来&#xff0c;状态空间模型&#xff08;SSM&#xff09;在长序列建模中展现出巨大潜力&#xff0c;尤其是Mamba模型在硬件感知设计上的高效性。 然而&#xff0c;现有的SSM模型在处理视觉数据时面临…

京存SAN助力电子病历建设

引言 随着信息技术的快速发展&#xff0c;电子病历系统(EMR)已成为现代医疗的重要组成部分。电子病历不仅能够提高医疗服务的效率和质量&#xff0c;还能更好地保护患者的隐私和数据安全。作为国内领先的存储解决方案提供商&#xff0c;京存存储凭借其卓越的技术实力和丰富的实…