自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 下一个更大元素系列(LeetCode 496 & 503 & 556 & 2454)

本文解释了下一个更大元素四道题的详细解法,主要基于单调栈去做,第四题甚至还用到了两个单调栈。这类问题就是为了单调栈准备的,当然单调栈还有一些更加高级的用法,例如和队列结合有单调队列(LeetCode 239,滑动窗口的最大值),用单调栈求最大矩形(LeetCode 42,接雨水)等,有兴趣的读者可以自行去了解。

2026-02-26 14:32:50 911

原创 路径总和系列(LeetCode 112 & 113 & 437 & 666)

本文介绍了路径总和系列四道题的解法,其中1和2比较简单直接DFS可以解决,3主要用到了前缀和,4就是构建树。路径总和3的做法,本质上和560题是一样的,有兴趣的读者可以看看。

2026-01-19 15:48:49 623

原创 LRU & LFU 缓存(LeetCode 146 & 460)

本文详细地介绍了LRU和LFU的底层实现,并提供了对应的代码。实际上,LRU和LFULRU中,对突发性的遍历访问敏感,例如扫描一遍大列表,就很有可能把真正的热点数据挤出去LFU中,初期频率低的热点难以进入长久存在,而长期运行后频率会膨胀,越来越难以淘汰现实会使用改良后的算法,例如W-TinyLFU,结合了滑动窗口、TinyLFU和分段LRU,有兴趣的读者可以自行去了解。

2026-01-14 15:13:25 715

原创 课程表系列(LeetCode 207 & 210 & 630 & 1462)

本文主要介绍了拓扑排序以及三色标记法的实现,在课程表1、2、4都有用到。另外的课程表3是属于反悔贪心,这类题目比较特殊,并不多。附录放上所有题目的链接。

2026-01-08 20:02:55 586

原创 买卖股票的最佳时机系列(LeetCode 121 & 122 & 123 & 188 & 3573 & 714 & 309 & 3652)

本文会介绍一个经典的系列,买卖股票的最佳时机,会介绍对应的思路以及解法。包括:总体思路就是动态规划,买卖股票系列的题目都能用动态规划去解决(除了“按策略买卖股票的最佳时机”,这道题除了题目名字类似,和别的买卖股票题目没有关系)。状态定义为:其中的取值,也就是和天数有关。所有的题目都可以基于这个定义去修改,然后根据题目的要求使用不同的状态转移方程。本文的状态定义都会基于这个去进行修改,这两个状态定义是文章的核心。状态定义为:都初始化为0,由于规定只能买卖一次,并且需要先买之后再卖,所以:最后的答案就是,返回卖

2026-01-04 17:35:54 554

原创 检测相邻递增子数组1 & 2(LeetCode 3349 & 3350)

一种是遍历,时间复杂度O(n),空间复杂度O(1)另一种是二分,时间复杂度O(n log n),空间复杂度O(1)尽管二分的做法更慢,但是提供了另一种思路去解决问题。

2025-10-27 20:10:19 848

原创 执行操作后元素的最高频率1 & 2(LeetCode 3346 & 3347)

枚举+排序+二分差分同向三指针+滑窗三种方法本质上都是基于排序的,但是找到[x-k,x+k]长度的方式各不相同,其中第三种方法由于实现方式简单,容易优化,耗时最短。

2025-10-21 19:56:37 702

原创 解决Manjaro上fcitx5某些图标显示unicode的问题

使用fcitx5输入法,某些图标会显示为unicode。

2025-10-15 11:07:07 192

原创 二叉树前中后序遍历(LeetCode 94 & 144 & 145)

递归法:最常见的方法迭代法:用数据结构stack模拟函数调用栈莫里斯遍历:用前驱节点模拟函数调用栈这三种方法实现起来最难的是莫里斯,但是同时莫里斯也是唯一一个能做到O(1)空间去遍历二叉树的做法。附录上有原题链接。

2025-10-15 10:55:03 951

原创 组合总和(LeetCode 39 &40)

本文主要介绍组合总和1和2的思路和详细解法。

2025-10-13 16:14:30 882

原创 解决MacOS上CLion调试的时候容器的值显示为0的问题

调试的时候,容器(例如等)的值为0,但是普通变量是显示正常值的:手动控制台输入容器的大小确实不为0:入口。没有效果,清除了之后还是一样显示为0。查了一下有可能是没有正确加载的原因,开启路径是,但是该版本并没有这个选项,此路不通。最后解决办法通过更新解决,将更新到最新版:即可正常显示:

2025-10-11 11:42:30 286

原创 mpv添加截图配置

mpv。

2025-09-22 14:22:54 452

原创 常见的非对称加密算法以及Java标准库/三方库示例

RSA发布于1978年发布,是最常用的一个非对称加密之一,标准广泛支持。RSA依赖于大数分解的难题,安全性依赖于位数,目前推荐使用2048位以上。目前已知的问题是有可能被Shor算法破解,该算法能在量子计算机上高效分解大整数,目前还没有出现,只能暴力破解。ECC发布于1985年,也是最常用的非对称加密之一,标准广泛支持。ECCECDH:用于密钥交换ECDSAEdDSA:两者都用于数字签名,其中后者是更现代的算法,推荐使用后者。

2025-09-16 17:37:11 978

原创 常见的对称加密算法以及Java标准库/三方库示例

基本都把常见的对称加密算法都介绍过了,每个算法都有对应的优缺点,需要结合具体场景灵活选择。优先使用AEAD模式避免使用ECB不要使用已淘汰的,例如DES使用标准库或成熟实现Web APIAES-GCMASCONAES-XTSAES-CBCHMAC。

2025-09-16 10:55:24 636

原创 打家劫舍系列(LeetCode 198 & 213 & 337 & 2560)详解

打家劫舍1和打家劫舍2是线性dp打家劫舍3是树形dp打家劫舍4不是dp,打家劫舍4归类到二分同时使用了三种不同的语言解答,不同的语言实现细节上有些不同(比如Go语言,在打家劫舍1里面变量c都能省略)但是核心是相同的。最后附录送上题目链接,有其他疑问可以参考题目的其他题解。

2025-09-01 15:47:52 673

原创 常见的哈希算法以及Java标准库/三方库示例

最常见的一类,包括SHA1SHA2SHA3MD5等。SHA2并不是一个具体的算法,而是一个算法系列。SHA2发布于2001年,是目前使用最广泛的一种哈希算法。算法名称输出长度块大小SHA-224224位512位SHA-256256位512位SHA-384384位1024位SHA-512512位1024位224位1024位256位1024位SHA3是目前最新的一类哈希算法,发布于2015年,相比起SHA2,算法结构完全不一样,是一种全新的算法实现,也能抗长度扩展攻击。BLAKE2是。

2025-08-26 14:17:01 688

原创 全排列问题(LeetCode 46 & 47)

本篇文章主要介绍了全排列问题以及详细的解法。给定一个数组求出其中的全排列。其中的数组,可能带重复元素,也可能不带重复元素。有详细思路以及递归树图解,语言包括C++Java和Go。下面先来看看简单的版本,不带重复元素的。

2025-02-06 14:28:15 700

原创 子集问题(LeetCode 78 & 90)

本篇文章主要介绍了子集问题以及详细的解法。

2025-02-05 17:46:57 1396

原创 解决CLion调试时无法显示变量值的问题

使用CLion。

2024-05-26 11:47:30 1855 5

原创 mpv常用快捷键

mpv是Linux下的一个开源视频播放器,使用Manjaro。

2024-05-26 11:37:19 4169

原创 解决wrong fs type, bad option, bad superblock on /dev/sda1问题

某天挂载硬盘的时候,系统提示了如下错误:在此记录排查过程以及解决方案。

2023-11-12 17:48:14 12449 7

原创 解决XFCE桌面VirtualBox透明背景的问题

笔者用的是ManjaroXFCE的组合,但是在使用VirtualBox时,会出现透明背景的问题:然后发现这其实和Kvantum主题有关。下面将进行设置操作,去修正Kvantum相关配置修复该问题。

2023-11-12 17:30:49 497

原创 Windows11跳过联网激活 & 跳过登陆操作

笔者使用VirtualBox时安装Win11,初始化的配置提示需要注册账户才能进行下一步操作,于是去查了一下发现有办法绕过,方法就是断网+,试了一下发现可以,便有了这篇文章。

2023-11-11 21:48:00 4065

原创 GNOME多显示屏壁纸设置

笔者的设备是笔记本自带的显示屏+外接显示屏,但是GNOME默认好像不能支持多显示屏的壁纸设置:默认的Appearance中的壁纸设置会让两个显示屏都设置成同样的壁纸。

2023-04-09 19:03:17 772

原创 GNOME 桌面顶部栏透明设置

最近换了GNOME桌面,默认的顶部栏不太好看,想要设置成透明的。

2023-04-09 15:32:50 5559

原创 LeetCode 2050 并行课程3

拓扑排序+dp

2023-02-20 02:24:25 369

原创 链式前向星介绍以及原理

链式前向星

2023-02-19 23:03:02 1640

原创 Fastjson2基础使用以及底层序列化/反序列化实现探究

Fastjson2相关探究

2023-02-19 11:27:27 8032 2

原创 解决宏碁非凡S3 安装Win11时无法找到驱动器问题

宏碁非凡S3 找不到驱动器问题解决

2023-01-24 01:30:53 9546 4

原创 Android学习笔记(一):Android基础

Android基础学习

2022-10-12 17:36:09 2616

原创 Linux下Java剪贴板的访问

1 概述本文主要讲述了如何利用xsel在Linux环境下对系统剪贴板的访问。2 起因在搜索引擎直接搜索“Java访问剪贴板”,大部分都是直接使用AWT API进行访问的例子:Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();StringSelection selection = new StringSelection("test");clipboard.setContents(selection, sel

2022-05-11 20:41:09 778

原创 解决Sentinel module java.base does not “opens java.lang“ to unnamed module问题

1 环境Sentinel 1.8.3OpenJDK 17.0.2Manjaro2 问题描述根据官方Github Wiki使用如下命令启动Sentinel:java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar报错截图如下:摘要如下:java.lang.IllegalState

2022-03-14 20:26:53 22734 3

原创 Spring Boot demo系列(十二):ShardingSphereJDBC + MyBatisPlus 分库分表 + 读写分离

1 概述之前笔者写过两篇文章:ShardingSphere 读写分离ShardingSphere 分库分表这里将两者结合起来,实现读写分离+分库分表的功能。关于环境的配置本文将进行简化叙述,详细可以参考前两篇文章。2 环境MySQL 8.0.25(Docker)MyBatis Plus 3.4.3.1MyBatis Plus Generator 3.5.0Druid 1.2.6ShardingSphere 4.1.1Yitter 1.0.6(一个雪花id生成器)3 数据库环境

2021-07-07 14:48:43 1218 1

原创 Spring Boot demo系列(十一):ShardingSphereJDBC + MyBatisPlus 分库分表

1 概述本文主要讲述了如何使用ShardingSphere(其中的Sharding-JDBC)和MyBatisPlus进行分库分表,具体步骤包括:准备数据库环境准备依赖编写配置文件测试2 准备数据库环境2.1 两库六表准备好两个库:test0test1在两个库中分别建立三个字段一样的表:user0user1user2字段如下:这样就准备了两个库以及其中的六个表了。2.2 (可选)MyBatis Plus Generator代码生成表因为MyBatis Pl

2021-07-06 16:24:49 2745

原创 MySQL 主从复制加密以及binlog的加密实现

1 概述本文主要讲述了如何对主从复制的过程中使用SSL进行加密,还有binlog加密(MySQL 8.0.14+)的实现。2 环境MySQL 8.0.25一主一从Docker3 准备容器先拉取镜像并启动:docker pull mysqldocker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql --ssldocker run -itd -p 3307:3306 -p 330

2021-06-26 16:16:04 994

原创 Spring Boot demo系列(十):ShardingSphereJDBC + MyBatisPlus 读写分离 + 主从复制

1 概述本文讲述了如何使用MyBatisPlus+ShardingSphere进行读写分离,以及利用MySQL进行一主一从的主从复制。具体步骤包括:MySQL主从复制环境准备(Docker)搭建ShardingShpere+MyBatisPlus+Druid环境测试2 环境OpenJDK 11.0.11Spring Boot 2.5.1MyBatis Plus 3.4.3.1MyBatis Plus Generator 3.5.0Druid 1.2.6ShardingSpher

2021-06-25 17:58:51 4074 3

原创 Spring Boot demo系列(九):MyBatis Plus Generator代码生成

1 前言MyBatis Plus starter最近更新了3.4.3.1版本,而MyBatis Plug Generator更新到了3.5.0版本,但是官方文档还没有更新生成器的代码,另外在之前的文章里介绍过MyBatis Plus的使用,因此这里补上一篇文章结合Spring Boot介绍代码生成器的使用。2 为什么需要代码生成器使用代码生成器可以生成一些固定模板的代码,比如:Controller层代码Service层代码mapper实体类比如一个User类可以生成如下代码:3 环境

2021-06-25 00:39:55 844 1

原创 Java高并发学习笔记(四):volatile关键字

1 来源来源:《Java高并发编程详解 多线程与架构设计》,汪文君著章节:第十二、十三章本文是两章的笔记整理。2 CPU缓存2.1 缓存模型计算机中的所有运算操作都是由CPU完成的,CPU指令执行过程需要涉及数据读取和写入操作,但是CPU只能访问处于内存中的数据,而内存的速度和CPU的速度是远远不对等的,因此就出现了缓存模型,也就是在CPU和内存之间加入了缓存层。一般现代的CPU缓存层分为三级,分别叫L1缓存、L2缓存和L3缓存,简略图如下:L1缓存:三级缓存中访问速度最快,但是容量最

2021-05-16 19:58:03 338

原创 Java高并发学习笔记(三):类加载

1 来源来源:《Java高并发编程详解 多线程与架构设计》,汪文君著章节:第九、十、十一章本文这三章的笔记整理。2 类加载简介类加载的过程可以简单分为三个阶段:加载阶段:主要负责查找并且加载类的二进制数据文件连接阶段:可以细分为验证、准备、解析三个阶段,验证就是确保类文件的正确性,准备就是为类的静态变量分配内存,并且为其初始化默认值,解析就是把类中的符号引用转换为直接引用初始化阶段:为类的静态变量赋予正确的初始值3 主动使用与被动使用JVM规范规定了每个类或接口在首次主动使用的时

2021-05-15 20:13:00 330

原创 Java高并发学习笔记(二):线程安全与ThreadGroup

1 来源来源:《Java高并发编程详解 多线程与架构设计》,汪文君著章节:第一、二、三章本文是前三章的笔记整理。2 概述3 synchroinzed3.1 简介synchroinzed可以防止线程干扰和内存一致性错误,具体表现如下:synchroinzed提供了一种锁机制,能够确保共享变量的互斥访问,从而防止数据不一致的问题synchroinzed包括monitor enter和monitor exit两个JVM指令,能保证在任何时候任何线程执行到monitor enter成功之前都必须

2021-05-10 20:49:36 341

空空如也

空空如也

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

TA关注的人

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