黑马程序员SpringBoot2-开发实用篇

视频连接:开发实用篇-67-手工启动热部署_哔哩哔哩_bilibili

热部署

手动启动热部署

热部署仅包含restart的过程。

自动启动热部署

按Ctrl+Alt+Shift+/打开下列界面。

禁用热部署

配置高级

@ConfigurationProperties

宽松绑定/松散绑定

常用计量单位绑定

数据校验

设置具体规则。

测试

加载测试专用属性

加载测试专用配置

使得某个配置只能在当前测试类中使用,从而减少配置。

Web环境模拟测试

查看调用过程是否成功。

查看执行结果是否符合预期(感觉有点麻烦,如果返回结果不是字符串呢,我还得自己写一个一模一样的返回结果?)。奥,应该可以只判断返回结果中的某个属性是不是符合预期。

请求头匹配,感觉意义不大。

数据层测试回滚

为测试类加上@Transactional注解,防止运行程序的时候测试类对数据库进行操作。

测试用例数据设定

数据层解决方案

SQL层

这一章主要讲的是SpringBoot自己内置的数据源、持久化技术、内置数据库。

数据源配置

如果没有指定数据源类型,springboot会采取默认数据源对象hikari,具体配置有区别需要自己查。

内置持久化解决方案——jdbcTemplate

比较原始的jdbc技术。比较繁琐。JdbcTemplateSpringJDBC的封装,应用于dao层,对数据库进行CRUD的操作。

内嵌数据库(H2)

导包

初次启动需要声明数据源。

配置完后启动,浏览器url输入localhost/h2进入控制台。

NoSQL

Redis

SpringBoot整合

使用RedisTemplate类操作redis数据库。

直接使用RedisTemplate使用的是对象映射,在客户端中可能查询不到对象,可以修改为使用StringTemplate或者指定泛型为String。

jedis

edis是一个用Java编写的Redis客户端,包含易于使用Redis的API。

springboot默认的客户端是Lettuce,性能较高,但为了与之前的软件兼容,可以改为jedis。

mongo

又能操作结构化数据,又能高响应速度。

应用场景

下载安装

下面的../data/db文件夹需要自己创建。

基本操作

Springboot整合MongoDB

ES(Elasticsearch)

适用于根据关键字查询信息,这里的倒排索引表示根据关键字查询id,创建文档表示创建对应数据(关键字-id-数据)的数据结构,方便快速展示,使用文档表示输入关键字查询到对应信息。

下载与安装

基础操作

这里的索引大概的意思是表示查询的方式,通过制定mappings进行设定。

下载分词器,放在plugin目录下。

文档就是数据。

整合SpringBoot的操作

下面引入json需要导入fastjson。

整合第三方技术

缓存

缓存使用

手机验证码案例

后面没有ppt...

缓存供应商变更:Ehache

xml文件放在resource文件夹下。

数据淘汰的方法

LRU跟时间相关,LFU跟次数相关。

缓存供应商变更:Redis

下面的是进一步配置。

缓存供应商变更:memcached

缓存供应商变更:jetcache

在方法上加缓存。

@CacheRefresh表示过多长时间刷新一下缓存,使得与数据库同步,因为可能有另一个系统更新数据库导致缓存与数据库不一致。

缓存供应商变更:j2cache

j2cache提供了框架,使得不同的缓存技术可以进行整合。其中j2cache-core包中包含了对redis的整合。以下为实现redis和ehcache的整合。

下面redis的provider_class在j2cache-core包中能找到对应的provider类,要使用那个类的全类名。broadcast也是j2cache-core包下的实现类。

任务

整合Quartz

这个不需要指定成bean。

Spring Task

邮件

整合JavaMail

下面的password要填授权码。

消息

将任务分发给子业务系统,分散压力。

三种规范

JMS

AMQP

统一了数据格式,解决了跨平台的问题。

Kafka

ActiveMq

默认目的地。

自定义目的地。

监听器可以直接执行队列中的数据。

RabbitMq

定义了交换机,交换机将队列和键值绑定,收发消息时不直接与队列交换信息,而是根据键值和交换机找相应队列。

监听器监听的注解需要写队列名称。

仅修改了红色部分,字符串匹配的灵活性为多种多样的消息匹配提供了便捷。

RocketMq

为了方便服务器扩容,添加了nameServer。

要想运行成功,需要把jdk版本换到9以下,还要把path中jdk的环境变量中的路径改成没有空格的。

Kafka

监控

监控的意义

左边监控平台主动拉取右边监控信息,右边监控设置是否可以被监控以及展示信息的种类。

可视化监控平台

监控原理

端点名称

暴露出来的端点可以使用web访问也可以使用jmx jconsole方式访问。

自定义监控指标

监控平台的info没有信息,使用如下办法自定义信息。

红线部分要加enabledefault。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解锁新角色:售前方案工程师 - 女性程序员的新挑战与机遇

在当今的科技行业中,解决方案工程师是一个备受瞩目的角色。他们是技术与业务之间的桥梁,凭借深入的技术知识以及对业务需求的敏锐洞察,为客户提供定制化的解决方案。 那么,对于女性程序员来说,售前方案工程师是否是一…

RandLA-Net导出onnx模型并使用onnxruntime推理

首先下载RandLA-Net工程:https://github.com/tsunghan-wu/RandLA-Net-pytorch 导出onnx模型 import torch from utils.config import ConfigSemanticKITTI as cfg from network.RandLANet import Networkmodel Network(cfg) checkpoint torch.load("./pret…

使用 GitHub 远程仓库

使用 GitHub 远程仓库 GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中心。 大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实现 Git 托管、问题追踪、代码审查以及其它事情。本篇文章主要带大家上手 GitHub …

html+css+Jquery 实现 文本域 文字数量限制、根据输入字数自适应高度

先看效果&#xff1a;初始的效果&#xff0c;样式多少有点问题&#xff0c;不重要&#xff01;重要的是功能&#xff01; 输入后&#xff1a; 根据文字长度&#xff0c;决定文本域长度 限制文字数量 话不多说&#xff0c;直接上代码&#xff01; <!DOCTYPE html> <h…

科研绘图(四)火山图

火山图是生物信息学中常用的一种图表&#xff0c;用来显示基因表达数据的变化。它通常将每个点表示为一个基因&#xff0c;x轴显示对数比率&#xff08;log ratio&#xff09;&#xff0c;表示基因表达的变化大小&#xff1b;y轴显示-log10(p-value)&#xff0c;表示变化的统计…

手把手Docker部署Gitblit服务器

1拉取镜像 docker pull jacekkow/gitblit:v1.9.1 2.启动 docker run -d --name gitblit --restart always -p 10006:8080 -p 18443:8443 -p 19418:9418 -p 29418:29418 -v /data/gitblit/data:/opt/gitblit-data jacekkow/gitblit:v1.9.1 3.查看 默认账户/密码:admin/adm…

Trie字符串统计

题目传送门&#xff1a;835.Trie字符串统计 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N 个操作&#xff0c;所有输入的字符串总长度不超过 105105&#xff0c;字符串仅…

您与此网站之间建立的连接不安全

连接不安全的主要原因之一是使用不安全的通信协议。在互联网传输中&#xff0c;如果使用的协议不加密&#xff0c;那么数据就容易受到窃听和篡改。另一个可能的原因是网站没有正确配置其安全证书&#xff0c;使得用户的连接没有得到适当的加密保护。 解决方法&#xff1a; 采用…

Jeson nano--安装使用摄像头csi/usb

Jeson nano--安装使用摄像头 一、 安装使用摄像头二、vscode调用摄像头总结 一、 安装使用摄像头 列出与视频设备相关的设备文件 ls /dev/video*显示与 /dev/video0 设备关联的摄像头支持的所有格式及其详细信息。可以查看输出以了解所支持的分辨率、帧率和像素格式等信息。请…

centos docker-compose安装教程-2024最新版 亲测可用

目录 长时间不安装,生疏了,再次记录下 1.下载 2.修改名称 3.提权 4.测试验证 长时间不安装,生疏了,再次记录下 1.下载 官网地址 docker-compose官网地址&#xff1a;https://docs.docker.com/compose/compose-file/compose-file-v3/ #进入目录 cd /usr/local/bin#下载 wg…

LeetCode讲解篇之216. 组合总和 III

文章目录 题目描述题解思路题解代码 题目描述 题解思路 使用递归回溯算法&#xff0c;当选择数字num后&#xff0c;在去选择大于num的合法数字&#xff0c;计算过程中的数字和&#xff0c;直到选择了k次&#xff0c;如果数组和等于n则加入结果集 从1开始选择数字&#xff0c;直…

jmeter如何做接口测试?

Jmeter介绍&测试准备&#xff1a; Jmeter介绍&#xff1a;Jmeter是软件行业里面比较常用的接口、性能测试工具&#xff0c;下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库。 前期准备&#xff1a;测试前&#xff0c;需要安装好Jmeter以及jdk并配置好jdk环…

基于时域有限差分法的FDTD的计算电磁学算法-YEE网格下的更新公式推导

基于时域有限差分法的FDTD的计算电磁学算法&#xff08;含Matlab代码&#xff09;-YEE网格下的更新公式推导 参考书籍&#xff1a;The finite-difference time-domain method for electromagnetics with MATLAB simulations&#xff08;国内翻译版本&#xff1a;MATLAB模拟的电…

LLM之RAG理论(五)| 使用知识图谱增强RAG

知识图谱&#xff08;KG&#xff09;或任何图都包括节点和边&#xff0c;其中每个节点表示一个概念&#xff0c;每个边表示一对概念之间的关系。本文介绍一种将任何文本语料库转换为知识图谱的技术&#xff0c;本文演示的知识图谱可以替换其他专业知识图谱。 一、知识图谱 知识…

Postman接口测试之断言,全网最细教程没有之一!

一、断言 在 postman 中我们是在Tests标签中编写断言&#xff0c;同时右侧封装了常用的断言&#xff0c;当然 Tests 除了可以作为断言&#xff0c;还可以当做后置处理器来编写一些后置处理代码&#xff0c;经常应用于&#xff1a; 【1】获取当前接口的响应&#xff0c;传递给…

JavaScript的一道题型

这道题我觉得考察的知识点蛮多的&#xff0c;就单独拿出来了&#x1f92d; <html> <head><title>Title</title> </head> <body> <input type"button" value"全选" id"qx"> <input type"butto…

关于编程的一些小小记录

这里记录一些关于编程的小技巧吧&#xff0c;算是个记录 1&#xff0c;vs同时有多个cpp文件怎么办&#xff1f; 我们只想运行第一个cpp文件&#xff0c;那么怎么做呢&#xff1f; 其实很简单&#xff0c;单击你不想让之运行的文件&#xff0c;点击最下面的属性 最后设置为这样…

强化学习应用(五):基于Q-learning算法的无人车配送路径规划(通过Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法&#xff0c;用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤&#xff1a; 1. 定义环境&#xff1a;确定问题的状态和动作空间&#xff0c;并…

最小花费-银行转账-图的最短路-超详细解析注释

最小花费-银行转账-图的最短路-超详细解析注释 【题目描述】 在n个人中&#xff0c;某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费&#xff0c;请问A最少需要多少钱使得转账后B收到100元。 …

office办公技能|word中的常见通配符使用

一、删除Word中含有指定内容的整行 操作方法&#xff1a; 1、快捷键 CtrlH&#xff0c;打开Word的查找替换窗口&#xff0c;单击【更多】按钮&#xff0c;勾选“使用通配符”。 2、在查找内容处&#xff0c;输入“替换内容*^13”&#xff0c;替换为处什么都不填。 3、单击【…