自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue3中this的替代方案

 setup 在生命周期 beforecreate 和 created 前执行,此时 vue 对象还未创建,因无法使用我们在 vue2.x 常用的 this。 解决办法是 vue 中的 getCurrentInstance 方法返回了 ctx,控制台打印 ctx 发现和 vue2.x 中的 this 等同,习惯使用 this 的同学可以以此进行替代。import {defineComponent, getCurrentInstance} from 'vue'export default defin.

2021-04-23 04:50:49 21782 8

原创 docker部署rabbitmq和简单搭建rabbitmq镜像集群(笔记)

1、部署 rabbitmq 默认环境中已安装好docker - ubuntu安装docker的链接。#创建目录mkdir /opt/rabbitmq-single#拉取镜像docker pull rabbitmq#运行镜像docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v /opt/rabbitmq:/var/lib/rabbitmq rabbitmq#开启rabbitmq_managementdocker ex.

2021-04-22 19:31:18 506 1

原创 linux用vim编辑文件时退格键和上下左右键失灵的问题

问题背景 ubuntu 20.4 桌面版在用 docker 搭建 rabbitmq 集群的时候需要修改 hosts 里面的 ip 映射,而在用 vim 编辑的时候出现诡异的上下左右键会变成ABCD, 退格键无效,没有办法正常输入删除文本。解决办法 开始以为是 hosts 文件只读权限的问题,修改了 hosts 的权限,问题仍旧存在cd /etcsudo chmod a+w hosts 网上查了写博客发现可能是 vim 编辑的版本问题,卸载默认 vim 后,安装了完整版 vim 问题解决.

2021-04-22 18:50:16 2484 1

原创 Ubuntu20.4安装docker笔记

卸载旧版本docker更新apt包索引安装docker配置阿里云镜像加速测试docker是否安装成功docker基本操作1、卸载旧版本dockersudo apt-get remove docker docker-engine docker.io containerd runc2、更新apt包索引sudo apt-get update3、安装docker#3.1 安装 apt 依赖sudo apt-get install \ apt-transport-http.

2021-04-22 14:40:27 208 1

原创 Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node

1. Stats in management UI are disabled on this node#进入rabbitmq容器docker exec -it {rabbitmq容器名称或者id} /bin/bash#进入容器后,cd到以下路径cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector = falseecho management_agent.disable_metrics_collector.

2021-04-20 23:16:38 9104 15

原创 第十二届蓝桥杯省赛javaB组真题分享

填空题A. ASCB. 卡片C. 直线D. 货物摆放E. 路径编程题F. 时间显示G. 最少砝码H. 杨辉三角形I. 双向排序J. 括号序列填空题A. ASCB. 卡片C. 直线D. 货物摆放E. 路径编程题F. 时间显示G. 最少砝码H. 杨辉三角形I. 双向排序J. 括号序列...

2021-04-18 18:00:55 1485

原创 Vite2.0项目运行报esbuild相关错误 errno: -4058(Error: spawn G:\final\tutor-system-front\node_modules\esbuild)

报错信息解决方法手动执行 node node_modules/esbuild/install.js然后执行 npm run dev

2021-04-12 23:49:31 5504 10

原创 HashMap的三种线程安全集合对比(Hashtable,ConcurrentHashMap,Collections.synchronizedMap() )

总结实现的接口的差别初始化时的容量get方法根据下标随机访问的区别HashMap考虑线程安全问题时的选择建议1、总结Hashtable 和 Collections.synchronizedMap() 方法返回的 SynchronizedMap 都是通过锁住整个对象实例的方法确保线程安全的。ConcurrentHashMap 在不发生哈希冲突的情况下尽可能使用 CAS 确保线程安全,在发生哈希冲突情况下采用 synchronized 同步代码块方法锁住当前 Node 结点(只锁当前.

2021-03-30 01:21:40 722 3

原创 nacos启动报错db.num is null 和 Unable to start web server(windows)

db.num is null 问题1、mysql 下新建数据库 nacos,字符集和排序规则如下2、在新建的 nacos 数据库下执行 nacos/conf/nacos-mysql.sql 的 sql 脚本文件3、在 conf 文件夹下的 application.properties 中更改成自己本地的 mysql 配置(大概在配置文件31-47行)#*************** Config Module Related Configurations ***************####.

2021-03-28 20:19:58 1596 2

原创 无法登陆github官网的问题(能ping通但打不开网页)

我的话能 ping 通 github.com 但是打不开官网,同样的问题可以尝试第四步,并了解风险提示。更改 hosts 的 dns 映射,首先找到 hosts 文件 C:\Windows\System32\drivers\etc 。粘贴以下映射到 hosts 文件的的最下面。也可以去 http://tool.chinaz.com/dns 输入 github.com 试一下(ping)它提供的 ip。# GitHub Start13.229.188.59 github.com151.10

2021-03-27 21:38:25 9348

原创 ArrayList和LinkedList(源码分析)

底层数据结构的区别实现的接口的差别初始化时的容量get方法根据下标随机访问的区别两者的扩容两者删除元素效率的对比线程安全问题总结ArrayList 底层是数组,而 LinkedList 底层是双向链表。ArrayList 实现了随机访问接口 RandomAccess,允许用下标随机访问。LinkedList 需要从头结点或者尾结点遍历。所以在用下标访问的性能上ArrayList 胜出。ArrayList 的数据结构是数组,也就是顺序表,在删除元素的时候需要前移后面的元素,性能差于L.

2021-03-25 20:20:47 315 1

原创 Java开发面试经历分享(校招)

 记录一下自己面试过程中印象比较深刻的面试题,以及向大佬们求助一些问题。NO.1 企业背景: 三线(IT18线)城市,一家做医疗、政府信息化的上市软件公司,算是本地最大的it企业。面试分三轮,但是是一起面的,先笔试,笔试完hr面,然后技术面。技术面题目简述 tcp 三次握手stream.foreach() 和 foreach() 的区别(把我问住了,只回答了前者在高并发下性能会更好,回家看源码也没有找到,搜博客只找到stream.foreach会是多线程的,希望大佬们能在评论区指点下,不胜.

2021-03-24 12:32:15 376 2

原创 计算机网络零散知识点和常见linux指令汇总(Java面试)

- 计算机网络七层、五层网络模型常见HTTP状态码HTTP请求方法常见的端口号网络协议 - Linux常用指令 计算机网络1、七层、五层网络模型 OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 TCP/IP五层:应用层(涵盖表示层,会话层),传输层,网络层,数据链路层,物理层 四层:应用层,传输层,网络层,网络接口层(数据链路层,物理层)应用层:为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTT.

2021-03-21 20:58:07 162 1

原创 你真的知道HashMap扩容条件和红黑树升级退化的条件吗?

HashMap扩容条件红黑树升级条件红黑树退化的条件缘由 写这篇文章真的不是为了水博客,作者本人正在写java数据结构相关的文章,也在积极找工作和准备面试,看到好多面试视频里对于 HashMap 扩容和红黑树升级退化的条件说的含糊其辞,于是做了一个汇总。Talk is cheap, I will show you the code.HashMap 扩容条件当 HashMap 中键值对 key-value 个数大于阀值的时候(注意不是什么桶或数组的占用情况)升级成红黑树时,数组长度小..

2021-03-20 12:56:57 2521 5

原创 HashMap与Hashtable的八点区别(源码解析)

区别继承的父类不同初始化数组长度,和扩容时的增量不同是否允许存储空值不同获取Hash值和数组下标的方法不同底层数据结构不同扩容方法不同线程安全问题性能存在差距1. 继承的父类不同HashMap 继承了 AbstractMapHashtable 继承了 Dictionary/* * HashMap源码 *///HashMap继承了AbstractMappublic class HashMap<K,V> extends AbstractMap<K,V&

2021-03-18 15:10:36 1224 5

原创 HashMap 在扩容时为什么通过位运算 (e.hash & oldCap) 得到新数组下标

HashMap在扩容时会把 Node 桶中的元素拆分成两个链表或者红黑树 (分别对应桶为链表或红黑树), - JDK1.8 扩容流程,然后根据位运算来判断 Node 桶中的结点插入两个中的哪一个。(下文中会用 low,high表示)扩容时执行的 resize( ) 方法中的源码,把当前结点插入到 low 还是 high 的判断条件是 (e.hash & oldCap) == 0,那到底这个 & 运算的意义何在呢?首先我们知道 HashMap 计算 key 所对应数组下标的公式是 (l..

2021-03-18 08:59:19 3019 8

原创 HashMap 的 get 方法的流程分析(源码)

流程首先根据 hash 方法获取到 key 的 hash 值然后通过 hash & (length - 1) 的方式获取到 key 所对应的Node数组下标 ( length对应数组长度 )首先判断此结点是否为空,是否就是要找的值,是则返回空,否则进入第二个结点。接着判断第二个结点是否为空,是则返回空,不是则判断此时数据结构是链表还是红黑树链表结构进行顺序遍历查找操作,每次用 == 符号 和 equals( ) 方法来判断 key 是否相同,满足条件则直接返回该结点。链表遍历完都没有找.

2021-03-17 16:22:29 3407 1

原创 HashMap 获取 Hash 值时进行位运算的原因

HashMap 中获取 Hash 值的方法 首先判断 key 是否为 null,为 null 则返回 0 ,所以 key 为空的元素对应的数组坐标一定是 0,而且根据 put 会覆盖相同 key 的逻辑来思考,key 为空的元素最多只有一个。不为 null 则返回 key 的 hashCode异或上它的高16位。static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()

2021-03-17 16:05:16 611 2

原创 Hashmap的长度为什么必须是2的n次方

 从源码中我们可以看到获取 key 所对应 Node 数组下标的方法是 (length - 1) & hash,它与我们要求的 hash % length 在 length 是 2 的 n 次方的条件下是等价的,而用这种 & 的位运算的方法相比直接用取余符号进行运算,性能更好。//可以看出源码中获取下标的方法是(n - 1) & hash,n对应数组长度else if ((e = tab[index = (n - 1) & hash]) != null) HashM.

2021-03-17 15:50:16 290

原创 HashMap链表升级成红黑树的条件(源码分析)

条件链表长度大于8隐含条件是 Node 数组不为 null 且 Node 数组长度大于等于64 (不满足则会发生扩容代替升级)源码分析 源码中的p是链表的头结点,for循环的第一次, e = p.next 的时候 e 指向链表的第二个元素,此时 binCount = 0,下面升级红黑树的条件是 binCount >= 7。for循环继续走下去,在链表中第九个元素为空的时候 binCount = 7,此时第九个元素刚刚已经插入元素。那么链表长度大于8时就一定会升级成红黑树了吗?让我们看下

2021-03-17 15:43:02 1847 2

原创 HashMap 在 JDK1.8 中的扩容流程(源码分析)

扩容流程1.8版本中扩容时如果 Node 的数据结构是链表会生成 low 和 high 两条链表,是红黑树则生成 low 和 high 两颗红黑树依靠 (hash & oldCap) == 0 判断 Node 中的每个结点归属于 low 还是 high。把 low 插入到 新数组中 当前数组下标的位置,把 high 链表插入到 新数组中 [c] 的位置依靠位运算大幅度提高了 resize( ) 的性能。 - HashMap 在扩容 resize( ) 时为什么能直接通过位运算来得到新.

2021-03-17 15:36:19 1147 4

原创 HashMap中红黑树退化成链表的条件(源码分析)

条件扩容 resize( ) 时,红黑树拆分成的 树的结点数小于等于临界值6个,则退化成链表。移除元素 remove( ) 时,在removeTreeNode( ) 方法会检查红黑树是否满足退化条件,与结点数无关。扩容 resize( ) 的源码分析扩容时如果是红黑树结构会执行红黑树的 split( ) 方法split 方法中会初始化生成 loHead 和 hiHead 两个红黑树的头结点(之后会用 low 和 high 表示)lc 和 hc 分别为 low 和 high 的元素个数,初

2021-03-17 15:12:02 11116 6

原创 HashMap知识点总结(附源码分析链接)

HashMap面试题总结(防备面试官连环提问)HashMap基础讲下对HashMap的认识HashMap的初始化默认参数HashMap的扩容机制HashMap为什么在JDK1.8为添加了红黑树的数据结构链表升级成红黑树的条件红黑树退化成链表的条件为什么Hashmap的长度必须是2的n次幂HashMap获取的Hash值的方法(HashMap可以存key为null的主键吗)为什么在获取hash值时要把key 的 HashCode 和它的低16位做异或HaspMap的初始化时数组长度和加

2021-03-17 02:33:56 1333 4

原创 Netty聊天系统用户和channel的映射关系维护

背景 在开发一个IM系统的过程中,因为涉及到聊天消息的定向推送,需要在服务器根据用户的唯一标识userId能给够获取到该用户对应的channel来实现该功能。自然而然想到了HashMap做 userId - Channel 的关系映射。但此时遇到了一个问题:在用户 (客户端) 断开连接后会回调 handlerRemoved 的方法,此时我们只能获取到channel和它的id,并没有办法从上述的HashMap中移除 userId - Channel 对应的 key - value 值,这样设计明显是不.

2021-03-16 15:22:05 1812

原创 无法同时开启springboot和netty服务器端口的监听,和netty整合使用mybatis的问题 (后附完整的springboot整合netty代码)

目的背景描述解决办法SpringBoot整合Netty完整代码目的 解决springboot程序监听的端口和netty服务监听的端口无法同时开启的问题,以及netty无法较为便利地使用mybatis操作数据库的问题。背景描述 正在做的一个IM即时通讯项目,springboot服务器负责监听http的CRUD等请求,netty的websocket服务器负责即时聊天消息的签收和推送功能。常见的两种springboot整合netty的方法如下: 1、单独写一个main方法,运行nett..

2021-03-15 11:15:04 4336 6

原创 uni-app设置请求头无效

问题描述 最近在写前端是uni-app框架的前后端接口联调,之前把验证token的拦截器关闭了,打开token拦截器之后发现无论怎样往请求头里面添加token,后端获取到的都为空。试过用postman测试接口,后端能正常获取到请求头中的token,说明接口没问题,token的拦截器也没问题。在前端request请求的拦截器里面输出请求头,发现也正常,可是到了 经过了10来个小时的不懈努力,终于有所收获。是在uniapp官网的论坛里面发现官方有回复相关问题,H5端就不支持设置请求头。HbuilderX内.

2021-03-13 01:19:20 3629 3

原创 js和java前后端传递Date类型数据的问题

1、后端 => 前端 由下述代码可知:后端java的Date类型数据传递到前端,输出格式为 yy-mm-dd hh-mm-ss,可以直接把它作为参数放进 js 的 new Date( ) 里,得到的就是正确的js格式的Date:const date = new Date(this.userInfo.birthday)const date01 = new Date(this.userInfo.createTime)console.log(this.userInfo.createTime)c.

2021-03-12 12:27:40 6325 1

原创 第十二届蓝桥杯模拟赛(第三期)

第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题Tips 没有收藏题目的可以看看题目,我哪个做错了及时指出来啊,谢谢大家了。(我的解题思路超烂)第一题问题描述 请问在 1 到 2020 中,有多少个数与 2020 互质,即有多少个数与 2020 的最大公约数为 1。答案800解题思路​  可以暴力,从1到2019遍历一下。​  2020能被质数 2、5、101整除,遍历从1到2020有多少数是2,5,101的倍数,得到与2020不互为质数的数的个.

2021-03-11 23:17:44 7852 30

原创 FastJson的parseObject方法报错 syntax error, expect {, actual string, pos 0

报错信息使用 JSON.parseObject 把前端传来的json序列化字符串转换成Java对象时:syntax error, expect {, actual string, pos 0, fastjson-version 1.2.73解决办法debug下,msgStr为接收到的初始字符串,可以看出里面添加了java的转义字符 “\” 和前后各多了一个 " 。我们可以通过JSON.parse方法,把带有转义字符的字符串格式化成我们想要的样子,如下文中字符串str所示,里面去掉了转义字符。.

2021-03-08 10:34:56 14299 4

原创 ik分词器安装后ElasticSearch闪退,和ik分词器安装遇到的问题

1、闪退问题我的闪退问题是因为ik分词器版本号和elasticsearch版本号没有对应,比如es版本是7.11.1,那么ik也应该安装7.11.1版本(大概是的吧)。2、ik分词器安装遇到的问题但是由于我家已经半个月上不去github了,没办法直接去官网下载,官网地址如下 https://github.com/medcl/elasticsearch-analysis-ik/,上的去的同学直接下载即可。可以直接用elasticsearch-plugin安装,进入es的bin目录下,输入以下指令.

2021-03-03 17:25:00 961 5

原创 Java拦截器验证失败时返回Json格式数据

Java拦截器验证失败时返回Json格式数据 1、添加FastJson依赖在pom.xml中添加如下依赖<!-- fastjson --><dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency&gt

2021-03-02 09:56:30 1484

原创 SpringBoot配置swagger(3.0.0)及遇到的Bug(spring-plugin-core导包冲突)

SpringBoot配置swagger(3.0.0)及遇到的Bug一、swagger的配置1、在pom.xml里添加swagger依赖,如下:<!-- 配置swagger --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</versio

2021-02-14 18:38:36 1853

原创 滑动窗口问题

滑动窗口问题​ 牛客网 NC 87 滑动窗口的最大值,题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1},

2021-01-28 23:34:11 164

原创 快速排序

快速排序​ 快速排序采用分治策略。1. 首先拿到数组的第一个数作为target标记数,把数组中比标记数大的都移到它的左边,比标记数小的都移到它的右边。2. 把数组分成标记数之前和之后的两部分,每个部分均按照步骤1中的思路排序。重复上述中1和2操作,直到分成的数组只有一个数时。因为此时数组已经是升序排序了。​ 很明显重复步骤1和2的操作,适合用递归来完成,而递归的边界条件就是数组中只有一个数。public static void quickSort(int[] dp, int l, int r) {

2021-01-18 21:37:45 119

原创 Java反射实例化对象

Java 反射实例化对象1、通过反射实例化对象首先要获取目标类的class对象,可以通过以下三种方法2、getConstructors和getDeclaredConstructors的区别3、getFields和getDeclaredFields的区别

2021-01-09 17:02:51 3692 2

空空如也

空空如也

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

TA关注的人

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