- 博客(226)
- 资源 (2)
- 收藏
- 关注
原创 六.吊打面试官系列-数据库优化-深入Mysql日志机制
在Mysql中有三个非常重要的日志文件:Undolog ,Redolog,Binlog。Undolog是用作原子性保证的日志文件,MVCC多版本快照也是存储在Undolog日志文件中。Redolog是Mysql持久化日志文件,如果Mysql宕机数据丢失可以通过Redolog还原数据,Binlog也可以用作数据还原以及实现主从复制。本篇文章我们一起来研究一个下三种日志文件底层的执行原理以及相关参数配置。
2024-04-21 17:06:55 919
原创 五.吊打面试官系列-数据库优化-Mysql底层执行原理
InnoDB存储引擎主要就是包含了一些buffer pool、redo log buffer等内存里的缓存数据,同时还包含了一些undo日志文件,redo日志文件等东西,同时mysql server自己还有binlog日志文件。在你执行更新的时候,每条SQL语句,都会对应修改buffer pool里的缓存数据、写undo日志、写redo log buffer几个步骤;但是当你提交事务的时候,一定会把redo log刷入磁盘,binlog刷入磁盘,完成redo log中的事务commit标记;
2024-04-16 19:56:14 43
原创 四.吊打面试官系列-数据库优化-Mysql锁和事务原理
本篇文章主要讲解两块内容:Mysql中的锁和ACID原理,这2个部分是面试的时候被问的蛮多的看完本篇文章之后相信你对Mysql事务会有更深层次的理解,如果文章对你有所帮助请记得好评事务: 指作为单个逻辑工作单元(Service方法)执行的一系列操作(数据库操作。),要么完全地执行,要么完全地不执行.事务可以看做是一组任务,通常对应了一个业务方法,这些任务要么全部成功,要么全部失败。在实际的业务开发中我们通常在Service层通过@Transcational注解来指定事务。
2024-04-16 19:52:12 1303 1
原创 三.吊打面试官系列-数据库优化-索引优化实战
mysql主要分为Server层和存储引擎层,Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog日志模块。
2024-04-16 19:51:28 31
原创 二.吊打面试官系列-数据库优化-Explain索引分析
通过explain命令我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。name列没有索引,那么在去重的时候会使用一个临时表来存储name列的值然后去重。这里我们需要一个常识,索引就是以空间换时间的打法,索引本身会占用磁盘空间,且索引会降低DML操作(增删改)的性能,当我们。
2024-04-16 19:49:51 34
原创 一.吊打面试官系列-数据库优化-认识MySql索引
索引(Index)是帮助DBMS(数据库)高效获取数据的数据结构,索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。如果数据库没有索引就会走表进行全表扫描,一旦数据量上来,简直就是灾难。
2024-04-16 19:47:09 135
原创 拜托别再问我Mybatis-66个类手撸一个Mybatis
之前出了一套《吃透Mybatis源码》,本篇文章是整体性的概括一下Mybatis的底层实现流程,以《66个类手撸Mybatis》为基础进行讲解,代码已经上传到Gitee,希望对你有所帮助相比Spring来说Mybatis的源码是相对简单的,你可以通过上面的源码去深入理解Mybatis核心机制,当然这里的源码只是实现了简单的单个对象查询,时间关系其中很多细节是没有去实现的,但是毫不影响你对Mybatis的理解或者用于面试吊打面试官了。建议你对着图多看几遍。
2024-03-24 15:40:41 915 1
原创 RabbitMQ入门到实战一篇文章就够了
MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。官方地址:http://www.rabbitmq.com/
2024-03-08 11:35:05 917 1
原创 阿里开源的Java诊断利器Arthas
通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。
2024-02-26 14:45:15 1419 3
原创 kafka高吞吐、低延时、高性能的实现原理
Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万,这其中的原由值得我们一探究竟,让我们一起掌握Kafka各种精巧的设计。
2023-12-08 17:01:06 1810 3
原创 五.docker+jenkins自动部署项目
问题:软件的迭代过程包括,设计,编码,编译,构建,测试,发布,运维等等流程,早期的软件开发模式为瀑布式开发,这种开发模式迭代更新太慢,每个环境都需要耗费大量人力和时间成本。往往很长时间才迭代一次。如今企业追求的都是敏捷开发:快速开发快速迭代,尽可能的缩短软件的开发生命周期。DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。
2023-10-07 13:14:13 1762 1
原创 四.Docker容器技术
问题:软件的迭代过程包括,设计,编码,编译,构建,测试,发布,运维等等流程,早期的软件开发模式为瀑布式开发,这种开发模式迭代更新太慢,每个环境都需要耗费大量人力和时间成本。往往很长时间才迭代一次。如今企业追求的都是敏捷开发:快速开发快速迭代,尽可能的缩短软件的开发生命周期。DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。
2023-10-07 12:55:32 718
原创 探秘MySQL底层架构:设计与实现流 程一览
InnoDB存储引擎主要就是包含了一些buffer pool、redo log buffer等内存里的缓存数据,同时还包含了一些undo日志文件,redo日志文件等东西,同时mysql server自己还有binlog日志文件。在你执行更新的时候,每条SQL语句,都会对应修改buffer pool里的缓存数据、写undo日志、写redo log buffer几个步骤;但是当你提交事务的时候,一定会把redo log刷入磁盘,binlog刷入磁盘,完成redo log中的事务commit标记;
2023-07-25 09:49:11 2888 12
原创 微信小程序接入微信支付
小程序,代码案例参考:https://github.com/wechatpay-apiv3/wechatpay-java/blob/main/service/src/example/java/com/wechat/pay/java/service/payments/jsapi/JsapiServiceExtensionExample.java。小程序开发指引:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_2.shtml,
2023-07-23 08:30:06 1255 2
原创 腾讯云COS对象存储
千呼万唤始出来,太忙了太忙了,本次带来腾讯云COS对象存储。也是因为搞项目正好用到COS,所以就记录下来,希望对大家有所帮助。
2023-07-23 08:09:36 879 1
原创 谁说的前端已死后端已亡?你给我站出来
今年莫名其妙的网上就冒出来一句话:前端已死后端已亡,然后就会有很多人说工作不好找,要求高等等,本人也是在编程领域混迹了很多年,今天我们就来客观的分析一下,现在互联网到底是一个什么情况。
2023-05-17 18:31:30 2753 6
原创 一.手把手教你部署项目-VMware安装Centos
市场内卷,只会写代码的程序员可没那么吃香了,在企业中很多时候会要求后端程序写前端,甚至做运维,因为小公司为了解决成本是不会请专门的运维人员的。所以对于后端程序原来说,会一些运维只是必不可少的,我们就是应该向着全栈进发才更有竞争力。《手把手教你部署项目》专栏将会从Centos安装,Linux常用命令,传统项目部署,Docker容器化部署,K8S服务编排几个方面,让你一步一步掌握企业项目部署方式。
2023-05-17 10:19:05 1069
原创 四.从零开始JVM实战高手-JVM监控及线上问题定位
Java程序员面试JVM几乎比问,对于JVM监控,线上OOM,CPU负载100%等问题也是经常被问到,尽管在企业中不一定轮得到我们去处理线上问题,但是不管是为了面试还是为了应对开发那么对于JVM线上问题处理都是必须要去了解的。相对而言,解决故障问题也好,处理性能瓶颈也罢,通常思路大致都是相同的,即:分析数据(日志) , 分析排查,问题定位,解决问题 ,如果我们连程序执行的数据或日志都拿不到,那么我们是没办法去定位问题的。
2023-05-13 17:03:02 1531
原创 三.从零开始JVM实战高手-JVM的内存结构
目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。
2023-04-07 00:13:28 683
原创 二.从零开始JVM实战高手
目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。除了以上三种以外,也可以自定义类加载器,根据具体的需求来加载对应的类。
2023-03-30 09:05:00 664 1
原创 一.从零开始JVM实战高手
目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。
2023-03-22 09:06:52 1905 6
原创 以微服务注册中心为背景学习Java并发
文章作者:老钟手动模拟实现一个注册中心,以该案例为背景进行Java并发的相关知识学习。(1):负责接收各个服务的请求,是可以独立部署和启动的,启动了以后,他会以一个web工程的方式来启动,启动之后就是监听各个服务发送过来的http请求,注册、心跳、下线(2):组件,依赖包,各个服务需要引入这个依赖,在服务启动的时候就可以去让register-client来运行,来跟register-server进行通信,比如说完成这个注册,或者是心跳的通知。
2023-02-15 10:28:59 859 1
原创 开源流程引擎Camunda
与它同类型的流程引擎有jbpm、activiti、flowable,但与Camunda相比,Camunda性能和稳定性都表现较好,更轻量级,有人做过相关测试,camunda性能比flowable提升最小10%,最大39%,而且camunda无报错,flowable有报错,camunda在高并发场景下稳定性更好。接下来可以开启流程去测试一下,地址http://localhost:8080/camunda/app/tasklist/接下来配置人工任务,选中批准付款节点,点击右侧用户分配,分配给demo用户。
2023-02-11 17:44:15 3195 2
原创 代替swagger的api接口神器
大家在后端开发开发过程中,最痛恨的两天事情:1.写文档,2.别人不写文档。而我们后端开发,必定经历的事情就是要和前端&测试对接,我们需要把我们的业务接口告知他们,让前端和测试能:1.并行开发,2.对接联调实现完整功能,3.测试根据接口完成测试用例编写和测试,所以避免不了的就需要我们出接口文档。我在 Apifox 的“在线分享”选择开放给他们的接口,配上环境,就是一个完美的 API 文档了,还能在线直接运行和生成代码。我就拥有了一个方便的,美观的,可以团队协作的,还能在线调试的,完美的 API 文档。
2023-02-11 17:27:43 4854 8
原创 nacos源码分析-服务注册(服务端)
上一篇文章我们了解了《Nacos服务注册》客户端源码,本篇文章我们来看一下服务注册Nacos服务端的源码执行情况。
2022-12-28 05:22:54 1537
原创 nacos源码分析-服务注册(客户端)
一直都想写SpringCloudAlibaba的源码分析,终于开始动手第一篇了,如果想要看懂Nacos源码至少要把《SpringBoot自动》配置看了,不然就是看天书。本篇文章呢带大家一起来看一下Nacos-Client 客户端服务注册这一部分的源码。
2022-11-19 22:43:15 3174 3
原创 Sharding-JDBC实现读写分离
快一个月没有更新文章了,太忙了太忙了,虽然慢了一点,但是我肯定不会断更。上一篇文章是《Mysql主从复制》,光是数据库层面的主从复制可不行,应用层面也是需要读写分离的,所以接上一篇文章我们来讲如何通过Sharding-JDBC实现应用读写分离。
2022-10-22 17:05:34 6185 2
原创 使用canal解决Mysql和Redis数据同步(TCP)
之前写过一篇文章《[使用canal解决Mysql和Redis数据同步问题](https://blog.csdn.net/u014494148/article/details/123336787)》,也是使用canal实现mysql和redis的数据同步,和该篇文章不一样的是,上一篇是基于MQ实现数据同步,该篇文章是基于TCP方式来实现。
2022-08-20 08:36:07 5147 12
原创 高性能对象存储minio
MinIO 是在 Apache License v2.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。MinIO 是一个高性能的对象存储原生支持 Kubernetes 部署的解决方案。
2022-08-17 16:48:23 9259 15
原创 SpringBoot入门到精通-基于阿里云短信服务-定义Starter封装通用组件
在实际项目开发中有大量的通用功能比如发短信,文件上传等。SpringBoot提供了便利的方式支持我们对公共业务功能进行抽取封装,本篇文章是基于SpringBoot定义starter,以短信为例,定义通用的starter组件实现短信的发送。...
2022-08-17 14:43:25 2739
原创 四.Kafka入门到精通-SpringBoot整合Kafka(Producer拦截器&Producer监听器)
上一章讲了一下Kafka在SpringBoot如何使用,本篇文章在上一篇文章的基础上讲解如何给生产者添加监听器和拦截器
2022-07-03 22:51:30 3759 3
原创 三.Kafka入门到精通-SpringBoot整合Kafka(同步&异步消息&事务消息&手动确认)
前面两个章节我们把Kafka给安装起来然后使用命令演示是生产和消费的过程,以及Kafka的架构原理,接下来就是Kafka的实战使用,顺应如今企业流行的开发模式,当然要使用SpringBoot和Kafka进行整合。第一步:我们基于SpringBoot来快速入门Kafka,我这里使用的SpringBoot版本是2.2.5.RELEASE ,对应spring-kafka的版本是2.3.6,具体依赖如下:第二步:导入依赖之后需要为SpringBoot创建启动类,在启动类中我们通过注解的方式创建一个Topic,如下
2022-06-12 17:00:41 5037 2
原创 二.Kafka入门到精通-Kafka核心概念
前言上一篇我们认识了一下Kafka以及完成了一个快速入门程序。这篇文章我们将学习Kafka的整体架构,工作流程,以及一些核心概念,正所谓知其然知其所以然。Kafka的架构我们知道,消息队列的工作流程需要三部分组成:Producer生产者 ,Kafka服务器 ,Consumer消费者,生产者发送消息到Kafka,消费者从Kafka拉取消息。而Kafka本身是分布式架构的,如下图:看过我《RocketMQ入门经典》的朋友应该能看出来这个图和RocketMQ的架构图是很相似的,或者说RocketMQ很多
2022-05-27 16:07:53 3502 4
原创 一.Kafka入门到精通-Kafka快速入门
前言在内卷严重的程序员圈子中,原地踏步就是退步,所以不能再躺平啦,赶紧爬起来学习,接下来博主将推出《Kafka入门到精通》系列文章,让你可以在企业中玩起Kafka来得心应手,此乃升职加薪必备呀。Kafka认识Kafka 是由Linkedin公司开发的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,是一款基于发布订阅模式的开源消息引擎系统。相对于其他的消息组件来说Kafka拥有更好的吞吐量、内置分区、具有复制和容错的功能,这使它成为一个非常理想的大型消息处理应用。使用场景如:网页浏览
2022-05-25 16:55:16 5764 5
原创 十一.全文检索ElasticSearch经典入门-SpringBoot整合ElasticSearch7
你可以通过[官网文档]看到ElasticSearch7和6的变化,本文的重点在于在SpringBoot环境中使用ElasticSearch7。
2022-05-03 10:02:20 2068 3
原创 十.全文检索ElasticSearch经典入门-自动补全功能
今天给大家讲述一下如何简单快速的基于SpringBoot整合ElasticSearch搜索补全功能,该功能是全文检索中很常见的功能,当我们输入关键字,ElasticSearch自动帮我们进行单词联想如下:
2022-05-01 23:19:27 3209
client-adapter.es6x-1.1.5-jar-with-dependencies.jar
2022-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人