自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 知识段落结构

由于自身水平有限吧 整理的都是知识点并不能成体系但是还是想有个体系建立所以在这里就整理一套体系模板,后期的博文也会按照这个体系来进行简单的整理发布1.java基础:锁和集合HashMap:为什么线程不安全ConcurrentHashMap:实现和优点类加载机制 双亲委派java对象在内存中的数据格式:对象头synchronized和volatile学习笔记java父子类各个组件加载顺序jvm和jdk的关系死锁Thread中的各个方法解释集合2. 网络相关java网络 BIO模型ja

2020-07-01 12:34:21 229

原创 Redis常见性能问题和解决方案有哪些?

Redis 常见性能问题和解决方案如下:

2024-05-05 15:20:04 261 1

原创 Redis哈希槽的概念?

Redis 集群并没有使用一致性 hash,而是引入了哈希槽的概念。Redis 集群有16384(2^14)个哈 希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽,集群的每个节点负责一部分 hash 槽。

2024-05-05 15:18:53 401

原创 Redis Cluster集群方案什么情况下会导致整个集群不可用?

Redis 没有使用哈希一致性算法,而是使用哈希槽。Redis 中的哈希槽一共有16384个,计算给定 密钥的哈希槽,我们只需要对密钥的 CRC16 去取 16384。

2024-05-05 15:18:19 372

原创 instanceof关键字的作用

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为Class 的对象,或者是其直接 或间接子类,或者是其接口的实现类,结果 result 都返回 true,否则返回false。注意:编译器会检查 obj 是否能转换成右边的 class 类型,如果不能转换则直接报错,如果不能 确定类型,则通过编译,具体看运行时定。

2024-04-20 06:43:13 227

原创 标识符的命名规则

(硬性要求) 标识符可以包含英文字母,0-9 的数字,$以及_ 标识符不能以数字开头标 识符不是关键字。: 是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等 等,都是标识符。:(非硬性要求) 类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。方法名规范:同变量名。

2024-04-20 06:41:08 189

原创 对 Seata 的理解

在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个DML操作,变成了跨进程或者跨数据库的多个事务单元的多个 DML 操作,而传统的数据库事务无法解决这类的问题,所以就引出了分布式事务的概念。从这四种模型中不难看出,在不同的业务场景中,我们可以使用 Seata 的不同事务模型来解决不同业务场景中的分布式事务问题,因此我们可以认为 Seata 是一个一站式的分布式事务解决方案。分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,业内常见的解决方法有两种。

2024-04-18 07:02:10 188

原创 kafka 的零拷贝原理

在实际应用中,如果我们需要把磁盘中的某个文件内容发送到远程服务器上,那么它必须经过几个拷贝的过程。

2024-04-18 06:53:31 790

原创 Elasticsearch 更新和删除文档的过程

删除和更新也都是写操作 ,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更;磁盘上的每个段都有一个相应的.del 文件。 当删除请求发送后,文档并没有真的被删除,而是在.del 文件中被标记为删除。该文档依然能匹配查询 ,但是会在结果中被过滤掉。当段合并时 ,在.del 文件中被标记为删除的文档将不会被写入新段。3、在新的文档被创建时 ,Elasticsearch 会为该文档指定一个版本号,当执行更新时,旧版本的文档在.del 文件中被标记为删除 , 新版本的文

2024-04-17 13:29:04 432

原创 Elasticsearch 索引文档的过程

3、在 flush 过程中 , 内存中的缓冲将被清除 , 内容被写入一个新段,段的fsync 将创建一个新的提交点 , 并将内容刷新到磁盘 ,旧的 translog 将被删除并开始一个新的translog。咕泡科技出品,严禁商用。1、 当分片所在的节点接收到来自协调节点的请求后 ,会将请求写入到Memory Buffer ,然后定时( 默认是每隔 1 秒)写入到 Filesystem Cache ,这个从 Momery Buffer 到Filesystem Cache 的过程就叫做 refresh;

2024-04-17 13:27:27 472

原创 ES查询优化手段

( 1)根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索引;( 4)采取冷热分离机制,热数据存储到 SSD,提高检索效率;( 2)写入前关闭 refresh_interval 设置为-1,禁用刷新机制;( 3)充分利用倒排索引机制,能 keyword 类型尽量 keyword;( 3)每天凌晨定时对索引做 force_merge 操作,以释放空间;( 6)仅针对需要分词的字段,合理地设置分词器;( 2)禁用批量 terms(成百上千的场景);部署调优,业务调优等。

2024-04-16 13:58:10 467

原创 maven命令

mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类。mvn eclipse:eclipse 生成 eclipse 项目文件。mvn archetype:generate 创建 Maven 项目。mvntomcat:run 启动 tomcat 服务。mvn test-compile 编译测试源代码。mvn package 根据项目生成的 jar。mvn clean 清除项目目录中的生成结果。mvn site 生成项目相关信息的网站。

2024-04-16 13:56:28 383

原创 TCP 粘包

据包是一连串的字节流是没有边界的,而且 TCP 首部并没有记录数据包的长度,所以 TCP 传输数据的时候可能会发送粘包和拆包的问题;而 UDP 是基于数据报传输数据的,UDP 首部也记录了数据报的长度,可以轻易的区分出不同的数据包的边界。针对发送的数据包小于缓冲区大小的情况,发送端可以将不同的数据包规定成同样的长度,不足这个长度的补充 0,接收端从缓冲区读取固定的长度数据这样就可以区分不同的数据包;接下来的两种情况发生了粘包和拆包的现象,接收端收到的数据包要么是不完整的要么是多出来一。

2024-04-14 07:43:50 419

原创 Get 和 Post 请求

get 请求直接将表单数据以 name1=value1&name2=value2 的形式拼接到 URL 上(http://www.get 请求传输的数据受到 URL 长度的限制,而 URL 长度是由浏览器决定的;get 请求的参数会在地址栏明文显示,使用 URL 编码的文本格式传递参数;post 请求将表单数据放到请求头或者请求的消息体中。post 请求传输数据的大小理论上来说是没有限制的。拼接到 action 后面;

2024-04-14 07:41:23 264

原创 HTTP 响应码

301:永久重定向,当客户端请求一个网址的时候,Web 服务器会将当前请求重定向到另一个。302:临时重定向,搜索引擎会抓取重定向后网页的内容而保留旧的网址,因为搜索引擎认为。网址,搜索引擎会抓取重定向后网页的内容并且将旧的网址替换为重定向后的网址。400:客户端请求错误,多为参数不合法导致 Web 服务器验参失败。500:Web 服务器错误,服务器处理客户端请求的时候发生错误。200:成功,Web 服务器成功处理了客户端的请求。HTTP 响应码有哪些?重定向后的网址是暂时的。

2024-04-14 07:38:33 304

原创 如何提高系统的并发能力?

部署多台服务器,并做负载均衡。数据库分库分表 + 读写分离。使用缓存(Redis)集群。如何提高系统的并发能力?

2024-04-14 07:38:10 138

原创 Mysql 为什么使用 B+Tree 作为索引结构

所以树的高度能够决定磁盘 IO 的次数,磁盘 IO 次数越少,对于性能的提升就越大,这也是为什么采用 B 树作为索引存储结构的原因。而对于数据库来说,所有的数据必然都是存储在磁盘上的,而磁盘 IO 的效率实际上是很低的,特别是在随机磁盘 IO 的情况下效率更低。但是在 Mysql 的 InnoDB 存储引擎里面,它用了一种增强的B 树结构,也就是B+树来作为索引和数据的存储结构。因为 B 树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度会相比二叉树来说,会矮很多。

2024-04-13 07:02:00 254

原创 Mybatis 中#{}和${}的区别是什么?

Mybatis 提供的#号占位符和$号占位符,都是实现动态 SQL 的一种方式,通过这两种方式把参数传递到 XML 之后,在执行操作之前,Mybatis 会对这两种占位符进行动态解析。而 PreparedStatement 中的 sql 语句是预编译的,SQL 语句中使用了占位符,规定了sql 语句的结构。而使用$的方式传参,相当于直接把参数拼接到了原始的 SQL 里面,Mybatis 不会对它进行特殊处理。符号的动态传参,可以适合应用在一些动态 SQL 场景中,比如动态传递表名、动态设置排序字段等。

2024-04-13 06:59:19 240

原创 ReentrantLock 的实现原理

首先,ReentrantLock 是一种可重入的排他锁,主要用来解决多线程对共享资源竞争的问题。

2024-04-13 06:54:55 184

原创 volatile 关键字有什么用?它的实现原理是什么?

volatile 关键字有两个作用。

2024-04-12 17:47:30 273

原创 热点数据和冷数据

热点数据,缓存才有价值 对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,子,某导航产品,我们将导航信息,缓存以后可能读取数百万次。数据更新前至少读取两次,缓存。这个是最基本的策略,如果缓存还没有起作用就失效了,那就没有太大价值了。比如我们的某IM产品,生日祝福模块,当天的寿星列表,缓存以后可能读取数十万次。很大,但是又是热点数据,这个时候就需要考虑通过缓存手段,减少数据库的压力,比如我们的某。

2024-04-12 08:02:17 188

原创 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等名词解析

四、缓存更新 除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种: (1)定时去清理过期的缓存;我们可以简单的理解为:由于原有缓存失效,新缓存未到期间 (例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!

2024-04-11 22:22:46 527

原创 Redis 集群模式整理

Redis Sentinel体量较小时,选择 Redis Sentinel ,单主 Redis 足以支撑业务。Redis ClusterRedis 官方提供的集群化方案,体量较大时,选择 Redis Cluster ,通过分片,使用更多内存。TwemproxTwemprox 是 Twtter 开源的一个 Redis 和 Memcached 代理服务器,主要用于管理 Redis 和Memcached 集群,减少与Cache 服务器直接连接的数量。CodisCodis 是一个代理中间件,当客

2024-04-11 22:17:17 251

原创 Redis两种持久化策略如何选择

持久化有两种,那应该怎么选择呢?

2024-04-11 22:16:40 249

原创 布隆过滤器

布隆过滤器的介绍和redis场景的使用

2024-04-10 10:09:06 234

原创 rocketMQ学习笔记

学习笔记

2024-04-09 09:51:00 539

原创 分布式幂等性

幂等性是指在分布式系统中,一个操作多次执行的结果与其执行一次的结果相同。设计具有幂等性的分布式系统可以有效避免数据不一致和重复处理的问题。

2024-04-09 09:44:48 582

原创 柔性分布式事务

XA 协议是 X/Open 提出的分布式事务处理标准。文中提到的 2PC、3PC、TCC、本地事务表、Seata in AT mode,无论哪一种,本质都是事务协调者协调各个事务参与者的本地事务的进度,使使所有本地事务共同提交或回滚,最终达成一种全局的 ACID 特性。在协调的过程中,协调者需要收集各个本地事务的当前状态,并根据这些状态发出下一阶段的操作指令。这个思想就是 XA 协议的要义,我们可以说这些事务模型遵守或大致遵守了 XA 协议。

2024-04-09 09:41:51 1532

原创 2阶段提交和三阶段提交

分布式事务的二阶段提交和三阶段提交的分析

2024-04-09 09:39:05 400

原创 springcloud 和 springcloudalibaba有什么区别

springcloudalibaba对 springcloud 2.x版本和1.x版本 进行了一些拓展组件能够完美的整合到springcloud开发组件中 RPC 的远程整合说白了 就是为了推广阿里系的产品 使springcloud整合阿里系产品更简单容易1 nacos 注册中心 分布式配置中心 springcloud eureka +config 组合2 目的是为了推广阿里系列的产品 如果使用了 springcloud阿里巴巴 建议使用阿里巴巴整个体系下的产品例如 m

2021-07-27 11:54:15 954

原创 主从服务器的延迟读取问题

问题描述场景一 用户修改了数据立即查询 假设数据库从库备份主库的时间为5s 用户修改查询是在这五秒内操作的 这时 就会出现读取出来的数据时错误的信息的情况场景二 从库备份主库时 由于硬件或者网络问题需要时长过长 导致查询出来的数据不准确问题解决方案:1 双写即 修改操作在主库和从库都进行 优点操作简单 缺点 不适合高并发场景2 读写都走主库即 修改查询操作都去主库操作 优点 操作简单 缺点 不适合高并发场景 主库压力大...

2021-07-01 10:35:34 210

原创 idea 好用功能分享

1 想多启动一个项目在不同的端口咋办 看这里看这里

2021-06-10 11:25:43 150

原创 指定文件夹内的所有子文件夹内如果有空文件夹 添加.keep文件

import java.io.File;import java.util.Scanner;public class tt { public static void main(String[] args) { int num=0; try{ Scanner sc=new Scanner(System.in); System.out.println(""); String filepath =

2021-06-08 17:11:48 327

原创 jenkins笔记

1 jenkins需要下载jar包并像一般java项目一样启动运行2 jenkins 需要一下环境支持 jdk(jenkins是基于java开发的),svn或者git,maven,3 需要安装插件 subverion Plus-in ,publish over ssh 等插件4.图片位置放置的路径下的一级目录必须有pom文件整体流程大概就是从git或者svn 下载代码 然后通过 maven 编译 然后通过 编译的配置 添加执行jar包的语句 (当然 需要添加 备份 清理 失败回退 等等操作的

2021-01-21 16:57:09 102

原创 jvm 基础知识点速记

1 什么是java虚拟机?为什么java被称为 与平台无关的语言java虚拟机是一个可以执行java字节码文件的虚拟机进程,java源文件被称为java虚拟机的执行的字节码文件。java被设计成允许应用程序执行的字节码文件,这不需要程序员为每个平台做单独的重写或者重新编译。2 java 内存模型:java堆:Java虚拟机内存管理的最大的一块 ,java堆是所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域唯一的目的就是存放对象实例,几乎所有对象的实例都在这里分配内存。方法区:方法区和j

2020-12-28 14:57:40 126

原创 springcloud源码分析流程图

eureka1源码分析图ribbon 源码 分析路线图

2020-11-19 17:45:51 238

原创 多线程面试题

先写问题 后写答案:线程池创建方式:线程池都有哪些状态?线程池中 submit()和 execute()方法有什么区别?多线程锁的升级原理是什么?什么是死锁?怎么防止死锁?ThreadLocal 是什么?有哪些使用场景?synchronized 底层实现原理?synchronized 和 volatile 的区别是什么?synchronized 和 Lock 有什么区别?答案1 线程池创建方式:①. newFixedThreadPool(int nThreads)创建一个固定长度

2020-07-14 09:51:45 175

原创 redis面试题汇总(部分)

先上redis面试题:后面讲述答案redis和其他缓存技术有什么区别redis有哪些数据结构应用场景有哪些redis线程是否安全redis的单线程为什么特别高redis如何存放对象 json , 二进制 怎么选?redis中是否有事务机制,事务支持回滚吗(坑 不支持)redis是否有发布订阅的模式redis和数据库如何保持数据一致性redis宕机是否丢失数据redis数据持久化机制rdb和aof的区别增量同步和全量同步的区别redis主从复制发生网络延迟怎么解决redi

2020-07-14 09:37:41 206

原创 nginx简述一睹为快

还是 首先上概念:nginx 是高性能的http和反向代理的web服务器 也提供了 IMAP/POP3/SMTP等服务 特别是 占有内存少 并发能力强 性能是其最重要的考量 资料为最高五万并发数支持热部署 稳定 可靠反向代理:三个角色 真实服务器 代理服务器 客户端 正向代理是客户端通过配置代理服务器访问真实服务器 反向代理:是真实服务器将客户端请求通过反向代理服务器进行获取 直白的说就是谁设置的代理服务器就是正向和反向的区别***负载均衡***客户端首先到反向代理服务器 然后

2020-07-06 15:40:32 138

原创 jdk并发包

同步控制工具类ReentrantLock简而言之, 就是自由度更高的synchronized, 主要具备以下优点.可重入: 单线程可以重复进入,但要重复退出可中断: lock.lockInterruptibly()可限时:超时不能获得锁,就返回false,不会永久等待构成死锁公平锁: 先来先得, publicReentrantLock(boolean fair), 默认锁不公平的, 根据线程优先级竞争.Condition类似于 Object.wait()和Object.notify(.

2020-07-02 20:16:27 225

空空如也

空空如也

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

TA关注的人

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