自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

teavamc的博客

沉下心,十年磨一剑。

  • 博客(145)
  • 资源 (5)
  • 收藏
  • 关注

原创 基于Redis和 Lua 实现分布式令牌桶限流

rpc-tech-stack 系列的实践文章 ~ 本文属于限流话题.限流是一个很大的话题,准备把其中的所有限流器都实现一遍,以此也算全都写过了,到时候再用也不至于会心虚,毕竟真实写完成过。本文主要讲述了如何基于 Redis 与 Lua实现分布式令牌桶的限流方案。读前提问我觉得学习任何东西前都应该有自己的反问,这种反问基于标题给你的大概印象。带着问题来看文章,最后应该比盲目的看有收获,先提出几个基础的问题。限流是什么通过某种手段对某个时间段的并发访问请求进行流量限制,一旦流量达到限制阈值则可以拒绝服

2021-01-28 22:02:19 2240 2

原创 基于Redis中SETNXEX组合命令的分布式锁的请求限流实践

rpc-tech-stack 系列的实践文章 [1],平日看了很多技术文章,看完之后给人一种我看完了我就会了的错觉~ 但其实什么都不会。俗话说“好记性不如烂笔头”,那我就把常用的技术点通过 demo 的方式来实现,并增强自己的记忆吧~实践的效果场景:请求不到锁超时等待,自旋至超过等待时间场景:用户请求一个资源,请求成功一次之后,锁过期之前限制其再次消费,实现对资源调用的限流。参数:锁过期时间:10s获取不到锁的等待时间:5s等待重试时间:200ms模拟用户第一次请求因为ke

2021-01-26 22:50:35 3311

原创 力扣炼题LCP 01. 猜数字

题意小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。示例示例 1:输入:guess = [1,2,3], answer = [1,2,3]输出:3解释:小A 每次都猜对了。 示例 2:输入:guess = [2,2,3], an

2020-05-27 22:43:16 528 3

原创 力扣炼题1450. 在既定时间做作业的学生人数

题意给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。示例示例 1:输入:startTime = [1,2,3], endTime

2020-05-27 22:42:43 368

原创 力扣炼题242. 有效的字母异位词

题意给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagram著作权归领

2020-05-27 22:42:14 231 1

原创 力扣炼题7. 整数反转

题意给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解答与思路class Solution { public int r

2020-05-27 22:38:05 262

原创 力扣炼题344. 反转字符串

题意编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H

2020-05-27 22:37:38 202

原创 力扣炼题1. 两数之和

题意给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum

2020-05-09 22:53:18 140

原创 力扣炼题69. x 的平方根

题意实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems

2020-05-09 22:52:37 230

原创 力扣炼题26. 删除排序数组中的重复项

题意给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5

2020-05-09 22:51:59 132 1

原创 力扣炼题283. 移动零

题意给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。示例示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]解答与思路class Solution { public void moveZeroes(int[] nums) { // 思路: 不等于0的都顺序放在前置位 // idx 用于记录非

2020-05-09 22:51:02 211

原创 力扣炼题350. 两个数组的交集 II

题意给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更优?如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?示例示例 1:输入: nums1 = [1,2,2,1

2020-05-09 22:50:23 307

原创 力扣炼题66. 加一

题意给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p

2020-05-09 22:49:41 290

原创 力扣炼题217. 存在重复元素

题意给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplicate著

2020-05-09 22:48:40 189

原创 力扣炼题189. 旋转数组

题意给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]...

2020-05-08 16:11:02 177

原创 力扣炼题122. 买卖股票的最佳时机 II

题意给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的...

2020-05-08 16:10:33 164

原创 力扣炼题136. 只出现一次的数字

题意给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解答与思路异或法class Solution { // 不看解析不知道这么牛批的...

2020-05-08 16:09:13 154

原创 力扣炼题572. 另一个树的子树

题意给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个...

2020-05-08 16:08:40 200

原创 力扣炼题1389. 按既定顺序创建目标数组

题意给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:目标数组 target 最初为空。按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。重复上一步,直到在 nums 和 index 中都没有要读取的元素。请你返回目标数组。示例示例 1:输入:nums = [...

2020-05-08 13:55:50 209

原创 LeetCode 1436. 旅行终点站

题意给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此只会有一个旅行终点站。示例示例 1:输入:paths = [["London","...

2020-05-06 21:58:31 335

原创 力扣炼题1365. 有多少小于当前数字的数字

题意给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例示例 1:输入:nums = [8,...

2020-05-06 21:57:47 226

原创 LeetCode 1431. 拥有最多糖果的孩子

题意给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖...

2020-05-06 21:57:05 233

原创 力扣炼题1313. 解压缩编码列表

题意给你一个以行程长度编码压缩的整数列表 nums 。考虑每对相邻的两个元素 [freq, val] = [nums[2i], nums[2i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。请你返回解压后的列表。示例示例:输入:nums = [1,2,3,4]输出:[2,4,...

2020-05-06 21:55:58 174

原创 力扣炼题1281. 整数的各位积和之差

题意给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例示例 1:输入:n = 234输出:15 解释:各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释: 各位数之积 = 4 * 4 * 2 * 1 = 32 ...

2020-05-05 01:31:09 228

原创 力扣炼题1342. 将数字变成 0 的操作次数

题意给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到 2 。步骤 5) ...

2020-05-05 01:30:42 224

原创 力扣炼题1295. 统计位数为偶数的数字

题意给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数) 345 是 3 位数字(位数为奇数)  2 是 1 位数字(位数为奇数) 6 是 1 位数字 位数为奇数) 7896 是 4 位数字(...

2020-05-05 01:28:29 225 1

原创 力扣炼题1108. IP 地址无效化

题意给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例示例 1:输入:address = "1.1.1.1"输出:"1[.]1[.]1[.]1"示例 2:输入:address = "255.100.50.0"输出:"255[.]100[.]50[.]0"来源:力扣(L...

2020-05-05 01:27:34 168

原创 力扣炼题104. 二叉树的最大深度

题意给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://le...

2020-04-09 20:21:45 266

原创 力扣炼题101. 对称二叉树

题意给定一个二叉树,检查它是否是镜像对称的。说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。示例例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2...

2020-04-09 20:21:26 211

原创 力扣炼题100. 相同的树

题意给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: ...

2020-04-09 20:18:51 158

原创 JAVA源码浅析 01 - String构造方法浅析

解决问题知道String是如何实现String的相关构造方法以及实现基本概念String类被final关键字修饰,String类不能被继承,所有成员方法都默认为final方法;实现了Serializable、CharSequence、 Comparable接口。内部实现字符数组。内部实现 - 使用Char数组public final class String imp...

2020-03-21 15:38:49 226

原创 剑指Offer-62 圆圈中最后剩下的数字(约瑟夫环) - 计算坐标法

题意0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例输入: n = 5, m = 3输出: 3输入: n = 10, m = 17输出: 2思路约瑟夫环是一个...

2020-03-21 01:04:52 364

原创 剑指Offer-03 数组中重复的数字

题意找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 解答class Solution { public int findRepeatNumb...

2020-03-21 00:27:11 136

原创 剑指Offer-24 翻转链表

题意定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解答/** * Definition for singly-linked list. * public class ListNode { * ...

2020-03-08 11:03:47 252

原创 剑指Offer-57 和为s的两个数字

题意输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]解答双指针法cl...

2020-03-08 00:18:22 135

原创 剑指Offer-58 左旋转字符串

题意字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例输入: s = "abcdefg", k = 2输出: "cdefgab"输入: s = "lrloseumgh", k = 6输出: "umghlrlose"解答cl...

2020-03-08 00:00:13 124

原创 剑指Offer-21 调整数组顺序使奇数位于偶数前面

题意输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。解答双指针法class Solution { public int[] exchange(int[] nums) { // 定义双指...

2020-03-07 23:50:43 218

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

题意输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解答双指针法/** *...

2020-03-07 23:17:20 192

原创 浩鲸科技2019校招普通研发类笔试题

做题情况正确题目数 :12/26排名 : 前44%做题的时候陆陆续续在处理公司线上事情,做的结果不理想。即便如此,还是总结了一波错题。错题记录整数类对象与整数型变量设有下面两个赋值语句: a = Integer.parseInt("1024"); b = Integer.valueOf("1024").intValue();下述说法正确的是( a和b都是整...

2020-03-02 10:06:19 5716 3

原创 博客迁移

因为工作比较忙,每天下班都凌晨了。。。便毫无精力继续更新博客,但是我又不希望之前养成的写文章的习惯就这么怠惰了。。于是迁移一波博客地址博客新地址...

2020-03-01 14:45:55 160 2

STM32C8T6核心板程序

【STM32小案例 04 】STM32简单使用L298N电机驱动模块 控制直流电机正反转 文章中相关的源代码资源,太古老了,没办法解答,只是提供出来,早就不做C了。

2019-04-29

iOS12找回访问密码

iOS12找回访问密码小工具...我的博客有教程,可以先看我文章,再使用。挂出来是帮助无法访问Github的小伙伴

2019-01-29

STM32的GPIO使用方法(超级详细)

最详细的GPIO使用方法

2017-08-16

ILI9341中文手册+STM32程序示例

ILI9341中文手册+STM32程序示例;最全的中文手册;最好的示例程序,适用于STM32,可移植性也贼强

2017-07-05

1313个C标准库头文件

自己找到的最全的C标准库头文件

2017-06-28

空空如也

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

TA关注的人

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