需求工程
需求工程包括需求开发和需求管理两大类活动。
需求开发包括:需求获取,需求分析,需求定义,需求验证这些主要活动;
需求管理包括:变更控制、版本控制、需求跟踪和需求状态跟踪这些活动。
聊聊RPC
既然有了HTTP协议,为什么还要有RPC
TCP协议网络的基石就是TCP与UDP协议,TCP协议的特点就是面向连接、可靠、字节流。但是光有TCP协议是不够的,因为通过TCP协议收发的消息是一个字节流,没有对这个字节流定义消息的边界。只有在TCP的基础上定义字节流中哪一段是消息头、消息体才能实现消息的收发,因此在TCP协议的基础上出现了HTTP、RPC等协议。
HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本数据的协议,通常用于构建 Web 应用。它是一个应用层协议,基于客户端-服务器模型,通过请求-响应的方式进行通信。HTTP协议主要用于传输HTML页面、图片、样式表等资源,并且是无状态的,每个请求都是独立的,服务器不保存关于客户端的任何信息。
RPC(Remote Procedure Call)本身不是一种协议,而是指一种调用方式,用于在分布式系统中进行远程调用。RPC允许一个程序调用另一个地址空间(通常是在远程机器上)的过程,就像调用本地过程一样。RPC框架可以通过网络传输数据,让远程的服务被调用,然后将结果返回给调用方。
传输 ...
Spring
Spring基础1.什么是Spring框架Spring是一个开源的轻量级java框架,可以提高开发效率,以及系统的可维护性
Spring Framework有很多模块可以方便我们的开发。比如Spring支持IOC、还有AOP、还支持对数据库方便的访问,可以方便的支持第三方的组件,支持单元测试,支持RestFul JAVA应用程序开发
Spring 官网:https://spring.io/官方文档: https://docs.spring.io/spring-framework/reference/core.html
Github 地址: https://github.com/spring-projects/spring-framework
2.Spring的核心模块有哪些Spring5.x
Core ContainerSpring 框架的核心模块,也可以说是基础模块,主要提供 IoC 依赖注入功能的支持。Spring 其他所有的功能基本都需要依赖于该模块,我们从上面那张 Spring 各个模块的依赖关系图就可以看出来。
spring-core :Spring 框架基本的核心工 ...
Shell快捷键
常用快捷键以下是一些常用的快捷键:
向前移动光标:
向右箭头键:→
Ctrl + F:向前移动一个字符
向后移动光标:
向左箭头键:←
Ctrl + B:向后移动一个字符
向前移动一个单词:
Alt + F 或 Esc + F
向后移动一个单词:
Alt + B 或 Esc + B
移动到行的开头:
Ctrl + A
移动到行的末尾:
Ctrl + E
删除光标前的字符:
Ctrl + U
删除光标后的字符:
Ctrl + K
删除光标前的单词:
Ctrl + W
删除光标后的单词:
Esc + D
清空当前行:
Ctrl + L
撤销(undo):
Ctrl + _ 或 Ctrl + X,U
重做(redo):
Ctrl + Shift + _ 或 Ctrl + X,U,Ctrl + X,U
这只是一些常见的快捷键,具体的快捷键可能会因终端和 Shell 的不同而有所不同。请注意,这里使用的快捷键主要适用于 Bash Shell,如果你使用的是其他 Shell(例如 Zsh),可能会有一些差异。
mac切换java版本
在 macOS 上切换 Java 版本可以通过以下步骤完成:
使用 Terminal(终端)
查看已安装的 Java 版本:
打开终端,输入以下命令,查看已经安装的 Java 版本:
1/usr/libexec/java_home -V
这会列出系统中安装的 Java 版本和它们的路径。
使用 export 命令切换 Java 版本:
1export JAVA_HOME=$(/usr/libexec/java_home -v 版本号)
将 “版本号” 替换为你想要使用的 Java 版本号。例如,如果要切换到 Java 8,可以这样做:
1export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
这个命令会将 JAVA_HOME 环境变量设置为选择的 Java 版本。
验证切换是否成功:
1java -version
这应该显示你选择的 Java 版本信息。
使用 Homebrew如果你使用 Homebrew 安装了多个 Java 版本,可以使用 brew 命令来切换版本。
安装 jenv(如果未安装):
1brew install j ...
flyway数据库版本管理工具
背景在项目开发中,程序代码可以使用svn或者git来管理版本。但是在数据库开发中,版本的控制一直是个比较头疼的问题,通过调研,spring的官方支持flyway和liquibase的数据库版本管理工具
flywayflyway 是一个敏捷工具,用于数据库的移植。采用 Java 开发,支持所有兼容 JDBC 的数据库。
主要用于在你的应用版本不断升级的同时,升级你的数据库结构和里面的数据
https://link.juejin.cn/?target=https%3A%2F%2Fflywaydb.org%2F支持的数据库:Oracle、SQL Server、DB2、MySQL、Aurora MySQL、MariaDB、Percona XtraDB群集、PostgreSQL、Aurora PostgreSQL、Redshift、CockroachDB、SAP HANA、Sybase ASE、Informix、H2、HSQLDB、Derby、SQLite、Firebird
工作原理flyway通过历史记录表(flyway_schema_history)来记录版本历史。每次随项目启动时将会自 ...
杂凑算法
杂凑算法(Hashing Algorithm)是一种用于将任意长度的输入数据转换为固定长度的散列值(哈希值)的数学函数或算法。杂凑算法的主要目的是将数据映射到一个紧凑的、固定长度的二进制字符串,通常是一个固定数量的比特,如128位、256位或512位。这个哈希值通常用于数据的唯一标识、数据完整性验证、密码存储、数据结构的加速搜索,以及数据加密等各种应用。
以下是杂凑算法的一些关键特点和用途:
固定长度输出:杂凑算法会将输入数据(可以是文本、文件、图像等)映射到一个具有固定长度的输出,这样无论输入数据大小如何,输出的哈希值长度都是相同的。
输入唯一性:即使输入数据仅有微小的更改,其生成的哈希值也应该截然不同,以便检测数据的任何变化。这个属性称为”雪崩效应”。
简单快速:杂凑算法应该能够快速生成哈希值,以便在实际应用中高效使用。常用的杂凑算法通常都具备高性能。
不可逆性:生成的哈希值应该难以逆向推导出原始数据,即使知道哈希值也无法还原原始数据。这种属性使杂凑算法适用于密码存储等领域。
抗碰撞性:杂凑算法应该避免或减小碰撞的可能性,即不同的输入数据产生相同的哈希值。较好的杂凑算法会 ...
软考案例分析题
例题1题目阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 某房产中介连锁企业欲开发一个基于Web的房屋中介信息系统,以有效管理房源和客户,提高成交率。该系统的主要功能是:1.房源采集与管理。系统自动采集外部网站的潜在房源信息,保存为潜在房源。由经纪人联系确认的潜在房源变为房源,并添加出售/出租房源的客户。由经纪人或客户登记的出售/出租房源,系统将其保存为房源。房源信息包括基本情况、配套设施、交易类型、委托方式、业主等。经纪人可以对房源进行更新等管理操作。2.客户管理。求租/求购客户进行注册、更新,推送客户需求给经纪人,或由经纪人对求租/求购客户进行登记、更新。客户信息包括身份证号、姓名、手机号、需求情况、委托方式等。3.房源推荐。根据客户的需求情况(求购/求租需求情况以及出售/出租房源信息),向已登录的客户推荐房源。4.交易管理。经纪人对租售客户双方进行交易信息管理,包括订单提交和取消,设 置收取中介费比例。财务人员收取中介费之后,表示该订单已完成,系统更新订单状态和 房源状态,向客户和经纪人发送交易反馈。5.信息查询。客户根据自身查询需求查询房屋供 ...
基于软件架构的设计(ABSD)
相关概念基于架构的软件设计(ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,并且设计活动的开始并不意味着需求抽取和分析活动可以终止,而是应该与设计活动并行。ABSD方法有三个基础:第一个基础是功能分解,在功能分解中使用已有的基于模块的内聚和耦合技术。第二个基础是通过选择体系结构风格来实现质量和商业需求。第三个基础是软件模板的使用。ABSD方法是一个自顶向下,递归细化的过程,软件系统的架构通过该方法得到细化,直到能产生软件构件的类。
根据基于软件架构的设计的定义,基于软件架构的设计(Architecture Based Software Design,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用视角和视图来描述软件架构,采用用例和质量属性场景来描述需求。进一步来说,用例描述的是功能需求,质量属性场景描述的是质量需求(或侧重于非功能需求)。