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

Vue+SpringBoot+数据库整体开发流程 1

本篇文章通过springboot整合mybatis-plus去实现后端对数据库的增删改查,以及响应给前端的url,让前端获得数据。

 

目录

一、简单搭建一个Vue项目

检查node.js版本

使用vue-cli创建空项目

Vue-cli工程中每个文件夹和文件的用处

二、Mysql数据库

创建数据库

新建表

三、SpringBoot+Mybatis-Plus实现增删改查

创建空项目

配置maven

application.yml配置

pom.xl导入相关依赖

代码的编写

MySQL表绑定到spring boot(实体层)

springboot绑定到mybatis-plus(数据层)

把数据层加工处理成逻辑业务(service服务层)

调用服务层的controller

接口自测


一、简单搭建一个Vue项目

检查node.js版本

首先需要自行安装node。

查看node.js版本的两种方式,

node -v
node -version

 查看npm版本,

npm -v

出现版本号则说明安装成功(最新的以官网为准)。

使用npm安装或者升级vue-cli,

1.卸载旧的
npm uninstall vue-cli -g2.安装新的
npm install -g @vue/cli

查看 vue-cli的版本,

vue --version

 

使用vue-cli创建空项目

以管理员身份打开命令行界面,进入任意一个想要创建项目的文件夹,输入命令:vue create命令 +自定义项目名字,

vue create 项目名

此处我的项目名是demo,

上下键选择这个自定义的版本,意味着选择手动配置,然后回车,

按空格键选中,完成后按回车键,

选择vue2的版本回车,也可以根据自己需要选择vue3的版本,

选择y,然后回车键,

选择第一个回车,

选择第一个回车,

是否要把此配置设置为以后建立项目的默认选项,选择N,

按照给出的提示继续输入(下一步有提示失败的做法),

等待安装完成, 

按照给出的提示继续输入(下一步有提示做法),

就可以在当前文件目录下,看到一个叫demo的项目文件夹,

然后使用Vscode打开这个demo文件夹,在Vscode的终端中,输入下列命令就可以运行前端项目,

npm run serve

可以看到项目已经成功运行,

在浏览器输入对应的网址就可以看到界面,可以看到vue的标志。

Vue-cli工程中每个文件夹和文件的用处

  • dist 文件夹:默认 npm run build 命令打包生成的静态资源文件,用于生产部署
  • node_modules:存放npm命令下载的开发环境和生产环境的依赖包
  • public:有的叫assets:存放项目中需要用到的资源文件,css、js、images以及index
  • src文件夹:存放项目源码及需要引用的资源文件
  • src-api文件夹:放ajax相关操作的代码文件:index.js(相关的接口),ajax.js(封装的axios,拦截器)。有的叫service:自己配置的vue请求后台接口方法
  • src-common文件夹:stylus的混合文件.styl,不要写到public也可以
  • src-components文件夹:存放vue开发中抽离的一些公共组件
  • src-mock文件夹:mock数据存放文件及mock模拟接口(没有后台接口或接口不完整情况下可以模拟后台接口)
  • src-pages文件夹:涉及到路由的组件
  • src-router文件夹:vue-router,路由器及路由的配置
  • src-store文件夹:存放 vue中的状态数据,用vuex集中管理
  • App.vue文件:使用标签渲染整个工程的.vue组件
  • main.js文件:vue-cli工程的入口文件
  • package.json文件:用于 node_modules资源部 和 启动、打包项目的 npm 命令管理
  • build 文件夹:用于存放 webpack 相关配置和脚本。开发中仅 偶尔使用 到此文件夹下 webpack.base.conf.js 用于配置 less、sass等css预编译库,或者配置一下 UI 库
  • config 文件夹:主要存放配置文件,用于区分开发环境、线上环境的不同,常用到此文件夹下 config.js 配置开发环境的 端口号、是否开启热加载 或者 设置生产环境的静态资源相对路径、是否开启gzip压缩、npm run build 命令打包生成静态资源的名称和路径等

二、Mysql数据库

在创建数据库的时候通常会使用一些可视化的工具来创建数据库和表这些比较方便,使用SQL语句创建的就比较慢。这里要使用的是可视化工具navicat。

此处我以创建数据库demo为例。

创建数据库

(1)打开navicat连接MySQL,输入连接名和用户名密码这些,输入完成后点击确定就好了。

  • 连接名:自定义
  • 用户名和密码就是自己的MySQL的账号和密码 

(2)右上角右键刚刚新建的连接,然后点击打开连接(完成后会看到之前其他的数据库,不用管它),右键刚刚的新建连接---右键选择新建数据库  ,

  • 数据库命名:最好和导入的sql文件名一样
  • 字符集:选择utf8的。(mb3和mb4区别就是mb4能表示更多的字符,如果用不到扩容去选择utf8mb4会有点浪费空间)
  • 排序规则填写:选择general_ci结尾的(ci:大小写不敏感、cs:区分大小写、bin:以二进制存储并且区分大小写)

新建表

双击创建好的数据库,点击打开数据库,在该数据库下,右键点击新建表,添加表中要定义的字段,创建好后就点击保存。

数据库字段的解释:数据库字段就像是一个表格里的每一列,每一列都有特定的名字,用来存储一种特定的信息。就像你在 Excel 表格中看到的那样,每一列可能存储不同类型的数据,比如名字、年龄、地址等等。

想象你有一个表格,上面有一排排的姓名、年龄和邮箱这些标题,每一列下面填写着不同人的信息。这些列就是数据库表中的字段,它们帮助我们整齐地存储和管理不同种类的数据。

就可以在该数据库的表选项下,看到刚刚创建的表了。

在表中添加一行数据,方便后续操作。

三、SpringBoot+Mybatis-Plus实现增删改查

创建空项目

这种方式创建的时候自动帮我们加载MySQL的依赖和mybatis的依赖,就不用在pom.xml文件里面再去导入了,版本都是跟着springboot父版本来,也一定程度上避免了版本冲突。但是必须在配置文件里面配置数据库的信息,要不然启动报错。

点击idea的文件-->新建-->项目,

跟着步骤走,我这里是JDK17,就选用JDK17的,

因为我的JDK是17的,所以我选择的是3.x版本。(这些都不重要,后续也可以在pom.xml文件中修改的)

Spring Boot 2.x 版本通常建议使用的 JDK(Java Development Kit)版本是 JDK 8、JDK 11 或更高版本,具体取决于 Spring Boot 的子版本。以下是 Spring Boot 2.x 版本与推荐的 JDK 版本的对应关系:

  • Spring Boot 2.0.x:推荐使用 JDK 8。
  • Spring Boot 2.1.x:推荐使用 JDK 8 或 JDK 11。
  • Spring Boot 2.2.x:推荐使用 JDK 8 或 JDK 11。
  • Spring Boot 2.3.x:推荐使用 JDK 8、JDK 11 或 JDK 14。
  • Spring Boot 2.4.x:推荐使用 JDK 8、JDK 11 或 JDK 15。
  • Spring Boot 2.5.x:推荐使用 JDK 8、JDK 11 或 JDK 16。

Springboot3.x系列就要JDK17了。

选择新窗口打开,

配置maven

打开IDEA的设置找maven,直接搜maven,这里面配置好自己的本地maven,

application.yml配置

把这个配置文件application.properties重命名,后缀命名为yml文件。

把application配置文件的后缀改为yml,这样看着更分明一点,具体的端口号默认是8080的。 然后在文件里写入连接数据库的配置,建立和数据库的关联。

把以下的信息粘贴进去yml配置文件里面,但是要根据自己的MySQL数据库名称、账户密码、端口这些来改。

server:port: 80
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/goldtestusername: rootpassword: 123456
# 接口文档配置
knife4j:enable: trueopenapi:title: "接口文档"version: 1.0group:default:api-rule: packageapi-rule-resources:- com.water.demo.controller

如下,

这样我们的配置就好了。 

pom.xl导入相关依赖

这里面有几个必须的依赖

  • web依赖,创建时就已经加入进去了,不用导入(检查一下)
  • lombok依赖 ,创建时就已经加入进去了,不用导入(检查一下)
  • mybatis-plus的依赖(来源baomidou)
  • mysql依赖
  • knife4j依赖:接口文档

在pom.xml文件里面导入相关的依赖。如果依赖加入不成功,就要检查自己的maven配置问题了。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.water</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.3</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency><!--添加热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--swagger--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version></dependency><!--gson数据--><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.9.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--热部署配置--><configuration><!--fork:如果没有该项配置,整个devtools不会起作用--><fork>true</fork><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

代码的编写

MySQL表绑定到spring boot(实体层)

在项目下新建一个entity包,再新建一个类。类的命名就是User。

类名和数据库中的表名一样,不过首字母要大写,一个属性类对应一张数据库表。并且,User实体类里面的属性要和数据库中的字段对应  。

springboot绑定到mybatis-plus(数据层)

项目下创建一个mapper包,创建一个接口UserMapper,命名来源是属性类名+mapper,驼峰命名。

到这里就可以使用mybatis-plus内置最原始的增删改查,但是不够灵活,只能做最简单的增删改查。

为什么要创建这个接口呢?为了把springboot获得的属性类再绑定给到mybatis-plus那边,然后绑定的这个接口给其他层调用。

把数据层加工处理成逻辑业务(service服务层)

为什么要这一层?

这一层次叫服务层,也叫业务层。因为上面的数据完全都绑定好了,可以实现增删改查了,但是那只是最原始的,封装的方法都很少,稍微复杂一点的分页查询方法里面都没有,所以要在这一层使用别人封装好的更好的方法以及各种逻辑都可以在这里写。

(1)编写获取内置增删改查方法接口IFeedbackService

项目下创建一个service包,在service包下建立IFeedbackService接口,

这个接口继承了MP(mybatis-plus)封装好的接口,我们需要的各种增删改查方法都在这里面给我们写好了,这个接口编写是为了给后面控制层去调用这个接口里面的增删改查方法。 

(2) 编写自己定义的FeedbackService:

在service包下建立FeedbackService类,

IFeedbackService接口是直接用MP内置的增删改查方法,可以正常用,但是我想对内置的这些增删改查再优化呢,比如数据的加密、数据的校验等逻辑处理。

而且我想根据我自己的需求来去给这些内置的增删改查嵌套或者升级自定义呢?

FeedbackService类的底层是IFeedbackService接口的实现类,也就是说这个类包含了IFeedbackService的接口。还能自定义方法和对mapper数据层的调用,就比IFeedbackService接口的方法更加丰富,用于加上自定义处理繁琐的逻辑数据层。

(3)编写服务层合成逻辑业务FeedbackServiceImpl

在service包下建立impl包,创建FeedbackServiceImpl类 ,

为什么要写这个实现类?因为把FeedbackService和IFeedbackService的方法都拿来这里组成逻辑业务,比如登录、校验、权限等。

为什么不直接用FeedbackService,FeedbackService里面不是也可以定义逻辑方法吗?

FeedbackService自定义类主要用来处理一些对数据比较底层的方法。而FeedbackServiceImpl类里定义的是靠FeedbackService那些小方法组起来的业务。总而言之,这里是业务的成型,调用FeedbackService(主要)+ IFeedbackService(次要)+一些逻辑组成业务。

调用服务层的controller

编写调取业务层的UserController类,

你想要什么,告诉我,控制层会让服务层去弄逻辑业务。要什么数据或者逻辑业务都要通过我控制层,直接找控制层拿就好了。

接口自测

测试的工具可以使用idea自带的,也可以使用postman等请求测试工具。

Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案,它不仅拥有 Swagger 的所有功能,还做了很多优化和增强,例如:

  • 界面更美观: 提供简洁美观的界面,方便用户浏览和使用 API 文档。
  • 功能更丰富: 支持接口排序、搜索、分组等功能,支持多种格式输出。
  • 易用性更高: 提供了更友好的配置方式,使用起来更加简单方便。

由于我在项目中集成 Knife4j,可以轻松进行接口自测。

启动Spring Boot 应用,在浏览器中访问 http://localhost:8080/doc.html,你就能看到 Knife4j 生成的 API 文档啦!

比如,测试根据id查询建议及其处理结果接口,

 

相关文章:

Vue+SpringBoot+数据库整体开发流程 1

本篇文章通过springboot整合mybatis-plus去实现后端对数据库的增删改查&#xff0c;以及响应给前端的url&#xff0c;让前端获得数据。 目录 一、简单搭建一个Vue项目 检查node.js版本 使用vue-cli创建空项目 Vue-cli工程中每个文件夹和文件的用处 二、Mysql数据库 创建数…...

百度Apollo打通与ROS的通信,扩展自动驾驶系统生态

技术文档&#xff5c;打通与ROS的通信&#xff0c;扩展自动驾驶系统生态_Apollo开发者社区 (baidu.com)...

Web3 项目安全手册

现如今针对 Web3 项目的攻击手法层出不穷&#xff0c;且项目之间的交互也越发复杂&#xff0c;在各个项目之间的交互经常会引入新的安全问题&#xff0c;而大部分 Web3 项目研发团队普遍缺少的一线的安全攻防经验&#xff0c;并且在进行 Web3 项目研发的时候&#xff0c;重点关…...

AI边缘计算在安防领域的智能化革新:赋能安防系统的智能化升级

随着人工智能&#xff08;AI&#xff09;和边缘计算技术的快速发展&#xff0c;两者在安防视频领域的应用日益广泛&#xff0c;为传统安防系统带来了革命性的变革。AI边缘计算技术通过将AI算法和模型部署在边缘设备上&#xff0c;实现了数据处理和智能决策的即时响应&#xff0…...

vscode配置C/C++环境(保姆级详细教程)

一. 引言 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是一款由微软开发的免费、开源的轻量级代码编辑器&#xff0c;它支持多种编程语言和平台&#xff0c;并提供丰富的扩展功能&#xff0c;让开发者能够更高效地编写代码。 大家能来搜用如何在VSCode配置C/C环境…...

MDK keil STM32 局部变量不能查看值,显示为not in scope

用MDK调试程序&#xff0c;查看变量时watch窗口总是和 一、方法1&#xff1a;优化级别改为Level 0 1 编译器把这个局部变量给优化掉了&#xff0c;并没有在内存中生成&#xff0c;把优化级别改为Level 0&#xff0c;重新编译。 Keil默认优化是等级3&#xff0c;最高优化&…...

表连接查询之两个left join与递归SQL

一、如下SQL1 SELECT i.*,su1.name as createName,su2.name as updateNameFROM information ileft join sys_user su1 on su1.idi.create_idleft join sys_user su2 on su2.idi.update_id 二、分析 1、SELECT i.*,su.name as createName,sua.name as updateName FROM informati…...

2024.9.10

打的模拟赛难度很大,T1就2200分? 其中转化成差分数组上的问题很巧妙 还用了将数分成2的多次方的形式,这种套路在最近的几场比赛和题中都见到过,值得归纳一下 T3是长链剖分和对顶堆维护,太难写了还没写出来 T4仍然是概率题,但是并没有见过类似的出题方式,其中关键是:最大独…...

22_图论中的高级数据结构

菜鸟&#xff1a;老鸟&#xff0c;我最近在处理一个网络节点数据的问题&#xff0c;发现代码运行得特别慢。你能帮我看看有什么优化的方法吗&#xff1f; 老鸟&#xff1a;当然可以。你处理的是图结构对吗&#xff1f;你是如何存储和操作这些节点的&#xff1f; 菜鸟&#xf…...

axure判断

在auxre中我们也可以实现判断的功能&#xff0c;当目标等于什么内容时则执行下方的功能。 一、判断输入框中是否有值 画布添加一个输入框、一个文本标签删除其中内容&#xff0c;添加一个按钮&#xff0c;输入框命名为【文本显示】文本标签命名为【提示】 给按钮新增一个交互…...

【开源大模型生态7】华为的盘古大模型

鹏程盘古模型是全球首个全开源2000亿参数的自回归中文预训练语言大模型&#xff0c;在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出。 2070亿参数&#xff0c;64层。 这里注意几个概念。 参数&#xff08;Parameters&#xff09;&#xff1a; 参数是指构成模…...

SprinBoot+Vue远程教育网站的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…...

docker的基本操作

目录 一&#xff0c;应用部署 创建容器 进入容器 创建有端口的容器 通过ssh进入容器 二、镜像操作 搜索镜像 拉取镜像 查看本地镜像 删除镜像 导入镜像 三、容器操作 创建并启动容器 使用 docker run 命令创建并启动一个容器 创建一个有端口号的容器 查看正在运…...

理解 RabbitMQ:生产者、连接、通道、交换机、队列与消费者的消息流

在分布式消息系统中&#xff0c;RabbitMQ 是一个非常流行的消息代理。它的核心理念是解耦应用程序的生产者和消费者&#xff0c;使得消息能够可靠地从一方传递到另一方。本文将带你深入了解 RabbitMQ 中 生产者、连接、通道、交换机、队列 和 消费者 之间的消息流&#xff0c;并…...

【截图服务 +打包】pkg打包 puppeteer

目录 最后结论 windows打包成服务 定制executablePath 服务遇到的问题 使用java开一个线程启动 遇到的问题与解决 版本匹配问题 打出包后的运行报错问题 linux下的安装 安装n 库缺少 程序运行后的报错 制作 运行报错与修改后成功 参考文档 最后结论 pkg -t win…...

深入理解Servlet的并发处理机制小波制图流程图

在Java Web开发中&#xff0c;Servlet是处理HTTP请求的核心组件。理解Servlet如何处理并发请求对于开发高性能Web应用至关重要。本文将深入探讨Servlet的生命周期、实例化过程以及多线程处理机制。 Servlet的生命周期和实例化 Servlet遵循单例模式&#xff0c;对于每个Servle…...

Ajax和XMLHttpRequest之间的关系

Ajax和XMLHttpRequest之间的关系是非常密切的。Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种网页开发技术&#xff0c;用于创建交互式的应用程序或网站。而XMLHttpRequest是Ajax的核心技术之一。 XMLHttpRequest&#xff1a;这是一个JavaScript对象&…...

Linxu系统:kill命令

1、命令详解&#xff1a; kill命令是用于向进程发送信号&#xff0c;通常用来终止某个指定PID服务进程&#xff0c;kill命令可以发送不同的信号给目标进程&#xff0c;来实现不同的操作&#xff0c;如果不指定信号&#xff0c;默认会发送 TERM 信号&#xff08;15&#xff09;&…...

解决缺少genconfig

编译鸿蒙L0系统时&#xff0c;遇到报错&#xff1a; [OHOS INFO] Returned 127. [OHOS INFO] stderr: [OHOS INFO] [OHOS INFO] env: “genconfig”: 没有那个文件或目录 [OHOS INFO] [OHOS INFO] See //kernel/liteos_m/BUILD.gn:34:1: whence it was imported. [OHOS INFO] …...

百易云资产管理运营系统 house.save.php SQL注入漏洞

1 产品简介 百易云资产管理运营系统&#xff0c;是专门针对企业不动产资产管理和运营需求而设计的一套综合解决方案。该系统能够覆盖资产的全生命周期管理&#xff0c;包括资产的登记、盘点、评估、处置等多个环节&#xff0c;同时提供强大的运营分析功能&#xff0c;帮助企业…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?

在现代前端开发中&#xff0c;Utility-First (功能优先) CSS 框架已经成为主流。其中&#xff0c;Tailwind CSS 无疑是市场的领导者和标杆。然而&#xff0c;一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...

Qt学习及使用_第1部分_认识Qt---Qt开发基本流程

前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...