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

SpringMVC纯注解快速开发

此文章适合具有一定的java基础的同学看哦,如果有看不懂的基本代码还是先补补java基础哦。

此教程带您不使用xml文件而是纯注解开发,易懂、快捷、迅速,从0开始搭建,很快就能构建起一个SpringMVC项目,能学到两种使用tomcat部署的方法,并尽量对每个重点进行讲解,接下来开始吧。

目录

IDEA建立项目

引入依赖

建立软件包

​编辑开始开发

部署tomcat

第一种方式

第二种方式


IDEA建立项目

从idea新建项目,这个大家总会吧。

先建个空项目,自定义名字、项目位置等,这些都可以随便,然后完成。

完成后在空项目里新建模块。

选择maven,java版本我依旧用万年java8

引入依赖

完成后便能看到项目的结构,我们编辑pom.xml文件,引入相关依赖,主要是两个依赖

<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.10.RELEASE</version></dependency>
</dependencies>

可以看到springmvc版本是5.2.10,大家还是尽量跟我保持一致即可,然后点击一下maven图标按钮,会自动下载到本地maven仓库,没下载过的就是会显示红色,我这里已经下载过了所以是白色字,如果下载缓慢可以配置仓库源,可以百度搜索相关教程或查看文章:idea中Maven镜像源详细配置步骤记录(对所有项目)_java_脚本之家

如果没看到有maven按钮则从idea右边点出来,真的很保姆了。

建立软件包

下载完成后我们在java目录上右键,新建软件包

主要是controller和config包,所以我的是com.xiaoya.controller和com.xiaoya.config


开始开发

接下来是重点,我们在config包中新建ServletInit类(当然这个名字你随意取),然后我们需要继承这个类AbstractDispatcherServletInitializer,很多同学觉得这个类难记,其实我也记不住,记住前面这几个字母就行了,idea会自动提示的,如果怕忘,自己做好笔记就行了。

这个时候该类会爆红,因为要实现里面的三个方法,将鼠标放到红线上,就会提示你"实现方法",我们点击一下"实现方法"就行了(其实你按快捷键ctrl+i也行)

这个时候默认是这样子的

我们主要改一下图中标记的两个方法

package com.xiaoya.config;import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;public class ServletInit extends AbstractDispatcherServletInitializer {protected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(Config.class);return ctx;}protected String[] getServletMappings() {return new String[]{"/"};}protected WebApplicationContext createRootApplicationContext() {return null;}
}

第一个方法目的是要向Context中注册配置类,其中的Config.class是我们接下来要在config包新建的类。

第二个方法的内容很容易看出就是当我们进行请求时要从 / 路径开始。

然后我们在config包新建前面所说的Config类,内容不用写,就在上面写2个注解即可
@Configuration
@ComponentScan("com.xiaoya.controller")

第一个注解即标记为配置类,第二个注解就是扫描com.xiaoya.controller包里面的类

接着在controller包新建TestController类,在类上面写上@Controller,即控制层,我们来在里面写个函数返回hello字符串,然后使用@RequestMapping("/hello")注解,即访问/hello时执行hello函数,@ResponseBody就是返回响应体,即返回"hello"字符串,如果不加这个注解的话会去寻找静态资源下的hello文件而不是返回字符串,文章后面会讲到。

package com.xiaoya.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class TestController {@RequestMapping("/hello")@ResponseBodypublic String hello(){return "hello";}
}

这个时候就完成了非常简单,接下来我们来部署tomcat容器启动:

部署tomcat

第一种方式

第一种方式就是通过maven插件,我们在pom.xml中添加tomcat插件,然后点击maven按钮下载

    <build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build>

下载完成后我们点击添加配置,在弹出的界面中点击左上角的 + 按钮,选择maven

在运行命令行那里写上tomcat7:run,然后确定即可。写的时候会有提示的,前提是前面所说的tomcat的插件已经下载好了。

接着在pom.xml中添加

<packaging>war</packaging>

即打为war包的形式运行,点击一下maven按钮,只要pom.xml内容有变更就点一下maven按钮就对了。

都完成后便能发现有绿色的运行按钮了,我们点击就能启动。

如果不出意外的话应该要出意外了,在运行的过程中提示main目录下不存在webapp目录

那这很简单,在main目录下建webapp目录就行了

然后重新启动没有错误了,访问http://127.0.0.1:8080/hello,就能看到响应体字符串了

第二种方式

第二种便是下载tomcat,尽量选择版本9及以前的版本,10好像测试的时候有点问题,可以在我的资源下载:

tomcat8

https://download.csdn.net/download/MKIDM/90085926icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90085926tomcat9

https://download.csdn.net/download/MKIDM/90085933icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90085933下载任一版本后点击编辑配置

在弹出的界面中依旧点击左上角的+,选择Tomcat服务器-本地

名称任意,点击配置,选择你下载的tomcat所在的位置

选择好主目录后下面的基目录会自动调好的不用管,点击确定

此时我们看到有个警告,我们点击右边的修复

此时可以看到弹出来两个工件让我们选择,选择任一一个都可以

应用程序的上下文就是根路径,为了方便我们也可以改成 /,看您自己的意愿

点击修复的时候之所以有那两个工件那是因为我们前面已经通过maven生成好了,如果先用这个方法的话是没有工件的,那我们也可以点击文件--项目结构

点到工件,就能看到这两个工件

那么我们把它删除,说一下如果没有工件时该怎么创建,点击 - 就能删除,删除这2个工件

点击+按钮,选择Web应用程序:展开型,点击基于模块,选择我们这个项目的模块,我们这本来就只有一个模块,所以直接确定就行了。

这样就可以看见生成好了

然后我们重新配置tomcat,点到部署,点击+按钮,选择工件即可。

然后点击运行按钮即可,会自动跳转到浏览器,访问/hello路径就行了。注意上下文的路径,如果上下文的路径默认没更改的话根路径就不是/,如图应该是/springmvc1_war_exploded,所以没更改的话应该访问/springmvc1_war_exploded/hello。自动跳转到浏览器的时候也是跳到/springmvc1_war_exploded

如果没改上下文路径的话访问http://127.0.0.1:8080/springmvc1_war_exploded/hello即可看到回显字符串,就不演示了。

所以通过以上我们就发现通过纯注解也可以快速地就搭建SpringMVC项目,其实过程说的比较啰嗦了,主要是照顾到一些新手,所以有很多保姆级讲解,操作上能讲的都尽量讲了,有一定经验的可以跳着看。

源码:https://download.csdn.net/download/MKIDM/90086092icon-default.png?t=O83Ahttps://download.csdn.net/download/MKIDM/90086092总结下来就是:

1. 在config包中新建配置类,添加注解@Configuration、@ComponentScan("com.xiaoya.controller")

2. 在config包建第二个类,继承AbstractDispatcherServletInitializer类,实现其中的三个方法,主要改动其中二个方法

3. 在controller包建控制请求路径的类,类上添加注解@Controller。
@RequestMapping("/hello2")就是请求路径
@ResponseBody 声明响应体就是该方法返回的内容,而不是静态资源名。

4. 部署tomcat容器,介绍了两种方法。

看到这已经差不多了,但是我们得把坑补完,前面说过不加@ResponseBody的话返回的就是静态资源名,如图,我们将@ResponseBody注解去掉,返回的内容改为hello.jsp

然后在webapp目录新建hello.jsp

body里面随便写点内容

启动tomcat,访问http://localhost:8080/springmvc1_war_exploded/hello就是访问hello.jsp

当然,访问http://localhost:8080/springmvc1_war_exploded/hello.jsp也行。

好了这篇文章到此结束了,有不懂的可以评论或者私信我,看到了就会回,现在看几个笑话放松一下吧*⸜( •ᴗ• )⸝*:https://blog.csdn.net/mkidm/category_12833444.html?spm=1001.2014.3001.5482

相关文章:

SpringMVC纯注解快速开发

此文章适合具有一定的java基础的同学看哦&#xff0c;如果有看不懂的基本代码还是先补补java基础哦。 此教程带您不使用xml文件而是纯注解开发&#xff0c;易懂、快捷、迅速&#xff0c;从0开始搭建&#xff0c;很快就能构建起一个SpringMVC项目&#xff0c;能学到两种使用tom…...

[读论文] Compositional 3D-aware Video Generation with LLM Director

Abstract 近年来&#xff0c;通过强大的生成模型和大规模互联网数据&#xff0c;文本到视频生成领域取得了显著进展。然而&#xff0c;在生成视频中精确控制单个概念&#xff08;如特定角色的动作和外观、视角的移动&#xff09;方面&#xff0c;仍存在巨大挑战。为此&#xff…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十八,ffmpeg解复用

为啥要封装和解封装呢&#xff1f; 1.封装就相当于将 h264 和aac 包裹在一起。既能播放声音&#xff0c;也能播放视频 2.在封装的时候没指定编码格式&#xff0c;帧率&#xff0c;时长&#xff0c;等参数&#xff1b;特别是视频&#xff0c;可以将视频帧索引存储&#xff0c;…...

ubuntu系统安装docker

1、 安装必要的依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common2、添加 Docker 的官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -3、添加 Docker 的 APT 源 sudo add-apt-repos…...

STM32 BootLoader 刷新项目 (十三) Python上位机介绍

STM32 BootLoader 刷新项目 (十三) Python上位机介绍 大家好&#xff0c;这是我们STM32 BootLoader的最后一篇文章了&#xff0c;讲述用Python写的上位机&#xff0c;也更新了半年时间了&#xff0c;谢谢大家的支持&#xff0c;到目前为止&#xff0c;已经更新了12篇文章了&am…...

美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索

在当今全球能源格局不断变化的大背景下&#xff0c;对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节&#xff0c;其规模和复杂度也在不断攀升。在储能项目的运营管理过程中&#xff0c;安全监控、设备运维以及数据管理等方面面临着…...

T C P

文章目录 基于UDP应用场景 TCP协议TCP 协议段格式确认应答机制16位窗口大小 下定义32位序号和32位确认序号序号是什么&#xff1f;确认序号 基于UDP应用场景 UDP&#xff0c;tcp这样的协议根本不是直接谈UDP。tcp的应用场景&#xff0c;一定是上层写了应用层协议&#xff0c;所…...

MongoDB的简单使用

MongoDB(文档数据库)的简单使用 MongoDB最好的学习资料就是他的官方文档&#xff1a;SQL 到 MongoDB 的映射图表 - MongoDB 手册 v8.0 1.MongoDB CRUD操作 1.1Insert操作 基本方法&#xff1a; db.collection.insertOne() 将单个文档(document)插入集合中 db.collectio…...

【Exp】# Microsoft Visual C++ Redistributable 各版本下载地址

Microsoft官方页面 https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Redistributable 2019 X86: https://aka.ms/vs/16/release/VC_redist.x86.exe X64: https://aka.ms/vs/16/release/VC_redist.x64.exe Redistributable 201…...

【MySQL】表的约束

目录 一、非空约束not null 二、默认值约束default 三、列描述comment 四、填充零zerofill 五、主键primary key 六、自增长auto_increment 七、唯一键unique 八、外键foreign key 一、非空约束not null 如果不对一个字段做非空约束&#xff0c;则默认为空。但空数据无…...

c++高级篇(四) ——Linux下IO多路复用之epoll模型

IO多路复用 —— epoll 前言 在之前我们就已经介绍过了select和poll,在作为io多路复用的最后一个的epoll,我们来总结一下它们之间的区别: a select 实现原理 select 通过一个文件描述符集合&#xff08;fd_set&#xff09;来工作&#xff0c;该集合可以包含需要监控的文件…...

基于Java Springboot环境保护生活App且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…...

.NET 9 中 LINQ 新增功能实现过程

本文介绍了.NET 9中LINQ新增功能&#xff0c;包括CountBy、AggregateBy和Index方法,并提供了相关代码示例和输出结果&#xff0c;感兴趣的朋友跟随我一起看看吧 LINQ 介绍 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的…...

【Vue3中Router使用】

Vue3中Router使用 1. 安装vue-router组件2. 建两个测试页面2.1 测试页面Home.vue2.2 测试页面Category.vue 3. 创建路由对象4. 在入口main.js中引入router把App.vue改成路由页面5. 测试5.1 关闭检查解决ESlint报错5.2 改文件名解决ESlint检查报错测试WebHashHistory 和WebHisto…...

性能测试攻略(一):需求分析

性能测试成为软件开发和运维过程中不可或缺的一环。性能测试不仅能够帮助我们了解系统在特定条件下的表现&#xff0c;还能帮助我们发现并解决潜在的性能问题。那么我们怎么做一次完整的性能测试呢&#xff1f;首先&#xff0c;我们需要进行需求分析&#xff0c;来明确我们的测…...

android WebRtc 无法推流以及拉流有视频无声音问题

最近在开发使用WebRtc进行视频通话和语音通话&#xff0c;我使用的设备是MTK的手机&#xff0c;期间后台的技术人员几乎没法提供任何帮助&#xff0c;只有接口和测试的web端&#xff0c;有遇到不能推流。推流成功网页端有画面有声音&#xff0c;但是安卓端有画面&#xff0c;没…...

Socket编程TCP

【Linux】TCP编程 实验&#xff1a;通过TCP通信—在客户端输入要执行的指令&#xff0c;接收执行结果&#xff0c;另服务端接收指令并执行&#xff0c;向客户端发送执行结果 //主函数 #include<iostream> #include<string> #include"log.hpp" #include…...

《以 C++为笔,绘就手势识别人机交互新画卷》

在科技浪潮汹涌澎湃的当下&#xff0c;人机交互领域正处于深刻变革的前沿阵地。从古老的命令行输入到图形化界面的鼠标点击&#xff0c;再到如今风靡全球的触摸操控&#xff0c;每一次交互方式的革新都重塑了我们与电子设备的沟通模式。而近年来&#xff0c;手势识别技术作为一…...

【CSS】小球旋转loading加载动画

效果 css小球旋转loading动画 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document<…...

Leetcode经典题6--买卖股票的最佳时机

买卖股票的最佳时机 题目描述&#xff1a; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。…...

BA是什么?

目录 1.EKF的步骤 一、问题定义与模型建立 二、线性化处理 三、应用卡尔曼滤波 四、迭代与收敛 五、结果评估与优化 注意事项 2.BA问题的步骤 一、问题定义与数据准备 二、构建优化模型 三、选择优化算法 四、执行优化过程 五、结果评估与优化 六、应用与验证 1.…...

【IDEA】报错:Try to run Maven import with -U flag (force update snapshots)

问题 IDEA运行项目报错&#xff1a;Try to run Maven import with -U flag (force update snapshots) 原因 IDEA 的项目运行绑定的maven有问题&#xff0c; 解决问题 检查项目绑定的maven配置...

MATLAB提供的窗函数

加窗法 为什么使用加窗法&#xff1f; 在数字滤波器设计和频谱估计中&#xff0c;加窗函数的选择对于整体结果的质量有重大影响。加窗的主要作用是减弱因无穷级数截断而产生的吉布斯现象的影响。 windowDesigner 六种常见的窗函数 根据离散时间傅里叶变换的乘法性质&a…...

git 使用配置

新拿到机器想配置git 获取代码权限&#xff0c;需要的配置方法 1. git 配置用户名和邮箱 git config --global user.name xxxgit config --global user.email xxemail.com 2. 生成ssh key ssh-keygen -t rsa -C "xxemail.com" 3. 获取ssh key cat ~/.ssh/id_rsa.…...

【深度学习】深入解析长短期记忆网络(LSTMs)

长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTMs&#xff09;是一种特殊的递归神经网络&#xff08;RNN&#xff09;&#xff0c;专门设计用来解决标准 RNN 在处理长序列数据时的梯度消失和梯度爆炸问题。LSTMs 在许多序列数据任务中表现出色&#xff0c;如…...

vue watch和computed的区别,computed和method的区别

发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 在 Vue 中&#xff0c;watch、computed 和 methods 都是常用的响应式功能&#xff0c;它们的用途和工作方式有所不同。下面分别解…...

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

搭建高可用负载均衡系统&#xff1a;Nginx 与云服务的最佳实践 引言 在项目开发过程中&#xff0c;我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段&#xff0c;系统的主要目的是功能实现和验证&#xff0c;单机架构足以满足开发人员的日常需求&…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十九,ffmpeg复用

封装就是将 一个h264&#xff0c;和一个aac文件重新封装成一个mp4文件。 这里我们的h264 和 aac都是来源于另一个mp4文件&#xff0c;也就是说&#xff0c;我们会将 in.mp4文件解封装成一路videoavstream 和 一路 audioavstream&#xff0c;然后 将这两路的 avstream 合并成一…...

Node.js JWT认证教程

Node.js JWT认证教程 1. 项目介绍 JSON Web Token (JWT) 是一种安全的跨域身份验证解决方案&#xff0c;在现代Web应用中广泛使用。本教程将详细讲解如何在Node.js中实现JWT认证。 2. 项目准备 2.1 初始化项目 # 创建项目目录 mkdir nodejs-jwt-auth cd nodejs-jwt-auth# …...

nn.utils.clip_grad_value_

nn.utils.clip_grad_value_ 是 PyTorch 中的一个函数&#xff0c;用于在训练过程中对模型的梯度进行裁剪&#xff0c;以防止梯度爆炸&#xff08;gradient explosion&#xff09;问题。该函数对梯度的每个元素进行裁剪&#xff0c;将其限制在一个指定的最大绝对值范围内。裁剪后…...

Java后端面试模板(技术面)

1、自我介绍模板 面试官您好&#xff01;我是来自----大学计算机学院的一名大三学生&#xff0c;我的名字叫—。 在大学期间&#xff0c;我主要自学了一些主流的Java技术栈&#xff0c;其中主要包括&#xff1a;Java主流的框架&#xff1a;Spring MVC Spring Boot Spring Clou…...

【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变

【大语言模型】ACL2024论文-24 图像化歧义&#xff1a;Winograd Schema 挑战的视觉转变 目录 文章目录 【大语言模型】ACL2024论文-24 图像化歧义&#xff1a;Winograd Schema 挑战的视觉转变目录摘要研究背景问题与挑战如何解决核心创新点算法模型实验效果&#xff08;包含重要…...

Docker 安装和使用

#Docker 安装和使用 文章目录 1. 安装2. 干掉讨厌的 sudo3. 使用镜像源3.1. 使用 upstart 的系统3.2. 使用 systemd 的系统 4. 基本使用4.1. 容器操作4.2. 镜像操作 5. 网络模式说明5.1. bridge 模式5.2. host 模式5.3. container 模式5.4. none 模式 6. 查看 Docker run 启动参…...

nginx网站服务

nginx介绍&#xff1a; 1、高并发&#xff0c;轻量级的web服务软件 2、稳定性高&#xff0c;系统资源消耗率低 对http的高并发处理能力高&#xff0c;单台物理服务器可以支持30000-50000个并发。 一般来说在工作中&#xff0c;单台的并发一般在20000. nginx的功能介绍&…...

MATLAB 手写判断点在多边形内外的2种方法(87)

MATLAB 手写判断点在多边形内外-方法1(87) 一、算法介绍二、算法实现1.方法1(代码+测试)2.方法2(代码+测试)三、结果一、算法介绍 手动实现两种方法,判断点在多边形的内部还是外部, 具体实现和测试代码如下,使用前请自行验证。(代码复制粘贴即可使用) 二、算法实现…...

Android SurfaceFlinger layer层级

壁纸作为显示的最底层窗口它是怎么显示的 1. SurfaceFlinger layer层级 锁屏状态dump SurfaceFlinger &#xff0c;adb shell dumpsys SurfaceFlinger Display 0 (active) HWC layers: -----------------------------------------------------------------------------------…...

零基础快速掌握——【c语言基础】数组的操作,冒泡排序,选择排序

1.数组 内存空间连续&#xff1a; 2.定义格式 数组的定义格式&#xff1a; 数组分为一维数组、二维数组、以及多维数组&#xff0c;不同类型的数组定义格式时不一样 2.1 一维数组的定义 数据类型 数组名 [数组长度]&#xff1b; 解释&#xff1a; 数据类型&#xff1…...

个人IP建设:简易指南

许多个体创业者面临的一个关键挑战是如何为其企业创造稳定的需求。 作为个体创业者&#xff0c;您无法使用营销团队&#xff0c;因此许多人通过推荐和他们的网络来产生需求。因此&#xff0c;扩大您的网络是发展您的业务和产生持续需求的最佳策略。 这就是个人IP和品牌发挥作…...

【Unity高级】如何获取着色器(Shader)的关键词

在动态设置Shader时&#xff0c;会需要通过EnableKeyword, DisableKeyword来完成。但一个Shader有哪些关键词呢&#xff1f;Unity的文档中并没有列出来&#xff0c;但我们可以通过遍历Shader的KeywordSpace来查看。 1. 代码如下 using UnityEngine;public class KeywordExamp…...

OSS文件上传

1、我们这个系统对接的阿里云OSS需要先对接小鹏OSS系统获取accessKeyId、accessKeySecret&#xff0c;这个可以忽略 aliyun:oss:endpoint: https://oss-cn-hangzhou.aliyuncs.combucketName: xp-xpd-experiencedomain: https://xp-xpd-experience.oss-cn-hangzhou.aliyuncs.co…...

时序预测算法TimeXer代码解析

在时序预测领域&#xff0c;如何有效地利用外部变量&#xff08;exogenous variables&#xff09;来提升内部变量&#xff08;endogenous variables&#xff09;的预测性能一直是一个挑战。 在上一篇文章中&#xff0c;我结合论文为大家解读了TimeXer框架&#xff0c;今天&…...

【无标题】建议用坚果云直接同步zotero,其他方法已经过时,容易出现bug

created: 2024-12-06T16:07:45 (UTC 08:00) tags: [] source: https://zotero-chinese.com/user-guide/sync author: 数据与文件的同步 | Zotero 中文社区 Excerpt Zotero 中文社区&#xff0c;Zotero 中文维护小组&#xff0c;Zotero 插件&#xff0c;Zotero 中文 CSL 样式 数…...

Hive 分桶表的创建与填充操作详解

Hive 分桶表的创建与填充操作详解 在 Hive 数据处理中&#xff0c;分桶表是一个极具实用价值的功能&#xff0c;它相较于非分桶表能够实现更高效的采样&#xff0c;并且后续还可能支持诸如 Map 端连接等节省时间的操作。不过&#xff0c;值得注意的是&#xff0c;在向表写入数…...

docker怎么commit tag push?

在 Docker 中&#xff0c;commit、tag 和 push 是用于创建和推送自定义镜像到仓库的三个不同步骤。以下是每个命令的详细说明和使用方法&#xff1a; ### 1. docker commit 当你对一个运行中的容器做了修改&#xff0c;并希望将这些修改保存为一个新的镜像时&#xff0c;可以使…...

全面替换VMware,南昌大学一卡通的硬核智慧

将一昼夜分为十二时辰 是古人的博大智慧 晨光熹微&#xff0c;门扉轻启&#xff0c;负笈而行 智慧校园的“十二时辰”启幕新章 一、数字南大&#xff1a;一卡通打卡校园十二时辰 时辰轮转&#xff0c;一时有一时的使命师生们是如何高效、便捷地度过每个时辰&#xff1f;一张充…...

SpringMVC ,ioc和aop

IOC和AOP IOC 控制反转&#xff0c;将应用程序的控制权交给spring容器管理&#xff0c;而不是应用程序本身 1.创建一个mapper&#xff0c;测试用&#xff0c; 就写个普通方法 public class UserMapper {public void addUser(){System.out.println("dao层新增");} …...

3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch

这篇看下RACH-less LTM cell switch。 相比于RACH-based LTM,RACH-less LTM在进行LTM cell switch之前就要先知道target cell的TA信息,进而才能进行RACH-less过程,这里一般可以通过UE自行测量或者通过RA过程获取,而这里的RA一般是通过PDCCH order过程触发。根据38.300中的描…...

Ansys Maxwell:Qi 无线充电组件

Qi 无线充电采用感应充电技术&#xff0c;无需物理连接器或电缆&#xff0c;即可将电力从充电站传输到兼容设备。由 WPC 管理的 Qi 标准确保了不同无线充电产品之间的互操作性。以下是 Qi v1.3 标准的核心功能&#xff1a; Qi v1.3 标准的主要特点 身份验证&#xff1a;确保充…...

Neo4j 图数据库安装与操作指南(以mac为例)

目录 一、安装前提条件 1.1 Java环境 1.2 Homebrew&#xff08;可选&#xff09; 二、下载并安装Neo4j 2.1 从官方网站下载 2.1.1 访问Neo4j的官方网站 2.1.2 使用Homebrew安装 三、配置Neo4j 3.1 设置环境变量(可选) 3.2 打开配置文件(bash_profile) 3.2.1 打开终端…...

基于MFC绘制门电路

MFC绘制门电路 1. 设计内容、方法与难点 本课题设计的内容包括了基本门电路中与门和非门的绘制、选中以及它们之间的连接。具体采用的方法是在OnDraw函数里面进行绘制&#xff0c;并设计元器件基类&#xff0c;派生出与门和非门&#xff0c;并组合了一个引脚类&#xff0c;在…...