自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 【实战】SpringBoot整合ffmpeg实现动态拉流转推

在最近的开发中,遇到一个 rtsp 协议的视频流,前端vue并不能直接播放,因此需要对流进行处理。在网上查阅后,ffmpeg和webrtc是最多的解决方案,但是使用webrtc的时候没成功,所以选择ffmpeg。免密登录需要将公钥复制到被登录的目标服务器,在现在需求中,需要在容器中远程登录宿主机,所以宿主机就是目标服务器,那么换个思路,将这里生成的私钥,放在容器中,就可以从容器中远程登录宿主机。下面介绍一下整体的实现步骤。现在最简单的demo就已经完成了,但是这样的实现方式需要手动控制,

2024-07-30 15:40:40 1066

原创 Docker 搭建 Redis 环境

Redis 是一个基于内存的高性能非关系型数据库,在后端开发中非常常用,本文介绍一下如何在 Linux 环境中搭建 Redis。注意容器和宿主机的端口映射,用云服务器的话需要打开宿主机的端口安全组。Linux环境安装Docker,参考。

2024-07-02 17:32:50 154

原创 Spring Boot 集成 MinIO 实现文件上传

MinIO的搭建过程参考。登录MinIO控制台,新建一个 Bucket,修改 Bucket 权限为公开。

2024-06-21 14:43:39 738

原创 Docker 搭建 MinIO 对象存储

MinIO 是一个高性能的对象存储服务器,用于构建云存储解决方案。MinIO 允许你存储非结构化数据(如图片、视频、日志文件等)以对象的形式。MinIO 提供简单的部署选项和易于使用的界面,允许你快速设置和访问存储资源。本篇博客介绍一下使用 Docker 容器进行MinIO的安装与使用。部署方式采用单机单硬盘模式。服务器上没有 Docker 环境的可以参考。

2024-06-21 14:22:17 464

原创 【Java】时间工具类 —— 格式化,个性化,时间操作

在平常的编程中,经常会遇到时间的各种类型转化,避免每次都使用第三方库或者上网搜索,决定整理一下写篇博客,也是从各处收集或者让AI写的方法,应该可以涵盖平时所有的场景了

2024-05-17 14:46:22 566

原创 【Linux】Docker搭建Mysql主从架构

Linux环境下(centos7.8)使用Docker搭建MySQL主从架构。

2023-12-18 16:47:15 555

原创 【踩坑记录】SpringBoot 3 统一处理 dubbo 3 接口异常和错误

经过搜索之后发现,dubbo提供了异常处理的类ExceptionFilter(org.apache.dubbo.rpc.filter.ExceptionFilter),大概功能就是对指定的一些异常放行,然后其他异常统一包装成RuntimeException返回。最近在学习Dubbo的时候,按照之前的习惯定义了自定义异常和统一异常处理,但是在进行接口测试的时候,发现并不是自定义的异常处理,而是被当做系统异常进行了处理。在经过debug和源码的阅读之后发现,虽然异常进入了自己写的过滤器,但是最后还是会回到。

2023-12-04 14:04:34 1190 1

原创 idea中mybatis的mapper.xml没有高亮显示

今天写代码的时候,生成完xml发现写SQL的时候没有高亮提示。修改了一下头部的url,去掉https的s就好了。

2023-11-21 10:54:43 897 2

原创 【踩坑日记】关于时间戳的异常

在最近的一次作业中,保存时间的时候,由于懒得改前端组件时间,默认用了1970-01-01(只有年月日)上传数据,但是遇到了问题`Data truncation: Incorrect datetime value: '1970-01-01 08:00:00' for column 'create_time' at row 1`。但是改一下时间就可以正常提交,引发思考。时间戳不能存 0。

2023-11-16 23:01:53 549

原创 【LeetCode刷题记录】 热题 100 —— 滑动窗口

3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词如果它在子串中已经存在,那么就判断当前无重复子串的长度和维护的最长长度,并且删掉子串中这个字符以及它之前的字符,并且拼接上新的字符。优化之后确实快了很多,但是500ms还是有点慢的,毕竟只击败了不到20%,所以继续想办法优化。现在的解法中,每次都要重新构造一个子串的数组,有没有办法和上一题那样,通过滑动窗口来维护,每次删去不在窗口里的元素并且添加新进入窗口的元素,所以得到下面的解法。回想之前也做过一个异位词的算法题,可以通过数组来判断异位词,

2023-11-11 17:02:53 139

原创 若依分离版 docker 一键部署踩坑记录

前置工作按照流程操作,在最后docker compose运行的时候发现 ruoyi-server (也就是后端项目的服务) 会启动失败。查看容器启动情况的话会发现除了后端服务异常,其他容器都在正常运行。这时候有两种情况下面针对这两种情况分别进行分析。

2023-11-10 18:18:37 679 1

原创 【LeetCode刷题记录】 热题 100 —— 双指针

力扣:283. 移动零,11. 盛最多水的容器,15. 三数之和,42. 接雨水,双指针

2023-11-06 15:30:07 415

原创 Java集合框架 ——— LinkedList 源码分析

LinkedList是一个基于双向链表实现的集合类,经常被拿来和ArrayList做比较。LinkedList 继承自,它决定了 LinkedList 只能支持按次序访问。此外 LinkedList 还实现了Deque接口,它具有双端队列的特性,支持从两端插入和删除元素,方便实现栈和队列等数据结构。因此 LinkedList 实现了很多队列的方法,在开发中也可以当做一个堆栈来使用。

2023-10-31 08:26:15 316 1

原创 Java集合框架 ——— LinkedList 基础使用

采用链表存储,所以在头尾插入或者删除元素不受元素位置的影响,时间复杂度为 O(1);如果是要在指定位置 i 插入和删除元素的话, 时间复杂度为 O(n) ,因为需要先移动到指定位置再插入和删除。我们在项目中一般是不会使用到 LinkedList 的,需要用到 LinkedList 的场景几乎都可以使用 ArrayList 来代替,并且,性能通常会更好。

2023-10-30 14:25:02 322 1

原创 Java集合框架 ——— HashMap 源码分析(二)

这两篇博客对 HashMap 的常用方法源码做了一些分析,扩容和插入方法的内容比较多,特别是插入操作,理解了插入之后,查找和删除的代码阅读起来也相对容易很多。

2023-10-26 08:05:54 166

原创 【LeetCode刷题记录】 热题 100 —— 哈希

两数之和,字母异位词分组,最长连续序列这道题的暴力解法相信看到这题的所有人都能想到,使用双重 for 循环进行枚举,算出所有的结果。提交发现耗时还是有些长,并且当前的在热题100的分类中,这道题被分在了哈希,那么很明显这一题可以使用哈希表解决。在这一题中,对于每一个元素 n ,都存在一个另一个数,使他们求和可以得到目标值,那个数就是差 diff。而这个差也需要在数组里找,所以将数组里全部的数存到 HashMap 中。

2023-10-23 13:50:11 187

原创 微服务网关整合 Knife4j

微服务架构下,每个服务都有自己的接口文档,但是需要访问不同的地址。如果想通过网关作为统一入口将所有文档聚合在一起,就需要使用 knife4j 提供的网关进行聚合组件。系统版本项目准备。

2023-10-19 14:00:43 466

原创 微服务实战项目 —— 知识分享应用(三)

我的兑换列表需要查询到 MidUserShare 中间表的数据后再查询 share 的具体信息,ShareService 创建方法。积分明细列表只需要简单的分页查询积分日志表,UserService 实现 userBonusLog 方法。注意:修改博客中两处主机地址,并且打开四个端口:9999,10909,10911,9876。用户中心不需要主动调用,写一个监听器,只要消息队列有了某个用户的积分,就会通知他去消费加分。重启服务,可以看到用户中心已经监听到,并且已经增加了积分,日志表也插入了日志。

2023-10-15 12:50:31 138 1

原创 微服务实战项目 —— 知识分享应用(二)

修改 http 登录接口测试代码,在 /login 登录接口响应成功后,将 token 存入 client.global 全局,然后就可以在 /client 接口请求中使用 {{ token }} 的形式使用它。JavaBean 方式比 yml 配置方式在多模块的微服务架构下实现更加便捷,只需要在公共模块写一个配置类就可以在全部模块(引入了公共模块的全部模块)实现时间的格式化。仿照 user 模块实现启动类。(此处需要用到用户中心的实体类 User,就先复制一份过来,结合前面的学习,思考最终的解决方案)

2023-10-13 10:11:08 251

原创 微服务实战项目 —— 知识分享应用(一)

share-common 模块新建 enums 子包,新建异常枚举类 BusinessExceptionEnum.java@GetterPHONE_NOT_EXIST("手机号不存在"),PASSWORD_ERROR("密码错误");share-common 模块新建 exception 子包,编写自定义异常类 BusinessException.java@Setter在全局统一异常处理类 ControllerExceptionHandler 中添加对自定义异常的处理/**

2023-10-08 15:34:21 194 1

原创 Java集合框架 ——— HashMap 源码分析(一)

在 JDK 1.8 之前,HashMap 底层数据结构为数组 + 链表实现。HashMap 使用这种数据结构来解决哈希冲突,在每个数组元素后面跟上一个链表,在添加元素的时候会根据 Key 的 HashCode 确定存放位置。一般来说,不同的键的 HashCode 是不同的,但是如果出现了相同的情况,我们称之为哈希碰撞,此时就会把新的键值接在原来的键值的链表后面。在 JDK 1.8 之后,Java 在原来的底层实现基础上,如果链表的长度过长(超过一定的阈值,并且满足一定条件后)会将链表转换为红黑树。

2023-10-07 16:31:53 161 1

原创 Java集合框架 ——— HashMap 基础使用

HashMap 是一种常用的数据结构,是一个非线程安全的集合,主要用来存放键值对。在 JDK1.8 之前 HashMap 由数组+链表 实现,链表主要用于解决哈希冲突;在 JDK1.8 之后,JDK 选择了新的哈希冲突解决方式,当链表长度大于一定阈值,HashMap 会将链表转化为红黑树,以此提高 HashMap 的效率。

2023-10-01 17:29:55 111

原创 容器化技术 —— 自定义镜像并发布到公服

为了从根本上解决开发和运维环境不一致的问题。也就是说,在安装时,把原始环境一模一样地复制过来,开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。开发在打包应用时,将应用所需要的文件打包成一个镜像文件,将镜像运行在docker中。从而达到一次镜像,处处运行。这也是 Docker 官方的口号:Build once,Run anywhere.

2023-09-28 22:09:26 134

原创 云原生浪潮下的容器化技术 —— Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的操作系统机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker官方的口号 : " Build once,Run anywhere,Configure once,Run anything " 。

2023-09-27 14:21:15 343

原创 Java集合框架 ——— ArrayList 源码分析

本文以 JDK1.8为例,分析ArrayList的源码。扩容机制,overflow-conscious code,int 溢出

2023-09-26 18:25:00 124

原创 Java 集合框架 ——— ArrayList 基础使用

数组的长度是固定的,无法适应数据变化的需求,因此Java提供了 ArrayList 集合类来解决这个问题。ArrayList 是大小可变的数组的实现,比数组使用起来更加灵活,它的容量能动态增长。ArrayList 对象不能存储基本类型,只能存储引用类型的数据。因此不能使用 int,double 等基本数据类型。

2023-09-25 19:46:12 136 1

原创 Linux环境安装Nginx环境,部署基础前端项目

如何在Linux中安装Nginx环境,搭建私人博客必备!

2023-09-24 16:12:00 179 1

原创 如何在Linux环境下部署MySQL服务

手把手教大家如何在Linux下安装部署mysql。

2023-09-23 19:27:14 308

原创 Linux搭建配置JDK环境

在Linux环境中,部署Java项目之前,需要在服务器中安装jdk环境,接下来在linux中开始安装jdk环境,有yum和压缩包两种部署方式。

2023-09-22 08:11:21 244

原创 Java集合框架介绍

当我们需要存储一组类型相同的数据时,数组是最常用且最基本的容器之一。但是,使用数组存储对象存在一些不足之处,因为在实际开发中,存储的数据类型多种多样且数量不确定。这时,Java 集合就派上用场了。与数组相比,Java 集合提供了更灵活、更有效的方法来存储多个数据对象。Java 集合框架中的各种集合类和接口可以存储不同类型和数量的对象,同时还具有多样化的操作方式。相较于数组,Java 集合的优势在于它们的大小可变、支持泛型、具有内建算法等。总的来说,Java 集合提高了数据的存储和处理灵活性,可以更好地适应。

2023-09-19 17:41:06 45

空空如也

空空如也

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

TA关注的人

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