自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

墨家巨子@俏如来

编程路上的一名小学生,旨在技术分享

  • 博客(234)
  • 资源 (2)
  • 收藏
  • 关注

原创 六.逼格拉满-Prometheus+Grafana微服务监控告警

微服务架构是一个分布式系统,由多个独立的服务组成,每个服务可能运行在不同的容器、虚拟机或物理机上,那么在生产环境中我们需要随时监控服务的状态,以应对各种突发情况,比如:内存爆满,CPU标高等等。Prometheus作为一种开源的监控和告警系统,天生就是为分布式系统设计的。它能够轻松地收集、存储和查询各个微服务的监控数据,为微服务架构提供全面的监控能力。Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。

2024-05-23 17:11:59 638

原创 十三.吊打面试官系列-JVM优化-深入JVM对象创建流程

在Java中,对象的内存分配主要由Java虚拟机(JVM)的堆内存管理器负责。当使用new关键字创建对象时,JVM会在堆内存中为对象分配内存。

2024-05-23 17:10:38 788

原创 十二.吊打面试官系列-JVM优化-深入JVM内存模型

需要注意的是,虽然永久代已经被去掉,但方法区(Method Area)的概念仍然存在。,运行时数据区由: 方法区,虚拟机栈,本地方法栈,程序计数器,堆 五部分组成,其中堆和方法区是线程共享的,其他区域是线程隔离的,也就是线程私有,比如:程序计数器在每个线程执行的时候都有一个私有的程序计数器。操作数栈(用于计算的临时数据存储区):操作数栈(Operand Stack)也常称为操作栈,它是一个后入先出栈(LIFO),当一个方法刚刚开始执行时,其操作数栈是空的,随着方法执行和字节码指令的执行,会。

2024-05-15 16:43:52 581

原创 十一.吊打面试官系列-JVM优化-深入JVM类加载机制

从本篇文章开始我们来探讨JVM相关的知识,内容附带JVM的启动,JVM内存模型,JVM垃圾回收机制,JVM参数调优等,跟着文章一步一步走相信你对JVM会有一个不一样的认识,如果觉得文章对你有所帮助请给个好评吧。

2024-05-15 16:43:24 1068

原创 十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

上一篇文章我们讲解了一下Tomcat底层的结构和执行原理,我们需要重点去掌握的是Tomcat的高内聚低耦合的设计,以及责任链模式,以及Tomcat NIO编程模式,这些是Tomcat比较核心的点,本篇文章我们将对Tomcat的参数做一些了解,然后通过Jemeter压测来对Tomcat进行调优。

2024-05-10 15:55:28 1065

原创 九.吊打面试官系列-Tomcat优化-深入源码剖析Tomcat启动流程

Tomcat的启动流程入口是 Bootsrap#main方法,他会先执行 init 进行初始化类加载器和实例化Catalina对象。它通过自定义WebAppClassloader类加载器来实现不同APP应用的加载隔离,从而打破了传统JVM的双亲委派机制。

2024-05-10 15:54:35 916

原创 八.吊打面试官系列-Tomcat优化-深入源码剖析Tomcat如何打破双亲委派

上篇文章《Tomcat优化-深入Tomcat底层原理》我们从宏观上分析了一下Tomcat的顶层架构以及核心组件的执行流程。本篇文章我们从源码角度来分析Tomcat的类加载机制,且看它是如何打破JVM的ClassLoader双亲委派的Tomcat 并没有完全打破 Java 的双亲委派模型,而是对其进行了扩展和补充,以适应 Web 应用程序的特殊需求。

2024-05-07 19:10:17 816

原创 七.吊打面试官系列-Tomcat优化-深入Tomcat核心架构

作为一个名Java程序员,对于Tomcat肯定是很熟悉的,平时可能我们只是在Tomcat容器中部署项目,并不会去了解Tomcat底层架构,或者是对Tomcat做性能优化。然而在大型在高并发的项目中对Tomcat的优化确实必不可少的。接下来我讲带你一步一步去了解Tomcat的底层的奥秘,掌握Tomcat性能优化技能让面试官或者同事对你刮目相看。

2024-04-29 00:57:20 931

原创 六.吊打面试官系列-数据库优化-深入Mysql日志机制

在Mysql中有三个非常重要的日志文件:Undolog ,Redolog,Binlog。Undolog是用作原子性保证的日志文件,MVCC多版本快照也是存储在Undolog日志文件中。Redolog是Mysql持久化日志文件,如果Mysql宕机数据丢失可以通过Redolog还原数据,Binlog也可以用作数据还原以及实现主从复制。本篇文章我们一起来研究一个下三种日志文件底层的执行原理以及相关参数配置。

2024-04-21 17:06:55 954 1

原创 五.吊打面试官系列-数据库优化-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 76

原创 四.吊打面试官系列-数据库优化-Mysql锁和事务原理

本篇文章主要讲解两块内容:Mysql中的锁和ACID原理,这2个部分是面试的时候被问的蛮多的看完本篇文章之后相信你对Mysql事务会有更深层次的理解,如果文章对你有所帮助请记得好评事务: 指作为单个逻辑工作单元(Service方法)执行的一系列操作(数据库操作。),要么完全地执行,要么完全地不执行.事务可以看做是一组任务,通常对应了一个业务方法,这些任务要么全部成功,要么全部失败。在实际的业务开发中我们通常在Service层通过@Transcational注解来指定事务。

2024-04-16 19:52:12 1389 6

原创 三.吊打面试官系列-数据库优化-索引优化实战

mysql主要分为Server层和存储引擎层,Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog日志模块。

2024-04-16 19:51:28 66

原创 二.吊打面试官系列-数据库优化-Explain索引分析

通过explain命令我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。id列的编号是 select 的序列号,有几个 select 就有几个id,并且id的顺序是按 select 出现的顺序增长的。name列没有索引,那么在去重的时候会使用一个临时表来存储name列的值然后去重。这里我们需要一个常识,索引就是以空间换时间的打法,索引本身会占用磁盘空间,且索引会降低DML操作(增删改)的性能,当我们。

2024-04-16 19:49:51 65

原创 一.吊打面试官系列-数据库优化-认识MySql索引

索引(Index)是帮助DBMS(数据库)高效获取数据的数据结构,索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。如果数据库没有索引就会走表进行全表扫描,一旦数据量上来,简直就是灾难。

2024-04-16 19:47:09 202

原创 拜托别再问我Mybatis-66个类手撸一个Mybatis

之前出了一套《吃透Mybatis源码》,本篇文章是整体性的概括一下Mybatis的底层实现流程,以《66个类手撸Mybatis》为基础进行讲解,代码已经上传到Gitee,希望对你有所帮助相比Spring来说Mybatis的源码是相对简单的,你可以通过上面的源码去深入理解Mybatis核心机制,当然这里的源码只是实现了简单的单个对象查询,时间关系其中很多细节是没有去实现的,但是毫不影响你对Mybatis的理解或者用于面试吊打面试官了。建议你对着图多看几遍。

2024-03-24 15:40:41 973 3

原创 RabbitMQ入门到实战一篇文章就够了

MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 。RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。官方地址:http://www.rabbitmq.com/

2024-03-08 11:35:05 1090 1

原创 阿里开源的Java诊断利器Arthas

通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。

2024-02-26 14:45:15 1565 3

原创 kafka高吞吐、低延时、高性能的实现原理

Kafka是大数据领域无处不在的消息中间件,目前广泛使用在企业内部的实时数据管道,并帮助企业构建自己的流计算应用程序。Kafka虽然是基于磁盘做的数据存储,但却具有高性能、高吞吐、低延时的特点,其吞吐量动辄几万、几十上百万,这其中的原由值得我们一探究竟,让我们一起掌握Kafka各种精巧的设计。

2023-12-08 17:01:06 1926 3

原创 五.docker+jenkins自动部署项目

问题:软件的迭代过程包括,设计,编码,编译,构建,测试,发布,运维等等流程,早期的软件开发模式为瀑布式开发,这种开发模式迭代更新太慢,每个环境都需要耗费大量人力和时间成本。往往很长时间才迭代一次。如今企业追求的都是敏捷开发:快速开发快速迭代,尽可能的缩短软件的开发生命周期。DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。

2023-10-07 13:14:13 2033 2

原创 四.Docker容器技术

问题:软件的迭代过程包括,设计,编码,编译,构建,测试,发布,运维等等流程,早期的软件开发模式为瀑布式开发,这种开发模式迭代更新太慢,每个环境都需要耗费大量人力和时间成本。往往很长时间才迭代一次。如今企业追求的都是敏捷开发:快速开发快速迭代,尽可能的缩短软件的开发生命周期。DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。

2023-10-07 12:55:32 735

原创 阿里云VOD视频点播

视频点播,视频直播是企业用的很多的业务了,下面介绍如何接入阿里云的视频点播

2023-08-07 13:22:27 2398 1

原创 探秘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 2928 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 1312 2

原创 腾讯云COS对象存储

千呼万唤始出来,太忙了太忙了,本次带来腾讯云COS对象存储。也是因为搞项目正好用到COS,所以就记录下来,希望对大家有所帮助。

2023-07-23 08:09:36 953 1

原创 谁说的前端已死后端已亡?你给我站出来

今年莫名其妙的网上就冒出来一句话:前端已死后端已亡,然后就会有很多人说工作不好找,要求高等等,本人也是在编程领域混迹了很多年,今天我们就来客观的分析一下,现在互联网到底是一个什么情况。

2023-05-17 18:31:30 2848 6

原创 一.手把手教你部署项目-VMware安装Centos

市场内卷,只会写代码的程序员可没那么吃香了,在企业中很多时候会要求后端程序写前端,甚至做运维,因为小公司为了解决成本是不会请专门的运维人员的。所以对于后端程序原来说,会一些运维只是必不可少的,我们就是应该向着全栈进发才更有竞争力。《手把手教你部署项目》专栏将会从Centos安装,Linux常用命令,传统项目部署,Docker容器化部署,K8S服务编排几个方面,让你一步一步掌握企业项目部署方式。

2023-05-17 10:19:05 1097

原创 终于等到你

终于等到你,还好我没放弃!3年坚持200+原创文章,50W浏览量,辛勤的付出终是有回报的。

2023-05-16 15:24:45 551 3

原创 四.从零开始JVM实战高手-JVM监控及线上问题定位

Java程序员面试JVM几乎比问,对于JVM监控,线上OOM,CPU负载100%等问题也是经常被问到,尽管在企业中不一定轮得到我们去处理线上问题,但是不管是为了面试还是为了应对开发那么对于JVM线上问题处理都是必须要去了解的。相对而言,解决故障问题也好,处理性能瓶颈也罢,通常思路大致都是相同的,即:分析数据(日志) , 分析排查,问题定位,解决问题 ,如果我们连程序执行的数据或日志都拿不到,那么我们是没办法去定位问题的。

2023-05-13 17:03:02 1559

原创 程序员如何把ChatGPT用到开发中

问:ChatGPT是程序员的好帮手?还是要干掉程序员?

2023-04-21 10:25:20 22192

原创 三.从零开始JVM实战高手-JVM的内存结构

目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。

2023-04-07 00:13:28 692

原创 二.从零开始JVM实战高手

目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。除了以上三种以外,也可以自定义类加载器,根据具体的需求来加载对应的类。

2023-03-30 09:05:00 673 1

原创 一.从零开始JVM实战高手

目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。

2023-03-22 09:06:52 1933 6

原创 ChatGPT史上最强AI,即将取代人类?

ChatGPT这款AI聊天机器人,最近越来越火,并且这个火的势头,经久不衰。

2023-02-16 06:29:54 4556 2

原创 以微服务注册中心为背景学习Java并发

文章作者:老钟手动模拟实现一个注册中心,以该案例为背景进行Java并发的相关知识学习。(1):负责接收各个服务的请求,是可以独立部署和启动的,启动了以后,他会以一个web工程的方式来启动,启动之后就是监听各个服务发送过来的http请求,注册、心跳、下线(2):组件,依赖包,各个服务需要引入这个依赖,在服务启动的时候就可以去让register-client来运行,来跟register-server进行通信,比如说完成这个注册,或者是心跳的通知。

2023-02-15 10:28:59 870 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 3326 2

原创 代替swagger的api接口神器

大家在后端开发开发过程中,最痛恨的两天事情:1.写文档,2.别人不写文档。而我们后端开发,必定经历的事情就是要和前端&测试对接,我们需要把我们的业务接口告知他们,让前端和测试能:1.并行开发,2.对接联调实现完整功能,3.测试根据接口完成测试用例编写和测试,所以避免不了的就需要我们出接口文档。我在 Apifox 的“在线分享”选择开放给他们的接口,配上环境,就是一个完美的 API 文档了,还能在线直接运行和生成代码。我就拥有了一个方便的,美观的,可以团队协作的,还能在线调试的,完美的 API 文档。

2023-02-11 17:27:43 4932 8

原创 nacos源码分析-服务注册(服务端)

上一篇文章我们了解了《Nacos服务注册》客户端源码,本篇文章我们来看一下服务注册Nacos服务端的源码执行情况。

2022-12-28 05:22:54 1546

原创 nacos源码分析-服务注册(客户端)

一直都想写SpringCloudAlibaba的源码分析,终于开始动手第一篇了,如果想要看懂Nacos源码至少要把《SpringBoot自动》配置看了,不然就是看天书。本篇文章呢带大家一起来看一下Nacos-Client 客户端服务注册这一部分的源码。

2022-11-19 22:43:15 3250 3

原创 八.吊打面试官系列-数据库优化-Sharding-JDBC实现读写分离

快一个月没有更新文章了,太忙了太忙了,虽然慢了一点,但是我肯定不会断更。上一篇文章是《Mysql主从复制》,光是数据库层面的主从复制可不行,应用层面也是需要读写分离的,所以接上一篇文章我们来讲如何通过Sharding-JDBC实现应用读写分离。

2022-10-22 17:05:34 6259 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 5258 12

client-adapter.es6x-1.1.5-jar-with-dependencies.jar

canal同步ES,解决druid类型转换失败问题,重新打包 client-adapter.es6x-1.1.5-jar-with-dependencies.jar , 放到canaladapter的plugin目录覆盖即可

2022-03-11

springcloudalibaba-seata-nacos-sentinel.zip

springcloudalibaba-seata-nacos-sentinel.zip

2021-01-29

空空如也

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

TA关注的人

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