自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 遇到的问题记录:No compiler is provided in this environment

在IDEA控制台中,使用sh build.sh命令执行打包文件进行项目打包报错遇到的错误如下[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project XXXXX: Compilation failure[ERROR] No compiler is provided in this environment. Pe..

2021-10-19 15:44:10 1030

原创 AOP+SPel+Redis实现分布式锁的切面

#### 一、背景介绍随着高并发场景的逐渐增多,各类系统中(尤其是类似秒杀系统这种对于并发度要求很高的场景下)对于分布式锁的需求逐渐增大。而在分布式锁的代码实现中,往往会存在如下情况```javapublic void method(){ // 业务代码 try{ boolean b = redisClient.tryLock(key,value); if(b){ // ......逻辑判断 } ...

2021-10-04 11:24:41 618

原创 this.$route.query 获取不到值

具体情况是这样的,在当前的导航栏页面中,我可以获取到由登陆页面传过来的username mounted () { this.username = this.$route.query.username console.log("接收到的username:"+this.username) // 正常输出 }当我点击导航栏从而切换页面时,我想把这个username传到其它页面上去handleSelect(key, keyPath){ console.log(this.us

2020-12-08 10:54:03 7231 4

原创 分布式锁的三种实现方式

因为在面试过程中这方面被问到过,但是当时自己答得不是特别好,所以在此记录一下,我自己的项目是用的redis分布式锁以下的笔记借鉴了网上其它几位博主的文章,不过因为有一段时间了,原文链接找不到了,在此先行记下。分布式锁的实现方式一般有三种基于数据库的实现方式基于数据库的实现方式的核心思想是:在数据库中创建一个表,表中包含方法名等字段,并在方法名字段上创建唯一索引,想要执行某个方法,就使用这个方法名向表中插入数据,成功插入则获取锁,执行完成后删除对应的行数据释放锁。注意:这只是使用基于数据库的一种方法

2020-07-19 21:23:40 322

原创 HashMap的时间复杂度

不管插入还是查找,由key获取hash值然后定位到桶的时间复杂度都是O(1),那么真正决定时间复杂度的实际上是桶里面链表/红黑树的情况如果桶里面没有元素,那么直接将元素插入/或者直接返回未查找到,时间复杂度就是O(1),如果里面有元素,那么就沿着链表进行遍历,时间复杂度就是O(n),链表越短时间复杂度越低,如果是红黑树的话那就是O(logn)所以平均复杂度很难说,只能说在最优的情况下是O(1)...

2020-07-11 16:26:10 5796 1

原创 ArrayBlockingQueue总结——《Java并发编程之美》

先看类图ArrayBlockingQueue的内部有一个数组items,用来存放队列元素,putindex变量表示入队元素下标,takeIndex是出队下标,count统计队列元素个数。从定义可知,这些变量都没有使用volatile修饰,这是因为访问这些变量都是在锁块内,而加锁就已经保证了锁块内变量的内存可见性了。另外还有个独占锁lock用来保证出、入队操作的原子性,这保证了同时只有一个线程可以进行入队、出队操作。另外,notEmpty、notFull条件变量用来进行出、入队同步。 public

2020-06-09 11:40:31 199

原创 什么是联合索引?什么是最左匹配原则?

联合索引是什么对于多个字段同时建立的索引(其中存在顺序,例如ABC与ACB就是完全不同的两种联合索引)为什么要使用联合索引以联合索引(a,b,c)为例:建立这样的索引相当于建立了索引a、ab、abc三个索引。一个索引顶三个索引当然是好事,毕竟每多一个索引,都会增加写操作的开销和磁盘空间的开销。覆盖(动词)索引。同样的有联合索引(a,b,c),如果有如下的sql:select a,b,c from table where a=xxx and b = xxx;那么MySQL可以直接通过遍历索引取

2020-06-08 17:07:09 1257

原创 LinkedBlockingQueue总结——《Java并发编程之美》

48、LinkedBlockingQueueConcurrentLinkedQueue是使用CAS算法实现的非阻塞对列,而下面我们要介绍的LinkedBlockingQueue由使用独占锁实现。由类图可知,LinkedBlockingQueue也是使用单向链表实现的,也有两个Node,分别用来存放首、尾节点,还有一个初始值为0的原子变量count,用来记录队列元素的个数。另外还有两个ReentrantLock实例,分别用来控制元素出队和入队的原子性,其中takeLock用来控制同时只有一个线程可以从队

2020-06-08 11:30:49 192

原创 ConcurrentLinkedQueue总结——《Java并发编程之美》

ConcurrentLinkedQueueJDK中提供了一系列场景的并发安全队列。总的来说,按照事先方式的不同可分为阻塞队列和非阻塞队列,前者使用锁实现,后者则使用CAS非阻塞算法实现。ConcurrentLinkedQueue是线程安全的无解非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用CAS来实现线程安全。ConcurrentLinkedQueue内部的队列使用单向链表方式实现,其中有两个volatile类型的Node节点分别用来存放队列的首、尾节点。从下面的无参构造函数可知

2020-06-04 15:31:33 353

原创 Java指令重排序——源自《Java并发编程之美》

Java内存模型允许编译期和处理器对执行重排序以提高运行性能,并且只会对不存在数据依赖性的指令重排序。在单线程下重排序可以保证最终执行的结果与程序顺序执行的结果一直,但是在多线程下就会存在问题。举例:```Javapublic class ReadThread extends Thread { @Override public void run() { while (!Thread.currentThread().isInterrupted()){

2020-05-21 16:24:16 157

原创 LeetCode刷题笔记 337 打家劫舍3

在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,...

2020-03-02 17:42:29 134

原创 将Base64编码转换为Blob对象

导师给分配以一个任务,需要将数据库A中的blob数据转换为Base64编码存进xml文件中,并且最后需要读取xml文件,将其中的base64字段转换回blob然后存放在新数据库B中,其中就设计Blob以及Base64的相互转换问题,将Blob转换为Base64还比较好解决,但是由Base64转回Blob废了很大的功夫,这里就分享一下我的具体方法;//Blob转BASE64 publi...

2019-11-22 14:22:03 3582

原创 LeetCode 刷题笔记 6 Z 字形变换

题目描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"...

2019-08-30 10:04:14 142

原创 LeetCode刷题笔记 17 电话号码的字母组合

题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr...

2019-08-27 09:13:29 206

原创 LeetCode 刷题笔记 3 无重复字符的最长子串

题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复...

2019-08-23 09:29:39 127

原创 LeetCode刷题笔记 2 两数相加

题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&g...

2019-08-23 08:48:08 140

原创 LeetCode刷题笔记 12 整数转罗马数字

题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两...

2019-08-20 09:05:44 149

原创 LeetCode刷题笔记 1122 数组的相对排序

先看一下题目要求:给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,...

2019-08-16 09:54:33 259

原创 LeetCode刷题笔记 1002 查找常用字符

题目描述:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e","l","l"]先放着原题不做,先试试做...

2019-08-15 17:25:49 163

原创 LeetCode刷题笔记 39 组数总和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:...

2019-08-14 10:09:01 122

原创 LeetCode刷题笔记 118 杨辉三角

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]该题目可以先将所需要的结果放入二维数组中,根据numRows的值进行for循环,对二维数组依次进行赋值...

2019-08-13 10:05:29 130

原创 LeetCode刷题笔记 35 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。该题比较简单,需要注意的就是当目标值比数组中所有元素都小或者都大的情况class Solution { public int searchInsert(int[] nums, int target) { if...

2019-08-13 09:47:22 109

原创 LeetCode刷题笔记 27 移除元素

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。注意不光要返回长度,还有修改数组不需要考虑数组中超出新长度后面的元素class Solution { p...

2019-08-13 09:34:36 97

原创 LeetCode刷题笔记 26

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

2019-08-13 09:19:58 105

原创 LeetCode刷题笔记①

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题目不...

2019-08-13 08:42:25 178

原创 2019 华中科技大学 计算机考研上机题目

考研终于结束了,那么趁我还记得,赶紧来把今年的上机题目列出来,希望备战2020考研的同学们加油1、梅森素数题目要求:梅森素数是由梅森数而来。所谓梅森数,是指形如2p-1的一类数,其中指数p是素数,常记为Mp。如果梅森数是素数,就称为梅森素数。题目要求是,输入一个长整型数,然后输出比该数字小的梅森素数这道题实际上是华科的保研上机题目,没想到考研的时候重新考了一次,不过...

2019-03-21 09:27:41 2688

活期储蓄账目管理报告

本题目要达到目的:熟练掌握线性表的基本操作在两种存储结构上的实现。

2018-07-14

电话信息管理系统

关于C++的电话信息管理系统实验报告,由链表实现关于C++的电话信息管理系统实验报告,由链表实现

2018-01-03

学生信息管理系统

课程设计源代码,课程设计源代码,课程设计源代码,课程设计源代码,课程设计源代码,

2018-01-03

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

TA关注的人

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