基于SpringBoot的房屋租赁管理系统的设计与实现
基于SpringBoot的房屋租赁管理系统的设计与实现
1 绪论
1.1 课题来源
随着社会的不断发展以及大家生活水平的提高,越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中,大家也面临着各种各样的问题,比如需要费时费力去现场看房,价格不透明等等,就对于年轻人们来说,这是一个十分令人头疼的问题。而对于即将要毕业,在外工作的我来说,也面临着租房的问题。所以,想尽自己所学,写一个房屋租赁管理系统。实现租房自由化。
1.2 开发背景和目的
随着科技的不断发展与进步,人们的办公工具由之前的纸质笔记本都已经改变成了计算机,数字化时代,移动设备打破了地域的限制和提供了大量的办公工具,它的使用能大幅度解决我们很多工作上的难题,大大提高我们的办公效率和管理效率。例如:每个高校都有着自己的官网以进行校园的管理。只有有效的管理方法才能满足社会的发展需求,人们的生活需求[1]。面对房源信息层出不穷的冲击,利用现有的技术实现房屋租赁管理系统来提高房屋租赁管理的效率不仅是大势所趋,更是一个有效的方法。
本系统致力把繁琐复杂的房屋租赁变得简单快捷,解决房屋租赁中遇到的各种问题,解决传统方式处理房屋租赁效率不高,浪费人力物力,且人工的因素导致的信息丢失不可靠问题,为房屋租赁提供简单可靠的服务。
1.3 本课题的研究方法及设计思路
在实现此房屋租赁管理系统之前,使用问卷调查的方法对身边的人进行租房等一系列问题的调查。通过调查和分析得知,大多数人觉得线上租房还是不可靠且麻烦,并且就算是已经占据人们生活的安居客软件并没有完全的实现先线上租房,也要在线下进行签约支付。所以,利用现学的技术开发出一款适合年轻人租房的软件是必须趋势。
在实现此房屋租赁管理系统,设计了三层不同的权限的使用者,由高到低分别是管理员、房东(中介),用户。房屋租赁管理系统设计了以下几个模块,分别是房屋管理模块,订单模块,合同管理模块,收支记录模块,新闻公告模块,用户管理模块,角色管理模块这几大模块。不同权限对应着不同的操作,在此系统中,完整的实现租房的整个流程。具体研究内容如下:
第一章是绪论,这里首先介绍了房屋租赁管理系统确定这个课题的来源、开发的背景、研究的目的、国内外研究现状及本课题的研究方法。
第二章是可行性分析,从经济、技术、运行、操作四方面进行了相应的描述。
第三章是系统的总体设计,从系统的非功能性和功能性需求两方面入手,紧接着介绍了系统数据流图,系统数据流程图、系统功能流程图等内容。
第四章是系统的数据库设计,从概念设计、逻辑设计、以及结构设计三个角度对本系统数据库进行了详细的设计。
第五章是系统的设计与实现,先概述了下系统构建所需的硬件条件,再详细的介绍了系统各个模块的功能的设计与实现,从用户接口及方法和界面实现两方面展开叙述。
第六章是系统的运行与测试,在完成编码后,要对系统的功能对应需求进行验证,从系统的测试环境,测试过程两方面进行,用黑盒测试和性能测试方法对系统进行测试。
2系统的总体设计
2.1 系统非功能性需求
为了充分体现出在线租房带来的便捷与高效,此系统的设计需注意如下几点:
(1)高效性。高效性中主要在用户体验感方面,用户在访问的过程中,不会出现卡顿的现象,这适合在设计方面需要整体考虑房屋租赁的整体流程和数据库的访问次数问题,要考虑到数据冗余的设计,达到数据库的高效运行,反应到前台,用户访问起来快速而高效。
(2)安全性。此系统是房屋租赁管理,设计到的用户信息比较重要,例如姓名,身份证号,电话号码,房屋地址等,这些数据都是不能泄露的情况,因此设计系统必须要有安全性和稳定性,那就可以从两个方面来考虑,一是硬件设备的选择,开发系统必须是有很强的容错性。二是系统数据库的设计,利用MySql数据库来进行设计,使系统的体系结构更灵活,此外,考虑到是房屋租赁管理系统,信息量大,数据的管理要考虑到存储和备份。
(3)实用性。开发之初,通过对背景以及国内外现状进行了调查,使用的人群也比较广泛,在设计的过程中要考虑到会不会操作的问题,既要满足准确性和安全性,也要满足操作的简单,界面大方,功能齐全这些方面来进行设计。
2.2 系统功能性需求分析
2.2.1 基本信息描述
在此房屋租赁管理系统中,能够使用本系统的有三类人分别是管理员,房东(中介),用户。管理员具有最高权限,管理着房东(中介)和用户的所有操作,管理员管理着各种信息,例如房源信息,公告信息等。房东(中介)对房屋信息进行着管理,用户在此系统中进行租房,预定房屋,并且可以打电话进行详细咨询,线上合同的签订以及支付租金等功能。此房屋租赁管理系统致力于满足用户的各种需求以及解决房源累积的问题,使得屋尽所用[6]。
2.2.2 房屋租赁流程描述
在此房屋租赁管理系统中,在租房之前,房主(中介)要录入房屋的基本信息,方便用户浏览选房。用户登录系统后,系统显示整租、合租类型的房屋,用户根据自己的需求(房屋朝向,面积,租金,位置选择)选择自己想要的房子,看中哪个房子后,可点击进去,进行房屋信息的详细查看,用户可以与房东(中介)进行电话联系,用户看中房子可进行线上预订,预订成功后,用户进行线上合同签订,并进行支付租金。房东(中介)在后台浏览房屋信息,若是用户预订的房间暂时不能出租,可以提交退租申请,管理员会进行审核后做出处理。房东在后台可以看到房屋信息列表,订单的明细等。在房屋线上租定好后,管理员查询合同,并且查看订单,保证线上租赁的准确无误。至此,一套完整的线上租房流程已经结束。整个租房过程全程线上进行,保证着租房的高效性与安全性[7]。
2.3 系统功能框架图
具有不同的权限的用户就拥有不一样的可操作功能。在此房屋租赁管理系统里面,有三种权限拥有者,分别是管理员,房东(中介),用户。此功能框架图是根据房屋租赁的各大模块来划分的。功能框架图如下所示:
功能描述如下:
(1)管理员权限
①房屋管理模块:对房屋信息进行录入,修改,删除,查询的操作
②订单管理模块:对订单记录进行查询和对退租房屋审核的操作
③合同管理模块:对合同信息进行查看和打印纸质版合同的操作
④租房类型管理模块:对租房类型进行增加,修改,删除,查询的操作
⑤用户管理模块:对房东(中介),用户的基本信息进行管理:录入等;对自己信息的修改,保存,修改登录密码的操作
⑥收支记录模块:对收支记录进行查询操作
⑦新闻公告模块:对新闻公告进行添加,修改,删除,查询的操作
⑧角色管理:进行角色的相对应的操作,例如增加、删除等
⑨权限管理:不同的人具有不同的权限来进行操作
(2)房东(中介)权限
①房屋管理模块:对房屋信息进行录入、删、改、查的操作
②订单管理模块:对订单记录进行查询和对退租房屋申请的操作
③合同管理模块:对合同信息进行查看和打印纸质版合同的操作
④新闻公告模块:对新闻公告进行浏览
⑤收支管理模块:对收支记录进行查看
⑥个人信息模块:对个人信息的管理:基本信息的录入、改等操作
(3)用户权限
①房屋管理模块:对房屋信息进行浏览,预订的操作
②订单管理模块:通过租赁功能生成订单,或者修改(不想租,退租),删除,查询的操作
③合同管理模块:对合同信息进行签订,预览和打印纸质合同
④新闻公告模块:对新闻公告进行浏览
⑤收支管理模块:对收支进行录入,修改,查看的操作
⑥个人信息模块:对个人信息的管理:基本信息的录入、改等操作
2.4 系统数据流图
2.4.1 房屋租赁管理系统顶层数据流图
(1)管理员:具有最高权限,实时更新房源信息。
(2)房东(中介):登录系统,在此系统内房东(中介)对房屋信息信息修改、删除、查询(房屋简介及房屋状态查询),浏览的操作。
(3)用户:进行注册登录,在此系统内进行租房。
2.4.2 房屋租赁管理系统零层数据流图
零层数据流图里面体现出来的是租房的整个流程及数据的变化。零层数据流图如下所示:
2.4.3 房屋租赁管理系统一层数据流图
房东(中介)对房屋信息的更新修改的一层数据流图如下所示:
2.5 系统功能流程图
2.5.1 总体功能流程图
该系统首先是使用者根据自己的权限进入该系统,对于不同的角色,登录后有着不同的使用权限。用户使用时候先进行登录,选择相应的角色,系统通过验证会返回不同的功能菜单,保证了系统数据的安全性。
2.5.2 特有功能
(1)登录管理:程序验证使用者身份信息的入口,只用通过了验证才能对里面的功能进行操作。
(2)查询房屋信息的功能:房屋位置、价格、面积、朝向,这每个要素都可以作为查询点,来查询自己想要的房子。
(3)修改密码:用于用户修改登录密码等。
(4)管理员,房东,用户可以下载合同,保留纸质版合同。
(5)管理员在管理房东和用户基本信息时,可以采用批量上传的方式。
(6)查询房东的信息时,可以通过房东编号等数据项查询信息,且每一数据项都可以作为查询点。
(7)在用户对房子进行预定后,房东因个别原因不想出租时,可以提交退租申请,管理员在接收到退租申请后,可以进行审核。
2.6 数据字典
数据字典是对数据库中数据的描述,在建立之初有一个大概的描述,后期可进行不断的充实和完善。数据字典同时也是数据库设计的重要基准。后期使用中,如果对数据库条目的使用不清楚时,可以通过数据字典查询详细的信息,比如数据项的详细描述,类型等信息。这些可以减少数据之间的不兼容现象。如下表所示为此线上房屋租赁管理系统的数据字典。现从数据项,数据流,数据处理,数据存储分类具体编写:
3 系统的数据库设计
3.1 数据库概念设计
概念设计是整个数据库设计的关键,是对此房屋租赁管理系统的使用者的需求进行分析,概念设计是对第三章系统总体设计中需求分析部分收集到的数据进行归纳整理,确定实体、以及实体的属性和实体之间的联系,形成局部E-R图和全局E-R图[8]。
3.1.2 整体E-R图
3.2 数据库逻辑设计
3.2.1 关系模型的转换
(1)房屋(房屋编号,房东编号,房子描述信息,房子状态,房子描述摘要,缩略图,标题,创建时间,更新时间,创建人,更新人,房间号,轮播图,卧室数,卫生间数,面积,月租金额,日租金额,押金)
(2)城市(城市编号,城市名,创建者,创建时间,修改者,修改时间)
(3)类型(类型编号,类型名,类型种类,创建者,创建时间,修改者,修改时间)
(4)用户(用户编号,用户名,用户密码,状态,创建者,创建时间,修改者,修改时间,电话,电子邮件)
(5)订单(订单编号,用户编号,入住日期,正常退租日期,状态,创建时间,更新时间,创建人,更新人,退租日期,退租价格,押金,日租金,租住天数,总租金,退租状态)
(6)收支记录(收支编号,房屋编号,创建时间,更新时间,创建人,更新人,金额,类型,描述内容)
(7)角色(角色编号,描述,等级,创建时间,变更时间,创建人,更新者)
(8)权限(权限编号,名字,位置,创建时间,变更时间,创建人,更新者)
(9)公告(公告编号,创建时间,变更时间,创建人,更新者,标题,内容,摘要)
3.2.2 关系模型的规范
(1)房屋(房屋编号,房东编号,房子描述信息,房子状态,房子描述摘要,缩略图,标题,创建时间,更新时间,创建人,更新人,房间号,轮播图,卧室数,卫生间数,面积,月租金额,日租金额,押金)
函数依赖集:房屋编号—>房东编号,房东编号—>房屋编号,(房屋编号,房东编号)—>(房子描述摘要,缩略图,标题,创建时间,更新时间,创建人,更新人,房间号,轮播图,卧室数,卫生间数,面积,月租金额,日租金额,押金),(房屋编号,房间号)—>(房子描述摘要,缩略图,标题,创建时间,变更时间,创建人,更新者,房间号,轮播图,卧室数,卫生间数,面积,月租金额,日租金额,押金),至此,它已经没有部分函数依赖和传递函数依赖,达到3NF标准,属于关系模式属于3NF。不用再进行模式分解。
3.3 数据库结构设计
通过对该系统的研究,将系统数据分为一下几个表:category表,city表,finance_record表,notice表,permission表,post表,role表,t_order表,user表等几个表,各表的具体设计结构如下:
(1)房屋类型category表,此表是用来记录房屋类型的必要信息,它的设计结构如表3-1所示:
4 系统的设计与实现
4.1 系统开发环境
此房屋租赁管理系统的架构是B/S架构,下面是详细的介绍了在线房屋租赁管理系统的软硬件环境和开发环境。
操作系统:windows10
CPU:Inteli5
内存:16G
浏览器:Internet Explorer、Google Chrome等
集成开发环境:IntelliJ IDEA
Java开发工具集:jdk 1.8
关系型数据库: MYSQL 5.6
非关系型数据库:ElasticSearch 5
Web应用服务器: Apache Tomcat8
4.2 系统各功能模块设计与实现
4.2.1 用户接口及方法设计
分类业务逻辑接口
public interface CategoryService extends BaseService<Category, Long> {
查询所有分类目录,带count和根据level封装name
List findByUserId(Long userId);
获得某个分类的所有房屋数
Integer countPostByCateId(Long cateId);
根据用户ID删除
Integer deleteByUserId(Long userId);
将分类ID列表转成分类
List cateIdsToCateList(List cateIds, Long userId);
}
城市逻辑接口
public interface CityService extends BaseService<City, Long> {
}
收支记录业务逻辑接口
public interface FinanceRecordService extends BaseService<FinanceRecord, Long> {
根据用户ID获得预定列表
Page findByUserId(String startDate, String endDate, Long userId, Page page);
根据时间范围查询总金额
Integer getTotalMoneySum(String startDate, String endDate);
}
邮件发送业务逻辑接口
public interface MailService {
发送邮件
void sendMail(String to, String title, String content) throws MessagingException;
}
公告通知逻辑接口
public interface NoticeService extends BaseService<Notice, Long> {
}
订单业务逻辑接口
public interface OrderService extends BaseService<Order, Long> {
查询总金额
Integer getTotalPriceSum(Order condition);
根据条件查询
Page findAll(Order condition, Page page);
查询有效订单
Order findByPostId(Long postId);
}
权限逻辑接口
public interface PermissionService extends BaseService<Permission, Long> {
根据角色Id获得权限列表
List listPermissionsByRoleId(Long roleId);
获得某个用户的权限URL列表
Set findPermissionUrlsByUserId(Long userId);
获得某个用户的用户ID和资源类型
List findPermissionTreeByUserIdAndResourceType(Long userId, String resourceType);
根据角色ID获得权限列表
List findPermissionByRoleId(Long roleId);
获得所有权限,带有等级
List findPermissionListWithLevel();
统计子节点数量
Integer countChildPermission(Long id);
根据URL获得权限
Permission findByUrl(String url);
}
房屋/页面业务逻辑接口
public interface PostService extends BaseService<Post, Long> {
根据条件获得列表
Page findPostByCondition(Post condition, Page page);
根据租客userId查询
Page findByRentUserId(Long userId, Page page)
获得最新房屋
List getLatestPost(Long cityId, int limit);
根据状态统计
Integer countByStatus(Integer postStatus);
获得合租房屋
List getUnionRentPost(Post post);
}
权限和角色的业务逻辑接口
public interface RolePermissionRefService {
删除某个角色的所有关联
void deleteRefByRoleId(Long roleId);
添加角色和权限关联
void saveByRolePermissionRef(RolePermissionRef rolePermissionRef);
批量添加
void batchSaveByRolePermissionRef(List rolePermissionRefs);
}
角色逻辑接口
public interface RoleService extends BaseService<Role, Long> {
删除某个用户的所有关联
void deleteByUserId(Long userId);
根据编号查询单个权限
Role findByRoleId(Long roleId);
根据编号查询单个权限
Role findByRoleName(String roleName);
根据用户Id获得角色
Role findByUserId(Long userId);
统计这个角色的用户数
Integer countUserByRoleId(Long roleId);
查询某个用户最大的角色等级
Integer findMaxLevelByUserId(Long userId);
查询小于等于该等级的角色
List findByLessThanLevel(Integer level);
获得用户注册默认角色
Role findDefaultRole();
获得用户注册默认角色
Role getMaxRoleByUserId(Long userId);
}
用户和角色的逻辑接口
public interface UserRoleRefService extends BaseService<UserRoleRef, Long> {
根据用户Id删除
void deleteByUserId(Long userId);
}
用户业务逻辑接口
public interface UserService extends BaseService<User, Long> {
根据账号获得用户
User findByUserName(String userName);
根据身份证号码查找用户
User findByIdCard(String idCard);
更新密码
void updatePassword(Long userId, String password);
分页获取所有用户
Page findByRoleAndCondition(String roleName, User condition, Page page);
}
4.2.2 界面实现
(1)用户界面
用户界面功能的实现是根据系统的功能性需求和功能流程图,数据库逻辑设计来实现的。这里选取用户功能中租房这一模块来做详细的说明。用户租房界面如图4.1所示:
选中后的房源信息界面如图4.2所示:
用户在登录之后,会进入房源信息列表界面,房源信息是从后台数据库中取出来的。在房源信息列表中,用户搜索自己喜欢的户型,进行查看。在选中后的房源信息界面,利用数据库中房屋表的轮播图字段来实现房源图片的详细查看。在点击立即租房的确定按钮时,后台数据库中的t_order表中也会生成一条相应的记录,完成部分租房。
在选定好房子之后,用户可见的页面经过a标签跳转到合同页面,正规的房租租赁都要有合同来支撑。用户对合同认同之后,点击"我已阅读并同意上述合同"按钮,跳转到模拟支付的页面,点击按钮表示支付成功。合同和支付界面如图4.3,4.4所示:
进入后台管理模块,t_order表中也就多出一条租房记录,是通过后台数据库传到显示页的。在订单管理这块,用户可以查看电子合同并打印纸质合同,或者是提出退租申请。在这里的订单状态中,若用户签订了合同,订单状态中会显示合同生效,若是退租通过,会显示已退租。订单中具体显示着入住时间,退租时间,总押金,用户姓名,房东姓名,房屋具体地址这些内容。订单页面如图4.5所示:
(2)管理员页面
管理员界面功能的实现是根据系统的功能性需求和功能流程图,数据库逻辑式设计来实现的,这里选取管理员添加房屋这一模块来做详细说明,添加房屋界面如图4.6所示:
房屋发布界面如图4.7所示:
管理员登录系统之后,进入管理员可以操控的后台管理欢迎界面,菜单栏显示着管理员可操作的功能。点击"房屋管理"按钮,显示所有的房屋的信息,包括出租的和未出租的,可以进行筛选。点击"发布新的房屋",进入添加房屋信息界面,在添加时,后台数据库的数据同时也发生改变。添加房屋后,管理员,房东(中介),用户都可以在前台看到新的房屋信息。
管理员界面功能的实现是根据系统的功能性需求和功能流程图,数据库逻辑设计来实现的,这里再选取管理员管理用户这一模块来做详细说明,用户管理界面如图4.8所示:
在这一模块中,有个最大的特点是,管理员可以批量删除用户的信息,同时删除几个用户的信息是可以成功的。
(3)房东(中介)页面
房东(中介)界面功能的实现是根据系统的功能性需求和功能流程图,数据库逻辑设计来实现的,这里再选取房东(中介)管理订单,收支明细和个人信息这三个模块来做详细说明。房东(中介)管理订单界面,如图4.9所示:
在这个模块中,用户申请提前退租时,房东(中介)对订单的操作中有退租审核通过或者拒绝的功能,同时,在用户对房子预订之后,房东(中介)的房子暂时出租不了的情况下,可以提交退租申请给管理员,管理员同意申请,订单会被取消。房东(中介)管理收支明细界面,如图4.10所示:
在这个模块中,每个房东(中介)拥有自己的收支明细表,在这个表里面,有收支类型明细,支出还是收入,备注里面包含订单ID,房屋总金额,押金。房东(中介)管理个人信息界面,如图4.11所示:
在这个模块中,房东可以对自己的基本信息(头像,账号,姓名,身份证号,手机号,电子邮箱,个人描述)进行修改保存,同时可以修改自己的密码。
5结论
总览全文,本论文做了如下工作:
(1)详细说明了我国现有的租房行业的萧条,也简要分析了国内与国外线上租房,实现租房自由化的各种现状以及房租租赁管理系统的可行性分析。
(2)对系统进行了总体设计的详细描述。确定系统中出现的角色以及该角色的可以使用的功能进行设计。
(3)详细阐述了此房屋租赁管理系统的系统设计和实现,系统设计中从基本功能、功能框架图,数据流图、功能流程图这几个方面详细介绍,每个方面的介绍中都是图文结合的形式,方便理解。在数据库的设计中从概念设计,逻辑设计,结构设计多角度详细展开了叙述,层层解剖,深度对数据库进行详细的设计。
(4)对系统的开发环境进行了一定的说明,除此之外,对系统的各个功能进行了完整的分析和实现,从接口设计到界面实现。
(5)最后对系统的功能进行了测试,证明了实现功能的可用性和完整性,并得到结论,此房屋租赁管理系统满足需求分析中所提到的要求。
至此完成了基于Springboot的房屋租赁管理系统的实现,经测试表明,该系统能够满足需求分析中提出的需求。但限于自身能力的不足。系统仍有一些不好的地方,改进的地方如下:
(1)数据库相应表中为租房用户的用户名和头像等属性预留了存储位置,但由于受限于时间,系统目前还不具有社交功能,后续的开发会加入租房用户与房东(中介)的在线聊天功能。
(2)本系统虽然收集了租房用户的房源搜索记录,但目前还没有算法对这些数据进行利用和分析,在后续的工作中会加入数据挖掘、机器学习等方面的算法对接到系统中来。
(3)房源居住的反馈机制还不够完善,租房用户只能举报虚假的房源信息,而不能发表居住后的真实体验。后续的开发工作会给租房用户提供房源评论功能,这样能给其他租客提供参考意见。
(4)商家吸引用户最直接的手段就是打折促销,房屋出租也同样可以借鉴。在后续的系统运营上,会加入房租打折、优惠券等功能。
相关文章:

基于SpringBoot的房屋租赁管理系统的设计与实现
基于SpringBoot的房屋租赁管理系统的设计与实现 1 绪论 1.1 课题来源 随着社会的不断发展以及大家生活水平的提高,越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中,大家也面临着各种各样的问题&…...

一文带你为PySide6编译MySQL插件驱动
1.概述 最近使用PySide6开发程序,涉及与MySQL的数据交互。但是qt官方自pyqt5.12(记不太清了)以后不再提供MySQL的插件驱动,只能自己根据qt的源码编译。不过网上大部分都是qt5的MySQL驱动的编译教程。后来搜到了一个qt6的编译教程…...

图论算法:树上倍增法解决LCA问题
文章目录树上倍增法: LCA问题树上倍增法: LCA问题 树上倍增法用于求解LCA问题是一种非常有效的方法。 倍增是什么? 简单来说,倍增就是 1 2 4 8 16 … 2^k 可以发现倍增是呈 2的指数型递增的一类数据,和二分一样&…...
Java线程池中submit() 和 execute()方法有什么区别
点个关注,必回关 文章目录一. execute和submit的区别与联系1、测试代码的整体框架如下:2、首先研究Future<?> submit(Runnable task)和void execute(Runnable command),3、submit(Runnable task, T result) 方法可以使submit执行完Run…...
Vue.extend和VueComponent的关系源码解析
目录 0.概念解释 前言 需求分析 Vue.extend 编程式的使用组件 源码分析 0.概念解释 Vue.extend和VueComponent是Vuejs框架中创建组件的两种不同方式。Vue.extend方法能够让你根据Vue对象(继承)来定义一个新的可重用的组件构造器。而VueComponent方…...

【动态规划】01背包问题(滚动数组 + 手画图解)
01背包除了可以用形象的二维动态数组表示外,还可以使用空间复杂度更低的一维滚动数组。 目录 文章目录 前言 一、滚动数组的基本理解 二、确定dp及其下标含义 三、确定递推公式 四、确定初始化 五、确定遍历顺序 1.用物品(正序)遍历背…...

javaEE 初阶 — 超时重传机制
文章目录超时重传机制1. 数据重复传输问题2. 如何解决数据重复传输问题3. 重传次数问题TCP 的工作机制:确认应答机制 超时重传机制 如果传输数据的时候丢包了该怎么办? 利用 超时重传,也就是超过了一定的时间,如果还没响应就重新…...
小米5x wlan无法打开解决
诱因:想要利用空置设备做节点服务器或者边缘计算,因此解锁并刷了magisk,印象中在刷之前wlan已经无法打开无法进行wifi联网 表现: 1 WLAN开关无法打开,或者虚假打开,无法扫描wifi 2 设置->我的设备->全…...
负载均衡之最小活跃数算法
文章目录[toc]一、概念二、场景与设计思路三、实现四、代码下载一、概念 活跃数 集群中各实例未处理的请求数。 最小活跃数 集群中各个实例,哪个实例未处理的请求数据最小,就称之为最小活跃数。 二、场景与设计思路 场景 以获取微服务地址为场景。 设计…...

JavaScript 评测代码运行速度的几种方法
一、使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 来评测代码的运行速度。该 API 返回当前页面的高精度时间戳,您可以在代码执行前后调用它来计算代码执行所需的时间。 例如: let t0 performance.now();…...

Linux 编译器 gcc/g++
本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 gcc/g常用命令 自定义可执行程序名命令-o 预处理指令-E 编译指令-S 汇编指令-c 链接指令gcc 命令巧记口诀 链接库 动态库-动态链接 静态库…...

2.Java基础【Java面试第三季】
2.Java基础【Java面试第三季】前言推荐2.Java基础01_字符串常量Java内部加载-上58同城的java字符串常量池面试code讲解intern()方法---源码解释02_字符串常量Java内部加载-下whyOpenJDK8底层源码说明递推步骤总结考查点03_闲聊力扣算法第一题字节跳动两数求和题目说明面试题解法…...

Java高级-多线程
本篇讲解java多线程 基本概念: 程序、进程、线程 **程序(program)**是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 **进程(process)**是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程…...

mysql高级(事务、存储引擎、索引、锁、sql优化、MVCC)
文章目录1.事务1.1 四大特性ACID1.2 并发事务2.存储引擎2.1 InnoDB2.2 MyISAM2.3 Memory2.4 存储引擎特点2.5 存储引擎的选择3.性能分析3.1 查看执行频次3.2 慢查询日志3.3 profile3.4 explain4.索引4.1 索引结构B-TreeBTreeHash面试题4.2 索引分类思考题4.3 语法4.4 使用规则最…...

Java后端开发功能模块思路
文章目录前言一、查找接口及参数信息1.1 找访问路径1.2 参数及返回结果信息1.3 编写功能模块函数二、代码设计思路三、总结前言 对于正在学习Java后端开发的同学来说,对于Java后端功能模块的开发过程及思路要有一个整体清晰的流程。才能保证在开发过程中更加的顺畅…...

CAPL(vTESTStudio) - DoIP - TCP发送_05
TCP发送 参数定义 版本号:02 FD or 01 FE or 其他任意值数据类型:00 05 or 00 06 or 80 01 or其他任意值数据长度:想要发送的任意长度...

使用IntelliJ IDEA搭建datax-web开发环境
记录:372场景:使用IntelliJ IDEA搭建datax-web开发环境,以及datax-web基本使用。版本:JDK 1.8Python 2.7.5datax-web开源地址:https://github.com/WeiYe-Jing/datax-web1.配置Maven环境1.1安装目录目录:D:\…...

[SSD固态硬盘技术 14] GC垃圾回收太重要了
今天介绍臭名昭著的垃圾收集 过程(或“GC”),maybe 这是对JAVA 工程师而言。当遇到GC导致速度降低时候, 他们真的想跳脚。 我想到我的小孩打疫苗,哭的哇哇叫, 在他的眼里疫苗应该也是讨厌的吧, 但事实真的如此吗? 但首先,让我们考虑一下如果根本没有 GC,闪存系统会发…...

lamada表达式、stream、collect整理
lamada表达式格式 格式:( parameter-list ) -> { expression-or-statements } 实例:简化匿名内部类的写法 原本写法: public class LamadaTest { public static void main(String[] args) { new Thread(new Runnable() { …...

Nacos 入门微服务项目实战
Nacos 核心源码精讲 - IT贱男 - 掘金小册全方位源码精讲,深度剖析 Nacos 注册中心和配置中心的核心思想。「Nacos 核心源码精讲」由IT贱男撰写,375人购买https://s.juejin.cn/ds/BuC3Vs9/ Hi,大家好,欢迎大家来学习《Nacos 核心源…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...