- 博客(113)
- 问答 (2)
- 收藏
- 关注
原创 反射之Reflect
隐式【implicitly】声明的构造方法”:指编译器自动为你生成的默认构造方法(即无参构造方法),前提是类中没有显式定义任何构造方法时,Java 编译器会自动添加一个无参构造方法。getDeclaredConstructors():回类中。构造方法(包括私有的、默认的、公有的),而不仅仅是。
2025-08-11 19:41:46
173
原创 java之23种设计模式
设计模式是软件开发中解决常见问题的可复用方案,遵循SOLID等设计原则(如单一职责、开闭原则等)。主要分为三类:创建型(如单例、工厂模式负责对象创建)、结构型(如适配器、装饰器模式处理对象组合)、行为型(如观察者、策略模式管理对象交互)。典型模式包括:适配器模式(协调接口差异)、装饰器模式(动态扩展功能)、策略模式(灵活切换算法)、观察者模式(实现发布-订阅机制)等。每种模式通过类图、代码示例和适用场景说明,帮助开发者构建灵活、可维护的代码结构,降低系统耦合度。
2025-07-26 09:05:01
801
原创 Javase之数据结构queue&Stack
《Java阻塞队列比较:ArrayBlockingQueue、LinkedBlockingQueue与SynchronousQueue》 摘要:本文对比分析了三种Java阻塞队列的特性。ArrayBlockingQueue采用固定数组结构,需预分配内存,读写共用锁影响并发性能,适用于线程池场景。LinkedBlockingQueue采用链表结构动态扩容,读写分离锁提升并发性能,适合消息中间件。SynchronousQueue不存储元素,实现线程间直接数据交换,常用于线程池任务调度和线程间通信。三类队列均线程
2025-07-12 01:42:25
416
原创 Nginx知识点总结
NGINX 提供的限流模块主要是通过过和模块来实现请求频率限制和连接数限制。请求频率限流(Rate Limiting):使用和limit_req指令来控制客户端请求的速率。连接数限流(Concurrent Connections Limiting):使用和limit_conn来限制客户端的最大并发连接数。
2025-07-08 03:44:32
318
原创 web服务性能指标
网络性能指标包括RTT(请求往返耗时)、MTTR(平均故障修复时间)和SLA(服务可用性)。RTT衡量网络延迟,MTTR计算为总故障修复时间除以故障次数。SLA表示服务正常运行时间占比。这些指标共同反映网络服务质量,其中MTTR越低说明系统恢复越快,SLA越高代表服务越稳定。
2025-07-05 01:59:44
126
原创 nginx之proxy_buffering的作用
Nginx 的缓冲机制正是为了解决这个不匹配问题。Nginx 的缓冲机制是为了让后端能更快释放资源,而不是卡在慢客户端上,从而提升整体性能和并发能力。这样会占用后端连接资源(如 Tomcat、PHP-FPM、Node.js 等),降低并发能力。如果客户端接收得慢(比如网速差),那么后端必须一直等待客户端接收完数据才能释放资源。Nginx 接收后端响应内容,并先缓存到自己的内存或磁盘中。Nginx 直接把后端的数据流转发给客户端。后端可以快速释放资源,继续处理其他请求。然后再根据客户端的速度慢慢发送出去。
2025-05-27 09:41:46
541
原创 检索增强LLM之RAG
数据预处理阶段可能涉及文本拆分技术。用户提到具体的模型,比如固定长度拆分、语义拆分等。需要列举常见的拆分方法,并可能提到一些相关的工具或库,如LangChain的CharacterTextSplitter或RecursiveCharacterTextSplitter。然后是嵌入模型的选择,这里需要区分稀疏和密集嵌入模型。例如,TF-IDF属于稀疏模型,而BERT、Sentence-BERT、Contriever等属于密集模型。需要说明不同模型的优缺点和适用场景。
2025-05-09 15:36:26
352
原创 4.Python面向对象
self:本质为参数,即指向当前实例。不需要调用方显式指明该实参,该实参是由python内部自主传递的。函数 vs 方法的区别:类中的函数称之为方法,其余均称之为函数。封装:数据打包至一个对象或者同一种类型的函数汇总到一个类中。多态如下所示:参数args可以是任何存在方法send的类。面向对象三大特性:封装、继承、多态。类名规范:首字母大写。
2025-04-13 17:12:40
168
原创 2.python之函数
函数传参方式分为两种:位置形式传参 & 关键字传参。其中前者打包为元组,后者打包为字典。潜规则:定义动态参数时,*args、**kwargs#定义一个函数 def 函数名():#调用函数test()# py中参数没有修饰符。def 函数名(形参1,形参2):#形参可变参数:*。实参统一会被打包为元组print(p)#可以通过位置参数的形式传入n个参数func_with_params_tuple(12,"你好")#双星号自动打包为字典格式#实参必须用关键词的形式传参。
2025-04-06 08:52:21
294
原创 可观测框架之prometheus
当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据。本文将介绍如何利用 Prometheus 与 JMX Exporter 来监控你 Java 应用的 JVM。
2025-04-05 09:32:33
774
原创 1.Python基础
布尔类型:整型:0转化为布尔值为false,其他均为true。字符串:空字符串转为布尔值为false,其他均为true。变量名:只能包含数字、字母、下划线;不能以数字开头;不能使用内置的关键字。
2025-04-04 14:14:26
849
原创 Kafka
Topic的所有消息分布式存储在各个分区上,分区在每个副本存储一份全量数据,副本之间的消息数据保持同步,任何一个副本不可用,数据都不会丢失。每个分区都随机挑选一个副本作为Leader,该分区所有消息的生产与消费都在Leader副本上完成,消息从Leader副本复制到其他副本(Follower)。Kafka的主题和分区属于逻辑概念,副本与代理属于物理概念。kafka的消息并行度,依赖于topic里配置的partition数,如果partition数为10,那么最多10台机器来消费,每台机器只能开启一个线程;
2025-02-11 10:02:02
212
原创 一文看懂权限控制
IAM(IdentityandAccessManagement):默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略和角色,才能使得用户组中的用户获得策略定义的权限,这一过程称为授权。其中,x-obs-acl比较特殊,可以设置六种权限,这六种权限对桶或对象的Owner不产生影响,即Owner拥有完全控制的权限。桶和对象的ACL是基于账号的访问控制,默认情况下,创建桶和对象时会同步创建ACL,授权拥有者对桶和对象资源的完全控制权限。根据授权精细程度分为角色和策略。
2025-01-20 10:43:21
713
原创 SpringSecurity之过滤器BearerTokenAuthenticationFilter
AuthenticationManagerResolver:从BearerToken中解析authorities信息最终抽象为Authentication。BearerTokenResolver:解析bearer的解析器。
2024-12-29 16:09:21
391
原创 pt-online-schema-change
因为使用delete删除数据的时候,MySQL并不会把数据文件真实删除,而只是将数据文件的标识位删除,也没有整理数据文件,因此。换句话说,每当我们从表中删除数据时,这段被删除数据的空间就会被留出来,如果又赶上某段时间内该表进行大量的delete操作,则这部分被删除数据的空间就会越来越大。当有新数据写入时,MySQL会再次利用这些被删除的区域,但也无法彻底占用。工具自身环境检查:说明:工具在执行时也会进行检查,如果遇到不能执行的情况,则报错,建议在执行前先进行 dry-run。
2024-12-17 14:13:27
1124
原创 JVM之字节码操作框架
Java Asm的全称是“Abstract Syntax Tree Manipulation”。它是一个用于在Java字节码层面进行操作和修改的框架,提供了一种轻量级的方式来动态生成、修改和分析Java类文件。Asm之底层字节码框架,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解。
2024-12-12 13:54:42
596
原创 Spring Boot - 利用MDC(Mapped Diagnostic Context)实现轻量级同步/异步日志追踪
MDC(Mapped Diagnostic Context)是一个在日志框架中常用的概念,主要用于在多线程环境中关联和传递一些上下文信息,以便在日志输出中包含这些信息,从而实现更好的日志记录和调试。在Java中,常见的日志框架如Log4j、Logback和Log4j2都提供了对MDC的支持。
2024-11-18 09:03:53
814
原创 Spring之SpEL表达式引擎
在Spring系列产品中,SpEL是表达式计算的基础,实现了与Spring生态系统所有产品无缝对接。Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系,而SpEL可以方便快捷的对ApplicationContext中的Bean进行属性的装配和提取。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。SpEL能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,可以与基于XML和基于注解的Spring配置还有bean定义一起使用。
2024-11-16 17:17:37
923
原创 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
1004
原创 1.Springboot之ApplicationContext&Listener&Config
这是一个跟应用上下文相关的回调接口,其目的是优先为应用上下文ApplicationContext做一些初始化功能。比较典型的是web应用中通过回调接口为ApplicationContext做一些计划性的初始化工作。如上所示监听器处理该事件时是基于SpringApplication类、运行参数或者应用参数、ConfigurableApplicationContext。SpringBoot框架内部并没有内置监听器ApplicationListener处理该类型的事件。Environment属性。
2024-10-18 14:47:06
393
原创 JavaSE之内存泄露 & 内存溢出
经可达性分析算法所标记出的对象,会进行一次筛选(根据finalize方法)。若判定没有必要回收,那么就将对象放入F-Queue队列中,进行二次筛查。若对象在这个过程重新与引用链上的任何一个对象建立关联,那么该对象就会从回收集合中移除。若一个对象没有任何引用链可到达GC Roots,那么该对象就是不可用的,即使该对象还与其他对象相关联。GC Roots 包含:虚拟机栈【栈帧中的本地变量表】中引用的对象、方法区中静态属性引用的对象、方法区中常量引用的对象、本地方法栈中JNI(native方法)中引用的对象。
2024-10-11 14:46:08
920
原创 SpringBoot内部注解
如果目标bean的作用域为prototype,则通过@Bean注解并不会将目标bean托管于IOC容器或者prototype作用域标识的bean不会被IOC容器托管。如下所示非单例的bean是不会被执行bean创建、属性组装、初始化等标准流程,而是直接选择忽略。通过@Autowired注解以及其变种引入时,才选择实时创建目标bean。
2024-09-22 22:01:45
216
原创 4.Springboot解析启动类之Servlet容器
这种类型的后置处理器是公共类型的后置处理器,即创建任何bean的过程中都有可能被其拦截执行。
2024-09-09 18:15:53
330
原创 Java Nio核心概念理解
Nio中 SocketChannel 如果设置为非阻塞方式,在其发起connect连接事件后返回的永远为false,必须显式调用finishConnect来判断连接是否成功建立。相反,如果 SocketChannel 设置为阻塞方式,则connect方法会根据连接情况返回true or false。SocketChannel 执行connect事件之后,此时连接处于pending(待定)状态,只有显式调用finishConnect之后则连接更新为CONNECTED状态。
2024-07-02 18:54:09
423
原创 MybatisPlus源码解析
BeanDefinitionRegistryPostProcessor类型的后置处理器MapperScannerConfigurer:此时@Mapper注解相关属性重置于。mybatis-spring-boot-starter【mybatis-spring-boot-autoconfigure】提供的,如果使用Mp版本则直接由。以上将注解@MapperScan 属性转移到MapperScannerConfigurer。
2024-06-15 23:34:55
618
原创 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
1461
原创 SpringCloud之Zuul源码解析
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。Zuul 可以适当的对多个 Amazon Auto Scaling Groups 进行路由请求。其架构如下图所示:Zuul提供了一个框架,可以对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通信。他们是通过一个RequestContext的静态类来进行数据传递的。
2024-06-10 00:44:41
550
原创 分布式ID生成方式
uuid方式存在问题:占用字节数比较大;ID比较随机,作为MySQL主键写入库时,为了保证顺序性将导致B+Tree节点分裂比较频繁,影响IO性能。
2024-06-03 11:49:27
1038
1
原创 Java相关的定时任务
就现在而言,关于定时任务有各种各样的架构:java 定时器类【Timer】,spring定时器类【@Scheduled】,quartz分布式定时器类,xxl-job分布式任务调度平台。xxl-job是一款轻量级定时任务可以分布式部署的调度平台。整体来说,xxl-job就是quartz的一个增强版,其弥补了quartz不支持并行调度,不支持失败处理策略和动态分片的策略等诸多不足,同时其有管理界面,上手比较容易,支持分布式,适用于分布式场景下的使用。两者相同的是都是通过数据库锁来控制任务不能重复执行。
2024-04-15 14:11:33
330
原创 Dubbo核心模型之Invoker
Dubbo中invoker是provider和consumer实现RPC调用的关键,invoker的构建过程是Dubbo服务的init初始化过程。invoker#invoke的调用是Dubbo服务的call调用过程。因此,这里分析invoker模型,主要是provider和consumer端的初始化过程。
2024-04-07 18:07:15
1737
原创 事务同步管理器TransactionSynchronizationManager
截止当前事务同步管理器处理的资源主要包括:DataSource获取的数据库连接以及SqlSessionFactory。
2024-03-19 11:11:19
4573
原创 Dubbo之消费端服务RPC调用
ReferenceAnnotationBeanPostProcessor重置服务目标类在IOC注册表class的属性为。
2024-02-23 17:39:49
966
3
转载 Java字节码文件和二进制文件的区别与联系
3、总结:字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行。1、class文件:里面存放了许多16进制的字节(码)(如二进制字节码可表示为:010101101),如下图所示;但是这个文件,是二进制的,例如图形文件等都属于二进制文件。2、javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各种各样的指令,部分内容如下图所示。
2024-02-21 18:51:03
509
1
原创 Dubbo Spi机制
抽象这三个能力是为了实现 Dubbo 的多实例支持,FrameworkModel 是实现类似 JVM 租户级别的隔离,ApplicationModel 是为了实现一个机器上发布多个应用(如 demo-application1 和 demo-application2 一起发布),ModuleModel 是为了实现服务生命周期的独立管理(如一个 demo-application 可以由多个 Spring 容器共同提供)。DubboSpringInitializer触发作用子类加载扩展类就是利用该类得到类。
2024-02-01 19:43:32
541
okhttp-sse调用LLM大模型连接线程池问题
2025-05-23
LocalHost InetAddress异常
2023-11-14
网络瞬时输入&输出流量
2023-10-31
java nio零拷贝技术mmap之force
2023-08-11
web开发中如何保证操作的幂等性
2023-05-08
seata分布式事务数据源DataSourceProxy
2023-02-10
consul相关问题
2022-11-15
SpringCloud之consul与eureka
2022-11-14
go编译.proto文件
2022-11-11
spring声明式事务
2022-10-21
get请求为什么会存在请求体?
2022-01-18
java面试资料谁能提供一下下呢
2021-10-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人