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

python 02 List

Python 1-14 列表

第一课

1437. 是否所有 1 都至少相隔 k 个元素

class Solution:def kLengthApart(self, nums: List[int], k: int) -> bool:cnt = k # 处理第一个 1for i, x in enumerate(nums):if x == 1:if cnt < k: return Falsecnt = 0 # 遇到 1 从新记数else: cnt += 1return True# left = -(k + 1) # 处理第一个 1# for i, x in enumerate(nums):#     if x == 1:#         if i - left <= k: return False#         left = i # 记录 1 的位置# return True

997. 找到小镇的法官

有向图中节点的入度和出度的概念。在有向图中,一个节点的入度是指向该节点的边的数量;而一个节点的出度是从该节点出发的边的数量。

class Solution:def findJudge(self, n: int, trust: List[List[int]]) -> int:        if n == 1: return 1d = [0] * (n + 1) # 列表的元素全是 0,共 n + 1 元素。for a, b in trust:d[b] += 1 # 如果被信任加一d[a] -= 1 # 信任别人减一for i, x in enumerate(d):if x == n - 1: return i# if n - 1 in arr: return arr.index(n - 1)return -1

26. 删除有序数组中的重复项

class Solution:def removeDuplicates(self, nums: List[int]) -> int:left = 1n = len(nums)for i in range(1, n):if nums[i] != nums[i - 1]:nums[left] = nums[i]left += 1return left

第二课

★1436. 旅行终点站

知识点: 列表 list,append。

class Solution:def destCity(self, paths: List[List[str]]) -> str:start, end = [], []for s, e in paths:start.append(s)end.append(e)for x in end:if x not in start:return x

1299. 将每个元素替换为右侧最大元素

知识点: 逆序遍历

class Solution:def replaceElements(self, arr: List[int]) -> List[int]:n, m = len(arr), -1 # m 记录最大值for i in range(n - 1, -1, -1): # 逆序遍历m, arr[i] = max(arr[i], m), m # 原地修改,可定义列表。return arr

1394. 找出数组中的幸运数

class Solution:def findLucky(self, arr: List[int]) -> int:q = [0] * 501 # 统计个数# q[0] = -1 # 去掉 0for x in arr:  # 统计每个数的个数q[x] += 1# res = -1 # 先假设没有# for i, x in enumerate(q[1:], 1):            #     if i == x: res = i# return res for x in range(len(q) - 1, 0, -1): # 逆序遍历if x == q[x]: return xreturn -1

python 内置函数 enumerate()

将一个 可遍历 iterable 数据对象(如 list、tuple 或 str)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
函数返回一个 enumerate 对象,是一个 可迭代对象。具体元素值可通过遍历取出。

语法:

enumerate(sequence, [start=0])

参数:
sequence – 一个序列、迭代器或其他支持迭代对象。是一个可迭代对象。
start – 下标起始位置。是一个可选参数,表示索引从几开始计数。

返回 enumerate(枚举) 对象。

a = [1,2,3,4]
# 从第二个元素开始,下标从 1 开始
for i, x in enumerate(a[1:], 1):print(i, x)
# 1 2
# 2 3
# 3 4

**知识点:**推导式,生成器,next。
教程:Python 推导式

class Solution:def destCity(self, paths: List[List[str]]) -> str:citiesA = {path[0] for path in paths}return next(path[1] for path in paths if path[1] not in citiesA)

第三课

1700. 无法吃午餐的学生数量

class Solution:def countStudents(self, students: List[int], sandwiches: List[int]) -> int:# n = 0# while n < len(students):#     if students[0] == sandwiches[0]:#         students.pop(0)#         sandwiches.pop(0)#         n = 0#     else:#         students = students[1:] + [students[0]]#         n += 1# return ncnt = [0, 0]  # 统计喜欢圆形和方形三明治学生数量for i in students: cnt[i] += 1for i in sandwiches:    # 依次取出栈顶三明治,直到没有学生喜欢 i。if cnt[i] == 0: breakcnt[i] -= 1return sum(cnt)

▲1089. 复写零

class Solution:def duplicateZeros(self, arr: List[int]) -> None:"""Do not return anything, modify arr in-place instead."""## 方法一:insert pop# i = 0# while i < len(arr):#     if not arr[i]:#         arr.pop()#         arr.insert(i, 0)#         i += 1#     i += 1## 方法二:添加标记       n = len(arr)i = j = 0while j < n:if arr[i] == 0: j += 1i += 1j += 1i -= 1    # i 回到最后一次合法的位置j -= 1    # j 同理,但 j 仍可能等于 n(例如输入 [0])while i >= 0:if j < n: arr[j] = arr[i]if arr[i] == 0:j -= 1arr[j] = arr[i]i -= 1j -= 1

904. 水果成篮

算法:双指针

class Solution:def totalFruit(self, fruits: List[int]) -> int:arr = [0] * len(fruits) # 0 <= 种类 < len(fruits) <= 100000left = 0 # 左边界k = 0 # 记录区间包含的种类for i, x in enumerate(fruits):if arr[x] == 0: k += 1 # 遇到一种arr[x] += 1 # 计数if k > 2:  # 种类 > 2 左边同步收缩 否则右边单边扩张y = fruits[left] arr[y] -= 1 if arr[y] == 0: k -= 1 left += 1return len(fruits) - left # n - 1 - left + 1

第四课

390. 消除游戏

class Solution:def lastRemaining(self, n: int) -> int:# 方法一:模拟 转成 list 会超时arr = range(1, n + 1) # 可迭代对象,用一个生成一个while len(arr) > 1:arr = arr[1::2][::-1]return arr[0]# 方法二flag, a, step = True, 1, 1while n > 1:           if flag or n & 1: a += step           flag = not flagn >>= 1step <<= 1        return a# 方法三:递归return 1 if n == 1 else 2 * (n // 2 + 1 - self.lastRemaining(n // 2))

1652. 拆炸弹

class Solution:def decrypt(self, code: List[int], k: int) -> List[int]:n = len(code)ans = [0] * nif k == 0: return ansres = []code += codeif k > 0:l, r = 1, kelse:l, r = n + k, n - 1w = sum(code[l:r+1])for i in range(n):res.append(w)w -= code[l]w += code[r + 1]l, r = l + 1, r + 1return res

2516. 每种字符至少取 K 个

第五课

88. 合并两个有序数组

1768. 交替合并字符串

class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:i, j = m - 1, n - 1for k in range(m+n-1,-1,-1):if j == -1: break # 如果 nums2 移完了结束if i == -1 or nums1[i] < nums2[j]:  # 如果 nums1 移完了,接着移 num2nums1[k] = nums2[j]j -= 1else:nums1[k] = nums1[i]i -= 1

2022. 将一维数组转变成二维数组

class Solution:def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:return [original[i:i + n] for i in range(0,  len(original), n)] if len(original) == m * n else []

915. 分割数组

class Solution:def partitionDisjoint(self, nums: List[int]) -> int:n = len(nums)# 三次遍历# left, right = [0] * n, [0] * n# left[0], right[-1] = nums[0], nums[-1]# for i in range(n - 2, -1, -1):#     right[i] = min(right[i + 1], nums[i])# for i in range(1, n):#     left[i] = max(left[i - 1], nums[i])# for i in range(n):#     if left[i] <= right[i+1]:#         return i + 1# 二次遍历# right = [0] * n# max_, right[-1] = 0, nums[-1]# for i in range(n - 2, -1, -1):#     right[i] = min(right[i + 1], nums[i])# for i in range(n - 1):#     max_ = max(max_, nums[i])#     if max_ <= right[i + 1]:#         return i + 1# 一次遍历pos, max_, left = 1, nums[0], nums[0]for i, x in enumerate(nums):max_ = max(max_, x)if x < left:left = max_pos = i + 1return pos 

练习

807. 保持城市天际线

class Solution:def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:row = list(map(max, grid))col = list(map(max, zip(*grid)))return sum(min(row[i], col[j]) - h for i, r in enumerate(grid) for j, h in enumerate(r))

1716. 计算力扣银行的钱

等差数列的通项公式为:an = a1 + (n - 1) d
前n项和公式为:Sn = na1 + n (n - 1) d / 2 或 Sn = n (a1 + an) / 2

class Solution:def totalMoney(self, n: int) -> int:# w, d = divmod(n, 7)         # res = w * 28 + w * (w - 1) * 7 // 2 # 整周计算# res += d * (w + 1) + d * (d - 1) * 1 // 2 week, day, res = 0, 1, 0        for i in range(n):res += week + dayday += 1if day == 8:day = 1week += 1return res

1995. 统计特殊四元组

class Solution:def countQuadruplets(self, nums: List[int]) -> int:        res = 0n = len(nums)for i in range(n-3):for j in range(i+1,n-2):for k in range(j+1,n-1):for l in range(k+1,n):if nums[i]+nums[j]+nums[k] == nums[l]:res += 1return res

372. 超级次方

模运算对于乘法与加法满足交换律与结合律

(a ∗ b) % c = (a % c) ∗ (b % c) % c

pow(x, y[, z])
如果z在存在,则再对结果进行取模,其结果等效于 pow(x, y) % z
pow(a, 123) = pow(a, 3) * pow(pow(a, 12), 10) # 123 = 12 * 10 + 3

class Solution:def superPow(self, a: int, b: List[int]) -> int:return pow(a, b.pop()) * pow(self.superPow(a, b), 10) % 1337  if b else 1

279. 完全平方数

方法一:数学

四平方定理: 任何一个正整数都可以表示成不超过四个整数的平方之和。
推论: if and only if n is not of the form n = 4a ( 8 b + 7 ) for integers a and b.
当且仅当 n ≠ 4 k × ( 8 m + 7 ) n \neq 4^k \times (8m+7) n=4k×(8m+7) 时,n 可以被表示为至多三个正整数的平方和。

class Solution:def numSquares(self, n: int) -> int:        sqr = int(sqrt(n))if n == sqr * sqr: return 1# 4 * x**2 = (2*x) ** 2        while n % 4 == 0:n >>= 2if n & 7 == 7: return 4 # n & 7 等价于 n % 8i = 0while i*i < n:j = int(sqrt(n - i*i))if i*i + j*j == n:  return 2i += 1return 3

方法二:动态规划

f[i] 表示最少需要多少个数的平方来表示整数 i。
这些数必然落在区间 [ 1 , n ] [1,\sqrt{n}] [1,n ]。枚举这些数,假设当前枚举到 j,那么还需要取若干数的平方,构成 i − j 2 i-j^2 ij2 。此时子问题和原问题一样,规模更小,符合了动态规划的要求。
状态转移方程:

f [ i ] = 1 + min ⁡ j = 1 ⌊ i ⌋ f [ i − j 2 ] f[i]=1+\min_{j=1}^{\lfloor\sqrt{i}\rfloor}{f[i-j^2]} f[i]=1+minj=1i f[ij2]

边界条件 f [ 0 ] = 0 f[0]=0 f[0]=0

因为计算 f [ i ] f[i] f[i] 时所需要用到的状态仅有 f [ i − j 2 ] f[i-j^2] f[ij2],必然小于 i,因此只需要从小到大地枚举 i 来计算 f [ i ] f[i] f[i] 即可。

class Solution:def numSquares(self, n):if n == int(sqrt(n)) ** 2: return 1dp = [inf for i in range(n + 1)] # 4dp[0] = 0for i in range(n + 1):j = 1while i + j*j <= n:dp[i + j*j] = min(dp[i + j*j], dp[i] + 1)j += 1return dp[n]

2239. 找到最接近 0 的数字

class Solution:def findClosestNumber(self, nums: List[int]) -> int:ans = inffor x in nums:if abs(x) == abs(ans): ans = max(x, ans)elif abs(x) < abs(ans):  ans = x                return ans

2432… 处理用时最长的那个任务的员工

class Solution:def hardestWorker(self, n: int, logs: List[List[int]]) -> int:ans = pre = most = 0for i, t in logs: dif = t - prepre = tif most < dif or most == dif and ans > i:ans = imost = difreturn ans

1610. 可见点的最大数目

在视角 angle 范围内内最多的点数。
location 为极点,刚好位于 location 的点单独进行统计,计算其它所有点的极角,然后排序。
在极坐标系中,平面上任何一点到极点的连线和极轴的夹角叫做极角。
极坐标和直角坐标的互化:在这里插入图片描述
函数「atan2」的返回值范围为 [−π,π],它的覆盖范围为 2π。将 angle 转换成弧度。
由于存在 d p i + angle > π d_{p_i} + \textit{angle} > π dpi+angle>π 的情况,可以在原数组中将每个元素 d p i + 2 π d_{p_i} + 2π dpi+2π 添加到原数组的后面,这样即可防止反转的问题。

class Solution:def visiblePoints(self, points: List[List[int]], angle: int, location: List[int]) -> int:same, polar = 0, []for p in points:if p == location: same += 1else:polar.append(atan2(location[1] - p[1], location[0] - p[0]))polar.sort()polar += [p + 2 * pi for p in polar]arc = angle * pi / 180# 二分查找# return max((bisect_right(polar, p + arc) - i for i, p in enumerate(polar)), default=0) + same# 滑动窗口n, maxCount, right = len(polar), 0, 0for i in range(n//2):while right < n and polar[right] <= polar[i] + arc:right += 1maxCount = max(maxCount, right - i)return maxCount + same

相关文章:

python 02 List

Python 1-14 列表 第一课 1437. 是否所有 1 都至少相隔 k 个元素 class Solution:def kLengthApart(self, nums: List[int], k: int) -> bool:cnt k # 处理第一个 1for i, x in enumerate(nums):if x 1:if cnt < k: return Falsecnt 0 # 遇到 1 从新记数else: cnt …...

【秋招笔试】09.28科大讯飞秋招(已改编)-研发岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…...

[SAP ABAP] 锁对象

在SAP中使用锁对象&#xff0c;用于避免在数据库中插入或更改数据时出现不一致的情况 1.创建锁对象 数据准备 学校表(ZDBT_SCH_437) 使用事务码SE11创建锁对象 点击"锁对象"单选按钮&#xff0c;输入以E开头的锁定对象的名称&#xff0c;然后点击创建按钮 锁对象名…...

Docker快速部署RabbitMq教程

1、拉取RabbitMQ镜像 docker pull rabbitmq:management RabbitMQ Management 插件为 RabbitMQ 提供了一个基于 Web 的用户界面&#xff08;Management UI&#xff09;&#xff0c;允许你通过浏览器来监控、管理 RabbitMQ 实例。 因为docker默认是使用的是Docker Hub的官方镜…...

解决银河麒麟V10中/data目录执行权限问题

解决银河麒麟V10中/data目录执行权限问题 1、问题描述2、解决方案步骤一&#xff1a;编辑fstab文件步骤二&#xff1a;重启系统步骤三&#xff1a;验证更改 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在使用银河麒麟桌面操作系…...

画两个数的平方和的曲线

代码1&#xff1a; from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt# Creating dataset x np.outer(np.linspace(-3, 3, 32), np.ones(32)) y x.copy().T # transpose z (x **2 y **2 )# Creating figure fig plt.figure(figsize …...

问:进程/线程上下文切换场景及相关概念?

进程、线程以及上下文切换是操作系统和并发编程中不可或缺的概念。这些概念不仅理论意义重大&#xff0c;而且在实际应用中起着至关重要的作用。掌柜将通过具体场景&#xff0c;探讨它们之间的关联以及上下文切换过程。_ 一、进程与线程 进程&#xff08;有时也称为任务&…...

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络&#xff1a;单层感知机1.3两层神经网络&#xff1a;多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…...

卸载apt-get 安装的PostgreSQL版本

文章目录 卸载apt-get 安装的PostgreSQL版本查找已安装的PostgreSQL包卸载PostgreSQL&#xff1a;检查并删除残留文件验证卸载 卸载apt-get 安装的PostgreSQL版本 卸载通过apt-get安装的PostgreSQL 就版本&#xff0c;可以按照以下步骤进行。 查找已安装的PostgreSQL包 在卸…...

低代码用户中心:构建高效便捷的用户管理平台

什么是低代码用户中心&#xff1f; 低代码用户中心是一种利用低代码开发平台构建的用户管理系统&#xff0c;允许企业快速创建、部署和管理用户信息、权限及互动记录。通过可视化界面和预置组件&#xff0c;企业可以在短时间内实现灵活的用户管理解决方案&#xff0c;而无需编…...

3款免费的GPT类工具

前言 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;的崛起与发展已经成为我们生活中不可或缺的一部分。它的出现彻底改变了我们与世界互动的方式&#xff0c;并为各行各业带来了前所未有的便利。 一、Kimi 网址&#xff1a;点我前往 国产AI模型Kimi是一…...

Mixture-of-Experts (MoE): 条件计算的诞生与崛起【上篇】

大型语言模型&#xff08;LLM&#xff09;的现代进步主要是缩放定律的产物[6]。 假设模型是在足够大的数据集上训练出来的&#xff0c;那么随着底层模型规模的增加&#xff0c;我们会看到性能的平滑提升。 这种扩展规律最终促使我们创建了 GPT-3 以及随后的其他&#xff08;更强…...

【算法】分治:归并排序之LCR 170.交易逆序对的总数(hard)

系列专栏 双指针 模拟算法 分治思想 目录 1、题目链接 2、题目介绍 3、解法 4、代码 1、题目链接 LCR 159. 库存管理 III - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 在股票交易中&#xff0c;如果前一天的股价高于后一天的股价&#xff0c;则可以认为存在一…...

2024.9.28 作业+思维导图

widget.cpp #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(320,448);this->setWindowFlag(Qt::FramelessWindowHint);//QPushButtonQPushButton *PushButton1 new QPushButton("登录",this);PushButto…...

树莓派外挂Camera(基操)(TODO)

&#xff08;TODO&#xff09; 手上有OV5647&#xff0c;OV2640&#xff0c;看这次能不能驱动吧。。。 树莓派3B CSI摄像头配置-阿里云开发者社区 你可以使用树莓派3B的CSI接口连接相机模块。首先&#xff0c;确保相机模块正确连接到CSI接口。然后&#xff0c;使用raspi-config…...

讯飞星火编排创建智能体学习(二)决策节点

目录 概述 决策节点 文生图节点 连接节点 测试结果 概述 在上一篇博文讯飞星火编排创建智能体学习&#xff08;一&#xff09;最简单的智能体构建-CSDN博客&#xff0c;我介绍了编排创作智能体&#xff0c;这篇来介绍一下“决策节点”。 决策节点 在编排创作智能体中&…...

YOLOv5改进:Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU

💡💡💡现有IoU问题点:IoU (Intersection over Union)作为模型训练的关键,极大地显示了当前预测框与Ground Truth框之间的差异。后续研究者不断在IoU中加入更多的考虑因素,如中心距离、纵横比等。然而,仅仅提炼几何差异是有上限的;而且新的对价指数与借据本身存在潜在…...

力扣 简单 112.路径总和

文章目录 题目介绍题解 题目介绍 题解 class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {// 只在最开始的时候判断树是否为空if (root null) {return false;}targetSum - root.val;if (root.left null && root.right null) { // root 是…...

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …...

Python库matplotlib之二

Python库matplotlib之二 figureAxessubplot figure matplotlib.pyplot.figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone, frameonTrue, FigureClass<class ‘matplotlib.figure.Figure’>, clearFalse, **kwargs) num&#xff0c;int 或 str 或 fi…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...