07 2022 档案
摘要:构建1个新项目作为收集数据的服务器 pom.xml中导入依赖 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.3.1
阅读全文
摘要:yml配置,方便查看 management: health: enabled: true show-details: always #总是显示详细信息。可显示每个模块的状态信息 定制 Health 信息 @Component public class MyComHealthIndicator ext
阅读全文
摘要:指标监控暴露方式 jmx http jmx默认是开启的,使用jmx查看 启动项目 打开cmd,输入jconsole 连接启动的应用 http查看步骤: # 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI
阅读全文
摘要:前置条件可以看成是测试方法执行的前提,当该前提不满足时,就没有继续执行的必要 # assumingThat 的参数是表示条件的布尔值和对应的 Executable 接口的实现对象。只有条件满足时,Executable 对象才会被执行;当条件不满足时,测试执行并不会终止 @DisplayName("前
阅读全文
摘要:简介 断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法 检查业务逻辑返回的数据是否合理。 所有的测试运行结束以后,会有一个详细的测试报告 简单断言 案例 # 当前面执行
阅读全文
摘要:JUnit5组成 JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。 JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含
阅读全文
摘要:使用@WebServlet(urlPatterns = "/my")时直接响应,没有经过Spring的拦截器 DispatchServlet 如何注册进来 容器中自动配置了 DispatcherServlet 属性绑定到 WebMvcProperties;对应的配置文件配置项是 spring.mvc
阅读全文
摘要:spring方式注入servlet组件:普通类 + ServletRegistrationBean + @ServletComponentScan # 编写普通类 public class MyServlet extends HttpServlet { @Override protected voi
阅读全文
摘要:使用原生注解注入servlet组件:@WebServlet处理请求路由,+主配置类中标注@ServletComponentScan扫描原生注解所在的路径 @WebServlet(urlPatterns = "/my") public class MyServlet extends HttpServl
阅读全文
摘要:拦截器实现步骤: 1、编写一个拦截器实现HandlerInterceptor接口 2、拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors) 3、指定拦截规则,如果是拦截所有,静态资源也会被拦截 编写一个拦截器 public class LoginIntercep
阅读全文
摘要:错误1:Establishing SSL connection without server's identity verification is not recommend # 解决方案:在连接MySQL的url中添加如下: url=jdbc:mysql://127.0.0.1:3306/fram
阅读全文
摘要:thymeleaf语法: ${...} 获取请求域、session域、对象等值 session.setAttribute("loginUser",user); # 向HttpSession中添加数据 session.getAttribute("loginUser"); # 获取HttpSession
阅读全文
摘要:在浏览器搜索框中输入的方式只有format=json和format=xml,我们希望输入format=gg时,服务器能使用我们自定义的内容协商x-guigu 那么我们需要在配置类中配置如下,这时在浏览器搜索框中输入format=gg即可响应x-guigu类型的数据 序号1处是自定义的协商策略,有可能
阅读全文
摘要:若我们想自定义一种内容协商,例如自定义x-guigu,如果使用这种响应格式时,我们想让服务器响应给客户端只有属性值且用分号隔开的数据格式:属性值1;属性值2 内容协商的原理是:服务器获取客户端可接收的内容类型,服务端遍历系统中所有MessageConverter,看是否有客户端所需的类型,如果有,则
阅读全文
摘要:根据客户端接收能力不同,返回不同媒体类型的数据 # 前提是引入xml依赖: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId>
阅读全文
摘要:当引入web依赖(场景)的时候,web场景会自动引入json场景;这时在控制层处理请求时,标注@ResponseBody注解,则会响应给前端json <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring
阅读全文
摘要:参数绑定 当前端页面提交表单,表单数据对应后端实体类,控制层处理请求时,会将表单数据与实体类对象属性自动绑定(即转为对象) # 前端: 姓名: <input name="userName"/> <br/> 年龄: <input name="age"/> <br/> # 实体类: @Data publ
阅读全文
摘要:Map、Model:(map、model里面的数据会被放在request的请求域 request.setAttribute) @GetMapping("/params") public String testParam(Map<String,Object> map, Model model, Htt
阅读全文
摘要:ctrl + n搜索DispatcherServlet,再搜索doDispatch 按住doDispatch,鼠标点击进入 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) thro
阅读全文
摘要:矩阵变量的语法:映射+路径+矩阵变量,多个变量用分号隔开 开启矩阵变量方式1 @Configuration(proxyBeanMethods = false) public class WebConfig implements WebMvcConfigurer { @Override public
阅读全文
摘要:@PathVariable使用 # localhost:8080/car/1/owner/aaa @GetMapping("/car/{id}/owner/{username}") public Map<String,Object> getCar(@PathVariable("id") Intege
阅读全文
摘要:ctrl + n,搜索DispatcherServlet public class DispatcherServlet extends FrameworkServlet { public static final String MULTIPART_RESOLVER_BEAN_NAME = "mult
阅读全文
摘要:查看WebMvcAutoConfiguration,默认配置了OrderedHiddenHttpMethodFilter @Configuration(proxyBeanMethods = false) @ConditionalOnWebApplication(type = Type.SERVLET
阅读全文
摘要:查看源码 ctrl + n,搜索WebMvcAutoConfiguration # SpringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类) # SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效 @Configuration
阅读全文
摘要:静态资源目录 只要静态资源放在类路径下: called /static (or /public or /resources or /META-INF/resources 访问方式: 当前项目根路径/ + 静态资源名 原理: 静态映射/**。 请求进来,先去找Controller看能不能处理。不能处理
阅读全文
摘要:基本语法 key: value;kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 '#'表示注释 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义 字面量:单个的、不可再分的值。date、bo
阅读全文
摘要:例如打开aop相关类 查看源码 // 表示这是1个配置类 @Configuration(proxyBeanMethods = false) // 表示配置文件中有spring.aop的配置,且值为true,下面的组件才生效,matchIfMissing = true表示始终默认生效 @Conditi
阅读全文
摘要:@SpringBootApplication # 以上注解等同于下面3个注解 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.atguigu.boot") @SpringBootConfiguration注解
阅读全文
摘要:简介 # 如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中 public class getProperties { public static void main(String[] args) throws FileNotFoundException, IO
阅读全文
摘要:使用@Import注解,给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名 @Import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文
阅读全文
摘要:Full模式与Lite模式 配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式 如下有1个配置类,配置类中有2个方法 /** * 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的 * 2、
阅读全文
摘要:依赖管理 # 在自己项目中引入的依赖为如下 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE<
阅读全文
摘要:参考文档 视频教程 源码地址 springboot查看官方文档 https://spring.io/ 查看官方文档 查看新版本特性 yml配置文档 构建1个spring boot项目 先创建1个maven项目,导入依赖 <parent> <groupId>org.springframework.bo
阅读全文
摘要:流控规则配置资源名,可以是Rest风格的接口映射地址,可以是方法上@SentinelResource中指定的value 若接口上使用了@SentinelResource则执行自定义兜底的方法,没有则返回sentinel默认的信息 以上的降级案例中业务方法和降级处理方法高度耦合,若每个业务方法配置一个
阅读全文
摘要:<!--Spring cloud Hoxton.SR1--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>$
阅读全文
摘要:简介 Sleuth用于请求链路跟踪;一个微服务请求另一个微服务,也就形成了一条请求链,如何跟踪请求链?Spring Cloud Sleuth集成了zipkin,当微服务配置了zipkin后再发送请求调用其他微服务,可在zipkin server上查看到这条请求链 搭建zipkin: 1.下载zipk
阅读全文
摘要:目前市场上有多种消息中间件,如果要全部掌握会比较苦难,使用Cloud Stream则可以屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型 目前Stream仅支持RabbitMQ、Kafka 业务逻辑: 消息提供者方使用Stream的Source创建通道Output传递message到Rab
阅读全文
摘要:之前的config配置,git更新后,config服务端可自动刷新,而所有的config客户端需发一个post请求;如何省略config客户端不用发请求的步骤 而使用Bus+config+RabbitMQ实现配置文件的动态刷新,业务逻辑如下: 消息总线:所有微服务都连接上一个公用的消息主题,所有微服
阅读全文
摘要:作用:集中管理配置文件 config服务端配置: 配置文件放在git远程仓库 新建Module模块cloud-config-center-3344作为配置文件的服务端,用于获取远程仓库中配置信息;pom中拉取依赖config-server,yml中配置端口、服务名称、注册到eureka、关联的git
阅读全文
摘要:GateWay的作用:反向代理、熔断、限流、日志监控 网关位置: Route(路由):由ID、目标url、断言、过滤器组成 Predicate(断言):相当于匹配规则,当请求与断言匹配则进行路由 网关案例: 新建cloud-gateway-gateway9527模块作为网关,pom中拉取gatewa
阅读全文
摘要:在分布式微服务中,通常是一个服务调用另一个服务,在我们进行某种操作时,就造成了一个很长的服务链路调用,这时如果其中某一个服务出现故障,整个系统就会崩溃,也就是雪崩 为了解决这些问题,提高系统的弹性,可用HyStrix的服务降价、服务熔断、服务限流来解决这些问题 服务降级(fallback):当(程序
阅读全文
摘要:OpenFeign用于服务间调用,之前80模块调8001模块使用了restTemplate,使用OpenFeign只需创建接口添加注解即可 订单模块通过OpenFeign调支付模块案例 新建cloud-consumer-feign-order80订单模块 pom中拉取openfeign的依赖,配置y
阅读全文
摘要:Ribbon是一套客户端负载工具 负载均衡(LB) nginx实现负载均衡属于集中式LB,即在服务的消费方和提供方提供LB设施,当消费方发请求调提供方时,消费方的请求会先进入nginx,通过nginx转发分配到提供方集群 Ribbon属于进程内LB,消费方自己选择调用哪个提供方 之前的案例中通过80
阅读全文
摘要:Consul作为服务注册中心,用于服务注册与发现;支持Linux和windows,具有可视乎界面 Windows系统中安装Consul 下载:https://www.consul.io/downloads.html 解压后双击exe文件,在该文件所在文件夹打开cmd consul --version
阅读全文
摘要:CentOS中安装zookeeper 在/usr路径下创建文件夹soft,将zookeeper压缩包解压到此文件夹下 cp zoo_sample.cfg zoo.cfg # 进入usr/soft/zookeeper-3.4.14/conf,将配置文件的样本zoo_sample.cfg复制并重命名为z
阅读全文
摘要:EurekaServer是服务注册中心,提供服务注册,即其他微服务可注册进该服务 EurekaClient通过注册中心进行访问,即将要注册进EurekaServer的微服务 Eureka主要是用于管理所有微服务,实现负载均衡,故障容错,服务注册于发现 之前是订单模块直接调支付模块,现在将两个模块注册
阅读全文
摘要:简介 微服务是由springboot开发的一个个的模块,是一个个独立的进程 springcloud是微服务全家桶 spring cloud通过网关调用多个负载均衡(微服务) spring boot是以数字作为版本,springcloud是以字目作为版本 spring和spring cloud技术选型
阅读全文
摘要:html/css 1 2 3 4 5 第二章 超链接a标签和路径 图像img标签 表格table标签 表单form标签 列表ul、ol标签 区块标签和⾏内标签 CSS⼊⻔ CSS写法 选择器 特殊选择器 盒⼦模型 常⽤属性 CSS的层叠与选择器优先级 可继承的属性 js 1 2 3 4 5 js函数
阅读全文
摘要:消费者模块编写RestTemplate配置类,即可在控制层调用提供者模块 eureka需新建一个module作为服务注册中心 zookeeper是安装应用作为服务注册中心 consul是安装应用作为服务注册中心 ribbon用于服务调用和服务调用时的负载 openFeign用于服务调用,在消费者模块
阅读全文
摘要:分布式微服务中是多个微服务调用多个数据库,每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证;一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题 Seata是一款开源的分布式事务解决方案 分布式事务处理过程的一ID+三组件模型: Transac
阅读全文
摘要:错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl rest
阅读全文
摘要:简介 client即是本机安装的docker,相当于git Docker_host相当于centos系统 registry则是docker仓库,相当于GitHub 镜像用于创建docker容器,一个镜像可以创建多个docker容器 容器是由镜像创建的运行实例,(镜像相当于类,容器相当于类创建的对象)
阅读全文
摘要:安装ElasticSearch 官网下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch 下载后直接解压,要求jdk版本高于1.8 双击启动 浏览器访问 错误:在浏览器或postman中访问http://lcoalhos
阅读全文
摘要:简介 MongoDB存储的是文档(document),文档内存储的是类似json的结构;mongodb的数据库中存储的是bson mongodb中包含多个数据库,一个数据库包含多个集合,一个集合包含多个文档 官方文档 常用命令 show dbs # 显示当前所有数据库 show databases
阅读全文
摘要:K8s功能 自动装箱 自我修复 水平扩展 服务发现 滚动更新 版本回退 密钥和配置管理 存储编排 批处理 K8S架构主要包含两部分:Master(主控节点)和 node(工作节点) master:主控节点 API Server:集群统一入口,以restful风格进行操作,同时交给etcd存储 提供认
阅读全文
摘要:nginx配置文件:(使用yum安装,所以位置在/etc/nginx/nginx.conf ) 包含三部分内容 (1)全局块:配置服务器整体运行的配置指令 比如 worker_processes 1;处理并发数的配置 (2)events 块:影响 Nginx 服务器与用户的网络连接 比如 worke
阅读全文
摘要:Nginx是高性能的http和反向代理的服务器 正向代理:当我们访问国外网站时需使用代理服务器 反向代理:客户端发送请求到达反向代理服务器,由反向代理服务器去选择目标服务器,这两个服务器对外是一个服务器,暴露的是代理服务器地址 负载均衡:当客户端发送多条请求时,由nginx负载均衡服务器将请求分发到
阅读全文
摘要:历史版本下载 双击安装,选择安装路径 最后勾选[Run IntelliJ IDEA],点击Finish 导入jar包,右键项目 方式2 将项目部署到服务器 debug 后端代码打上断点后,使用dubug模式运行该项目,前端页面操作后,后台自动激活Debug窗口 设置debug启动后自动激活窗口:se
阅读全文
摘要:简介 序号1,是抓包的开关,红色表示正在监测,只要有网络请求发生,包就会被抓取到列到下方。再点击一下就会停止监测 序号2,清空抓包列表 序号3,过滤文件 序号4,可以打开左侧的搜索面板 序号5,必需要选中的,所有的抓包记录,保留请求日志,可以看到跳转前的请求,有的时候页面跳转了,之前的数据就清空了,
阅读全文
摘要:注册gitlib,设置用户名,新建远程仓库 本地安装git,设置用户名和邮箱 获取ssh公钥,添加到远程仓库 本地安装SourceTree 将远程服务器上的仓库克隆到本地,这里要求输入邮箱和密码 创建分支 将dev分支推送到远程服务器 当一个分支有修改时,这时想切换到其他分支,应将有修改的分支先提交
阅读全文
摘要:使用步骤 新建项目 导入所需依赖 编写控制层,测试页面跳转 编写swapper配置类 启动测试:http://localhost:8080/swagger-ui.html 配置swagger信息 配置扫描接口 在开发和测试时使用swagger,在生产环境中不使用swagger 编写多个外部配置文件,
阅读全文
摘要:安装 # 解压后配置环境变量 JMETER_HOME:解压路径 CLASSPATH变量中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.j
阅读全文
摘要:构建父工程 添加*.idea;*.iml;用于过滤编译文件 删除多余的文件,只留下一个pom.xml pom中添加:pom 复制依赖到pom maven 跳过单元测试,intall发布 构建子模块 右键父工程创建 创建的子模块可在父工程的pom中显示(9001是用maven构建的;9002是用Spr
阅读全文
摘要:前提条件为jdk8已经安装 在此基础上安装OpenJDK14,由于openjdk解压有没有jre文件 cmd进入jdk目录执行:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre 如果要用 jdk-14
阅读全文
摘要:安装docker uname -r # 查看centos内核版本 yum -y update # 更新yum源 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置yum源 yum-config-manager --add-
阅读全文
摘要:使用源码包安装,需要自己指定安装位置,通常是 /usr/local/软件名/ linux中要想启动执行文件,应使用绝对路径 /绝对路径/rpm包名 start ## 执行方式一 service rpm包名 start ## 执行方式二 使用源码包安装后,由于自定义安装路径,就不能使用service命
阅读全文
摘要:使用步骤 挂载光盘ISO 使网络yum源失效:由于网络yum源靠.repo后缀识别,修改3个网络yum源的后缀即可使网络yum源失效 将yum源文件改后缀名 在Linux系统中,配置文件中都有严格的格式,比如上面修改yum源文件时,在其中一行配置的中间加上注释,那么会导致报错无法使用
阅读全文
摘要:若要使用yum管理,必须能连接网络,首先配置网络IP 进入yum源文件中启动容器 使用yum源头安装rpm包不需要进入package路径,同时也不需要使用包全名,会有yum自动管理 安装软件组
阅读全文
摘要:源码包安装需手动下载后安装 二进制包则在package目录下 rpm命令管理rpm包 若某个rpm包依赖于某个模块,需要到网站www.rpmfind.net查询该模块依赖的包,安装这个包后自动安装模块,之后就能安装rpm包了 安装升级时使用包全名 查询卸载时使用包名 虚拟机中的Linux系统安装rp
阅读全文
摘要:首先进入命令模式,再输入以下命令 命令模式用于输入命令 插入模式可对文件编写操作 编辑模式下的命令是在冒号后输入 :12, 15d # 删除指定范围的行,这里是删除12到15行 :n1,n2s/old/new/g ## 表示从n1行到n2行,old表示旧的字符串 vim使用小技巧:自定义快捷键,如快
阅读全文
摘要:网络命令 在收邮件的用户中,输入 mail 可查看邮件信息,输入序列号查看详细信息 在mail命令下,输入h 查看所有邮件的列表 输入:d 序列号 # 删除邮件 last # 统计所有用户登录或重启时间,用于日志查询 lastlog # 显示包括未登录用户的登录时间 lastlog -u 用户id
阅读全文
摘要:帮助命令 man命令下:空格翻页,enter换行,q退出,/ -命令名 # 用来检索命令 man 命令名称 # 查找命令 man 配置文件的名称 # 查看配置文件的帮助,同时也有配置文件的格式的帮助 man 5 配置文件的名称 #查找该配置文件的帮助 man 1 命令名称 ## 查找该命令的帮助 w
阅读全文
摘要:文件搜索命令 星号匹配任意字符,问号匹配任意单个字符 -iname 根据文件名查找且不区分大小写 -ok 命名会有一个询问的步骤 如果没有找到指定文件,可输入命令:updatedb 更新文件资料库;除tmp目录不在文件资料库收录范围之内 locate -i 文件名 # 检索时不区分大小写 which
阅读全文
摘要:文件处理命令 以 . 开头的文件是隐藏文件 以 - 开头表示这是一个文件 以 d 开头表示是一个目录 以 l 开头表示是一个软链接 第一个root是所有者,第二个root是所属组 ls -h 以文件默认大小后缀 显示 ls -i 查看i节点(唯一标识) 所有者:只能有一个,可变更 所属组:只能有一个
阅读全文
摘要:Linux严格区分大小写 所有内容文件形式保存,包括硬件 Linux不靠扩展名区分文件类型 挂载:将设备文件名和挂载点(盘符)连接的过程 Linux各个目录的作用 bin表示二进制 服务器注意事项 远程服务器不允许关机,只能重启 重启时应该关闭服务 不要在服务器访问高峰运行高负载命令 远程配置防火墙
阅读全文
摘要:winscp 新建会话,填写ip地址、用户名、密码 连接成功后,左边是本地,右边是远程 FileZilla 填写ip地址、用户名、密码、端口,点击快速连接 ftp传输文件,局域网连接相同的wifi,填写另一台电脑的ip、用户名、密码,点击快速连接 MobaXterm 下载解压安装后 -->左上角se
阅读全文
摘要:认识 Linux系统是参考了UNIX系统作为模板开发的,但没有使用UNIX的代码;是UNIX的一种,但不是衍生版 在Linux内核的基础上开发是发行版 分区 逻辑分区永远从5开始 步骤 挂载:可理解为分配盘符,挂载点即是盘符名;不同之处:Linux中是以空目录名称作为盘符 Hda 第一块硬盘 Hda
阅读全文
摘要:错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
阅读全文
摘要:IDE Eval Reset:IDEA无限试用期插件 Translation:翻译插件,Ctrl + Shift + O MybatisX:mapper和映射间跳转 vo2DTO GitToolBox:git提交查看 lombok-plugin Scala protocol buffer edito
阅读全文
摘要:Chinese (Simplified) Language Pack for Visual Studio Code:简体中文 git history GitLens — Git supercharged Markdown Preview Github Styling:在本地就能预览Markdown文
阅读全文
摘要:Lambda表达式 Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中) 箭头函数 1.Java中的箭头函数只是用与接口中有且只有一个抽象方法的 2.箭头函数的参数就是当前接口中定义的抽象方法参数 3.箭头函数的方法体就是需要重写的当前接口中的抽象方法 4.箭头函数的返回值就是当前
阅读全文
摘要:案例1 import com.alibaba.fastjson.JSON; public class RespResult { private int code; private String msg; private Object data; public int getCode() { retu
阅读全文
摘要:public class EncodingUtil { //AES加密 private static final String KEY = "yflyyflyyflyyfly"; /** * 接收一个字符串,用md5加密 */ public static byte[] md5Encoding(Str
阅读全文
摘要:http client发送请求Authorization Basic + application/json 代码实现 # pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifact
阅读全文
摘要:/** * 静态方法中调用TMessageTemplateMapper中方法 */ @Component public class MessageUtil { @Resource private TMessageTemplateMapper tMessageTemplateMapper; priva
阅读全文
摘要:@Getter public class DietitianCorrespondUserConst { @Getter public enum StateType { NO_STATE("0", "未开始"), STARTING_STATE("1", "服务中"), STOP_STATE("2",
阅读全文
摘要:public class SnowflakeIdWorkerUtil { /** * Twitter_Snowflake<br> * SnowFlake的结构如下(每部分用-分开):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 -
阅读全文
摘要:# yaml配置 message: address: 127.0.0.1 username: guest password: guest # 业务类 @Component public class MsgFactoryUtil { public static String address; publ
阅读全文
摘要:@Component public class MsgPubMqttUtil { @Resource private EmqClient emqClient; @Resource private MqttProperties mqttProperties; @Resource private TMe
阅读全文
摘要:import java.lang.reflect.Array; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Collection; import java.ut
阅读全文
摘要:文件 output.log xxx-0.0.1-SNAPSHOT.jar start.sh stop.sh 内容 # start.sh nohup java -jar -Dspring.profiles.active=dev xxx-0.0.1-SNAPSHOT.jar > output.log 2
阅读全文
摘要:import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; public class ConverUitl { /** * * map转str * @param map
阅读全文
摘要:<template> <div> <el-table class = "table" :data="BlogList" style="width: 100%" :row-class-name="tableRowClassName" border stript > <el-table-column t
阅读全文
摘要:import axios from "axios"; import qs from "qs"; import {ElMessageBox} from 'element-plus'; // 默认路由 axios.defaults.baseURL = 'http://192.168.1.100:8081
阅读全文
摘要:错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
阅读全文
摘要:错误1:private field ‘xxx‘ is never assigned 按Alt+Enter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
阅读全文
摘要:错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
阅读全文
摘要:错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignController { @Aut
阅读全文
摘要:错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
阅读全文
摘要:安装 # 下载到本地直接解压 # 配置环境变量 GRADLE_HOME GRADLE_USER_HOME PATH # 打开cmd:gradle -v idea配置 打包 常用命令 # cmd进入项目根路径 gradlew build gradlew clean gradle build gradl
阅读全文
摘要:参考1 参考 创建集合作为项目父工程,创建文件夹作为项目子模块 get请求 表单请求 上传文件 json请求 并发:选中集合或文件夹,点击run -> 勾选要测试的接口,设置每次发送请求数和事件间隔 设置环境 导入导出 日志 # 在Pre-request Script 或 Tests 标签中编写如下
阅读全文
摘要:设置 -> 系统 -> 关于 -> 确保运行的是 Windows 版本 16215 或更高版本 microsoft store方式安装 # 官方参考:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual # 参考:https://zh
阅读全文
摘要:构建Java项目 # 打开cmd,验证jdk是否配置成功 java -version javac -version # vscode安装插件 Extension Pack for Java 打开VS code,ctrl+shift+P弹出搜索框 输入 create java project 弹出对话
阅读全文
摘要:安装 # 解压后,配置环境变量 MAVEN_HOME= C:\Program Files\apache-maven-3.6.3 Path= %MAVEN_HOME%\bin # 新建文件夹作为本地仓库 C:\Users\ychen224\.m2\repository <localRepository
阅读全文
摘要:启动容器 docker pull mariadb:10.3.32 mkdir -p /home/mydocker/mariadb/data docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/my
阅读全文
摘要:配置入下 maven jdk 字符集 注解生效激活 -过滤编译文件:添加类型,enter,apply *.iml *.idea *.gitignore *.sh *.classpath *.project *.settings target *.mvn *.cmd mvnw pom.xml中mave
阅读全文
摘要:参考 参考 pom.xml <dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join</artifactId> <version>1.2.4</version> </dependency> y
阅读全文
摘要:官方文档 参考 指定字段的填充方式 public enum FieldFill { /** * 默认不处理 */ DEFAULT, /** * 插入填充字段 */ INSERT, /** * 更新填充字段 */ UPDATE, /** * 插入和更新填充字段 */ INSERT_UPDATE } 实
阅读全文
摘要:官方案例 定义IKeyGenerator的实现 @Configuration public class MybatisPlusConfig { @Bean public IKeyGenerator keyGenerator() { return new DB2KeyGenerator(); } }
阅读全文
摘要:pom.xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> 配置类 @Configuration @MapperScan("
阅读全文
摘要:pom.xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> application.yml mybatis-plus: gl
阅读全文
摘要:pom.xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <dependency> <groupId>p6spy</gro
阅读全文
摘要:官方文档 官方文档 官方案例 定义sql public class FindOne extends AbstractMethod { @Override public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<
阅读全文
摘要:官方文档 pom.xml,注意mybatis plus版本需高于3.4.3.2 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</
阅读全文
摘要:官方文档 配置类 @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interce
阅读全文
摘要:官方文档 配置类 @Configuration @MapperScan("org.example.demo15.mapper") public class MybatisPlusConfig { /** * 新多租户插件配置,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfigu
阅读全文
摘要:官方文档 配置类 @Configuration public class MybatisPlusOptLockerConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusIntercepto
阅读全文
摘要:官方文档 加密数据 @RestController @RequestMapping("/priv") public class PrivController { /** * 加密 * @return */ @RequestMapping("/test") @ResponseBody public S
阅读全文
摘要:官方文档 官方案例 SQL 自动注入器接口 ISqlInjector public interface ISqlInjector { /** * <p> * 检查SQL是否注入(已经注入过不再注入) * </p> * * @param builderAssistant mapper 信息 * @pa
阅读全文
摘要:官方文档 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.1<
阅读全文
摘要:pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency
阅读全文
摘要:官方文档 yml mybatis-plus: # Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件) mapper-locations: classpath*:/mapper/*.xml global-config: db-config:
阅读全文
摘要:实体类 @Data public class User { @TableId(type = IdType.ASSIGN_ID) private Long id; private String name; private Integer age; private String email; } map
阅读全文
摘要:创建表 CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', company_id BIGINT(20) NOT NULL COMMENT '公司ID', name VARCHAR(30) NULL DEFAULT NULL COMME
阅读全文
摘要:pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.1</vers
阅读全文
摘要:pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.1</vers
阅读全文
摘要:pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.1</vers
阅读全文
摘要:pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.6.1</vers
阅读全文
摘要:实体类 @Data @TableName(autoResultMap = true) //不配合 typeHandler 或 numericScale 使用无意义,演示而已 public class Child { private Long id; private String name; priv
阅读全文
摘要:构建1个maven项目,导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.
阅读全文
摘要:进入本地仓库根路径,在.git所在目录打开git bash 查看该仓库的用户名和密码,如果没有,需设置 git config user.name git config user.email git config user.email "xxxx@xx.com" git config user.nam
阅读全文
摘要:参考 删除.ssh目录下的id_rsa 和 id_rsa.pub 生成第1对密钥 ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C "xxx@xxx.com" 生成第2对密钥 ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxx_git
阅读全文
摘要:参考 创建版本,点击releases 自定义标签、版本标题、版本描述,上传文件 查看 点击直接下载 删除远程tags
阅读全文
摘要:新建一个文件夹,用vscode打开,初始化为本地仓库 克隆项目到本地 编写完代码后,暂存所有更改 拉取远程仓库中最新版的代码到本地 弹出存储,并解决冲突 解决冲突的方法 <<<<<<< HEAD <div id="footer"> let name = '111' </div> 上面是当前分支的代码
阅读全文
摘要:参考 参考 当前仓库有2个分支 选择分支 根据项目情况勾选 设置成功 非管理员的项目成员提交代码到远程dev后 创建合并请求,点击Pull Request -> New Pull Request 指定目标分支,要合并到目标分支的子分支 最后原作者觉得其他成员提交的代码可以合并到主分支时,就会点击Me
阅读全文
摘要:gitee迁移到gitlab 点击查看详情 gitee的http克隆地址 gitee用户名和密码 迁移到gitlab的仓库名 指定迁移到某个组织下还是用户下 迁移到gitlab后的仓库路径 指定是否开源 最后点击创建 github迁移到gitee 点击查看详情 填写克隆地址 若仓库为私有,则需要填写
阅读全文
摘要:idea安装MyBatisX插件 idea连接mysql数据库,选中表 配置:项目路径、包路径、实体包名、忽略字段前后缀,忽略表的前后缀 配置:注解、注释、模板、mapper接口路径、mapper映射路劲、业务层路径 快速生成crud:mapper中编写接口,选中后,安装alt+enter,点击第2
阅读全文
摘要:将之前的数据库作为主库,删除product表,只保留user表 再创建1个数据库作为从库,同时创建product表 创建1个spring boot项目,再之前依赖的基础上引入如下依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>d
阅读全文
摘要:导入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <dependency>
阅读全文
摘要:编写枚举类 @Getter public enum SexEnum { MALE(1, "男"), FEMALE(2, "女"); @EnumValue //将注解所标识的属性的值存储到数据库中 private Integer sex; private String sexName; SexEnum
阅读全文
摘要:分页插件 编写配置类 @Configuration @MapperScan("com.atguigu.mybatisplus.mapper") public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPl
阅读全文
摘要:简介 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件 QueryWrapper : 查询条件封装 UpdateWrapper : Update 条件封装 AbstractLambdaWrapper : 使用La
阅读全文
摘要:@TableName # 方式1 # 如果实体类名称为User,与表名t_user不一致时 # 使用如下方式指定表名 @TableName("t_user") # 方式2 # 当实体类名称为User,表名称为t_user # 在application.yml中配置如下 mybatis-plus: #
阅读全文
摘要:配置日志输出 # application.yml中配置如下 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 基本crud操作 @SpringBootTest public class
阅读全文
摘要:简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大
阅读全文
摘要:简介 数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外, 验证迁移数据的完整性 和 退役原来旧的数据存储 ,也被认为是整个数据迁移过程的一部分。 数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或
阅读全文
摘要:mysql命令恢复数据 mysql –u root –p [dbname] < backup.sql 单库备份恢复单库 # 如果备份文件中包含了创建数据库的语句,则恢复的时候不需要指定数据库名称 mysql -uroot -p < atguigu.sql # 否则需要指定数据库名称 mysql -u
阅读全文
摘要:起步 物理备份 备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。 逻辑备份 对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工
阅读全文
摘要:主从同步的要求 读库和写库的数据一致(最终一致); 写数据必须写到写库; 读数据必须到读库(不一定); 主从延迟问题 进行主从同步的内容是二进制日志,它是一个文件,在进行 网络传输 的过程中就一定会 存在主从延迟(比如 500ms),这样就可能造成用户在从库上读取的数据不是最新的数据, 也就是主从同
阅读全文
摘要:binlog格式 在上篇主机服务器配置中,可设置binlog格式 binlog_format=STATEMENT STATEMENT模式(基于SQL语句的复制(statement-based replication, SBR)) 每一条会修改数据的sql语句会记录到binlog中。这是默认的binl
阅读全文
摘要:准备2台centos服务器,2台服务器都安装了mysql 确保第2台服务器与第1台服务器的不同 ① MAC地址 ② hostname ③ IP 地址 ④ UUID # 修改第2台服务器的mysql的uuid vim /var/lib/mysql/auto.cnf # 重启mysql systemct
阅读全文
摘要:提升数据库并发能力 # 执行查询操作的时候,先查询缓存中是否有数据,缓存中有数据,则获取缓存中的数据 # 缓存中没有数据,则从mysql数据库中查询数据,同时将数据写入缓存中 主从复制的作用 其中一个是Master主库,负责写入数据,我们称之为:写库。 其它都是Slave从库,负责读取数据,我们称之
阅读全文
摘要:写入机制 binlog的写入时机也非常简单,事务执行过程中,先把日志写到 binlog cache ,事务提交的时候,再把binlog cache写到binlog文件中。因为一个事务的binlog不能被拆开, 无论这个事务多大,也要确保一次性写入,所以系统会给每个线程分配一个块内存作为binlog
阅读全文
摘要:二进制日志(bin log) binlog可以说是MySQL中比较 重要 的日志了,在日常开发及运维过程中,经常会遇到。binlog即binary log,二进制日志文件,也叫作变更日志(update log)。 它记录了数据库所有执行的DDL 和 DML 等数据库更新事件的语句,但是不包含没有修改
阅读全文
摘要:pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.6.5</version> </dependenc
阅读全文
摘要:六边形架构 个人理解 端口要么处理输入,要么处理输出 对于每种外界类型,都有一个适配器与之对应,外界通过应用层API与内部进行交互 事件驱动架构 总结 六边形架构是洋葱架构的一个超集 整洁架构是六边形架构的一个变体 洋葱架构,也称为整洁架构 洋葱架构、整洁架构 个人理解 依赖原则:代码依赖是从外向内
阅读全文
摘要:中台 将业务系统中可以服务的前台与后台代码提取出来,形成公用组件 因此有了小前台大中台的设计思想 中台类型 业务中台:将公共的业务封装成可复用的组件 技术中台:封装业务系统所需的技术框架,设计出统一的API 数据中台:整理各业务系统的数据,建立数据存储与运算平台 具体实现 增删改操作使用领域驱动设计
阅读全文
摘要:架构 └── demo ├── sscheduler | ├── context # 环境层 | ├── transaction # 事务层 | ├── domain | ├── object | | ├── aggregate1 | | └── aggregate2 | | | └── role
阅读全文
摘要:DCI架构 DCI是数据Data 场景Context 交互Interactions的简称 DCI是一种特别关注行为的模式(可以对应GoF行为模式) 而MVC模式是一种结构性模式,MVC模式由于结构化,而可能忽视了行为事件 User Interface是用户接口层,主要用于处理用户发送的Restful
阅读全文
摘要:值对象 public class Person { //人员id private String id; //姓名 private String name; //地址(值对象) private Address address; } public class Address { //省份 private
阅读全文
摘要:分类 慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。 通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令, 对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。 错误日志:记录MySQL服务
阅读全文
摘要:MVCC 的实现依赖于:隐藏字段、Undo Log、Read View 简介 在MVCC机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在Undo Log里。如果一个事务想要查询这个行记录, 需要读取指定版本的行记录,这时就需要用到ReadView了,它帮我们解决了行的可见
阅读全文
摘要:简介 MVCC在READ COMMITTD、REPEATABLE READ这两种隔离级别的事务才执行快照读操作时访问记录的版本链的过程。 这样使不同事务的读-写、写-读操作并发执行,从而提升系统性能 案例1 # Transaction 10 BEGIN; UPDATE student SET nam
阅读全文
摘要:充血模型 除了get和set方法,注入仓储对象,编写方法使用仓储对象进行持久化操作 仓储和工厂 持久层编写接口操作数据数据库 编写仓储接口 实现仓储接口,调用持久层对象(注入持久层对象) 领域层业务类调用仓储接口中的方法 工厂要做的事(PO转DO,DO转PO) 仓储作为领域模型和数据模型的中介,它负
阅读全文
摘要:简介 MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。 这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,
阅读全文
摘要:InnoDB存储引擎中的锁结构 1. 锁所在的事务信息 : 不论是 表锁 还是 行锁 ,都是在事务执行过程中生成的,哪个事务生成了这个 锁结构 ,这里就记录这个事务的信息 此 锁所在的事务信息 在内存结构中只是一个指针,通过指针可以找到内存中关于该事务的更多信息,比方说事务id等 2. 索引信息 :
阅读全文
摘要:全局锁 全局锁就是对 整个数据库实例 加锁。当你需要让整个库处于 只读状态 的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞: 数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用 场景 是:做 全库逻辑备份 # 获取全局锁 Flush
阅读全文
摘要:显式锁 # 通过特定的语句进行加锁,我们一般称之为显示加锁 # 显式共享锁 select ... lock in share mode # 显式排他锁 select ... for update 隐式锁 隐式锁是在进行插入操作时,生成的锁;1个事务在进行插入操作时,为了避免其他事务对这条记录进行读或
阅读全文
摘要:页级锁 页锁就是在页的粒度上进行锁定,锁定的数据资源比行锁要多,因为一个页中可以有多个行记录。当我们使用页锁的时候,会出现数据浪费的现象,但这样的浪费最多也就是一个页上的数据行。 页锁的开销介于表锁和行锁之间,会出现死锁。锁定粒度介于表锁和行锁之间,并发度一般。 每个层级的锁数量是有限制的,因为锁会
阅读全文
摘要:临键锁(Next-Key Locks) 有时候我们既想 锁住某条记录 ,又想 阻止 其他事务在该记录前边的 间隙插入新记录 ,所以InnoDB就提出了一种称之为 Next-Key Locks 的锁,官方的类型名称为: LOCK_ORDINARY ,我们也可以简称为next-key锁 。Next-Ke
阅读全文
摘要:页级别:记录锁 记录锁也就是仅仅把一条记录锁上,官方的类型名称为: LOCK_REC_NOT_GAP 。比如我们把id值为8的那条记录加一个记录锁的示意图如图所示。 仅仅是锁住了id值为8的记录,对周围的数据没有影响。 结论 记录锁是有S锁和X锁之分的,称之为 S型记录锁 和 X型记录锁 。 当一个
阅读全文
摘要:自增锁(AUTO-INC锁) # 当我们为表的某个列添加 AUTO_INCREMENT 属性时,数据库会自动添加自增锁 CREATE TABLE `teacher` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, P
阅读全文
摘要:客户端请求资源服务器 # 配置类添加注解@EnableOAuth2Sso # 注入 @Bean public OAuth2RestTemplate oAuth2RestTemplate(UserInfoRestTemplateFactory factory) { return factory.get
阅读全文
摘要:客户端通过网关访问资源服务器 # 客户端1模块编写如下 # pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client
阅读全文
摘要:微服务用户授权 在微服务中接收到网关转发过来的 Token 后,需要我们构建一个 Authentication 对象来完成微服务认证与授权, 这样这个微服务就可以根据用户所拥有的权限,来判断对应资源是否可以被用户访问 代码实现:在资源服务器中编写过滤器 /** * 获取网关转发过来的请求头中保存的明
阅读全文