校园二手闲置交易平台的设计与实现计算机毕设源码85309_校园闲置物品交易网站代码实现-程序员宅基地

技术标签: spring  python  java  django  jsp  mysql  flask  

摘  要

互联网加时代的到来,让社会处处都充满着信息网络化,其高效的信息处理以及管理能力让效率提升,特别是电子商务出现之后,更是让整个社会受益。

电子商务是基于当下网络社会体系而生成的一种商品交易活动,其突破了传统的面对面式的金钱交易,实现了不出门便可以支付、购物的功能,非常符合当今生活、工作节奏加快的社会。现在的电子商务平台已经涉及行业广泛,只要是交易便可以通过网络搭建相关交易平台来实现线上交易模式,极为方便,所以,在此,根据校园二手闲置交易方面的需求,决定将校园二手闲置交易转移到网络上,给校园用户一个优质的、安全的二手交易平台,实现网络发布售卖、购买二手商品的功能,以促进校园信息化发展。

该校园二手闲置交易平台在开发时进行了充分的调研,也对目前主流的开发技术实行了对比,最终决定基于B/S模式、SSM框架、利用JSP技术来开发,对于数据库方面,则使用了MySQL这一款数据库,让系统数据更加的稳定、安全。

关键词SSM框架;网络购物;互联网+;校园二手闲置交易平台;MySQL

                                                     Abstract

With the advent of the Internet plus era, the society is full of information networking. Its efficient information processing and management ability improve efficiency, especially after the emergence of e-commerce, but also benefit the whole society.

E-commerce is a kind of commodity trading activity generated based on the current network social system. It breaks through the traditional face-to-face money transaction and realizes the function of paying and shopping without going out. It is very in line with today's society where the pace of life and work is accelerating. The current e-commerce platform has been involved in a wide range of industries. As long as it is a transaction, it can build a relevant trading platform through the network to realize the online trading mode, which is extremely convenient. Therefore, according to the demand of campus second-hand idle trading, it is decided to transfer campus second-hand idle trading to the network, so as to provide campus users with a high-quality and safe second-hand trading platform. Realize the function of selling and buying second-hand goods through the network, so as to promote the development of campus informatization.

The campus second-hand idle trading platform in the development of sufficient research, but also the current mainstream development technology is compared, the final decision based on B/S mode, SSM framework, the use of JSP technology to develop, for the database, the use of MySQL database, so that the system data more stable, safe.

Key words: SSM framework; Online shopping; Internet Plus; Campus second-hand idle trading platform; MySQL

目    录

  

Abstract

1 绪论

1.1 研究背景

1.2研究意义

2 校园二手闲置交易平台系统分析

2.1 可行性分析

2.1.1 技术可行性分析

2.1.2 经济可行性分析

2.1.3 操作可行性分析

2.1.4 时间可行性分析

3.2角色功能分析

2.3 系统流程分析

2.3.1注册流程

3.3.2登录流程

2.3.3购买流程

3.4系统性能分析

3 校园二手闲置交易平台总体设计

3.1 系统功能结构设计

3.2 数据库设计

3.2.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

4 校园二手闲置交易平台详细设计与实现

4.1前台用户功能模块

4.1.1 前台首页界面

4.1.2注册界面

4.1.3登录界面

4.1.4 个人账户界面

4.1.5 闲置交流界面

4.1.6 校园资讯界面

4.1.7 二手商品详情界面

4.1.8交流管理界面

4.1.9我的订单界面

4.2管理员功能模块

4.2.1 管理员登录界面

4.2.2 校园资讯界面

4.2.3 闲置交流界面

4.2.4 系统用户界面

4.2.5商品分类界面

4.2.6二手商品界面

4.2.7二手订单界面

5系统测试

5.1程序测试

5.2 功能用例

5.3 性能测试

5.4 系统测试结果

结论

参考文献

  

1 绪论

1.1 研究背景

当下社会是一个充满信息化的网络社会,人们的吃穿住行样样都离不开互联网,可以说信息化已经融入到了人们的生活,利用互联网实现信息的传递以及管理已经再普通不过,而且还能让信息处理管理效率达到最高。

快速发展的经济,人们的生活直接上升了好几个档次,物质资源也越来越丰厚,各类物质资源充斥在人们身边,有的是经常用到的,而有的是用不到的,在那闲置,浪费资源,还要有地方来储存。在解决处理这些闲置不用的二手商品时,大多数人会卖到二手市场,但需要时间、精力去二手市场进行处理售卖,在生活节奏飞快的今天,这种方式费时有费力,不合时宜。同时大部分二手资源都是可循环使用的,还有很大的使用价值,也有不少需要它的人,想要节约资金,想要来购买所需要的二手商品,这样既能买到需要的商品又能够花最少的钱,一举两得,但他们在购买二手商品的时候,却没有一个好的、专业的平台,导致他们苦于寻找,效率不高。当信息时代来临之后,这些问题统统可以得到解决,只要通过网络,来针对性的开发一个专门的二手闲置交易平台,便可以轻松解决当下处理二手商品以及购置二手商品麻烦的问题。

本次开发的校园二手闲置交易平台主要是服务于大学生,让有买卖二手商品的大学生都可通过该平台来实现。

1.2研究意义

当今社会网络日益流行,人们利用网络能够交易、能够休闲娱乐、也能得知天下事,可谓网络的强大,它是时代进步的象征。在网络大环境下,电子商务网络交易是热点,受到人们的宠爱。

该校园二手闲置交易平台的开发顺应了用户网络买或者卖二手商品的需求,它的应用,让不用的、闲置的商品到真正需要它的人手中,达到了循环使用的效果,这样一来可以减少浪费,从侧面讲,二手商品能够循环使用,无疑对环境保护也有一定的作用。

通过校园二手闲置交易平台,还解决了以往二手市场、跳蚤市场来买卖交易二手商品有时间、地点等方面制约的问题,能够做到24小时不间断的运行,在运行期间都在营业,全国各地的用户只要在有网络的地方,无论在什么时间什么地点都能买卖交易自如,便利、高效,而又灵活,带给用户一种良好的交易体验,爱上网络交易。该项目能够实现二手商品的买或者卖,让有购买二手商品或者销售二手商品需求的人能够达到交易的目的,考虑周全,能够全方位的满足用户,给用户提供全新的交易服务。

2 校园二手闲置交易平台系统分析

2.1 可行性分析

任何一个程序的开发都需要提前对程序各个方面的可行性进行分析,经过可行分析可以让程序的开发更顺畅,明确程序可以开发,减少不必要的环节,加快开发速度。

2.1.1 技术可行性分析

要开发的校园二手闲置交易平台,在技术的选择方面,经过对目前主流技术的对比,以及个人技术的掌握情况,选用了功能很是强大的IDEA开发工具,基于JSP技术,采用SSM框架,简单而又安全,能够加快开发进度;对于程序数据的存储方面,则选择采用MySQL这一安全、开源的数据库,来存储数据。这些技术都很是成熟,而且也已经熟练掌握,所以,利用它们来完成校园二手闲置交易平台的开发,不在话下,可行。

2.1.2 经济可行性分析

在经济上程序的开发是否可以执行,也是必不可少需要考虑的,这是至关重要的,只有保证了开发付出和效益成正比,项目才是值得开发的。如果一个项目的开发,需要大量的资金,人力、耗时也大,而带来的效益却不高,那必然是不可行的,也是失败的。而如果一个项目的开发,需要投入的人力、财力、物力都极少,带来的效益却非常高,那肯定是可行的,也是非常成功的一个项目。本次开发的程序,所用到的一些软件都是可以免费下载的,不花任何费用,所以在经济耗费除了人工,几乎不花钱,在程序效益方面,可以实现二手商品的网上交易,提交交易效率,综上,从经济耗费和效益上综合考虑,都是可行的。

2.1.3 操作可行性分析

当下网络新时代,计算机已经得到了普及,多数人对计算机都比较的熟悉,知道如何使用它,当然也存在对计算机比较陌生的这一群体,也需要对其进行考虑。在进行校园二手闲置交易平台页面的设计的时候,考虑到使用人群,可能也存在对计算机比较陌生的人,所以,在页面的设计方面,设计的很是简单、简洁,布局明了,色调明朗,让无论是对计算机陌生还是对计算机熟悉的使用者,都可以使用自如,这也说明了该程序的操作方面非常可行。

2.1.4 时间可行性分析

在程序的开发中,任何程序的开发时间都是有所规定的,要按期完成,不能拖沓。而本次需要开发的项目校园二手闲置交易平台,是作为学校给予毕业生布置的最后的作业,肯定也是有时间限制,要在毕业答辩前,顺利的完成。从下发任务书开始,到毕业答辩,这中间有好几个月的时间,时间很够用,在这期间完成项目开发、论文撰写,都不成问题,时间很充裕。

综上,经过考虑以上几个方面,项目校园二手闲置交易平台的开发是很可行的,能够如期顺利的完成。

3.2角色功能分析

在开发项目开发之时,要首先明确系统要满足哪几种角色用户的要求,在确定了用户角色之后,就要规划设计好每一个用户角色应该实现什么样的功能。该校园二手闲置交易平台设计了2种角色,下面对这2种角色分别实现的功能进行一一讲述,如下:

(1)角色:用户的功能分析

用户能够利用浏览器便利的使用该程序,进入该平台之后,首先看到的是项目的首页,还能根据自己的需要点击使用导航栏相应的功能模块,包含了网站首页、闲置交流、网站公告、二手商品,倘若用户要想实现闲置交流、购买交易、收藏评论、发布售卖的功能,就需要注册账号进而登录进入系统,在有了自己的账号登录之后,便可以加入购买二手商品、修改资料、修改密码、收藏管理、闲置交流、管理二手商品、管理二手订单等。

下图2-1是对用户这一角色进行的用例建模。

 

图2-1 用户的用例建模图

系统前端系统用户的功能包含了网站首页、闲置交流、网站公告、校园资讯、个人账户、个人收藏、二手商品、注册登录、交流管理、模块管理几大功能。

用户在前台可以查看校园资讯信息,让用户了解平台的各种资讯,可以对自己喜欢的资讯进行收藏、点赞,也可以实现对资讯的评论,与共同爱好者产生交流,用例说明如下表所示:

表2-1 校园资讯用例图

用例名称

校园资讯藏/点赞/评论

角色

普通用户

用例说明

用户在前台查看校园资讯,对喜欢的资讯进行收藏、点赞、评论

前置条件

用户登录

后置条件

对用户的收藏、点赞、评论在系统中展示出来

基本事件流

1、用户通过浏览器进入本校园二手闲置交易平台

2、用户登录到系统当中

3、用户进入校园资讯,选择资讯进入详情

4、用户点击收藏或者点赞

5、在评论框输入评论内容,点击提交

推展流程

异常事件流

1、用户没有登录

2、输入的评论内容为空

其他

校园二手闲置交易平台主要的功能就是二手商品的购买,所有在系统中用户可以选择自己喜欢的二手商品进行购买,用例说明如下表所示:

表3-2 二手商品用例图

用例名称

二手商品购买

角色

普通用户

用例说明

用户在前台查看二手商品,对喜欢的二手商品进行收藏、评论、点赞、购买

前置条件

用户登录

后置条件

对二手商品购买

基本事件流

1、用户通过浏览器进入本校园二手闲置交易平台

2、用户登录到系统当中

3、用户进入二手商品,选择二手商品进入详情

4、加入购买、点赞、收藏

5、在评论框输入评论内容,点击提交

拓展流程

选择支付方式

异常事件流

1、用户没有登录,需要注册登录后才能操作

2、购买失败需要取消付款

其他

注册用户在后台对二手商品的查询、如果需要添加新的二手商品,点击添加按钮,输入二手商品信息提交,也可以对二手商品进行修改,删除,查询,用例说明如下表所示:

表2-3 二手商品管理用例图

用例名称

二手商品管理

角色

注册用户

用例说明

对系统当中的二手商品进行增删改查

前置条件

注册用户登录

后置条件

基本事件流

1、用户进入个人手套

2、选择模块管理下的二手商品按钮

3、显示系统当中的所有的二手商品,可以输入关键词查询

4、选择内容进行增删改查

5、点击提交

拓展流程

异常事件流

输入的二手商品内容不正确,提示错误信息

其他

2)角色:管理员的功能分析

管理员是整个程序数据的综合管理者,为了确保程序数据的安全,后台必须设置登录功能,这样可以验证身份,只有持有管理员独特的账号密码才能够进入后台,在成功登入后,管理员能够对程序的数据执行全面管理,包含轮播图,网站公告管理,资源管理(校园资讯、资讯分类),交流管理(闲置交流、交流分类),系统用户(管理员、注册用户),模块管理(商品分类、二手商品、二手订单)。

下图2-2是对管理员这一角色进行的用例建模。

 

图2-2 管理员的用例建模图

系统后端管理员的功能包含了轮播图,网站公告管理,资源管理,交流管理,系统用户,模块管理六大部分。

管理员在后台对二手商品的查询、如果需要添加新的二手商品,点击添加按钮,输入二手商品信息提交,也可以对二手商品进行修改,删除,查询,用例说明如下表所示:

表2-4 二手商品管理用例图

用例名称

二手商品管理

角色

管理员用户

用例说明

对系统当中的二手商品进行增删改查

前置条件

管理员登录

后置条件

基本事件流

1、管理员通过后台登录到系统当中

2、选择模块管理下的二手商品按钮

3、显示系统当中的所有的二手商品,可以输入关键词查询

4、选择内容进行增删改查

5、点击提交

拓展流程

异常事件流

输入的二手商品内容不正确,提示错误信息

其他

2.3 系统流程分析

2.3.1注册流程

对于还没有账号的这一群体用户,可以注册来取得账号密码,用户在完成注册数据的填写之后,系统便会接收到这些信息,立即会对这些信息进行验证,首先检索数据库中是否已经存在了该账号,不存在的话就会继续验证其他数据,存在的话则会给予提示,让其更换账号,用流程图可以很好的展示出注册的这一过程,如下:

 

2-3注册流程图

3.3.2登录流程

无论是用户,还是管理员都设有登录功能,这两种用户在登录的时候的步骤是一样的,都需要先进入到各自对应角色的登录的页面,然后开始输入账号,输入密码,系统接收到用户输入的登录信息之后,便会对其进行响应判断,如果正确且和角色对应的话,便会自动跳转到该角色的功能页面,登录这一步骤可以用流程图来展现,如下:

 

2-4 登录流程图

2.3.3购买流程

该校园二手闲置交易平台的设计重点就是交易功能的实现,即让用户能够购买自己心仪的二手商品,但要想实现这一功能,前提是必须要在登录的状态下才能进行,具体购买交易这一流程如下:

 

图3-5 购买流程图

3.4系统性能分析

一个成功的程序项目除了要保证功能完善外,还要保证它的性能,这两者必不可少、密不可分,只有这两者都有保障,才能让程序被人们信赖,使用率更高。

(1)信息的安全性要高。当下信息时代,信息就是金钱,信息的重要性不言而喻,信息的安全是首要考虑的,不允许出现信息泄露的现象,否则其造成的损失不可估量。

(2)使用的体验感要好。在用户使用的时候,要给用户良好的体验,首先要保证页面的整齐、明了,因为人们在使用程序的时候,页面首先展现在眼前,给人的第一感觉要好,增加好感度。

(3)响应的速度要快。人们在使用程序的时候,必不可少会出现页面的切换,从一个功能页面跳转到另一个功能页面,这个跳转过程要求响应快速,不能拖延时间过长,让人焦急,放弃使用。

(4)运行的稳定性要强。程序在运行的时候必须要保证具有极高的稳定性,不允许出现失真、失调、模糊等问题。

3 校园二手闲置交易平台总体设计

3.1 系统功能结构设计

系统在结构上的设计至关重要,要考虑周全,设计全面,一个完善的结构体系,能够满足用户在使用时的各种需求,这样会让提高程序的使用率,保证程序被长久的利用。在设计校园二手闲置交易平台的结构时,也列入重点,采用模块化的方法来进行设计,即首先将大模块确定下来,再慢慢的将大模块进行补充完善,向下分支出小模块,一起共同组成的系统的结构体系,下图是该校园二手闲置交易平台的结构设计图,直观明了的可以看出本项目程序的功能。

系统的前端主要是用户通过浏览器进入到系统当中,对平台的信息进行查看、交易、管理,包括首页,闲置交流,网站公告,校园资讯,注册登录,个人账户,个人收藏,二手商品,交流管理,模块管理(二手商品,二手订单),其前对用户功能模块图如图3-1所示。

 

图3-1 校园二手闲置交易平台前端功能结构图

系统的后端主要是管理员对平台的信息进行管理,包含轮播图,网站公告管理,资源管理(校园资讯、资讯分类),交流管理(闲置交流、交流分类),系统用户(管理员、注册用户),模块管理(商品分类、二手商品、二手订单),其后端管理员功能模块图如图3-2所示。

 

图3-2 校园二手闲置交易平台后端功能结构图图

3.2 数据库设计

3.2.1 数据库概念结构设计

在程序的设计过程中,必不可少的就是数据库的设计,而且这部分的设计也是相当重要的,数据库设计的目标是要求数据具有极高的完整性,还要确保数据不冗余。在数据库设计时,会先确定程序中的每一个实体,然后对每一个实体的属性都一一进行规划完善,这样一来会减轻工作量,明确目标。在实体以及实体的属性都明确后,进行该校园二手闲置交易平台的实体属性E-R图的构建,如下。

 

图3-3 校园二手闲置交易平台总E-R关系图

3.2.2 数据库逻辑结构设计

在完成了数据库的实体属性E-R图设计之后,便开始根据实体属性E-R图来一一转换成对应的数据库表,下面便是该程序的几个主要的数据库的表结构。

(1)registered_users注册用户信息表如表3-3所示。

表3-1registered_users注册用户信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

registered_users_id

int

注册用户ID

gender

varchar

性别

full_name

varchar

姓名

examine_state

varchar

审核状态

recommend

int

智能推荐

user_id

int

用户ID

create_time

datetime

创建时间

update_time

timestamp

更新时间

(2)commodity_classification商品分类信息表如表3-4所示。

表3-2 commodity_classification商品分类信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

commodity_classification_id

int

商品分类ID

commodity_category

varchar

商品类别

recommend

int

智能推荐

create_time

datetime

创建时间

update_time

timestamp

更新时间

(3)second_hand_goods二手商品信息表如表3-5所示。

表3-2 second_hand_goods二手商品信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

second_hand_goods_id

int

二手商品ID

trade_name

varchar

商品名称

commodity_category

varchar

商品类别

original_price

int

原价

selling_price

int

卖价

old_and_new_degree

varchar

新旧程度

picture

varchar

图片

contact_information

varchar

联系方式

publishing_users

int

发布用户

product_introduction

text

商品介绍

hits

int

点击数

praise_len

int

点赞数

recommend

int

智能推荐

create_time

datetime

创建时间

update_time

timestamp

更新时间

(4)second_hand_orders二手订单信息表如表3-6所示。

表3-4 second_hand_orders二手订单信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

second_hand_orders_id

int

二手订单ID

order_number

varchar

订单号

trade_name

varchar

商品名称

commodity_category

varchar

商品类别

selling_price

varchar

卖价

picture

varchar

图片

publishing_users

int

发布用户

purchase_user

int

购买用户

address

varchar

地址

contact_number

varchar

联系电话

consignee_name

varchar

收货人姓名

remarks

text

备注

recommend

int

智能推荐

create_time

datetime

创建时间

update_time

timestamp

更新时间

(5)forum闲置交流信息表如表3-7所示。

表3-5 forum闲置交流信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

forum_id

mediumint

论坛id

display

smallint

排序

user_id

mediumint

用户ID

nickname

varchar

昵称

praise_len

int

点赞数

hits

int

访问数

title

varchar

标题

keywords

varchar

关键词

description

varchar

描述

url

varchar

来源地址

tag

varchar

标签

img

text

封面图

content

longtext

正文

create_time

timestamp

创建时间

update_time

timestamp

更新时间

avatar

varchar

发帖人头像

type

varchar

论坛分类

(6)collect收藏信息表如表3-8所示。

表3-6 collect收藏信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

collect_id

int

收藏人ID:

user_id

int

来源表:

source_table

varchar

来源字段:

source_field

varchar

来源ID:

source_id

int

标题:

title

varchar

封面:

img

varchar

创建时间

create_time

timestamp

更新时间

update_time

timestamp

收藏人ID

(7)article校园资讯信息表如表3-9所示。

表3-7  article校园资讯信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

article_id

mediumint

数码新闻id

title

varchar

标题

type

varchar

文章分类

hits

int

点击数'

praise_len

int

点赞数

create_time

timestamp

创建时间

update_time

timestamp

更新时间

source

varchar

来源

url

varchar

来源地址

tag

varchar

标签

content

longtext

内容

img

varchar

封面图

description

text

文章描述

(8)comment评论信息表如表3-9所示。

表3-8  comment评论信息表

数据库字段名

字段类型

是否主键

是否外键

是否为空

字段含义

comment_id

int

评论ID

user_id

int

评论人ID

reply_to_id

int

回复评论ID

content

longtext

内容

nickname

varchar

昵称

avatar

varchar

头像地址

create_time

timestamp

创建时间

update_time

timestamp

更新时间

source_table

varchar

来源表

source_field

varchar

来源字段

source_id

int

来源ID

4 校园二手闲置交易平台详细设计与实现

校园二手闲置交易平台的详细设计与实现主要是根据前面的校园二手闲置交易平台的需求分析和校园二手闲置交易平台的总体设计来设计页面并实现业务逻辑。主要从校园二手闲置交易平台界面实现、业务逻辑实现这两部分进行介绍。

4.1前台用户功能模块

4.1.1 前台首页界面

用户通过浏览器进入导首页后,可以查看首页展示的所有信息,包括搜索框,导航栏,注册登录,轮播图,网站公告等,其主界面展示如下图4-1所示。

 

图4-1 前台首页界面图

首页逻辑代码如下所示。

package com.project.demo.constant;

/**

 */

public class FindConfig {

    public static String PAGE = "page";

    public static String SIZE = "size";

    public static String LIKE = "like";

    public static String ORDER_BY = "orderby";

    public static String FIELD = "field";

    public static String GROUP_BY = "groupby";

    public static String MIN_ = "_min";

    public static String MAX_ = "_max";

}

4.1.2注册界面

没有登录的用户只有浏览的权限,不能进行评论、收藏、购买等操作,如果想要实现这些操作必须登录,如果是新用户的话,点击右上角的“注册”按钮,就会进入到注册界面,输入提示输入用户信息,选择身份,点击“注册”进行提交注册。注册界面展示如下图4-2所示。

 

图4-2 用户注册界面图

注册逻辑代码如下所示。

 /**

     * 注册

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put("username",String.valueOf(map.get("username")));

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

    public void insert(Map<String,Object> body){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

        log.info("[{}] - 插入操作:{}",entity);

}

4.1.3登录界面

用户注册显示成功以后,在首页右上方点击“登录按钮”进入到登录界面,输入用户名+密码,然后通过滑动图片验证通过后,点击“登录”进行登录,在登录界面也可以创建一个账户,忘记密码找回密码,登录界面如下图4-3所示。

 

图4-3登录界面图

登录逻辑代码如下所示。

  /**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.1.4 个人账户界面

用户登录成功后可以对个人账户中的资料、密码以及收藏进行管理,个人账户界面如下图4-4所示。

 

图4-4个人账户界面图

4.1.5 闲置交流界面

用户点击导航栏上的“闲置交流”可以查看系统中所有帖子信息,可以输入关键词进行查看,点击某一帖子进入到详情界面可以对帖子收藏、点赞、评论,也可以发布内容,闲置交流界面如下图4-5所示。

 

图4-5闲置交流界面图

闲置交流逻辑代码如下所示。

 public Map<String, Object> success(Object o) {

        Map<String, Object> map = new HashMap<>();

        if (o == null) {

            map.put("result", null);

            return map;

        }

        if (o instanceof List) {

            if (((List) o).size() == 1) {

               o =  ((List) o).get(0);

                map.put("result", o);

            }else {

                String jsonString = JSONObject.toJSONString(o);

                JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));

                map.put("result", objects);

            }

        } else if (o instanceof Integer || o instanceof String) {

            map.put("result", o);

        } else {

            String jsonString = JSONObject.toJSONString(o);

            JSONObject jsonObject = JSONObject.parseObject(jsonString);

            JSONObject j = service.covertObject(jsonObject);

            map.put("result", j);

        }

        return map;

}

4.1.6 校园资讯界面

用户点击导航栏上的“校园资讯”可以查看系统中所有校园资讯信息,可以输入关键词进行查看,也可以按照排序进行查找,点击某一校园资讯进入到详情界面可以对校园资讯收藏、点赞、评论,校园资讯界面如下图4-6所示。

 

图4-6校园资讯界面图

4.1.7 二手商品详情界面

用户点击导航栏上的“二手商品”可以查看系统中所有二手商品信息,可以输入关键词进行查看,也可以按照商品类别、排序进行查找,点击某一二手商品进入到详情界面可以对二手商品购买、收藏、点赞、评论,二手商品详情界面如图4-7所示,购买流程图如图4-8所示。

 

图4-7 二手商品详情界面图

 

图4-8购买界面图

二手商品详情逻辑代码如下所示。

<mapper namespace="com.project.demo.dao.base.BaseMapper">

    <select id="selectBaseList" resultType="java.util.LinkedHashMap">

        ${select}

    </select>

    <select id="selectBaseCount" resultType="Integer">

        ${count}

    </select>

    <select id="selectBaseOne" resultType="Object">

        ${select}

    </select>

    <update id="updateBaseSql">

        ${sql}

    </update>

    <delete id="deleteBaseSql">

        ${sql}

    </delete>

</mapper>

4.1.8交流管理界面

用户进入后台后点击“交流管理”按钮可以查看自己提交的闲置交流信息,可以管理用户提交的评论,查询闲置交流,删除闲置交流,闲置交流界面如下图4-9所示。

 

图4-9 闲置交流界面图

交流管理逻辑代码如下所示。

public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.1.9我的订单界面

用户在后台点击模块管理按钮,可以对二手商品以及二手订单进行管理,模块管理界面如下图4-10和图4-11所示。

 

图4-10 二手商品界面图

 

图4-11 二手订单界面图

二手订单逻辑代码如下所示。

 <sql id="selectAccessTokenVo">

        select token_id, token, maxage, create_time, update_time, user_id from access_token

    </sql>

    <select id="selectAccessTokenList" parameterType="com.project.demo.entity.AccessToken" resultMap="AccessTokenResult">

        <include refid="selectAccessTokenVo"/>

        <where>

            <if test="token != null  and token != ''"> and token = #{token}</if>

            <if test="maxage != null "> and maxage = #{maxage}</if>

            <if test="userId != null "> and user_id = #{userId}</if>

        </where>

    </select>

    <select id="selectAccessTokenById" parameterType="Integer" resultMap="AccessTokenResult">

        <include refid="selectAccessTokenVo"/>

        where token_id = #{tokenId}

    </select>

    <insert id="insertAccessToken" parameterType="com.project.demo.entity.AccessToken" useGeneratedKeys="true" keyProperty="tokenId">

        insert into access_token

        <trim prefix="(" suffix=")" suffixOverrides=",">

            <if test="token != null  and token != ''">token,</if>

            <if test="maxage != null ">maxage,</if>

            <if test="createTime != null ">create_time,</if>

            <if test="updateTime != null ">update_time,</if>

            <if test="userId != null ">user_id,</if>

         </trim>

        <trim prefix="values (" suffix=")" suffixOverrides=",">

            <if test="token != null  and token != ''">#{token},</if>

            <if test="maxage != null ">#{maxage},</if>

            <if test="createTime != null ">#{createTime},</if>

            <if test="updateTime != null ">#{updateTime},</if>

            <if test="userId != null ">#{userId},</if>

         </trim>

    </insert>

    <update id="updateAccessToken" parameterType="com.project.demo.entity.AccessToken">

        update access_token

        <trim prefix="SET" suffixOverrides=",">

            <if test="token != null  and token != ''">token = #{token},</if>

            <if test="maxage != null ">maxage = #{maxage},</if>

            <if test="createTime != null ">create_time = #{createTime},</if>

            <if test="updateTime != null ">update_time = #{updateTime},</if>

            <if test="userId != null ">user_id = #{userId},</if>

        </trim>

        where token_id = #{tokenId}

    </update>

    <delete id="deleteAccessTokenById" parameterType="Integer">

        delete from access_token where token_id = #{tokenId}

    </delete>

    <delete id="deleteAccessTokenByIds" parameterType="String">

        delete from access_token where token_id in

        <foreach item="tokenId" collection="array" open="(" separator="," close=")">

            #{tokenId}

        </foreach>

    </delete>

4.2管理员功能模块

4.2.1 管理员登录界面

管理员想要对校园二手闲置交易平台中的信息进行管理,必须登录到后台,在登录界面输入帐号+密码,通过滑动验证后,点击“登录”,如果帐号、密码正确则跳转到管理员主界面,登录界面如下图4-12所示。

 

图4-12登录界面图

登录逻辑代码如下所示。

public String encryption(String plainText) {

        String re_md5 = new String();

        try {

            MessageDigest md = MessageDigest.getInstance("MD5");

            md.update(plainText.getBytes());

            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");

            for (int offset = 0; offset < b.length; offset++) {

                i = b[offset];

                if (i < 0)

                    i += 256;

                if (i < 16)

                    buf.append("0");

                buf.append(Integer.toHexString(i));

            }

            re_md5 = buf.toString();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return re_md5;

}

4.2.2 校园资讯界面

管理员点击“资源管理”可以对系统中的校园资讯以及资讯分类进行增删改查操作,以供前台用户进行按照分类查看校园资讯,同时可以对前台用户对校园资讯发布的评论进行管控,校园资讯的界面如下图4-13所示。

 

图4-13校园资讯界面图

校园资讯逻辑代码如下所示。

  @RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

    }

4.2.3 闲置交流界面

管理员点击“交流管理”按钮可以对系统中的闲置交流以及交流分类进行增删改查,方便用户进行查看,同时可以对前台用户对闲置交流发布的评论进行管控,闲置交流界面如下图4-14所示。

 

图4-14闲置交流界面图

闲置交流逻辑代码如下所示。

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

    }

4.2.4 系统用户界面

管理员点击“系统用户”按钮可以对系统中的所有用户进行管理,包含了管理员和注册用户两部分,注册用户界面如下图4-15所示。

 

图4-15注册用户界面图

系统用户逻辑代码如下所示。

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

4.2.5商品分类界面

管理员点击“模块管理”按钮,选择商品分类菜单,可以对商品的分类进行增删改查,方便前台用户按照分类查看二手商品。商品分类界面如下图4-16所示。

 

图4-16 商品分类界面图

商品分类逻辑代码如下所示。

@RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

4.2.6二手商品界面

管理员点击“模块管理”按钮,选择二手商品菜单,可以对二手商品进行增删改查,管理其评论。二手商品界面如下图4-17所示。

 

图4-17 二手商品界面图

二手商品逻辑代码如下所示。

@PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

}

4.2.7二手订单界面

管理员点击“模块管理”按钮,选择二手订单菜单,可以对二手订单进行管控。二手订单界面如下图4-18所示。

 

图4-18 二手订单界面图

二手订单逻辑代码如下所示。

 @RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

5系统测试

5.1程序测试

程序测试是程序开发当中的最后一步,在经历这一步的时候,也意味着程序开发已经结束,已经进入到检查错误的时候,通过测试查错,来确保程序可以运用到实际使用中,运行正常,可以说测试工作至关重要。

测试主要用于检查程序是否存在bug,是否成功。虽然在经历测试的时候,程序已经完成,看似最后测试的工作是很轻松的,其实不然,测试是相当复杂、繁琐,而又艰巨、漫长的一步,和程序开发耗时可以说不相上下,只有严格的测试,才能发现程序是不是还有错误,如果有错误存在,就需要一步一步的修改,直到程序无误。通过完善的测试,能够准确的发现问题、改正问题,能够改善系统,让系统更加的完美。

5.2 功能用例

功能测试的目的是为了验证系统功能是否符合用户需求,是否还存在功能缺陷等。本系统由于功能较多,下面将给出3个重点模块的测试用例。

(1)登录功能测试

表5-1 登录功能测试

 

(2)二手商品功能测试

表5-1 二手商品功能测试

 

(3)系统用户功能测试

表5-3 系统用户功能测试

 

5.3 性能测试

关于性能测试,以网站主页作为例子来进行测试,系统需要在5秒内响应。测试项包括菜单栏、各功能模块入口、新增信息栏、个人信息栏等。性能测试结果如表6-4所示。

表5-4 性能测试

测试用例编号

04

测试用例名称

访问网站主页

目的

验证系统是否能够在5秒钟之内完成加载

测试用例级别

性能测试

测试流程

1.登录系统,进入到系统首页,等待5秒钟查看加载情况;

2.点击任意功能模块,等待5秒钟查看加载情况;

3.点击功能模块内的“新增”按钮,,等待5秒钟查看加载情况;

预期结果

系统首页、各功能模块入口、新增信息栏、个人信息栏等能够在5秒钟之内完成加载。

实际结果

系统首页、各功能模块入口、新增信息栏、个人信息栏等在5秒钟之内成功加载。

结论

测试通过

5.4 系统测试结果

测试完全遵循编写的测试用例,在全面测试了系统的所有功能后,我们能够确认,系统的功能都能正确执行,也基本符合用户的操作习惯,各个功能的执行时间都在正常范围内,系统运行稳定。

结论

此刻已经完成了对校园二手闲置交易平台的开发工作,写作论文的工作也基本要结束了,在这个过程中,成长了许多,也学习到了非常多的东西,真是收益颇多,感慨万分。

起初在要进行程序开发时,真的是毫无头绪可言,不知从何开始做,非常苦恼,因为这是第一次独立完成项目的开发,是一个很大的挑战,也是必须要完成的挑战。在经过去图书馆以及上网查阅资料,以及和同学老师的共同探讨,逐渐的有了思绪,明确了开发步骤,首先开始系统分析工作,在经过对系统需求进行了分析之后,明确了程序要开发研究的两大方向,对功能也完善了,然后经过对程序详细的设计、实现,到最后的测试,成功的完成了程序的开发,这个开发过程是非常漫长的,也充满了非常多的困难、磨难,但在不断的摸索、坚持下,还是顺利的完成了毕设的工作,当项目完成之后那种自豪、喜悦是无法表达的。作为首个独立完成的项目,困难重重不可避免,所有的磨难都是一种学习,所以在磨难解决的那一刻学习到的东西也是平时在课堂、书本上无法学习到的,实践的重要性不言而喻,在以后的工作中,实践能力更是需要不断的提升,只有将大学所学知识和实践结合在一起,才能发挥最大的作用,才能开发出更好更优秀的程序,这也是以后的工作中,需要重点学习的。

经过本次项目开发,也让我真正的感受到了信息技术的伟大,真的可以说是造福人类,值得我们深入学习,继续研究,不断进取、创新。

参考文献

[1]基于B/S架构的网上购物交易系统的设计与实现[J]. 李延香,马怀,唐云凯.  物联网技术. 2016(01)

[2]校园二手物品交易平台的设计与实现[J]. 马杰.  河南科技. 2017(19)

[3]校园二手交易网络平台探究[J]. 苑亚坤.  科技创业月刊. 2016(07)

[4]高校闲置物品交易系统设计与实现[J]. 林康杰,邱泽明,陈彬,陈兆东,陈晓璇,鲜征征.  新型工业化. 2021(06)

[5]黄海校园二手商品交易平台的建设研究[J]. 王鑫飞,齐伟伟.  魅力中国. 2017(07)

[6]校园二手商品回收交易调研分析[J]. 翟帅,韩正功,邓璐,李拥红,郑迪.  大众投资指南. 2019(17)

[7]基于云平台的校园二手商品交易系统的设计与实现[D]. 白忠军.贵州大学 2018

[8]校园二手交易市场分析及实训——以楚雄师范学院为例[J]. 张小乐,杨泽睿,蔡吉梅.  统计与管理. 2018(12)

[9]校内大学生二手交易的实践研究——以天津师范大学为例[J]. 苏慧敏,陆佳圻,吴蓓,王欣瑶.  中国商论. 2018(31)

[10]新型大学校园二手物品交易平台的构建研讨[J]. 程文菁,孙正茂.  黑龙江科学. 2019(01)

[11]高校二手交易市场的构建[J]. 赖家美,龚志伟.  福建电脑. 2018(11)

[12]基于jsp的数据库开发技术研究[J]. 李俊.  才智. 2017(20)

[13]JSP的网络数据库连接技术探讨[J]. 崔娜.  黑龙江科技信息. 2016(36)

[14]基于计算机软件开发的JAVA编程语言分析[J]. 王红娟.  电脑知识与技术. 2021(05)

[15]基于JAVA数据库编程及其应用探究[J]. 江奇峰.  电脑编程技巧与维护. 2021(04)

[16] MySQL数据库管理实战[M]. 甘长春,人民邮电出版社 , 2019

[17]MySQL数据库基于JSP的访问技术[J]. 张继东.  电子技术与软件工程. 2017(15)

[18]JSP Special Issue on Information Processing in Living Systems. Thierry Mora,Luca Peliti,Olivier Rivoire. Journal of Statistical Research . 2016

[19] Mohammed H J ,  Hama K ,  Faraj A . Python-WSGI and PHP-Apache Web Server Performance Analysis by Search Page Generator (SPG)[J]. UKH Journal of Science and Engineering, 2021(1).

[20] Heera V ,  Balasubramaniyan R . DESIGN AND IMPLEMENTATION OF DIGITAL SIGNAGE SYSTEM USING IoT[J]. i-Manager s Journal on Communication Engineering and Systems, 2021(1):10.

[21] Joseph K . ADMINISTRATION SYSTEM FOR END TO END LUXURY APARTMENT MANAGEMENT SOFTWARE.  2021.

 

到此刻,已经完成了毕业设计,这也意味着我的大学生涯即将要结束了,要开启新的生活,踏入社会。想到这里,心理不免有点失落,要和相处四年的老师同学们说再见,要和学生生涯说再见,刚踏入大学的场景,和同学们打闹嬉笑、坐在教室听老师讲课的画面还都历历在目,太多不舍,太多怀念。在这最后的时刻,心情是无法表达的,我唯有致以我最高的谢意,我的老师、同学们,我的家人们。

指导老师的认真教导,让我受益颇深,从刚踏入大学的那一刻,指导老师便给了我莫大的鼓舞,让我无论是在生活上,还是在学习上都备有信心,特别是在本次的毕设当中,指导老师更是付出了很多心血,从一开始的选题,到程序的编码以及论文写作部分,都一一耐心的给了指导,帮助我克服困难,解决问题,给我指点思路,让我学会自己动手,提高自己的独立开发程序的能力,指导老师付出了太多,所以,在这我要首先感谢指导老师,您是我的明灯,给我方向,我将铭记于心,不负所望。

同学们的陪伴、关心、帮助,让我的大学生活更加的丰富多彩,有了你们陪伴的四年大学生活中,充满了太多的回忆,酸甜苦辣,虽然我们也有过吵闹,但是我们依然如初,共同陪伴,谢谢你们,虽然我们即将毕业,但在今后的日子里,我们依然会联系,互相鼓励、互相支持,我们是永远的朋友。

父母家人的支持,一直是我最坚实的后盾,无论发生什么,他们对我始终不离不弃,谢谢你们,我爱你们,我对你们的感激千言万语都无法表达,在以后我会努力工作,为我们的家庭贡献一份力量,共同创造美好的生活。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/VX_ZYKJ985/article/details/132054912

智能推荐

使用UmcFramework和unimrcpclient.xml连接多个SIP设置的配置指南及C代码示例

在多媒体通信领域,MRCP(Media Resource Control Protocol)协议被广泛用于控制语音识别和合成等媒体资源。UniMRCP是一个开源的MRCP实现,提供了客户端和服务端的库。UmcFramework是一个基于UniMRCP客户端库的示例应用程序框架,它帮助开发者快速集成和测试MRCP客户端功能。本文将详细介绍如何使用UmcFramework和unimrcpclient.xml配置文件连接到多个SIP设置,以及如何用C代码进行示例说明。

java.net.ProtocolException: Server redirected too many times (20)-程序员宅基地

文章浏览阅读3k次。报错:java.net.ProtocolException: Server redirected too many times (20)1.没有检查到cookie,一直循环重定向。解决:CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));URL url = new URL(url); ..._java.net.protocolexception: server redirected too many times (20)

springboot启动报错 Failed to scan *****/derbyLocale_ja_JP.jar from classloader hierarchy_failed to scan from classloader hierarchy-程序员宅基地

文章浏览阅读4.1k次。问题这是部分报错信息2019-07-11 14:03:34.283 WARN [restartedMain][DirectJDKLog.java:175] - Failed to scan [file:/D:/repo/org/apache/derby/derby/10.14.2.0/derbyLocale_ja_JP.jar] from classloader hierarchyjava...._failed to scan from classloader hierarchy

MATLAB-ones函数_matlab中ones函数-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏7次。在MATLAB中,ones函数用于创建一个指定大小的由1组成的矩阵或数组。_matlab中ones函数

解决PS等软件出现应用程序无法正常启动(0xc000007b)_photoshop应用程序无法正常启动0xc000007b。请单击“确认”关闭应用程序。-程序员宅基地

文章浏览阅读3.9w次,点赞2次,收藏9次。  在使用电脑办公过程中,安装应用程序时难免遇到无法安装或者无法正常启动的问题,这对我们使用电脑带来了诸多不便。那遇到应用程序无法正常启动的问题要如何解决呢?相信大家肯定都是十分疑问的,每次都是只能忍痛重新安装软件。今天,小编就和大家探讨下应用程序无法正常启动的解决方法,帮助大家排忧解难。0xc000007b电脑图解1  第一种方案:SFC检查系统完整性来尝试修复丢失文件  1、打开电脑搜索输入cmd.exe,选择以管理员身份运行,跳出提示框时选择继续。0xc000007b电脑图解2_photoshop应用程序无法正常启动0xc000007b。请单击“确认”关闭应用程序。

oracle介质恢复和实例恢复的异同-程序员宅基地

文章浏览阅读396次。1、概念 REDO LOG是Oracle为确保已经提交的事务不会丢失而建立的一个机制。实际上REDO LOG的存在是为两种场景准备的:实例恢复(INSTANCE RECOVERY);介质恢复(MEDIA RECOVERY)。 实例恢复的目的是在数据库发生故障时,确保BUFFER CACHE中的数据不会丢失,不会造成数据库的..._oracle 实例恢复和介质恢复

随便推点

轻松搭建CAS 5.x系列(5)-增加密码找回和密码修改功能-程序员宅基地

文章浏览阅读418次。概述说明CAS内置了密码找回和密码修改的功能; 密码找回功能是,系统会吧密码重置的连接通过邮件或短信方式发送给用户,用户点击链接后就可以重置密码,cas还支持预留密码重置的问题,只有回答对了,才可以重置密码;系统可配置密码重置后,是否自动登录; 密码修改功能是,用户登录后输入新密码即可完成密码修改。安装步骤`1. 首先,搭建好cas sso server您需要按..._修改cas默认用户密码

springcloud(七) feign + Hystrix 整合 、-程序员宅基地

文章浏览阅读141次。之前几章演示的熔断,降级 都是 RestTemplate + Ribbon 和RestTemplate + Hystrix ,但是在实际开发并不是这样,实际开发中都是 Feign 远程接口调用。Feign + Hystrix 演示:  eruka(略)order 服务工程:  pom.xml<?xml version="1.0" encoding="U..._this is order 服务工程

YOLOv7如何提高目标检测的速度和精度,基于优化算法提高目标检测速度-程序员宅基地

文章浏览阅读3.4k次,点赞35次,收藏43次。学习率是影响目标检测精度和速度的重要因素之一。合适的学习率调度策略可以加速模型的收敛和提高模型的精度。在YOLOv7算法中,可以使用基于余弦函数的学习率调度策略(Cosine Annealing Learning Rate Schedule)来调整学习率。

linux中进程退出函数:exit()和_exit()的区别_linux结束进程可以用哪些函数,它们之间有何区别?-程序员宅基地

文章浏览阅读4k次,点赞4次,收藏9次。 linux中进程退出函数:exit()和_exit()的区别(1)_exit()执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核。(2)调用_exit函数时,其会关闭进程所有的文件描述符,清理内存以及其他一些内核清理函数,但不会刷新流(stdin, stdout, stderr ...). exit函数是在_exit..._linux结束进程可以用哪些函数,它们之间有何区别?

sqlserver55555_sqlserver把小数点后面多余的0去掉-程序员宅基地

文章浏览阅读134次。select 5000/10000.0 --想变成0.5select 5500/10000.0 --想变成0.55select 5550/10000.0 --想变成0.555select 5555/10000.0 --想变成0.5555其结果分别为:0.5000000 0.5500000 0.5550000 0.5555000一、如果想去掉数字5后面多余的0 ,需要转化一下:selec..._sql server 去小数 0

Angular6 和 RXJS6 的一些改动_angular6,requestoptions改成了什么-程序员宅基地

文章浏览阅读3.1k次。例一:import { Injectable } from '@angular/core';import { Observable } from 'rxjs';import { User } from "./model/User";import { map } from 'rxjs/operators';import { Http, Response, Headers, RequestOp..._angular6,requestoptions改成了什么

推荐文章

热门文章

相关标签