自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hadoop和Spark常用端口号

Hadoop和Spark常用端口号总结

2023-04-10 21:31:14 528 1

原创 Eureka与Nacos的区别

Nacos与Eureka的区别与联系

2023-01-09 20:16:15 578

原创 两个数组有序A,B,如何去找到数组A,B中两个相同的元素?

两个有序数组找重复元素

2022-09-12 22:24:55 942 3

原创 KMP 算法Next数组

KMP算法Next数组

2022-09-12 16:50:46 1314

原创 MySQL大表优化方案

大表优化

2022-07-30 00:37:08 1215

原创 跳表与红黑树

跳表与红黑树

2022-07-27 00:26:49 2037 1

原创 用友7.25笔试 算法复盘

7.25 用友算法复盘

2022-07-25 22:08:04 157 1

原创 一个类中的两个方法都加了同步锁,多个线程能同时访问这个类的两个方法吗?

同步锁

2022-07-23 15:15:27 353

原创 leetcode 448. 找到所有数组中消失的数字

leetcode 448. 找到所有数组中消失的数字

2022-07-22 16:58:28 127

原创 Is It A Tree?

Is It A Tree

2022-07-17 23:06:39 131

原创 leetcode 128.最长连续序列

Leetcode 128. 最长连续序列

2022-07-17 22:43:33 61

原创 字符串旋转

算法:字符串反转

2022-07-17 22:35:41 154

转载 Hot Key 和 Big Key 引发的问题怎么应对

Redis Big Key Hot Key

2022-07-16 14:17:32 211

原创 EasyPoi的使用案例

EasyPoi

2022-07-11 20:45:40 440

原创 Java中的锁,以及其区别

Java中的锁

2022-07-11 17:44:21 320

原创 LeetCode 301场周赛 6114. 移动片段得到字符串

LeetCode 301场周赛

2022-07-10 22:24:34 125

原创 Leetcode 301场周赛 6113. 无限集中的最小数字

LeetCode 301场周赛

2022-07-10 21:10:46 81

原创 leetcode 301场周赛 6112 装满杯子需要的最短总时长

leetcode 301场周赛

2022-07-10 21:06:23 146

原创 leetcode 课程表II

拓扑排序

2022-07-09 11:12:58 136

原创 Redis的VM机制

redis vm 机制

2022-07-04 16:54:28 484

原创 leeetcode 205. 同构字符串

双射,字符串转换

2022-06-30 23:01:04 87

原创 LeetCode1153 字符串转化

字符串转化

2022-06-30 21:50:39 642

原创 BIO,NIO,AIO总结

BIO,NIO,AIO 总结

2022-05-31 20:57:02 123

原创 leetcode 递增子序列

题目给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。示例 1:输入:nums = [4,6,7,7]输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]示例 2:输入:nums = [4,4,3,2,1]输出:[[4,4]]提示:1 <= nums

2022-05-23 17:32:48 174

原创 欧拉回路 Hierholzer算法

导读今天在刷leetcode时,遇到了欧拉回路的问题,之前没遇到过,这里做个笔记。欧拉回路与欧拉通路欧拉回路: 遍历所有边一次且行遍所有顶点的回路欧拉通路: 遍历所有边一次且行遍所有顶点的通路欧拉图: 具有欧拉回路的图半欧拉图: 具有欧拉通路的图判定条件欧拉图: 每个点度数都为偶数,相当于很多个环交叉起来。半欧拉图: 仅有两个点度数为偶数,相当于一条边连着两个欧拉图。Hierholzer算法Hierholzer 算法用于在连通图中寻找欧拉路径,其流程如下:从起点出发,进行深度优先

2022-05-23 16:04:56 355

原创 Synchronized锁升级、降级

多线程中锁的升级synchronized锁升级原理:在锁对象的对象头里面有一个threadid字段,在第一次访问的时候threadid为空,jvm 让其持有偏向锁,并将threadid 设置为其线程id,再次进入的时候会先判断threadid是否与其线程id一致,如果一致则可以直接使用此对象,如果不一致,则升级偏向锁为轻量级锁,通过自旋循环一定次数来获取锁,执行一定次数之后,如果还没有正常获取到要使用的对象,此时就会把锁从轻量级升级为重量级锁,此过程就构成了synchronized 锁的升级。锁的升级的

2022-05-20 22:49:01 2277

原创 布隆过滤器的原理和实现

导读想象一下遇到下面的场景你会如何处理:手机号是否重复注册用户是否参与过某秒杀活动伪造请求大量 id 查询不存在的记录,此时缓存未命中,如何避免缓存穿透针对以上问题常规做法是:查询数据库,数据库硬扛,如果压力并不大可以使用此方法,保持简单即可。改进做法:用 list/set/tree 维护一个元素集合,判断元素是否在集合内,时间复杂度或空间复杂度会比较高。如果是微服务的话可以用 redis 中的 list/set 数据结构, 数据规模非常大此方案的内存容量要求可能会非常高。这些场景有个共同

2022-05-20 15:57:41 322

原创 Redis哨兵模式

哨兵的作用哨兵是redis集群架构中非常重要的一个组件,主要功能如下:集群监控:负责监控redis master和slave进程是否正常工作消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员故障转移:如果master node挂掉了,会自动转移到slave node上配置中心:如果故障转移发生了,通知client客户端新的master地址哨兵的核心知识故障转移时,判断一个master node是宕机了,需要大部分的哨兵都同意才行,涉及到了分布式

2022-05-20 14:21:02 288

原创 leetcode 存在重复元素 III

问题给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。示例 1:输入:nums = [1,2,3,1], k = 3, t = 0输出:true示例 2:输入:nums = [1,0,1,1], k = 1, t = 2输出:true示例 3:输入:nums = [1

2022-05-19 22:24:30 261

原创 Redis RDB 和 AOF

导读RDB 和 AOF 对比:持久化方式选择如果对数据安全性要求极高,应该同时使用两种持久化方式。如果可以承受若干时间内的数据丢失,可以只使用 RDB 持久化。不建议只使用 AOF 持久化,因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份,并且 RDB 恢复数据集的速度要比 AOF 恢复的速度要快。RDB 和 AOF 的恢复优先级如果 Redis 同时使用 RDB 和 AOF 持久化,Redis 会优先使用 AOF 进行恢复数据。在启动 Redis 时,如果已经存在了

2022-05-18 17:50:18 750

原创 RDB持久化触发机制

RDB持久化触发机制手动触发手动触发分别对应save和bgsave命令:save命令:同步,在主线程中保存快照;阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用;bgsave命令:异步,Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。堵塞只发生在fork阶段,一般时间很短;BGSAVE命令是针对SAVE堵塞问题做的优化。因此Redis内部所有的设计RDB的操作都采用BGSAVE的方式,而sav

2022-05-18 16:50:50 477

原创 mybatis如何防止SQL注入?

sql注入发生的时间,sql注入发生的阶段在sql预编译阶段,当编译完成的sql不会产生sql注入一、采用jdbc操作数据时候String sql = "update ft_proposal set id = "+id;PreparedStatement prepareStatement = conn.prepareStatement(sql);prepareStatement.executeUpdate();preparedStatement 预编译对象会对传入sql进行预编译,那么当传入.

2022-05-17 22:59:56 8375

原创 Redis配置文件解析

导读最近在学习Redis,那么首先需要了解的就是Redis的配置文件,弄懂其配置也是接下来学习Redis的基础。配置文件解析################################## INCLUDES(导入) ################################### # 引入其他配置文件include /path/to/local.conf ################################## MODULES(模块) ###############

2022-05-17 21:53:27 252

原创 leetcode 单调栈

下一个更大元素 I题目nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的

2022-05-17 10:22:45 51

原创 split()方法,limit参数作用

String.split()方法是有参数的,limit参数的作用有如下几种情况。limit = 0对结尾处的字符不进行分割String.split(String regex)默认的limit参数为0 public String[] split(String regex) { return split(regex, 0); }String s= "12/13/14//15//";String[] arr = s.split("/",0);Syste

2022-05-13 14:25:49 1657

原创 NC 113 验证IP地址

题目编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(“.”)分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (“:”)分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个

2022-05-13 14:03:22 116

原创 5.11华为笔试复盘

导读昨天参加了华为的上机笔试,整体感觉有点难,第一题直接整道hard,着实遭不住,下面就我的笔试情况,和大家谈论一下第一题。题目第一题,送祝福,题目大体意思就是一排人,每个人都有一张带有数字的卡片,大小不重复,如果你的比后面的人大,就要给后面的人送去祝福,最后返回祝福的数组blessing。解题思路大家一看,可以很快想出暴力解法,直接两层for循环,每次判断后面比你小的人有多少,记录count即可。但是毫无意外必定超时(我试了),接下来,我想可不可以利用dp,从后往前遍历,记录每个位置后面比你小的

2022-05-12 11:13:10 885

原创 Redis 乐观锁(CAS)

导读乐观锁介绍:watch指令在redis事物中提供了CAS的行为。为了检测被watch的keys在是否有多个clients同时改变引起冲突,这些keys将会被监控。如果至少有一个被监控的key在执行exec命令前被修改,整个事物将会回滚,不执行任何动作,从而保证原子性操作,并且执行exec会得到null的回复。乐观锁工作机制:watch 命令会监视给定的每一个key,当exec时如果监视的任一个key自从调用watch后发生过变化,则整个事务会回滚,不执行任何动作。注意watch的key是对整个连

2022-05-12 10:31:32 1845

转载 线程池核心设计与实现

导读线程池是一种通过“池化”思想,帮助我们管理线程而获取并发性的工具,在Java中的体现是ThreadPoolExecutor类。那么它的的详细设计与实现是什么样的呢?总体设计Java中的线程池核心实现类是ThreadPoolExecutor,本章基于JDK 1.8的源码来分析Java线程池的核心设计与实现。我们首先来看一下ThreadPoolExecutor的UML类图,了解下ThreadPoolExecutor的继承关系。ThreadPoolExecutor实现的顶层接口是Executor,顶

2022-05-10 13:12:45 140

原创 线程池结合SpringBoot

导读什么是线程池线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。创建线程本身开销大,反复创建并销毁,过多的占用内存。所以有大量线程创建考虑使用线程池。线程池不用反复创建线程达到线程的复用,更具配置合理利用cpu和内存减少了开销,性能会得到提高,还能统一管理任务比如服务器收到大量请求,每个请求都分配线程去处理,对服务器性能考验就比较大,如果创建5个以上线程考虑使用线程池。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等

2022-05-09 16:59:13 1149 1

空空如也

空空如也

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

TA关注的人

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