自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(281)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 看完这篇文章你就可以告诉领导你精通Zookeeper了

一、Zookeeper概述1、概述Zookeeper 是一个开源的为分布式框架提供协调服务的 Apache 项目。在分布式系统中,扮演注册中心的角色。Zookeeper数据模型的结构与Linux文件系统很像,整体上可以看做一棵树,从根节点往下,每个节点称为ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都对应一个唯一的路径,类似于Linux中的文件路径。...

2022-04-04 22:01:25 2176

原创 一些JDK自带的性能分析利器

有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位。这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手。对于此类问题,一般我们都有固定的分析流程。借助于JDK自带的一些分析工具,比如jstack、jmap、jstat一类的命令行工具,除此之外,还有jconsole、mat、jvisualvm这些图形界面分析工具。这篇文章基于JDK8,操作系统是macOS 12.0.11、一些命令行分析工具这些命令行分析工具都在jdk/bin目录下解压jdk/lib/tool.jar可以得

2022-03-20 12:21:27 1701

原创 利用Redis实现防止接口重复提交功能

在划水摸鱼之际,突然听到有的用户反映增加了多条一样的数据,这用户立马就不干了,让我们要马上修复,不然就要投诉我们。这下鱼也摸不了了,只能去看看发生了什么事情。据用户反映,当时网络有点卡,所以多点了几次提交,最后发现出现了十几条一样的数据。只能说现在的人都太心急了,连这几秒的时间都等不了,惯的。心里吐槽归吐槽,这问题还是要解决的,不然老板可不惯我。其实想想就知道为啥会这样,在网络延迟的时候,用户多次点击,最后这几次请求都发送到了服务器访问相关的接口,最后执行插入。既然知道了原因,该如何解决。当时我

2021-12-14 21:59:55 6710 10

原创 使用Docker搭建gitlab服务器及端口映射

用了很久的svn,感觉还是不如git好用。有时候代码升级到正式环境后,出现了紧急bug需要修复,在这期间又提交了新的代码,这种情况下svn想要回滚和pick某些commit就老费劲了。所以就想着在服务器上搭建一个gitlab,方便使用。之所以选择docker的原因是方便,下载镜像就能一键启动,只需要做一下目录挂载即可。本次服务器环境是centos7.31、安装docker# 1、uninstall old versionssudo yum remove docker \

2021-12-10 22:22:17 3821

原创 Zookeeper + Curator实现分布式锁

在分布式系统下,使用Java中的synchronized或者Lock已经不能满足需求了。关于分布式锁的实现,我们可以利用MySQL的唯一索引去实现,也可以利用Redis的SETNX,同样也可以使用Zookeeper的节点唯一路径去实现。(1)线程先去/locks路径下面创建一个带序号的临时节点。(2)判断自己创建的这个节点是不是/locks路径下序号最小的节点,如果是,则获取锁;如果不是,则监听自己的前一个节点。(3)获取到锁后,处理自己的业务逻辑,然后删除自己创建的节点。监听它的后一个节点收到通知

2021-12-06 22:24:22 1031

原创 ReentrantLock源码学习

学习ReentrantLock之前,先了解一下可重入锁的概念。何为可重入锁,顾名思义,就是可重入的。真是听君一席话,胜听一席话啊。正经点,可重入锁就是能够支持同一个线程对资源的重复加锁。注意两个关键字:同一线程和重复。像synchronized关键字也实现了可重入。用synchronized修饰的方法,在进行递归调用时,执行线程在获取了锁之后仍然能够连续多次获得该锁,并不会出现阻塞的情况。再比如说,这篇文章要学习的ReentrantLock,也实现了可重入锁。并且ReentrantLock还支持公平

2021-11-26 17:03:24 579

原创 AQS源码学习

1、AQS介绍AQS全称AbstractQueuedSynchronizer,是一个同步器,用来构建锁或者其他同步组件的基础框架。内部主要使用一个volatile修饰的state变量和一个FIFO双向队列来实现的。 /** * Head of the wait queue, lazily initialized. Except for * initialization, it is modified only via method setHead. Note: * If

2021-11-22 22:32:43 617

原创 HTTPS介绍及加密的过程

http协议可能存在信息窃听或身份伪造等安全问题,使用https通信机制可以有效的防止这些问题。1、HTTP的缺点凡事皆有两面性,http作为应用广泛的通信协议,自然是十分优秀的,但其也存在不足之处:(1)通信使用明文,可能会被窃听。为了保证http传输的高效性,http本身不具备加密功能,所以无法对通信整体进行加密。为了解决这个问题,可以对通信或者内容进行加密。通信加密:可以通过SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security

2021-11-22 21:01:07 1261

原创 实现LRU缓存算法

本文基于LeetCode第146. LRU 缓存机制进行实现。题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则

2021-10-04 22:44:13 263

原创 673. 最长递增子序列的个数

2021-09-20 LeetCode每日一题链接:https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence/标签:数组、动态规划题目给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递

2021-09-20 16:13:38 315 2

原创 162. 寻找峰值

2021-09-15 LeetCode每日一题链接:https://leetcode-cn.com/problems/find-peak-element/标签:数组、二分查找题目峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。示例 1:输入:num

2021-09-15 20:28:37 220

原创 524. 通过删除字母匹配到字典里最长单词

2021-09-14 LeetCode每日一题链接:https://leetcode-cn.com/problems/longest-word-in-dictionary-through-deleting/标签:数组、双指针、字符串、排序题目给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s =

2021-09-14 22:03:45 235

原创 447. 回旋镖的数量

2021-09-13 LeetCode每日一题链接:https://leetcode-cn.com/problems/number-of-boomerangs/标签:数组、数学、哈希表题目给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。返回平面上所有回旋镖的数量。示例 1:输入:points = [[0,0

2021-09-13 20:48:41 217

原创 服务器CPU飙升问题分析

4核的服务器突然很卡,急忙跑上去看看发生了什么事。top命令查看占用率最高的进程pid为12033,top -Hp 12033查看进程下面线程的使用情况这俩罪魁祸首用的最多jstack 12033 > check.txt查看进程的堆栈信息,输出到文件后,通过线程的16进制看看在干啥printf "%x\n" 12035打印16进制,然后在check.txt里面进行搜索0x2f03GC task可以执行jstat -gcutil 进程号 统计间隔毫秒 统计次数(缺省代表一致统计),

2021-09-11 19:08:46 737

原创 分布式系统之CAP理论学习

1、分布式系统中CAP分别代表什么?对它们的理解?CAP即一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。一致性(Consistency):所有节点同时看到相同的数据可用性(Availability):任何时候,读写都是成功的分区容错性(Partition tolerance):当部分节点出现消息丢失或者分区故障的时候,分布式系统仍然能够继续运行CAP理论指在分布式系统中,最多只能同时满足其中两点,不能三者兼顾。2

2021-09-11 18:51:48 957

原创 354. 俄罗斯套娃信封问题

链接:https://leetcode-cn.com/problems/russian-doll-envelopes/标签:数组、二分查找、动态规划、排序题目给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许

2021-09-11 18:43:59 214

原创 470. 用 Rand7() 实现 Rand10()

2021-09-05 LeetCode每日一题链接:https://leetcode-cn.com/problems/implement-rand10-using-rand7/标签:数学、拒绝采样、概率与统计、随机化题目已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1输出: [7]示例 2:输入: 2输出: [8,4]示例

2021-09-06 00:25:11 293

原创 面试题 17.14. 最小K个数

2021-09-03 LeetCode每日一题链接:https://leetcode-cn.com/problems/smallest-k-lcci/标签:数组、分治、快速选择、排序、堆题目设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(

2021-09-03 23:18:08 218

原创 剑指 Offer 22. 链表中倒数第k个节点

2021-09-02 LeetCode每日一题链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/标签:链表、双指针题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链

2021-09-02 19:12:12 194

原创 1109. 航班预订统计

2021-08-31 LeetCode每日一题链接:https://leetcode-cn.com/problems/corporate-flight-bookings/标签:数组、前缀和题目这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seat

2021-08-31 21:11:55 272

原创 881. 救生艇

2021-08-26 LeetCode每日一题链接:https://leetcode-cn.com/problems/boats-to-save-people/标签:贪心、排序、数组、双指针题目第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。示例 1:输入:people = [1,2], limit = 3输出:1解释:1 艘

2021-08-26 20:35:54 188

原创 789. 逃脱阻碍者

2021-08-22 LeetCode每日一题链接:https://leetcode-cn.com/problems/escape-the-ghosts/标签:数组、数学题目你在进行一个简化版的吃豆人游戏。你从 [0, 0] 点开始出发,你的目的地是 target = [xtarget, ytarget] 。地图上有一些阻碍者,以数组 ghosts 给出,第 i 个阻碍者从 ghosts[i] = [xi, yi] 出发。所有输入均为 整数坐标 。每一回合,你和阻碍者们可以同时向东,西,南,北

2021-08-22 22:40:21 203

原创 443. 压缩字符串

2021-08-21 LeetCode每日一题链接:https://leetcode-cn.com/problems/string-compression/标签:字符串、双指针题目给你一个字符数组 chars ,请使用下述算法压缩:从一个空字符串 s 开始。对于 chars 中的每组 连续重复字符 :如果这一组长度为 1 ,则将字符追加到 s 中。否则,需要向 s 追加字符,后跟这一组的长度。压缩后得到的字符串 s 不应该直接返回 ,需要转储到字符数组 chars 中。需要注意的是,

2021-08-21 20:21:42 204

原创 541. 反转字符串 II

2021-08-20 LeetCode每日一题链接:https://leetcode-cn.com/problems/reverse-string-ii/标签:字符串、双指针题目给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例 1:输入:s = "abcdefg", k = 2输出:"bacdfeg"

2021-08-21 00:04:47 192

原创 345. 反转字符串中的元音字母

2021-08-19 LeetCode每日一题链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string/标签:字符串、双指针题目给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’,且可能以大小写两种形式出现。示例 1:输入:s = "hello"输出:"holle"示例 2:输入:s = "leetcode"输出:"leotcede"提示

2021-08-19 21:34:13 615

原创 Vue实现点击按钮进行文件下载(后端Java)

最近项目中需要实现点击按钮下载文件的需求,前端用的vue,因为文件是各种类型的,比如图片、pdf、word之类的。这里后端是可以返回文件的地址给前端的,但我看了下网上各种五花八门的答案,感觉都不是我想要的。因为不确定文件是哪种类型的,所以我们在保存文件到数据库的时候,应该把文件的Content-Type一起存入,这样从数据库取出返回前端的时候,带上Content-Type标识是哪种类型的文件,前端解析即可。1、后端代码这里我先写后端的接口,考虑一下后端需要什么东西。因为文件信息已经提前存入数据库,所以

2021-08-15 08:56:00 2817 2

原创 1583. 统计不开心的朋友

2021-08-14 LeetCode每日一题链接:https://leetcode-cn.com/problems/count-unhappy-friends/标签:数组、模拟题目给你一份 n 位朋友的亲近程度列表,其中 n 总是 偶数 。对每位朋友 i,preferences[i] 包含一份 按亲近程度从高到低排列 的朋友列表。换句话说,排在列表前面的朋友与 i 的亲近程度比排在列表后面的朋友更高。每个列表中的朋友均以 0 到 n-1 之间的整数表示。所有的朋友被分成几对,配对情况以列表

2021-08-14 22:27:57 234

原创 Vue实现多文件上传功能(前端 + 后端代码)

本人业余前端开发,因为公司(很坑)觉得我很牛逼,所以让我前后端一起玩,无奈的我只能磕磕碰碰的研究起了vue。开发项目的时候,用到文件上传的功能很常见,包括单文件上传和多文件上传,上传各种类型的文件。在vue里面要实现多文件上传功能,还是很方便的。本文就一起来学习一下,如何把多文件上传功能封装成一个组件,后面需要使用的时候,直接两三行代码就能搞定。1、前端代码首先我们先看前端,如何把它封装成一个组件。我们在调用它的时候,可能需要从外部传入一些参数给它,所以我们需要定义一些传入参数。这些参数我们可以放到

2021-08-14 11:27:44 28505 15

原创 学习vue过程中遇到的问题

1、vue-quill-editor动态禁用项目中把vue-quill-editor单独封装成了一个组件,通过props传递readOnly参数来设置是否禁用editor。开发中发现可以实现禁用效果,但取决于第一次打开这个编辑器的状态,如果第一次打开时readOnly参数为true,那么后面一直都是true,尽管传入的readOnly参数不同。<editor v-model="form.noticeContent" :min-height="192" :read-only="form.status

2021-08-13 21:52:44 1184 2

原创 413. 等差数列划分

2021-08-10 LeetCode每日一题链接:https://leetcode-cn.com/problems/arithmetic-slices/标签:数组、动态规划题目如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入

2021-08-10 20:34:22 323

原创 1137. 第 N 个泰波那契数

2021-08-08 LeetCode每日一题链接:https://leetcode-cn.com/problems/n-th-tribonacci-number/标签:数学、记忆化搜索、动态规划题目泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1

2021-08-08 17:56:40 252

原创 611. 有效三角形的个数

2021-08-04 LeetCode每日一题链接:https://leetcode-cn.com/problems/valid-triangle-number/标签:数组、排序、二分、双指针题目给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1

2021-08-04 21:31:43 246

原创 1337. 矩阵中战斗力最弱的 K 行

2021-08-01 LeetCode每日一题链接:https://leetcode-cn.com/problems/the-k-weakest-rows-in-a-matrix/标签:数组、矩阵、哈希表、排序题目给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。

2021-08-01 19:09:44 337

原创 671. 二叉树中第二小的节点

2021-07-27 LeetCode每日一题链接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree/标签:二叉树、深度优先搜索题目给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给

2021-07-27 21:43:55 223

原创 1893. 检查是否区域内所有整数都被覆盖

2021-07-23 LeetCode每日一题链接:https://leetcode-cn.com/problems/check-if-all-the-integers-in-a-range-are-covered/标签:数组、哈希表、前缀和题目给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。如果闭区间 [left, right] 内每个整数都被 ran

2021-07-23 22:12:59 232

原创 138. 复制带随机指针的链表

2021-07-22 LeetCode每日一题链接:https://leetcode-cn.com/problems/copy-list-with-random-pointer/标签:哈希表、链表题目给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中

2021-07-22 22:41:23 471

原创 剑指 Offer 52. 两个链表的第一个公共节点

2021-07-21 LeetCode每日一题链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/标签:哈希表、链表、双指针题目输入两个链表,找出它们的第一个公共节点。如下面的两个链表**:**在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5],

2021-07-21 20:33:25 197

原创 1877. 数组中最大数对和的最小值

2021-07-21 LeetCode每日一题链接:https://leetcode-cn.com/problems/minimize-maximum-pair-sum-in-array/标签:数组、排序、双指针、贪心题目一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长

2021-07-21 00:33:54 333

原创 Nacos入门学习&实践

文中涉及到了一些模块代码没有给出,我一并上传到github了,可以整个项目clone下来进行调试。地址:https://github.com/stronglxp/springcloud-test1、SpringCloud Alibaba介绍1.1 为什么会出现SpringCloud AlibabaSpring Cloud Netflix项目进入维护模式。https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-no

2021-07-18 21:01:45 529

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I

2021-07-16 LeetCode每日一题链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/标签:数组、二分查找题目统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <=

2021-07-16 20:42:52 222

阿里云linux一键安装web环境

希望能帮到大家,那样我就很开心了,安装过程中如果大家遇到什么问题,可以访问我的个人博客http://www.codeliu.com,我会尽力回答

2017-10-21

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

TA关注的人

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