1️⃣ 核心组件说明
A. Entity Layer (实体层)
模块包含的核心实体类:
- Post - 文章主实体(存储标题、内容、作者ID、状态等核心信息)
- Category - 文章分类(如技术、生活等分类定义)
- Tag - 文章标签(用于文章的精细化分类)
- PostCategory - 文章与分类的关联表(多对多关系)
- PostTag - 文章与标签的关联表(多对多关系)
2025/10/14大约 4 分钟
模块包含的核心实体类:
我们创建的实体类:
好的!让我为你详细介绍我们已经完成的 Auth 模块的技术架构和实现原理:
⼀幅4*4的图像, 灰度值序列如下.请根据课堂上所讲代码,写出构造解的S数组、l数组和b数组, 追踪解的S数组. 需要体现做题过程,如:每⼀轮i的循环写出内部j循环的前两次和最后两次, 内部循环少于等于四次的需要全部j的计算过程
给定:
v = {8, 10, 6, 3, 7, 2}
w = {4, 6, 2, 2, 5, 1}
c = 12
定义 m[i,j]
:从前 i
个物品中选择,总体积不超过 j
的最大价值。
j < w[i-1]
:m[i,j] = m[i-1,j]
(不能选择第 i
个物品)m[i,j] = max(m[i-1,j], m[i-1,j-w[i-1]] + v[i-1])
(选择或不选择第 i
个物品)在构建 c 数组时,不再维护额外的 b 数组来记录方向。 在需要回溯寻找具体的最长公共子序列时,直接通过比较 c[i] [j]、c[i-1] [j] 和 c[i] [j-1] 的值来判断当前字符是否属于最长公共子序列,以及应该向哪个方向回溯。
FUNCTION LCS(const string s1, const string s2):
m = s1.size() // 获取字符串 s1 的长度
n = s2.size() // 获取字符串 s2 的长度
dp[m+1][n+1] // 初始化动态规划表
for i from 1 to m:
for j from 1 to n:
if s1[i-1] == s2[j-1]: // 如果当前字符相同
dp[i][j] = dp[i-1][j-1] + 1 // 当前位置的 LCS 长度等于左上方的值加 1,表示找到了一个公共子序列字符
else:
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) // 如果当前字符不同,当前位置的 LCS 长度取上方和左方的最大值,表示不考虑当前字符
end for
end for
return dp[m][n] // 返回最终的最长公共子序列长度,位于动态规划表的右下角
END FUNCTION
FUNCTION binary_search1(arr[], low, high, x):
WHILE low <= high: # 持续搜索直到搜索区间无效
mid = (low + high) >> 1 # 位运算计算中间索引 (等价于/2但更快)
IF arr[mid] == x: # 找到目标元素
PRINT "Found at index " + mid
RETURE
ELSE IF arr[mid] < x: # 目标在右半区
low = mid + 1 # 调整左边界
ELSE: # 目标在左半区
high = mid - 1 # 调整右边界
END WHILE
PRINT "Element not found" # 搜索空间耗尽未找到
RETURE
# 时间复杂度 O(log n),空间复杂度 O(1)