
java
文章平均质量分 81
java白中白.
这个作者很懒,什么都没留下…
展开
-
Java中对象是怎么回事?
Java中对象是怎么回事?原创 2022-07-12 17:47:03 · 418 阅读 · 1 评论 -
zookeeper实现分布式锁
使用curator框架的zookeeper分布式锁原创 2022-06-17 10:03:57 · 441 阅读 · 0 评论 -
zookeeper JavaAPI操作
使用java对zookeeper进行操作,使用curator框架而不是原生的java API原创 2022-06-17 08:43:27 · 1298 阅读 · 0 评论 -
Nginx浅学
浅学nginx原创 2022-04-23 22:30:02 · 2302 阅读 · 1 评论 -
力扣hot100(中等题16-30)
力扣hot100(中等题16-30)目录力扣hot100(中等题16-30)16.跳跃游戏(力扣55)16.1 题目16.2 代码16.3 思路17.合并区间(力扣56)17.1 题目17.2 代码17.3 思路18.不同路径(力扣62)18.1 题目18.2 代码18.3 思路19.最小路径和(力扣64)19.1 题目19.2 代码19.3 思路20.颜色分类(力扣75)20.1 题目20.2 代码(快排)20.3 代码(两个for)20.4 代码(三路快排)20.5 思路21.子集(力扣78)21.1原创 2022-04-21 09:34:33 · 84 阅读 · 0 评论 -
代码随想录-双指针
代码随想录-双指针1.移除元素(力扣27)1.1 题目1.2 代码class Solution { public int removeElement(int[] nums, int val) { if(nums==null || nums.length==0){ return 0; } //用来指向非val元素 int l=0; //遍历 for(int原创 2022-04-13 09:37:38 · 73 阅读 · 0 评论 -
代码随想录-字符串
代码随想录-字符串目录代码随想录-字符串1.反转字符串(力扣344)1.1 题目1.2 代码1.3 思路2.替换空格(剑指offer05)2.1 题目2.2 代码2.3 思路3.颠倒字符串中的单词(力扣151)3.1 题目3.2 代码3.3 思路4.替换空格(剑指offer 05)4.1 题目4.2 代码4.3 思路5.左旋转字符串(剑指offer 58 Ⅱ)5.1 题目5.2 代码5.3 思路6.实现strStr()(力扣28)6.1 题目6.2 代码6.3 思路7.重复的子字符串(力扣459)7.1原创 2022-04-09 20:27:36 · 55 阅读 · 0 评论 -
力扣hot 100(简单题)
力扣hot 100(简单题)目录力扣hot 100(简单题)1.两数之和(力扣1)1.1 题目1.2 代码1.3 思路2.有效的括号(力扣20)2.1 题目2.2 代码2.3 思路3.合并两个有序链表(力扣21)3.1 题目3.2 代码3.3 思路4.最大子数组和(力扣53)4.1 题目4.2 代码4.3 思路5.爬楼梯(力扣70)5.1 题目5.2 代码5.3 思路6.二叉树的中序遍历(力扣94)6.1 题目6.2 代码(递归)6.3 代码(非递归)6.4 思路7.对称二叉树(力扣101)7.1 题目7原创 2022-04-08 10:45:20 · 213 阅读 · 0 评论 -
剑指offerⅠ(1-12天)
剑指offerⅠ(1-12天)目录剑指offerⅠ(1-12天)1.用两个栈实现队列(剑指offer09)1.1 题目1.2 代码1.3 思路2.包含min函数的栈(剑指offer30)2.1 题目2.2 代码2.3 思路3.从头到尾打印链表(剑指offer06)3.1 题目3.2 代码3.3 思路4.反转链表(剑指offer24)4.1 题目4.2 代码4.3 思路5.复杂链表的复制(剑指offer35)5.1 题目5.2 代码5.3 思路6.替换空格(剑指offer05)6.1 题目6.2 代码(偷懒原创 2022-04-06 22:14:45 · 47 阅读 · 0 评论 -
代码随想录-哈希表
代码随想录-哈希表目录代码随想录-哈希表1.有效的字母异位词(力扣242)1.1 题目1.2 代码(哈希表)1.3 代码(ASCALL数组)1.4 思路2.两个数组的交集(力扣349)1.1 题目1.2 代码1.3 思路3.快乐数(力扣202)3.1 题目3.2 代码3.3 思路4.两数之和(力扣1)4.1 题目4.2 代码(暴力求解)4.3 代码(哈希表)4.4 思路5.四数相加Ⅱ(力扣454)5.1 题目5.2 代码5.3 思路6.赎金信(力扣383)6.1 题目6.2 代码6.3 思路7.三数之和(原创 2022-03-20 11:18:08 · 39 阅读 · 0 评论 -
AQS重要方法源码分析
AQS重要方法源码分析目录AQS重要方法源码分析一、Node结点1.节点状态waitStatus2.Node节点属性二、AQS重点方法1.acquire(int)1.1 tryAccquire(int)1.2 addWaiter(Node)1.3 enq(Node)1.4 acquireQueued(Node,int)1.5 shouldParkAfterFailedAcquire()1.6 parkAndCheckInterrupt()1.7 acquire总结2.release(int)2.1 try原创 2022-03-19 18:47:44 · 449 阅读 · 2 评论 -
线程池浅学
线程池目录线程池一、线程池介绍1.什么是线程池?2.线程池的作用二、线程池的工作流程及原理1.线程池的工作流程2.线程池的工作流程图3.线程池工作原理3.1 工作原理图3.2 工作原理解释4.工作线程三、线程池的创建、提交和关闭1.创建线程池2.线程池参数3.向线程池提交任务3.1execute()3.2 submit()4.关闭线程池一、线程池介绍1.什么是线程池? Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发中,合理地使用线程池能够带原创 2022-03-16 20:32:51 · 295 阅读 · 0 评论 -
代码随想录-链表
代码随想录-链表目录代码随想录-链表1.移除链表元素(力扣203)1.1 题目1.2 代码(虚拟头节点,推荐)1.3 代码(不适用虚拟头节点)1.3 思路2.设计链表(力扣707)2.1 题目2.2 代码2.3 思路3.反转链表(力扣206)3.1 题目3.2 代码3.3 思路4.两两交换链表中的节点4.1 题目4.2 代码4.3 思路5.删除链表的倒数第N个节点(力扣19)5.1 题目5.2 代码5.3 思路6.链表相交(力扣面试题02.07)6.1 题目6.2 代码1(非常简单,不太好理解)6.2 代原创 2022-03-16 10:45:08 · 34 阅读 · 0 评论 -
缓存穿透、缓存雪崩和缓存击穿及其他小问题
缓存穿透、缓存雪崩和缓存击穿及其他小问题目录缓存穿透、缓存雪崩和缓存击穿及其他小问题1.说说你项目中redis的应用2.redis是单线程还是多线程3.redis事务执行失败怎么办?4.redis存在线程安全的问题吗?为什么?5.什么是缓存穿透?怎么解决?5.1 什么是缓存穿透5.2 解决缓存穿透5.4 如何处理并发量大时一瞬间访问数据库?6.什么是缓存击穿?怎么解决?6.1 什么是缓存击穿6.2 解决缓存击穿(加锁)7.什么是缓存雪崩?怎么解决?7.1 什么是缓存雪崩7.2如何解决1.说说你项目中re原创 2022-03-14 19:16:46 · 1114 阅读 · 0 评论 -
为什么HashMap初始化容量始终是2的指数
为什么HashMap初始化容量始终是2的指数目录为什么HashMap初始化容量始终是2的指数1.初始化容量规律2.二进制探究初始化容量规律3.总结1.初始化容量规律 最近刷到一个面试题,问HashMap为了保证散列分布,其容量都是2的指数倍,那如果初始化容量为15怎么办?还会是2的指数倍吗? 因此去阅读了一下源码,发现传递初始化容量创建HashMap时,会调用另外一个构造方法,如下://带有初始化容量的构造方法public HashMap(int initialCapacity) {原创 2022-03-08 22:51:03 · 569 阅读 · 1 评论 -
JMM及volatile实现原理
JMM及volatile实现原理目录JMM及volatile实现原理一、JMM1.CPU缓存1.1 CPU读取数据过程1.2 CPU三级缓存2.Java内存模型2.1 多线程处理共享数据2.2 多线程修改共享变量可能出现的问题3.JMM数据原子操作4.JMM缓存不一致问题二、volatile实现原理1.可见性实现原理(MESI缓存一致性协议)2. volatile保证有序性2.1 指令重排2.2 happens-before2.3 as-if-serial语义2.4 volatile写读内存语义2.5原创 2022-03-08 18:28:38 · 803 阅读 · 0 评论 -
堆与优先级队列
堆与优先级队列目录堆与优先级队列一、堆的定义1.堆的分类1.1 大根堆1.2 小根堆2.堆的特点3.实现堆二、优先级队列1.优先级队列和普通队列的区别2.用堆实现优先级队列3.JDK中优先级队列三、优先级队列面试题1.最小k个数(力扣17.14)1.1 题目1.2 代码1.3 时间复杂度2.前K个高频元素(力扣347)2.1 题目2.2 代码3.查找和最小的K对数字(力扣373)3.1 题目3.2 代码4.堆排序一、堆的定义 堆其实也是一棵二叉树,只不过堆是一颗完全二叉树,并且堆可以用数组进原创 2022-03-06 18:55:11 · 129 阅读 · 0 评论 -
synchronized锁升级
synchronized锁升级原创 2022-03-03 15:35:41 · 11020 阅读 · 1 评论 -
MySQL主从复制、读写分离、分库分表
MySQL主从复制、读写分离、分库分表目录MySQL主从复制、读写分离、分库分表一、主从复制1.1 为什么使用主从复制?1.2 什么是mysql的主从复制?1.3 主从复制原理1.4 需要注意的问题1.5 主从复制可能遇到的问题1.6 mysqll主从架构二、读写分离2.1 如何实现读写分离三、分库分表3.1 分库分表方式3.1.1 水平切分3.1.2 垂直切分3.2 分片键一、主从复制1.1 为什么使用主从复制? 场景一:在不同的数据库之间进行数据的同步,在分布式、高并发项目中为了减少mysql原创 2022-02-27 16:21:23 · 892 阅读 · 0 评论 -
Leetcode二叉树
Leetcode二叉树目录Leetcode二叉树1.二叉树的前序遍历(力扣144)1.1 题目1.2 代码(递归)1.3代码(非递归)2.二叉树的中序遍历(力扣94)2.1 题目2.2 代码(递归)2.3代码(非递归)3.二叉树的后序遍历(力扣145)3.1 题目3.2 代码(递归)3.2 代码(非递归)4.判断是否为相同的树(力扣100)4.1 题目4.2 代码5.判断一个树为另一个树的子树(力扣572)5.1 题目5.2 代码6.二叉树的最大深度(力扣104)6.1 题目6.2 代码7.是否为平衡二叉原创 2022-02-27 10:37:48 · 37 阅读 · 0 评论 -
二叉树概念
二叉树目录二叉树一、二叉树1.树的分类2.树的概念2.1 树与非树2.2 节点的度2.3 树的度2.4 叶子节点2.5 树的高度3.二叉树3.1 二叉树的概念3.2 满二叉树3.3 完全二叉树4.二叉树的存储4.1 构建二叉树4.2 二叉树的遍历4.2.1 前序遍历(根左右)4.2.2 中序遍历(左根右)4.2.3 后序遍历(左右根)4.2.4 层序遍历(广度优先遍历)一、二叉树1.树的分类 树结构的数据结构类型查找效率是logNBST(二分搜索树):二叉树的元素查找平衡二分搜索树:AVL(原创 2022-02-24 10:51:35 · 1052 阅读 · 0 评论 -
生产者与消费者
生产者与消费者,虚假唤醒原创 2022-02-18 15:54:00 · 4177 阅读 · 0 评论 -
SpringBoot整合使用RabbitMQ四种模式
SpringBoot整合使用RabbitMQ四种模式目录SpringBoot整合使用RabbitMQ四种模式一、前期准备1.所需依赖2.配置文件二、四种模式演示1.fanout(广播)模式1.1 介绍1.2 使用方法2.direct模式2.1 介绍2.2 使用方法3.topic模式3.1 介绍3.2 使用方法4.headers模式4.1 介绍4.2 使用方法一、前期准备1.所需依赖<dependency> <groupId>org.springframework.bo原创 2022-01-26 23:58:59 · 1733 阅读 · 0 评论 -
RabbitMQ基础
RabbitMQ基础目录RabbitMQ基础一级目录二级目录三级目录一、MQ基础1.MQ的基本概念2.分布式系统通信的方式3.MQ的优劣3.1 MQ的优势3.2 MQ的劣势二、RabbitMQ基础1.JMS2.RabbitMQ安装2.1 安装说明2.2 踩坑事件2.3 安装路径3.代码连接RabbitMQ3.1 导入依赖3.2 生产者代码(简单模式)3.3 消费者代码(简单模式)4.工作模式4.1 工作队列模式4.2 订阅模式4.2.1 fanout(广播模式)4.2.2 routing(路由模式)4.原创 2022-01-24 19:07:36 · 2512 阅读 · 2 评论 -
leetcode链表练习
LeetCode链表这里写目录标题1.[移除链表元素](https://leetcode-cn.com/problems/remove-linked-list-elements/)1.1 题目描述1.2 迭代(虚拟头解决)1.3 迭代(不使用虚拟头)1.4 思考2.[反转链表](https://leetcode-cn.com/problems/reverse-linked-list/)2.1 题目描述2.2 头插法2.3 原地移动法3.[链表的中间结点](https://leetcode-cn.com/p原创 2022-01-03 23:54:05 · 150 阅读 · 0 评论 -
RabbitMQ安装说明
RabbitMQ安装说明原创 2021-12-26 15:58:39 · 148 阅读 · 0 评论 -
静态代理&动态代理
静态代理&动态代理一、静态代理1.什么是静态代理1.1 普通实现方式1.2 代理对象实现二、动态代理1.与动态代理相关的两个类2. 动态代理实现3.动态代理源码分析一、静态代理1.什么是静态代理 现有如下场景:张三是个厨师,做某一份美食分为以下三步:买食材、做菜、端桌,其中"买食材"和"端桌"是每个厨师都要干的事情,都相同,但是由于不同厨师的技艺不同,做菜方式不同。1.1 普通实现方式 接下来用代码实现其功能,设想有一个"做饭"接口,其中有"买食材"、“做菜”、"端桌"三个方法,每一个原创 2021-12-10 14:36:07 · 228 阅读 · 0 评论 -
HashMap的put方法源码分析
HashMap的put方法源码分析1.put方法八股文 首先给大家讲一下put()方法的八股文,大家可以先记,后面分析源码就会印象更深。面试官:讲一下HashMap中的put()方法答:HashMap中加入键值对的put()方法分为以下几步:先调用key的hashCode()方法得到key的hash值,但是HashMap中存入的并不是key使用hashCode()方法直接得到的hash值,而是在put方法中有一个方法使hash=hash^(hash>>>16)的值然后进行判原创 2021-12-09 21:42:31 · 576 阅读 · 0 评论 -
MVCC浅学
目录@[TOC](目录1.什么是MVCC2.当前读3.快照读4.MVCC常见日志4.1 undo日志4.2 ReadView4.3 ReadView判断版本链的哪个版本可用,比较规则4.4 读已提交4.5 可重复读4.6 可重复读的隔离级别下解决幻读5.比较规则举例1.什么是MVCC MVCC即多版本并发控制,主要是为了提高数据库的并发性能。 同一行数据平时发生读写请求时,会上锁阻塞住,这是其他事务就无法访问这行数据。但MVCC用更好的方式去处理—写请求,做到在发生读–写请求冲突时不用加锁。原创 2021-11-27 21:31:23 · 880 阅读 · 0 评论 -
从文件中读取一行且不带空格的字符串
从文件中读取一行且不带空格的字符串1.问题引出 在做一道题的时候,需要从文件中读取相关信息,一行是一个对应关系,需要使用Map存入,但是文件中有许多空格,读取文件时将空格也读取进来了,就灰常烦躁,以下是文件:2.解决问题 思路1:使用字节流(FileInputStream)读取,会发现将空格也读取进来了,就很麻烦 思路2:使用字符流(FileReader)读取,确实没有了空格,但是一次只能读一个字符,不能读取一行,不能满足需求 思路3:突然发现,BufferReader中有一个方法:r原创 2021-11-24 23:57:32 · 1278 阅读 · 0 评论 -
蓝桥杯校级预选赛题
蓝桥杯校级预选赛题目录蓝桥杯校级预选赛题1.计算字符串周期问题1.1 原题及实例1.2 思路1.3 代码2.判断无序数列中最近且大的数字1.1 原题及实例1.2 思路1.3 代码3.判断字符串中的子字符串3.1 原题及实例3.2 思路3.3 代码4.给三个数字,判断是否可以组成直角三角形4.1 原题及实例4.2 思路4.3 代码5.计算不规则图形的周长5.1 原题及实例5.2 思路5.3 代码6.判断字符串中的字符6.1 原题及实例6.2 思路6.3 代码7.01背包问题7.1 原题及实例7.2 思路7.原创 2021-11-23 20:23:45 · 2579 阅读 · 6 评论 -
常见七大排序算法
常见七大排序算法目录常见七大排序算法一、简单排序1.选择排序1.1 选择排序思想1.2 时间复杂度1.3 选择排序代码2.冒泡排序2.1 冒泡排序思想2.2 时间复杂度2.2 冒泡排序代码3.插入排序3.1 插入排序思想3.2 时间复杂度3.3 插入排序代码4.希尔排序4.1 希尔排序思想4.2 时间复杂度4.3 希尔排序代码5.快速排序5.1 快速排序思想5.2 时间复杂度5.3 快排代码6.归并排序6.1 归并排序思想6.2 时间复杂度6.3 归并排序代码7.堆排序7.1 堆排序思想7.2 时间复杂度原创 2021-11-18 13:34:12 · 267 阅读 · 0 评论 -
mysql事务和锁机制
mysql事务和锁机制目录mysql事务和锁机制一、事务1.事务的四大特性2.事务并发的三大问题2.1 脏读2.2 不可重复读2.3 幻读3.事务的四种隔离级别3.1 读未提交3.2 读已提交3.3 可重复读3.4 串行化二、锁机制1.行锁1.1 共享锁(S锁)1.2 排他锁(X锁)2.表锁(意向锁)2.1 为什么需要意向锁?2.2 意向共享锁2.3 意向排他锁3.锁的原理4.InnoDB处理幻读4.1 记录锁(Record)4.3 临键锁(Next-key)一、事务1.事务的四大特性 事务的四原创 2021-11-15 23:26:31 · 1189 阅读 · 0 评论 -
SpringBoot拦截器和处理跨域请求
SpringBoot拦截器和处理跨域请求1、Handlerimport com.alibaba.fastjson.JSON;import org.springframework.stereotype.Component;import org.springframework.util.StringUtils;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.Handl原创 2021-11-12 18:27:13 · 643 阅读 · 0 评论 -
Redis
Redis一、NoSQL概述1.NoSQL数据库概述2.NoSQL使用场景3.NoSQL不适用场景二、Redis数据库1.Redis安装2.Redis键(Key)3.Redis常用数据类型3.1 字符串(String)3.1.1 指令操作3.1.2 原子性3.2 List集合3.2.1 指令操作3.2.2 数据结构3.3 Set集合3.3.1 指令操作3.3.2 数据结构3.4 哈希(Hash)3.4.1 指令操作3.4.1 数据结构3.5 ZSet有序集合3.5.1 指令操作3.5.2 数据结构3.6 .原创 2021-11-12 15:04:30 · 654 阅读 · 0 评论 -
JWT简单使用
JWT简单使用目录JWT简单使用一、概述1.JWT是什么2.JWT能做什么?3.为什么要使用JWT?二、JWT结构1.Header2.payLoad3.signature三、使用JWT1.JWT代码2.JWT的工具类封装3.SpringBoot整合JWT一、概述1.JWT是什么 JWT全称是JSON Web Token,通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理。2.JWT能做什么?授权原创 2021-11-05 23:19:33 · 3312 阅读 · 0 评论 -
源码探究hashMap中hash值和下标的算法
源码探究hashMap中hash值和下标的算法 在学习完hashMap之后,我们只知道hashMap的put方法是通过获取hashCode()方法得出key的哈希值,然后经过哈希算法得到索引(或数组下标),那么会有如下两个问题:hashMap中存入的hash真的只是hashCode()方法中的hash值吗?是怎么样得到下标的?1.存入hashMap中的hash是什么? 这是使用hashMap用put方法增加键值对的源码,可以看到将key传入hash()方法 进入hash()方法中一探原创 2021-10-26 21:55:36 · 589 阅读 · 0 评论 -
设计模式面试必问(单例、工厂、代理)
设计模式目录设计模式一、设计模式1.单例模式1.1 饿汉式1.2 懒汉式1.3 双重检查1.4 静态内部类1.5 枚举1.6 总结1.7 JDK中单例模式的使用2.工厂模式2.1 简单工厂模式2.2 工厂方法模式2.3 抽象工厂模式2.3.1 关系图2.3.2 代码3.代理模式3.1 静态代理3.1.1 关系图3.1.2 代码3.2 动态代理3.2.1 关系图3.2.1 代码一、设计模式1.单例模式 单例模式中保证了系统内存中该类只有一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用原创 2021-10-26 17:57:48 · 380 阅读 · 0 评论 -
java后端返回给前端的统一结果集
返回给前端的结果集1.为什么要统一结果集? Java后端开发项目时,需要给前端传一些数据,可以直接将一个List或者Map返回给前端,但是这样会显得很乱,并且有时候前端需要的不仅仅只是数据,可能还有一些错误码、错误信息等,这时就需要一种规范的数据格式传到前端。2.Result数据类型 可以创建一种具有信息码code、信息msg和数据的类型Result,用来返回给前端数据:public class Result<T> {//返回信息码private String code;/原创 2021-10-23 23:07:36 · 4412 阅读 · 2 评论