Spring(三)-SpringWeb-概述、特点、搭建、运行流程、组件、接受请求、获取请求数据、特殊处理、拦截器
文章目录
一、SpringWeb概述
二、SpringWeb特点
三、搭建SpringWeb(在web项目中)
1、导包
2、在web.xml文件中配置统一拦截分发器 DispatcherServlet
3、开启 SpringWEB 注解
4、处理器搭建
四、SpringWeb运行流程
五、SpringWeb组件
1、前端控制器:
2、处理器映射器:
3、处理器适配器:
4、处理器:
六、接收请求
1、@RequestMapping注解
2、使用method定义请求方式
七、获取请求数据
1、使用 request 对象接收
2、使用Spring中的自动封装
3、使用@RequestParam("")绑定参数,用于接收请求中的数据
4、使用@RequestHeader("")绑定参数,用于接收请求头中的数据
5、使用@RequestBody接收前端提交的json 格式数据并将其封装到实体类对象中
6、使用@DateTimeFormat(pattern = "yyyy-MM-dd")为Date类型属性指定转换格式
八、SpringWeb的优点
九、中文乱码处理、返回Json处理、跨域访问处理
1、中文乱码处理
2、 返回Json处理(将响应对象转为json数据格式)
3、跨域访问处理
十、SpringWeb中的拦截器
1、定义
2、作用
3、拦截器与过滤器的区别
4、定义拦截器
5、配置拦截器
一、SpringWeb概述
1、SpringWeb是Spring框架中的一个模块,是基于ServletAPI构建的web框架,是Spring为web层开发提供的一套完备的解决方案。
2、在web层框架经历了Strust1,、WebWork、Struct2等诸多产品的历代更迭之后,业界普遍选择SpringWeb作为JavaEE项目web层开发的首选方案。
二、SpringWeb特点
1、SpringWeb是Spring家族的原生产品,与IOC容器等基础设施可以实现无缝对接。
2、基于原生的Servlet,StringWeb提供了一个前端控制器DispatcherServlet,开发人员不再需要额外开发控制器对象。
3、SpringWeb可以自动绑定用户输入,并正确地转换数据类型。
4、StringWeb的使用代码清新简洁
5、StringWeb内部组件化程度高,可插拔式组件即插即用。
6、StringWeb性能卓著,特别符合现代大型、超大型互联网项目的要求。
三、搭建SpringWeb(在web项目中)
1、导包
<!--springweb层--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.2.RELEASE</version></dependency>
2、在web.xml文件中配置统一拦截分发器 DispatcherServlet
<!--配置统一拦截分发器DispatcherServlet--><servlet><servlet-name>application</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></init-param><load-on-startup>0</load-on-startup></servlet><!-- 请求映射 --><servlet-mapping><servlet-name>application</servlet-name><url-pattern>/</url-pattern><!--可以让所有的请求都被DispatcherServlet拦截,然后对这些请求统一进行分发处理--></servlet-mapping>
3、开启 SpringWEB 注解
<!-- 开启spring的web层注解--><mvc:annotation-driven></mvc:annotation-driven>
4、处理器搭建
(1)@RestController注解: 标记在一个类上,标记的类就是一个 SpringWeb控制类。 Spring 配置中指定了自动扫描的 basepackage 后,Spring 会扫描这些包以及子包中的使用了@RestController 标识的类,然后将类加入到 Spring IOC 容器 中,注入依赖。
(2)@RequestMapping注解:是一个用来处理请求地址映射的注解,可用于类或方法上。
@RestController
@RequestMapping(path = "/loginCtl")// 使用web层注解,为类定义地址
public class LoginController {@RequestMapping(path = "/login")// 使用web层注解,为方法定义地址public String login(){System.out.println("hello springweb");return "success";}
}
四、SpringWeb运行流程
用户发送一次请求到后端,先进入DispatcherServlet统一拦截,再调用HanderMapping解析请求中的处理器地址和方法地址,判断地址是否存在,不存在返回404,如果存在,判断该地址是否有对应的拦截器,如果有,进入到拦截器。之后回到DispatcherServlet,再调用HanderAdapter,最终由处理器适配器调用我们自己的处理器,如:LoginController。
五、SpringWeb组件
1、前端控制器:
(1)定义:DispatcherServlet,由框架提供,在 web.xml 中配置。
(2)作用:统一处理请求和响应,是整个流程控制的中心,由它调用其它组件处理 用户的请求。
2、处理器映射器:
(1)定义:HandlerMapping,由框架提供。
(2)作用:根据请求的 url 查找 Handler(处理器/Controller)。
3、处理器适配器:
(1)定义:HandlerAdapter,由框架提供。
(2)作用:按照特定规则(HandlerAdapter 要求的规则)去执行 Handler。
4、处理器:
(1)定义:Handler(也称之为 Controller,需要工程师开发)。
(2)注意:编写 Handler 时必须按照HandlerAdapter 的要求去做,这样处理器适配器才可以去正确执行Handler。
(3)作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。
六、接收请求
1、@RequestMapping注解
(1)作用:为处理器进行地址映射,添加在类或者方法的上方。且如果添加在类的上方,其path属性在整个项目中都不能重复。如果添加在方法的上方,其path属性在整个类中不能重复。
(2)常用属性:
- path/vale:定义地址
- method:定义请求方式,其默认值是所有请求方式
2、使用method定义请求方式
@RequestMapping(path = "/login",method = RequestMethod.POST)
@RequestMapping(value = "/login",method = RequestMethod.GET)
七、获取请求数据
1、使用 request 对象接收
// method = RequestMethod.POST - 指定允许哪些请求方式可以访问此方法@RequestMapping(path = "/login",method = RequestMethod.POST)// 使用web层注解,为方法定义地址public String login(HttpServletRequest request){System.out.println(request.getParameter("name"));System.out.println(request.getParameter("age"));System.out.println("hello springweb");return "success";}
2、使用Spring中的自动封装
// method = RequestMethod.POST - 指定允许哪些请求方式可以访问此方法@RequestMapping(path = "/login",method = RequestMethod.POST)// 使用web层注解,为方法定义地址public String login(String name,Integer age){System.out.println(name);System.out.println(age);System.out.println("hello springweb");return "success";}
// method = RequestMethod.POST - 指定允许哪些请求方式可以访问此方法@RequestMapping(value = "/login",method = RequestMethod.GET)// 使用web层注解,为方法定义地址public String login(Admin admin){Admin admin1 = loginService.login(admin);System.out.println(admin1);System.out.println("hello springweb");return "success";}
Spring 在对数据进行封装时,必须保证处理器接收参数的形参名称和表单的name 属性保持一致,否则会接收失败!
3、使用@RequestParam("")绑定参数,用于接收请求中的数据
当请求参数名与形参名不一致时,必须使用@RequestParam注解进行参数绑定,即让@RequestParam 注解的 value 值和表单的 name 保持一致
/*@RequestParam("password") String pwd,@RequestParam(value = "account") String ac 绑定请求中的参数与方法中的形参*/@RequestMapping(value = "/login",method = RequestMethod.POST)public String login(@RequestParam("password") String pwd,@RequestParam(value = "account") String ac){System.out.println(pwd);System.out.println(ac);return "success";}
4、使用@RequestHeader("")绑定参数,用于接收请求头中的数据
/*@RequestHeader("User-Agent") String userAgent 绑定请求头中的参数与方法中的形参*/@RequestMapping(value = "/login",method = RequestMethod.POST)public String login(@RequestHeader("User-Agent") String userAgent){System.out.println(userAgent);return "success";}
5、使用@RequestBody接收前端提交的json 格式数据并将其封装到实体类对象中
/*@RequestBody Admin admin 接收前端提交的json格式的数据并将其封装到admin对象中*/
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String login(@RequestBody Admin admin){System.out.println(admin);return "success";
}
注意:必须导入jar包让后端项目支持json格式数据
<!--jackson-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version>
</dependency>
6、使用@DateTimeFormat(pattern = "yyyy-MM-dd")为Date类型属性指定转换格式
// 指定从前端接收来的日期格式的json数据的转换@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;
@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(@RequestBody Admin admin) {Admin admin1 = loginService.login(admin);System.out.println(admin1);return "success";}
八、SpringWeb的优点
对web层进行了封装,让我们可以快速搭建自己的后端处理程序
比如:LoginController
@RestController // 将此类交给spring管理
@RequestMapping(path = "/loginCtl")// 使用web层注解,为类定义映射地址
public class LoginController {@AutowiredLoginService loginService;// 注入其他对象// 为方法定义映射地址,设置该方法允许哪些请求进行访问@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(@RequestBody Admin admin) {// 可以方便的接收请求中的参数Admin admin1 = loginService.login(admin);System.out.println(admin1);return "success";// 可以直接将返回的对象转换为json字符串}}
九、中文乱码处理、返回Json处理、跨域访问处理
1、中文乱码处理
目标:前端数据传到后端时不会出现乱码
在web.xml中添加配置,启用SpringWeb提供的过滤器
<!--中文乱码处理--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
2、返回Json处理(将响应对象转为json数据格式)
目标:将响应对象转为json数据格式
(1)在Springweb中如果想要向前端返回的数据格式为json时,只需要在方法上添加 @ResponseBody 注解即可,而@RestController注解中包含了 @ResponseBody 注解
(2)在项目中必须导入转json组件
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
3、跨域访问处理
目标:允许异步访问(一个服务器向另一个服务器发送请求和接收响应)
(1)添加依赖
<!--spring中提供的解决跨域问题的过滤器--><dependency><groupId>com.thetransactioncompany</groupId><artifactId>cors-filter</artifactId><version>2.5</version></dependency>
(2)在web.xml文件中添加配置
<!--跨域访问处理--><filter><filter-name>CORS</filter-name><filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class></filter><filter-mapping><filter-name>CORS</filter-name><url-pattern>/*</url-pattern></filter-mapping>
十、SpringWeb中的拦截器
1、定义
SpringWeb中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter)
2、作用
拦截用户请求并作出相应的处理
3、拦截器与过滤器的区别
过滤器时servlet规范中定义并实现的,是在进入到servlet之前截获请求,而拦截器是spring中定义的拦截机制,是在进入到处理器之前拦截请求。
4、定义拦截器
// 定义拦截器
public class AdminTokenInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("进入拦截器了");// 从请求头中获取tokenString token = request.getHeader("token");if (token.equals("123456")) {return true;// 请求出了拦截器继续向后执行,进入处理器} else {response.setContentType("test/html;charset=utf-8");// 防止响应字符串乱码// 向前端做出响应PrintWriter writer = response.getWriter();writer.print("token验证失败");return false;// 请求出了拦截器不再向后执行}}
}
5、配置拦截器
<!--配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><!--允许进入拦截器的请求地址--><mvc:exclude-mapping path="/loginCtl/login"/><!--不允许进入拦截器的请求地址--><bean id="admintoken" class="com.ffyc.ssm.interceptor.AdminTokenInterceptor"></bean><!--拦截器实现类地址--></mvc:interceptor></mvc:interceptors>
相关文章:
Spring(三)-SpringWeb-概述、特点、搭建、运行流程、组件、接受请求、获取请求数据、特殊处理、拦截器
文章目录 一、SpringWeb概述 二、SpringWeb特点 三、搭建SpringWeb(在web项目中) 1、导包 2、在web.xml文件中配置统一拦截分发器 DispatcherServlet 3、开启 SpringWEB 注解 4、处理器搭建 四、SpringWeb运行流程 五、SpringWeb组件 1、前端控…...
uni-app商品搜索页面
目录 一:功能概述 二:功能实现 一:功能概述 商品搜索页面,可以根据商品品牌,商品分类,商品价格等信息实现商品搜索和列表展示。 二:功能实现 1:商品搜索数据 <view class="search-map padding-main bg-base"> <view class…...
基于Spring Boot的远程教育网站
一、系统背景与意义 随着互联网技术的飞速发展和普及,远程教育已成为现代教育体系中的重要组成部分。它打破了时间和空间的限制,让学习者可以随时随地进行学习。基于Spring Boot的远程教育网站正是为了满足这一需求而设计的,它利用互联网技术…...
降低Mobx技术债问题-React前端数据流方案调研整理
我们现在主要是使用Mobx,但是Mobx的易于上手和灵活度也带来了很多预期以外的问题,随着项目的增长我们的代码技术债变得愈加沉重,不同的模块杂糅一起、单一store无限膨胀。 为此我们的调研是希望能找到一个更好的state配置、数据流的约定方案。…...
Linux通信System V:消息队列 信号量
Linux通信System V:消息队列 & 信号量 一、信号量概念二、信号量意义三、操作系统如何管理ipc资源(2.36版本)四、如何对信号量资源进行管理 一、信号量概念 信号量本质上就是计数器,用来保护共享资源。多个进程在进行通信时&a…...
STM32, GD32 cubemx CAN 低速率125kbps 报文丢失,解决了
用STM32 CUBEMX生成的GD32的 can程序,在500K波特率时可以正常使用,没有发现丢包,但速率降到250k和125k时,发送138帧数据,会丢失5个包。(系统时钟168M,APB1的时钟42M) 试了各种方法无…...
医疗服务品质提升:SSM 与 Vue 打造医院预约挂号系统方案
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了医院预约挂号系统的开发全过程。通过分析医院预约挂号系统管理的不足,创建了一个计算机管理医院预约挂号系统的方案。文章介绍了医院预约挂号系统的系…...
在UE5中调用ImGui图形界面库
ImGui是一个小巧灵活、简洁美观的图形界面库 首先我们直接参考Github https://github.com/SLSNe/Unreal5-ImGui 把项目下载下来后 打开项目目录或者引擎目录 项目根目录/Plugins/ImGui/ 或 UE5引擎根目录/Engine/Plugins/ 如果没有Plugins文件夹就新建一个 把项目放里面…...
汇聚点滴启迪思维(三)
switch存在的问题 缺少default语句 switch语句可以包含一个可选的default语句,用于处理没有与任何case标签匹配的情况。如果没有default语句,并且没有与表达式匹配的case标签,程序将不会执行任何操作。 除了case switch包含的大括号中间…...
C#代码实现把中文录音文件(.mp3 .wav)转为文本文字内容
我们有一个中文录音文件.mp3格式或者是.wav格式,如果我们想要提取录音文件中的文字内容,我们可以采用以下方法,不需要使用Azure Speech API 密钥注册通过离线的方式实现。 1.首先我们先在NuGet中下载两个包 NAudio 2.2.1、Whisper.net 1.7.3…...
第18篇 :深入剖析systemverilog中 randomize 再谈失败案例(六)
今天,我们再谈一随机失败案例,希望再次同大家续探讨这块内容。 一 案例分析 我们先看一例子,代码如下: 上述代码中,共有5处使用 randomize 随机。它们的随机对象都是类 helloworld_test 中的 rand shortint unsigned counter ; 其中,counter 被赋予初始数值 66 。 …...
(耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)
(耗时4天制作)详细介绍macOS系统 本博文含有全英版-CSDN博客 全篇英文 Introduction to the macOS System I. Overview of macOS macOS is a proprietary operating system developed by Apple Inc., primarily used for Macintosh (Mac) computers. It is the first comme…...
React与Vue的区别(相同点和不同点)
前言 JavaScript是世界上最流行的语言之一,React和Vue是JS最流行的两个框架。但各有优缺点,本文将详细对比两大框架 一、框架背景 React React是由Facebook开发的用于构建用户界面的JavaScript库,Facebook对市场上JavaScript MVC框架都不太…...
flutter --no-color pub get 超时解决方法
新建Flutter项目后,运行报错,需要执行pub get 点击Run ‘flutter pub get’ … … … 卡着,不动了,提示超时 是因为墙的问题 解决方案: 添加以下环境变量 变量名: PUB_HOSTED_URL 变量值: https://pub.flutter-io.cn …...
MacPorts 中安装高/低版本软件方式,以 RabbitMQ 为例
查询信息 这里以 RabbitMQ 为例,通过搜索得到默认安装版本信息: port search rabbitmq-server结果 ~/Downloads> port search rabbitmq-server rabbitmq-server 3.11.15 (net)The RabbitMQ AMQP Server ~/Downloads>获取二进制文件 但当前官网…...
启动报错java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus
报错信息图片 日志: Exception in thread "Quartz Scheduler [scheduler]" java.lang.NoClassDefFoundError: ch/qos/logback/core/status/WarnStatus先说我自己遇到的问题,我们项目在web设置了自定义的log输出路径,多了一个 / 去…...
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——11上位机与小车交互
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——11上位机与小车交互 根据上一节的配置,目前已经建立了通讯环境,接下来给大家带来上位机与小车交互 这一章节里面也有图片大家去地瓜开发者社区看对应文章吧链接...
harbor离线安装 配置https 全程记录
1. 下载harbor最新版本 下载网址: 找最新的版本: https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz 这里我直接使用迅雷下载, 然后上传 1.1解压 sudo tar -xf harbor-offline-installer-v2.11.2.tgz -C /opt/ 2. 配置Harb…...
使用生存分析进行游戏时间测量
标题:Playtime Measurement with Survival Analysis 作者:Markus Viljanen, Antti Airola, Jukka Heikkonen, Tapio Pahikkala 译者:游戏数据科学 1 游戏中的游戏时间 1.1 为什么游戏时间很重要 游戏分析在理解玩家行为方面变得越来越重…...
Fiddler勾选https后google浏览器网页访问不可用
一、说明 最近电脑重新安装系统后,之前的所有工具都需要重新安装和配置,有个项目需要抓包https包查看一下请求的内容,通过Fiddler工具,但是开启后,发现https的无法抓取,同时google浏览器也不无法访问互联网…...
【信息系统项目管理师】高分论文:论信息系统项目的成本管理(社区网格化管理平台系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、规划成本管理二、估算成本三、制定预算四、控制成本论文 2022年6月,我作为项目经理负责了XX市社区网格化管理平台系统集成项目建设,该项目投资金额512.5万元,建设周期12个月。该项目由XX市综治办发…...
vscode配置markdown代码片段snippet不生效问题
markdown.json {"cpp code": {"prefix": "cpp","body": ["cpp","$1","",],"description": "cpp code"} }Ctrl Shift P 后输入settings ,然后选择open settings (json)ÿ…...
小脑萎缩与维生素补充:科学饮食,助力健康
小脑萎缩是一种神经影像学表现,常见于某些遗传症和神经系统变性类疾病,患者常表现出共济失调、语言功能障碍、眼球运动障碍以及肌肉功能障碍等症状。尽管小脑萎缩目前尚无完全治愈的方法,但通过合理的饮食调整和必要的维生素补充,…...
基于SSM+Vue的个性化旅游推荐系统
系统展示 用户前台界面 管理员后台界面 系统背景 随着社会经济的快速发展和人民生活水平的不断提高,旅游业逐渐成为我国国民经济的重要支柱产业。然而,在旅游市场日益繁荣的背景下,游客对于旅游产品和服务的需求逐渐呈现出多样化和个性化的趋…...
灰狼优化算法(GWO)与狼群算法(WPA)的全面比较
灰狼优化算法(GWO)与狼群算法(WPA)都是基于狼群行为的智能优化算法,但它们在多个方面存在显著的区别。以下是对这两种算法的全方面比较: 一、算法起源与灵感 1. 灰狼优化算法(GWO)&…...
探索未知,乐享惊喜 —— 盲盒APP开发,开启您的个性化惊喜之旅!
在这个瞬息万变的数字时代,我们总在寻找那些能触动心灵、带来无限可能的小确幸。为了满足您对未知的好奇与对惊喜的渴望,我们匠心打造了一款全新的盲盒APP,旨在为您的生活增添一抹不同寻常的色彩,让每一次打开都是一次全新的探索与…...
音视频学习(二十五):ts
TS(MPEG-TS,MPEG Transport Stream) 是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG(Moving Picture Experts Group)组织制定,用于视频和音频的压缩编码。在 HLS(HTTP Live Stream…...
MVVM、MVC、MVP 的区别
MVVM(Model-View-ViewModel)、MVC(Model-View-Controller)和MVP(Model-View-Presenter)是三种常见的软件架构模式,它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…...
低延迟!实时处理!中软高科AI边缘服务器,解决边缘计算多样化需求!
根据相关统计,随着物联网的发展和5G技术的普及,到2025年,全球物联网设备连接数将达到1000亿,海量的计算数据使得传输到云端再处理的云计算方式显得更捉襟见肘。拥有低延迟、实时处理、可扩展性和更高安全性的边缘计算应运而生&…...
CSS|14 z-index
z-index z-index表示谁压盖着谁,数值大的会压盖住数值小的。只有定位的元素才有z-index值,只有设置了固定定位、相对定位、绝对定位了的元素,才会拥有z-indexz-index的值是没有单位的,值是一个正整数,默认的z-index值…...
Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索
作者:来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么? Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…...
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
目录 为什么要结合项目与算法? 1. 蓝桥杯与《苍穹外卖》项目的结合 实例:基于蓝桥杯算法思想的订单配送路径规划 问题描述: 代码实现:使用动态规划解决旅行商问题 代码解析: 为什么这个题目与蓝桥杯相关&#x…...
powershell基础(1)
powershell基础(1) 1. 安装PowerShell 首先,确保你的计算机上已经安装了PowerShell。对于Windows 10及更高版本,PowerShell通常是默认安装的。你也可以从微软官网下载并安装最新版本的PowerShell Core。 2. 打开PowerShell 在Windows搜索栏中输入“P…...
国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案
随着科技高速发展,视频信号经过数字压缩,通过互联网宽带或者移动4G网络传递,可实现远程视频监控功能。将这一功能运用于施工现场安全管理,势必会大大提高管理效率,提升监管层次。而这些,通过Liveweb监控系统…...
踩准智能汽车+机器人两大风口,速腾聚创AI+机器人应用双线爆发
日前,RoboSense速腾聚创交出了一份亮眼的Q3财报。受到多重利好消息影响,其股价也应势连续大涨。截止12月9日发稿前,速腾聚创股价近一个月内累计涨幅已超88%。 财务数据方面,速腾聚创在今年前三季度实现总收入约11.3亿元࿰…...
本地maven项目打包部署到maven远程私库
目的:在自己的maven项目中,要把当前maven项目部署到maven私库,供其他人引入依赖使用。 首先要确保你当前能访问到你的私库,能拉私库的maven依赖即可。 maven部署命令: mvn deploy:deploy-file -Dmaven.test.skiptrue -…...
青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作
青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作 一、数据操作二、CRUD说明: 三、数据验证为什么需要数据验证?Go Web应用中的数据验证示例步骤 1: 定义订单结构体步骤 2: 实现验证逻辑步骤 3: 在HTTP处理函数中使用验证 四、数据格式化什么是数…...
Java 中 ConcurrentHashMap 和 HashMap 能存 null 吗?深挖原理和使用场景
前言 当你使用 HashMap 或 ConcurrentHashMap 时,可能会冒出一个经典问题:它们能存储 null 键或 null 值吗? 初学者可能觉得无所谓,试一下不就知道了,但在真实项目中,这个问题可能导致严重的 bug。今天我们…...
【JavaWeb后端学习笔记】Spring Task实现定时任务处理
Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 主要的应用场景有:纪念日提醒,处理订单未支付,还款提醒等。 1、corn表达式 使用Spring Task首先需要了解corn表达式,通过cor…...
【CSS in Depth 2 精译_087】14.4:CSS 中的浮动特效以及在文字环绕中的应用 + 14.5:本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 14.1.1 滤镜的类型14.1.2 背景滤镜 14.2 蒙版 14.2.1 带渐变效果的蒙版特效14.2.2 基于亮度来定义蒙版14.2.3 其他蒙版属…...
探索 Python编程 调试案例:计算小程序中修复偶数的bug
在 学习Python 编程的过程里,会遇到各种各样的bug。而修复bug调试代码就像是一场充满挑战的侦探游戏。每一个隐藏的 bug 都是谜题,等待开发者去揭开真相,让程序可以顺利运行。今天,让我们通过一个实际案例,深入探索 Py…...
探索 CI/CD 工具的力量
CI/CD 工具是什么? CI/CD 工具是开发者的“生产力加速器”。它通过自动化代码构建、测试、部署等流程,消除了繁琐的手动操作,确保开发和运维的无缝衔接。借助这些工具,开发者不仅能够更快地发布产品,还能更早发现问题…...
MySQL和Oracle的区别
MySQL和Oracle的区别 MySQL是轻量型数据库,并且免费,没有服务恢复数据。 Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。 1.对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交࿰…...
亚马逊云科技 re:Invent 2024重磅发布!Amazon Bedrock Data Automation 预览版震撼登场
AWS re:Invent 2024 已圆满落幕! 在本次大会中,隆重推出了一项全新功能: Amazon Bedrock Data Automation(预览版)震撼登场! New Amazon Bedrock capabilities enhance data processing and retrieval | …...
SQL语句练习
阅读《SQL必知必会》(第五版)然后结合往常表做的练习记录 这里使用的数据库时sqlite3,使用的工具时navicat 表资源链接https://wenku.baidu.com/view/349fb3639b6648d7c1c74652.html 表录入后如上图所示。后面如果有多张表之间的操作,在引入…...
保姆级教程Docker部署RabbitMQ镜像
目录 1、创建挂载目录 2、运行RabbitMQ容器 3、Compose运行RabbitMQ容器 4、开启界面插件 5、查看RabbitMQ运行状态 6、常见问题处理 1、创建挂载目录 # 创建宿主机rabbitMQ挂载目录 sudo mkdir -p /data/docker/rabbitmq/log# 修改log目录权限 sudo chmod 777 /data/do…...
P6打卡—Pytorch实现人脸识别
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.检查GPU import torch import torch.nn as nn import matplotlib.pyplot as plt import torchvisiondevicetorch.device("cuda" if torch.cuda.is_…...
clickhouse-介绍、安装、数据类型、sql
1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP(On-Line A…...
基于单片机的智能婴儿床监护系统多功能婴儿床摇篮系统
功能介绍 以STM32单片机为控制核心蓝牙传输控制可以进行哭闹检测、尿床检测、音乐播放、语音提醒、哭闹时可以进行摇床有不同的模式自动模式和睡眠模式 实物可做,其他功能也可以 电路图 PCB 源代码 u8 Temperature_High; //室内温度高阈值 u8 Temperature_…...
微服务??
1、微服务架构的定义是什么? 微服务架构是一种将应用程序拆分为多个小型、独立服务的架构风格,每个服务专注于完成特定功能,通过轻量级通信协议(如HTTP/REST、gRPC)进行协作。 2、微服务和单体架构有哪些主要区别&am…...