自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

秃头之路

头头的学习笔记

  • 博客(110)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 SpringBoot打包成jar,使用docker 部署,关于文件上传本地哪些事

springBoot打包成jar,docker部署,文件上传有关问题

2022-12-13 14:37:54 564 1

原创 93. 复原 IP 地址

93. 复原 IP 地址题目描述有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是“0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.'来形成。你

2022-05-04 10:41:04 295

原创 40. 组合总和 II

40. 组合总和 II给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。来源:力扣(LeetCode)思路这题和39,组合总和大致上一致,就是回溯计算对原数据排序(方便后面的去重)确定递归的结束条件,当前和已经等于,加入结果集合中退出,当前和大于目标值,退出后面就是遍历我们当前层元素注意回溯

2022-05-01 21:17:59 309

原创 538. 把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树描述给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。来源:力扣(LeetCode)思路首先是一个二叉搜索树,可知中序遍历是一个有序的数组,先左后右是一个递增的,先右后左是

2022-04-27 21:45:44 450

原创 使用前缀树实现敏感词过滤(字符串的匹配)

概述记录一下,学习使用前缀树,来实现从一传字符串中找出敏感词,并替换掉。起始就是一个字符串匹配算法,但是要清楚,铭感词可以有很多个,我们从数据库或者文件中加载我们的敏感词,并且加入到树中,组成一个铭感词树,下面就是当我们传递过来一个字符串时,我们使用这个树过滤,得出我们想要的结果树的结构假设我们的敏感词为 abc,abb,aac,ad,那我们期望得到一颗如下的树,按照我们字符前缀组成的一颗树,此外我们还需要对该串的结束字符做一个标识,即叶子节点就是结束字符。代码设计如下 /** * 前

2022-04-26 19:50:36 2314

原创 501. 二叉搜索树中的众数

501. 二叉搜索树中的众数给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树来源:力扣(LeetCode)思路首先是一个二叉搜索树 (得出中序遍历是有序的),有重复的元素中序遍历二叉树设置一个前置节点,一直记录当

2022-04-25 17:30:33 194

原创 530. 二叉搜索树的最小绝对差

530. 二叉搜索树的最小绝对差描述给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。思路读题是一个二叉搜素树,表明当前树的中序遍历结果是一个有序的且递增的顺序,他让我们找出最小的差值,肯定是相邻的两个数计算出的结果是最小差值,我们再这些相邻的结果中一直动态的记录最小差值,找到一个就更新,这就需要我们设计一个前置节点,始终记录当前遍历节点的前一个节点代码class Solution { // 当前节点的,前

2022-04-25 17:21:33 413

原创 700.二叉搜素树的搜索

700、二叉搜素树题目描述给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。来源:力扣(LeetCode)思路首先他是一个二叉搜索数,即我们可以根据当前数据大小,调整往那个方向遍历1、当前数满足条件就返回2、当前数大于val,那就向右子树遍历,左子树就不用遍历了3、同理,当前数小于val,那就向左子树遍历,右子树不用遍历,因为肯定不满足条件的。4、具体代码

2022-04-25 17:15:45 144

原创 404. 左叶子之和

404. 左叶子之和题目描述给定二叉树的根节点 root ,返回所有左叶子之和。输入: root = [3,9,20,null,null,15,7]输出: 24解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例 2:输入: root = [1]输出: 0来源:力扣(LeetCode)思路既然是求出当前左叶子的和,意思就是找出我们所有的叶子节点,然后再筛选一下,我们前面做过找出所有的叶子节点,我用的时前序遍历,求出结果,本题就是在求出所有的叶子节点的基础上,

2022-04-18 20:18:45 398

原创 844. 比较含退格的字符串

844. 比较含退格的字符串题目表述给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:s = “ab#c”, t = “ad#c”输出:true解释:s 和 t 都会变成 “ac”。示例 2:输入:s = “ab##”, t = “c#d#”输出:true解释:s 和 t 都会变成 “”。示例 3:输入:s = “a#c”, t = “b”输出:fal

2022-03-09 18:48:45 7009

原创 2021-最后一天-2022-第一天-赶出-flex-布局-个人见解

一、与flex的缘分​ 暑假在家,闲的没事,在家里面没有啥事,就把在学校里面的一个想法,付诸于实践,想做一个跑腿软件,面向使用者为我们的在校的大学生,又因为,现在都在去重客户端,把一个个的app都改为了小程序,所以我就想者做一个跑腿的微信小程序,先后花费了几天设计架构,但是在之前我都是使用别人的模板设计我的程序,后端自己写,但是这个有时间,就想着突破一下自己,自己设计UI,自己设计布局,但是这就难为我这个后端狗了,在网上查找资料,得知微信官方推荐使用flex布局设计小程序,索性就学习了felx布局了,一学

2022-02-01 20:31:36 1061

原创 记录使用mybatis的<set><if></if></set>标签的一个坑

1、错误原因使用if标签时没有给我们的字符串加上引号,导致一直报错,报错参数绑定异常2、错误的代码<set> <if test="attr==tname"> tname=#{val}, </if> <if test="attr==ename"> ename=#{val}, </if>

2021-11-03 21:25:32 954

原创 09-rabbitMq-发布确认高级-springBoot版本

在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?这就需要我们的rabbitMQ队列发布确认高级模式,消息投递失败的,是转发,转发失败,消息回退,缓存等等都是问题。一、确认机制方案1、确认机制方案消息投递到我们交换机时,同时缓存我们的消息,一旦我们的

2021-10-09 12:45:09 436

原创 Spring 框架中 @PostConstruct 注解详解

在Spring项目经常遇到@PostConstruct注解,首先介绍一下它的用途: 被注解的方法,在对象加载完依赖注入后执行。此注解是在Java EE5规范中加入的,在Servlet生命周期中有一定作用,它通常都是一些初始化的操作,但初始化可能依赖于注入的其他组件,所以要等依赖全部加载完再执行。与之对应的还有@PreDestroy,在对象消亡之前执行,原理差不多。一、@PostConstruct认识此注解是在JavaEE5规范中加入的,在Servlet生命周期中有一定作用,它通常都是一些初始化的操作

2021-10-09 11:18:40 4159

原创 08-rabbitMQ-springboot-延时队列

一、springBoot整合RabbitMQ1、IDEA创建一个SpringBoot的项目2、导入相关的依赖<!--导入依赖--> <dependencies> <!--RabbitMQ 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&

2021-10-05 21:03:51 217

原创 07-rabbitMQ-死信队列

一、死信的概念先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景: 为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列

2021-10-05 16:01:41 114

原创 06-rabbitmq-交换机-随机队列

一、临时队列之前的章节我们使用的是具有特定名称的队列(还记得 hello 和 ack_queue 吗?)。队列的名称我们来说至关重要-我们需要指定我们的消费者去消费哪个队列的消息。每当我们连接到 Rabbit 时,我们都需要一个全新的空队列,为此我们可以创建一个具有随机名称的队列,或者能让服务器为我们选择一个随机队列名称那就更好了。其次一旦我们断开了消费者的连接,队列将被自动删除。创建临时队列的方式如下: /** * 随机队列: * 队列的名称是随机

2021-10-05 15:01:31 869

原创 05-RabbitMQ-发布确认

一、发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置basic

2021-09-30 19:12:30 59

原创 04-RabbitMQ-Work Queues&&消息应答&&持久化&&不公平分发

一、介绍工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。二、轮训分发消息...

2021-09-29 19:35:03 131

原创 03-RabbitMQ-Hello world

我们简单的入门一下我们的Rabbit,使用java完成一个生产者,一个消费者,完成先关的操作。1、工作原理图2、创建一个Maven项目,导入对应的依赖<dependencies> <!--rabbitmq 依赖客户端--> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-cl

2021-09-28 10:52:09 62

原创 02-RabbitMQ-安装-启动-连接-注意事项

一、Rabbit安装和启动1、下载Linux版的安装包2、上传文件到Linux服务器开启安装上传到/usr/local/software 目录下(如果没有 software 需要自己创建)3、安装文件(注意按照我们的安装砖目录来)rpm -ivh erlang-21.3-1.el7.x86_64.rpmyum install socat -yrpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm4、常用命令添加开机启动 RabbitMQ 服务

2021-09-27 21:24:53 105

原创 01-初识消息队列MQ&&Rabbit相关概念介绍

文章目录一、消息队列MQ相关的概念介绍1、什么是MQ2、为啥使用MQ,MQ的优势2.1、流量消峰2.2、引用解耦2.3、异步处理一、消息队列MQ相关的概念介绍1、什么是MQMQ(message queue),从字面的意思上看,本质是一个队列,FIFO先入先出,只不过队列中存放的内容是message 而已,MQ还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。

2021-09-27 20:38:59 147

原创 11-Redis集群-redis自身集群版

一、为啥需要集群1、容量不够,redis如何进行扩容?2、并发写操作, redis如何分摊?3、另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址、端口等信息,导致我们操作时变得复杂。redis3.0之前通过代理主机来解决,但是redis3.0中提供了解决方案,就是无中心化集群配置。二、集群介绍1、Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。2、Redi

2021-09-21 19:53:40 324

原创 10-Redis主从复制

一、是什么主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,读写缝分离,分担压力,当然了我们仍然可以开启从机的写的操作。二、可以干啥读写分离,性能扩展(主机写,从机复制主机数据,进行读操作,一主多从)容灾快速恢复(一台从机错误,快速切换到另外一台从机读取数据)集群版三、开启骚操作(使用docker演示)3.1、docker环境准备本文使用无配置文件启动,想要有配置参考这个文章3.1.1、创建Docker网络用于

2021-09-21 11:52:06 84

原创 09-Redis持久化

一、Redis持久化Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.你也可以同时开启两种持久化方式, 在这种情况下, **当redis重启的时候会

2021-09-21 10:33:50 132

原创 编写一个关于Java Bean类url,包括:name(名称)、site(官网)和property(性质)等属性。在控制器方法中生成一组Url,并在页面中返回。

一、题目编写一个关于Java Bean类url,包括:name(名称)、site(官网)和property(性质)等属性。在控制器方法中生成一组Url,并在页面中返回。要求:1、奇偶行的背景颜色不同;2、背景色定义在一个css文件中,并通过link标签引入。示例:二、实体类public class Url { private String name; private String site; private String property;}三、controll

2021-09-19 09:57:14 277

原创 08-Redis_事务_锁机制_秒杀案例分析

一、Redis事务1.1、Redis事务介绍Redis事务的主要作用就是串联多个命令防止别的命令插队,当一个事务执行时,可以保证不会被打断,除非exec执行时出现错误。1.2、Multi、Exec、Discard指令从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。组队的过程中可以通过discard来放弃组队。组队示意图:案例:当前事务没有执行,key为nil执行事务:1.3、事务出现

2021-09-16 22:01:06 154

原创 07-springBoot整合Redis&&RedisTemplate使用

一、SpringBoot整合Redis1、springBoot项目引入Redis相关依赖版本号由我们的springBoot自动配置管理<!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>&

2021-09-15 21:55:36 621

原创 SpringBoot实现输入三条边长,如果能构成三角形就计算周长和面积

文章目录一、创建springBoot导入相关的依赖二、创建Controller三、创建页面四、测试页面一、创建springBoot导入相关的依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</ar

2021-09-13 16:13:38 537

原创 07-整合阿里云oss&用户认证&就诊人CRUD&平台统一管理用户

文章目录一、整合oss1、注册开通阿里云oss2、获取我们必须的参数3、进入JavaSDK学习使用上传文件(1)引入依赖(3)文件上传(流式文件上传)4、项目整合OSS(1)创建OSS模块,用来专门完成文件上传服务(2)创建controller(3)service层(4)将我们必要的参数保存在配置文件中读取(5)创建工具类,读取配置文件内容二、用户认证1、分析2、userinfo表设计3、数据传递的VO类4、contoller层5、service层三、救诊人CRUD1、分析2、就诊人实体类分析3、获取就诊人

2021-08-24 12:14:30 830

原创 06-手机登录&token生成&容联云短信验证&用户认证和网关整合(网关做统一权限认证)

一、需求分析二、msm模块(发送验证码)1、准备工作(1)注册容联云账号,使用验证码服务传送门由于容联云个人无法认账,但是免费给我们提供8元的短信配额,我们可以免费使用,非常给力,感谢容联云,比隔壁的云好的太多注册后按照我的步骤即可(官方JAVASDK参考步骤)在模块作用引入容联云maven依赖<dependencies> <!--容联云短信服务--> <dependency> <g.

2021-08-18 09:55:19 1854 5

原创 解决:IDEA 自动切换JDK编译版本,修改了又自动切换回去的问题&IDEA切换JDK编译版本

文章目录一、IDEA切换JDK版本二、终极解决方案一、IDEA切换JDK版本要想在IDEA中完成对JDK版本的切换有多个地方需要我们进行修改File | Settings | Build, Execution, Deployment | Compiler | Java CompilerFile->ProjectStruct->platform settings->SDKSFile->ProjectStruct->projectSettings->

2021-08-17 21:48:08 6784 3

原创 05-Nacos-Feign-Gateway项目配置使用

一、Nacos配置使用使用Nacos最为服务注册中心1、下载nacos,启动起来下载好Nacos进入bin启动NAcos账号密码都是nacos2、项目配置依赖 <!-- 服务注册--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-aliba

2021-08-16 09:01:10 403

原创 Java开发模板示例总结

1、Ajax完整请求示例$(function(){ //请求参数 var list = {k1:v1, k2:v2; k3:v3, k4:v4}; // $.ajax({ //请求方式 type : "POST", //请求的媒体类型 contentType: "application/json;charset=UTF-8",

2021-08-15 19:29:51 915

原创 docker部署springBoot项目JDK8&JDK11

一、JDK8版本1、编写DockerfileFROM java:8ADD hsjz-0.0.1-SNAPSHOT.jar /hsjz.jarEXPOSE 8080ENTRYPOINT ["java","-jar","/hsjz.jar"]2、Dockerfile解释因为我们的docker可以直接pull,jdk8,所以不需要我们额外的准备工作FROM 表示基于jdk8ADD表示添加当前目录下的springboot,jar包,并且重命名为 /hsjz.jarEXPOSE 暴露端口号EN

2021-08-11 13:15:15 3350

原创 docker-07-push镜像到阿里云镜像服务

文章目录1、制作镜像,确定我们要推送的镜像已经制作好2、打开阿里云镜像服务,创建镜像仓库3、推送(1)等录(2)推送4、查看推送结果拉取推送的镜像1、制作镜像,确定我们要推送的镜像已经制作好2、打开阿里云镜像服务,创建镜像仓库3、推送(1)等录docker login --username=xxx registry.cn-beijing.aliyuncs.com(2)推送docker tag [ImageId] registry.cn-beijing.aliyuncs.com/zd

2021-08-10 17:37:35 105

原创 docker-06-mysql-redis-tomcat安装

文章目录一、总体步骤二、安装tomcat三、安装mysql四、安装Redis一、总体步骤搜素我们的镜像pul我们想要的镜像查看镜像启动我们镜像停止我们容器移除我们容器||重启我们容器二、安装tomcat搜素:docker search tomcat拉取:docker pull tomcat:last查看:docekr images tomcat运行:docker run -it -p 9090:8080 tomcat关闭:docker stop/kill [id]三、

2021-08-10 13:40:50 67

原创 docker-06-DockerFile解析

文章目录一、DockerFile是什么二、DockerFile构建的过程1、DockerFile内容基础知识语法2、Docker执行Dockerfile的大致流程3、小结三、DockerFile的保留字指令四、案例分析编写DockerFile1、Base镜像(scratch)2、案例一:编写centos(1)DockerFile编写(2)构建(3)运行(4)查看镜像的变更历史3、案例二:制作Tomcat镜像(1)准备Tomcat压缩包和JDK压缩包(2)创建DockerFile文件(3)构建(4)运行并且创

2021-08-10 12:58:28 86

原创 docker-05-容器数据卷

文章目录一、数据卷是什么二、数据卷可以做什么1、容器的持久化2、容器之间继承+共享我们的数据三、数据卷添加1、直接启动时命令添加(有权限修改)2、直接启动时命令添加(无权限修改,之后读)3、DockerFile添加(1)指令(2)DockerFile构建(2)构建镜像(3)run 运行,我们的容器(4)查找我们主机的文件地址4、备注:出现cannot open directory解决方案四、数据卷容器是什么数据卷的共享操作数据卷的生命周期一、数据卷是什么按照阳哥话,就是一个U盘,提供给我们docker容

2021-08-10 11:34:17 73

原创 docker-04-镜像

文章目录一、镜像是什么1、unionFs 联合文件系统2、Docker镜像加载原理3、分层的镜像4、为啥使用分层的镜像5、docker镜像的特点二、docker镜像的commit操作1、操作解释2、案例演示1、pull tomcat镜像并运行2、做一些修改,该为我们的镜像3、提交我们正在运行容器为一个镜像4、测试一、镜像是什么1、unionFs 联合文件系统UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来

2021-08-10 08:37:45 57

168套HTML个人博客模板.zip

做个人博客开发时,可以使用的模板,168 套模板总有一个符合你。可以拿来即用 解压密码为:zdk666168blog

2021-06-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除