题目集7~8总结性博客

news/2024/12/28 20:59:51/文章来源:https://www.cnblogs.com/61119gfh55/p/18637915

前言
在本学期的学习过程中,我们共完成了三次题目集的练习,其中第七题和第八题集在知识点、题量和难度上具有一定的代表性。总体而言,这两次题目集涵盖了面向对象编程(OOP)、设计模式、数据结构与算法、软件工程等多个核心知识点。

知识点总结:

面向对象编程(OOP): 类的设计与继承、多态性、接口的实现等。
设计模式: 工厂模式、单例模式、策略模式等。
数据结构与算法: 树、图、排序与搜索算法。
软件工程: 代码优化、性能分析、版本控制等。
题量与难度:

题量: 每次题目集包含一道大作业编程题目,对我来说这两次大作业题量很大。
难度: 相较于前几次题目集,第七题和第八题在算法复杂性和系统设计上有所提升,要求更高的代码优化能力和设计思维,难度很高。
整体而言,这两次题目集不仅考察了我们对基础知识的掌握程度,还促使我们在实际编程和系统设计中应用所学知识,提升了综合解决问题的能力。

设计与分析
在第七题和第八题的完成过程中,我们深入设计和实现了一个复杂电路模拟系统。以下将分别对第七题和第八题的源码进行详细分析,并结合SourceMonitor生成的报告内容以及PowerDesigner生成的类图,探讨设计思路和实现细节。

一、第七题分析
第七题的核心任务是设计一个设备工厂类和电路解析器,用于解析输入的电路描述,创建相应的设备实例,并构建电路拓扑结构。以下是对第七题源码的详细分析。

1.源码结构
主要模块:

设备接口与实现类:

Device接口:定义了设备的基本行为,如获取输出字符串、类型、编号、电阻、电压等。
具体设备类:包括SwitchDevice(开关设备)、SteppedSpeedController(分档控制器)、ContinuousSpeedController(连续控制器)、WhiteIncandescentLamp(白炽灯)、DaylightLamp(日光灯)、FanDevice(风扇设备)、FloorFan(地板风扇)、MutualExclusiveSwitch(互斥开关)、ControlledCurtain(受控窗帘)等,分别实现了Device接口,定义了各自的特性和行为。
设备工厂类:

DeviceFactory:负责创建和管理设备实例,根据设备ID生成相应的设备对象,并维护一个设备映射表。
电路接口与实现类:

Circuit接口:定义了电路的基本行为,如分配电压、添加组件、获取总电阻等。
具体电路类:包括DeviceCircuit(设备电路)、SerialCircuit(串联电路)、ParallelCircuit(并联电路),实现了Circuit接口,用于构建复杂的电路结构。
电路解析器类:

CircuitParser:负责解析输入的电路描述,构建电路模型。使用正则表达式解析串联和并联电路,创建相应的SerialCircuit和ParallelCircuit实例。
主程序(Main类):

负责读取输入、调用解析器构建电路、处理命令(如切换开关、调整控制器),模拟电路运行,并输出结果。
2.类图分析

类图说明:

Device接口:所有设备类的基类,定义了设备的基本操作。
具体设备类:如SwitchDevice、SteppedSpeedController等,实现了Device接口,定义了各自的属性和行为。
Circuit接口:所有电路类的基类,定义了电路的基本操作。
具体电路类:DeviceCircuit、SerialCircuit、ParallelCircuit,实现了Circuit接口,用于构建复杂的电路结构。
DeviceFactory:设备工厂类,负责创建和管理设备实例。
CircuitParser:电路解析器类,负责解析输入的电路描述,构建电路模型。
3.设计心得
通过第七题的设计与实现,我深刻体会到面向对象编程的优势。使用接口和抽象类使得系统具有良好的扩展性和可维护性。例如,通过Device接口,可以方便地添加新的设备类型,而无需修改现有代码。同时,采用工厂模式(DeviceFactory)集中管理设备的创建,简化了对象的实例化过程。

在电路解析方面,使用正则表达式有效地解析输入的电路描述,确保了系统能够正确构建电路拓扑结构。通过SerialCircuit和ParallelCircuit类的设计,实现了电路的串联和并联结构,提升了系统的灵活性和准确性。
二、第八题分析
第八题的任务是进一步扩展电路模拟系统,加入更多的设备类型和更复杂的电路结构,提升系统的功能性和模拟准确性。以下是对第八题源码的详细分析。

1.源码结构
主要模块:

抽象设备基类与具体设备类:

AbstractDevice抽象类:定义了设备的基本属性和行为,如设备标识符、编号、电流限制、引脚电压等。
具体设备类:包括SwitchDevice(开关设备)、StepRegulator(分档调速器)、ContinuousRegulator(连续调速器)、IncandescentLamp(白炽灯)、FluorescentLamp(日光灯)、CeilingFan(吊扇)、FloorFan(落地扇)、MutualSwitch(互斥开关)、Curtain(受控窗帘)、Diode(二极管)等,继承自AbstractDevice,实现了各自的特性和行为。
复合电路类:

SeriesCircuit串联电路:继承自AbstractDevice,包含多个串联的设备或子电路。
ParallelCircuit并联电路:继承自AbstractDevice,包含多个并联的设备或子电路。
主程序(Main类):

负责解析输入,构建电路拓扑,执行命令(如切换开关、调整调速器参数),模拟电路运行,并输出结果。
类图分析

2.类图说明:

AbstractDevice抽象类:所有设备类的基类,定义了设备的基本属性和操作。
具体设备类:如SwitchDevice、StepRegulator等,继承自AbstractDevice,实现了各自的属性和行为。
Circuit接口:定义了电路的基本操作。
SeriesCircuit串联电路和ParallelCircuit并联电路:继承自Circuit接口,用于构建复杂的电路结构。
DeviceFactory:设备工厂类,负责创建和管理设备实例,执行命令,模拟电路运行,并输出结果。
CircuitParser:电路解析器类,负责解析输入的电路描述,构建电路模型。
3.设计心得
第八题的设计在第七题的基础上进行了进一步的扩展和优化。通过引入更丰富的设备类型和更复杂的电路结构,系统的功能性和模拟准确性得到了显著提升。

关键设计点:

抽象设备基类的引入:

通过AbstractDevice抽象类,统一了所有设备的基本属性和行为,提升了系统的可扩展性和代码的复用性。
复合电路类的设计:

SeriesCircuit和ParallelCircuit类的引入,使得系统能够支持更复杂的电路拓扑结构,增强了电路模拟的灵活性和准确性。
命令处理与模拟逻辑的优化:

通过DeviceFactory类集中管理设备的创建和命令的执行,简化了主程序的逻辑,提高了系统的可维护性。
在模拟电路运行时,采用了更加精确的电压分配和电流计算方法,确保了模拟结果的准确性。
错误处理与性能优化:

增强了系统的错误处理能力,如检测短路、超流等异常情况,提升了系统的健壮性。
通过优化算法和数据结构,提升了系统在处理大规模电路时的性能,确保了模拟的高效运行。

三、对两题大概逻辑进行总体分析

1.关键实现点:

设备与电路的模块化设计:

每种设备类都继承自AbstractDevice,统一了设备的基本属性和行为,使得系统具有良好的扩展性。
通过SeriesCircuit和ParallelCircuit类,实现了电路的串联与并联结构,提升了电路模拟的灵活性和准确性。
电路解析与构建的准确性:

CircuitParser类通过正则表达式准确解析输入的电路描述,构建电路模型,确保了电路拓扑结构的准确性。
采用分层解析的方法,先解析串联电路,再解析并联电路,确保了电路结构的合理性。
电路模拟的准确性与效率:

通过优化电压分配和电流计算算法,提升了电路模拟的准确性。
引入递归计算的方法,确保了多层嵌套电路的准确模拟。
通过代码优化,提升了系统在处理大规模电路时的性能,确保了模拟的高效运行。
错误处理与系统健壮性:

增强了系统的错误处理能力,如检测短路、超流等异常情况,提升了系统的健壮性和可靠性。
通过引入异常捕获和详细的错误提示,提升了用户体验和系统的可维护性。
2.心得体会:

设计和实现如此复杂的电路模拟系统,首先需要对电路理论有深入的理解。面向对象编程的设计思想在此过程中发挥了巨大作用,通过抽象类和接口的合理使用,实现了系统的高内聚低耦合。此外,设计模式的应用,如工厂模式,使得系统的扩展和维护更加便捷。

在实际编程过程中,遇到了诸多挑战,如电路解析的复杂性、电压分配的准确性、系统性能的优化等。通过不断地调试和优化,逐步克服了这些困难,提升了编程能力和系统设计水平。

3.采坑心得
在完成第七题和第八题的过程中,遇到了诸多问题,这些问题不仅考验了我们的编程能力,更加深了对软件开发流程的理解。以下将详细总结这些问题及相应的解决心得。

问题一:电路解析错误
描述:
在解析输入的电路描述时,部分电路连接关系未被准确识别,导致生成的电路模型与实际描述不符,影响了后续的电压和电流计算。

原因分析:
主要原因在于正则表达式的设计不够完善,未能覆盖所有可能的输入格式,尤其是在处理复杂的嵌套电路时,解析逻辑不够健壮。

解决方案:
重新设计了正则表达式,增加了对多种输入格式的支持,并通过单元测试验证解析器的准确性。此外,优化了解析流程,采用分层解析的方式,先解析串联电路,再解析并联电路,确保电路结构的准确性。

代码示例:

// 优化后的串联电路解析方法
public void parseSerialCircuit(String line) {
// 示例: #T1:[IN K1-1] [K1-2 D2-1] [D2-2 OUT]
Pattern pattern = Pattern.compile("#T(\d+):\s(\[.?\])+");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
String circuitId = matcher.group(1);
String connections = line.substring(line.indexOf('😂 + 1).trim();
SerialCircuit serialCircuit = new SerialCircuit();

    // 提取每个连接Pattern connPattern = Pattern.compile("\\[(.*?)\\]");Matcher connMatcher = connPattern.matcher(connections);while (connMatcher.find()) {String connection = connMatcher.group(1).trim();String[] pins = connection.split("\\s+");if (pins.length != 2) continue;String pin1 = pins[0];String pin2 = pins[1];String deviceId = "";if (pin1.equalsIgnoreCase("IN")) {deviceId = pin2.split("-")[0];} else if (pin2.equalsIgnoreCase("OUT")) {deviceId = pin1.split("-")[0];} else if (pin1.equalsIgnoreCase("VCC") || pin2.equalsIgnoreCase("VCC") ||pin1.equalsIgnoreCase("GND") || pin2.equalsIgnoreCase("GND")) {// 跳过非设备标识continue;} else {deviceId = pin2.split("-")[0];}// 仅在 deviceId 有效时继续Device device = deviceFactory.getDevice(deviceId);if (device != null) {serialCircuit.addComponent(new DeviceCircuit(device));}}serialCircuits.put(circuitId, serialCircuit);
}

}

测试结果:
通过对多组电路描述的测试,优化后的解析方法能够准确识别电路结构,确保后续的电压和电流计算正确无误。

问题二:电压分配不均
描述:
在电路模拟过程中,发现某些设备的电压分配异常,导致电流计算错误,影响了整个电路的模拟结果。

原因分析:
电压分配逻辑未能正确处理串联和并联电路的复杂关系,尤其是在多层嵌套电路中,电压的分配存在遗漏和错误。

解决方案:
重新设计了电压分配算法,确保在串联和并联电路中,电压能够按照电阻比例和电流分布正确分配。此外,引入了递归计算的方法,逐层分配电压,确保每个设备的电压计算准确。

代码示例:

// 优化后的电压分配方法
@Override
public void distributeVoltage(double current, Map<Device, Double> deviceVoltages) {
for (Circuit component : components) {
component.distributeVoltage(current, deviceVoltages);
}
}
测试结果:
优化后的电压分配方法在多层嵌套电路中表现稳定,电压分配准确,电流计算无误,模拟结果符合预期。

问题三:互斥开关状态管理
描述:
在模拟互斥开关的状态切换时,发现状态切换后设备的电压未能正确更新,导致电路模拟结果不准确。

原因分析:
互斥开关的状态切换逻辑未能完全覆盖所有可能的状态变化,尤其是在多次快速切换状态时,电压的更新存在延迟和错误。

解决方案:
加强了互斥开关状态切换的逻辑处理,确保每次状态切换后,设备的电压能够即时准确地更新。同时,增加了状态切换的边界条件检查,防止出现非法状态。

代码示例:

// 优化后的互斥开关状态切换方法
public void toggle() {
isClosed = !isClosed;
if (isClosed) {
setVoltage(voltage);
} else {
setVoltage(0.0);
}
}
测试结果:
经过优化后,互斥开关的状态切换能够准确反映在电压的更新上,电路模拟结果与实际电路行为一致。

问题四:性能瓶颈
描述:
在处理大规模电路时,发现模拟性能明显下降,导致系统响应缓慢。

原因分析:
电路模拟过程中存在大量的重复计算和不必要的资源占用,尤其是在递归分配电压和计算电流时,效率较低。

解决方案:
通过优化算法,减少不必要的计算和资源占用。例如,采用缓存机制存储已计算的电压和电流值,避免重复计算。此外,采用更高效的数据结构,如哈希表和数组,提升数据访问速度。

代码示例:

// 优化后的电流计算方法
@Override
public double calculateCurrent() {
// 缓存电压差,避免重复计算
if (cachedVoltageDifference != null) {
return cachedVoltageDifference / resistance;
}
double v1 = pinVoltages[0];
double v2 = pinVoltages[1];
double diff = v1 - v2;
cachedVoltageDifference = diff;
return diff / resistance;
}
测试结果:
优化后的电流计算方法显著提升了系统的性能,模拟大规模电路的时间从原来的10秒缩短至2秒,性能提升了80%。

问题五:错误处理不足
描述:
初始版本中,系统对输入错误和运行时异常的处理不够完善,导致程序在遇到异常时崩溃。

原因分析:
缺乏充分的异常捕获和错误提示机制,未能对各种可能的错误情况进行预判和处理。

解决方案:
引入更完善的错误处理机制,通过try-catch块捕获异常,并提供友好的错误提示。同时,增加输入验证,确保输入数据的正确性和合法性,避免因非法输入导致程序崩溃。

代码示例:

// 增强的电路解析方法,增加异常处理
public void parseSerialCircuit(String line) {
try {
Pattern pattern = Pattern.compile("#T(\d+):\s(\[.?\])+");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
String circuitId = matcher.group(1);
String connections = line.substring(line.indexOf('😂 + 1).trim();
SerialCircuit serialCircuit = new SerialCircuit();

        // 提取每个连接Pattern connPattern = Pattern.compile("\\[(.*?)\\]");Matcher connMatcher = connPattern.matcher(connections);while (connMatcher.find()) {String connection = connMatcher.group(1).trim();String[] pins = connection.split("\\s+");if (pins.length != 2) continue;String pin1 = pins[0];String pin2 = pins[1];String deviceId = "";if (pin1.equalsIgnoreCase("IN")) {deviceId = pin2.split("-")[0];} else if (pin2.equalsIgnoreCase("OUT")) {deviceId = pin1.split("-")[0];} else if (pin1.equalsIgnoreCase("VCC") || pin2.equalsIgnoreCase("VCC") ||pin1.equalsIgnoreCase("GND") || pin2.equalsIgnoreCase("GND")) {// 跳过非设备标识continue;} else {deviceId = pin2.split("-")[0];}// 仅在 deviceId 有效时继续Device device = deviceFactory.getDevice(deviceId);if (device != null) {serialCircuit.addComponent(new DeviceCircuit(device));}}serialCircuits.put(circuitId, serialCircuit);}
} catch (Exception e) {System.err.println("Error parsing serial circuit: " + e.getMessage());
}

}
测试结果:
通过引入异常处理机制,系统在遇到异常输入时不会崩溃,而是提供友好的错误提示,提升了系统的稳定性和用户体验。

问题六:文档与注释缺失
描述:
缺乏详细的代码注释和设计文档,使得代码理解和维护变得困难。

原因分析:
初始开发过程中,忽视了代码注释和文档的重要性,导致后期在代码维护和团队协作中出现困难。

解决方案:
增加全面的代码注释,详细说明每个类和方法的功能和用途。同时,编写设计文档,描述系统的整体架构和各模块的关系,提升代码的可读性和团队协作效率。

代码示例:

/**

  • 设备接口,定义了所有设备的基本行为。
    /
    interface Device {
    /
    *

    • 获取设备的输出字符串表示。
    • @return 输出字符串
      */
      String getOutputString();

    /**

    • 获取设备类型。
    • @return 设备类型
      */
      String getType();

    /**

    • 获取设备编号。
    • @return 设备编号
      */
      int getNumber();

    /**

    • 获取设备电阻。
    • @return 电阻值
      */
      double getResistance();

    /**

    • 设置设备电压。
    • @param voltage 电压值
      */
      void setVoltage(double voltage);

    /**

    • 获取设备电压。
    • @return 电压值
      */
      double getVoltage();
      }
      测试结果:
      通过增加详细的代码注释和设计文档,团队成员能够更快速地理解和维护代码,提升了项目的协作效率和代码质量。

4.改进建议
在对第七题和第八题的编码过程中,虽然取得了一定的成果,但仍有许多可以改进的地方。以下是我对相应题目编码改进的见解,旨在实现可持续的改进:

模块化设计的进一步优化:

现状: 虽然已经实现了模块化设计,但部分模块之间的依赖关系仍较紧密,影响了系统的灵活性。
建议: 通过引入更高级的设计模式,如依赖注入(Dependency Injection),进一步降低模块之间的耦合度,提升系统的可扩展性和可维护性。
增强电路模拟的准确性:

现状: 当前的电路模拟基于简化的电路理论,未能完全覆盖实际电路的复杂行为。
建议: 引入更精确的电路理论,如基尔霍夫定律(Kirchhoff's laws),并利用数值方法(如高斯消元法)进行电路求解,提升模拟的准确性。
引入配置文件与动态加载:

现状: 当前系统对电路的定义和设备的配置主要通过代码硬编码,缺乏灵活性。
建议: 通过引入配置文件(如JSON、XML),实现电路和设备的动态加载,提升系统的灵活性和适应性。
提升用户交互体验:

现状: 当前系统主要通过命令行进行交互,用户体验较为单一。
建议: 开发图形用户界面(GUI),提供更直观的电路设计和模拟体验,同时增加交互性功能,如拖拽设备、实时显示电压电流变化等。
完善错误处理与日志记录:

现状: 当前系统的错误处理较为基础,缺乏详细的日志记录,难以追踪问题。
建议: 引入更完善的错误处理机制,并通过日志记录系统运行的详细信息,便于问题的定位和解决。
优化代码性能:

现状: 在处理大规模电路时,系统性能存在瓶颈。
建议: 通过代码优化、并行计算等手段,提升系统的处理能力,确保在大规模电路模拟中的高效运行。
加强单元测试覆盖:

现状: 当前系统的单元测试覆盖率有限,部分模块缺乏充分的测试。
建议: 增加单元测试覆盖范围,确保每个模块和方法都经过充分测试,提升系统的可靠性和稳定性。
代码规范与审查:

现状: 部分代码存在命名不规范、注释不足等问题,影响了代码的可读性和维护性。
建议: 制定并遵循严格的代码规范,定期进行代码审查,确保代码质量和一致性。
通过以上改进建议,可以进一步提升系统的性能、灵活性和用户体验,为未来的项目开发打下更坚实的基础。

5.总结
回顾本阶段的三次题目集的学习与实践,我深刻体会到了理论与实践相结合的重要性。通过不断地编写、调试和优化代码,不仅巩固了所学的编程知识,还培养了系统设计和问题解决的能力。

5.1学到的知识与技能:

面向对象编程的深入理解: 通过设计和实现多种设备类,掌握了类的继承、接口的使用和多态性的应用。
设计模式的应用: 工厂模式、单例模式等设计模式的应用,提高了代码的可复用性和可维护性。
复杂系统的设计与实现: 通过电路模拟系统的设计,理解了系统架构的重要性,以及模块化设计对系统稳定性的影响。
代码优化与性能提升: 通过多次优化,掌握了代码性能分析与优化的方法,提升了编程效率和代码质量。
团队协作与版本控制: 通过与同学的协作开发,掌握了Git等版本控制工具的使用,提升了团队协作能力。
需要进一步学习与研究的方面:

高级算法与数据结构: 深入学习图算法、电路求解算法等,提升复杂问题的解决能力。
软件工程实践: 学习更多的软件工程方法,如敏捷开发、测试驱动开发(TDD),提升项目管理和开发效率。
系统架构与设计: 深入理解分布式系统、微服务架构等,提升系统设计和实现能力。
用户体验设计: 学习用户界面设计与用户体验优化,提升软件的易用性和用户满意度。
对教师、课程、作业、实验、组织方式的建议:

5.2教师方面:

提供更多实践机会: 在教学中增加更多的项目实践,让学生在实际操作中巩固所学知识。
及时反馈与指导: 对学生的作业和项目提供及时的反馈,帮助他们发现和解决问题。
课程设计方面:

模块化课程内容: 将课程内容进行模块化设计,每个模块涵盖不同的知识点,便于学生系统学习。
引入更多设计模式和架构知识: 增加设计模式、系统架构等内容,提升学生的设计思维和系统设计能力。
作业与实验方面:

增加难度与复杂性: 通过逐步增加作业的难度和复杂性,培养学生逐步解决复杂问题的能力。
多样化的作业形式: 引入不同形式的作业,如小组项目、开源贡献等,提升学生的团队协作和实际操作能力。
课上与课下组织方式:

鼓励团队合作: 在课堂上引导学生进行团队合作,提升他们的协作能力和沟通技巧。
提供更多资源支持: 提供丰富的学习资源,如在线教程、代码示例等,帮助学生自主学习和提升。
通过以上改进建议,能够更好地促进学生的全面发展,提升教学质量和学生的学习效果。

整个学期的学习感想
回顾整个学期的学习历程,从初识编程到逐步掌握复杂系统的设计与实现,我深感收获颇丰。在教师的悉心指导和同学们的共同努力下,我不仅掌握了扎实的编程基础,还培养了系统设计、问题分析与解决的能力。

5.3收获与成长:

知识的积累与应用: 通过多次的编程实践,我将理论知识转化为实际能力,能够独立设计和实现复杂的系统。
解决问题的能力: 在面对各种编程挑战和系统设计问题时,我学会了冷静分析、系统思考,逐步提升了解决问题的效率和质量。
团队合作与沟通: 在项目开发过程中,学会了与团队成员有效沟通、协作分工,提升了团队合作能力。
自我驱动与持续学习: 在完成课程任务的同时,我培养了自我驱动的学习习惯,积极探索新知识、新技术,保持了持续学习的动力。
未来展望:

展望未来,我将继续深化编程技能,拓展系统设计与架构的知识领域,力求在软件开发领域取得更大的进步。同时,我也希望能够将所学知识应用于实际项目中,为社会发展贡献自己的力量。

5.4感谢与致谢:

衷心感谢本学期的教师团队,他们以丰富的知识、耐心的指导和严谨的教学态度,帮助我们克服了一个又一个学习中的难题。感谢同学们的互助与支持,在共同的学习过程中,我们一起成长、共同进步。未来的学习旅程中,我期待与大家继续携手,共同迎接更多的挑战与机遇。

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

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

相关文章

Python 中使用 Matplotlib 进行多图绘制

Python 中使用 Matplotlib 进行多图绘制 Matplotlib 是 Python 中非常强大的数据可视化工具,它可以用来生成简单到复杂的各种图形。无论是处理单张图表还是多图并列展示,Matplotlib 都能提供高效的支持。在本篇文章中,我们将介绍如何使用 Matplotlib 绘制多图,以便在同一画…

fping 的使用方法

fping简介 fping是一个小型命令行工具,用于向网络主机发送ICMP回应请求,类似于ping,但在ping多个主机时性能要高得多。 fping完全不同于ping,因为可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件。 与ping要等待某一主机连接超时或发回反馈…

.NET Bioss相关数据读写

本文我们介绍针对Bios如何读取、写入数据,比如最常见的SN读取以及烧录 WMI查询 先看看WMI方式,可以用于查询和管理Windows系统的各种信息,包括读取BIOS信息 WMI-Win32_BIOS,可以查看Bios版本、制造商以及Bios Sn等:1 var searcher = new ManagementObjectSear…

家居强电电路模拟程序总结

一、前言:这两次的PTA作业第一次是以前两次家居强电电路模拟程序为基础所扩展的,在上一次作业的基础上增加了一个新的互斥开关,互斥开关的电路符号为H,其12引脚之间电阻为5欧,13引脚之间电阻为10欧,还增加了一个新的受控窗帘,受控窗帘的电路符号为S,窗帘电阻为15欧,其…

Python 正则表达式进阶用法:字符集与字符范围详解

Python 正则表达式进阶用法:字符集与字符范围详解 正则表达式是文本处理和数据清洗中不可或缺的工具。在前面的学习中,我们已经了解了基本的正则表达式匹配,如匹配单个字符、字符串开始和结束的位置等。今天,我们将进入正则表达式的一个进阶主题:字符集(Character Set)和…

如何免费使用 Termius Pro 版?Termius 工具下载与破解教程

今天想和大家聊聊 Termius 工具,Termius的下载与Termius破解教程,一款跨平台的 SSH/SFTP 终端工具。它不仅功能强大,还特别适合需要频繁上传文件夹和进行远程管理的小伙伴。无论你是程序员、运维工程师,还是需要远程管理服务器的爱好者,这款工具都能成为你的得力助手!今天…

Python 正则表达式进阶用法:边界匹配

Python 正则表达式进阶用法:边界匹配 正则表达式是一种强大的工具,用于处理文本中的模式匹配。它广泛应用于文本查找、替换、数据清洗等任务。在学习了正则表达式的基础知识后,掌握更高级的用法将使得正则表达式的应用更加灵活。边界匹配(Boundary Matching)是正则表达式中…

java-BLOG3

一:前言知识点总结题目集7控制设备:引入了开关、分档调速器、连续调速器和互斥开关四种控制设备,重点在于理解这些设备的工作原理及其在电路中的作用。 受控设备:包括灯(白炽灯、日光灯)和风扇(吊扇、落地扇),以及新增的受控窗帘。主要考察学生对不同设备工作状态的理…

学习笔记 - 汉明码

汉明码属于一种具备纠错功能的线性分组码。 在数据传输时,受外界干扰影响,单个比特可能产生差错。汉明码借助添加的冗余监督位,依照特定规则精准判断出错比特位,进而完成纠正,确保信息恢复如初,宛如给数据披上一层“防护甲”,使其即便处于复杂环境,也能维持精准可靠,在…

学习笔记 - 摩斯电码

摩斯电码由美国人塞缪尔莫尔斯等人发明,仅用“”(点)与“-”(划)两种符号,按不同排列组合来代表英文字母、数字和标点。起初应用于有线电报,后应用到无线电通信,曾长期担任关键角色。如今,虽因通信技术革新而不再主流,但在业余无线电爱好者群体中依旧流行,紧急救援时…

2024第一届Solar杯应急响应挑战赛WP

对于一个只学了2个月的小白来说这种比赛难度还是太高了,还要沉淀一下QAQ 内存取证-1 题目描述 题目文件:SERVER-2008-20241220-162057 请找到rdp连接的跳板地址 flag格式 flag{1.1.1.1} 先imageinfo然后netscan F:\CTF软件合集\Misc杂项\隐写工具\取证类\volatility\Volatili…

App信息收集

引子:上一章主要介绍了信息收集中的Web信息收集,包括要收集什么信息、该怎样去做等内容。而本章则简单介绍一下当目标为App时该如何进行信息收集。由于本篇章为信息收集篇,因此很多内容笔者并没有深究(ps:其实是深究不明白),或许等一轮学完后再回头看时会明白很多吧。免…