自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wtopps的专栏

当你的才华满足不了你的野心时,你应该滚去学习 https://wtopps.github.io

  • 博客(207)
  • 收藏
  • 关注

原创 SpringJPA+Druid配置多数据源

SpringJPA配置多数据源

2024-08-07 17:21:25 369

原创 RestTemplate配置绕过HTTPS SSL证书校验

【代码】RestTemplate配置绕过HTTPS SSL证书校验。

2024-06-19 16:27:11 787

原创 数组中的第K个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入: [3,2,1,5,6,4], k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6], k = 4输出: 4。

2024-06-11 17:51:36 382

原创 Leetcode Hot100 跳跃游戏

本题是一道典型的贪心算法,思路是遍历数组中每一个元素,尝试找到第一个可以跳过终点的元素。每一位元素的跳跃距离就是他自身的数值。可以跳到的最远距离,就是。

2024-06-04 10:51:07 151

原创 Leetcode Hot100 无重复字符的最长子串

随着 end 不断遍历向后,会遇到与 [start, end] 区间内字符相同的情况,此时将字符作为 key 值,获取其 value 值,并更新 start,此时 [start, end] 区间内不存在重复字符。定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值为字符位置 +1,加 1 表示从字符位置后一个才开始不重复。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。我们定义不重复子串的开始位置为 start,结束位置为 end。

2024-05-30 17:42:59 227

原创 Leetcode Hot100 下一个排列

例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。1、我们需要将一个左边的「较小数」与一个右边的「较大数」交换,以能够让当前排列变大,从而得到下一个排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。

2024-05-30 17:04:02 185

原创 Leetcode Hot100 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。最容易理解的中心扩散法,我们记忆这一种解法。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”

2024-05-30 16:46:35 277

原创 Leetcode 从中序与后序遍历序列构造二叉树

1、根据后序结果,可以确到root节点的位置,即后序的最后一个元素。3、确认递归退出条件,当不满足左闭右开,说明没有元素,返回空树。● 中序遍历 inorder = [9,3,15,20,7]2、找到了root节点,去中序就可以确认左子树和右子树。根据一棵树的中序遍历与后序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。

2024-05-15 17:17:09 223

原创 浅析Redis④:字典dict实现

在 Redis 中,dict 是指哈希表(hash table)的一种实现,用于存储键值对数据。dict 是 Redis 中非常常用的数据结构之一,用于实现 Redis 的键空间。在 Redis 源码中,dict 是一个通用的、高性能的哈希表实现,它采用开放寻址法(open addressing)作为冲突解决方案,并且具有良好的性能特征。在 Redis 的源码中,dict 被用于实现 Redis 中的数据库、哈希键(hash key)等数据结构。

2024-04-16 11:13:47 776

原创 浅析Redis③:命令处理之数据返回Client(下)

Redis是如何将数据写回Client端的?

2024-02-02 17:19:09 1196

原创 MySQL InnoDB是如何实现ACID的?

MySQL是如何实现ACID

2024-01-31 16:00:33 1008 1

原创 JVM问题排查手册

内存使用率不断上升,甚至开始使用 SWAP 内存,同时可能出现 GC 时间飙升,线程被 Block 等现象。中添加VM参数(在生产环境请谨慎!top发现JAVA实际占用的RES。

2024-01-25 11:24:56 556

原创 浅析Redis②:命令处理之epoll实现(中)

Redis的非阻塞的核心epoll是如何实现的?

2024-01-24 15:50:07 1269

原创 Dubbo3在k8s下网卡地址注册时引发的问题

在k8s host网络模式下,dubbo3在注册zk时,偶现注册地址IP来回变化的情况,有可能获取的是宿主机IP,有可能获取的是Docker的虚拟IP,host网络模式正常情况下,应该是获取宿主机IP,而不应该获取docker虚拟IP。

2024-01-19 09:55:27 462

原创 浅析Redis①:命令处理核心源码分析(上)

毫无疑问,Redis已经成为我们日常开发中最长使用的缓存数据库,Redis如此高效的原因,是因为采用了非阻塞I/O模型来处理命令请求,这是我们耳熟能详的事情了,那么Redis具体是如何实现非阻塞I/O的呢?Redis是如何接收命令请求,并执行命令,再返回给客户端的呢?我们来一起探究。本篇是Redis源码分析系列的第一篇,我们来一起看一下Redis处理命令的核心实现机制。

2024-01-18 11:01:33 1114

原创 Redis6.0 Client-Side缓存是什么

Redis在其6.0版本中加入了Client-side caching的支持,开启该功能后,Redis可以将指定的key-value缓存在客户端侧,这样当客户端发起请求时,如果客户端侧存在缓存,则无需请求Redis Server端。

2023-12-27 17:07:49 1544

原创 2023.12面试题汇总小结

2023.12 面试题小结

2023-12-10 13:45:58 1034

原创 Redis key过期删除机制实现分析

当我们创建Redis key时,可以通过expire命令指定key的过期时间(TTL),当超过指定的TTL时间后,key将会失效。那么当key失效后,Redis会立刻将其删除么?如果不会,那么何时Redis才将其真正的删除呢?我们来一起一探究竟。

2023-12-06 17:59:30 1130

原创 什么是GraalVM

需要注意的是,GraalVM 的预编译器只适用于一些特定的应用程序场景,例如无状态的函数式服务或命令行工具等,而不适用于那些需要动态修改代码或依赖于动态加载模块的应用程序。需要注意的是,由于每个应用程序都是独特的,因此需要根据具体的应用程序进行评估和调整,以实现最佳的迁移方案。避免使用反射:在 OpenJDK 中,使用反射可以访问或修改私有字段和方法,但是在 GraalVM 中,由于它的 AOT 编译器需要知道所有的代码路径,因此无法动态解析反射调用,这也可能会导致兼容性问题。

2023-12-05 10:13:34 1327

原创 SpringBoot Logback配置文件引入子配置文件

根据子项目中Logback的配置,通过LogPrint类打印的日志,都会打印到指定的文件中,不会打印到主项目的日志文件。核心需要注意的是,子项目的Logback.xml中的配置,需要使用 标签才可以被主项目引入成功。子项目Logback。

2023-12-05 10:09:42 595 1

原创 Apache Druid连接回收引发的血案

minEvictableIdleTimeMillis:最小空闲时间,默认30分钟,如果连接池中非运行中的连接数大于minIdle,并且那部分连接的非运行时间大于minEvictableIdleTimeMillis,则连接池会将那部分连接设置成Idle状态并关闭;那也就是说,如果按照缺省配置,minEvictableIdleTimeMillis 30分钟,maxEvictableIdleTimeMillis 7天,确实可能会出现Druid认为连接还存活着,但MySQL判断空闲时间超过配置,将会回收连接。

2023-11-09 15:52:10 1164 1

原创 Java判断文件是否是图片

【代码】Java判断文件是否是图片。

2023-11-06 16:00:34 516

原创 每天学一个MySQL函数(二):CONCAT_WS

MySQL CONCAT_WS() 函数用来通过指定的分隔符按顺序拼接指定的 2 个或多个字符串,并返回拼接后的字符串。如果拼接的参数中一个为 NULL, CONCAT_WS() 函数会忽略 NULL 值,如果只有一个参与拼接的字符串参数,则原样返回此字符串。

2023-09-15 15:59:56 1606

原创 每天学一个MySQL函数(一):CONCAT

MySQL CONCAT() 函数用来按顺序拼接指定的 2 个或多个字符串,并返回拼接后的字符串。如果您需要使用分隔符连接多个字符串,请您使用 CONCAT_WS() 函数。如果拼接的参数中一个为 NULL, 则返回 NULL。

2023-09-14 17:34:33 346

原创 Skywalking Kafka Tracing实现

Skywalking默认场景下,Tracing对于消息队列的发送场景,无法将TraceId传递到下游消费者,但对于微服务场景下,是有大量消息队列的业务场景的,这显然无法满足业务预期。

2023-08-23 10:45:05 1920

原创 MySQL主键自增有几种模式?

在大多数的业务场景下,我们的数据表的一般会默认使用主键自增长()模式,在执行语句时,MySQL会自动为数据行生成主键ID,保证其单调递增和不重复的。一般情况下,我们很少会关注的策略模型,事实上,InnoDB提供了一个可配置的自增长模型机制,可以显著提高向带有列的表添加记录的SQL语句的可扩展性和性能。本篇,我们就来简要了解一下MySQL InnoDB的主键自增长策略模式。MySQL将操作分为三类:1、插入的记录行数是可以事先确定的。包括最常见的单条、,但不包括2、插入的记录行数是无法事先确定的。包括 ,,

2023-07-11 17:08:41 1149

原创 MySQL为什么有了redolog还需要double write buffer?

我们知道MySQL InnoDB引擎使用redolog作为异常容灾恢复的机制,当MySQL进程发生异常退出、机器断电等,在重新启动时,使用redolog恢复。OK,redolog是被MySQL设计为异常崩溃恢复的,double write buffer同样是为了保证数据完整性,那么既然已经有了redolog,为什么还需要double write buffer(双写缓冲区)呢?

2023-06-09 11:24:16 1938 3

翻译 Redis为什么使用SkipLists实现SortedSets

Redis作者Antirez的解释:id=1171423。

2023-05-23 16:31:19 111

原创 MySQL慢SQL探究

我们在日常开发中,一定遇见过某些SQL执行较慢的情况,我们俗称“慢SQL”,如果你对系统的接口性能要求较高的话,一定不会放过这种SQL,肯定会想办法进行解决,那么,导致慢SQL出现的原因,究竟可能都有哪些呢?这是一道经典的面试题,就此我们来研究一番,下面,我们就来好好看一下,原因可能出在哪里。本篇我们将从如下几个方面进行讨论:1、慢SQL捕获2、执行计划分析3、引擎参数配置分析让我们就此开启本次慢SQL分析之旅,Let’s go!

2023-01-05 09:53:22 2575 2

原创 深入浅出理解ThreadPoolExecutor

在互联网的开发场景下,很多业务场景下我们需要使用到多线程的技术,从 Java 5 开始,JDK中 提供了线程池的实现,线程池就是一个线程的容器,每次只执行额定数量的线程。java.util.concurrent包中提供了线程池类ThreadPoolExecutor类来管理线程,同时提供了工厂类Executors简化线程池的使用。本篇,我们将来详细的理解一下ThreadPoolExecutor的使用方式及其内部核心实现机制,让你明明白白的使用好线程池,Let’s do it!

2023-01-03 16:55:14 323

原创 为什么MySQL 8.0删除了查询缓存

MySQL在其最新的8.0版本中,删除了查询缓存(`Query Cache`)区域,就此,MySQL的`Query Cache`彻底的退出了历史舞台。在5.7版本中,MySQL已经将`Query Cache`的选项(`query_cache_type`)的缺省值设为了关闭,并在5.7.20版本中,将该配置标记为了`Deprecated`。那么MySQL经历这么多个版本的迭代后,为什么会取消该区域?`Query Cache`设计的初衷是什么?

2022-11-07 20:42:03 4914 1

原创 Java判断日期在指定时间段中的第几周

/** * 给定开始时间和结束时间,判断当前时间是第几周,七天为一周,按照自然周进行计算 * * @param startTime * @return */public static int getWeek(long startTime, long currentTime, long endTime) { if (currentTime < startTime || endTime < startTime) { return 0; } Cal

2021-07-28 15:33:26 2423

原创 什么是MySQL MVCC的ReadView?

背景MySQL InnoDB RR隔离级别是否能够避免幻读?我们都知道,在MySQL InnoDB中,支持四种事物隔离级别,分别为:1、READ UNCOMMITED(未提交读):使用查询语句不会加锁,允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2、READ COMMITED(提交读):只能读取到已经提交的数据,只对记录加记录锁,而不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read)。3

2021-06-27 16:02:24 1572

原创 Leetcode Hot100题解——04

7、删除链表的倒数第 N 个结点(Leetcode 19)题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]代码:class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = new ListNode(0); pre.next = h

2021-05-23 21:25:49 357

原创 Leetcode Hot100题解——03

5、三数之和(Leetcode 15)题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = []输出:[]代码:class Solution { public List<List<Inte

2021-05-23 17:29:40 122

原创 Leetcode Hot100题解——02

3、无重复字符的最长子串(Leetcode 03)题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。代码:class Solution { public int lengthOfLongestSubString(String s) {

2021-04-23 18:21:22 124

原创 Leetcode Hot100题解——01

一、两数之和题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。代码:class Solution { public i

2021-04-22 22:20:09 368

原创 MySQL InnoDB RR隔离级别是否能够避免幻读?

背景在MySQL的InnoDB引擎中,支持四种事务隔离级别,分别如下:1、READ UNCOMMITED(未提交读):使用查询语句不会加锁,允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2、READ COMMITED(提交读):只能读取到已经提交的数据,只对记录加记录锁,而不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read)。3、REPEATABLE READ(可重复读):多次读取同一范围的

2021-04-09 14:27:01 761

原创 什么是MySQL数据空洞?

背景MySQL的数据存储在表空间中,有的时候我们删除了一张表的一半的数据,但是发现表空间文件的大小并没有减少,这是什么原因呢?MySQL数据空洞当对一条数据执行delete操作时,MySQL将数据删除后,并未将数据占用的空间返还给操作系统,而是将当前空间标记为"可复用",当有新的数据插入时,则不会重新申请空间,而是插入到"可复用"空间中,这种"可复用"空间,称之为数据空洞。MySQL官方文档对此的解释如下:After deleting a large part of a MyISAM or AR

2021-04-06 17:57:09 1914

原创 浅谈JVM GC三色标记算法

浅谈JVM GC三色标记算法“同学,可以讲一下JVM的GC三色标记算法吗?”“额……这个……这是啥……不了解”这几天逛脉脉,有的网友提到面试的时候面试官问到了JVM GC的三色标记算法,好吧,看来Java面试真的已经是卷的飞起来,都开始问这种问题了……那么今天,我们就来简单聊聊JVM的GC三色标记算法。三色标记算法三色标记法是一种垃圾回收法,它可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的。三色标记可以简洁地描述回收过程中对象状态的变

2021-03-12 18:59:46 1725

空空如也

空空如也

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

TA关注的人

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