前后端分离博客 Weblog 项目实战
前后端分离博客 Weblog 项目实战:专栏介绍 - 犬小哈专栏 原文作者
http://116.62.199.48/
功能模块
技术栈
必备环境
后端环境:
- JDK 1.8 版本(此版本是目前企业中使用最广泛的);
- MySQL 5.7 版本 (或者 8.x 版本都可以,本项目使用的是 5.7 版本);
- Maven 3.8 版本 (项目构建工具);
前端环境:
安装 Node.js 环境
安装开发工具 VSCode
安装各种插件,来加快开发任务
springboot后端过程搭建
什么是多模块项目?
多模块项目是项目构建中的概念。拿 Maven 来说,多模块项目(Multi-Module Project)是其一个重要特性,它允许我们在一个项目中管理多个子模块。
在一个 Maven 多模块项目中,每个模块都是一个独立的项目,拥有自己的 POM 文件(Project Object Model,项目对象模型)。这些模块可以互相依赖,也可以被其他项目依赖。但是,所有的模块都会被统一管理,它们共享同一套构建系统和依赖管理。
Maven 多模块项目的结构大概是下面这样的:
my-app/ (父项目)|- pom.xml|- my-module1/ (子模块1)| |- pom.xml|- my-module2/ (子模块2)|- pom.xml| ... (实际企业级项目中,会分非常多的模块)
在这个例子中,my-app
是父项目,my-module1
和 my-module2
是它的子模块。每个模块都有自己的 pom.xml
文件。
为什么需要多模块项目?
主要有以下几个原因:
-
代码组织:在大型项目中,我们经常需要把代码分成多个模块,以便更好地组织代码。每个模块可以聚焦于一个特定的功能或领域,这样可以提高代码的可读性和可维护性。
-
依赖管理:Maven 多模块项目可以帮助我们更好地管理项目的依赖。在父项目的 POM 文件中,我们可以定义所有模块共享的依赖,这样可以避免重复的依赖定义,也方便我们管理和升级依赖。
-
构建和部署:Maven 多模块项目的另一个优点是它可以统一管理项目的构建和部署。我们只需要在父项目中执行 Maven 命令,就可以对所有模块进行构建和部署。这大大简化了开发者的工作。
IDEA 搭建 Spring Boot 多模块工程骨架
开始动手
首先选择一个位置,新建一个名为 weblog
的工程目录,用于统一存放后端项目和前端项目,方便后续管理:
创建父项目
打开 IDEA, 依次点击菜单 File -> New -> Project, 准备新建父项目 :
注意:部分小伙伴反馈说,IDEA 通过 Spring Initializr 来创建 Spring Boot 项目, 突然不支持勾选 Java 8 了 , 可以如下图所示,点击小齿轮,将初始化链接换成阿里云的
http://start.aliyun.com
, 就可以正常选择 Java 8 了:另外:你也可以通过第二种方式 Maven Archetype 来创建多模块项目,请点击阅读下面小节内容:
《搭建 Spring Boot 多模块工程(通过 Maven Archetype)》
- ①:选择 Spring Boot 项目初始化器;
- ②:填写父项目名称;
- ③:选择新建项目所在的位置;
- ④:选择通过 Maven 来构建项目;
- ⑤:填写 Group 组织名称,通常为公司域名倒写,如
com.quanxiaoha
; - ⑥:选择前面小节中已经安装好的 JDK 1.8 版本;
- ⑦:选择 Java 版本,和 JDK 版本保持一致,选择 8;
点击 Next ,进入下一步,配置 Spring Boot:
- ①:选择 Spring Boot 版本,这里暂选择一个
2.7
版本,后面我们再手动修改为2.6.3
版本;
注意,本项目使用的 2.6.3 版本,请务必和我保持一个版本,高版本可能有相关 API 的变化,导致相关代码不适用,以及其他相关环境问题。
- ②:点击创建项目;
因为这是个父项目,专门负责统一管理子模块、依赖版本等,创建完成后,在左边导航栏中,先删除下图中标注的无用文件:
删除成功后,目录结构如下:
接下来,开始整理一下父项目的 pom.xml
文件,整理后内容如下:
<?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><!-- 将 Spring Boot 的版本号切换成 2.6 版本 --><version>2.6.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-springboot</artifactId><version>${revision}</version><name>weblog-springboot</name><!-- 项目描述 --><description>前后端分离博客 Weblog By 犬小哈</description><!-- 多模块项目父工程打包模式必须指定为 pom --><packaging>pom</packaging><!-- 子模块管理 --><modules></modules><!-- 版本号统一管理 --><properties><!-- 项目版本号 --><revision>0.0.1-SNAPSHOT</revision><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- Maven 相关 --><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target></properties><!-- 统一依赖管理 --><dependencyManagement></dependencyManagement><build><!-- 统一插件管理 --><pluginManagement></pluginManagement></build><!-- 使用阿里云的 Maven 仓库源,提升包下载速度 --><repositories><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository></repositories>
</project>
创建 web 访问模块(打包也在这个模块中进行)
接下来,我们开始创建父项目下面的子模块。在父项目上右键,添加模块 Module
:
还是和上面创建父项目差不多的步骤,命名一个 weblog-web
模块,此模块是项目的入口,Maven 打包的打包插件放在这里,同时,和博客前台页面展示相关的功能也统一放在此模块下:
勾选上 Lombok
和 Spring Web
依赖,点击 create
创建模块:
创建完成后,删除掉无用的一些目录和文件,删完后,大致如下:
删除完成后,在父项目的 pom.xml
中添加该子模块,以及添加 spring-boot-maven-plugin
:
<!-- 子模块管理 -->
<modules><!-- 入口模块 --><module>weblog-web</module>
</modules><build><!-- 统一插件管理 --><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></pluginManagement></build>
添加完成后,开始编辑 weblog-web
模块中的 pom.xml
,只保留了一些需要的配置,最终配置内容如下:
<?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><!-- 指定父项目为 weblog-springboot --><parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-springboot</artifactId><version>${revision}</version></parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-web</artifactId><name>weblog-web</name><description>weblog-web (入口项目,负责博客前台展示相关功能,打包也放在这个模块负责)</description><dependencies><!-- Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 免写冗余的 Java 样板式代码 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
你可能会遇到的问题
依赖爆红解决方案
若 pom.xml
文件中的依赖出现爆红等情况,通过点击右侧栏 Reload 图标,重新加载 Maven 项目来解决:
控制台出现警告解决方案
在执行 Maven 命令时,若使用 IDEA 默认的 Maven 配置,可能会导致后面打包控制台出现如下警告:
可在点击 File -> Settings 找到 Maven 选项,默认是使用 IDEA 自带的 Maven 版本, 这里将 Maven home path 设置为前面小节中,我们手动安装好的 Maven 路径,再次执行 Maven 命令,即警告信息消失了:
执行 mvn clean package 命令报错
执行 mvn clean package
等相关命令时, 控制台提示如下图所示的错误,这个问题星球内好多人反馈都有犯:
问题原因是,在子模块中的 <parent></parent>
节点下添加了 <relativePath/>
,注意,它只需要在父级项目中添加一次即可,子模块中是无需添加这个的,一定要去掉:
创建 Admin 管理后台功能模块
再次新建一个负责 Admin 管理后台功能的子模块,命名为 weblog-module-admin
,此模块用于统一放置和 Admin 管理后台相关的功能:
依赖仅需勾选 Lombok
即可,后面需要什么再添加:
创建成功后,在父项目的 pom.xml
文件中添加该子模块:
<!-- 子模块管理 --><modules><!-- 入口模块 --><module>weblog-web</module><!-- 管理后台 --><module>weblog-module-admin</module></modules>
然后,和前面一样,删除掉哪些无用的文件夹、文件,删除完成后,如下图所示:
另外,还需要将 resource
目录下的配置文件,和 Application
启动类删除掉。配置文件统一放在 weblog-web
入口模块中来管理:
最后,再整理一下此模块的 pom.xml
, 内容如下:
<?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><!-- 指定父项目为 weblog-springboot --><parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-springboot</artifactId><version>${revision}</version></parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-admin</artifactId><name>weblog-module-admin</name><description>weblog-admin (负责管理后台相关功能)</description><dependencies><!-- 免写冗余的 Java 样板式代码 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>
创建 common 通用功能子模块
依葫芦画瓢,按照上面的步骤,再次创建 weblog-module-common
子模块,此模块专门用于存放一些通用的功能,如接口的日志切面、全局异常管理等等。
创建成功后,在父项目的 pom.xml
文件中添加该子模块:
<!-- 子模块管理 --><modules><!-- 入口模块 --><module>weblog-web</module><!-- 管理后台 --><module>weblog-module-admin</module><!-- 通用模块 --><module>weblog-module-common</module></modules>
和 weblog-mudule-admin
子模块一样,再删除掉无用的文件,最终其 pom.xml
内容如下:
<?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>com.quanxiaoha</groupId><artifactId>weblog-springboot</artifactId><version>${revision}</version></parent><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-common</artifactId><name>weblog-module-common</name><description>weblog-module-common (此模块用于存放一些通用的功能)</description><dependencies><!-- 免写冗余的 Java 样板式代码 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 常用工具库 --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId></dependency><!-- 单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>
父项目统一版本管理
在父项目的 pom.xml
中,将这几个子模块统一声明一下,另外添加相关常用的工具包,如 commons-lang3
、guava
:
<!-- 版本号统一管理 --><properties>...<!-- 依赖包版本 --><lombok.version>1.18.28</lombok.version><guava.version>31.1-jre</guava.version><commons-lang3.version>3.12.0</commons-lang3.version></properties><!-- 统一依赖管理 --><dependencyManagement><dependencies><dependency><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-admin</artifactId><version>${revision}</version></dependency><dependency><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-common</artifactId><version>${revision}</version></dependency><!-- 常用工具库 --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency></dependencies></dependencyManagement>
子模块之间的依赖关系
这几个子模块之间,互相还存在依赖关系,我们也需要引入一下。如入口模块 weblog-web
依赖于 weblog-module-admin
和 weblog-module-common
,在其 pom.xml
添加如下:
<dependencies><dependency><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-common</artifactId></dependency><dependency><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-admin</artifactId></dependency>...</dependencies>
以及 weblog-module-admin
依赖于 weblog-module-common
,在其 pom.xml
添加如下:
<dependencies><dependency><groupId>com.quanxiaoha</groupId><artifactId>weblog-module-common</artifactId></dependency>...</dependencies>
测试看看,有没有报错
在 IDEA 中, 对 weblog-springboot
父项目执行 Maven 的 clean package
打包命令,看看是否能够正常给项目打包:
⚠️ 注意:企业开发中,一般都比较追求敏捷开发,可能不会写太多的单元测试。本实战项目同样为了追求开发进度,不会编写单元测试,所以多模块的单元测试并未配置完成,这里,需要如下图所示,将跳过单元测试勾选上,否则,你打包的时候会报错。
![]()
- ①:执行
mvn clean
命令; - ②:执行
mvn package
打包命令;
如果没有问题,控制台会提示 BUILD SUCCESS 表示构建成功:
打包成功后的 Jar
包,可以在项目目录的 weblog-web
入口模块中的 /target
目录下找到:
启动该 Spring Boot 项目
进入 weblog-web
入口项目,找到 WeblogWebApplication
启动类,点击启动图标,运行此项目:
若控制台能够正确打印如下日志,则表示 Spring Boot 启动成功:
至此,搭建 Spring Boot 多模块工程就成功啦,是不是还挺简单的。
相关文章:
前后端分离博客 Weblog 项目实战
前后端分离博客 Weblog 项目实战:专栏介绍 - 犬小哈专栏 原文作者 http://116.62.199.48/ 功能模块 技术栈 必备环境 后端环境: JDK 1.8 版本(此版本是目前企业中使用最广泛的);MySQL 5.7 版本 (或者 8.x 版本都可以&#…...
stm32 ADC单通道转换
stm32c8t6仅有12位分辨率 1、单次转换 非扫描 1、初始化 void Ad_Init() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//配置ADCCLK时钟分频,ADC的输入时钟不得超过14MHzRCC_ADCCLKConfig(RCC_PCLK2_Div6);G…...
万文c++继承
1、继承的概念与定义 1.1继承的概念 继承:是c代码复用的手段,允许在原有的基础上扩展,在此之前都是函数层次的复用,继承是类设计层次的复用。 下面有两个类Student和Teacher都有姓名/地址/电话/年龄等成员变量。都有identity身…...
记录一次git提交失败解决方案
问题显示: Push rejected: Push to origin/master was rejected 解决步骤: 拉取远程代码并合并 先同步远程仓库的更新到本地,允许合并不相关历史记录: git pull origin master --allow-unrelated-histories 此操作会触发合并冲突解决流程…...
uni-app vue3版本打包h5后 页面跳转报错(uni[e] is not a function)
先看问题 解决方案 在HBuilderX项目中,若需在Web配置中显式关闭摇树优化(Tree Shaking),可以通过以下步骤实现:首先,在配置中打开摇树优化,然后再将其关闭。这样操作后,配置文件中会…...
数字住建:助推智慧工地创新发展
近年来,国家和地方政府陆续出台了一系列政策措施,推动建筑业的智能化高质量发展。通过明确智慧工地的发展方向和目标定位,鼓励建筑业企业采用先进的信息化技术和管理模式,开展智能建造试点城市、资金扶持、税收优惠、智慧工地建设…...
libmemcached库api接口讲解二
我们来学一下怎么存数据 📘 libmemcached 数据写入函数详解(set / add / replace) ✅ 一、三个函数的作用与区别 函数作用key 存在时key 不存在时常见用途memcached_set()写入(新增或覆盖)✅ 覆盖✅ 创建默认推荐memc…...
【数据分析】从TCGA下载所有癌症的多组学数据
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包组学数据类型下载函数运行并行运行使用建议总结系统信息介绍 TCGA(The Cancer Genome Atlas)是一个庞大的癌症基因组数据库,包含多种癌症类型的多组学数据,如基因表达、…...
K8S redis 部署
在Kubernetes 1.26.14中部署Redis单实例/集群的步骤如下(结合NFS持久化存储与认证配置): 一、部署Redis单实例(StatefulSet模式) 1. 创建配置文件 redis-statefulset.yaml # ConfigMap存储Redis配置 apiVersion: v1 …...
Android学习总结之kotlin篇(二)
扩展函数转成字节码的原理(源码级别) Kotlin 扩展函数在编译时会被转换为静态方法,这一过程涉及到以下几个关键步骤: 首先,Kotlin 编译器会为包含扩展函数的包生成一个特定的类。这个类的命名通常是基于包名和文件名的…...
QMK RGB矩阵灯效配置详解:从理论到实践(实操部分)
QMK RGB矩阵灯效配置详解:从理论到实践 引言 RGB灯效是现代机械键盘中一个非常吸引人的特性,通过QMK固件,我们可以实现丰富多彩的灯光效果。本文将详细讲解如何在QMK中配置RGB矩阵灯效,从基础理论到实际实现,帮助键盘爱好者打造专属的RGB键盘。无论你是刚开始接触QMK,还…...
知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑
1. 搜索引擎的进化论 从雅虎目录式搜索到Google的PageRank算法,搜索引擎经历了三次技术跃迁。而AI搜索引擎正在掀起第四次革命:在电商场景中,传统的「关键词匹配」已无法满足个性化购物需求,MOE搜索等新一代架构开始融合知识图谱…...
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法 现在我们的核心问题是有一些同学会知道要才能强化学习。为什么才能强化学习?是实现AGI。例如从这个其实你从第一阶段开始以后,就是chatbot,这…...
嵌入式学习笔记 - SystemCoreClock/1000000
SystemClock 顾名思义就是系统时钟,位于时钟树如下中间位置,是PLL倍频后的部分,它不同于HCLK(SystemCoreClock), SystemCoreClock为系统内核时钟,也就是HCLK始终,也就是总线时钟,就是芯片内核运行的最终时…...
密西根大学新作——LightEMMA:自动驾驶中轻量级端到端多模态模型
导读 目前将自动驾驶与视觉语言模型(VLMs)结合的研究越来越火热,VLMs已经证明了其对自动驾驶的重要作用。本文引入了一种用于自动驾驶的轻量级端到端多模态模型LightEMMA,它能够集成和评估当前的商业和开源模型,以研究…...
MobiPDF:安卓设备上的专业PDF阅读与编辑工具
MobiPDF是一款专为安卓设备设计的PDF阅读和编辑工具,提供了丰富的功能,帮助用户在移动设备上轻松打开、阅读、批注和编辑PDF文件。无论是学生、专业人士还是普通用户,MobiPDF都能满足他们在移动设备上处理PDF文件的需求,提升工作效…...
印度尼西亚数据源对接技术指南
一、数据源全景概述 印度尼西亚作为东南亚最大经济体,其数据生态覆盖金融、产业、人口等多个维度。StockTV提供全链路印尼数据解决方案,涵盖以下核心领域: 数据类型覆盖范围更新频率典型应用场景金融市场数据IDX交易所股票/债券/衍生品实时…...
Apache Pulsar 消息、流、存储的融合
Apache Pulsar 消息、流、存储的融合 消息队列在大层面有两种不同类型的应用,一种是在线系统的message queue,一种是流计算,data pipeline的streaming高throughout,一致性较低,延迟较差的过程。 存算分离 扩容和缩容快…...
从零实现一个高并发内存池 - 2
上一篇https://blog.csdn.net/Small_entreprene/article/details/147904650?fromshareblogdetail&sharetypeblogdetail&sharerId147904650&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link 高并发内存池 - thread cache 一、基本结构与原…...
promise
handleFileChange(event) {var that this;// 处理文件上传并传递回调函数this.$commonJS.handleFileUpload(event, function (tables) {console.log(tables at line 786:, tables);// 使用 Promise.all 等待所有表格解析完成Promise.all(tables.map((table) > {return new …...
Django + Celery 打造企业级大模型异步任务管理平台 —— 从需求到完整实践(含全模板源码)
如需完整工程文件(含所有模板),可回复获取详细模板代码。 面向人群:自动化测试工程师、企业中后台开发人员、希望提升效率的 AI 业务从业者 核心收获:掌握 Django 三表关系设计、Celery 异步任务实践、基础 Web 交互与前后端分离思路,源码可直接落地,方便二次扩展 一、系…...
从零开始完成“大模型在牙科诊所青少年拉新系统中RAG与ReACT功能实现”的路线图
项目核心目标: 构建一个智能系统,利用大型语言模型(LLM)、检索增强生成(RAG)和推理与行动(ReACT)技术,通过七个专门的知识向量库,为牙科诊所精准吸引青少年客…...
c# 倒序方法
在C#中,有几种方法可以对List进行倒序排列: 1. 使用List的Reverse()方法(原地反转) List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果:5, 4, 3, 2, 1 …...
【!!!!终极 Java 中间件实战课:从 0 到 1 构建亿级流量电商系统全链路解决方案!!!!保姆级教程---超细】
终极 Java 中间件实战课:电商系统架构实战教程 电商系统架构实战教程1. 系统架构设计1.1 系统模块划分1.2 技术选型 2. 环境搭建2.1 开发环境准备2.2 基础设施部署 3. 用户服务开发3.1 创建Maven项目3.2 创建用户服务模块3.3 配置文件3.4 实体类与数据库设计3.5 DAO…...
HarmonyOs开发之———使用HTTP访问网络资源
谢谢关注!! 前言:上一篇文章主要介绍HarmonyOs开发之———Video组件的使用:HarmonyOs开发之———Video组件的使用_华为 video标签查看-CSDN博客 HarmonyOS 网络开发入门:使用 HTTP 访问网络资源 HarmonyOS 作为新一代智能终端…...
Java Queue 接口实现
Date: 2025.05.14 20:46:38 author: lijianzhan Java中的Queue接口是位于java.util包中,它是一个用于表示队列的接口。队列是一种先进先出(First-In-First-Out, 简称为FIFO)的数据结构,其中元素被添加到队列的尾部,并从…...
【IDEA】注释配置
1. IDEA注释调整,去掉默认在第一列显示 修改为如下: 2. IDEA中修改代码中的注释颜色...
day25 python异常处理
目录 Python 的异常处理机制 核心概念 常见的异常处理结构 try-except try-except-else 常见异常类型 SyntaxError(语法错误) NameError(名称错误) TypeError(类型错误) ValueError(值…...
【测试】BUG
目录 1、描述BUG的要素: 2、BUG的级别 3、BUG的状态的流转 4、与开发产⽣争执怎么办(⾼频考题) 什么是BUG??? 程序与规格说明之间的不匹配才是错误 1、描述BUG的要素: 问题出现的版本、问…...
Java面向对象三大特性深度解析
Java面向对象三大特性封装继承多态深度解析 前言一、封装:数据隐藏与访问控制的艺术1.1 封装的本质与作用1.2 封装的实现方式1.2.1 属性私有化与方法公开化1.2.2 封装的访问修饰符 二、继承:代码复用与类型扩展的核心机制2.1 继承的定义与语法2.2 继承的…...
C 语言学习笔记(8)
内容提要 数组 数组的概念一维数组 数组 数组的概念 什么是数组 数组是相同类型,有序数据的集和 数组的特征 数组中的数据被称之为数组的元素(所谓的元素,其实就是数组的每一个匿名的变量空间),是同构。数组中的…...
Screen Mirroring App:轻松实现手机与电视的无缝投屏
Screen Mirroring App 是一款由2kit consulting发行的电视投屏软件,专为用户提供便捷的投屏解决方案。它支持将手机和平板屏幕上的内容实时投射到大电视上,无论是观看影视作品、玩游戏、浏览照片还是阅读电子书,都能提供清晰、稳定的画质和流…...
html js 原生实现web组件、web公共组件、template模版插槽
在现代浏览器中,通过 class 继承 HTMLElement 可以轻松创建原生 Web Components(自定义元素),并能享受与普通 HTML 元素同等的语义和性能优势。下面将从核心概念、生命周期方法、Shadow DOM、表单关联、自定义属性、以及与 Vue 3 …...
【爬虫】DrissionPage-2
之前的三个对象是4.0版本,看到的是网上大佬们网上的文章,因为看到官网更新了4.1,我觉得有必要了解一下:文档地址:💥 4.1 功能介绍 | DrissionPage官网 点击链接看官网就行,下面一样的。 4.1 的…...
鸿蒙OSUniApp 制作个人信息编辑界面与头像上传功能#三方框架 #Uniapp
UniApp 制作个人信息编辑界面与头像上传功能 前言 最近在做一个社交类小程序时,遇到了需要实现用户资料编辑和头像上传的需求。这个功能看似简单,但要做好用户体验和兼容多端,还是有不少细节需要处理。经过一番摸索,总结出了一套…...
系统漏洞扫描服务:维护网络安全的关键与服务原理?
系统漏洞扫描服务是维护网络安全的关键措施,能够迅速发现系统中的潜在风险,有效预防可能的风险和损失。面对网络攻击手段的日益复杂化,这一服务的重要性日益显著。 服务原理 系统漏洞扫描服务犹如一名恪尽职守的安全守护者。它运用各类扫描…...
[原创](现代C++ Builder 12指南): 在界面开发中, 如何利用C++高级特性“折叠表达式“?.
[序言] 在现代C++编程中, 现代C++引入的折叠表达式(Fold Expressions)是一项极具价值的特性, 它为模板编程带来了更高的灵活性和简洁性. 折叠表达式允许在参数包上执行简洁的折叠操作, 从而减少冗余代码, 提升代码的可读性与维护性. 在界面开发领域, 特别是使用C++ Builder 12进…...
KUKA机器人中断编程3—暂停功能的编程
在KUKA机器人的使用过程中,对于调试一个项目,当遇到特殊情况时需要暂停机器人,等异常情况处理完成后再继续机器人的程序运行。wait for指令是等待一个输入信号指令,没有输入信号,机器人一直等待。在一定程度上程序也不…...
【LeetCode 热题 100】反转链表 / 回文链表 / 有序链表转换二叉搜索树 / LRU 缓存
⭐️个人主页:小羊 ⭐️所属专栏:LeetCode 热题 100 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 相交链表反转链表回文链表环形链表环形链表 II合并两个有序链表两数相加删除链表的倒数第 N 个结点两两交换链表中的…...
Seata源码—1.Seata分布式事务的模式简介
大纲 1.Seata分布式事务框架简介 2.Seata AT模式实现分布式事务的机制 3.Seata AT模式下的写隔离机制 4.Seata AT模式下的读隔离机制 5.官网示例说明Seata AT模式的工作机制 6.Seata TCC模式的介绍以及与AT模式区别 7.Seata Saga模式的介绍 8.单服务多个库的分布式事务…...
牛客——签到题
分析 我拿到题就去看了示例,可以发现,并非是让难度最小,或者难度系数出现次数最多的成为签到题的难度。那我就有点懵了。。。。。。 但仔细观察题目本身的特定条件和目标,即在满足选择 m 道题的前提下,尽可能多地选择…...
【idea】调试篇 idea调试技巧合集
前言:之前博主写过一篇idea技巧合集的文章,由于技巧过于多了,文章很庞大,所以特地将调试相关的技巧单独成章, 调试和我们日常开发是息息相关的,用好调试可以事半功倍 文章目录 1. idea调试异步线程2. idea调试stream流…...
k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持
k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持 文章目录 k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持一、Metrics Server简介二、Metrics Server实战部署…...
直流电机风速仪
在处理直流电机风速仪的 ADC 读取问题时,下面为你详细介绍实现方法。 硬件连接 风速仪的输出通常是模拟信号,所以需要把它连接到微控制器的 ADC 输入引脚。比如,在 Arduino 上可以连接到 A0 - A5 这类模拟输入引脚。 ADC 读取原理 风速仪…...
dify 连接不上ollama An error occurred during credentials validation:
三大报错 An error occurred during credentials validation: HTTPConnectionPool(hosthost.docker.internal, port11434): Max retries exceeded with url: /api/chat (Caused by NameResolutionError("<urllib3.connection.HTTPConnection object at 0x7f26fc3c00b0&…...
19、云端工业物联网生态组件 - 工厂能效与预测维护 - /数据与物联网组件/cloud-iiot-factory-analysis
76个工业组件库示例汇总 云端工业物联网生态组件 - 工厂能效与预测维护 (模拟) 概述 这是一个交互式的 Web 组件,旨在模拟一个云端工业物联网 (IIoT) 平台的核心界面,专注于工厂层面的能效分析和基于传感器数据的预测性维护概念。用户可以监控模拟的设…...
python打卡day25
python的异常处理机制 知识点回顾: 异常处理机制debug过程中的各类报错try-except机制try-except-else-finally机制 在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。…...
Jmeter变量传递介绍
文章目录 一、Jmeter变量类型及作用域二、变量传递方式1. 用户定义变量(User Defined Variables)2. CSV 数据文件(CSV Data Set Config)3.正则表达式提取器4.后置处理器(Post Processor)4.1BeanShell/JSR223 后置处理器…...
机器学习 Day16 聚类算法 ,数据降维
聚类算法 1.简介 1.1 聚类概念 无监督学习:聚类是一种无监督学习算法,不需要预先标记的训练数据 相似性分组:根据样本之间的相似性自动将样本归到不同类别 相似度度量:常用欧式距离作为相似度计算方法 1.2 聚类vs分类 聚类&…...
白日梦:一个方便快捷的将故事制作成视频的工具
我有故事,但我想把它制作成视频,有没有什么好用的工具可以使用呢?如果你也被类似的问题困扰,那么今天分享的这个工具将会解决这个问题。从需求来看,我们希望的是纯文本的故事输入,完整的故事视频输出&#…...