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

【Python 算法零基础 2.模拟 ④ 基于矩阵】

目录

基于矩阵

Ⅰ、 2120. 执行所有后缀指令

思路与算法

① 初始化结果列表

② 方向映射

③ 遍历每个起始位置

④ 记录结果

Ⅱ、1252. 奇数值单元格的数目

思路与算法

① 初始化矩阵

② 处理每个操作

③ 统计奇数元素

Ⅲ、 832. 翻转图像

思路与算法

① 水平翻转图像

② 像素值取反

③ 返回结果

Ⅳ、657. 机器人能否返回原点

思路与算法

① 定义方向映射

② 初始化位置

③ 遍历移动指令

④ 判断是否回到原点

Ⅴ、 289. 生命游戏

思路与算法

① 获取矩阵尺寸

② 创建原矩阵的副本

③ 定义八个方向的偏移量

④ 遍历每个细胞

⑤ 计算活细胞邻居数量

⑥ 应用生命规则

⑦ 直接修改原矩阵

Ⅵ、59. 螺旋矩阵 II

思路与算法

① 初始化矩阵

② 初始位置与方向

③ 填充数字

④ 方向切换逻辑

⑤ 边界检查:

⑤ 终止条件:

Ⅶ、885. 螺旋矩阵 III

思路与算法

① 方向控制

② 步长规律

③ 边界检查


相由心生,所见都是你,一切都是自己的相

                                                               —— 25.5.14

基于矩阵

        利用矩阵的数据结构,根据题目要求,实现算法,如:

Ⅰ、 2120. 执行所有后缀指令

现有一个 n x n 大小的网格,左上角单元格坐标 (0, 0) ,右下角单元格坐标 (n - 1, n - 1) 。给你整数 n 和一个整数数组 startPos ,其中 startPos = [startrow, startcol] 表示机器人最开始在坐标为 (startrow, startcol) 的单元格上。

另给你一个长度为 m 、下标从 0 开始的字符串 s ,其中 s[i] 是对机器人的第 i 条指令:'L'(向左移动),'R'(向右移动),'U'(向上移动)和 'D'(向下移动)。

机器人可以从 s 中的任一第 i 条指令开始执行。它将会逐条执行指令直到 s 的末尾,但在满足下述条件之一时,机器人将会停止:

  • 下一条指令将会导致机器人移动到网格外。
  • 没有指令可以执行。

返回一个长度为 m 的数组 answer ,其中 answer[i] 是机器人从第 i 条指令 开始 ,可以执行的 指令数目 。

示例 1:

输入:n = 3, startPos = [0,1], s = "RRDDLU"
输出:[1,5,4,3,1,0]
解释:机器人从 startPos 出发,并从第 i 条指令开始执行:
- 0: "RRDDLU" 在移动到网格外之前,只能执行一条 "R" 指令。
- 1:  "RDDLU" 可以执行全部五条指令,机器人仍在网格内,最终到达 (0, 0) 。
- 2:   "DDLU" 可以执行全部四条指令,机器人仍在网格内,最终到达 (0, 0) 。
- 3:    "DLU" 可以执行全部三条指令,机器人仍在网格内,最终到达 (0, 0) 。
- 4:     "LU" 在移动到网格外之前,只能执行一条 "L" 指令。
- 5:      "U" 如果向上移动,将会移动到网格外。

示例 2:

输入:n = 2, startPos = [1,1], s = "LURD"
输出:[4,1,0,0]
解释:
- 0: "LURD"
- 1:  "URD"
- 2:   "RD"
- 3:    "D"

示例 3:

输入:n = 1, startPos = [0,0], s = "LRUD"
输出:[0,0,0,0]
解释:无论机器人从哪条指令开始执行,都会移动到网格外。

提示:

  • m == s.length
  • 1 <= n, m <= 500
  • startPos.length == 2
  • 0 <= startrow, startcol < n
  • s 由 'L''R''U' 和 'D' 组成
思路与算法
① 初始化结果列表

用于存储每个起始位置对应的可执行指令数。

② 方向映射

通过字典将方向字符映射为坐标变化量,方便后续移动计算。

③ 遍历每个起始位置

对于每个起始位置 i,重置临时计数器 tmp 和机器人的初始位置 (x, y)。从 s[i] 开始逐个执行指令:根据指令更新机器人位置。检查新位置是否越界。若越界,立即终止循环;否则计数器加一。

④ 记录结果

将每个起始位置对应的计数器值存入结果列表。

class Solution:def executeInstructions(self, n: int, startPos: List[int], s: str) -> List[int]:res = []# 定义方向矩阵dir = {"L" : (0, -1), "R" : (0, 1), "U" : (-1, 0), "D" : (1, 0)}for i in range(len(s)):tmp = 0x, y = startPos[0], startPos[1]for j in s[i:]:x = x + dir[j][0]y = y + dir[j][1]if x < 0 or y < 0 or x >= n or y >= n:breakelse:tmp += 1res.append(tmp)return res


Ⅱ、1252. 奇数值单元格的数目

给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0

另有一个二维索引数组 indicesindices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。

对 indices[i] 所指向的每个位置,应同时执行下述增量操作:

  1. ri 行上的所有单元格,加 1 。
  2. ci 列上的所有单元格,加 1 。

给你 mn 和 indices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。

示例 1:

输入:m = 2, n = 3, indices = [[0,1],[1,1]]
输出:6
解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。
第一次增量操作后得到 [[1,2,1],[0,1,0]]。
最后的矩阵是 [[1,3,1],[1,3,1]],里面有 6 个奇数。

示例 2:

输入:m = 2, n = 2, indices = [[1,1],[0,0]]
输出:0
解释:最后的矩阵是 [[2,2],[2,2]],里面没有奇数。

提示:

  • 1 <= m, n <= 50
  • 1 <= indices.length <= 100
  • 0 <= ri < m
  • 0 <= ci < n
思路与算法
① 初始化矩阵

创建一个 m 行 n 列的矩阵 matrix,所有元素初始化为 0

② 处理每个操作

遍历 indices 中的每个操作 (x, y),其中 x 表示行索引,y 表示列索引。

③ 统计奇数元素

遍历整个矩阵,统计值为奇数的元素个数。 

class Solution:def oddCells(self, m: int, n: int, indices: List[List[int]]) -> int:matrix = [[0] * n for _ in range(m)]  # 正确初始化m行n列的矩阵for x, y in indices:# 处理行x的所有列元素for col in range(n):matrix[x][col] += 1# 处理列y的所有行元素for row in range(m):matrix[row][y] += 1# 统计奇数数量count = 0for row in matrix:for num in row:if num % 2 != 0:count += 1return count


Ⅲ、 832. 翻转图像

给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。

水平翻转图片就是将图片的每一行都进行翻转,即逆序。

  • 例如,水平翻转 [1,1,0] 的结果是 [0,1,1]

反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。

  • 例如,反转 [0,1,1] 的结果是 [1,0,0]

示例 1:

输入:image = [[1,1,0],[1,0,1],[0,0,0]]
输出:[[1,0,0],[0,1,0],[1,1,1]]
解释:首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]

示例 2:

输入:image = [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出:[[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释:首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]

提示:

  • n == image.length
  • n == image[i].length
  • 1 <= n <= 20
  • images[i][j] == 0 或 1.
思路与算法
① 水平翻转图像

遍历图像的每一行。对于每一行,使用切片操作 [::-1] 将该行元素反转,实现水平翻转。

② 像素值取反

再次遍历图像的每一行。对于每一行中的每个像素,检查其值。如果像素值为 0,则将其改为 1;如果像素值为 1,则将其改为 0,实现像素值取反。

③ 返回结果

经过上述两步操作后,返回处理后的图像矩阵。

class Solution:def flipAndInvertImage(self, image: List[List[int]]) -> List[List[int]]:n = len(image[0])for i in range(n):image[i] = image[i][::-1]for i in range(n):for j in range(n):if image[i][j] == 0:image[i][j] = 1else:image[i][j] = 0return image


Ⅳ、657. 机器人能否返回原点

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束

移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false

注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

示例 1:

输入: moves = "UD"
输出: true
解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。

示例 2:

输入: moves = "LL"
输出: false
解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。

提示:

  • 1 <= moves.length <= 2 * 104
  • moves 只包含字符 'U''D''L' 和 'R'
思路与算法
① 定义方向映射

创建字典 des,将每个移动指令(RLUD)映射为对应的坐标变化量:R(右):(1, 0) L(左):(-1, 0) U(上):(0, 1) D(下):(0, -1)

② 初始化位置

将机器人的初始坐标 (x, y) 设为 (0, 0)

③ 遍历移动指令

对于每个指令 i(如 RL 等):从字典 des 中获取对应的坐标变化量 (dx, dy)。更新当前坐标:x += dxy += dy

④ 判断是否回到原点

遍历完所有指令后,检查最终坐标 (x, y) 是否为 (0, 0)。如果是,则返回 True;否则返回 False

class Solution:def judgeCircle(self, moves: str) -> bool:des = {"R" : (1, 0), "L" : (-1, 0), "U" : (0, 1), "D" : (0, -1)}x, y = 0, 0for i in moves:x += des[i][0]y += des[i][1]return x == y == 0


Ⅴ、 289. 生命游戏

根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。

给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:

  1. 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;
  2. 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;
  3. 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡;
  4. 如果死细胞周围正好有三个活细胞,则该位置死细胞复活;

下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是 同时 发生的。给你 m x n 网格面板 board 的当前状态,返回下一个状态。

给定当前 board 的状态,更新 board 到下一个状态。

注意 你不需要返回任何东西。

示例 1:

输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]

示例 2:

输入:board = [[1,1],[1,0]]
输出:[[1,1],[1,1]]

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 25
  • board[i][j] 为 0 或 1
思路与算法
① 获取矩阵尺寸

确定二维数组的大小,用于后续遍历和边界检查。

② 创建原矩阵的副本

复制原始矩阵 board 的所有值到 copy_board,确保在更新过程中使用的是原始状态,避免影响后续细胞的计算。

③ 定义八个方向的偏移量

每个元组 (dx, dy) 表示相对于当前细胞的一个方向(上、下、左、右、对角),用于遍历周围的 8 个邻居。

④ 遍历每个细胞

对矩阵中的每个细胞 (i, j) 进行处理

⑤ 计算活细胞邻居数量

对于每个细胞 (i, j),遍历其 8 个邻居:

        计算邻居坐标 (x, y) = (i+dx, j+dy)

        检查坐标是否越界(0 ≤ x < m 且 0 ≤ y < n)。

        若邻居在有效范围内且为活细胞(值为 1),则计数器 live_neighbors 加 1。

⑥ 应用生命规则

规则 1:活细胞周围的活邻居少于 2 个 → 死亡(孤独)。

规则 2:活细胞周围的活邻居为 2 或 3 个 → 存活(保持现状)。

规则 3:活细胞周围的活邻居多于 3 个 → 死亡(拥挤)。

规则 4:死细胞周围的活邻居恰好为 3 个 → 复活(繁殖)。

⑦ 直接修改原矩阵

所有更新直接应用到原始矩阵 board 中,符合题目 “不返回任何东西” 的要求。

class Solution:def gameOfLife(self, board: List[List[int]]) -> None:"""Do not return anything, modify board in-place instead."""m = len(board)      # 行数n = len(board[0])   # 列数# 创建一个复制数组,用于存储原始状态copy_board = [[board[i][j] for j in range(n)] for i in range(m)]# 定义8个方向的偏移量directions = [(-1,-1), (-1,0), (-1,1), (0,-1), (0,1), (1,-1), (1,0), (1,1)]# 遍历每个细胞for i in range(m):for j in range(n):# 计算周围活细胞的数量live_neighbors = 0for dx, dy in directions:x = i + dxy = j + dy# 检查邻居是否在有效范围内并且是活细胞if 0 <= x < m and 0 <= y < n and copy_board[x][y] == 1:live_neighbors += 1# 应用生命游戏规则if copy_board[i][j] == 1:if live_neighbors < 2 or live_neighbors > 3:board[i][j] = 0else:if live_neighbors == 3:board[i][j] = 1


Ⅵ、59. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

示例 1:

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20
思路与算法
① 初始化矩阵

创建一个 n×n 的零矩阵 ans

② 初始位置与方向

从坐标 (0, 0) 开始,初始方向为右(di = 0)。

③ 填充数字

按当前方向尝试前进到下一个位置 (x, y)

④ 方向切换逻辑

算法通过索引 di 选择当前方向:

初始方向di = 0(向右)

转向条件:遇到边界或已填充的位置时

转向操作di = (di + 1) % 4 → 按 右→下→左→上 循环切换

⑤ 边界检查

若新位置超出矩阵范围或已被填充,则右转(di = (di + 1) % 4)。更新当前位置 (i, j) 并填充数字。

⑤ 终止条件

填充完所有  个数字后结束循环。

class Solution:def generateMatrix(self, n: int) -> List[List[int]]:DIRS = [(0, 1), (1, 0), (0, -1), (-1, 0)]  # 右下左上ans = [[0] * n for _ in range(n)]i = j = di = 0for val in range(1, n * n + 1):  # 要填入的数ans[i][j] = valx, y = i + DIRS[di][0], j + DIRS[di][1]  # 下一步的位置# 如果 (x, y) 出界或者已经填入数字if x < 0 or x >= n or y < 0 or y >= n or ans[x][y]:di = (di + 1) % 4  # 右转 90°i += DIRS[di][0]j += DIRS[di][1]  # 走一步return ans


Ⅶ、885. 螺旋矩阵 III

在 rows x cols 的网格上,你从单元格 (rStart, cStart) 面朝东面开始。网格的西北角位于第一行第一列,网格的东南角位于最后一行最后一列。

你需要以顺时针按螺旋状行走,访问此网格中的每个位置。每当移动到网格的边界之外时,需要继续在网格之外行走(但稍后可能会返回到网格边界)。

最终,我们到过网格的所有 rows x cols 个空间。

按照访问顺序返回表示网格位置的坐标列表。

示例 1:

输入:rows = 1, cols = 4, rStart = 0, cStart = 0
输出:[[0,0],[0,1],[0,2],[0,3]]

示例 2:

输入:rows = 5, cols = 6, rStart = 1, cStart = 4
输出:[[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3],[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1,1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

提示:

  • 1 <= rows, cols <= 100
  • 0 <= rStart < rows
  • 0 <= cStart < cols
思路与算法
① 方向控制

与螺旋矩阵 I 类似,按右→下→左→上循环切换方向。

② 步长规律

每次转向后,步长递增 1(第一次向右走 1 步,下一次向下走 1 步,再向左走 2 步,向上走 2 步,依此类推)。

③ 边界检查

每走一步,检查坐标是否在矩阵内,若是则记录。

class Solution:def spiralMatrixIII(self, rows: int, cols: int, rStart: int, cStart: int) -> List[List[int]]:DIRS = [(0, 1), (1, 0), (0, -1), (-1, 0)]  # 右、下、左、上res = [[rStart, cStart]]  # 起始点i, j = rStart, cStartsteps = 0  # 当前方向的步数di = 0     # 方向索引while len(res) < rows * cols:# 每次转向后,步数递增1(偶数次转向时增加)if di % 2 == 0:steps += 1# 沿当前方向走steps步for _ in range(steps):i += DIRS[di][0]j += DIRS[di][1]# 检查是否在矩阵内if 0 <= i < rows and 0 <= j < cols:res.append([i, j])# 转向di = (di + 1) % 4return res

    相关文章:

    【Python 算法零基础 2.模拟 ④ 基于矩阵】

    目录 基于矩阵 Ⅰ、 2120. 执行所有后缀指令 思路与算法 ① 初始化结果列表 ② 方向映射 ③ 遍历每个起始位置 ④ 记录结果 Ⅱ、1252. 奇数值单元格的数目 思路与算法 ① 初始化矩阵 ② 处理每个操作 ③ 统计奇数元素 Ⅲ、 832. 翻转图像 思路与算法 ① 水平翻转图像 ② 像素值…...

    2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2)

    2025年PMP 学习十三 第9章 项目资源管理&#xff08;9.1,9.2&#xff09; 序号过程过程组9.1规划资源管理规划9.2估算活动资源规划9.3获取资源执行9.4建设团队执行9.5管理团队执行9.6控制资源监控 文章目录 2025年PMP 学习十三 第9章 项目资源管理&#xff08;9.1,9.2&#xf…...

    IEEE802.16 标准介绍

    IEEE802.16 标准又称为IEEE Wireless MAN 空中接口标准&#xff0c;对工作于不同频带的无线接入系统空中接口进行了规范。由于它所规定的无线系统覆盖范围在公里量级&#xff0c;因此802.16 系统主要应用于城域网。 根据使用频带高低的不同&#xff0c;802.16 系统可分为应用于…...

    Nginx配置与应用案例详解

    Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管和动态内容转发。以下是对 Nginx 配置的详细解析及常见应用场景案例。 一、Nginx 配置文件结构 Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,包含以下核心模块: 全局块 (Main Contex…...

    Hadoop-HDFS-Packet含义及作用

    在 HDFS&#xff08;Hadoop Distributed File System&#xff09;中&#xff0c;Packet 是数据读写过程中用于数据传输的基本单位。它是 HDFS 客户端与数据节点&#xff08;DataNode&#xff09;之间进行数据交互时的核心概念&#xff0c;尤其在写入和读取文件时&#xff0c;Pa…...

    作业帮Android面试题及参考答案

    简单描述 Java 类加载机制 Java 类加载机制是将类的字节码载入 JVM 并生成对应的 Class 对象的过程&#xff0c;主要包括以下几个阶段。 加载是类加载的第一个阶段&#xff0c;通过类的全限定名来获取其字节码流&#xff0c;然后将字节码流解析成方法区中的运行时数据结构&…...

    分布式1(cap base理论 锁 事务 幂等性 rpc)

    目录 分布式系统介绍 一、定义与概念 二、分布式系统的特点 三、分布式系统面临的挑战 四、分布式系统的常见应用场景 CAP 定理 BASE 理论 BASE理论是如何保证最终一致性的 分布式锁的常见使用场景有哪些&#xff1f; 1. 防止多节点重复操作 2. 资源互斥访问 3. 分…...

    如何下载 MySQL 驱动 JAR 包

    下载 MySQL 驱动 JAR 包的 4 种方式&#xff1a; 官网下载&#xff1a;从 MySQL 官网 下载对应版本的 ZIP 包Maven&#xff1a;在 pom.xml 添加 mysql-connector-java 依赖Gradle&#xff1a;在 build.gradle 使用 implementation mysql:mysql-connector-java:8.0.x直接下载&a…...

    unordered_map和unordered的介绍和使用

    目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 unordered_map的定义方式 unordered_map接口的使用 unordered_map的容量 unordered_map的迭代器 unordered_map的元素访问 unordered_map的查询 unordered_map的修改操作 unordered_multimap u…...

    【原创】使用阿里云存放一个临时共享的文件

    在某些场合&#xff0c;需要临时将一个文件存储到一个可被公网访问的地方&#xff0c;某个服务需要访问一下这个文件。这个文件基本上就是一次寿命&#xff0c;也就是你上传一下&#xff0c;然后被访问一下&#xff0c;这个文件的寿命就结束了。 对于这种需求&#xff0c;自建…...

    C++学习细节回顾(汇总二)

    一.初始化列表相关 1.初始化顺序受申明顺序影响 2.在必要时可以部分不采用初始化列表&#xff0c;避免受特性1影响 二.非类型模板参数 template< class T , size_t N 10 > 三.特化–特殊化处理 template< class T > bool less(T left , T right) { return left&…...

    【行为型之访问者模式】游戏开发实战——Unity灵活数据操作与跨系统交互的架构秘诀

    文章目录 &#x1f9f3; 访问者模式&#xff08;Visitor Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;游戏物品系统&#xff09;1. 定义元素与访问者接口2. 实现具体元素类3. 实现具体访问者4. 对象结构管理5. 客户端使用 …...

    ubuntu系统安装配置adb工具

    获取adb tools 1. 下载最新版&#xff08;替换链接中的版本号&#xff09; wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip2. 解压到当前目录 unzip platform-tools-latest-linux.zip3. 移动文件到系统目录 sudo mv platform-tools /usr/…...

    基于Python的量化交易实盘部署与风险管理指南

    基于Python的量化交易实盘部署与风险管理指南 一、模拟交易与参数优化 1.1 券商API接入与模拟交易 在量化交易落地前&#xff0c;模拟交易是策略验证的“安全沙箱”&#xff0c;其核心价值在于用零成本环境暴露策略缺陷。以股票市场为例&#xff0c;同花顺与通达信模拟盘接口…...

    MySQL 入门大全:数据类型

    &#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

    WPF Datagrid 数据加载和性能

    这篇文章并非讨论 WPF Datagrid 的性能数据&#xff0c;而只是简单介绍一下为了使其性能良好&#xff0c;你需要注意哪些方面。我不太想使用性能分析器来展示实际数据&#xff0c;而是尽可能地使用了 Stopwatch 类。这篇文章不会深入探讨处理海量数据的技术&#xff0c;例如分页…...

    商城小程序源码介绍

    今天要为大家介绍一款基于ThinkPHP、FastAdmin以及UniApp开发的商城小程序源码&#xff0c;这款源码在设计和功能上都有不俗的表现&#xff0c;非常适合想要搭建线上商城的开发者。 该源码采用了ThinkPHP作为后端框架&#xff0c;利用其强大的性能和灵活性&#xff0c;保障了系…...

    【大模型】OpenManus 项目深度解析:构建通用 AI Agent的开源框架

    OpenManus 项目深度解析&#xff1a;构建通用 AI Agent的开源框架 一、项目概述项目特点 二、项目运行方式与执行步骤&#xff08;一&#xff09;环境准备方法 1&#xff1a;使用 conda方法 2&#xff1a;使用 uv&#xff08;推荐&#xff09; &#xff08;二&#xff09;配置&…...

    数据科学和机器学习的“看家兵器”——pandas模块 之一

    目录 pandas 模块介绍 4.1 pandas 数据结构 一、课程目标 二、Series 对象介绍 三、DataFrame 对象介绍 四、Series 和 DataFrame 在具体应用中的注意事项 (一)Series 注意事项 (二)DataFrame 注意事项 五、实战案例 案例 1:学生成绩分析 案例 2:销售数据分析 案例 3:股…...

    Linux服务之lvs集群与dr模式部署

    目录 一.lvs相关概述 1.lvs集群的工作模式 2.lvs调度算法 3.ipvsadm工具 二.DR模式部署 一.lvs相关概述 1.lvs集群的工作模式 lvs-nat&#xff1a;修改请求报文的目标IP,多目标IP的DNAT lvs-dr&#xff1a;操纵封装新的MAC地址&#xff08;直接路由&#xff09;lvs-tu…...

    LVS负载均衡群集和keepalive

    目录 一. 集群概述 1.1 集群的定义 1.2 集群的分类 1. 高可用集群 HA 2. 高性能运输群集 HPC 3.负载均衡群集 LB 4. 分布式存储集群 二. LVS概述 2.1 LVS的定义 2.2 LVS的工作原理 2.3 LVS 的三种工作模式 2.4 LVS 三种工作模式的对比 2.5 LVS 调度算法 1. 静态…...

    MCU裸机程序如何移植到RTOS?

    目录 1、裸机编程 2、实时操作系统 3、移植裸机程序到RTOS的步骤 步骤1&#xff1a;分析裸机代码 步骤2&#xff1a;选择并设置RTOS环境 步骤3&#xff1a;设计任务架构 步骤4&#xff1a;实现任务间通信 步骤5&#xff1a;处理硬件交互 步骤6&#xff1a;测试和调试 …...

    从入门到精通:阿里云/腾讯云服务器深度优化实践

    在当今数字化浪潮中&#xff0c;云计算已成为企业IT基础设施的核心选择。作为国内云计算领域的两大头部厂商&#xff0c;阿里云与腾讯云凭借各自的技术积累和生态优势&#xff0c;持续吸引着不同行业用户的关注。本文将带您从基础配置到高级优化&#xff0c;全面掌握阿里云/腾讯…...

    机器学习基础课程-5-课程实验

    5.1 实验介绍 实验背景 在这个项目中&#xff0c;您将使用1994年美国人口普查收集的数据&#xff0c;选用几个监督学习算法以准确地建模被调查者的收入。然后&#xff0c;您将根据初步结果从中选择出最佳的候选算法&#xff0c;并进一步优化该算法以最好地建模这些数据。你的目…...

    生成对抗网络(Generative Adversarial Networks ,GAN)

    生成对抗网络是深度学习领域最具革命性的生成模型之一。 一 GAN框架 1.1组成 构造生成器&#xff08;G&#xff09;与判别器&#xff08;D&#xff09;进行动态对抗&#xff0c;实现数据的无监督生成。 G&#xff08;造假者&#xff09;&#xff1a;接收噪声 ​&#xff0c…...

    Linux——CMake的快速入门上手和保姆级使用介绍、一键执行shell脚本

    目录 一、前言 二、CMake简介 三、CMake与其他常见的构建、编译工具的联系 四、CMake入门 1、CMake的使用注意事项 2、基本的概念和术语 3、CMake常用的预定义变量 4、CMakeLists.txt文件的基本结构 五、上手实操 1、示例 ​编辑 2、一个正式的工程构建 2.1基本构…...

    GAN简读

    Abstract 我们提出了一个通过同时训练两个模型的对抗过程来评估生成模型的新框架:一个生成模型 G G G用来捕捉数据特征,还有一个用于估计这个样本是来自训练样本还是 G G G的概率的判别模型 D D D, G G G的训练过程是最大化 D D D犯错的概率。这个框架就相当于一个minimax tw…...

    Jsp技术入门指南【十四】实现基于MySQL+JDBC+JSP数据库验证的登录界面与登录跳转功能

    Jsp技术入门指南【十四】实现基于MySQLJDBCJSP数据库验证的登录界面与登录跳转功能 前言第一步&#xff1a;加入驱动包与Maven第二步、创建并导入web库第三步、连接本地数据库的java代码核心代码讲解 第四步、创建数据库第五步、导入并修改JSP登录文件 前言 在之前的博客中&am…...

    【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)

    神经网络参数初始化详解 在构建神经网络时&#xff0c;参数的初始化虽然只是一个开端步骤&#xff0c;但它对网络最终的训练效果和收敛速度有着至关重要的影响。本文将结合一张手绘风格图&#xff0c;深入浅出地讲解神经网络初始化的背景、方法及其数学依据&#xff0c;帮助大…...

    如何设置FFmpeg实现对高分辨率视频进行转码

    使用FFmpeg进行高分辨率视频转码的步骤如下&#xff1a;首先&#xff0c;确保FFmpeg支持GPU加速&#xff0c;通过命令ffmpeg -hwaccels检查CUDA支持。接着&#xff0c;下载样本视频进行测试&#xff0c;例如使用wget命令获取Blender基金会的样本视频。然后&#xff0c;使用FFmp…...

    2025tg最新免费社工库机器人

    中情局社工库 https://t.me/ZhongQingJuSGKBOT?start07c662145624d195aa098f0d39e6451d 小孩哥社工库 http://t.me/xiaohaigeSGK1_bot?startWGGVVrMgQiBslNE 冰墩墩个户机器人 t.me/bingdundung… 维基百科社工库 https://t.me/WikiSGKBot?start0b9d27c2e91b AI社工库…...

    ps向pl传数据axi-4-lite

    定义一个axi-4-lite ip,引出管脚 可以看到&#xff0c;ip的地址是这个 因为在定义axi-4-lite ip的时候定义了4个寄存器&#xff0c;其中只把第2个引出来&#xff0c;所以只需要往第2个写数据就可 即只有 (u32)(0x800000004) angle; 这个是有效的 这时pl就可以收到angle的值…...

    scikit-learn在无监督学习算法的应用

    哈喽&#xff0c;我是我不是小upper~ 前几天&#xff0c;写了一篇对scikit-learn在监督学习算法的应用详解&#xff0c;今天来说说关于sklearn在无监督算法方面的案例。 稍微接触过机器学习的朋友就知道&#xff0c;无监督学习是在没有标签的数据上进行训练的。其主要目的可能…...

    聊聊JetCache的缓存构建

    序 本文主要研究一下JetCache的缓存构建 invokeWithCached com/alicp/jetcache/anno/method/CacheHandler.java private static Object invokeWithCached(CacheInvokeContext context)throws Throwable {CacheInvokeConfig cic context.getCacheInvokeConfig();CachedAnnoC…...

    【ios越狱包安装失败?uniapp导出ipa文件如何安装到苹果手机】苹果IOS直接安装IPA文件

    问题场景&#xff1a; 提示&#xff1a;ipa是用于苹果设备安装的软件包资源 设备&#xff1a;iphone 13(未越狱) 安装包类型&#xff1a;ipa包 调试工具&#xff1a;hbuilderx 问题描述 提要&#xff1a;ios包无法安装 uniapp导出ios包无法安装 相信有小伙伴跟我一样&…...

    浅析 Golang 内存管理

    文章目录 浅析 Golang 内存管理栈&#xff08;Stack&#xff09;堆&#xff08;Heap&#xff09;堆 vs. 栈内存逃逸分析内存逃逸产生的原因避免内存逃逸的手段 内存泄露常见的内存泄露场景如何避免内存泄露&#xff1f;总结 浅析 Golang 内存管理 在 Golang 当中&#xff0c;堆…...

    仿射变换 与 透视变换

    仿射变换 与 透视变换 几种变换之间的关系 1、缩放 Rescale 1&#xff09;变换矩阵 缩放变换矩阵&#xff0c;形为 &#xff1a; &#xff0c; 其中&#xff1a; 、 为 x轴 和 y轴的缩放因子&#xff0c;即 宽高的缩放因子 图像中的每一个像素点 (x, y)&#xff0c;经过矩阵…...

    Vue.js---嵌套的effect与effect栈

    4.3嵌套的effect与effect栈 1、嵌套的effect effect是可以发生嵌套的 01 effect(function effectFn1() { 02 effect(function effectFn2() { /* ... */ }) 03 /* ... */ 04 })有这么一段代码&#xff1a; 01 // 原始数据 02 const data { foo: true, bar: true } 03 /…...

    jQuery知识框架

    一、jQuery 基础 核心概念 $ 或 jQuery&#xff1a;全局函数&#xff0c;用于选择元素或创建DOM对象。 链式调用&#xff1a;多数方法返回jQuery对象&#xff0c;支持连续操作。 文档就绪事件&#xff1a; $(document).ready(function() { /* 代码 */ }); // 简写 $(function…...

    【Java学习笔记】hashCode方法

    hashCode方法 注意&#xff1a;C要大写 作用&#xff1a;返回对象的哈希码值&#xff08;可以当作是地址&#xff0c;真实的地址在 Java 虚拟机上&#xff09;&#xff0c;支持此方法是为了提高哈希表的性能 底层实现&#xff1a;实际上&#xff0c;由Object类定义的hashCod…...

    [思维模式-37]:什么是事?什么是物?什么事物?如何通过数学的方法阐述事物?

    一、基本概念 1、事&#xff08;Event) “事”通常指的是人类在社会生活中的各种活动、行为、事件或情况&#xff0c;具有动态性和过程性&#xff0c;强调的是一种变化、发展或相互作用的流程。 特点 动态性&#xff1a;“事”往往涉及一系列的动作、变化和发展过程。例如&a…...

    STM32-USART串口通信(9)

    一、通信接口介绍 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统。 当STM32想要实现一些功能&#xff0c;但是需要外挂一些其他模块才能实现&#xff0c;这就需要在两个设备之间连接上一根或多跟通信线&#xff0c;通过通信线路发送或者接…...

    【内网渗透】——NTML以及Hash Relay

    【内网渗透】——NTLM以及Hash Relay 文章目录 【内网渗透】——NTLM以及Hash Relay[toc]前情提要1.NTML网络认证机制1.1NTML协议1.2NET NTMLv21.3NTML的认证方式1.4NTLM hash的生成方法&#xff1a; 2.PTH&#xff08;pass the hash)2.1原理2.2漏洞原理2.3实验环境2.4攻击过程…...

    速查 Linux 常用指令 II

    目录 一、网络管理命令1. 查看和配置网络设备&#xff1a;ifconfig1&#xff09;重启网络命令2&#xff09;重启网卡命令 2. 查看与设置路由&#xff1a;route3. 追踪网络路由&#xff1a;traceroute4. 查看端口信息和使用情况1&#xff09;netstat 命令2&#xff09;lsof 命令…...

    基于 GPUGEEK平台进行vLLM环境部署DeepSeek-R1-70B

    选择 GPUGEEK 平台的原因 算力资源丰富&#xff1a;GPUGEEK 提供多样且高性能的 GPU 资源&#xff0c;像英伟达高端 GPU 。DeepSeek - R1 - 70B 模型推理计算量巨大&#xff0c;需要强大算力支持&#xff0c;该平台能满足其对计算资源的高要求&#xff0c;保障推理高效运行。便…...

    深入理解ThingsBoard的Actor模型

    1、ThingsBoard系统中定义了哪些Actor ✅ ThingsBoard Actor 创建机制与作用对照表: Actor 类型 何时创建 由谁创建 是否缓存 作用描述 SystemActor 系统启动时 DefaultActorService / ActorSystem ✅ 是 ★ ThingsBoard 平台服务级别管理器:负责创建所有的Actor AppActor...

    虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property

    虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Qt与UE中的Meta和Property1.Qt 中的 Meta&#xff08;元对象系统&#xff09;1.1 主要功能1.2 如何实现1.2.1 例子1.2.2 访问 meta 信息 2.UE5 中的 Meta&#xff…...

    技术中台-核心技术介绍(微服务、云原生、DevOps等)

    在企业数字化中台建设中&#xff0c;技术中台是支撑业务中台、数据中台及其他上层应用的底层技术基础设施&#xff0c;其核心目标是提供标准化、可复用的技术能力&#xff0c;降低业务开发门槛&#xff0c;提升系统稳定性与扩展性。技术中台的技术栈需覆盖从开发、运维到治理的…...

    attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第二维度,第三维度

    attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第1 维度,第二维度 attention_weights = torch.ones_like(prompt_embedding[:, :, 0]) 这行代码的作用是创建一个与 prompt_embedding[:, :, 0] 形状相同且所有元素都为 1 的张量,它用于初始化…...

    2025年中国DevOps工具选型指南:主流平台能力横向对比

    在数字化转型纵深发展的2025年&#xff0c;中国企业的DevOps工具选型呈现多元化态势。本文从技术架构、合规适配、生态整合三个维度&#xff0c;对Gitee、阿里云效&#xff08;云效DevOps&#xff09;、GitLab CE&#xff08;中国版&#xff09;三大主流平台进行客观对比分析&a…...