技术周总结 2024.05.27~06.02(java bean冲突 软件工程)

文章目录

  • 一、05.28 周二
    • 1.1)问题01:java 引用的jar包中bean名称冲突了,怎么解决?
    • 1.2)问题02:使用SparkSession将json字符串转成 DataFrame
  • 二、06.01 周六
    • 2.1)问题01:系统架构师考试中的“软件工程”的知识点
      • 1. 软件工程基础知识
      • 2. 软件开发过程
      • 3. 软件项目管理
      • 4. 软件质量保证
      • 5. 软件工程方法与工具
      • 6. 软件维护与演化
      • 7. 软件过程改进
      • 8. 软件工程前沿
      • 9. 软件工程实践
      • 10. 法律与道德
    • 2.2)问题02:净室软件工程
      • 净室软件工程的主要特点
      • 净室软件工程的开发过程
      • 净室软件工程的优点和缺点
      • 结论
    • 2.3)问题03: 逆向工程的含义
      • 逆向工程的目的
      • 逆向工程的方法和工具
        • 方法
        • 工具
      • 逆向工程的法律和伦理问题
      • 结论

一、05.28 周二

1.1)问题01:java 引用的jar包中bean名称冲突了,怎么解决?

在Java项目中,如果引用的JAR包中存在Bean名称冲突,可以考虑以下几种解决方法:

  1. 使用Spring的别名功能:
    使用Spring的@Qualifier注解或者在XML配置中使用alias来区分不同的Bean。

    @Autowired
    @Qualifier("beanName1")
    private MyBean myBean1;@Autowired
    @Qualifier("beanName2")
    private MyBean myBean2;
    
  2. 自定义Bean名称:
    可以在定义Bean时,通过注解或者XML配置自定义Bean的名称。

    使用注解:

    @Bean(name = "customBeanName1")
    public MyBean myBean1() {return new MyBean();
    }@Bean(name = "customBeanName2")
    public MyBean myBean2() {return new MyBean();
    }
    

    使用XML配置:

    <bean id="customBeanName1" class="com.example.MyBean"/>
    <bean id="customBeanName2" class="com.example.MyBean"/>
    
  3. 使用不同的配置文件:
    将不同的Bean配置在不同的Spring配置文件中,然后根据需要加载相应的配置文件。

    <!-- applicationContext1.xml -->
    <bean id="bean1" class="com.example.MyBean"/>
    
    <!-- applicationContext2.xml -->
    <bean id="bean2" class="com.example.MyBean"/>
    
  4. 重命名Bean:
    如果是第三方库中的Bean名称冲突,可以通过扩展配置文件或者自定义配置来重命名Bean。

    @Bean(name = "customBeanName")
    public ThirdPartyBean thirdPartyBean() {return new ThirdPartyBean();
    }
    

通过这些方法,可以有效地解决Java项目中引用的JAR包中Bean名称冲突的问题。

1.2)问题02:使用SparkSession将json字符串转成 DataFrame

    val jsonString = "{\"id\":1,\"name\":\"光明\"}"val ds = sparkSession.createDataset(Seq(jsonString))(Encoders.STRING)var newAddDF : DataFrame = sparkSession.read.json(ds)

二、06.01 周六

2.1)问题01:系统架构师考试中的“软件工程”的知识点

中国系统架构师考试(全国计算机技术与软件专业技术资格(水平)考试,简称软考)的“软件工程”部分涵盖了广泛的知识点,主要涉及软件开发生命周期的各个阶段、软件工程的基本原理和方法、常见的软件开发方法和技术等。以下是软件工程部分的一些主要知识点:

1. 软件工程基础知识

  • 软件工程的定义与目标
  • 软件工程的发展历程与现状
  • 软件危机及其解决方法
  • 软件生命周期模型
    • 瀑布模型
    • 增量模型
    • 螺旋模型
    • V模型
    • 敏捷开发模型

2. 软件开发过程

  • 软件需求工程
    • 需求获取
    • 需求分析
    • 需求规格说明书
    • 需求验证
  • 软件设计
    • 概要设计
    • 详细设计
    • 设计模式(如MVC、工厂模式、单例模式等)
  • 软件实现
    • 编码规范
    • 编程语言选择
    • 重构与优化
  • 软件测试
    • 测试类型(单元测试、集成测试、系统测试、验收测试)
    • 测试策略与方法(白盒测试、黑盒测试、灰盒测试)
    • 测试用例设计
    • 自动化测试工具

3. 软件项目管理

  • 项目计划与估算
    • 估算技术(COCOMO模型、功能点分析)
    • 项目计划编制
  • 项目监控与控制
    • 进度管理
    • 成本管理
    • 风险管理
  • 项目组织与团队管理
    • 团队组建与角色分配
    • 团队沟通与协调
  • 项目收尾
    • 验收与评审
    • 项目总结与经验教训

4. 软件质量保证

  • 软件质量模型(ISO/IEC 9126)
  • 质量管理体系(CMMI,ISO 9001)
  • 配置管理
    • 配置项与配置库
    • 版本控制
    • 变更管理
  • 质量保证活动
    • 质量评审
    • 质量控制

5. 软件工程方法与工具

  • 面向对象方法
    • 面向对象分析(OOA)
    • 面向对象设计(OOD)
    • 面向对象编程(OOP)
  • 结构化方法
    • 结构化分析(SA)
    • 结构化设计(SD)
    • 结构化编程
  • 软件建模工具(如UML)
  • 集成开发环境(IDE)
  • 配置管理工具(如Git, SVN)
  • 项目管理工具(如JIRA, Microsoft Project)

6. 软件维护与演化

  • 软件维护的类型(纠错性维护、适应性维护、完善性维护、预防性维护)
  • 软件再工程
  • 软件逆向工程
  • 软件重构与优化

7. 软件过程改进

  • 软件过程评估
  • 软件过程改进模型(如CMMI,SPICE)
  • 持续集成与持续交付(CI/CD)

8. 软件工程前沿

  • 云计算与软件工程
  • 大数据与软件工程
  • 人工智能与软件工程
  • 微服务架构与DevOps

9. 软件工程实践

  • 实例分析与案例研究
  • 软件工程工具与实践
  • 软件开发最佳实践

10. 法律与道德

  • 知识产权保护
  • 软件工程师职业道德

考试涉及的知识点较为全面,建议考生在复习时全面覆盖这些内容,并结合历年真题进行针对性练习。

2.2)问题02:净室软件工程

净室软件工程(Cleanroom Software Engineering)是一种旨在提高软件质量并减少缺陷的软件开发方法。它借鉴了制造业中的净室理念,通过严格的设计和验证过程来防止缺陷的产生,而不是依赖后期的测试和调试来发现和修正缺陷。

净室软件工程的主要特点

  1. 预防为主的理念
    净室软件工程强调在软件开发的早期阶段,通过严格的规范和方法来预防缺陷的产生,而不是在后期发现和修复缺陷。

  2. 形式化的规格说明
    使用数学或形式化的方法来描述软件的需求和功能。这些形式化的规格说明为软件的设计和验证提供了一个精确的基础。

  3. 结构化的开发过程
    净室软件工程采用迭代和增量式开发方法,通过分阶段的增量构建逐步开发出完整的软件系统。

  4. 严格的验证和审核
    在每个开发阶段进行严格的验证和审核,以确保设计和实现都符合规格说明。验证过程通常包括审查、模拟和形式验证等方法。

  5. 统计质量控制
    通过统计方法控制和评估软件的质量和可靠性。净室软件工程采用统计抽样技术来评估软件的缺陷率和可靠性,从而确保产品的高质量。

净室软件工程的开发过程

净室软件工程的开发过程通常包括以下几个阶段:

  1. 需求分析
    使用形式化方法进行需求分析,生成精确的需求规格说明。

  2. 功能规格说明
    根据需求规格说明,编写形式化的功能规格说明。功能规格说明应明确描述软件的外部行为。

  3. 设计
    基于功能规格说明,进行软件的详细设计。设计过程通常包括模块划分、接口设计和数据结构设计。

  4. 代码实现
    根据设计说明,编写代码。净室软件工程强调代码的清晰和简洁,并遵循严格的编码规范。

  5. 验证和审核
    在每个阶段进行严格的验证和审核,确保设计和实现符合规格说明。常用的验证方法包括代码走查、模拟和形式验证。

  6. 统计质量控制
    通过统计方法评估软件的缺陷率和可靠性,确保产品的高质量。通常采用统计抽样技术来评估软件的质量。

净室软件工程的优点和缺点

优点

  • 高质量和高可靠性:通过严格的规范和验证方法,净室软件工程能够显著提高软件的质量和可靠性。
  • 预防缺陷:强调在开发的早期阶段预防缺陷的产生,从而减少后期的缺陷修复成本。
  • 可预测性:通过统计质量控制,能够对软件的质量和可靠性进行准确的预测和评估。

缺点

  • 高成本和高要求:净室软件工程需要投入大量的时间和资源进行严格的规范和验证,开发成本较高。
  • 复杂性:形式化的规格说明和验证方法需要开发人员具备较高的技术水平和数学素养。
  • 适用范围有限:净室软件工程适用于对质量和可靠性要求极高的软件项目,但对于快速开发和迭代的软件项目可能不太适用。

结论

净室软件工程是一种通过严格的规范和验证方法来预防缺陷、提高软件质量和可靠性的软件开发方法。尽管其实施成本较高,但在对软件质量和可靠性要求极高的领域(如航空、航天、医疗等)具有重要应用价值。

2.3)问题03: 逆向工程的含义

在计算机科学和软件工程中,逆向工程(Reverse Engineering)指的是对软件或硬件产品进行分析以理解其设计和实现细节的过程。逆向工程的主要目的是通过对成品的研究,推导出系统的功能和结构。这个过程通常用于多种目的,例如修复缺陷、分析恶意软件、安全评估、系统兼容性分析以及学习和理解系统的工作原理等。

逆向工程的目的

  1. 修复和维护:当源代码不可用或遗失时,通过逆向工程来理解系统的工作原理,帮助修复缺陷和维护系统。
  2. 安全分析:分析软件或硬件系统的安全性,发现潜在的漏洞和安全隐患。
  3. 兼容性和互操作性:了解系统的接口和协议,以便开发与其兼容的系统或设备。
  4. 恶意软件分析:研究恶意软件(如病毒、木马)的行为和影响,帮助开发防御和修复措施。
  5. 学习和教育:通过逆向工程来理解复杂系统的设计和实现,提升技术能力和知识。
  6. 性能优化:通过分析系统的实现,找到性能瓶颈并进行优化。

逆向工程的方法和工具

方法
  1. 静态分析:不运行程序,直接分析程序的代码和数据。常用方法包括反汇编和反编译。
  2. 动态分析:在运行时对程序进行分析,观察程序的行为和状态变化。常用方法包括调试和运行时监控。
  3. 协议分析:对网络通信协议进行逆向工程,以理解数据交换的格式和流程。
  4. 文件格式分析:分析文件格式和数据结构,以理解和解析文件内容。
工具
  1. 反汇编工具:如IDA Pro、Ghidra,用于将二进制代码转换为汇编代码。
  2. 反编译工具:如JD-GUI、JEB,用于将二进制代码转换为高级语言代码(如Java、C等)。
  3. 调试器:如OllyDbg、WinDbg,用于在运行时分析和调试程序。
  4. 网络分析工具:如Wireshark,用于捕获和分析网络通信数据。
  5. 文件分析工具:如010 Editor,用于分析和编辑二进制文件。

逆向工程的法律和伦理问题

逆向工程在法律和伦理方面具有一定的争议性。不同国家和地区对逆向工程的法律规定不同。在进行逆向工程时,需要注意以下几点:

  1. 版权和专利法:逆向工程可能涉及对受版权和专利保护的软件和硬件的分析,需要遵守相关法律。
  2. 软件许可协议:许多软件许可协议中禁止逆向工程,违反协议可能导致法律纠纷。
  3. 信息安全和隐私:在进行逆向工程时,应注意保护信息安全和个人隐私,不得非法获取和利用他人的数据。
  4. 商业道德:逆向工程应以合法和合伦理的方式进行,不得用于侵权、盗版或其他不正当竞争行为。

结论

逆向工程是一种强大的技术手段,广泛应用于软件和硬件的分析、维护、安全评估等领域。尽管其具有合法和正当的用途,但在使用时需要谨慎,遵守相关法律法规和伦理规范。

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

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

相关文章

【ArcGISPro SDK】构建多面体要素

结果展示 每个面构建顺序 代码 using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Catalog; using ArcGIS.Desktop.Core; using ArcGIS.Desktop.Editing; using ArcGIS.Desktop.Extensions; using ArcGIS.Desktop.Framework;…

nginx location正则表达式+案例解析

1、nginx常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置$ &#xff1a;匹配输入字符串的结束位置 *&#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” &#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”…

Ubuntu server 24.04 (Linux) 搭建DNS服务器 通过Nginx实现UDP/TCP负载均衡 轻量级dnsmasq服务器

一 系统运行环境 testtest:~$ cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubuntu ID_LIKEdebian HOME_URL"https://www.…

全域外卖项目能不能做?可行性分析来了!

作为新的网络热词&#xff0c;全域外卖的传播范围随着时间的推移而不断扩大&#xff0c;从最初的行业内部逐步扩散到多个创业者社区&#xff0c;让许多创业者都有了做全域外卖项目的想法。但是&#xff0c;由于全域外卖赛道刚兴起不久&#xff0c;因此&#xff0c;目前大多数人…

硬件高效的线性注意力机制Gated Linear Attention论文阅读

0x0. 前言 上篇文章 flash-linear-attention中的Chunkwise并行算法的理解 根据GLA Transformer Paper&#xff08;https://arxiv.org/pdf/2312.06635 作者是这位大佬 sonta&#xff09;通过对Linear Attention的完全并行和RNN以及Chunkwise形式的介绍理解了Linear Attention的…

Chrome浏览器打开无痕模式的方法

快捷键&#xff1a;同时按住CtrlshiftN 如图&#xff0c;系统会新开一个无痕标签页&#xff0c;不需要了点右上角关闭就可以了。

Linux系统TCP连接性能

一、测试环境 debian11 64bit 设置系统网络限制 sudo vi /etc/sysctl.conffs.file-max10485760net.ipv4.ip_local_port_range1024 65535#net.ipv4.tcp_tw_recycle1net.ipv4.tcp_tw_reuse1net.ipv4.tcp_timestamps1net.core.rmem_default209715200net.core.wmem_default2097152…

Linux用户和用户组的操作

用户管理 以Tom做为用户名 以dev做为用户组 增加用户 sudo adduser Tom #不建议使用useradd/userdel系列的命令删除用户 sudo deluser Tom --remove-home # 删除Tom用户及home目录 重置密码 sudo passwd Tom加入用户组 sudo usermod -a -G dev Tom # sudo usermod -aG …

STM32自己从零开始实操04:显示电路原理图

一、TFT-LCD 屏接口 1.1指路 以下是该部分的设计出来后的实物图&#xff0c;我觉得看到实物图可能更方便理解这部分的设计。 图1 实物图 这部分设计的是一个屏幕的接口&#xff0c;很简单。使用的屏幕是&#xff1a;2.8inch 16BIT Module MRB2801。 1.2数据手册 &#xff0…

Python汉化安装全攻略:深度解析与实战挑战

Python汉化安装全攻略&#xff1a;深度解析与实战挑战 在编程的世界里&#xff0c;Python以其简洁易懂的语法和强大的功能库赢得了众多开发者的青睐。然而&#xff0c;对于非英语母语的初学者来说&#xff0c;语言障碍可能成为一个不小的挑战。因此&#xff0c;Python的汉化安…

uinty游戏界面模糊的解决方法

1.把低分辨率关掉 2.调缩放&#xff0c;不要调长宽高 3.调整画布的分辨率 4.调整图片的像素点

如何恢复永久删除的照片?

“嗨&#xff0c;我永久删除了电脑上的很多照片。回收站被清空&#xff0c;照片会永久丢失吗&#xff1f;有什么方法可以恢复这些已删除的照片吗&#xff1f; 我们所有人都经历过同样的事情&#xff1a;我们的硬盘上存储了文件、视频或照片&#xff0c;但不小心删除了它。这个…

短信API接口相比邮件API接口的优缺点对比?

API接口怎么做开发集成&#xff1f;如何保障API接口的安全性&#xff1f; 短信API接口和邮件API接口作为两种主要的通信方式&#xff0c;各有其独特的优缺点。接下来&#xff0c;Aok将对这两种接口进行详细的对比分析&#xff0c;并特别提及AokSend邮件API的优点。 短信API接…

css实现不同设备适配

CSS可以通过媒体查询&#xff08;Media Queries&#xff09;来实现不同设备的适配。媒体查询可以根据设备的特性&#xff0c;如屏幕尺寸、分辨率等&#xff0c;来应用不同的样式规则。 以下是一些常见的方法来实现不同设备的适配&#xff1a; 1. **使用媒体查询** - 通过在CSS中…

最大堆,最小堆,优先队列,堆排序 LC例题-找第K大元素

LC215 数组中的第K个最大元素 class Solution {static Comparator<Integer> cmp new Comparator<Integer>(){Overridepublic int compare(Integer i1, Integer i2){return i1 - i2;//升序排列// return i2 - i1&#xff1b;//降序}}; public static int findKthL…

湖南(品牌定位)源点咨询 企业如何选择品牌定位差异化调研

湖南源点认为&#xff1a;精准且占据消费者认知&#xff0c;探寻与消费者共鸣的常态化品牌定位调研是企业品牌长远健康发展的基石。 品牌定位里要强调品牌的差异。英文是point of difference. 这个差异点就是强调品牌能带来的利益&#xff08;benefit&#xff09;。 这个“利…

【NoSQL数据库】Redis命令、持久化、主从复制

Redis命令、持久化、主从复制 redis配置 Redis命令、持久化、主从复制Redis数据类型redis数据库常用命令redis多数据库常用命令1、多数据库间切换2、多数据库间移动数据3、清除数据库内数据 key命令1、keys 命令2、判断键值是否存在exists3、删除当前数据库的指定key del4、获取…

记录layui-table中操作列的宽度随着权限变化而变化

最近做一个项目&#xff0c;某个页面因为角色不同&#xff0c;所以显示的的按钮有所不同。 管理员权限 普通人员权限 layui引入的table宽度是写死的&#xff0c;不能随着自动变化&#xff0c;查了一些资料&#xff0c;让写入css的方法 .layui-table th, .layui-table td { whi…

[MYSQL]销售分析III

表&#xff1a; Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是该表的主键&#xff08;具有唯一值的列&am…

【JavaScript脚本宇宙】深入JavaScript文件上传库: 功能与应用一网打尽

模块化轻量级的文件上传&#xff1a;未来的趋势 前言 在这个时代&#xff0c;我们的生活和工作都离不开文件上传。为了解决文件上传问题&#xff0c;许多优秀的JavaScript库被创造出来。本文将详细介绍六个不同的JavaScript文件上传库&#xff0c;包括它们的概述、主要特性、…