自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 问答 (2)
  • 收藏
  • 关注

原创 nginx之proxy_buffering的作用

Nginx 的缓冲机制正是为了解决这个不匹配问题。Nginx 的缓冲机制是为了让后端能更快释放资源,而不是卡在慢客户端上,从而提升整体性能和并发能力。这样会占用后端连接资源(如 Tomcat、PHP-FPM、Node.js 等),降低并发能力。如果客户端接收得慢(比如网速差),那么后端必须一直等待客户端接收完数据才能释放资源。Nginx 接收后端响应内容,并先缓存到自己的内存或磁盘中。Nginx 直接把后端的数据流转发给客户端。后端可以快速释放资源,继续处理其他请求。然后再根据客户端的速度慢慢发送出去。

2025-05-27 09:41:46 290

原创 Springboot之类路径扫描

SpringBoot框架中默认提供的扫描类为:ClassPathBeanDefinitionScanner。webFlux框架中借助RepositoryComponentProvider扫描符合条件的Repository。扫描路径提供:includeFilters & excludeFilters。

2025-05-13 16:51:33 219

原创 python之web功能

python的web框架之flush & django。PyCharm构建web项目:选择django类型。

2025-04-13 18:03:18 121

原创 4.Python面向对象

self:本质为参数,即指向当前实例。不需要调用方显式指明该实参,该实参是由python内部自主传递的。函数 vs 方法的区别:类中的函数称之为方法,其余均称之为函数。封装:数据打包至一个对象或者同一种类型的函数汇总到一个类中。多态如下所示:参数args可以是任何存在方法send的类。面向对象三大特性:封装、继承、多态。类名规范:首字母大写。

2025-04-13 17:12:40 158

原创 3.Python模块&包

模块:按照功能划分抽象出的py文件。分为内置模块 & 自定义的功能模块 & 第三方模块。包含多个py文件的文件夹。

2025-04-06 20:06:57 1000

原创 2.python之函数

函数传参方式分为两种:位置形式传参 & 关键字传参。其中前者打包为元组,后者打包为字典。潜规则:定义动态参数时,*args、**kwargs#定义一个函数 def 函数名():#调用函数test()# py中参数没有修饰符。def 函数名(形参1,形参2):#形参可变参数:*。实参统一会被打包为元组print(p)#可以通过位置参数的形式传入n个参数func_with_params_tuple(12,"你好")#双星号自动打包为字典格式#实参必须用关键词的形式传参。

2025-04-06 08:52:21 280

原创 可观测框架之prometheus

当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据。本文将介绍如何利用 Prometheus 与 JMX Exporter 来监控你 Java 应用的 JVM。

2025-04-05 09:32:33 742

原创 1.Python基础

布尔类型:整型:0转化为布尔值为false,其他均为true。字符串:空字符串转为布尔值为false,其他均为true。变量名:只能包含数字、字母、下划线;不能以数字开头;不能使用内置的关键字。

2025-04-04 14:14:26 836

原创 RocketMQ之源码基础

code:请求操作码,应答方根据不同的请求码进行不同的业务处理。0表示成功,非0则表示各种错误。opaque:相当于requestId,在同一个连接上的不同请求标识码,与响应消息中的相对应。1.RPC协议请求头。

2025-02-13 15:12:00 557

原创 RocketMQ之Broker

RequestCode类表示不同类型的请求,在BrokerController#registerProcessor方法内部基于RequestCode注册不同的NettyRequestProcessor。消费者、生产者、Broker之间通过Netty通信框架实现通信。其中Broker端利用类NettyRemotingServer完成Netty服务端进程的启动。客户端与服务端通信时,在Broker端为每个request均注册了对应处理器NettyRequestProcessor处理不同类型的请求。

2025-02-12 17:24:53 110

原创 RocketMQ之偏移量Offset

偏移量:偏移量是 ConsumerQueue 文件中的逻辑位置,表示消息在队列中的顺序。每次消费通过偏移量在索引文件ConsumerQueue中快速找到对应的消息内容。

2025-02-12 12:51:45 467

原创 Kafka

Topic的所有消息分布式存储在各个分区上,分区在每个副本存储一份全量数据,副本之间的消息数据保持同步,任何一个副本不可用,数据都不会丢失。每个分区都随机挑选一个副本作为Leader,该分区所有消息的生产与消费都在Leader副本上完成,消息从Leader副本复制到其他副本(Follower)。Kafka的主题和分区属于逻辑概念,副本与代理属于物理概念。kafka的消息并行度,依赖于topic里配置的partition数,如果partition数为10,那么最多10台机器来消费,每台机器只能开启一个线程;

2025-02-11 10:02:02 179

原创 1.可观测性框架理论

链路追踪存在多种协议,包括:W3C、JAEGER、AWS、B3、OT_TRACER。其中B3协议是低版本最常用的协议。

2025-01-21 18:57:34 731

原创 一文看懂权限控制

IAM(IdentityandAccessManagement):默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略和角色,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。其中,x-obs-acl比较特殊,可以设置六种权限,这六种权限对桶或对象的Owner不产生影响,即Owner拥有完全控制的权限。桶和对象的ACL是基于账号的访问控制,默认情况下,创建桶和对象时会同步创建ACL,授权拥有者对桶和对象资源的完全控制权限。根据授权精细程度分为角色和策略。

2025-01-20 10:43:21 683

原创 SpringSecurity之过滤器BearerTokenAuthenticationFilter

AuthenticationManagerResolver:从BearerToken中解析authorities信息最终抽象为Authentication。BearerTokenResolver:解析bearer的解析器。

2024-12-29 16:09:21 307

原创 pt-online-schema-change

因为使用delete删除数据的时候,MySQL并不会把数据文件真实删除,而只是将数据文件的标识位删除,也没有整理数据文件,因此。换句话说,每当我们从表中删除数据时,这段被删除数据的空间就会被留出来,如果又赶上某段时间内该表进行大量的delete操作,则这部分被删除数据的空间就会越来越大。当有新数据写入时,MySQL会再次利用这些被删除的区域,但也无法彻底占用。工具自身环境检查:说明:工具在执行时也会进行检查,如果遇到不能执行的情况,则报错,建议在执行前先进行 dry-run。

2024-12-17 14:13:27 920

原创 JVM之字节码操作框架

Java Asm的全称是“Abstract Syntax Tree Manipulation”‌‌。它是一个用于在Java字节码层面进行操作和修改的框架,提供了一种轻量级的方式来动态生成、修改和分析Java类文件‌。Asm之底层字节码框架,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解。

2024-12-12 13:54:42 568

原创 JavaEE之基础知识

DTO、PO、VO:数据转化Object、持久化Object、视图Object。

2024-12-12 12:02:05 264

原创 Spring Boot - 利用MDC(Mapped Diagnostic Context)实现轻量级同步/异步日志追踪

MDC(Mapped Diagnostic Context)是一个在日志框架中常用的概念,主要用于在多线程环境中关联和传递一些上下文信息,以便在日志输出中包含这些信息,从而实现更好的日志记录和调试。在Java中,常见的日志框架如Log4j、Logback和Log4j2都提供了对MDC的支持。

2024-11-18 09:03:53 794

原创 @Accessors注解遍历之处

【代码】@Accessors注解遍历之处。

2024-11-08 11:11:05 151

原创 Redis之集群模式理论

对象保存到 redis 之前先经过 CRC16 哈希到一个指定的 Node 上,这个过程即 redis cluster 的分片,集群内部将所有的 key 映射到 16384个 Slot 中,集群中的每个 master节点 负责其中的一部分的 slot 的读写。此时,可能存在client还没来得及切换到新的master,还继续写向旧master的数据,当master再次恢复的时候,会被作为一个slave挂到新的master 上去,自己的数据将会清空,重新从新的master 复制数据,这样就会导致数据缺失。

2024-11-01 15:19:58 1016

原创 Aop&事务Transaction之Advisor

应用中只要存在依赖spring-boot-starter-web,其内部任何bean构建过程中都会尝试判断当前bean是否需要aop代理。首先获取候选Advisor:应用中全部Advisor。具备资格的Advisor:每个Advisor对bean的处理都是存在条件的,只有具备处理当前bean的Advisor称之为具备资格的Advisor。// 判断应用中是否存在Advisor。

2024-10-28 17:16:09 989

原创 1.Springboot之ApplicationContext&Listener&Config

这是一个跟应用上下文相关的回调接口,其目的是优先为应用上下文ApplicationContext做一些初始化功能。比较典型的是web应用中通过回调接口为ApplicationContext做一些计划性的初始化工作。如上所示监听器处理该事件时是基于SpringApplication类、运行参数或者应用参数、ConfigurableApplicationContext。SpringBoot框架内部并没有内置监听器ApplicationListener处理该类型的事件。Environment属性。

2024-10-18 14:47:06 371

原创 Spring之环境Environment

继承至StandardServletEnvironment的。

2024-10-18 11:48:44 795

原创 JavaSE之内存泄露 & 内存溢出

经可达性分析算法所标记出的对象,会进行一次筛选(根据finalize方法)。若判定没有必要回收,那么就将对象放入F-Queue队列中,进行二次筛查。若对象在这个过程重新与引用链上的任何一个对象建立关联,那么该对象就会从回收集合中移除。若一个对象没有任何引用链可到达GC Roots,那么该对象就是不可用的,即使该对象还与其他对象相关联。GC Roots 包含:虚拟机栈【栈帧中的本地变量表】中引用的对象、方法区中静态属性引用的对象、方法区中常量引用的对象、本地方法栈中JNI(native方法)中引用的对象。

2024-10-11 14:46:08 903

原创 SpringBoot内部注解

如果目标bean的作用域为prototype,则通过@Bean注解并不会将目标bean托管于IOC容器或者prototype作用域标识的bean不会被IOC容器托管。如下所示非单例的bean是不会被执行bean创建、属性组装、初始化等标准流程,而是直接选择忽略。通过@Autowired注解以及其变种引入时,才选择实时创建目标bean。

2024-09-22 22:01:45 208

原创 4.Springboot解析启动类之Servlet容器

这种类型的后置处理器是公共类型的后置处理器,即创建任何bean的过程中都有可能被其拦截执行。

2024-09-09 18:15:53 316

原创 Netty之拆包&粘包

每个channel的pipeline都会维护各自的ChannelHandler;channel的生命周期内始终跟worker线程是绑定的,而且是单线程以串行方式不断处理该channel上的IO事件;

2024-08-22 18:52:17 949

原创 jdk之加载classpath资源

Java的官方文档说明中讲到:classloader装载类时的优先级(-jar命令参数 > -classpath命令参数 > CLASSPATH环境变量 > 默认的'.'指定的当前路径)。详细可参考官方文档一文。getResource & getResourceAsStream:加载路径其实都是一样的,只不过结果一个表示URL,另一个为InputStream。

2024-07-17 10:39:44 430

原创 Java Nio核心概念理解

Nio中 SocketChannel 如果设置为非阻塞方式,在其发起connect连接事件后返回的永远为false,必须显式调用finishConnect来判断连接是否成功建立。相反,如果 SocketChannel 设置为阻塞方式,则connect方法会根据连接情况返回true or false。SocketChannel 执行connect事件之后,此时连接处于pending(待定)状态,只有显式调用finishConnect之后则连接更新为CONNECTED状态。

2024-07-02 18:54:09 413

原创 MybatisPlus源码解析

BeanDefinitionRegistryPostProcessor类型的后置处理器MapperScannerConfigurer:此时@Mapper注解相关属性重置于。mybatis-spring-boot-starter【mybatis-spring-boot-autoconfigure】提供的,如果使用Mp版本则直接由。以上将注解@MapperScan 属性转移到MapperScannerConfigurer。

2024-06-15 23:34:55 597

原创 SpringBoot之自动装配原理DataSourceAutoConfiguration注解剖析

如果步骤1不成立,则表明当前自动装配候选类不具有候选bean的条件,直接中断候选流程。如果步骤1成立则当前自动装配的候选类一定将成为IOC容器的候选bean。步骤2加载内部member类的目的:将这些内部类尝试也作为IOC容器的候选bean。步骤3@Import注解的目的:将导入的候选类试图也作为IOC容器的候选bean。内部member类 & @Import注解导入的类均为多个新的候选类,不管是步骤2还是步骤4优先遍历其每一个新增候选类,其流程如上步骤1 ~ 步骤5。

2024-06-15 19:11:54 1416

原创 SpringCloud之Zuul源码解析

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。Zuul 可以适当的对多个 Amazon Auto Scaling Groups 进行路由请求。其架构如下图所示:Zuul提供了一个框架,可以对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通信。他们是通过一个RequestContext的静态类来进行数据传递的。

2024-06-10 00:44:41 369

原创 分布式ID生成方式

uuid方式存在问题:占用字节数比较大;ID比较随机,作为MySQL主键写入库时,为了保证顺序性将导致B+Tree节点分裂比较频繁,影响IO性能。

2024-06-03 11:49:27 1016 1

原创 Java相关的定时任务

就现在而言,关于定时任务有各种各样的架构:java 定时器类【Timer】,spring定时器类【@Scheduled】,quartz分布式定时器类,xxl-job分布式任务调度平台。xxl-job是一款轻量级定时任务可以分布式部署的调度平台。整体来说,xxl-job就是quartz的一个增强版,其弥补了quartz不支持并行调度,不支持失败处理策略和动态分片的策略等诸多不足,同时其有管理界面,上手比较容易,支持分布式,适用于分布式场景下的使用。两者相同的是都是通过数据库锁来控制任务不能重复执行。

2024-04-15 14:11:33 317

原创 Dubbo核心模型之Invoker

Dubbo中invoker是provider和consumer实现RPC调用的关键,invoker的构建过程是Dubbo服务的init初始化过程。invoker#invoke的调用是Dubbo服务的call调用过程。因此,这里分析invoker模型,主要是provider和consumer端的初始化过程。

2024-04-07 18:07:15 1650

原创 事务同步管理器TransactionSynchronizationManager

截止当前事务同步管理器处理的资源主要包括:DataSource获取的数据库连接以及SqlSessionFactory。

2024-03-19 11:11:19 3926

原创 事务Transactional传播机制

mandatory:强制性的。suspend:暂停、终止。

2024-03-18 16:48:16 644 1

原创 Dubbo之消费端服务RPC调用

ReferenceAnnotationBeanPostProcessor重置服务目标类在IOC注册表class的属性为。

2024-02-23 17:39:49 933 3

转载 Java字节码文件和二进制文件的区别与联系

3、总结:字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。1、class文件:里面存放了许多16进制的字节(码)(如二进制字节码可表示为:010101101),如下图所示;但是这个文件,是二进制的,例如图形文件等都属于二进制文件。2、javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各种各样的指令,部分内容如下图所示。

2024-02-21 18:51:03 462 1

挑选得到的头像相关资源

挑选得到的头像相关资源

2024-03-22

go版本的hello算法

go版本的hello算法

2024-03-05

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

TA关注的人

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