共享车位|基于SpringBoot+vue+node共享车位平台的设计与实现

news2024/11/26 7:29:50

作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

收藏点赞不迷路  关注作者有好处

文末获得源码

项目编号:BS-PT-075

前言:

现如今,私家车辆数量越来越多,方便了人们出行的同时,也带来了很多问题。其中,停车成了最大的难题,本平台的前台帮助用户快速查找空闲车位,做到高效停车,后台帮助停车场管理员管理有限的车位资源。

本文针对上述问题,设计开发出一个B/S架构的基于SpringBoot框架技术的共享车位平台。在整个平台的开发周期中,开发选用SpringBoot框架,选用MYSQL数据库和Redis数据库来实现。主要完成以下几个方面的研究:

1.分析在SpringBoot应用程序开发过程中所采用的C/S结构和B/S结构的优缺点,提出了基于SpringBoot共享车位平台的基本实行方案;

2.对功能需求详细分析,并且也对非功能需求以及系统运行环境进行简单分析,分析各个功能模块的设计和实现,分析寻找车位流程以及实现方案。

3.实现了登录注册、用户管理、停车场管理、车位管理、车位和车辆状态监控、查看用户留言、查看附近停车场、查看车位信息、在线留言等功能。

本平台UI简洁美观,极易使用,功能完善。为用户提供停车场、车位等信息,方便用户快速寻找空闲的停车位;方便管理员高效管理车位资源,及时查看用户反馈信息,快速了解车位情况。

一,项目简介

 本平台包括前台系统和后台管理系统,前台系统供用户使用,后台管理系统供管理员使用。管理员又分为超级管理员和普通管理员两个角色,超级管理员除了拥有普通管理员的所有权限外,还能对普通管理员进行管理。用户可以进行登录注册、找回密码、查看附近停车场、查看车位信息、在线留言。管理员可以进行登录注册、管理用户信息、管理停车场信息、管理停车场车位信息、状态监控、查看用户在线留言。

前台系统
用户对象:
(1)用户可以登录、通过手机验证码辅助注册账号、找回密码。
(2)用户可以在个人中心完善个人信息、修改个人信息、修改密码等操作。
(3)用户可以查看附近停车场信息。
(4)用户可以查看指定停车场内车位的信息,使用空闲车位,并支持一键快速查找空闲车位。
(5)用户可以在线留言,通过发表留言及时向管理员反馈遇到的问题。
(6)用户可以通过地图查看公司所在地理位置,以及公司地址、联系方式等信息。

后台管理系统
超级管理员对象:
(1)超级管理员对普通管理员进行管理,可以新增管理员、删除管理员、修改管理员信息、查看管理员列表、重置管理员密码。
(2)超级管理员拥有普通管理员的所有权限。
普通管理员对象(以下统称为“管理员”):
(1) 管理员可以在个人中心完善个人信息、修改个人信息、修改密码等操作。
(2) 管理员对用户信息进行管理,可以停用/启用、新增、删除、条件查询用户,修改用户信息、导出用户信息。
(3) 管理员对停车场信息进行管理,可以停用/启用、新增、删除、条件查询停车场,修改停车场信息、导出停车场信息。
(4) 管理员对停车场车位信息进行管理,可以新增、删除、条件查询车位,修改车位信息。
(5) 管理员可以监控所有的车辆状态和指定停车场内的车位状态,生成统计数据后通过饼状图和柱状图进行数据展示。
(6) 用户留言后,管理员可以在用户在线留言中查看留言内容和留言人信息,并可以调整留言处理进度。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前端开发技术:Vue+ElementUI+Nodejs

三,系统展示

5.1  用户信息管理

用户信息管理主页面如下图5-1所示,管理员登录后点击用户信息管理进入主页面,可以查看所有用户的综合信息,并可以进行禁用/停用用户账号、多条件模糊查询数据、新增用户页面如图5-2所示、修改用户信息页面如下图5-2所示、删除用户、导出用户信息等操作。

图5-1 用户信息管理主页面

图5-2 新增用户页面

图5-3 修改用户信息页面

5.2  用户在线留言管理

用户留言管理主页面如下图5-4所示,管理员登录后进入留言管理主页面,可以查看用户的留言、支持多条件模糊查询、并可以对留言的处理进度进行调整如下图5-5所示,以及删除留言等操作,主要是为了帮助管理员查看用户的留言,从而针对留言采取对应的措施。用户可以在前台发表留言,发表留言页面如图5-6所示。

图5-4 用户留言管理主页面

图5-5 调整留言状态

图5-6 前台用户发表留言页面

5.3  前台登录注册模块

 如果车主还没有账号,可以通过注册一个新的账号并登录享受本平台提供的服务,注册页面如图5-7所示。用户登录成功后,会返回一个token作为身份令牌,前端再将token在请求拦截器中存进请求头信息中,后端根据token查询出对应的用户信息并返回,登录页面如图5-8所示,如果忘记了登录密码,还可以通过手机验证码找回密码,找回密码如图5-9所示。

图5-7 前台注册页面

图5-8 前台登录页面

图5-9前台找回密码页面

5.4  状态监控模块

 以监控车辆状态为例,管理员登录后可以在车辆列表中查看具体的车辆信息如图5-10所示,也可以点击生成统计数据,并在ECharts提供的饼状图和柱状图上展示,如图5-11所示,可以对车辆状态进行宏观监控,主要是为了方便管理员对当前的车位、车辆状态有一个直观的认识。

图5-10 车辆信息列表页面

图5-11 统计数据展示页面

5.1 用户停放车辆实现

用户需要寻找车位停车时,登录本平台前台后,点击附近停车场,进入查看停车场列表页面如图5-12所示,选择一个停车场后进入该停车场内所有车位列表页面如图5-13所示,寻找一个空闲车位后点击使用按钮(也可以点击一键快速查找空闲车位),在弹窗中填写将要停放的车辆信息并提交后,就可以使用该车位了如图5-14所示。

图5-12 停车场列表页面

图5-13 车位列表页面

图5-1 提交车辆信息页面

四,核心代码展示

package com.znz.web.controller.car;

import com.znz.car.domain.CarCar;
import com.znz.car.domain.vo.QueryCarListVo;
import com.znz.car.service.ICarCarService;
import com.znz.common.annotation.Log;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 车辆Controller
 *
 * @author znz
 * @date 2022-10-15
 */
@Api(tags = "车辆状态")
@RestController
@RequestMapping("/car/car")
public class CarCarController extends BaseController {
    @Autowired
    private ICarCarService carCarService;

    /**
     * 查询车辆列表
     */
    @ApiOperation("查询车辆列表")
    @PreAuthorize("@ss.hasPermi('car:carSta:list')")
    @GetMapping("/list")
    public TableDataInfo list(CarCar carCar) {
        startPage();
        List<QueryCarListVo> list = carCarService.selectCarCarList(carCar);
        return getDataTable(list);
    }

    /**
     * 导出车辆列表
     */
    @PreAuthorize("@ss.hasPermi('car:carSta:export')")
    @Log(title = "车辆", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, CarCar carCar) {
        List<QueryCarListVo> list = carCarService.selectCarCarList(carCar);
        ExcelUtil<QueryCarListVo> util = new ExcelUtil<QueryCarListVo>(QueryCarListVo.class);
        util.exportExcel(response, list, "车辆数据");
    }

    /**
     * 获取车辆详细信息
     */
    @PreAuthorize("@ss.hasPermi('car:carSta:query')")
    @GetMapping(value = "/{carId}")
    public AjaxResult getInfo(@PathVariable("carId") Long carId) {
        return AjaxResult.success(carCarService.selectCarCarByCarId(carId));
    }

    /**
     * 新增车辆
     */
    @PreAuthorize("@ss.hasPermi('car:carSta:add')")
    @Log(title = "车辆", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody CarCar carCar) {
        return toAjax(carCarService.insertCarCar(carCar));
    }

    /**
     * 修改车辆状态
     */
    @PreAuthorize("@ss.hasPermi('car:carSta:edit')")
    @Log(title = "车辆", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestParam("carId") Long carId,@RequestParam("carStatus")String carStatus) {
        CarCar carCar = new CarCar();
        carCar.setCarId(carId);
        carCar.setStatus(carStatus);
        return toAjax(carCarService.updateCarCar(carCar));
    }

    /**
     * 删除车辆
     */
    @PreAuthorize("@ss.hasPermi('car:carSta:remove')")
    @Log(title = "车辆", businessType = BusinessType.DELETE)
    @DeleteMapping("/{carIds}")
    public AjaxResult remove(@PathVariable Long[] carIds) {
        return toAjax(carCarService.deleteCarCarByCarIds(carIds));
    }
}

package com.znz.web.controller.car;

import com.znz.car.domain.CarCarpark;
import com.znz.car.service.ICarCarparkService;
import com.znz.common.annotation.Log;
import com.znz.common.constant.Constants;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 停车场Controller
 *
 * @author znz
 * @date 2022-10-14
 */
@Api(tags = "停车场表")
@RestController
@RequestMapping("/car/carpark")
public class CarCarparkController extends BaseController {
    @Autowired
    private ICarCarparkService carCarparkService;

    /**
     * 查询所有数据
     */
    @ApiOperation("查询所有停车场数据")
    @GetMapping("/getAll")
    public AjaxResult getAll() {
        List<CarCarpark> carParkList = carCarparkService.getAll();
        for (CarCarpark carCarpark : carParkList) {
            String photo = carCarpark.getPhoto();
            photo = Constants.PHOTO_PREFIX + photo;
            carCarpark.setPhoto(photo);
        }
        return AjaxResult.success().put("carParkList", carParkList);
    }

    /**
     * 查询停车场列表(带分页-后台)
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:list')")
    @GetMapping("/list")
    public TableDataInfo list(CarCarpark carCarpark) {
        startPage();
        List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);
        return getDataTable(list);
    }

    /**
     * 导出停车场列表
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:export')")
    @Log(title = "停车场", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, CarCarpark carCarpark) {
        List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);
        ExcelUtil<CarCarpark> util = new ExcelUtil<CarCarpark>(CarCarpark.class);
        util.exportExcel(response, list, "停车场数据");
    }

    /**
     * 获取停车场详细信息
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:query')")
    @GetMapping(value = "/{carparkId}")
    public AjaxResult getInfo(@PathVariable("carparkId") Long carparkId) {
        return AjaxResult.success(carCarparkService.selectCarCarparkByCarparkId(carparkId));
    }

    /**
     * 新增停车场
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:add')")
    @Log(title = "停车场", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody CarCarpark carCarpark) {
        return toAjax(carCarparkService.insertCarCarpark(carCarpark));
    }

    /**
     * 修改停车场
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:edit')")
    @Log(title = "停车场", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody CarCarpark carCarpark) {
        return toAjax(carCarparkService.updateCarCarpark(carCarpark));
    }

    /**
     * 删除停车场
     */
    @PreAuthorize("@ss.hasPermi('car:carpark:remove')")
    @Log(title = "停车场", businessType = BusinessType.DELETE)
    @DeleteMapping("/{carparkIds}")
    public AjaxResult remove(@PathVariable Long[] carparkIds) {
        return toAjax(carCarparkService.deleteCarCarparkByCarparkIds(carparkIds));
    }

    /**
     *  分页查询停车场数据(前台)
     */
    @ApiOperation("前台-分页查询停车场列表")
    @GetMapping("/pageList")
    public TableDataInfo pageList(CarCarpark carCarpark) {
        startPage();
        List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);
        for (CarCarpark carpark : list) {
            String photo = carpark.getPhoto();
            photo = Constants.PHOTO_PREFIX + photo;
            carpark.setPhoto(photo);
        }
        return getDataTable(list);
    }

}

package com.znz.web.controller.car;

import com.znz.car.domain.CarMessage;
import com.znz.car.service.ICarMessageService;
import com.znz.common.annotation.Log;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 留言Controller
 *
 * @author znz
 * @date 2022-10-17
 */
@RestController
@RequestMapping("/car/message")
public class CarMessageController extends BaseController {
    @Autowired
    private ICarMessageService carMessageService;

    /**
     * 查询留言列表
     */
    @PreAuthorize("@ss.hasPermi('car:message:list')")
    @GetMapping("/list")
    public TableDataInfo list(CarMessage carMessage) {
        startPage();
        List<CarMessage> list = carMessageService.selectCarMessageList(carMessage);
        return getDataTable(list);
    }

    /**
     * 导出留言列表
     */
    @ApiOperation("导出留言列表")
    @PreAuthorize("@ss.hasPermi('car:message:export')")
    @Log(title = "留言", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, CarMessage carMessage) {
        List<CarMessage> list = carMessageService.selectCarMessageList(carMessage);
        ExcelUtil<CarMessage> util = new ExcelUtil<CarMessage>(CarMessage.class);
        util.exportExcel(response, list, "留言数据");
    }

    /**
     * 获取留言详细信息
     */
    @PreAuthorize("@ss.hasPermi('car:message:query')")
    @GetMapping(value = "/{messageId}")
    public AjaxResult getInfo(@PathVariable("messageId") Long messageId) {
        return AjaxResult.success(carMessageService.selectCarMessageByMessageId(messageId));
    }

    /**
     * 新增留言
     */
    @PreAuthorize("@ss.hasPermi('car:message:add')")
    @Log(title = "留言", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody CarMessage carMessage) {
        return toAjax(carMessageService.insertCarMessage(carMessage));
    }

    /**
     * 修改留言
     */
    @PreAuthorize("@ss.hasPermi('car:message:edit')")
    @Log(title = "留言", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody CarMessage carMessage) {
        return toAjax(carMessageService.updateCarMessage(carMessage));
    }

    /**
     * 删除留言
     */
    @PreAuthorize("@ss.hasPermi('car:message:remove')")
    @Log(title = "留言", businessType = BusinessType.DELETE)
    @DeleteMapping("/{messageIds}")
    public AjaxResult remove(@PathVariable Long[] messageIds) {
        return toAjax(carMessageService.deleteCarMessageByMessageIds(messageIds));
    }
}

五,项目总结

通过社会调查发现,目前市面上的共享车位平台并不多,传统的人力管理模式仍是市场的主流,这样的管理模式存在着许多的问题,例如停车场管理员无法及时知晓车位出现损坏或者车辆出现故障等情况而造成车位资源长时间无法得到有效利用、车主无法及时获取停车场和停车场车位信息、出现故障还需要亲自去寻找停车场管理员反映故障情况。

开发本平台的目的就是解决上述诸多问题,用户只需要借助互联网就可以快速获取附近停车场、车位的综合信息,实现快速寻找空闲车位,解决了到达目的地后还需要盲目地寻找停车位置等问题。用户发现车辆或者设施出现故障后,可以在本平台的在线留言一栏进行留言,大大简化了寻找停车场管理员反映故障情况的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022-12-6-Cmake工程转VS环境开发

新建工程后目录有 .vs 执行文件目录 x64 baseline.sln 首先新建一个目录&#xff0c;下面分为四个目录分别是dll&#xff0c;idl&#xff0c;include&#xff0c;lib 在include目录下面把所有Cmake工程中的include目录下的文件夹拷过来 在x64的debug下面把所有的dll动态库拷…

数据比较器,对比数据前后变化细节

前言 在开发的过程中&#xff0c;有时候需要对数据进行比对&#xff0c;来判断是否发生变化。如果一个字段一个字段比较&#xff0c;就太麻烦了。所以通过整合注解与反射的方式&#xff0c;实现一个通用的实体数据比较框架。 设计 使用注解&#xff0c;确定需要比较的属性。…

进程管理笔记

查看进程详情 命令&#xff1a;ps -aux 查看进程 能够观察所有系统的数据 命令&#xff1a;ps la | head -5 命令&#xff1a;ps axjf | head -20 仅查看自己的bash相关的进程 命令&#xff1a;ps l 观察系统所有进程 命令&#xff1a;ps aux 观察进程变化命令 - top …

微服务框架 SpringCloud微服务架构 21 RestClient 操作文档 21.3 更新文档

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构21 RestClient 操作文档21.3 更新文档21.3.1 更新文档21 RestClient 操作文…

Python:函数进阶

目录 一、Python中的推导式 需求一 需求二 二、Python的全局作用域 三、Python的多参数传递 四、Python的装饰器 被装饰的方法不带参数 被装饰的方法带参数 带参数的装饰器 一、Python中的推导式 列表生成式是python内置的一种创建列表的方法&#xff0c;通过在[ ]内部执…

会话跟踪技术(Cookie和Session)

目录概述Cookie基本使用Cookie原理Cookie 存活时间Session基本使用Session原理Session使用细节Seesion 销毁&#xff1a;Cookie和Session的对比最后概述 会话&#xff1a; 用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&…

Mac系统安装Kafka 3.x及可视化工具

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

网络工程师备考3章

注&#xff1a;本章考察较少&#xff0c;冲刺阶段可直接跳过 最常考点&#xff1a;帧中继&#xff0c;HDLC 3.1 公共交换电话网 英文&#xff1a;Public Switched Telephone Network ,PSTN 这种主网架构已经被淘汰了&#xff0c;现在的电话骨干网都是数字信号&#xff0c;目…

web课程设计网页规划与设计 基于HTML+CSS+JavaScript制作智能停车系统公司网站静态模板

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Java中三种I/O模型 BIO,NIO,AIO

UNIX 系统下&#xff0c; IO 模型一共有 5 种&#xff1a; 同步阻塞 I/O、同步非阻塞 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。 这也是我们经常提到的 5 种 IO 模型 &#xff08;1&#xff09;同步阻塞I/O模型 应用程序发起read调用后&#xff0c;一直处于阻塞状态 内…

BP综述:自闭症中基于功能连接体的预测模型

自闭症是一种异质性的神经发育疾病&#xff0c;基于功能磁共振成像的研究有助于推进我们对其对大脑网络活动影响的理解。我们回顾了使用功能连接和症状的测量的预测建模如何帮助揭示对这种情况的关键见解。我们讨论了不同的预测框架如何进一步加深我们对复杂自闭症症状学基础的…

Word处理控件Aspose.Words功能演示:在 Python 中将 Word DOCX 或 DOC 转换为 PDF

Word 到PDF是最流行和执行最广泛的文档转换之一。DOCX或DOC文件在打印或共享之前会转换为 PDF 格式。在本文中&#xff0c;我们将在 Python 中自动将 Word 转换为 PDF。步骤和代码示例将演示如何使用 Python 将 Word DOCX 或 DOC 转换为 PDF。此外&#xff0c;您将了解自定义 W…

Stable Diffusion模型阅读笔记

Stable Diffusion模型 什么是Stable Diffusion模型 一般而言&#xff0c;扩散是在图像中反复添加小且随机的噪声。与之相反&#xff0c;Stable Diffusion模型是一种将噪声生成为图像的机器学习模型。经过训练&#xff0c;它可逐步对随机高斯噪声进行去噪以获得感兴趣的样本&a…

Apache Hop Transforms Samples【持续完善中】

Samples transforms 1、abort-basic.hpl 根据筛选器行转换的结果中止此管道 第一步:添加Data grid转换,Meta部分维护字段。 Data部分维护数据,如下图。 第二步:添加filter rows,如下图 按照如下截图进行修改: 第三步:添加Abort 第四步:执行截图如下:

[附源码]Python计算机毕业设计Django学生综合数据分析系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Golang 【basic_leaming】fmt.Print, fmt.Printf, fmt.Println 的区别

阅读目录fmt 包fmt.Print 原样输出fmt.Printf 格式输出fmt.Println 值 空格 输出换行输出Println 和 Print 区别Println 和 Printf 区别变量类型推导方式定义变量使用 Printf打印一个变量的类型fmt 包 fmt format&#xff0c;是一种格式化输出函数汇总包&#xff0c;用于格式…

这款国产API工具也太强了吧!让我放弃了postman

为什么弃用postman转用Eolink? 程序员在接口开发完成后都通常需要自测&#xff0c;当返回结果根据符合预期时&#xff0c;则表示代表接口可用。自己以前用的是postman来进行接口测试&#xff0c;但postman只能进行接口测试&#xff0c;有局限性、很多场景不能满足我的需求&am…

jenkins集成sonarqube

一、在linux上面安装sonarqube 相关文件下载地址 &#xff08;1&#xff09;下载sonarqube-9.6.1.59531.zip解压 &#xff08;2&#xff09;创建用户 useradd sonar passwd sonar(3)赋权 chown -R sonar.sonar /opt/sonarqube/sonarqube-9.6.1.59531(4)切换用户&#xff0c…

【C++】C++11新特性

目录 一.列表初始化initializer_list 1.什么是列表初始化 2.列表初始化的原理 二.auto/decltype/nullptr 1.auto - 自动类型推导 2.decltype - 指定类型 3.nullptr - C空指针 三.范围for 四.右值引用/移动构造/移动赋值/万能引用/完美转发 1.什么是右值 2.左值与右值…

react面试题总结一波,以备不时之需

React组件的构造函数有什么作用&#xff1f;它是必须的吗&#xff1f; 构造函数主要用于两个目的&#xff1a; 通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上 所以&#xff0c;当在React class中需要设置state的初始值或者绑定事件时&#xff…