利用Python实现供应链管理中的线性规划与资源优化——手机生产计划1
目录
- 写在开头
- 1. Python与线性规划的基础
- 2.供应链管理中的资源优化
- 3.利用Python进行供应链资源优化
- 3.1 简单的优化实例
- 3.2 考虑多种原材料
- 3.3 多种原材料、交付时间与物流融合的情况
- 4.规范性分析在供应链管理中的应用价值
- 写在最后
写在开头
在全球供应链日益复杂的背景下,企业不仅需要优化生产流程,还必须在多变的市场环境中做出迅速而精准的决策。随着数据分析技术的发展,Python正在成为生产管理领域的重要工具之一。通过线性规划,企业能够在考虑多种原材料限制、交付时间、物流成本等多个因素的情况下,制定出最优的生产与配送方案,从而最大化资源利用率,降低运营成本。本文将带您深入探讨如何利用Python进行这种多因素优化,帮助企业在激烈的竞争中占据有利位置。
1. Python与线性规划的基础
线性规划是一种优化技术,广泛应用于生产管理、物流调度、金融投资等领域。它通过建立数学模型,寻找一组变量的最优值,以使目标函数(如最小化成本或最大化利润)达到最佳状态。对于生产管理人员而言,线性规划可以帮助优化生产计划、减少浪费、提高资源利用率。
Python作为一种灵活且功能强大的编程语言,提供了多种工具包来处理线性规划问题,其中PuLP和SciPy是最常用的两种。借助这些工具,生产管理人员可以轻松地将线性规划模型转化为Python代码,并求解出最优方案。接下来,我们将通过一个实际案例,展示如何利用Python实现线性规划,并应用于生产管理中的资源优化。
2.供应链管理中的资源优化
在供应链管理中,资源优化是一个至关重要的课题。供应链涉及从原材料采购到成品交付的整个过程,其中每个环节的效率都会影响到最终的生产成本与交付时间。生产管理人员必须在确保生产计划满足市场需求的同时,合理分配资源,避免过度浪费或短缺。
例如,如何决定各条生产线的生产量、如何在有限的原材料供应下最大化产出,都是需要解决的典型问题。通过构建线性规划模型,生产管理人员可以更科学地分配资源,实现整体效益的最大化。
3.利用Python进行供应链资源优化
3.1 简单的优化实例
为了更好地理解如何利用Python进行线性规划来优化供应链资源分配,我们来看一个具体的实战案例。
场景描述
假设一家智能手机制造公司在接下来的一个月内需要制定生产计划。公司有两条生产线,分别用于生产两种不同型号的智能手机:型号A和型号B。具体来说:
- 生产线1每天最多可生产400部型号A手机,生产每部手机的成本为5单位,且需要消耗3单位的原材料。
- 生产线2每天最多可生产300部型号B手机,生产每部手机的成本为7单位,且需要消耗2单位的原材料。
- 公司的原材料供应是有限的,整个生产周期内最多可提供1000单位的原材料。
- 同时,市场需求要求公司在这个月内至少生产500部手机,以满足客户订单。
公司的目标是制定一个生产计划,使得在满足市场需求和原材料供应的前提下,最小化总生产成本。
求解思路
-
目标函数的定义:公司希望最小化总生产成本。因此,目标函数应定义为生产线1和生产线2的生产成本之和,即:
Minimize Z = 5 × x 1 + 7 × x 2 \text{Minimize } Z = 5 \times x1 + 7 \times x2 Minimize Z=5×x1+7×x2
其中, x 1 x1 x1和 x 2 x2 x2分别代表生产线1和生产线2的产量。 -
约束条件:
- 市场需求约束:两条生产线的产量总和必须满足至少500部手机的市场需求:
x 1 + x 2 ≥ 500 x1 + x2 \geq 500 x1+x2≥500 - 原材料供应约束:两条生产线的总原材料消耗不得超过1000单位:
3 × x 1 + 2 × x 2 ≤ 1000 3 \times x1 + 2 \times x2 \leq 1000 3×x1+2×x2≤1000 - 生产线产能约束:每条生产线的产量不得超过其最大产能,即生产线1的产量不得超过400部,生产线2的产量不得超过300部:
x 1 ≤ 400 , x 2 ≤ 300 x1 \leq 400, \quad x2 \leq 300 x1≤400,x2≤300
- 市场需求约束:两条生产线的产量总和必须满足至少500部手机的市场需求:
-
模型的求解:我们将以上目标函数和约束条件转化为线性规划问题,并利用Python的PuLP库求解,找到满足上述所有条件的最优生产计划。
Python代码实现
import pulp# 定义问题
prob = pulp.LpProblem("Production_Optimization", pulp.LpMinimize)# 定义变量(生产线1和生产线2的每日产量)
x1 = pulp.LpVariable('x1', lowBound=0, cat='Integer')
x2 = pulp.LpVariable('x2', lowBound=0, cat='Integer')# 目标函数:最小化生产成本
prob += 5 * x1 + 7 * x2, "Total Production Cost"# 添加约束条件
prob += x1 + x2 >= 500, "Market Demand" # 市场需求
prob += 3 * x1 + 2 * x2 <= 1000, "Material Availability" # 原材料供应
prob += x1 <= 400, "Production Capacity Line 1" # 生产线1的产能
prob += x2 <= 300, "Production Capacity Line 2" # 生产线2的产能# 求解问题
prob.solve()# 输出结果
print(f"Status: {pulp.LpStatus[prob.status]}")
if pulp.LpStatus[prob.status] == 'Infeasible':print("The problem is infeasible. Checking constraints for conflicts...")# 检查每个约束的松弛度for name, constraint in prob.constraints.items():print(f"Constraint '{name}':")print(f" Slack: {constraint.slack}")print(f" Shadow Price: {constraint.pi}")
else:print(f"Optimal Production for Line 1: {pulp.value(x1)} units")print(f"Optimal Production for Line 2: {pulp.value(x2)} units")
结果分析
从运行结果可以看出,该线性求解问题不可行,导致问题不可行的关键约束是:
-
Market_Demand
(市场需求) 和Material_Availability
(原材料供应) 约束的松弛度为-0.0
:- 虽然松弛度为
-0.0
,这在浮点数表示中表示它已经紧绑定(几乎违反)。 Market_Demand
的影子价格为11.0
,这表明增加市场需求的成本很高,导致其成为一个重要的约束。Material_Availability
的影子价格为-2.0
,这表示原材料供应约束也紧密影响了目标函数。
- 虽然松弛度为
-
Production_Capacity_Line_2
(生产线2产能) 约束的松弛度为-200.0
:- 这表示生产线2的产能无法满足所需的产量,并且它的松弛度为负数,表明该约束无法满足。
结论:
问题的不可行性主要由 Production_Capacity_Line_2
约束导致。为了满足市场需求和原材料供应约束,生产线2被要求生产超过其最大产能(300单位)的产量,导致不可行性。
解决方案:
- 增加生产线2的产能:如果可能,可以考虑将
x2
的上限从300
提高到500
或更高,以使问题可行。 - 调整市场需求或原材料供应:降低市场需求或增加原材料供应以匹配现有的产能。
- 重新分配生产任务:重新考虑两条生产线的任务分配,或者引入第三条生产线来分担任务。
进一步思考与模型扩展
在实际生产管理中,问题通常比这个案例要复杂得多。生产管理人员可能需要考虑更多因素,例如:
- 多种原材料供应限制:不同型号的手机可能需要不同类型的原材料,每种原材料的供应量可能都有限。
- 交付时间与物流成本:在优化生产计划的同时,还需要考虑交付时间的要求,以及在不同市场进行物流运输的成本。
- 设备维护与故障:生产设备可能会出现维护或故障情况,影响生产能力,需要动态调整生产计划。
3.2 考虑多种原材料
为了更贴近实际生产管理中的复杂性,我们将扩展案例,考虑10种原材料的供应限制。这种情况下,线性规划模型的复杂度将大幅提升,但通过Python的求解能力,依然可以找到最优解。假设在原有案例的基础上,公司生产的两种手机型号(A和B)需要10种不同的原材料,每种原材料的供应量和需求如下:
原材料 | 型号A需求量(单位/部) | 型号B需求量(单位/部) | 原材料供应量(单位) |
---|---|---|---|
M1 | 2 | 1 | 2000 |
M2 | 3 | 2 | 2500 |
M3 | 1 | 3 | 1500 |
M4 | 4 | 2 | 3000 |
M5 | 2 | 4 | 2000 |
M6 | 5 | 1 | 4000 |
M7 | 3 | 2 | 2500 |
M8 | 2 | 3 | 2000 |
M9 | 4 | 2 | 3000 |
M10 | 1 | 5 | 1000 |
公司的目标仍然是最小化总生产成本,并满足市场需求和所有原材料的供应限制。
求解思路
-
目标函数:仍然是最小化总生产成本。
Minimize Z = 5 × x 1 + 7 × x 2 \text{Minimize } Z = 5 \times x1 + 7 \times x2 Minimize Z=5×x1+7×x2 -
约束条件:
- 市场需求约束: x 1 + x 2 ≥ 500 x1 + x2 \geq 500 x1+x2≥500
- 10种原材料的供应约束:
- 2 x 1 + 1 x 2 ≤ 2000 2x1 + 1x2 \leq 2000 2x1+1x2≤2000 (M1)
- 3 x 1 + 2 x 2 ≤ 2500 3x1 + 2x2 \leq 2500 3x1+2x2≤2500 (M2)
- 1 x 1 + 3 x 2 ≤ 1500 1x1 + 3x2 \leq 1500 1x1+3x2≤1500 (M3)
- 4 x 1 + 2 x 2 ≤ 3000 4x1 + 2x2 \leq 3000 4x1+2x2≤3000 (M4)
- 2 x 1 + 4 x 2 ≤ 2000 2x1 + 4x2 \leq 2000 2x1+4x2≤2000 (M5)
- 5 x 1 + 1 x 2 ≤ 4000 5x1 + 1x2 \leq 4000 5x1+1x2≤4000 (M6)
- 3 x 1 + 2 x 2 ≤ 2500 3x1 + 2x2 \leq 2500 3x1+2x2≤2500 (M7)
- 2 x 1 + 3 x 2 ≤ 2000 2x1 + 3x2 \leq 2000 2x1+3x2≤2000 (M8)
- 4 x 1 + 2 x 2 ≤ 3000 4x1 + 2x2 \leq 3000 4x1+2x2≤3000 (M9)
- 1 x 1 + 5 x 2 ≤ 1000 1x1 + 5x2 \leq 1000 1x1+5x2≤1000 (M10)
- 生产线产能约束: x 1 ≤ 400 x1 \leq 400 x1≤400 及 x 2 ≤ 300 x2 \leq 300 x2≤300
-
模型求解:同样使用Python的PuLP库来求解这个扩展的线性规划问题。
Python代码实现
import pulp# 定义问题
prob = pulp.LpProblem("Production_Optimization_with_10_Materials", pulp.LpMinimize)# 定义变量(生产线1和生产线2的每日产量)
x1 = pulp.LpVariable('x1', lowBound=0, cat='Integer')
x2 = pulp.LpVariable('x2', lowBound=0, cat='Integer')# 目标函数:最小化生产成本
prob += 5 * x1 + 7 * x2, "Total Production Cost"# 添加约束条件
prob += x1 + x2 >= 500, "Market Demand" # 市场需求
prob += 2 * x1 + 1 * x2 <= 2000, "Material M1 Availability"
prob += 3 * x1 + 2 * x2 <= 2500, "Material M2 Availability"
prob += 1 * x1 + 3 * x2 <= 1500, "Material M3 Availability"
prob += 4 * x1 + 2 * x2 <= 3000, "Material M4 Availability"
prob += 2 * x1 + 4 * x2 <= 2000, "Material M5 Availability"
prob += 5 * x1 + 1 * x2 <= 4000, "Material M6 Availability"
prob += 3 * x1 + 2 * x2 <= 2500, "Material M7 Availability"
prob += 2 * x1 + 3 * x2 <= 2000, "Material M8 Availability"
prob += 4 * x1 + 2 * x2 <= 3000, "Material M9 Availability"
prob += 1 * x1 + 5 * x2 <= 1000, "Material M10 Availability"
prob += x1 <= 400, "Production Capacity Line 1"
prob += x2 <= 300, "Production Capacity Line 2"# 求解问题
prob.solve()# 输出优化后的生产计划
print(f"Optimal Production for Line 1: {pulp.value(x1)} units")
print(f"Optimal Production for Line 2: {pulp.value(x2)} units")
结果分析
运行代码后,您将得到一组新的最优生产计划。该计划考虑了10种原材料的供应限制,并且满足了市场需求和生产线产能限制。例如,结果可能显示生产线1应生产400部型号A的手机,生产线2应生产100部型号B的手机。
具体分析如下:
- 生产线1将生产400部型号A手机,总成本为2000单位。
- 生产线2将生产100部型号B手机,总成本为700单位。
- 总成本为2700单位,总消耗的每种原材料均未超过供应限制,同时满足了市场需求。
- 产能清况, 生产线1已经达到其最大产能(400单位),而生产线2还没有达到其最大产能。这可能是由于模型中的原材料约束限制了进一步的生产。
3.3 多种原材料、交付时间与物流融合的情况
为了更贴近实际生产管理中的复杂情况,我们在多种原材料限制的基础上,还将考虑交付时间与物流成本。通过这种方式,模型将更加全面,能够帮助企业在复杂的供应链环境中做出最佳决策。
场景描述
假设一家智能手机制造公司生产两种手机型号(A和B),在多种原材料限制下制定生产计划,同时还需考虑不同市场的交付时间与物流成本。以下表格描述了每种手机型号对10种原材料的需求量、每种原材料的供应量,以及交付时间和物流成本:
型号A和型号B对10种原材料的需求
原材料 | 型号A需求量(单位/部) | 型号B需求量(单位/部) | 原材料供应量(单位) |
---|---|---|---|
M1 | 2 | 1 | 2000 |
M2 | 3 | 2 | 2500 |
M3 | 1 | 3 | 1500 |
M4 | 4 | 2 | 3000 |
M5 | 2 | 4 | 2000 |
M6 | 5 | 1 | 4000 |
M7 | 3 | 2 | 2500 |
M8 | 2 | 3 | 2000 |
M9 | 4 | 2 | 3000 |
M10 | 1 | 5 | 1000 |
市场、交付时间与物流成本
公司需要向两个主要市场交付产品,每个市场的交付时间和物流成本如下:
市场 | 型号A的交付时间(天) | 型号B的交付时间(天) | 型号A的物流成本(单位/部) | 型号B的物流成本(单位/部) |
---|---|---|---|---|
市场1 | 5 | 6 | 10 | 12 |
市场2 | 7 | 5 | 8 | 11 |
目标与约束条件
目标是在满足原材料供应、市场需求和生产能力的前提下,最小化总生产成本与物流成本的总和,同时确保按时交付产品。
-
目标函数:最小化生产成本与物流成本之和
Minimize Z = 5 × x 1 + 7 × x 2 + 10 × y 1 + 12 × y 2 + 8 × y 3 + 11 × y 4 \text{Minimize } Z = 5 \times x1 + 7 \times x2 + 10 \times y1 + 12 \times y2 + 8 \times y3 + 11 \times y4 Minimize Z=5×x1+7×x2+10×y1+12×y2+8×y3+11×y4
其中:- x 1 x1 x1和 x 2 x2 x2分别代表型号A和型号B在生产线1的产量。
- y 1 y1 y1和 y 2 y2 y2代表型号A和型号B运往市场1的数量。
- y 3 y3 y3和 y 4 y4 y4代表型号A和型号B运往市场2的数量。
-
约束条件:
- 原材料供应约束:
- M1: 2 x 1 + 1 x 2 ≤ 2000 2x1 + 1x2 \leq 2000 2x1+1x2≤2000
- M2: 3 x 1 + 2 x 2 ≤ 2500 3x1 + 2x2 \leq 2500 3x1+2x2≤2500
- M3: 1 x 1 + 3 x 2 ≤ 1500 1x1 + 3x2 \leq 1500 1x1+3x2≤1500
- M4: 4 x 1 + 2 x 2 ≤ 3000 4x1 + 2x2 \leq 3000 4x1+2x2≤3000
- M5: 2 x 1 + 4 x 2 ≤ 2000 2x1 + 4x2 \leq 2000 2x1+4x2≤2000
- M6: 5 x 1 + 1 x 2 ≤ 4000 5x1 + 1x2 \leq 4000 5x1+1x2≤4000
- M7: 3 x 1 + 2 x 2 ≤ 2500 3x1 + 2x2 \leq 2500 3x1+2x2≤2500
- M8: 2 x 1 + 3 x 2 ≤ 2000 2x1 + 3x2 \leq 2000 2x1+3x2≤2000
- M9: 4 x 1 + 2 x 2 ≤ 3000 4x1 + 2x2 \leq 3000 4x1+2x2≤3000
- M10: 1 x 1 + 5 x 2 ≤ 1000 1x1 + 5x2 \leq 1000 1x1+5x2≤1000
- 生产能力与市场需求约束:
- x 1 ≤ 400 x1 \leq 400 x1≤400 (生产线1的产能)
- x 2 ≤ 300 x2 \leq 300 x2≤300 (生产线2的产能)
- x 1 + x 2 ≥ 500 x1 + x2 \geq 500 x1+x2≥500 (市场需求)
- 交付时间约束:
- y 1 + y 3 ≥ 市场 1 需求 y1 + y3 \geq 市场1需求 y1+y3≥市场1需求
- y 2 + y 4 ≥ 市场 2 需求 y2 + y4 \geq 市场2需求 y2+y4≥市场2需求
- y 1 , y 2 , y 3 , y 4 y1, y2, y3, y4 y1,y2,y3,y4 的数量应与生产量一致。
- 原材料供应约束:
Python代码实现
考虑上述约束条件,我们使用Python实现该线性规划模型。
import pulp# 定义问题
prob = pulp.LpProblem("Production_and_Distribution_Optimization", pulp.LpMinimize)# 定义变量(生产与物流)
x1 = pulp.LpVariable('x1', lowBound=0, cat='Integer') # 生产型号A
x2 = pulp.LpVariable('x2', lowBound=0, cat='Integer') # 生产型号B
y1 = pulp.LpVariable('y1', lowBound=0, cat='Integer') # 型号A运往市场1
y2 = pulp.LpVariable('y2', lowBound=0, cat='Integer') # 型号B运往市场1
y3 = pulp.LpVariable('y3', lowBound=0, cat='Integer') # 型号A运往市场2
y4 = pulp.LpVariable('y4', lowBound=0, cat='Integer') # 型号B运往市场2# 目标函数:最小化生产成本与物流成本
prob += 5 * x1 + 7 * x2 + 10 * y1 + 12 * y2 + 8 * y3 + 11 * y4, "Total Cost"# 添加原材料约束条件
prob += 2 * x1 + 1 * x2 <= 2000, "Material M1 Availability"
prob += 3 * x1 + 2 * x2 <= 2500, "Material M2 Availability"
prob += 1 * x1 + 3 * x2 <= 1500, "Material M3 Availability"
prob += 4 * x1 + 2 * x2 <= 3000, "Material M4 Availability"
prob += 2 * x1 + 4 * x2 <= 2000, "Material M5 Availability"
prob += 5 * x1 + 1 * x2 <= 4000, "Material M6 Availability"
prob += 3 * x1 + 2 * x2 <= 2500, "Material M7 Availability"
prob += 2 * x1 + 3 * x2 <= 2000, "Material M8 Availability"
prob += 4 * x1 + 2 * x2 <= 3000, "Material M9 Availability"
prob += 1 * x1 + 5 * x2 <= 1000, "Material M10 Availability"# 添加生产能力和市场需求约束
prob += x1 <= 400, "Production Capacity Line 1"
prob += x2 <= 300, "Production Capacity Line 2"
prob += x1 + x2 >= 500, "Market Demand"# 添加物流与交付约束
prob += y1 + y3 == x1, "Total Distribution of Model A"
prob += y2 + y4 == x2, "Total Distribution of Model B"# 市场需求分配约束
prob += y1 >= 0, "Market 1 Demand for Model A"
prob += y2 >= 0, "Market 1 Demand for Model B"
prob += y3 >= 0, "Market 2 Demand for Model A"
prob += y4 >= 0, "Market 2 Demand for Model B"# 求解问题
prob.solve()# 输出结果
print(f"Optimal Production for Model A (Line 1): {pulp.value(x1)} units")
print(f"Optimal Production for Model B (Line 2): {pulp.value(x2)} units")
print(f"Optimal Distribution to Market 1 (Model A): {pulp.value(y1)} units")
print(f"Optimal Distribution to Market 1 (Model B): {pulp.value(y2)} units")
print(f"Optimal Distribution to Market 2 (Model A): {pulp.value(y3)} units")
print(f"Optimal Distribution to Market 2 (Model B): {pulp.value(y4)} units")
结果分析与总结
运行上述代码后,得出最优解:
最优解:
- 生产方案:
- 生产线1(型号A):生产400单位。
- 生产线2(型号B):生产100单位。
- 物流分配方案:
- 市场1:
- 型号A:0单位。
- 型号B:0单位。
- 市场2:
- 型号A:400单位。
- 型号B:100单位。
- 市场1:
实际场景应用:
-
生产计划:
- 结果表明,生产线1(型号A)满负荷生产400单位,而生产线2(型号B)生产100单位。这表明在满足原材料和产能限制的情况下,这是最低成本的生产组合。
-
物流分配:
- 所有生产的型号A和型号B产品都被分配到市场2,而市场1没有分配任何产品。这可能是因为将产品运输到市场2的物流成本较低,或者是因为交付时间和市场需求的限制,使得将所有产品分配到市场2成为最优解。
-
目标函数值:
- 总成本为7000单位,涵盖了生产和物流的全部费用。这是模型在考虑所有约束条件下的最低成本。
4.规范性分析在供应链管理中的应用价值
在供应链管理中,规范性分析作为一种科学的决策方法,具有重要的应用价值。通过将复杂的供应链问题转化为可计算的数学模型,企业可以在面对多重约束和变量时,找到最佳的解决方案,从而实现资源的最优配置和成本的最小化。这种方法不仅提升了决策的科学性和准确性,还增强了企业在不确定环境下的应变能力。
首先,规范性分析可以帮助企业在多种原材料供应有限的情况下,合理分配资源,确保生产计划的可行性。以往,企业可能依赖经验或单一变量进行决策,但在面对全球供应链的不确定性时,这种方法往往难以应对复杂的现实问题。通过规范性分析,企业可以综合考虑原材料的供应、生产能力、市场需求等多个因素,制定出最优的生产策略,避免资源浪费和生产瓶颈。
其次,规范性分析还能有效降低供应链中的运营成本。通过优化生产与物流环节,企业可以在满足市场需求的同时,将总成本降至最低。例如,利用线性规划模型,企业可以在考虑交付时间、物流成本和市场需求的前提下,找到最佳的配送方案。这不仅能够提高供应链的效率,还能增强企业在市场中的竞争力。
此外,规范性分析还具有很强的扩展性,能够根据不同的业务场景进行调整。无论是应对突发的市场变化,还是优化长期的供应链策略,企业都可以通过调整模型的参数和约束条件,快速生成新的决策方案。这种灵活性使得企业能够在复杂多变的市场环境中保持敏捷性,并及时做出准确的应对措施。
总的来说,规范性分析为供应链管理提供了一种高效、科学的决策工具。通过结合数据分析和数学建模,企业可以在多变的市场环境中做出明智的决策,最大限度地提高运营效率和市场响应速度。这种方法不仅提升了企业的运营能力,也为未来的发展奠定了坚实的基础。
写在最后
通过这篇文章,我们不仅展示了如何利用Python进行线性规划优化,还深入探讨了在多种原材料限制及物流与交付时间的复杂约束下,如何制定出最优的生产与配送方案。无论您是生产管理人员、数据分析师,还是物流专家,这种方法都能为您的工作提供切实可行的决策支持。面对日益严峻的市场挑战,唯有通过科学合理的优化策略,企业才能在竞争中脱颖而出,实现持续增长与长远发展。
相关文章:
利用Python实现供应链管理中的线性规划与资源优化——手机生产计划1
目录 写在开头1. Python与线性规划的基础2.供应链管理中的资源优化3.利用Python进行供应链资源优化3.1 简单的优化实例3.2 考虑多种原材料3.3 多种原材料、交付时间与物流融合的情况 4.规范性分析在供应链管理中的应用价值写在最后 写在开头 在全球供应链日益复杂的背景下&…...
Spring Cloud全解析:配置中心之springCloudConfig分布式配置动态刷新
分布式配置动态刷新 当配置中心中的配置修改之后,客户端并不会进行动态的刷新,每次修改配置文件之后,都需要重启客户端,那么如何才能进行动态刷新呢 可以使用RefreshScope注解配合actuator端点进行手动刷新,不需要重…...
mac如何查看shell是 zsh还是bash
怎么确定mac使用的 shell类型 在终端中输入echo $0命令查看你所使用的 shell(默认使用的zsh) echo $0# 或者 echo $SHELL 如果是 bash 配置文件则为:~/.bash_profile 是 zsh,则配置文件为:~/.zshrc 如何更改默认 S…...

STM32cubeMX配置Systick的bug
STM32cubeMX版本:6.11.0 现象 STM32cubeMX配置Systick的时钟,不管选择不分频 还是8分频。 生成的代码都是一样的,代码都是不分频。 即不管选择不分频还是8分频,Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_Init…...
分享几个好用js片段
最近在做telegram小程序,所以又回归了web端了,发现几个好用又简洁的代码片段,在这里分享一下。 获取浏览器cookie值 const cookie name > ; ${document.cookie}.split(; ${name}).pop().split(;).shift();cookie(_ga); 2. 将RGB转换为1…...

web前端之实现一只可爱的小杰尼乌龟、伪元素、动画
MENU 前言效果图htmlstyle 前言 代码段使用HTML和CSS创建一个“杰尼龟”的动画。 效果图 html <div class"squirtle"><div class"tail"></div><div class"body"><div class"stomach"></div><d…...
银河麒麟服务器版在rc.local使用ifcong 配置IP和nmcli的区别
1、使用ifconfig配置IP ifconfig是一个传统的网络配置工具,它直接操作网络接口,允许用户手动设置IP地址、子网掩码等网络参数。这种方式比较直接,但需要用户对网络接口和配置有较深入的了解。使用ifconfig配置的IP地址在系统重…...

【运维】深入理解 Linux 中的 `mv` 命令,使用 `mv` 移动所有文件但排除特定文件或文件夹
文章目录 一、基本语法二、基本用法三、使用 `mv` 移动所有文件但排除特定文件或文件夹**命令解释:**四、其他常用选项五、总结深入理解 Linux 中的 mv 命令:移动文件和文件夹的艺术 在日常使用 Linux 的过程中,mv(move)命令是我们经常会用到的一个命令,它不仅可以用来移…...

Xilinx课程,就这么水灵灵地上线了~
如果你想了解: 如何利用精通流水线(Pipeline)技术,让电路设计效率倍增? 如何掌握利用性能基线指导设计流程的方法? 如何理解集成电路设计中的UltraFast Design Methodology Implementation设计方法学中的…...
【axios get请求 中文乱码】
问题复现 前端请求: company/queryFenByOrgNo?orgNo5&qcNam%D2%BB%C6%DA qcNam 一期 后端接收: CompanyManagementController - 入参 orgNo“5”,qcNamһ�� 问题解决方案 let httpUrl this.httpcompany/queryFenByOrgNo…...

智能分析/视频汇聚EasyCVR安防视频融合管理云平台技术优势分析
安防行业的发展历程主要围绕视频监控技术的不断改革升级,从最初的模拟监控到数字监控,再到高清化、网络化监控,直至现在的智能化监控,每一次变革都推动了行业的快速发展。特别是近年来,随着AI、大数据、物联网等技术的…...

arcgis-坡度坡向分析
坡向的描述有定性和定量两种方式,定量是以东为0,顺时针递增,南为90,西为180,北为270等,范围在0~35959′59″之间。 定性描述有8方向法和4方向法. 8 方向为东、东南、南、西南、西、西北、北、东…...

【银河麒麟高级服务器操作系统】实际案例分析,xfsaild占用过高
了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 服务器环境及配置 物理机/虚拟机 物理机 处理器: Intel(R) Xeon(R) Silver 4110 CPU 2.10GHz 内存: 65536 MiB (64 GiB) 主板…...
JS中【setTimeout】使用注意事项总结
在JavaScript中,setTimeout是一个用于延迟执行某个函数的非常常见和有用的函数。使用setTimeout时,有几个重要的方面需要注意: 1. 基本用法 setTimeout的基本语法如下: setTimeout(function, delay);function:这是你…...
已解决ArkTS开发webview,html页面中的input和按钮等操作均无响应
在使用 ArkTS 开发 HarmonyOS 应用时,如果遇到 WebView 中的 HTML 页面元素(如 input 输入框和 button 按钮)无法响应操作的情况,通常与 WebView 的配置或权限设置有关。以下是常见的原因和解决方法。 1. 启用交互权限 确保你的…...

ChatGPT无法登录,提示我们检测到可疑的登录行为,将阻止进一步的尝试。请与管理员联系
1. 问题描述 之前本来已经连续稳定使用ChatGPT好几个月了,但是今天尝试登录ChatGPT的时候,却提示:我们检测到可疑的登录行为,将阻止进一步的尝试。请与管理员联系。 此外,我还在网上看到了一些相关的消息,…...

【数据结构篇】~复杂度
标题【数据结构篇】~复杂度 前言 C语言已经学完了,不知道大家的基础都打得怎么样了? 无论怎么说大家还是要保持持续学习的状态,来迎接接下来的挑战! 现在进入数据结构的学习了,希望大家还是和之前一样积极学习新知识…...
深入理解Python中的JSON模块:解析与生成JSON数据的实用指南
深入理解Python中的JSON模块:解析与生成JSON数据的实用指南 在现代应用程序开发中,JSON(JavaScript Object Notation)已成为数据交换的标准格式。Python的json模块提供了简单而强大的工具来解析和生成JSON数据。本文将详细介绍如何使用json模块,包括基本概念、解析JSON数…...
机器学习三要素:模型、策略和算法
引言 随着人工智能技术的发展,机器学习已成为数据科学领域的核心组成部分。数据在机器学习方法框架中的流动,会按顺序经历三个过程,分别对应机器学习的三大要素:1. 模型;2. 策略;3. 算法。本文将深入探讨这…...

利用红黑树封装map和set
前言: 我们已经学过了如何去实现一棵完整的红黑树,而我们所知道的map和set容器的底层都是由红黑树实现的,因此我们今天来学习如何用红黑树来实现封装map和set。 本来我们需要两个红黑树去分别封装map和set,但是代码会有重复、冗…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...