第三次Blog 题目集7~8

news/2024/12/28 16:00:35/文章来源:https://www.cnblogs.com/Dream-Xi/p/18637516

一,前言
在题目集7和8中,我们逐步完善了智能家居强电电路模拟程序的功能和复杂性。题目集7以基本电路元件的特性和连接为核心,涵盖了开关、调速器、灯、风扇等设备的模拟,实现了多种控制设备和受控设备的电路设计与状态输出;而题目集8在此基础上新增了管脚电压显示、电流限制检测、短路保护,并引入了更复杂的电路结构(如并联电路中包含并联)及二极管特性模拟。两次迭代从功能需求到异常检测,逐步提升了模拟系统的严谨性与实用性,同时难度也大幅增加。

二,设计与分析
7题:
设计思路
本题围绕电路中的控制设备和受控设备的特性以及它们之间的连接关系展开。题目设计中定义了多种设备的功能特性、电路规则和输入输出格式,通过分阶段设计与迭代开发来实现复杂的电路模拟。

核心功能模块分析
设备模块

控制设备:包括开关、互斥开关、分档调速器、连续调速器。它们的主要功能是调节输入输出电位差。关键在于:
开关与互斥开关的状态变化影响电路通断。
调速器通过不同的档位调节电压输出,需满足线性比例或分档规则。
受控设备:包括灯、风扇、窗帘,受控设备根据电路中的电压差工作,其输出效果(亮度、转速、窗帘开度等)需符合设备特定的物理规律。
灯的亮度按电压差与亮度的比例关系计算。
风扇的转速按电压差区间确定。
窗帘的开合程度需结合光照强度。
电路连接模块

串联电路:按从电源到接地的顺序组织多个设备的引脚连接,形成通路,需处理输入输出电位变化。
并联电路:将多条串联电路并联,并根据电路规律计算等效阻抗、电流分配等。
电路的连接设计需要保证:
串联和并联的输入输出电压能够正确计算。
并联电路中设备的电流分配符合欧姆定律。
状态调节模块

用户可通过输入信息调节设备的状态(如开关切换、调速器档位调整)。程序需根据输入动态更新电路状态。
每次状态调整后,重新计算各设备的输出效果。
物理计算模块

根据电路规则(如欧姆定律、电压分配、电流计算)模拟电路运行:
对串联电路和并联电路分别计算等效阻抗。
依据电压、电阻关系计算电流、电压分布。
结合设备阻抗计算受控设备的输出效果。
输入与输出模块

输入模块:解析用户输入的设备信息、连接信息及调节信息,初始化设备与电路。
输出模块:按照设备的类别与编号顺序输出每个设备的当前状态或参数,输出格式需严格符合题目要求。

代码分析
类图:

结构
2.1 主程序逻辑(Main 类)
设备管理: 使用 List 管理所有设备。
电路连接管理:
serialConnections:存储串联电路连接信息。
parallelConnections:存储并联电路连接信息。
设备解析与创建:
解析用户输入,创建不同类型的设备(如开关、灯、风扇等)。
电路创建:
将设备连接到串联或并联电路中,生成对应电路对象。
状态更新:
计算电路电阻、电压分配,更新每个设备状态。
状态展示:
输出所有设备的当前状态。
主要输入解析:

(#T:定义串联电路。)
(#M:定义并联电路。)
控制命令(如 K 开关、F 调速器等)。
2.2 设备抽象类
Device (抽象类)
提供设备标识符 id。
定义了获取电阻、更新状态、获取状态的抽象方法。
ElectricalDevice (抽象类,继承 Device)
管理电源引脚 pin1 和 pin2。
提供电压传递逻辑。
Circuit (抽象类,继承 Device)
管理电路输入电压 IN。
提供状态更新逻辑。
2.3 设备子类
(1)开关设备
Switch: 普通开关设备,支持开/关操作,电阻值分别为 0(关闭)和 -1(断路)。
MutualSwitch: 互斥开关,支持 1-2 和 2-3 两种连接方式。
(2)调速设备
StepSpeedControl: 分档调速器,提供四档速度控制。
ContinuousSpeedControl: 连续调速器,提供从 0.0 到 1.0 的平滑控制。
(3)照明设备
IncandescentLight: 白炽灯,电阻值为 10,根据电压调整亮度。
FluorescentLight: 日光灯,电阻值为 5,提供恒定亮度。
(4)风扇设备
CeilingFan: 吊扇,电阻值为 20,支持不同风速。
GroundFan: 落地扇,支持不同档位速度。
(5)窗帘设备
ControlledBlinds: 受控窗帘,根据光照强度和电压决定窗帘开合比例。
2.4 电路类
(1)SeriesCircuit(串联电路)
电阻计算:各设备电阻值之和。
电压分配:根据电阻比例进行分压。
断路判断:任意设备断路则整体断路。
(2)ParallelCircuit(并联电路)
电阻计算:使用并联电阻公式
1/R=∑(1/Ri)
1/R=∑(1/Ri)。
电压分配:所有并联设备电压相同。
断路判断:所有支路都断路时整体断路。

3。并联电路电压
所有并联设备的电压均等于电源电压。

  1. 优化与问题
    4.1 优化点
    循环冗余:部分循环操作可以优化,减少不必要的重复计算。
    异常输入处理:缺少对用户输入异常的处理逻辑。
    设备查找:findDeviceById 在大规模设备时性能可能下降,建议使用 HashMap 存储设备,减少线性搜索。
    4.2 潜在问题
    并联电路断路逻辑: 判断逻辑较复杂,容易出错。
    设备状态管理: 某些设备的状态更新依赖于其他设备的状态,可能存在同步问题。
  2. 主要数据结构
    List devices: 管理所有设备。
    LinkedHashMap<String, List> serialConnections: 管理串联电路。
    LinkedHashMap<String, List> parallelConnections: 管理并联电路。
    LinkedHashMap<String, List> otherConnections: 存储除最后一个之外的串联电路。
  3. 结果展示
    程序将按以下格式输出每个设备的状态:

@K1:closed
@F1:2
@L1:0.75
@B1:150
@R1:180
7. 总结
优点:
支持多种电路拓扑(串联、并联)。
支持多种设备类型和控制。
清晰的设备抽象设计。
良好的可扩展性,可以轻松添加新设备。
缺点:
输入解析部分逻辑复杂,可读性较低。
设备查找性能不足。
断路判断逻辑较复杂。

改进建议

  1. 数据结构优化
    1.1 使用 HashMap 替代 List
    当前 findDeviceById 方法通过线性搜索查找设备,效率较低。当设备数量较多时,性能下降明显。

采坑心得

  1. 问题现象:输入解析错误
    现象:
    在处理复杂输入时,程序因输入格式错误或设备未定义导致 NullPointerException 或 ArrayIndexOutOfBoundsException。

具体案例:

输入串联电路:#T1: [K1-K2](格式正确)
输入错误格式:#T1: K1-K2](缺少 [ 和 ])
输出结果:抛出异常 ArrayIndexOutOfBoundsException
原因分析:

输入未严格校验格式。
缺乏对输入内容的异常处理。
解决方案:

引入输入校验逻辑,确保格式正确。
添加异常捕获,避免程序崩溃。
对输入格式设计单元测试覆盖常见错误。
改进代码:

改进效果:
通过模拟多种异常输入:

正确输入通过,程序正常解析。
错误输入提示“格式错误”,程序继续运行。
未出现崩溃现象。
2. 问题现象:电路断路和短路判断错误
现象:
某些复杂的串联或并联电路在断路或短路状态下,程序未能正确判定,导致电阻计算错误。

具体案例:

输入串联电路:#T1: [K1-K2-K3],其中 K2 断路(resistance == -1)。
程序输出:总电阻未标记为 -1(断路)。
原因分析:

缺乏明确的断路、短路逻辑分支。
未正确处理 -1 和 0 电阻的特殊情况。
解决方案:

将断路、短路判断提取为独立方法,提高代码复用性。
在电阻计算逻辑中明确处理 -1 和 0 情况。
补充单元测试覆盖所有可能的电路状态。
改进代码:

改进效果:
通过对断路、短路场景的模拟测试,确保:

串联电路中若有设备断路,电阻标记为 -1。
并联电路中若有短路支路,总电阻标记为 0。
复杂组合电路中逻辑正确无误。
3. 问题现象:设备状态更新不正确
现象:
在多个设备并联电路中,当某些设备切换状态(如开关打开),其他设备的状态未及时更新,导致电路整体表现不符预期。

具体案例:

输入:#K1 开关关闭。
预期:电路断路,所有设备无电压。
实际:其他设备仍保持原状态。
原因分析:

未触发设备状态的级联更新。
状态更新逻辑未根据电路连接关系设计。
解决方案:

在电路和设备中引入观察者模式,确保状态变更时通知关联设备。
优化 updateState 方法,按照电路层级依次更新。
改进代码:

改进建议:

使用 HashMap<String, Device> 存储设备,以设备 id 为键,直接通过键值对访问设备。
Map<String, Device> devices = new HashMap<>();

// 替代现有的线性查找
private static Device findDeviceById(Map<String, Device> devices, String deviceId) {
return devices.get(deviceId);
}
2. 输入解析优化
2.1 简化输入解析
当前输入解析逻辑冗长且重复代码较多,建议对 #T 和 #M 的输入解析逻辑进行抽象化处理。

改进方法:

使用辅助函数提取解析逻辑,减少冗余代码。
将输入解析封装成一个类或方法,提高可读性。
private static void parseConnections(String input, Map<String, List> connections) {
String[] parts = input.split(":");
String circuitId = parts[0].substring(1).trim();
String[] connectionIds = parts[1].replace("[", "").replace("]", "").split(" ");
List connectionList = Arrays.asList(connectionIds);
connections.put(circuitId, connectionList);
}

// 调用时直接使用
if (input.startsWith("#T")) {
parseConnections(input, serialConnections);
} else if (input.startsWith("#M")) {
parseConnections(input, parallelConnections);
}
3. 状态更新与电阻计算优化
3.1 减少重复计算
getResistance 和 updateState 方法中的循环计算逻辑重复多次,可以通过缓存电阻值等方式优化。

改进方法:

缓存电阻值(若输入没有改变,则不重复计算)。
使用标志位跟踪是否需要重新计算。
private double cachedResistance = -1; // 缓存电阻值
private boolean needsRecalculation = true; // 是否需要重新计算

@Override
public double getResistance() {
if (needsRecalculation) {
cachedResistance = calculateResistance(); // 计算电阻
needsRecalculation = false;
}
return cachedResistance;
}

// 连接或状态变更时标记为需要重新计算
public void markForRecalculation() {
needsRecalculation = true;
}
4. 断路与短路逻辑优化
当前断路和短路的判断逻辑较复杂,容易出错,建议将逻辑提取到独立的方法或类中,并通过清晰的条件分支实现。

改进方法:

提取判断逻辑至独立方法,如 isBroken() 或 isShortCircuited()。
添加测试用例验证逻辑正确性。
public boolean isBroken() {
for (Device device : devices) {
if (device.getResistance() == -1) {
return true; // 断路
}
}
return false;
}

public boolean isShortCircuited() {
for (Device device : devices) {
if (device.getResistance() == 0) {
return true; // 短路
}
}
return false;
}
5. 状态展示优化
5.1 输出格式改进
当前状态展示代码中,排序逻辑过于复杂,建议通过设备类型优先级列表简化排序逻辑。

private static void displayStates(Map<String, Device> devices) {
// 按优先级排序
List sortedDevices = new ArrayList<>(devices.values());
sortedDevices.sort(Comparator.comparingInt(Main::getDevicePriority));
// 打印设备状态
for (Device device : sortedDevices) {
System.out.println("@" + device.getId() + ":" + device.getState());
}
}

private static int getDevicePriority(Device device) {
Map<String, Integer> typePriority = Map.of(
"Switch", 1,
"StepSpeedControl", 2,
"ContinuousSpeedControl", 3,
"IncandescentLight", 4,
"FluorescentLight", 5,
"CeilingFan", 6,
"GroundFan", 7,
"MutualSwitch", 8,
"ControlledBlinds", 9,
"SeriesCircuit", 10,
"ParallelCircuit", 11
);
return typePriority.getOrDefault(device.getClass().getSimpleName(), Integer.MAX_VALUE);
}
6. 并发与多线程支持
如果需要处理较大的电路网络或多用户操作,可以引入并发机制优化性能。

6.1 并行计算电阻与状态
使用 ForkJoinPool 或多线程并行计算电路电阻和设备状态更新。

ExecutorService executor = Executors.newFixedThreadPool(4);

// 并行计算电阻
List<Future> results = new ArrayList<>();
for (Device device : devices) {
results.add(executor.submit(device::getResistance));
}

// 等待所有任务完成
for (Future result : results) {
try {
double resistance = result.get();
// 处理电阻
} catch (Exception e) {
e.printStackTrace();
}
}
executor.shutdown();

8题:
设计与分析
在第7题的基础上,本题引入了更多现实电路系统中的核心要素,以提高系统的模拟精度和复杂性,具体目标如下:

管脚电压显示:在每个电器状态输出后,展示电器各个管脚的实时电压。
电流限制:每种电器都有最大电流限制,超过该限制时需进行错误提示。
短路检测:如果检测到短路(无穷大电流),应立即终止电路的正常运行,并输出错误提示。
嵌套并联电路:支持并联电路内部包含串联电路或嵌套的并联电路,增加电路拓扑结构的复杂度。
二极管特性:实现二极管的特性,导通与截止的电流方向及状态准确模拟。
代码分析
类图:

代码结构:

  1. 抽象基类
    1.1 Device
    作用:所有设备和电路的基类,提供设备的核心属性和方法。
    关键功能:
    定义设备的唯一标识符(id)。
    提供通用的电阻、电压、电流接口。
    定义抽象方法updateState()和getState(),要求每个设备实现自身的状态更新和输出逻辑。
    接口:
    setVoltage(double voltage):设置设备的电压。
    setPin1(double pin1) & setPin2(double pin2):设置设备两端的管脚电压。
    setCurrent(double current):设置设备的工作电流。
    getResistance():获取设备的电阻,用于电路计算。
    getState():获取设备的当前状态,具体由子类实现。
    1.2 ElectricalDevice
    作用:所有具体电器设备(如开关、灯具、风扇等)的父类,扩展了Device类,增加对电器的电压、电流逻辑支持。
    关键功能:
    提供电器特有的管脚属性pin1和pin2,表示设备两端的电压。
    提供具体的电压和电流设置接口。
    接口:
    getPin1() & getPin2():获取管脚的实时电压。
    setPin1(double pin1) & setPin2(double pin2):设置管脚电压。
    继承并实现了Device中的所有接口。
    1.3 Circuit
    作用:用于实现电路的父类,定义电路的通用属性和逻辑。
    关键功能:
    负责电路整体的输入电压(pin1)、输出电压(pin2)和电阻计算。
    支持串联电路和并联电路的具体实现。
    接口:
    setPin1() & setPin2():设置电路的输入输出电压。
    getResistance():获取电路的等效电阻。
    updateState():更新电路的状态,包括电压、电流分配逻辑。
  2. 具体设备类
    2.1 Switch(开关)
    作用:模拟电路中的普通开关。
    特点:
    提供开关的两种状态:打开(断路)和关闭(导通)。
    电阻为0(关闭)或无穷大(打开)。
    关键逻辑:
    toggle():切换开关的状态。
    updateState():根据状态设置输出电压。
    getState():返回开关状态及管脚电压,检测电流是否超限。
    **2.2 MutualSwitch(互斥开关)
    作用:模拟两路互斥的开关,类似单刀双掷开关。
    特点:
    两种通路(1-2 或 1-3)可选。
    电阻和电路路径根据状态变化。
    关键逻辑:
    toggle():切换两种路径。
    updateState():更新电压分配逻辑。
    getState():输出开关状态及其电压分布。
    2.3 StepSpeedControl(分档调速器)
    作用:提供三档调速功能,输出电压根据档位变化。
    特点:
    分档逻辑:档位 0(0V)、1(66V)、2(132V)、3(198V)。
    电阻始终为0。
    关键逻辑:
    increaseStep() & decreaseStep():调整档位。
    updateState():根据档位更新输出电压。
    getState():输出当前档位和管脚电压,检测电流是否超限。
    2.4 ContinuousSpeedControl(连续调速器)
    作用:提供连续可调的电压输出,范围为0到220V。
    特点:
    输出电压比例与速度成线性关系。
    关键逻辑:
    setSpeed(double speed):设置速度比例(0.00-1.00)。
    updateState():根据比例更新输出电压。
    getState():输出当前速度比例和电压,检测电流是否超限。
    2.5 IncandescentLight(白炽灯)
    作用:模拟白炽灯的亮度输出,亮度与电压成非线性关系。
    特点:
    电阻固定为10Ω。
    不同电压下,亮度从0到200 lux。
    关键逻辑:
    updateState():根据电压更新亮度值。
    getState():输出亮度值和管脚电压,检测电流是否超限。
    2.6 FluorescentLight(日光灯)
    作用:模拟日光灯的亮度输出。
    特点:
    电阻固定为5Ω。
    亮度恒定为180 lux(只要电压大于0)。
    关键逻辑:
    updateState():根据电压更新亮度。
    getState():输出亮度值和管脚电压,检测电流是否超限。
    2.7 CeilingFan(吊扇)
    作用:模拟吊扇的速度输出。
    特点:
    电阻固定为20Ω。
    转速与电压成线性关系(80V以下为0,150V以上为最大转速360RPM)。
    关键逻辑:
    updateState():根据电压更新转速。
    getState():输出当前转速和管脚电压,检测电流是否超限。
    2.8 GroundFan(落地扇)
    作用:模拟落地扇的速度输出,分档逻辑与吊扇类似。
    特点:
    转速档位为80、160、260、360RPM。
    关键逻辑:
    与CeilingFan类似。
    2.9 ControlledBlinds(受控窗帘)
    作用:模拟光照强度影响窗帘开合状态。
    特点:
    电阻固定为15Ω。
    光照强度决定窗帘的开合百分比。
    关键逻辑:
    updateState():根据光照强度和电压更新窗帘状态。
    getState():输出窗帘开合百分比和管脚电压,检测电流是否超限。
    2.10 BipolarJunctionTransistor(二极管)
    作用:模拟二极管的单向导通和截止特性。
    特点:
    电流从1号管脚流向2号管脚时导通,反向时截止。
    电阻为0(导通)或无穷大(截止)。
    关键逻辑:
    updateState():根据电流方向更新状态。
    getState():输出导通或截止状态及管脚电压。
  3. 电路类
    3.1 SeriesCircuit(串联电路)
    作用:模拟串联电路的电压分配逻辑。
    特点:
    串联电路的总电阻为各设备电阻之和。
    电压按设备电阻比例分配。
    关键逻辑:
    getResistance():计算总电阻。
    updateState():根据电阻比例更新每个设备的电压。
    断路时电阻为无穷大,短路时电阻为0。
    3.2 ParallelCircuit(并联电路)
    作用:模拟并联电路的电压分配逻辑,支持嵌套。
    特点:
    并联电路的总电阻为各支路电阻倒数之和的倒数。
    支路间电压相等。
    关键逻辑:
    getResistance():计算总电阻,支持递归嵌套。
    updateState():更新每条支路的电流、电压。
    短路(某支路电阻为0)时总电阻为0。
    总结
    基础设备类(Device & ElectricalDevice):提供通用的电路计算接口。
    具体设备类:实现各种设备特性,覆盖从开关到风扇、灯具到二极管。
    电路类(SeriesCircuit & ParallelCircuit):提供电路拓扑的电压、电流分配逻辑,支持嵌套。
    整体设计:层次清晰,职责分明,各类设备和电路的功能易于扩展。

采坑心得

  1. 电流限制问题
    问题描述
    初始版本未实现电流限制的功能,导致在高负载情况下,设备电流超限却未能发出提示。例如在测试白炽灯(最大电流限制9A)时,输入电压较高,电流明显超限,但代码中未体现出异常。

解决方法
为每种设备定义getCurrent()方法,计算当前电流值。
在getState()中增加电流限制检查逻辑,超限时输出exceeding current limit error。
测试结果
测试白炽灯和吊扇的高电流情况:

(#T1:[IN K1-1] [K1-2 B1-1] [B1-2 OUT])
状态输出:

@K1:closed 220-220
@B1:50 220-170 exceeding current limit error
在电流超限时,系统成功提示,逻辑正确。
2. 短路检测问题
问题描述
初始逻辑中,短路检测未完全覆盖嵌套电路,导致复杂电路中存在短路时,系统未能正确终止。例如并联电路中包含短路的串联电路时,系统仍然输出部分设备状态。

解决方法
在SeriesCircuit 和 ParallelCircuit中增加递归检测逻辑。
当电阻为0时,立即终止所有电路的状态输出,直接返回short circuit error。
测试结果
测试包含短路的嵌套并联电路:

状态输出:

改进建议

  1. 短路检测逻辑优化
    当前的短路检测逻辑分散在多个地方,且判断条件不够集中。主要问题:
    短路状态的判断条件分散在各个设备类中
    没有统一的短路检测机制
    电流计算和短路判断混合在一起
    改进建议:
    创建一个集中的短路检测机制,并将相关逻辑封装在一个专门的方法中。

  2. 电流限制检测优化
    当前的电流限制检测存在以下问题:
    电流限制值硬编码在各个设备类中
    检测逻辑重复出现在每个设备的 getState() 方法中
    没有统一的电流限制配置管理
    改进建议:
    创建一个电流限制配置类,并将检测逻辑抽象到基类中。

三,总结
在本次7到8的题目集中,我系统性地学习了如何运用面向对象的设计原则去构建一个可扩展的电路模拟系统。我不仅深化了对封装、继承和多态的理解,并将其应用到实际代码中,例如通过抽象Device类及其子类来模拟不同的电路元件,实现了代码的高度模块化和复用性。在电路逻辑模拟方面,我掌握了如何处理短路检测、电流限制以及二极管的单向导通特性等复杂情况,并学习了如何使用递归结构来处理嵌套的并联电路。此外,我开始注重代码组织和数据结构的选择,合理利用HashMap和List来管理电路和设备信息,使代码更具可读性和维护性。更重要的是,我培养了可持续改进的意识,意识到代码的编写是一个持续迭代优化的过程,需要注重代码的模块化、可扩展性以及长期维护,而不仅仅是实现当前的需求。这使得我在面对更复杂的系统时,能够有条理、更加高效地进行设计和开发。

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

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

相关文章

题集7-8的总结

一:前言: 1.知识点:主要包括类和对象的使用、数据封装、方法的定义和使用、继承、多态、泛型、抽象类,集合框架,异常处理,字符串处理、以及基本的输入输出操作。 2.题量:现在的题目集都是一道题了,题量没什么说的。 3.难度:每次题集的难度都较大,每次都要7.8小时及以…

『联合省选2025集训』『图的连通性进阶』 知识点 总结

若有长风绕旗,那便是我在想你了。前言若有长风绕旗,那便是我在想你了。这周讲了个图论连通性板块的一些进阶知识,周六全国第一给我们讲了一些树上的问题,感觉树剖板块实现难度较大,后面几道偏思维的题会有些许好转。 这里就先写写连通性相关的进阶的一些知识点吧。 主要涵…

『联合省选2025集训』『耳分解,双极定向,三连通分量』 知识点 总结

若有长风绕旗,那便是我在想你了。前言若有长风绕旗,那便是我在想你了。这周讲了个图论连通性板块的一些进阶知识,周六全国第一给我们讲了一些树上的问题,感觉树剖板块实现难度较大,后面几道偏思维的题会有些许好转。 这里就先写写连通性相关的进阶的一些知识点吧。 主要涵…

第七-八次作业总结

一、前言 该系列题目均为设计与实现一个家居强电电路模拟程序,题目难度复杂度逐步提升,题目数量和输入信息也逐步增加。以下是对这两道题的总结: 1. 知识点家居强电电路模拟程序-3 受控窗帘设备的模拟 多个并联电路串联在一起的情况 串联电路中包含其他串联电路的情况 家居强…

AD 原理图如何进行DRC检查

如果画到PCB才发现原理图画错了,那么就为时太晚了。 画完或者后期修改PCB应该及时进行原理图的DRC检查。 1. 右下角Panels打开工程: 2. 然后我们选中整个工程的工程处,点击右键: 3. 然后左键点击compile PCB Project......... : 参考资料: https://www.fanyedu.com/content…

Vue3甘特图 - dhtmlx-gantt

Vue3甘特图 <template><div style="height:100%; background-color: white"><div id="gantt_here" style="width:100%; height:100%;"></div></div> </template><script setup> import { onMounted }…

恍恍惚惚,走到了尾声

课程链接 https://edu.cnblogs.com/campus/fzu/SE2024/作业链接 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315作业目标 回顾自己的软工实践课程学号 102202157一、学期回顾 1.1 回顾你对于软件工程课程的想象在课程开始前,我一直以为软件工程课程会聚焦于各种编…

转正了!!!!!!!!

近期&感受、问题: 1.版本优化描述:秘境排行榜;一键探险功能的顺序;背包随机类宝箱一键开启;美食家一键合成闪光美食;电玩活动跳过动画功能;许愿池自动投币;结晶一键熔炼 感受/反思:感觉自己菜菜的QAQ,各种版本的本地数据处理错误(删早了删晚了/先notify后notify…

Navicat密码导出解密导入到DataGrip中

使用Navicat导出密码:目前使用Navicat17亲测有效使用php解密代码 <?php class NavicatPassword {protected $version = 0;protected $aesKey = libcckeylibcckey;protected $aesIv = libcciv libcciv ;protected $blowString = 3DC5CA39;protected $blowKey = null;protec…

鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用

随着HarmonyOS NEXT的正式推出,鸿蒙原生应用开发热度高涨,数量激增。但在三方应用鸿蒙化进程中,性能问题频出。为此,HarmonyOS NEXT推出了一整套原生页面高性能解决方案,包括Nodepool、HMrouter和DataCache 三大解决方案,并上架OpenHarmony开源社区,分别针对应用页面滑动…

数值计算方法(2) 数值积分方法

+++ date = 2024-12-21T13:49:00+08:00 draft = true title = 数值计算方法(2) 数值积分方法 +++ 初次发布于我的个人文档 上一期讲了插值方法,这一次自然是要运用一下插值方法了。所以这一期的主题是用插值方法计算定积分。 机械求积方法 下面我们来介绍一下怎么用插值法来得…

AI烟雾监测识别摄像机

AI烟雾监测识别摄像机的应用范围广泛,不仅可以安装在家庭、商业建筑、工厂等场所,还可以应用于地铁、火车站等公共场所,为人们的生命财产安全提供全方位的保障。总的来说,AI烟雾监测识别摄像机作为智能化安全防范的重要工具,具有广阔的应用前景和社会意义。通过提高火灾预…