自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lvjingang的博客

一个有理想有目标的一直努力学习的有为青年

  • 博客(60)
  • 资源 (15)
  • 收藏
  • 关注

原创 elasticsearch系列十:自研数据导出完胜官方

今天咱们来看下es的数据导出,最近接到项目经理很多导出需求,要求导出部分数据或者整月的数据,索性就自研了一套导出工具。自研采用纯java语言,通过无锁的内存队列实现生产消费模型,支持多种类型导出(json文件、CSV文件、MYSQL数据库、ES)。其实官方有现成的导出工具elasticsearch-dump,功能很强大,支持文件、es等多种类型。但是他的性能如何呢?接下来咱们一起看下。

2023-12-28 15:55:51 568

原创 MYSQL 深入探索系列六 SQL执行计划

好久不见了,近期一直在忙项目的事,才有时间写博客,近期频繁出现sql问题,今天正好不忙咱们看看千万级别的表到底该如何优化sql。mysql的执行计划有时候不一定是最优的,我们还需要利用explain多多了解执行计划,根据执行情况分析出sql的执行慢的原因。关注执行计划的时候不能只看某个值,应该多个字段联合起来分析sql,好了这期就先简单到这了。MYSQL系列经典文章MYSQl深入探索系列一 redo logMYSQl深入探索系列二 undo logMYSQl深入探索系列三 MVCC机制。

2023-12-29 12:09:02 1021

原创 MYSQL分库分表常见问题

分库:是将一个数据库分成多个数据库,但是总表数不变,部署到不同机器,这样可以分担数据库的读写压力,提高系统的吞吐能力。分表:就是一个表分成多个表,但是总体的库不变,这样可以减少单个表的数据量,提高查询性能。分库+分表是指库和表都切分,数量都发生变化,这种情况说明数据量已经达到一定程度,无论进行哪种单独的切分都会产生性能瓶颈。 如下图所示原数据库DB中有张user表,将表切成4份然后平分到2个数据库上。可以解决海量数据运维管理可以在海量数据里高效查询可以解决高并发下性能瓶颈提高系统的可伸缩性和可扩展性单实例性

2023-12-29 12:03:58 497

原创 elasticsearch列一:索引模板的使用

近期一直在负责es这块,就想着和大家分享一些使用经验,我们从存储、查询、优化、备份、运维等几个方面来做分享。今天咱们先看下如何更加合理的存储数据。要想深入了解一个技术还是官方文档啊,毕竟只有官方最了解自己的产品。希望接下来一段时间我们一起跟着官方文档深入学习es。

2023-12-28 16:14:43 747

原创 elasticsearch系列二:引入索引模板后发现数据达到一定量还是慢怎么办?

他的关系就好比mysql的主从一样,我向来提倡不要试图通过增加mysql的从节点来提高检索效率(会带来各种问题,首先同步延时就是大问题,即便是半同步模式遇到高并发更新的时候也会有一定的同步延时),通过引入缓存,合理使用索引,分库分表等来解决这个问题,从节点只用来保证高可用。上篇我们说到通过引入索引模板可以有效的应对各种新增需求,降低存储成本,提升检索效率,但是呀随着时间的推移,集群承载的数据量越来越大,导致检索越来越慢,今天我们就一起看下这种情况下如何处理。经过上述一些优化后我们的性能大有提升啊。

2023-12-28 16:12:41 413

原创 elasticsearch系列三:常用查询语法

前几篇我们介绍了如何在es中存储数据,如何更加合理的存储数据,今天我们来说下常用的查询语法,如何实现mysql中的等于、大于、小于、and 、or、in等方式。基本常用的查询语法都说了下,在给大家分享一个经验,通过java操作es的时候如果不熟悉api,可以基于kibana自动提示功能基本可以实现基本语法,然后根据kibana中的语法摸索出来java中API,好了咱们今天先到这,下期咱们看下如何更好的运维es集群。Elasticsearch系列经典文章elasticsearch列一:索引模板的使用。

2023-12-28 16:10:15 943

原创 elasticsearch系列四:集群常规运维

在使用es中如果遇到了集群不可写入或者部分索引状态unassigned,明明写入了很多数据但是查不到等等系列问题该怎么办呢?咱们今天一起看下常用运维命令。我们想要更好的使用es不能只注意查询语法的书写,需要全访问的深入的了解es,建议从头到尾过一遍官方文档,毕竟只有目前最了解孩子。Elasticsearch系列经典文章elasticsearch列一:索引模板的使用elasticsearch系列二:引入索引模板后发现数据达到一定量还是慢怎么办?elasticsearch系列三:常用查询语法。

2023-12-28 16:09:10 1265

原创 elasticsearch系列五:集群的备份与恢复

前几篇咱们讲了es的语法、存储的优化、常规运维等等,今天咱们看下如何备份数据和恢复数据。在传统的关系型数据库中我们有多种备份方式,常见有热备、冷备、全量+定时增量备份、通过开发程序备份等等,其实在es中是一样的。官方建议采用snapshot方式进行备份与恢复(它是有点冷备的意思,采用直接物理copy的方式,适合大数据量情况下),民间开源的有elasticsearch-dump方式进行备份但是这种方式只适用于小数据量的情况下,它是基于scroll语法进行的备份操作。

2023-12-28 16:06:18 1935 1

原创 elasticsearch系列六:索引重建

我们再起初创建索引的时候由于数据量、业务增长量都并不大,常常不需要搞那么多分片或者说某些字段的类型随着业务的变化,已经不太满足未来需求了,再或者由于集群上面索引分布不均匀导致节点直接容量差异较大等等这些情况,此时我们就需要重建索引。

2023-12-28 16:03:41 1034

原创 elasticsearch系列七:聚合查询

今天咱们来看下es中的聚合查询,在es中聚合查询分为三大类bucket、metrics、pipeline,每一大类下又有十几种小类,咱们各举例集中,有兴许的同学可以参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/search-aggregations.html 本次基于es7.10.2版本编写。

2023-12-28 16:02:43 1292

原创 elasticsearch系列八:如何解决聚合结果不精确问题

不知道大家有没有尝试上篇中所用的一些聚合查询,或者项目开发中有没有用过,我们会发现这些聚合几乎都是近似值,有些和我们预想的结果偏差较大。这是什么原因导致的呢?咱们开始揭秘。

2023-12-28 15:57:40 556

原创 elasticsearch系列九:异地容灾-CCR跨集群复制

起初只在部分业务中采用es存储数据,在主中心搭建了个集群,随着es在我们系统中的地位越来越重要,数据也越来越多,针对它的安全性问题也越发重要,那如何对es做异地容灾呢?今天咱们就一起看下官方提供的解决方案cross-cluster replication(简称ccr)。

2023-12-28 15:54:45 2032

原创 dubbo源码分析三:如何无缝对接spring

概述之前我们分析过dubbo执行rpc调用的时候如何同步和异步之间来回转换的,我们实际使用中发现dubbo直接在service接口上增加@DubboReference注解或者在xml配置文件中配置reference就可以直接在spring中引用到,就可以执行到InvokerInvocationHandler进而执行rpc。使用起来非常的方便,那这又是怎么做到的呢?咱们今天就一起来看下。猜想咱们先猜想一下,在通过debug逐步分析我们的猜想是否正确。我们在spring管理的类中可以

2022-01-25 10:48:21 2200 2

原创 dubbo源码分析二:SPI扩展

概述哈喽,咱们如约而至,今天咱一起看下dubbo的SPI扩展部分,说起这个不禁感慨当初开发dubbo的人,脑子怎么长得做出来这么优秀的产品。我们可以基于SPI做过滤器、负载均衡器、日志打印、协议扩展等等操作,非常的方便,而且相对于jdk原生SPI做了不少优化。咱们先实战一波,看下具体是如何使用的,然后再分析下源码。应用实战dubbo支持的SPI扩展有:协议扩展、调用拦截扩展、引用监听扩展、暴露监听扩展、集群扩展、路由扩展、负载均衡扩展、合并结果扩展、注册中心扩展、监控中心扩展、扩

2022-01-25 10:40:47 761

原创 dubbo源码分析一:rpc异步转同步

概述好久不见,大家最近可好,近期赶了一个月的项目终于完事了,可以闲下来学点东西了,今天咱们看下dubbo的异步转同步。之所以说这个是因为近期项目中遇到一个需求也需要异步转同步,于是借鉴了dubbo的实现,咱们今天一看下dubbo具体是怎么做的。源码分析dubbo远程rpc协议和网络框架有多种,我们以默认的dubbo协议、网络框架netty作为切入点,做分析,包结构如下图:DubboInvoker这个类很重要,因为客户端没有具体的实现都是通过代理实现的调用逻辑,而这个类就是

2022-01-25 10:30:26 3251

原创 面试突击系列之:高频面试题解说四

概述上次说都是redis的,今天咱们看看mysql的高频面试点,5年前可能懂点索引、常规sql优化就完事了,随着互联网对我们的影响,用户越来越多,使得公司对开发人员的技术要求也越来越高。对mysql要求也到了更深一步的层次了,来看下我们今天准备的面试题: 有条sql没有走索引导致性能很慢如何定位问题 说下mysql中b+tree索引 mysql默认隔离级别是什么,如何支持它的? 说下mysql几种常见log mysql主从模式下如何解决同步延时问

2021-09-22 16:42:47 118

原创 面试突击系列之:高频面试题解说三

概述今天我们准备说的全部是redis相关的,在缓存界redis基本保持霸主地位,而且随着互联网发展用户量越来越大,传统的关系型数据库已经无法满足现如今高并发的业务场景,redis成为各家解决高并发必备pass组件。导致redis也成了面试中的热门问题,基本10场面试9场都会问redis,所以redis是我们绕过不去的东西,今天我们准备了5个高频问题,咱们一起看下。1 说下redis淘汰策略有哪些首先我们看下为什么会有这个问题?咱们都知道redis数据是保存在内存中的,而内存容

2021-09-22 16:14:08 99

原创 Netty实现静态服务器之坑

概述最近在重构一个H5的项目,需要把关系型数据库干掉以及集成静态页面,尽可能减少部署成本。原本这个项目是独立的spring boot工程前端后分离的,页面是通过nginx跑起来的。重构后需要和MG(netty实现)服务端进行整合,在经过一系列尝试以后终于将后端能力重构到netty上,并且将复杂的逻辑关系用磁盘存储方式成功避免事物问题,从而去掉了关系型数据库。页面初加载本以为万事大吉,数据库都去掉了,就一个简单的页面而已,然噩梦刚开始。MG的架构采用 netty+netty-r

2021-09-22 16:09:30 538 1

原创 面试突击系列之:高频面试题解说二

概述今天看下20k+必问jvm相关面试问题,还是准备了4个面试题,咱们一起看下。 讲下jvm老年代垃圾回收过程 讲下jvm32G和31G区别? 讲下jvm的happens-before规则 生产环境cpu100%如何排查 jvm是java程序员必须打交道的一个东西,毕竟我们写的所有java代码都是在jvm基础上运行的,可能初期不太关注这个,整天CRUD但是随着时间推移我们在团队中负责的工作也越来越重,对java了解的也更加深入,逐渐开始关注代码运行效率,

2021-06-27 20:48:23 179 1

原创 面试突击系列之:常规面试题解说一

概述近期朋友出去面试,总结了几个常见高频问题,咱们来一起看下这些问题,咱们从以下三点来分析 面试官的心里是怎样的 如何在不会的情况下绕过主题回答 从源码角度分析回答 1 有用过@ Cacheable吗,说下底层的原理。 面试管心里 :个人猜想,主要是想考察面试人员spring的缓存框架原理和常规的集中对外缓存。 如果没用过这个问题如何回答:大概分为两种情况,一种了解点@Cacheable实际没用过,一种压根就听说过,见名知意,这是个缓存相关...

2021-06-27 20:45:51 86

原创 面试突击系列之:常规面试题解说一

概述近期朋友出去面试,总结了几个常见高频问题,咱们来一起看下这些问题,咱们从以下三点来分析 面试官的心里是怎样的 如何在不会的情况下绕过主题回答 从源码角度分析回答 1 有用过@ Cacheable吗,说下底层的原理。 面试管心里 :个人猜想,主要是想考察面试人员spring的缓存框架原理和常规的集中对外缓存。 如果没用过这个问题如何回答:大概分为两种情况,一种了解点@Cacheable实际没用过,一种压根就听说过,见名知意,这是个缓存相关...

2021-06-24 09:03:30 84

原创 spring cloud gateway 之 动态路由改造

目录 gateway本地文件常规路由配置 本地文件配置对业务造成的痛点 动态路由改造 1 gateway本地文件常规路由配置我们先大致看下gateway中的常规概念 Route(路由):路由是网关的基本单元,由ID、URI、一组Predicate、一组Filter组成,根据Predicate进行匹配转发。 Predicate(谓语、断言):路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、

2021-05-30 17:41:40 1195 1

原创 MYSQL深入探索系列之五 buffer_pool

目录 前期回顾 select 语句执行流程 update 流程 buffer_pool是如何维护的 1,前期回顾上讲我们说到了mysql服务端的优化,还记得有有哪些么?忘记的朋友回顾下MYSQl深入探索系列四 服务端优化其中有个参数是调整buffer_pool缓存页总大小的今天我们来细说下这个buffer_pool到底是个什么东西,怎么运行的,mysql又是如何维护它的。2,select 语句执行流程我们平时crud的...

2021-05-27 14:58:42 199 2

原创 MYSQl深入探索系列四 服务端优化

目录 环境准备 常见innodb存储引擎常见参数及调优 压测优化后的数据库 1,环境准备一台linux Centos7.6,2路12核 256G 5TSAS存储 980GSSD系统盘的物理机。mysql安装包mysql-5.7.36.tar.gz,xshell 5.x 客户端。下面我们来简单搭建下。$ tar-zxvfmysql-5.7.36.tar.gz#解压安装tar.gz$ mvmysql-5.7.36mysql#更改文件名...

2021-05-27 14:57:35 77

原创 MYSQl深入探索系列三 MVCC机制

目录 undo log版本链回顾 什么是readview 事务的隔离级别以及每种隔离级别带来的问题 mysql中是如何支持read committed的 mysql中是如何支持repeatbleread的 总结 1,undo log版本链回顾我们上篇讲解了undo log版本链是怎样的《MYSQl深入探索系列二 undo log》咱们在来看下那张图2,什么是readview我们不是说mvcc吗?怎么又出现个readview呢,这..

2021-05-27 14:53:44 89

原创 MYSQl深入探索系列二 undo log

目录 前期回顾 什么是undo log undo log结构怎样的 什么是 undo log 版本链 1 前期回顾上次我们将了 mysql中的重做日志 redo log的作用以及存储结构等。大家还记得redo log中都记录了那些数据么?接下来看下用于事务回滚的undo log2什么是undo log我们在一个事务里执行几条update语句,更新了某个字段,但是事务执行一半需要回滚,此时怎么做了,已经更新了的字段如何回到旧值呢?...

2021-05-27 14:51:02 187

原创 MYSQl 深入探索系列一 redo log

目录 什么是redo log,记录了那些东西 redo log 存储结构是怎样的 redo log 作用是什么 redo log 写入策略是怎样的 1 什么是redo log简单的说 redo log 是mysql 底层存储引擎innodb的一种日志。最终是保存在磁盘的上的。一条redo log中大致记录着有 日志类型,表空间id,数据页,数据页中的偏移量,具体修改的数据。也就是说记录了什么操作类型,操作了那个表空间的那个数据页,具体修改了那些值。..

2021-05-27 14:48:17 198

原创 手工实现AOP核心源码之aop1.0版

目录 环境准备 核心代码实现 测试 总结 环境准备 spring源码版本5.0.2 jdk1.8 ide idea 在源码中创建子模块 友情提示:我们1.0版本只需要实现前置,后置通知即可。由于ioc源码需要依赖spring 本身的,所以spring ioc源码有些地方需要改造...

2020-01-21 14:53:49 373 3

原创 shiro框架之扩展增加短信随机码认证

闲暇功夫想起来2年前的一场面试,当时对shiro算是刚刚入门,大佬问道怎么在shiro基础上增加短信随机码认证?当时确实不知道在怎么做,今天给大家说下如何扩展shiro. 默认大家对shiro的应用是熟悉的,我们直接看登录认证方法,前台收到用户名,密码后封装到UsernamePasswordToken中,然后调用Subject.login方法,将UsernameP...

2019-12-18 15:09:49 277

原创 基于canal client 自实现canal同步es(增量,全量)

canal是阿里开源的一款纯java语言的mysql增量订阅工具,主要是伪装成slave节点,向mysql发送dump协议官方原理图如下: 官方的解释: server代表一个canal运行实例,对应于一个jvm ...

2019-10-12 10:42:04 6031 2

原创 logstash之ruby模块

最近二期开始上线了,一直没顾上写博客,今天忙里偷闲写一篇关于logstash的,项目引入elk有半年多了,由于日志记录的错综复杂.之前解析都是通过ruby进行字符串分割实现,但是这个月对日志记录这块做了调整,全部采用json方式记录.这样一来logstash解析日志这块就的重新实现.json嵌套了2层,如果直接用json进行格式化,es中会有冗余字段,所以只能人工解析json,话不多说...

2019-10-11 17:35:54 6411 3

原创 mysql中索引的扫盲揭秘

实际生产中我们大多都采用的innodb存储引擎,并且使用的是B+tree索引,那么为什么是B+tree索引知道么.今天来分析下长见的树有如下: 二叉树 binary search tree 平衡二叉树 balanced binary search tree...

2019-07-12 11:13:26 230

原创 聊聊mysql中的锁

今天我们聊聊mysql中innodb存储引擎中支持的锁以及锁算法 先看下innodb对事物的隔离级别支持的程度: 应对这些隔离级别innodb又是怎么实现的呢?我们一起来看下,innodb支持的锁类型有 共享锁(行锁):Sh...

2019-07-12 10:15:54 148

原创 spring源码分析二之IOC初始化大致流程扫盲

个人感觉先带大家理清下主要线路在回头深入分析各个细节可能更好,之前看其他人的博客都是先分析细节最后在做的总结,容易让人云里雾里的不知道在跟什么,反正我是这样的,当理清楚大致流程后在回过去分析各个细节,相对来说好理解,本章重点是带着大家先熟悉下大致初始化流程,后续深入细节分析各个步骤现在进入主题 我实在spring-context模块下的单元测试...

2019-06-28 16:54:26 184

原创 spring源码分析一之环境准备

好长一段是时间不知道学什么好,起初看过些开源框架源码,几乎全是一扫而过,根本看不进去,spring源码我记得还是今年初开始看的,是死磕spring的系列博客,公众号是java驿站,开始的看的云里雾里的,后续也放弃了.就在前段时间这个想法又萌芽了.决心自己也死磕下spring. 1,首先我们先准备下环境jdk需要1.8及以上,下载源码. ...

2019-06-28 15:38:30 142

原创 ES生产优化建议

直接进入主题 生产环境中首先进行节点角色的划分,当集群出现问题时可以快速进行数据恢复 master node , Data node ,coordinate node .ingestznode各节点作用如下: master node 主要用户集群的轻量级的管理工作,比如索引的创建删除,追...

2019-05-09 14:38:45 480

原创 Elasticsearch 底层存储原理解密

好久没写博客了,今天闲来无事,剖析下Elasticsearch,es最近这几年异常的火爆,其开箱即用,天然支持分布式的特性越来越受到欢迎,目前笔者所在的公司主要用es存储日志类型的信息. 闲话不多说,默认有es相关的基础,当客户端想es的shard中写入数据的时候,过程大致如下: 客户端通过路由节点到达指定的shard分片,es的shard地...

2019-05-09 11:23:24 4125

原创 初识分布式缓存中间件codis

先看下什么是codis吧.codis是由豌豆荚开发的一个分布式 Redis 服务, 用户可以看成是一个无限内存的 Redis 服务, 有动态扩/缩容的能力. 对偏存储型的业务更实用, 如果你需要 SUBPUB 之类的指令, Codis 是不支持的. 时刻记住 Codis 是一个分布式存储的项目. 对于海量的 key, value不太大( <= 1M ), 随着业务扩展缓存也要随之扩展的业务场...

2018-07-31 16:29:04 1194 1

原创 并发框架Disruptor之Hell word

有人可能要问了,Disruptor是什么?为什么要用它?    Disruptor是一个开源的高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 它能够在一个线程里每秒处理6百万订单,是不是很厉害1,Disruptor中常见的几个术语RingBuffer: 被看作Disruptor最主要的组件,然而从3.0开始RingBu...

2018-06-17 23:38:27 595

原创 分布式文件存储系统fastdfs与springmvc的整合

首先来大致上介绍一下fastdfs它是一个分布式文件存储系统,适用于中小文件的存储.建议范围:4KB 主要解决了海量数据存储问题.并且是开源的.主要组成:1,tracker 跟踪器.主要用来协调客户端的请求.且在内存中记录所有存储组和存储服务器的信息状态。2,storage 存储器用来存储文件(data)和文件属性(metadata)3,client 客户端业务

2018-04-12 16:13:55 3141

日志按照指定数量生成

指定生成指定数量的日志,可以保留最近N天的日志信息,采用log4j完美解决

2018-01-11

springboot之集成mybatis mongo shiro druid redis jsp

这个deamo集成了springboot之集成mybatis mongo shiro druid redis jsp

2017-12-20

mongodb之CRUD小demo

mongo整合spring之后,的项目,spring为我们提供了还多方法,实质操作简单

2017-10-22

shiro-auth

shiro中的核心表结构设计,真正的核心,表结构全是我开发中的整整的表结构

2017-09-28

spring-shiro-xml

shiro中的与spring结合的核心代码,可以使用缓存进行存储用户信息

2017-09-28

remle的核心方法

shiro中的自定义的realm的核心代码。以及权限的具体授权过程

2017-09-28

权限表的表结构

这是权限表的表结构,只需要一张表就可以控制到按钮级别

2017-09-28

rocketmq3.2.6.tar.gz

这个是编译好的,直接解压就可以用了,如果想编译安装,步骤有点麻烦,需要安装maven

2017-09-28

ThreadLocal

利用过滤器去获取request和response,进行将其设置到ThreadLocal从而保证我的请求的安装线,这样就能在java普通类中获取request和response

2017-09-08

filter工具类

利用过滤器去获取request和response,进行将其设置到ThreadLocal从而保证我的请求的安装线,这样就能在java普通类中获取request和response

2017-09-08

mysql编译安装

linux环境下的mysql编译安装的过程,只要按照我的方法进行,就不会出错,前提示你的linux可以安装yum源,否则无法编译安装

2017-09-03

redis-3.2.1.gem

rub的环境

2017-08-28

Spring动态切换datasource实现mysql多住多从

利用aop进行动态的数据源切换

2017-08-23

jedisCluster链接池

适用于redis集群,3.0版本以上支持集群

2017-08-22

redis哨兵链接池java实现

采用的哨兵集群监控一主两从

2017-08-22

空空如也

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

TA关注的人

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