当前位置: 首页 > news >正文

基于SSM框架的狼途汽车门店管理系统的设计与实现

基于SSM框架的狼途汽车门店管理系统的设计与实现

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

汽车美容这个概念进入中国都已经有十多年之久了,汽车的美容方式也逐渐发展的多式多样。众多4S店在中国的立足也说明着汽车美容行业其实已经正式的走向了成熟的发展时期。不得不说,中国的汽车市场是非常庞大的,得益于中国的经济发展速度太迅猛了,人们的生活水平日益提升,很多大城市已经能做到汽车是家庭的必备品,甚至于很多家庭都不止一台汽车。汽车多了,那么汽车门店也像春后的竹笋一般出现在我国的各地。
汽车的服务行业算是一个比较不错的“产业”。主要是因为这个行业是属于社会经济高速发展的产物,是根据汽车保有量的增加而随之形成的新型行业。那么大火的汽车的后服务市场究竟是什么呢?汽车的后服务市场可以这样理解,你买完车之后,你如果想让车的内饰变得更加美观,这时候门店就能帮你解决这个问题。从宏观的角度上来说,其实就是有关于购车后的所有服务门店都可以帮你解决你的需求。但是由于我国的汽车后服务市场其实才算是刚刚起步,属于极度不稳定的状态。今后这几年之间是肯定会进行一场激烈的竞争,经过重新洗牌之后的结局才是真正汽车服务业的开始。届时,能通过这些竞争“存活”下来的门店必定是那些懂得用信息化管理技术去运营的。因为只有这些会抓住机会的店家才能运筹帷幄。
虽说这几年中国互联网技术发展的还算比较不错,但是较于西方那些发达国家,其实还是有一点差距的。原因在于欧美那些国家主要推崇的都是O2O模式,该模式其实就是利用起互联网在现今社会的优势,用真正的信息化去管理门店。让门店真正可以做到“无人管理”。中国在O2O模式的应用上还算是比较少的,中国汽车门店其实很多还是使用纯线下的方式在运营。这种运营方式其实不符合现在的发展境况,毕竟现在是属于信息化的时代。一个门店如果是纯线下的模式在面对庞大的信息量的时候,人工管理是没有什么办法管理的。面对这种情况,其实是可以借鉴一下那些欧美国家的做法,使用数据库去存取这些信息,发挥出互联网时代应该有的优势,用一个功能完善、轻量、能处理大量数据的汽车门店管理系统去管理门店,从而真正的实现机械化管理,让汽车门店的运营变得更加便利与先进。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  3. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  4. Bootstrap:Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
  5. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
    超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:管理员表
(admin)

字段名类型默认值列注释
idbigint(20)NULL主键ID
user_namevarchar(50)NULL用户名
pass_wordvarchar(255)NULL密码
head_imgvarchar(200)NULL头像
nick_namevarchar(50)NULL昵称
typeint(3)NULL类型[1:员工

2:配件表
(parts)

字段名类型默认值列注释
idbigint(20)NULL主键ID
parts_namevarchar(50)NULL配件名称
supplier_idbigint(20)NULL所属供应商
pricevarchar(10)NULL单价
stockint(20)NULL库存
cover_imgvarchar(200)NULL配件
contenttextNULL配件用途
type_idbigint(20)NULL所属分类
current_stockint(20)NULL当前库存

3:配件分类
(parts_type)

字段名类型默认值列注释
idbigint(20)NULL主键ID
parts_type_namevarchar(255)NULL配件分类

4:服务项目表
(projects)

字段名类型默认值列注释
idbigint(20)NULL主键ID
subscribe_idbigint(20)NULL预约表ID
user_idbigint(20)NULL用户ID
contenttextNULL主要服务内容
typeint(3)NULL项目类别[1:汽车美容

5:用户预约表
(subscribe)

字段名类型默认值列注释
idbigint(20)NULL主键ID
user_idbigint(20)NULL用户ID
su_infotextNULL预约内容
subscribe_timedatetimeNULL预约时间
statusint(3)NULL预约状态[1:预约中

6:供应商表
(supplier)

字段名类型默认值列注释
idbigint(20)NULL主键ID
supplier_namevarchar(50)NULL供应商名称
supplier_typevarchar(50)NULL供应商类别
supplier_localtionvarchar(255)NULL供应商所在地址
supplier_boss_namevarchar(50)NULL供应商联系人名称
supplier_telvarchar(20)NULL联系电话

7:项目配件表
(user_parts)

字段名类型默认值列注释
idbigint(20)NULL主键ID
parts_idbigint(20)NULL配件ID
use_numint(20)NULL使用数量
projects_idbigint(20)NULL维修项目ID

8:用户表(users)

字段名类型默认值列注释
idbigint(20)NULL主键ID
user_namevarchar(255)NULL用户名
pass_wordvarchar(255)NULL密码
nick_namevarchar(50)NULL昵称
sexint(3)NULL性别[1:男

五、功能模块:

  1. 前台页面的功能实现:当点击马上预约的时候,就会弹出预约信息的模态框,预约信息包括了姓名、电话、预约的门店(可以下拉选择)、预约的业务(下拉选择)、预约的时间、备注说明。点击确定预约以后会提示用户预约成功。点击ok之后就可以返回门店首页。

    前台页面的功能实现

  2. 登录页面功能的实现:当输入账号不存在或者密码错误的时候,会提示账号或者密码错误。当输入的账号密码正确的时候,会跳转到员工信息页面,并在菜单栏显示当前登录的用户名

    登录页面功能的实现

  3. 员工页面功能的实现:点击添加/编辑的时候,会跳转到编辑页面。当输入的信息不符合条件的时候将不允许被保存 。
    点击导出员工表的时候,会直接生成一张包含所有员工信息的表格返回给用户。
    点击导入按钮的时候,会有下载模板和选择文件,用户可以下载模板,然后再模板表格填写员工数据,再选择刚才编写的文件,点击保存之后就会跳转回员工信息页面。

    员工页面功能的实现

  4. 权限页面功能的实现:因为系统的代码可能会改动,那么就需要在页面提供一个按钮,作用是为了权限表达式和数据库的权限表达式同步。点击重新加载按钮,会提示是否重新加载权限。点击确定之后会更新权限页面。

    权限页面功能的实现

  5. 公告页面功能的实现:点击查看按钮的时候对应的已读状态会改成已读。而且会跳转至公告查看的页面。
    点击发布按钮的时候状态会变成已发布,同时刷新公告页面。

    公告页面功能的实现

  6. 门店信息页面功能的实现:点击编辑的时候进入到信息编辑页面,有个查看附件的按钮,点击该按钮的时候会打开门店的营业执照照片。可以选择文件作为营业执照的照片进行上传。

    门店信息页面功能的实现

  7. 预约信息页面功能的实现:点击确认预约的时候,预约单的状态会变成履行中。点击取消预约的时候,预约单的状态会变成废弃。

    预约信息页面功能的实现

六、代码示例:

前台页面的功能实现
 /*** 展示前端页面方法* @param model* @return*/@RequestMapping("/index")public String index(Model model){//获取所有的数据字典
List<SystemDictionary>systemDictionaries=systemDictionaryService.selectTitle("business");model.addAttribute("systemDictionaries",systemDictionaries);//获取总店对象Business business = businessService.getBymainStore(true);model.addAttribute("business",business);//获取所有的门店信息List<Business> businesses = businessService.listAll();model.addAttribute("businesses",businesses);return "index";}
登录页面功能的实现
public class LoginController {@Autowiredprivate IEmployeeService employeeService;@RequestMapping("/empLogin")@ResponseBodypublic JsonResult empLogin(String username,String password){try {UsernamePasswordToken token = new UsernamePasswordToken(username,password);SecurityUtils.getSubject().login(token);return new JsonResult();}  catch (UnknownAccountException e) {return new JsonResult(false, "账号不存在");} catch (IncorrectCredentialsException e) {return new JsonResult(false, "密码错误");} catch (Exception e) {e.printStackTrace();return new JsonResult(false, "登录异常,请联系管理员");}}
员工页面功能的实现
public class CheckLoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {if (handler instanceof HandlerMethod){//拦截到的都是请求动态资源的请求//判断是否有登录  有放行  没有跳转登录页面Object emp = request.getSession().getAttribute(UserContext.USER_IN_SESSION);if (emp == null){response.sendRedirect("/login.html");return false;}}return true;}
}
权限页面功能的实现
 public void reload() {//1.一次性的把数据库所有的权限信息查出来.List<Permission> permissions = permissionMapper.selectAll();//2.创建一个set集合  用来存储权限表达式Set<String> expressionSet = new HashSet<>();for(Permission p:permissions){//3.将所有的权限信息去从加到集合中expressionSet.add(p.getExpression());}//获取到所有贴了RequiredPermission注解,取出注解上的name和expression,// 封装成Permission,保存到数据库中//HandlerMethod代表每一个控制的方法引用Map<RequestMappingInfo, HandlerMethod> handlerMethods = rmhm.getHandlerMethods();Collection<HandlerMethod> values = handlerMethods.values();for(HandlerMethod method:values){// 获取方法的注解RequiresPermissions annotation = method.getMethodAnnotation(RequiresPermissions.class);// 方法上有贴我们的自定义权限注解if (annotation != null) {// 获取方法的注解 name 和 expression 值String name = annotation.value()[1];String expression = annotation.value()[0];// 存入到数据库之前要判断一下, 若数据库中不存在就存入if(!expressionSet.contains(expression)) {Permission permission = new Permission();permission.setName(name);permission.setExpression(expression);permissionMapper.insert(permission);}}}
}
公告页面功能的实现
  @Overridepublic Notice get(Long id) {Notice notice = noticeMapper.selectByPrimaryKey(id);//点击查看的时候中间表插入数据noticeMapper.insertEmpNotice(UserContext.getEmployee().getId(),id);return notice;
}
门店信息页面功能的实现
 @RequiresPermissions(value = {"business:saveOrUpdate","门店编辑"}, logical = Logical.OR)public String saveOrUpdate(Business business, MultipartFile file) throws Exception {if (file != null && file.getSize()>0) {//处理上传的操作String realPath = servletContext.getRealPath("/");//如果存在 编辑的时候上传带就把之前的删除if (StringUtils.hasText(business.getLicenseImg())) {//拼出删除的路径String deletePath = realPath + business.getLicenseImg();FileUploadUtil.deleteFile(deletePath);}String filePath = FileUploadUtil.uploadFile(file, realPath);business.setLicenseImg(filePath);}if (business.getId() == null) {businessService.save(business);} else {businessService.update(business);}return "redirect:/business/list";
}
预约信息页面功能的实现
//修改预约单状态功能@RequestMapping("/updateStatus")public String updateStatus(Long id ,Integer status){appointmentService.updateStatus(id,status);return "redirect:/appointment/list";
}void updateStatus(@Param("id") Long id, @Param("status") Integer status);<update id="updateStatus">update appointmentset status = #{status}where id = #{id}</update>

七、论文参考:

八、项目总结:

在本次毕业设计期间,自己学会了很多新技术。以前百度开发技术的时候总觉得这些东西了解一下就好了,到时候不是手到擒来的事情吗。通过这次毕业设计项目的开发才真正认识到一个技术如果仅仅只是了解,那么你就只能说出技术的要点,让你真正去实现就会发现比登天都难。其实计算机方面的知识重在实践,只有你真正的把这些技术用熟才能说是对其的了解。
但是由于是第一次自己手动开发一个整套的基于SSM框架的项目,所以系统的问题还是有很多的。例如前端页面选取问题上,本人是采用了各个框架技术的模板页面;数据库中表的设计可能也会存在关系错乱的问题。但是在这次开发过程中也收获了很多之前没有的开发经验。对Bootstrap、Jquery、Freemarker、mybatis等框架或者技术有了更深层次的认识。同样也为自己毕业以后的学习生活和工作打下了坚实的基础。
在本次设计中收获最大的其实并不是对技术的掌握,而是了解到开发一个项目必须得做好规划。不能像无头苍蝇一般没有头绪,只有把项目的全部流程详细的规划好,用文档去记录起来,然后一步一步的实现项目的需求才能让系统具有生命。在开发过程中也不会一帆风顺,遇到系统出现问题的时候,我从以前的束手无策变成现在的冷静也得益于此次开发。现在的我遇到问题都会先分析系统的流程情况,再根据流程情况去分析代码实现的逻辑问题,实在解决不了就会借助百度的力量。当问题十分棘手的情况下会选择询问毕设导师周少波老师请求帮助。我觉得在毕业之后的工作时也应该有这样的态度,才能真正去把项目开发好。
本次毕业设计所做出的项目可能还无法满足真正的企业要求,与真正实际应用还是有着一定的差距的。原因在于搜集的信息不够充足、对实际情况了解不够深入、对系统的分析不够彻底。但是有了这次的开发经验,我相信在以后的开发之路上我能避免走很多弯路,也能开发出真正能应用于现实生活中的项目系统。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

相关文章:

基于SSM框架的狼途汽车门店管理系统的设计与实现

基于SSM框架的狼途汽车门店管理系统的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、…...

视频监控流程图3

<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/> <link rel"stylesheet" type"text/css" href"visio.css"/> <title> 视频监控流程图 </title> <…...

Linux ARM平台开发系列讲解(CAN) 2.14.3 CANFD协议介绍

1. 概述 前面章节介绍了CAN2.0协议,CAN现在主要是用在汽车领域,随着CAN的发展, 又衍生除了CANFD协议,该协议是在CAN的基础之上进行了升级,CAN2.0的最高速率是1Mbps,有限的速率导致CAN总线上负载率变高,所以CANFD就出现了,CANFD目前最高支持10Mbps。除此之外,CANFD还拥…...

参考 | 给C盘 “搬家“

参考 | 给C盘 “搬家” 将在C盘准备 “搬家” 的 文件/文件夹 完整路径 copy 下来 e.g. 路径一 “C:\Users\你的用户名\AppData\Roaming\kingsoft” 将这个 文件/文件夹 CTRLX 剪切下来 注意: 剪切后, 不需要自己重新新建, 直接执行第三步 将这个 文件/文件夹 CTRLV 粘贴到你要…...

剑指 Offer 53 - II. 0~n-1中缺失的数字

原题链接 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的&#xff0c;并且每个数字都在范围0&#xff5e;n-1之内。在范围0&#xff5e;n-1内的n个数字中有且只有一个数字不在该数组中&#xff0c;请找出这个数字…...

分布式id

一、分布式系统 1.1 分布式系统的定义和应用场景 分布式系统是由多个独立的计算机节点协同工作&#xff0c;以共同完成一个任务的系统。这些节点通过网络进行通信和协调&#xff0c;共享计算和存储资源&#xff0c;从而实现对更大规模问题的处理和更高系统可用性的要求。 分…...

创意编程py模拟题

前言&#xff1a;好久没写博客了&#xff0c;来水好好写一篇 注&#xff1a;本篇文章为py&#xff0c;不是c 1、敲七 版本1 题目&#xff1a; 题目描述 输出7和7的倍数&#xff0c;还有包含7的数字例如&#xff08;17&#xff0c;27&#xff0c;37…70&#xff0c;71&#…...

uniapp中条件编译

官方&#xff1a;https://uniapp.dcloud.net.cn/tutorial/platform.html#%E8%B7%A8%E7%AB%AF%E5%85%BC%E5%AE%B9 #ifndef H5 代码段… #endif 表示除了H5其他都可以编译 #ifdef H5 代码段… #endef 表示只能编译H5&#xff0c;其他的都不能编译 其他编译平台请查看官方文档。 …...

封装 YoloV5 detect.py 成 Python 库以供 python 程序使用

本项目地址 Github 本项目地址 Github Introduction YoloV5 作为 YoloV4 之后的改进型&#xff0c;在算法上做出了优化&#xff0c;检测的性能得到了一定的提升。其特点之一就是权重文件非常的小&#xff0c;可以在一些配置更低的移动设备上运行&#xff0c;且提高速度的同时…...

PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离

标签 PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离 背景 PostGIS中有两种常用的空间类型geometry和geography&#xff0c;这两种数据类型有什么差异&#xff0c;应该如何选择&#xff1f; 对于GIS来说&#xff0c;首先是坐标系&#xff0c;有两种&#…...

K3S 系列文章-5G IoT 网关设备 POD 访问报错 DNS ‘i/o timeout‘分析与解决

开篇 《K3s 系列文章》《Rancher 系列文章》 问题概述 20220606 5G IoT 网关设备同时安装 K3S Server, 但是 POD 却无法访问互联网地址&#xff0c;查看 CoreDNS 日志提示如下&#xff1a; ... [ERROR] plugin/errors: 2 update.traefik.io. A: read udp 10.42.0.3:38545-&…...

社会工程学介绍

目录前言手段和术语假托在线聊天/电话钓鱼下饵&#xff08;Baiting&#xff09;等价交换同情心尾随&#xff08;Tailgating or Piggybacking&#xff09;社交工程学的演进钓鱼式攻击电脑蠕虫垃圾邮件特别人物总结前言 在信息安全方面&#xff0c;社会工程学是指对人进行心理操…...

干货 | 有哪些安慰剂按钮的设计?

仔细观察我们的生活&#xff0c;你会发现处处都是安慰剂按钮&#xff0c;ATM的点钞声、开启空调的呼呼声&#xff0c;这些都对用户心里产生了有意的引导作用&#xff0c;当你打开了空调按钮&#xff0c;先播放声音会让你感觉你按下的按钮起到了作用。 我们的大脑不喜欢杂乱无章…...

LeetCode 每日一题 2023/2/13-2023/2/19

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录2/13 1234. 替换子串得到平衡字符串2/14 1124. 表现良好的最长时间段2/15 1250. 检查「好数组」2/16 2341. 数组能形成多少数对2/17 1139. 最大的以 1 为边界的正方形2/18 1…...

SAP 关于多种语言配置

怎样才能在登录时选择自己需要的语言登录呢&#xff1f;虽然这个问题对很多人来说可能根本就算不上问题&#xff0c;但对很多新手来说可能却是很想尽快解决的问题。 曾经有位Puber说有个很简单的办法&#xff0c;但可惜的是在我一直没找到这个办法。今天看到一份资料&#xff…...

万字长文讲述由ChatGPT反思大语言模型的技术精要

文&#xff5c;张俊林 源&#xff5c;知乎张俊林 导读&#xff1a;ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;效果能好成这样&#xff1b;惊醒是顿悟到我们对LLM的认知及发展理念&#xff0c…...

SpringBoot静态资源访问

静态资源路径 类路径下&#xff1a;/resources/static/、/resources/public/、/resources/resources/、/resources/META-INF/resources 这些路径下的资源均可直接访问&#xff1b;通过 http://ip:port/资源名称 访问即可 可在配置文件中对访问路径和访问拦截规则进行设置&…...

【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享

来源&#xff1a;投稿 作者&#xff1a;LSC 编辑&#xff1a;学姐 比赛官网: https://www.dataglobal.cn/cmpt/signUpInfo200.html 任务描述 请参赛者设计智慧农业病虫害检测系统&#xff0c;给出一体化问题解决方案&#xff0c;鼓励参赛选手结合某一果园/农作物实际情况建立…...

Properties类读取配置文件

文章目录前言一、Properties类的使用 :1、创建sk.properties文件2、编写读取 properties 属性文件&#xff0c;并输出属性值。3、运行结果总结前言 Properties类的介绍 : 在Java中提供了 java.util.Properties 类&#xff0c;来读取 .properties 属性文件。在程序调用 Propert…...

知其然更要知其所以然,聊聊SQLite软件架构

SQLite是一个非常受欢迎的数据库&#xff0c;在数据库排行榜中已经进入前十的行列。这主要是因为该数据库非常小巧&#xff0c;而且可以支持Linux、Windows、iOS和Andriod的主流的操作系统。 SQLite非常简单&#xff0c;是一个进程内的动态库数据库。其最大的特点是可以支持不同…...

微服务架构的演变

文章目录1.1 系统架构的演变过程1.1.1 单体应用架构1.1.2 垂直应用架构1.1.3 分布式架构1.1.4 SOA架构1.1.5 微服务架构1.2 微服务架构设计原则1.2.1 AKF拆分原则1.2.1.1 X轴扩展&#xff08;水平复制&#xff09;1.2.1.2 Y轴扩展&#xff08;模块拆分&#xff09;1.2.1.3 Z轴扩…...

使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)

一、问题 一开始的时候&#xff0c;准备使用html2canvasjspdf来实现的&#xff0c;但是遇到了一个麻烦的问题&#xff0c;在其他项目中使用html2canvas没有任何问题&#xff0c;但是在要开发的项目中使用&#xff0c;就给我报错&#xff0c;是真滴烦。 html2canvas报错 Uncau…...

云环境渗透测试的重要性

&#x1f315;写在前面 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ✉️今日分享&#xff1a; “在这个世上&#xff0c;除了极稀少的例外&#xff0c;我们其实只有两种选择&#xff1a;要么是孤独&#xff0c;要么就是庸俗。” 随着云计…...

ROS2 入门应用 请求和应答(Python)

ROS2 入门应用 请求和应答&#xff08;Python&#xff09;1. 创建功能包1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加入口点5. 编译和运行1. 创建功能包 1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了ros2_ws工作空间 在《ROS2 入…...

是德Keysight E4991A/e4991B射频阻抗/材料分析仪

Keysight E4991A 射频阻抗/材料分析仪提供终极阻抗测量性能和强大的内置分析功能。它将为评估 3 GHz 范围内组件的组件和电路设计人员的研发提供创新。E4991A 使用 RF-IV 技术&#xff0c;而不是反射测量技术&#xff0c;可在宽阻抗范围内进行更精确的阻抗测量。基本阻抗精度为…...

这才是计算机科学_人工智能

人工智能一、前言二、ML2.1 分类2.1.1 决策树2.2.2 支持向量机2.2.3 人工神经网络三、计算机视觉3.1 Prewitt算子3.2 Viola-Jones 人脸检测算法3.3 卷积神经网络四、自然语言处理4.1 知识图谱4.2 语音识别一、前言 之前讲了计算机从发展到现在的过程&#xff0c;计算机很适合做…...

DFS深度优先搜索—Java版

递归三要素 递归的定义 递归的拆解 递归的出口 什么时候使用DFS&#xff1f; 深度回溯问题&#xff08;DFS与回溯区别不大&#xff09; 二叉树问题 组合、排列问题 找方案问题&#xff08;解空间是一棵树或者图&#xff0c;需要自行构造图/树&#xff09; 图的搜索问题…...

RAY - 小记

文章目录关于 RAYRAY 结构关于 RAY Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a toolkit of libraries (Ray AIR) for accelerating ML workloads. RAY 是一个简单、通用的分布式计算框架。 RAY 解…...

金三银四软件测试工程师面试题(含答案)

前言&#xff1a;此文专门记载本人平时面试以及收藏的面试题目&#xff0c;如果有错误之处请及时指正&#xff0c;谢谢&#xff01; 1、python的数据类型有哪些 答&#xff1a;Python基本数据类型一般分为&#xff1a;数字、字符串、列表、元组、字典、集合这六种基本数据类…...

Python 连接数据源与邮件功能(九)

文章目录一、概述二、Python 连接数据源1&#xff09;Python MySQL 基础操作1、部署MySQL2、MySQL Connector 库【1】安装 mysql-connector-python 库【2】连接 MySQL【3】增加数据【4】查询数据【5】更新数据【6】删除数据2、PyMySQL 库【1】安装 PyMySQL 库【2】连接 MySQL【…...

喀什网站建设公司/一键生成原创文案

Processing入门简介 http://blog.csdn.net/mysunnytime/article/details/16104723 Processing官方教程 https://processing.org/tutorials/gettingstarted/ Processing程序中重写了两个函数&#xff1a;setup()和draw()。 setup()是在程序开始时调用的函数&#xff0c;只执…...

保定做网站的公司/分销系统

2019独角兽企业重金招聘Python工程师标准>>> 是这样的&#xff0c;我的项目的框架是 之前 公司统一使用的框架&#xff0c;配置都配置好了的。 大神们说是没有问题的&#xff0c; 我简单过了一下&#xff0c;也没有问题。 在项目上线并完成了好久后。。。就在前几天…...

青岛手机网站建设公司/微友圈推广平台怎么加入

1.组件对象的序列化 从TCOMPONENT继承下来的组件对象序列化都简单&#xff0c;因为它本身支持流化&#xff0c;通过流化也就达到了序列化组件对象的目的。 TReader和TWriter都只支持Tcomponent流化,除非你自己写个TReader和TWriter,就有可能支持TPersiten的流化. function Co…...

中小企业网站用什么技术/网站怎么做出来的

在一些现代的扁平化设计网站&#xff0c;特别是移动端网站&#xff0c;经常会包含许多简单而清晰的小图标&#xff0c;例如网站图标、用户的默认头像、移动端网页首页底部固定的切换栏等&#xff0c;这些小图标一般都是由美工做好&#xff0c;可能会放到精灵图上&#xff0c;前…...

外包网靠谱吗/sem与seo

本文通过开发一个JSP 编辑器插件的示例&#xff0c;介绍了 Eclipse 中设置 JSP 断点的方法&#xff0c;以及如何远程调试 JSP。作为基础知识&#xff0c;本文的前两部分描述了 JAVA Debug 和 JSR-45 的基本原理。环境要求: 本文的代码是在 Eclipse3.0.0&#xff0c;JDK1.4.2 和…...

建行国际互联网网站/网络营销与策划

CAP原则 在分布式系统要满足CAP原则&#xff0c;一个提供数据服务的存储系统无法同时满足&#xff1a;数据一致性、数据可用性、分区耐受性。 C数据一致性&#xff1a;所有应用程序都能访问到相同的数据。 A数据可用性&#xff1a;任何时候&#xff0c;任何应用程序都可以读写…...