技术周总结 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名称冲突,可以考虑以下几种解决方法:
-
使用Spring的别名功能:
使用Spring的@Qualifier
注解或者在XML配置中使用alias
来区分不同的Bean。@Autowired @Qualifier("beanName1") private MyBean myBean1;@Autowired @Qualifier("beanName2") private MyBean myBean2;
-
自定义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"/>
-
使用不同的配置文件:
将不同的Bean配置在不同的Spring配置文件中,然后根据需要加载相应的配置文件。<!-- applicationContext1.xml --> <bean id="bean1" class="com.example.MyBean"/>
<!-- applicationContext2.xml --> <bean id="bean2" class="com.example.MyBean"/>
-
重命名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)是一种旨在提高软件质量并减少缺陷的软件开发方法。它借鉴了制造业中的净室理念,通过严格的设计和验证过程来防止缺陷的产生,而不是依赖后期的测试和调试来发现和修正缺陷。
净室软件工程的主要特点
-
预防为主的理念:
净室软件工程强调在软件开发的早期阶段,通过严格的规范和方法来预防缺陷的产生,而不是在后期发现和修复缺陷。 -
形式化的规格说明:
使用数学或形式化的方法来描述软件的需求和功能。这些形式化的规格说明为软件的设计和验证提供了一个精确的基础。 -
结构化的开发过程:
净室软件工程采用迭代和增量式开发方法,通过分阶段的增量构建逐步开发出完整的软件系统。 -
严格的验证和审核:
在每个开发阶段进行严格的验证和审核,以确保设计和实现都符合规格说明。验证过程通常包括审查、模拟和形式验证等方法。 -
统计质量控制:
通过统计方法控制和评估软件的质量和可靠性。净室软件工程采用统计抽样技术来评估软件的缺陷率和可靠性,从而确保产品的高质量。
净室软件工程的开发过程
净室软件工程的开发过程通常包括以下几个阶段:
-
需求分析:
使用形式化方法进行需求分析,生成精确的需求规格说明。 -
功能规格说明:
根据需求规格说明,编写形式化的功能规格说明。功能规格说明应明确描述软件的外部行为。 -
设计:
基于功能规格说明,进行软件的详细设计。设计过程通常包括模块划分、接口设计和数据结构设计。 -
代码实现:
根据设计说明,编写代码。净室软件工程强调代码的清晰和简洁,并遵循严格的编码规范。 -
验证和审核:
在每个阶段进行严格的验证和审核,确保设计和实现符合规格说明。常用的验证方法包括代码走查、模拟和形式验证。 -
统计质量控制:
通过统计方法评估软件的缺陷率和可靠性,确保产品的高质量。通常采用统计抽样技术来评估软件的质量。
净室软件工程的优点和缺点
优点:
- 高质量和高可靠性:通过严格的规范和验证方法,净室软件工程能够显著提高软件的质量和可靠性。
- 预防缺陷:强调在开发的早期阶段预防缺陷的产生,从而减少后期的缺陷修复成本。
- 可预测性:通过统计质量控制,能够对软件的质量和可靠性进行准确的预测和评估。
缺点:
- 高成本和高要求:净室软件工程需要投入大量的时间和资源进行严格的规范和验证,开发成本较高。
- 复杂性:形式化的规格说明和验证方法需要开发人员具备较高的技术水平和数学素养。
- 适用范围有限:净室软件工程适用于对质量和可靠性要求极高的软件项目,但对于快速开发和迭代的软件项目可能不太适用。
结论
净室软件工程是一种通过严格的规范和验证方法来预防缺陷、提高软件质量和可靠性的软件开发方法。尽管其实施成本较高,但在对软件质量和可靠性要求极高的领域(如航空、航天、医疗等)具有重要应用价值。
2.3)问题03: 逆向工程的含义
在计算机科学和软件工程中,逆向工程(Reverse Engineering)指的是对软件或硬件产品进行分析以理解其设计和实现细节的过程。逆向工程的主要目的是通过对成品的研究,推导出系统的功能和结构。这个过程通常用于多种目的,例如修复缺陷、分析恶意软件、安全评估、系统兼容性分析以及学习和理解系统的工作原理等。
逆向工程的目的
- 修复和维护:当源代码不可用或遗失时,通过逆向工程来理解系统的工作原理,帮助修复缺陷和维护系统。
- 安全分析:分析软件或硬件系统的安全性,发现潜在的漏洞和安全隐患。
- 兼容性和互操作性:了解系统的接口和协议,以便开发与其兼容的系统或设备。
- 恶意软件分析:研究恶意软件(如病毒、木马)的行为和影响,帮助开发防御和修复措施。
- 学习和教育:通过逆向工程来理解复杂系统的设计和实现,提升技术能力和知识。
- 性能优化:通过分析系统的实现,找到性能瓶颈并进行优化。
逆向工程的方法和工具
方法
- 静态分析:不运行程序,直接分析程序的代码和数据。常用方法包括反汇编和反编译。
- 动态分析:在运行时对程序进行分析,观察程序的行为和状态变化。常用方法包括调试和运行时监控。
- 协议分析:对网络通信协议进行逆向工程,以理解数据交换的格式和流程。
- 文件格式分析:分析文件格式和数据结构,以理解和解析文件内容。
工具
- 反汇编工具:如IDA Pro、Ghidra,用于将二进制代码转换为汇编代码。
- 反编译工具:如JD-GUI、JEB,用于将二进制代码转换为高级语言代码(如Java、C等)。
- 调试器:如OllyDbg、WinDbg,用于在运行时分析和调试程序。
- 网络分析工具:如Wireshark,用于捕获和分析网络通信数据。
- 文件分析工具:如010 Editor,用于分析和编辑二进制文件。
逆向工程的法律和伦理问题
逆向工程在法律和伦理方面具有一定的争议性。不同国家和地区对逆向工程的法律规定不同。在进行逆向工程时,需要注意以下几点:
- 版权和专利法:逆向工程可能涉及对受版权和专利保护的软件和硬件的分析,需要遵守相关法律。
- 软件许可协议:许多软件许可协议中禁止逆向工程,违反协议可能导致法律纠纷。
- 信息安全和隐私:在进行逆向工程时,应注意保护信息安全和个人隐私,不得非法获取和利用他人的数据。
- 商业道德:逆向工程应以合法和合伦理的方式进行,不得用于侵权、盗版或其他不正当竞争行为。
结论
逆向工程是一种强大的技术手段,广泛应用于软件和硬件的分析、维护、安全评估等领域。尽管其具有合法和正当的用途,但在使用时需要谨慎,遵守相关法律法规和伦理规范。
相关文章:

技术周总结 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:系统架构师考试…...

「前端+鸿蒙」核心技术HTML5+CSS3(八)
1、网站布局详解 网站布局是前端开发中的核心概念之一,它决定了网页的视觉结构和用户浏览的逻辑顺序。以下是几种常见的布局方式及其代码示例: 固定布局: 固定布局通常具有固定的宽度和高度,适用于传统的桌面视图。 <!DOCTYPE html> <html> <head><…...

15届蓝桥杯决赛,java b组,蒟蒻赛时所写的题思路
这次题的数量是10题,初赛是8题,还多了两题,个人感觉java b组的题意还是比较清晰的(不存在读不懂题的情况),但是时间感觉还是不够用,第4题一开始不会写,后面记起来写到结束也没调出来…...

2024蓝桥杯国赛C++研究生组游记+个人题解
Day0 开始复习,过了一遍大部分板子 本来打算再学一遍SAM,但是想到去年考了字符串大题今年应该不会再考了吧。。 过了一遍数据结构和图论,就1点了 两点的时候还没睡着,舍友打游戏好像打到2点过。。 Day1 相当困 第一题&…...

C#WPF数字大屏项目实战07--当日产量
1、第2列布局 第2列分三行,第一行分6列 2、当日产量布局 3、产量数据布局 运行效果 4、计划产量和完成度 运行效果 5、良品率布局 1、添加用户控件 2、用户控件绘制圆 2、使用用户控件 3、运行效果 4、注意点 这三个数值目前是静态的,可以由后台程序项…...

MyBatis源码分析--02:SqlSession建立过程
我们再来看看MyBatis使用流程: InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…...

SOUI Combobox 实现半透明弹出下拉框
SOUI默认情况下combobox的弹出框不是半透明的,这个时候如果背景透明时,滚动条会出现黑色背景,这个时候只需要在在combobox下添加一个子节点 <dropdownStyle translucent"1"></dropdownStyle> 这样一个窗口默认即实现…...

Python 猜数系统 PyQt框架 有GUI界面 (源码在最后)【含Python源码 MX_002期】
一、系统简介 猜数界面是一个基于PyQt框架创建的简单图形用户界面(GUI),用于让用户参与猜数字游戏。简要介绍一下界面的各个部分: 游戏开始按钮:点击此按钮开始游戏。在点击前,需要在文本框中输入参与游戏…...

npm install pubsub-js报错的解决汇总
我在练习谷粒商城P83时,选择分类时触发向后端请求选择分类catId绑定的品牌数据,发现前端控制台报错: "PubSub is not definded",找不到pubsub。 因为缺少pubsub包,所以开始安装此包。 于是在网上一顿搜索猛如虎&…...

nuxt2:自定义指令 / v-xxx / directives / 理解 / 使用方法 / DEMO
一、理解自定义指令 在 vue 中提供了一些对于页面和数据更为方便的输出,这些操作就叫做指令,以 v-xxx 表示,比如 html 页面中的属性 <div v-xxx ></div>。自定义指令很大程度提高了开发效率,提高了工程化水平&#x…...

基础—SQL—DCL(数据控制语言)小结
一、总结 在SQL分类中的DCL语句部分,主要讲到了两个部分的知识。 1、用户管理 用户管理,主要是管理哪些用户可以访问当前 mysql 数据库。 包括:创建用户、修改用户密码以及删除用户 2、权限控制 权限管理,主要是控制我们当前用户…...

一文彻底讲透 PyTorch
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…...

JVM常用概念之锁粗化和循环
1.什么是锁粗化 锁粗化一般指有效地合并几个相邻的锁定块,从而减少锁定开销。如下述代码所示: 锁粗化前代码: synchronized (obj) {// statements 1 } synchronized (obj) {// statements 2 }锁粗化后代码: synchronized (obj)…...

HTML (总结黑马的)
<br>换行 <hr>水平线 div 独占一行 span 不换行 header 网页头部 nav 网页导航 footer 网页底部 aside 网页侧边栏 section 网页区块 article 网页文章 空格 < 小于号 > 大于号 图片: <img src"./cat.jpg" alt&q…...

YOLOv8 segment介绍
1.YOLOv8图像分割支持的数据格式: (1).用于训练YOLOv8分割模型的数据集标签格式如下: 1).每幅图像对应一个文本文件:数据集中的每幅图像都有一个与图像文件同名的对应文本文件,扩展名为".txt"; 2).文本文件中每个目标(object)占一行…...

PMBOK® 第六版 项目整合管理概念
目录 读后感—PMBOK第六版 目录 项目往往会牵涉到众多专业的知识以及来自不同专业、具有不同性格且可能处在不同地理位置的人员,存在着诸多不同分工的状况。要是没有统一的目标,相互之间也没有有效的沟通机制,并且不存在计划、监控以及平衡等…...

【Qt】【模型视图架构】代理模型
文章目录 代理模型简单介绍QSortFilterProxyModel类简单介绍排序过滤子类化 代理模型简单介绍 代理模型的作用是可以将一个模型中的数据进行排序或者过滤,然后提供给视图进行显示。 如下所示,创建一个源模型、一个代理模型,界面上创建一个列…...

Flutter 中的 IconTheme 小部件:全面指南
Flutter 中的 IconTheme 小部件:全面指南 Flutter 是一个功能丰富的 UI 开发框架,它允许开发者使用 Dart 语言来构建跨平台的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,IconTheme 是一个用于设置应用中图标主题的小部件,…...

virtualbox虚拟机、centos7安装增强工具
文章目录 1. virtualBox语言设置2. 设置终端启动快捷键3. 添加virtualbox 增强工具4. 设置共享文件夹 1. virtualBox语言设置 virtualbox -> file -> perferences -> language ->选择对应的语言 -> OK virtualbox -> 管理 -> 全局设定 -> 语言 -> …...

Kotlin 泛型
文章目录 定义泛型属性泛型函数泛型类或接口 where 声明多个约束泛型具体化in、out 限制泛型输入输出 定义 有时候我们会有这样的需求:一个类可以操作某一类型的对象,并且限定只有该类型的参数才能执行相关的操作。 如果我们直接指定该类型Intÿ…...

Tomcat 面试题(一)
1. 简述什么是Tomcat ? Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP)技术,提供了一个运行Java Web应用程序的平台。Tomcat由Apache软件基金会维护,并广泛用于开发和部署Web应用程序。 Tom…...

跟踪一个Pytorch Module在训练过程中的内存分配情况
跟踪一个Pytorch Module在训练过程中的内存分配情况 代码输出 目的:跟踪一个Pytorch Module在训练过程中的内存分配情况 方法: 1.通过pre_hook module的来区分module的边界 2.通过__torch_dispatch__拦截所有的aten算子,计算在该算子中新创建tensor的总内存占用量 3.通过tensor…...

LeetCode 2965.找出缺失和重复的数字:小数据?我选择暴力(附优化方法清单:O(1)空间方法×3)
【LetMeFly】2965.找出缺失和重复的数字:小数据?我选择暴力(附优化方法清单:O(1)空间方法3) 力扣题目链接:https://leetcode.cn/problems/find-missing-and-repeated-values/ 给你一个下标从 0 开始的二维…...

【运维】VMware Workstation 虚拟机内无网络的解决办法(或许可行)
【使用桥接模式】 【重置网络】 这个过程涉及管理Linux系统中的网络驱动程序和网络管理工具。以下是每个步骤的详细解释: 卸载网络驱动模块: sudo rmmod e1000 sudo rmmod e1000e sudo rmmod igb这些命令使用 rmmod(remove moduleÿ…...

如何使用Dora SDK完成Fragment流式切换和非流式切换
我想大家对Fragment都不陌生,它作为界面碎片被使用在Activity中,如果只是更换Activity中的一小部分界面,是没有必要再重新打开一个新的Activity的。有时,即使要更换完整的UI布局,也可以使用Fragment来切换界面。 何…...

低代码开发平台(Low-code Development Platform)的模块组成部分
低代码开发平台(Low-code Development Platform)的模块组成部分主要包括以下几个方面: 低代码开发平台的模块组成部分可以按照包含系统、模块、菜单组织操作行为等维度进行详细阐述。以下是从这些方面对平台模块组成部分的说明: …...

Java网络编程(上)
White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🙉 内容推荐:Java文件IO🙉 🐹今日诗词:来如春梦几多时?去似朝云无觅处🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主&a…...

Spring Kafka 之 @KafkaListener 注解详解
我们在开发的过程中当使用到kafka监听消费的时候会使用到KafkaListener注解,下面我们就介绍下它的常见属性和使用。 一、介绍 KafkaListener 是 Spring Kafka 提供的一个注解,用于声明一个方法作为 Kafka 消息的监听器 二、主要参数 1、topic 描述&…...

【量算分析工具-贴地距离】GeoServer改造Springboot番外系列九
【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…...

【linux】(1)文件操作及vi
文件和目录的创建 创建文件 touch 命令:创建一个新的空文件。 touch filename.txtecho 命令:创建一个文件并写入内容。 echo "Hello, World!" > filename.txtcat 命令:将内容写入文件。 cat > filename.txt然后输入内容&…...