自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot结合MyBatis 【超详细】

Spring Boot与MyBatis框架集合实践。内置MyBatis大部分使用技巧,而Spring Boot起到个快速入门的效果。其中MyBatis内容涉及到业务层与数据访问层的传参知识、企业常用的动态SQL拼接、高级映射及延迟加载、以及缓存机制、最后包括PageHelper分页插件

2022-10-16 22:52:42 110615 26

原创 大学JavaWeb课程设计——图书管理系统(应付作业及毕设)

作者是一名大二学生ovo,空闲时间用原生的JavaWeb开发了一个图书管理系统,本人第一个项目并希望大家能够支持一下,可以挺好的应付老师的作业和毕业设计。

2022-08-25 18:26:53 6498 15

原创 【Java EasyExcel】自定义处理器

【EasyExcel】自定义处理器。

2024-05-12 21:21:43 660

原创 【Java 序列化】自定义序列化器实现数据传输

由于 Java 对象存放在 JVM 的堆内存当中,所以当这个对象需要拿来做数据传输(比如前后端传递、进程/模块间传递)时,就需要将 Java对象 -> 转变为二进制串,这个就是序列化的过程。而另外一边的数据接收后需要将二进制串 -> Java对象,这个就是反序列化的过程。

2024-03-25 22:59:54 453

原创 【Vue2 Vue3 TypeScript】文件导出获取后端返回文件流

【代码】【Vue2 Vue3 饿了么组件】文件导出获取后端返回文件流。

2024-03-23 10:58:18 343

原创 【Ubuntu 22.10】克隆虚拟机修改ip

这里我采用的是VMware软件 -> 编辑 -> 虚拟网络编辑器。

2024-01-22 19:40:29 995

原创 【PowerDesigner】导入sql为表结构并导出表结构为word

【PowerDesigner】导入sql为表结构并导出表结构为word

2024-01-22 10:33:54 1571

原创 记录每日LeetCode 2828.判别首字母缩略词 Java实现

words 中 "alice"、"bob" 和 "charlie" 的第一个字符分别是 'a'、'b' 和 'c'。因此,s = "abc" 是首字母缩略词。words 中 "an" 和 "apple" 的第一个字符分别是 'a' 和 'a'。串联数组 words 中每个字符串的第一个字符,得到字符串 "ngguoy"。因此,s = "ngguoy" 是首字母缩略词。串联这些字符形成的首字母缩略词是 "aa"。因此,s = "a" 不是首字母缩略词。的首字母缩略词,返回。

2023-12-20 11:05:20 862

原创 【Java -jar】无主清单文件 命令行启动失败问题

可以判定为不是简单的package到本地,而是在pom.xml缺少了打包信息,添加如下信息,打包后执行java -jar才可成功。打包后在jar包中的META-INF中的MANIFEST.MF中的信息有误。找不到类加载器和主运行文件等信息。

2023-12-20 10:27:10 701

原创 【Spring Cloud】集成分布式事务Seata2.0.0

在/script/config-center/nacos下终端输入就会插入到Nacos中。在/script/server/db下的dm.sql下导入即可。在/script/config-center下的config.txt。启动/bin里边的seata-server.bat即可。在多个服务方法汇集到一个方法的这个方法上添加上这个注解。在/conf下的application.yml。在涉及到的多个服务方法的服务中修改yml。

2023-12-19 23:01:02 2877 2

原创 记录每日LeetCode 162.寻找峰值与1901.寻找峰值II Java实现

峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 ma

2023-12-19 20:48:20 481

原创 记录每日LeetCode 746.使用最小花费爬楼梯 Java实现

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。

2023-12-17 19:23:48 549

原创 多种方式计算当天与另一天的间隔天数 Java实现

这里不会记录纯原生写法,因为现在基本都是被工具类封装好的,所以会记录好用的工具类来简化开发,当然自己可以研究写一个年月日各自做减法的纯原生工具类。

2023-10-26 19:55:57 749

原创 【Spring Cloud】网关Gateway的请求过滤工厂RequestRateLimiterGatewayFilterFactory

关于微服务网关Gateway中有几十种过滤工厂,这一篇博文记录的是关于请求限流过滤工厂,也就是标题中的RequestRateLimiterGatewayFilterFactory。这个路由过滤工厂是。接下来构建两个模块,其中一个是服务模块,一个是网关模块来测试关于请求过滤工厂是否生效。

2023-10-16 13:52:16 1557

原创 【Java Easypoi & Apache poi】 Word导入与导出

如果这里造成了读取resources下的文件返回前端乱码问题:除了HttpServletResponse响应中设置字体问题,还有可能是因为在编译期文件就已经乱码了,所以需要在pom.xml中增加以下配置。

2023-08-27 17:52:37 1965

原创 【Java alibaba&hutool】JSON、Map、实体对象间的相互转换

首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。

2023-08-24 21:53:30 7842

原创 【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionalOnXxx

Spring 4.0+提供的注解。作用是给需要装载的Bean增加一个条件判断。只有满足条件才会装在到IoC容器中。而这个条件可以由自己去完成的,可以通过重写Condition接口重写matches()方法去实现自定义的逻辑。所以说这个注解增加了对Bean装载的灵活性。关于@ConditionalOnXxx注解是在SpringBoot中拓展出来的,是原先Spring框架中没有存在的注解。那么以下就逐一去了解每个注解的作用。需要说的是这些注解全部都可以注解在类、接口、枚举和方法上。

2023-08-20 14:57:46 1473

原创 【Java设计模式】建造者模式 & 注解@Builder

使同样的构建过程可以创建不同的表示。它使将一个复杂的对象分解成多个简单的对象,然后一步步构建而成。每一个具体建造者都相对独立,而与其它的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。由于指挥者类针对抽象建造者编程,增加新的具体建造者无须修改原有类库的代码,系统扩展方便,符合“开闭原则”。

2023-08-06 15:18:40 1670

原创 【Spring AOP】结合日志面向切面编程 两种写法

这里需要提前了解什么是Spring的AOP(Aspect Oriented Programming)。是在OOP(面向对象)思想的一种拓展思想。。笔者先前学Spring也有学什么IoC啊AOP啊,但实际上没有用过、就那听过学过没啥用的。。没会儿就忘记了。那种也就是个了解,好像知道是个什么事儿?当时还特地去背关于AOP的那几个专有名词?现在想想有点好笑。不过还是需要提前巩固知道几个词。看完了下面的这三个词的用法就开始进入模拟实战。(Aspect):由切点和通知组成。即使用@Aspect注解的类。

2023-08-05 16:00:31 800

原创 【Spring】ApplicationEventPublisher 发布订阅模式

关于这个词,其实不仅仅出现在Spring框架当中,其实在Redis中也有存在(其对应的是convertAndSend()方法),还有在MQ消息队列里也是有的,但这里就主要介绍的是关于Spring框架的ApplicationEventPublisher如何做到消息的发布与订阅。随着现在的业务量和需求量越来越大,其实基本都是分布式微服务集群的使用了,所以基本都是用到Redis与MQ。但是对于单体Spring Boot应用时,用Spring自带的发布订阅就已经绰绰有余了。。

2023-07-24 17:29:18 727

原创 【Java基础】note序列化

Java进程通信的时候使用序列化实现对象之间的传递。

2023-06-20 17:36:56 157

原创 【SpringBoot】整合Elasticsearch 操作索引及文档

踩坑太多了。。。这里表明一下Spring Boot2.4以上版本可能会出现问题,所以我降到了2.2.1.RELEASE。对于现在2023年6月而言,Es版本已经到了8.8,而SpringBoot版本已经到了3.x版本。如果是高版本的Boot在配置类的时候会发现RestHighLevelClient已过时。从官网也可以看的出来RestHighLevelClient已过时。所以这篇博文中不会用到关于RestHighLevelClient的Api。。

2023-06-16 15:26:23 3838 5

原创 【Linux Ubuntu】Docker部署 ELK全家桶 镜像环境

以上是无需账号密码的情况下的Elasticsearch的配置。接下来我就需要做一下关于要账号密码登陆的笔记。首先进入先前创建好的 es_docker/config/elasticsearch.yml中进行修改。注:高版本的Elasticsearch似乎不支持此可视化了。先查看正在运行的容器id。再docker exec -it /bin/bash。这里如果配置了Elasticsearch的账号密码的话需要验证。需要注意的时,进去后需要12次密码,其中6次设置6次确认。

2023-06-11 13:36:13 1862

原创 【Elasticsearch】结合Postman/ApiPost 快速入门

相比于MySQL那种关系型数据库,是采用正排索引,也就是根据主键去找其对应的行数据。而Elasticsearch这个NoSQL,是采用倒排索引,根据输入的某值返回其它整行的数据。而Elaticsearch是采用风格的数据库访问,以下就是测试案例。

2023-06-10 15:32:51 1794

原创 记录每日LeetCode 2465.不同的平均值数目 Java实现

1. 删除 0 和 5 ,平均值是 (0 + 5) / 2 = 2.5 ,现在 nums = [4,1,4,3]。2. 删除 1 和 4 ,平均值是 (1 + 4) / 2 = 2.5 ,现在 nums = [4,3]。比方说,2 和 3 的平均值是 (2 + 3) / 2 = 2.5。3. 删除 3 和 4 ,平均值是 (3 + 4) / 2 = 3.5。2.5 ,2.5 和 3.5 之中总共有 2 个不同的数,我们返回 2。输入:nums = [4,1,4,0,3,5]计算删除两数的平均值。

2023-06-04 22:44:05 555

原创 【Java基础】note注解

注解在注解上面的注解称为元注解。主要有以下五种。 表明注解存活时间 将注解元素放到Javadoc文档中 注解可以使用到的地方 官方源码:指示批注类型是自动继承的。如果注释类型声明上存在Inherited元注释,并且用户在类声明上查询注释类型,而类声明中没有此类型的注释,则会自动查询类的超类中的注释类型。将重复此过程,直到找到此类型的注释,或者到达类层次结构(Object)的顶部。如果没有任何超类具有此类型的注释,那么查询将指示有问题的类没有此类注释。请

2023-05-31 21:46:01 615

原创 【Java基础】note反射

【代码】note反射。

2023-05-30 23:09:15 184

原创 【Spring源码解读一】IoC容器之AnnotationConfigApplicationContext

根据AnnotationConfigApplicationContext类去阅读其将Bean对象交给IoC容器管理的过程。以下这三个代码块是将配置类注册进IoC容器的例子。下面是关于这个类的继承与实现的类图关系树。首先在进入AnnotationConfigApplicationContext类中会先进入到其父类的静态代码块中,这个问题不大,不用刻意去在意。

2023-05-30 21:25:08 3190

原创 【MySQL】主从复制(两台服务器)

主从复制是将主数据库的(数据定义语句)和(数据操作语句)操作通过二进制日志()传到从库服务器中,然后在从库上对这些日志(也叫重做),从而使得从库和主库的数据保持同步。主库通常称为Master,从库通常称为Slave。

2023-05-28 17:53:16 1577

原创 【Spring Cloud】Feign传递HttpServletRequest

这里我的业务场景是:在请求头中获取服务端登录时传给客户端的token,并且客户端将token放在请求头中。4、被调用方的控制层(Controller)的方法需要是public。3、被调用方的注解后面还需要加扫描路径,对于我本人项目则是@EnableFeignClients(三、在调用方调用Feign接口地方改为请求头中的参数。一、在@RequestMapper/REST风格的请求路径中需要被调用方的。1、需要在调用方以及被调用方以及Feign接口模块引入依赖。2、被调用方与调用方的主启动类均需要加上。

2023-05-17 17:25:10 4524 2

原创 【SpringBoot】MyBatis与MyBatis-Plus分页查询 & github中的PageHelper

笔者写这篇博客是因为近期遇到的关于两者之间的分页代码差距,其实之前也遇见过但是没有去整理这篇博客,但由于还是被困扰了小一会儿时间,所以还是需要。其实会看前后端传参解决这个问题很快、不麻烦。关于这两个框架的分页代码问题主要就是在业务层和MyBatis的SQL问题。这里我不展示前端接口,需要知道的是前端会传给后端以及。后端根据两个参数去实现。

2023-05-08 18:06:06 3534

原创 记录每日LeetCode 2432.处理用时最长的那个任务的员工 Java实现

时间最长的任务是任务 0 和 1 ,处理这两个任务的员工的 id 分别是 0 和 1 ,所以返回最小的 0。返回处理用时最长的那个任务的员工的 id。注意,第 i 个任务在第 (i - 1) 个任务结束后立即开始,且第 0 个任务从时刻 0 开始。时间最长的任务是任务 3 ,而 id 为 1 的员工是处理此任务的员工,所以返回 1。时间最长的任务是任务 1 ,而 id 为 3 的员工是处理此任务的员工,所以返回 3。任务 0 于时刻 0 开始,且在时刻 1 结束,共计 1 个单位时间。

2023-05-05 18:59:34 1334

原创 【SpringBoot】整合RabbitMQ 延迟队列结合业务场景

消息进入队列后不会立即被消费,只有到达指定时间后才会被消费。业务场景就是支付时间内未支付就清除订单或者用户注册一段时间后发短信问候。在这里想说的是这只是一种思想,并不是真正的一种用法,这种思想所需要的用法就是用上以及来实现。

2023-05-02 19:09:45 89

原创 【SpringBoot】整合RabbitMQ 死信队列/死信交换机

DLX(Dead Letter Exchange)死信交换机。当消息成为Dead Message时,可以被重新发送到另一个交换机。这个交换机就是死信交换机。这里主要有两个问题:第一是消息如何判断为死信消息,第二则是消息如何从队列中传到死信交换机。队列消息长度达到限制消费者拒收消息(basicNack()或basicReject),且不把消息重新放回队列(basicNack()方法第三个参数)消息TTL过期和。

2023-05-02 16:49:49 644

原创 【SpringBoot】 整合RabbitMQ 消息单独以及批量的TTL

TTL(Time To Live)存活时间。表示当消息由生产端存入MQ当中的存活时间,当时间到达的时候还未被消息就会被自动清除。RabbitMQ可以设置过期时间也可以(并不是队列,而是队列中的消息)设置过期时间。业务场景就是支付时间内未支付就清除订单。

2023-05-02 15:26:26 1312

原创 【SpringBoot】整合RabbitMQ 消费者限流

消费者限流是用于消费者每次获取消息时限制条数。注意前提是模式。并且在手动确认后才能获取到消息。

2023-05-02 14:36:29 524

原创 【SpringBoot】整合RabbitMQ 消费者确认模式

自动确认是指当消息一旦被消费者接收到则自动确认收到,并将消息从RabbitMQ的消息缓存中移除。如果采用了手动确认方式则需要在业务处理成功后,调用channel.basicACK(),如果出现异常则调用channel.basicNack(),让其自动重新发送消息。注意哈:上面的终端出现了死循环是因为channel.basicNack()方法的第三个参数使其消息重回队列中重新发送,但try的业务逻辑块一直有问题,所以会重复的报错,如果第三个参数是false结果如下。前者用于直接交换机,而后者用于其他交换机。

2023-05-01 14:28:20 1628

原创 【SpringBoot】 整合RabbitMQ 保证消息可靠性传递

经上方两次测试,可以使用ConfirmCallBack与ReturnCallBack来确认消息的可靠性传递。ConfirmCallBack是确认交换机是否可以成功接收到消息,而ReturnCallBack是确认队列是否可以成功接收到交换机发来的消息。这是作为解决作为消息发送方希望杜绝任何消息丢失或者投递失败场景。但需要注意的是在yml中必须添加两行配置。

2023-05-01 12:05:25 1394

原创 【MyBatis-Plus】@TableField详解

这是MyBatis-Plus框架中的一个注解,用于实体类的属性上,此注解的方法有以下内容,针对以下十四种属性,这里主要说明其常用到的三种属性。 在学习半自动ORM框架MyBatis中,我们要么使用ResultMap或者在配置中使用驼峰命名规则来让数据库的字段和实体类的属性名对应。而在全自动ORM框架的MyBatis-Plus中就是使用value属性来完成这项操作的。(注:忘了的可以看我之前整理的MyBatis框架笔记)

2023-04-06 19:37:48 5182

原创 【JUC线程池】ExecutorService以及Executors线程池类型

线程池创建concurrent是Java的并发包。我认为当我们了解关于Java的多线程,就应该知道线程池从何而来:是为了解决在的环境下,对于下所以才会有线程池的概念。所以第一部就要先了解如何创建线程池。线程池创建初次了解线程池肯定会了解到ThreadPoolExecutor类,其内部有四种有参构造方法均是为了创建线程池。接下来主要示范的是七个形参的构造方法。:如果创建的线程数未达到指定的核心线程数,则会继续创建新的核心线程数达到指定值,而后创建的线程均不为核心线程,而是非核心线程。

2023-03-28 18:26:56 829

空空如也

空空如也

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

TA关注的人

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