自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 idea遴选代码发生commit <hashId> is a merge but no -m option was given. cherry-pick failed解决

push代码时与远程分支其他人的分支起了冲突,并进行了合并,此时该提交在idea git 提交界面显示灰色,这是因为合并冲突后提交,导致了两个父提交,需要提供 -m 选项来选择遴选的父提交。(2)使用 git cherry-pick -m (1)使用 git show 查看所有父提交。

2024-03-26 18:14:37 373 1

原创 SpringBoot接入Google Guava异步事件库方法

Service@Slf4j@Override@Service@Slf4j/**@Subscribe:订阅事件发布,当发布事件为Event类型及其子类时,该方法会被执行Event:自定义类,可放入业务数据@AllowConcurrentEvents:该方法可异步执行*/@Subscribe// 消费事件log.info("接收到消息,data:{}", event.getData());...// 注入事件发布总线@Autowired。

2024-02-21 17:18:09 447

原创 Java开发笔记

注意:如果你的项目已经引入了spring-boot-starter依赖,那么就不需要重复引入,spring-boot-starter已自带jackson。(1)业务场景:接收前端传输过来的json串,需要将其写入数据库,写入之前需要校验其是否能够转换成对应实体类,以便后续从数据库读取。中的反序列化工具,当字符串不符合json格式或出现实体类中不存在的字段时,会报错。json3格式正确且User类均包含该json所有字段,校验通过。json1多出了一个age字段,校验不通过。json2格式错误,校验不通过。

2024-01-15 22:09:21 533

原创 Java socket编程学习笔记

4、解决方法:需要关闭流的同时,不关闭socket,可使用Socket::shutdownOutput()方法和Socket::shutdownInput()方法实现。5、原因:分析代码,未对socket进行关闭,但是客户端在通信完成前提前关闭了out流,服务端提前关闭了in流,查询资料得知关闭流会导致socket关闭。但是在socket中,只有当对方将输出流关闭后才会以-1作为结束标志,故而陷入死循环,推断正确。3、原因:分析代码,服务端没有打印出客户端发送消息,猜测是以下代码陷入死循环。

2024-01-07 16:57:11 477

原创 Spring boot接收zip包并获取其中excel文件的方法

【2】ZipInputStream实例调用该方法后,将会指向获取到的条目,这是使用ZipInputStream实例操作的就是获取到的ZipEntry对象。工作中遇到一个需求,接收一个zip包,读取其中的excel文件并处理,减少用户多次选择目录和文件的痛点,该zip包包含多级目录。二者是在内存中处理字节的IO流,相较于在磁盘中处理数据的IO流更快,在内存中处理数据也符合业务需求。【1】该方法可获取到zip包内的各级目录及各级目录下的文件,并不需要进行递归处理。

2023-09-27 00:14:33 718 1

原创 Java操作符学习笔记

和 &&、|| 和 | 其实是两种操作符。这让我一直将单个 & 和 | 当成时逻辑操作符的一种,而事实上这两是按位操作符,是将两个布尔类型值的二进制表示进行按位运算,只不过将布尔类型按位运算后的结果与逻辑操作符一致,而按位运算自然不会有短路作用。之前理解出现错误,特此记录。因此,对于上述3个类型和int类型进行位运算时,想要 i >> a (或 i << a)中,右侧a的值精确生效,则需要控制在[0,31]之间(int类型最多32位),超过这个区间,则取a的二进制表示中的最低5位作为有效值进行位移。

2023-09-03 23:05:22 486

原创 给前端返回http链接,由于浏览器缓存不能获取到最新资源怎么办?

今天在工作中接到这样一个需求,接收前端的图片文件并上传到远程,将原有图片覆盖并返回一个http链接以供前端展示。用户使用后反馈没有修改成功,上了远程拉图片发现已经修改了,但是用户浏览器还是老的图片。排查原因是浏览器存在缓存,虽然资源已经改变但是浏览器对同一个http链接还是使用了缓存里的老数据。解决方法也很简单,只需要在不改变访问地址的前提下改变http链接的内容,这样就是一个新的http链接,但是地址是正确的。

2023-08-31 00:10:57 294

原创 并发下如何使用redis存储列表数据

开发中的一点小心得,记录一下

2023-08-11 00:49:01 455

原创 Java:Map的getOrDefault()方法结果仍为null

工作中使用Map的一个小坑

2023-08-02 21:36:19 693

原创 linux日志信息查询技巧(日常记录)

grep ‘关键字’ 日志文件路径 如:grep ‘key’ /data/logs/info.log。关键字是支持正则表达式的,如果想进行模糊匹配。如果知道一个关键字,想获取这个关键字的上下文信息的时候,就可以使用。时,就可以采用管道的方式,在关键字1的筛选结果上继续筛选关键字2。把所有包含关键字key的行输出到1.txt这个文件中。在key1筛选结果中筛选key2并只显示key2。当我们筛选日志文件中含有某个关键字的。如果想再进一步筛选另一个关键字,即。多显示筛选到行前面1行和后面一行。

2023-04-09 01:29:36 1419 1

原创 count()函数的执行效率分析

count()函数应该怎么用?这篇文章可以帮助到你

2022-05-06 22:16:00 1088 1

原创 数据明明不多,为什么表占用很大

学习心得

2022-05-05 22:14:11 2374

原创 MySQL刷页的时机

在上一篇文章《MySQL的日志系统》中,介绍了redo log的作用。由于内存中的数据不稳定,为了数据安全,必须保证每次修改都能持久化到硬盘中,但是对于硬盘中的记录进行修改需要随机IO,效率非常低。为了解决这个问题,InnoDB引入了redo log,记录每次修改的页及具体修改的数据,对redo log的写是顺序写,比起随机IO要快上许多。InnoDB会在合适的时机再将这些修改后的数据真正持久化到硬盘中的数据库表中,这个合适的时机就是本文要探讨的问题了1. 合适的时机redo log写不下了。由于

2022-05-04 22:03:08 731

原创 唯一索引和普通索引应该怎么选?

1、查询对比假设有一个表T,有索引字段idx,执行下面的语句:select * from T where idx = 5;对于唯一索引,首先会根据B+Tree根节点进行搜索,定位到idx = 5这一条记录所在页并读入内存,由于字段值唯一,因此不需要对下一条记录进行判断,直接返回即可;对于普通索引,在拿到第一条idx = 5的记录后,还需要对后续记录进行判断,直到idx != 5对比两者的消耗,虽然普通索引需要对后续的记录进行判断,但由于读入的是一整个数据页,大部分情况下后续需要判断的记录也

2022-05-01 23:07:29 468

原创 synchronized锁升级的过程

1、synchronized实现的基础(1)synchronized是基于Java引用类型的对象实现的,使用时需要指定一个引用类型对象作为锁。(2)当synchronized修饰在方法上时则可以不显式指定对象,修饰静态方法时默认使用的是该类的class对象,修饰在实例方法上时则默认使用当前对象。(3)synchronized的锁升级是基于锁对象头中的Mark World部分。Mark World的设计十分精妙:在非加锁状态时用于存储对象的哈希码和分代年龄以及锁状态;在加锁状态时原先存储哈希码和分

2022-05-01 19:34:09 1469

原创 快照在MVCC里是怎么工作的?

1、可重复读是怎么实现的?这是一道高频面试题,大多数人接触这个问题时都会被告知是在事务开始时,基于当前数据创建了一个临时视图,后面的读操作都是在这个视图上进行的。但这只是个笼统的说法或者说一个形象的比喻,没有涉及到视图的存在方式和实现原理,是应付不了面试官的。想要回答这个问题,就必须了解MVCC的工作机制2、MVCC维护快照视图的方法MVCC又叫多版本控制机制,顾名思义,它是用来控制多个版本的数据的。在MVCC的模型中,每一行数据都是有不同的版本的,事务根据数据的版本号可以确定哪个版本对当前事务是可

2022-04-29 19:03:16 364

原创 为什么有时候MySQL会放弃索引而选择全表扫描?MySQL之联合索引和覆盖索引

介绍MySQL联合索引和覆盖索引的联系及特点

2022-04-28 16:30:59 2050

原创 MySQL日志系统作用及同步问题

1、MySQL的日志分类MySQL的结构大体可以分成Server层和存储引擎层,Server层负责语法分析和逻辑处理,而存储引擎则负责数据的读取与写入。而日志也相对可以分两种,其中Server层的日志是固定的,而存储引擎有多种,有的存储引擎不具备日志,本次探讨的是使用Innodb存储引擎时的日志使用情况。binlog:又名归档日志,它是Server层的日志,用于记录逻辑修改,具体是记录修改了那一条记录的哪些字段;一共有两种模式,statement 格式的话是记sql语句, row格式会记录行的内容,记

2022-04-26 18:50:26 994

原创 数字在计算机中的表示

1、计算机中表示数字的方式在计算机中,数字是采用二进制表示的,在大部分开发语言中,通常使用8位、32位、64位二进制来表达数字(1) 可以表示的数字数量一个二进制位可以有1和0两种取值,我们令用来表示数字的二进制数字为n,那么可以表示的数字数量就是2^n个,如使用8位二进制来表示数字,那么可以表示的数字数量为:2^8 = 256个(2)如何区分正负数字有正负之分,通常采用最高位来表示一个二进制串所表示的数字正负,最高位为1时数字是负数,最高位为0时,数字是正数或0(3)具体的表示例子以八位二进

2022-04-20 21:54:56 3256

原创 MySQL中的行锁

实验mysql行锁的加锁规则,版本为5.7.36

2022-04-19 21:57:57 7558 3

原创 Java垃圾回收中的原始快照和增量更新

JAVA垃圾回收机制的一点理解,知识来源与深入理解JAVA虚拟机第三版,权当抛砖引玉

2022-04-06 21:58:13 861

原创 互斥锁与CAS的开销对比

锁机制学习笔记

2022-04-03 22:04:45 383

原创 jdk动态代理学习心得

1、什么是动态代理动态代理是一种在运行期生成字节码文件,来对被代理对象执行的方法进行增强的一种机制。比如说有一个我们有一个需求要调用对象A的method方法,使用动态代理增强的步骤如下:1、调用动态代理类提供的方法,将A作为参数传入,获得代理对象B2、使用B调用method方法,此时代码的执行结果就是代理类增强后的结果了2、jdk动态代理的实现步骤1、jdk动态代理的核心:接口InvocationHandler和类Proxy2、定义一个类MyHandler实现InvocationHand

2022-03-30 17:31:01 519

原创 String的intern方法探寻

有关String的intern方法的随笔

2022-03-25 11:46:53 371

原创 面试题:String为什么要用final修饰,有什么好处

String为什么被final修饰是常见的面试题,本文从底层入手,解释该问题

2022-03-06 22:12:03 4814 3

原创 为win10配置多个jdk的方法

1.下载jdk选择你所需要的jdk下载并安装下载地址:https://www.java.com/zh-CN/2. 打开环境变量窗口右键此电脑,打开属性点击高级系统设置点击环境变量接下来的设置都在系统变量这里配置3. 配置jdk的环境变量首先需要为两个jdk指定安装目录,博主的两个jdk版本分别是8和17,因此配置两个变量,指向jdk安装目录,用数字区分他们点击创建,输入变量名和变量值然后再用同样的方法配置JAVA17_HOME接着就是正式

2022-02-21 14:30:40 2270

原创 力扣构建二叉树的算法

1、背景力扣相信大家都很熟悉,练习算法时大部分人都会选择该网站刷题。但是力扣的调试功能需要开通会员,为了方便调试,我写了一个算法用于构建二叉树,经多次测试,与力扣构建树的方法一致,如下:public class TreeNode { public TreeNode left; public TreeNode right; public Integer val; public TreeNode() { } public...

2022-01-23 17:06:02 858

原创 minio实现STS签名服务

1、背景 在上一篇中:Docker部署Minio并与Springboot的集成_木星mx的博客-CSDN博客我们介绍了如何部署minio和与springboot的集成方法,但是在上传文件时,采用的是从浏览器获取参数读取本地文件上传,当项目部署到线上时,用户和项目服务处于不同机器上,这种方式就不适用了,因此需要进行升级。 升级后的效果是:项目服务只提供签名服务,用户通过访问项目提供的接口获取签名,然后用户使用签名上传文件,实现了用户到oss端对端的文件传...

2022-01-11 17:12:23 3675 3

原创 刷题日记:正则表达式的匹配

1、题目请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa"p = "a...

2022-01-09 11:05:21 382

原创 Docker部署Minio并与Springboot的集成

1、简介开发项目时需要用到对象存储功能,而minio是github上一款开源的提供对象存储服务的项目,使用go语言开发,如果不想花钱购买主流大厂的对象存储服务(虽然不贵),可以参考本文的配置,在docker部署minio并将其集成到springboot项目中2、docker部署minio 关于minio的部署与使用可参照官方文档:MinIO | The MinIO Quickstart Guide,虽然minio有中文文档,但是很多都不准确,建议直接啃英文文档,也可参照博主的操作...

2022-01-08 16:35:10 1712

原创 解决没有配置本地nacos但是一直发生localhost:8848连接异常的问题

简介事情是这样的,为一个项目配置了注册中心nacos,一开始配置的是本机的nacos服务,后面将nacos地址改为虚拟机后,项目虽然启动成功,但是报nacos异常,如下:一共有两个配置文件:分别配置了:可以看到根本没有关于localhost:8848的配置,但是还是报了localhost:8848的异常,打开虚拟机的nacos可视化界面,发现服务已经注册到虚拟机的nacos中了出现问题的版本为:<!-- 注册中心-nacos--><...

2022-01-04 21:50:26 12705 2

原创 开发日记:spring cloud gateway网关服务和解决跨域

1、背景在前后端分离的微服务项目中,前端给后端发送请求都是从一个配置好的默认路径发送给对应服务的如renren-fast-vue,在项目的staic/config/index.js文件中,我们可以观察到默认路径如下:;(function () { window.SITE_CONFIG = {}; // api接口请求地址(默认路径) window.SITE_CONFIG['baseUrl'] = 'http://localhost:8080/renren-fast';...

2022-01-04 10:59:16 1038

原创 开发日记:stream入门,树形菜单功能的实现及bug修复

1、需求:有一个菜单表,字段catId用于唯一标识每一条记录,每一条记录代表一个菜单项;另有parentCid用于记录该记录的父级菜单,现需为每个菜单绑定他们的子菜单,表结构如下CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id', `name` char(50) DEFAULT NULL COMMENT '分类名称', `parent_cid` bigint(2...

2022-01-03 16:03:34 390

原创 JAVA解决约瑟夫环编程题

1、题目给定一个包含n个数的序列[0, n - 1],每次删除第m个数,直到只剩下一个数,求最后剩下的数2、分析 1、设求解规模为n的问题函数为f(n, m),由于f(1, m)的结果固定为0,考虑从f(1)开始递推后续结果,首先需要找出f(n, m)与f(n - 1, m)之间的对应关系 2、对f(n, m)问题求解时,先删去第一个数字,得到以k = m % n为起点,数量为n - 1的数字环,令这个数字环的求解结果为f '(n -...

2022-01-02 18:30:58 205

原创 1月2日刷题日记:消除游戏,等差数列模拟

题目:链接:​​​​​​​力扣列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。请你对 arr 应用下述算法:从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。给你整数 n ,返回 arr 最后剩下的数字。举例:n = 9起始:1 2 3 4 5 6 7 8 9第一轮:2 4 6

2022-01-02 09:46:50 1533

原创 开发日记:解决Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource

背景springboot项目运行时,出现以下错误原因分析项目中引入了mybatis-puls依赖,springboot是约定大于配置,必须对数据源进行配置,否则无法启动项目解决这里提供两种解决方法:1、如果该项目需要使用mybatis-plus,那么配置文件中加入数据源spring: datasource: username: root password: 666 url: jdbc:mysql://127.0.0.1:3306/pms

2022-01-01 22:09:03 1085

原创 开发日记:解决Cannot resolve org.springframework.boot:spring-boot-starter-test:2.3.2.RELEASE

1、背景在引入spring cloud gateway(网关服务)时,报了:Cannot resolve org.springframework.boot:spring-boot-starter-test:2.3.2.RELEASE所用spring系列版本如下,是官方推荐毕业版本:起初以为是官方推荐版本出错,几经斟酌之下决定相信官方,于是从pom文件入手,<project>发现报了以下错误:打开ma...

2022-01-01 21:54:34 4151

原创 开发日记:docker部署nacos,启动成功但是访问失败解决

首先,观察下面的创建容器命令:docker run -p 8848:8848 --name nacos -d nacos/nacos-server这条命令创建的容器可以启动但是无法访问,原因是没有指定nacos的启动方式,需要设定以什么模式模式启动才能访问所以,设置以单机模式启动:docker run -p 8848:8848 -e MODE=standalone --name nacos -d nacos/nacos-server加粗部分即为设置单机模式启动,需要特别注意的是:

2021-12-31 22:22:38 16013 1

原创 开发日记:将Nacos注册成windows服务

1、插件下载 地址:Releases · winsw/winsw · GitHub选择下面这个插件:2、配置文件和插件安装1、在nacos解压包的bin目录下创建nacos-service.xml文件 2、在nacos-service.xml输入以下内容:<?xml version="1.0" encoding="UTF-8" ?> <servic...

2021-12-31 15:10:59 1380

原创 开发日记:分布式项目的maven工程管理方法

1、背景在分布式架构中,一个系统的业务会划分成多个模块实现。如商城系统的商品服务和仓储服务分别由商品模块和仓储模块实现。一个模块也即一个工程项目,我们需要对这些模块所需依赖进行同一管理,好处如下:1、简化配置过程:进行一次配置就可以让全部项目都引入这些依赖2、避免版本冲突:所有模块的相同依赖使用同一版本,避免冲突2、方法实现同一管理的方法有两种:父工程和聚合工程1、父工程方法创建一个父工程,让子模块用<parent></parent>标签引入该工程,所需依

2021-12-30 16:37:00 434

空空如也

空空如也

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

TA关注的人

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