自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (9)
  • 问答 (6)
  • 收藏
  • 关注

原创 Elasticsearch-高CPU优化

Elasticsearch使用线程池管理CPU资源,用于并发操作。如果某个节点的CPU使用率很高,可以使用该节点的热线程API(hot_threads)来检查节点上运行的资源密集型线程。如图所示,查询请求量的波动与集群最大CPU使用率是基本吻合的。确保对于节点上已配置的每个 GB的内存,将分片数量保持在 20 以下,如果某个节点拥有 30GB 的堆内存,那其最多可有 600 个分片。查看查询/写请求量,分析是否cpu高和查询量升高或者写入量升高导致的。是操作系统层面的cpu消耗,不是我们重点优化对象。

2024-06-21 11:29:54 1152

原创 MySQL一条SQL语句的执行过程

MySQL一条SQL语句的执行过程可以大致分为以下几个步骤: 为了理解这个问题,先从Mysql的架构说起,对于Mysql来说,大致可以分为3层架构。网络连接层: 作为客户端和服务端的连接,连接器负责处理和客户端的连接,还有一些权限认证之类。比如客户端通用用户名密码连接到Mysql服务器,还有对于数据库表的执行权限。服务层:基本上Mysql大部分的核心功能都在这一层,包括查询缓存、解析器、优化器之类,比如SQL解析、优化、索引选择,到最后生成执行计划。存储引擎层:Mysql通过执行引擎直接调用存储引擎API查

2024-04-03 17:10:33 1306

原创 Elasticsearch-相关性

相关性描述的是⼀个⽂档和查询语句匹配的程度。ES 会对每个匹配查询条件的结果进⾏算分_score。_score 的评分越高,相关度越高。ES 5.0之前使用TF-IDF 相关性算法, 5.0之后使用了BM25算法公式整体而言 BM25 就是对 TF-IDF 算法的改进,对于 TF-IDF 算法,TF(t) 部分的值越大,整个公式返回的值就会越大。BM25 就针对这点进行来优化,随着TF(t) 的逐步加大,该算法的返回值会趋于一个数值。如下图所示:公式该公式前半部分是IDF, 后半部分是TF + NORM

2024-03-27 18:13:40 1108

原创 InnoDB 缓存

本文主要聊InnoDB内存结构, 先来看下官网Mysql 8.0 InnoDB架构图如上图所示,InnoDB内存主要包含。

2024-03-22 15:55:35 1058

原创 Elasticsearch-内存结构

1)只有Filter下的子Query才能参与Cache。2)不能参与Cache的Query有TermQuery/MatchAllDocsQuery/MatchNoDocsQuery/BooleanQuery/DisjunnctionMaxQuery。3)MultiTermQuery/MultiTermQueryConstantScoreWrapper/TermInSetQuery/Point*Query的Query查询超过2次会被Cache,其它Query要5次。

2024-02-02 10:05:10 1431

原创 Elasticsearch mapping 之 性能相关配置

二进制: binary布尔型:boolean字符串:keyword别名: alias对象: object, flattened, nested, join结构化数据类型: Range, ip, version, murmur3空间数据类型: geo_point, geo_shape, point, shape。

2023-12-07 13:17:24 376

原创 Elasticsearch-倒排索引

这棵树不会包含所有的 term,它包含的是 term 的一些前缀(这也是字典树的使用场景,公共前缀)。或字典,是词条 Term 的集合。搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件被称之为倒排文件,倒排文件是存储倒排索引的物理文件。:Lucene索引库包含了搜索文本的所有内容,可以通过文件或文件流的方式存储在不同的数据库或文件目录下。

2023-07-27 10:08:53 804

原创 Elasticsearch-增删改查数据工作原理

当达到默认的时间:1 秒钟(参数refresh_interval=1s)或者内存的数据达到一定量(默认值是 JVM 所占内存容量的 10%)时,会触发一次刷新(Refresh),将内存中的数据生成到一个新的段上并缓存到文件系统缓存(FileSystem Cache)上,并将Index Buffer 的数据会被清空。通过这种方式当断电或需要重启时,ES 不仅要根据提交点去加载已经持久化过的段,还需要工具 Translog 里的记录,把未持久化的数据重新持久化到磁盘上,避免了数据丢失的可能。

2023-07-27 10:07:25 910

转载 7.0 柔性事务:可靠消息最终一致性

可以看到,其实就是将消息先发送到一个我们自己编写的一个"独立消息服务"应用中,刚开始处于prepare状态,业务逻辑处理成功后,确认发送消息,这个时候"独立消息服务"才会真正的把消息发送给消息队列。消费者消费成功后,ack时,除了对消息队列进行ack(图中没有画出),对于独立消息服务也要进行ack,"独立消息服务"一般是把这条消息删除。对于"本地事务表",其实和"独立消息服务"的作用类似,只不过"独立消息服务"是需要独立部署的,而"本地事务表"是将"独立消息服务"的功能内嵌到应用中。如果消费失败怎么办?

2023-07-08 15:11:32 143

转载 6.0 柔性事务 :TCC两阶段补偿型

TCC方案是可能是目前最火的一种柔性事务方案了。关于TCC(Try-Confirm-Cancel)的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称的是Atomikos公司,其注册了TCC商标。

2023-07-08 15:11:12 116

转载 5.0 柔性事务:最大努力通知

举例来说:笔者曾经做过一个短信发送平台,背景是公司内部有多个业务都有发送短信的需求,如果每个业务独立实现短信发送功能,存在功能实现上的重复。因为商务对接过程,是没有我靓丽的身影的。总之短信发送要花很多钱,如果短信发送供应商说短信都发送成功了,而短信平台却一条成功的记录都没有,出现这种扯皮的情况就不好了)在这个案例中,短信发送供应商通知短信平台短信发送结果的过程中,就是最典型的最大努力通知型方案,通知了N次就不再通知。6、短信平台接收到短信发送结果后,更新短信发送状态,可能是成功,也可能失败(如手机欠费)。

2023-07-08 15:10:42 101

转载 4.0 atomikos JTA/XA全局事务

其旗下最著名的产品就是事务管理器。产品分两个版本:TransactionEssentials:开源的免费产品ExtremeTransactions:上商业版,需要收费。这两个产品的关系如下图所示:1、实现了JTA/XA规范中的事务管理器(Transaction Manager)应该实现的相关接口,如:UserTransaction实现是com.atomikos.icatch.jta.UserTransactionImp,用户只需要直接操作这个类。

2023-07-08 15:10:12 350

转载 3.0 JTA规范

JTA是java扩展包,在应用中需要额外引入相应的jar包依赖JTA规范1.1中的源码非常少,如下所示:javax.transaction.Status:事务状态,这个接口主要是定义一些表示事务状态的常量,此接口无需实现javax.transaction.Synchronization:同步javax.transaction.Transaction:事务javax.transaction.TransactionManager:事务管理器。

2023-07-08 15:09:27 79

转载 2.0 mysql 对XA事务的支持

MySQL 从5.0.3开始支持XA分布式事务,且只有InnoDB存储引擎支持。MySQL Connector/J 从5.0.0版本之后开始直接提供对XA的支持。需要注意的是, 在DTP模型中,mysql属于资源管理器(RM)。而一个完整的分布式事务中,一般会存在多个RM,由事务管理器TM来统一进行协调。因此,这里所说的mysql对XA分布式事务的支持,一般指的是单台mysql实例如何执行自己的事务分支。

2023-07-08 15:08:56 181

转载 1.0 分布式事务概述

1.0 分布式事务概述2.0 mysql 对XA事务的支持3.0 JTA规范4.0 atomikos JTA/XA全局事务5.0 柔性事务:最大努力通知6.0 柔性事务 :TCC两阶段补偿型7.0 柔性事务:可靠消息最终一致性1、事务简介事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

2023-07-08 15:08:02 81

原创 500万PV的网站需要多少台服务器?

衡量业务量的指标项有很多,比如,常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统,其实和真实访问量有比较大的差距,所以为了更贴近实际业务量及压力,我们又把用户数的指标分成了活跃用户数、在线用户数以及并发用户数。常见衡量业务量级的指标汇总如表所示。

2023-07-08 14:12:07 3363

原创 常见软件负载均衡

1. 网站建设初期,可以选用Nginx、HAProxy作为反向代理负载均衡(流量不大时,可以不选用负载均衡),因为其配置简单,性能也能满足一般业务场景。注:DNS的负载均衡架构,主要适用大规模应用。2. 网站并发到达一定程度后,为了提高稳定性和转发效率,可以使用LVS+Nginx,可以保障入口流量最大性能及效率被负载均衡转发。3. 为了保障高可用架构,业务整体的容灾,单机房容量限制,会引入异地多活架构,可以使用DNS+LVS+Nginx作为负载均衡。

2023-05-15 20:37:23 165

转载 一台服务器最大能支持多少条 TCP 连接?

总用户规模预计是1亿。如果加大了fs.nr_open,但是是用的echo "xxx" > ../fs/nr_open命令来修改的fs.nr_open的值,那么刚改完可能不会有问题,但是只要机器一重启,那么之前通过echo命令设置的fs.nr_open值便会失效,用户还是无法登录。因为目标IP和端口固定,有 n 个源IP,四元组中可变化的就是【源端口】+ 【源IP】,【源端口】的可用范围又是【0 ~ 65535】,所以一个IP最大能建立65535个连接,那么n个IP最大就能建立 n * 65535个连接了。

2023-05-13 10:02:00 151

原创 Spring事物源码解析

事物

2022-12-27 17:51:47 134

原创 java实例内存分配

java实例内存分配

2022-12-09 16:50:55 273

转载 java对象的内存布局

用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持久的锁、偏向线程的ID等,通过存储的内容得知对象头是锁机制和GC的重要基础。

2022-12-09 16:09:12 419

原创 k8s之Service详解

Kubernetes Serivce是一组具有相同label Pod集合的抽象(可以简单的理解为集群内的LB),集群内外的各个服务可以通过Service进行互相通信。

2022-12-06 16:29:16 1934

原创 分布式选举算法之Paxos、Raft与Bully

分布式系统的集群方式大致可以分为主从(Master-Slave)模式和无主模式。主从模式可以简化系统的设计,Master作为权威节点,部分操作仅由Master执行,并负责维护集群元信息。缺点是master节点存在单点故障,需要解决灾备问题,并且集群模式会受限于Master节点的管理能力。通过Paxos、Raft与Bully等分布式算法,解决分布式中的一致性问题,来解决Master节点的选举。

2022-12-01 17:59:42 532

转载 MySQL索引的B+树到底有多高?

经常遇到业务线的同学问,既然页面I/O对MySQL查询性能影响较大,那么对于一次MySQL查询,底层要进行多少次页面I/O呢?

2022-11-29 10:26:34 107

原创 JavaAgent入门

Java Agent出现在JDK1.5版本以后,它允许程序员利用agent技术构建一个独立于应用程序的代理程序,用途也非常广泛,可以协助监测、运行、甚至替换其他JVM上的程序

2022-07-25 17:57:14 430

原创 cglib动态代理

CGLIB(Code Generation Library),是一个强大的,高性能,高质量的 Code 生成类库,它可以在运行期扩展 Java 类与实现 Java 接口。

2022-06-13 13:45:01 11840 2

原创 Java代理模式

代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

2022-06-09 19:30:28 756

原创 binlog 和 redo log一致性

随着请求量和数据量的增加,一台机器已经无法满足需求,我们就需要把数据和请求分散到多台机器。我们就需要引入分布式存储。分布式存储有以下特性:增强可用性:如果数据库的某个节点出现故障,在其他节点的数据仍然可用; 维护方便:如果数据库的某个节点出现故障,需要修复数据,只修复该节点即可; 均衡I/O:可以把不同的请求映射到各节点以平衡I/O,改善整个系统性能; 改善查询性能:对分区对象的查询可以仅搜索自己关心的节点,提高检索速度。 分布式存储首先要解决把整个数据集按照分区规则映射到多个节...

2021-05-27 10:23:17 1073

原创 Java内存模型

什么是JAVA内存模型 JMM是一种规范,目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。 Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。...

2021-05-26 18:05:10 94

原创 分布式存储--常见分区算法

随着请求量和数据量的增加,一台机器已经无法满足需求,我们就需要把数据和请求分散到多台机器。我们就需要引入分布式存储。分布式存储有以下特性:增强可用性:如果数据库的某个节点出现故障,在其他节点的数据仍然可用; 维护方便:如果数据库的某个节点出现故障,需要修复数据,只修复该节点即可; 均衡I/O:可以把不同的请求映射到各节点以平衡I/O,改善整个系统性能; 改善查询性能:对分...

2019-08-05 09:21:35 1504 1

原创 Dubbo之connet timeout问题排查

一 背景 购物车依赖推荐的dubbo接口,推荐服务每天凌晨3点会批量下线推荐dubbo服务,全量更新商品,更新完以后在执行上线操作,每天凌晨3点10分左右,购物车工程都会出现5000左右的connection timeout error。正常依赖的dubbo服务工程在启动的时候,消费端会经常出现connection timeout error。二 问题排查 ...

2019-07-23 13:24:04 1430

原创 TCP网络传输

一、TCP简介TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP基本术语:接收缓冲区:服务端建立连接后,接受的数据会存入内核的接收缓冲区中,然后调用recv系统调用,把接收缓冲区中的数据拷贝到应用程序的内存中,进行处理。 发送缓冲区:客户端调用send,把数据拷贝到内核的发送缓冲区,再通过网...

2019-01-11 10:05:37 269

原创 Dubbo之调度Dispatcher

一、Dispatcher介绍    对于Dubbo集群中的Provider角色,有IO线程池和业务处理线程池(默认200)两个线程池,所以当业务的并发比较高,或者某些业务处理变慢,业务线程池就很容易被“打满”,抛出“RejectedExecutionException: Thread pool is EXHAUSTED! ”异常。<dubbo:provider version="1....

2018-09-12 20:36:21 1640

原创 git 常见回退命令

一、取消某次合并git merge --abort #如果Git版本 >= 1.7.4git reset --merge #如果Git版本 >= 1.6.1二、回滚commit和push的代码# 找到要回滚的commitIDgit reset [--mixed | --soft | --hard | --merge | --keep] [<commit&g...

2018-08-23 22:01:45 514

原创 spring之AOP

一、AOP术语Aspect(切面): aspect 由 pointcount 和 advice 组成, 它既包含了横切逻辑的定义,切面就是对横切关注点的抽象。 pointcut(切点): 匹配 join point 的谓词(a predicate that matches join points)。 advice(增强): 指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环...

2018-08-13 19:54:22 176

原创 Dubbo之RpcContext详解

一、RpcContext简介 RpcContext 是一个 ThreadLocal 的临时状态记录器,当接收到 RPC 请求,或发起 RPC 请求时,RpcContext 的状态都会变化。比如:A调B,B再调C,则B机器上,在B调C之前,RpcContext记录的是A调B的信息,在B调C之后,RpcContext记录的是B调C的信息。二、RpcContext的使用消费端 ...

2018-08-07 20:13:14 9616

原创 Dubbo之扩展点ExtensionLoader

一、扩展点简介Dubbo 的扩展点加载从 JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来。Dubbo 改进了 JDK 标准的 SPI 的以下问题:JDK 标准的 SPI 会一次性实例化扩展点所有实现,如果有扩展实现初始化很耗时,但如果没用上也加载,会很浪费资源。 如果扩展点加载失败,连扩展点的名称都拿不到了。比如:JDK 标准...

2018-06-05 15:38:14 237

原创 Dubbo之服务发现

一、Dubbo简介 Apache Dubbo (incubating) |ˈdʌbəʊ| is a high-performance, java based RPC framework open-sourced by Alibaba. As in many RPC systems, dubbo is based around the idea of defining a ser...

2018-06-04 11:55:02 461

原创 ArrayList for遍历删除分析

一、案例//案例一 public static void main(String[] args) { List&lt;String&gt; list = new ArrayList&lt;&gt;(); list.add("1"); list.add("2"); for (String item : list) { ...

2018-03-13 16:58:32 185

原创 ThreadPoolExecutor源码解析

一、ThreadPoolExecutor简介使用线程池主要为了解决一下几个问题:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。 对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。public ThreadPoolExecutor(int corePoolSize, int maximumPool...

2018-02-28 14:27:24 157

Redis开发与运维(高清,书签)

《Redis开发与运维》,付磊,张益军编著,从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。(高清,带书签) 本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,Redis高可用集群解决方案,Redis设计和使用中的问题,最后提供了一个开源工具:Redis监控运维云平台CacheCloud。

2018-04-12

was压力测试

非常好用,是从别人那里5分下载的,现在便宜下载

2012-10-06

javascript下拉联动

javascript下拉联动,简单明了,详细解析

2012-10-06

CKedictor下载和详细使用说明

CKedictor是FCKedictor的改进,非常好用和简单,直接包含CKedictor包的下载和详细使用说明

2012-10-06

java面向对象课后题答案

找了很久才找到的哦,java面向对象课后题答案孙卫琴,

2012-06-17

《java编程思想4》答案

《java编程思想4》全部答案,完整版文件

2012-05-21

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

TA关注的人

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