自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中对象是怎么回事?

Java中对象是怎么回事?

2022-07-12 17:47:03 369 1

原创 zookeeper实现分布式锁

使用curator框架的zookeeper分布式锁

2022-06-17 10:03:57 385

原创 zookeeper JavaAPI操作

使用java对zookeeper进行操作,使用curator框架而不是原生的java API

2022-06-17 08:43:27 672

原创 HTTP缓存

HTTP缓存目录HTTP缓存一、强制缓存1.Expires2.Cache-Control二、协商缓存1.Last-Modified3.Etag一、强制缓存1.Expires​ 在响应头中有一个Expires的字段,expires中可以设置过期时间,这个过期时间指的是某一时间过期,比如:Expires: Fri, 28 May 2032 15:24:43 GMT在以上时间之前,都不会向服务器发送请求,会直接使用当前缓存的资源。2.Cache-Control​ 使用Cache-Control中

2022-05-31 23:44:34 273

原创 数据库和缓存一致性问题

数据库和缓存一致性问题目录数据库和缓存一致性问题一、前言二、使用缓存需要注意的问题方案一:数据全部放入缓存,不设置过期时间1. 方案具体操作2. 方案优缺点3. 适用场景方案二:部分数据放入缓存,设置过期时间1. 方案具体操作2. 方案优缺点3. 适用场景三、解决方案二中缓存一致性问题1. 先更新数据库,后更新缓存(不采用)2. 先更新缓存,后更新数据库(不采用)3. 先删除缓存,后更新数据库(不采用)4. 先更新数据库,后删除缓存(采用)四、主从库延时和延时双删问题1.先更新数据库,后更新缓存在主从数

2022-05-31 20:06:50 447

原创 为什么说UDP基于数据报,TCP基于流传输?

为什么说UDP基于数据报,TCP基于流传输?目录为什么说UDP基于数据报,TCP基于流传输?一、UDP为什么基于数据报?1.UDP具有接收缓冲区2.UDP没有发送缓冲区二、TCP为什么是基于流传输?三、基于UDP的简易回显服务器1.客户端2.服务端四、基于UDP的简易查找字典服务器1.客户端2.服务器五、基于TCP的简易回显服务器1.客户端2.服务器六、基于TCP的简易回显服务器(多线程版)1.客户端2.服务器​ 在一些八股当中,经常会见到TCP和UDP的不同,其中一点就是“TCP基于流,而UDP基于数

2022-05-16 21:32:00 750

原创 HTTP-HTTP协议特性和使用方法(三)

HTTP-HTTP协议特性和使用方法(三)目录HTTP-HTTP协议特性和使用方法(三)一、HTTP的长连接和短连接1. 不同版本协议的差异二、HTTP缓存1.HTTP缓存头部字段2.HTTP缓存工作方式三、缓存改进方案1.md5/hash缓存2.CDN缓存3.CDN缓存工作方式四、内容协商机制1.内容协商方式2.服务器驱动-请求首部集3.断点续传和多线程下载3.1 Range3.2 Content-Range3.3 断点续传过程一、HTTP的长连接和短连接HTTP协议是基于请求/响应模式的,因为只

2022-05-13 16:02:12 215

原创 HTTP-HTTP协议结构和通讯原理(二)

HTTP-HTTP协议结构和通讯原理(二)目录HTTP-HTTP协议结构和通讯原理(二)一、HTTP协议特点1.支持客户/服务器模式(C/S)2.简单快速3.灵活4.无连接5.无状态二、HTTP报文结构分析1.请求报文2.HTTP报文头2.1 通用报文头2.2 请求报文头2.3 响应报文头2.4 实体报文头3.响应报文三、HTTP请求方法剖析1.GET请求2.POST方法3.PUT4.HEAD5.DELETE6.OPTIONS7.CONNECT四、响应状态码1. 2XX2. 3XX3. 4XX4. 5XX

2022-05-11 19:06:56 555

原创 HTTP-了解HTTP协议(一)

HTTP-了解HTTP协议(一)目录HTTP-了解HTTP协议(一)一、浏览器背后的故事1.HTTP2.Web与HTTP二、透过TCP/IP看HTTP1.TCP/IP协议族2.TCP/IP协议族分层3.数据包的封装过程4.HTTP数据传输过程三、DNS域名解析一、浏览器背后的故事​ 当我们使用浏览器浏览某个网页时,会在浏览器中输入”www.baidu.com“网址打开百度网页,而输出网址之后,浏览器发生了什么呢?​ 简单的说,有以下几步:当输入网站之后(即域名),浏览器会对这个网址进行DNS域名

2022-05-10 00:07:50 777 2

原创 Go语言的数据输入常用方式

Go语言的数据输入常用方式目录Go语言的数据输入常用方式一、fmt包1.Scanf2.Scanln3.Scan二、bufio包1.ReadByte2.ReadBytes3.ReadLine4.ReadRune5.ReadString三、青训营第一个作业一、fmt包1.Scanf​ 这个和C语言的输入基本差不多,需要使用占位符,如下:%v%d%f%t%c%s%T%o%x和%X%e和%E按数据原格式十进制整形单精度浮点型(float32)布尔型字符型字符串

2022-05-08 11:46:59 3741

原创 go连接数据库(简单的查询学习)

go连接数据库(简单的查询学习)目录go连接数据库(简单的查询学习)一、go自带1.下载依赖2.插入数据2.1 获取插入数据主键id3.更新数据4.删除数据5.查询数据二、GORM1.下载依赖2.连接数据库(mysql)3.根据go创建表4.插入数据5.查询数据5.1 First&Take&Last5.2 多记录查询5.3 条件查询6.删除数据7.更新数据一、go自带1.下载依赖go get -u github.com/go-sql-driver/mysql2.插入数据pack

2022-05-08 11:41:59 3812 1

原创 股票动态规划问题通用方法

股票动态规划问题通用方法目录股票动态规划问题通用方法1.买卖股票的最佳时机(力扣121)1.1 题目1.2 代码1.3 思路2.买卖股票的最佳时机Ⅱ(力扣122)2.1 题目2.2 代码2.3 思路3.买卖股票的最佳时机Ⅲ(力扣123)3.1 题目3.2 代码3.3 思路4.买卖股票的最佳时机Ⅳ(力扣188)4.1 题目4.2 代码4.3 思路5.最佳买卖股票时机含冷冻期(力扣309)5.1 题目5.2 代码5.3 思路​ 可以看这个视频​ 股票问题有很多类型,如只能买卖一次、无限买卖次数、冷冻期等等

2022-05-02 15:47:03 7

原创 力扣hot100(中等题31-45)

力扣hot100(中等题31-45)

2022-05-02 08:40:06 8

原创 HTTP报文

HTTP报文格式协议头说明示例Accept可接

2022-04-25 20:09:28 276

原创 Nginx浅学

浅学nginx

2022-04-23 22:30:02 1986 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 10

原创 力扣hot100(中等题1-15道题)

力扣hot100(中等题1-15道题)

2022-04-15 09:17:57 32

原创 代码随想录-双指针

代码随想录-双指针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 11

原创 HTTPS验证流程

HTTPS验证流程1.HTTPS简介​ 由于HTTP在网络中是明文传输的,所以数据在传输过程中很容易被截取,这时就会有一些加密算法及方式出来,比如对称加密、非对称加密等方式,在HTTPS中加密其实是在TCP和HTTP之间加了一层SSL/TLS协议用于加密。2.对称加密2.1 对称加密的工作流程​ 对称加密其实就是发送方和接收方都拥有一把相同的密钥,发送方在发送之前会对数据通过密钥进行加密,然后传输到接收方,接收方会通过密钥进行解密获取数据。​ 在浏览器和服务器之间交互也是这样的,服务端拥有这把

2022-04-12 23:04:13 2542 2

原创 代码随想录-字符串

代码随想录-字符串目录代码随想录-字符串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 6

原创 力扣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 5

原创 剑指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 7

原创 动态规划-01背包(代码随想录)

动态规划-01背包(代码随想录)目录动态规划-01背包(代码随想录)1.斐波那契数列(力扣509)1.1 题目1.2 代码1.3 思路2.爬楼梯(力扣70题)2.1 题目2.2 代码2.3 思路3.使用最小花费爬楼梯(力扣746)3.1 题目3.2 代码3.3 思路4.不同路径(力扣62)4.1 题目4.2 代码4.3 思路5.不同路径25.1 题目5.2 代码5.3 思路6.整数拆分(力扣343)6.1 题目6.2 代码6.3 思路7.不同的二叉搜索树(力扣96)7.1 题目7.2 代码7.3 思路8.

2022-03-20 14:12:16 10

原创 代码随想录-哈希表

代码随想录-哈希表目录代码随想录-哈希表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 6

原创 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 408 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 260

原创 代码随想录-链表

代码随想录-链表目录代码随想录-链表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 4

原创 缓存穿透、缓存雪崩和缓存击穿及其他小问题

缓存穿透、缓存雪崩和缓存击穿及其他小问题目录缓存穿透、缓存雪崩和缓存击穿及其他小问题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 1083

原创 代码随想录-数组

代码随想录-数组目录代码随想录-数组1.二分查找(力扣704)1.1 题目1.2 代码1(无脑破解版)1.3 代码2(二分查找版)1.3 思路2.搜索插入位置(力扣35)2.1 题目2.2 代码2.3 思路3.移除元素(力扣27)3.1 题目3.2 代码3.3 思路4.有序数组的平方4.1 题目4.2 代码1(排序)4.3 代码2(双指针)4.4 思路5.长度最小的子数组5.1 题目5.2 代码1(暴力求解)5.3 代码2(滑动窗口)5.4 思路6.螺旋矩阵Ⅱ(力扣59)6.1 题目6.2 代码6.3 思

2022-03-13 14:30:32 7

原创 为什么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 444 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 400

原创 堆与优先级队列

堆与优先级队列目录堆与优先级队列一、堆的定义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 11

原创 synchronized锁升级

synchronized锁升级

2022-03-03 15:35:41 10673 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 620

原创 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 6

原创 二叉树概念

二叉树目录二叉树一、二叉树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 672

原创 生产者与消费者

生产者与消费者,虚假唤醒

2022-02-18 15:54:00 3984

原创 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 1479

原创 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 2099 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 107

空空如也

空空如也

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

TA关注的人

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