技术周总结 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ÿ…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...