自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 问答 (1)
  • 收藏
  • 关注

原创 OpenTelemetry

跨服务追踪:确保TraceId、SpanId在微服务之间正确传递标准化格式:支持行业标准的传播格式自动化处理:减少手动处理HTTP头的代码异步友好:在WebFlux等响应式环境中正常工作SdkTracerProvider 的关键作用:功能说明生产环境重要性Tracer 工厂创建和管理 Tracer 实例✅ 关键采样控制决定哪些请求被追踪✅ 关键(影响性能和成本)数据处理连接 SpanProcessor 流水线✅ 关键资源管理管理服务元数据✅ 重要性能优化控制批处理、队列大小等。

2025-10-20 16:49:04 1097

原创 深度学习(DL)

深度学习(DL)和机器学习(ML)关系:、定义特点与应用。

2025-08-25 15:33:26 1864

原创 NLP自然语言处理

分类特点模型布尔模型1. 基本思想: 使用布尔逻辑运算符(AND、OR、NOT)来连接检索查询中的关键词,从而筛选出匹配的文档。2. 特点: 检索结果是二元的,即文档要么匹配查询,要么不匹配。没有考虑文档和查询之间的相关性,只关注关键词的存在与否。向量空间1. 基本思想: 将文档和查询表示为向量,其中向量的维度是词汇表中的词汇,每个维度上的值表示对应词汇在文档或查询中的权重。2. 特点: 考虑了文档和查询之间的相关性,通过计算向量之间的相似度来排序检索结果。常用的相似度计算方法包括。

2025-08-25 15:32:41 858

原创 训练方法

交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。,所谓的简单,是和其他交叉验证方法相对而言的。首先,我们随机的将样本数据分为两部分(比如: 70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。(Leave-one-out Cross Validation),它是第二种情况的特例,此时S等于样本数N,这样对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。

2025-08-25 15:31:56 387

原创 机器学习算法

智能体通过与环境进行交互,根据奖励信号来调整其行为策略,以达到最大化累积奖励的目标。,是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。,通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。(3)环境根据智能体的动作转换到新的状态,并返回一个奖励信号(reward)。(4)智能体根据奖励信号更新其策略,以便在将来的决策中获得更好的奖励。(5)重复以上步骤,直到智能体学习到一个使其获得最大累积奖励的策略。

2025-08-25 15:31:20 391

原创 数据处理基础

工具numpypandascipy下表显示了Pandas和NumPy之间的比较表:比较基础PandasNumPyWorks withPandas模块适用于表格数据。NumPy模块可用于数值数据。Pandas拥有强大的工具, 例如Series, DataFrame等。NumPy具有像Arrays这样的强大工具。组织用途Pandas用于Instacart, SendGrid和Sighten等受欢迎的组织。NumPy用于像SweepSouth这样的流行组织。

2025-08-25 15:30:03 1033

原创 Panda基础

读取速度(从快至慢):feather >> parquet >> pikle >> hdf >> csv。- 文件大小(从小至大):parquet >> csv >> feather >> pikle >> hdf。

2025-08-25 15:29:02 238

原创 超时取消任务

超时事物回滚工具类guava的。

2025-08-18 20:42:40 498

原创 微服务通信

微服务之间主要有三种通信方式:API网关、RPC 和Sidecar 模式三者通信关系:API网关:针对某个应用。RPC:针对某个服务。Sidecar:针对某个k8s中的pods。

2025-08-15 10:56:10 2197

原创 Spring-内部实现

spring主要通过工厂模式创建beanBeanDefinition 是用来描述 Bean 的,里面存放着关于 Bean 的一系列信息,比如 Bean 的作用域,Bean 所对应的 class, 是否懒加载,是否 Primary 等等。有了它 Spring 容器就掌握了实例化 bean 所需要的一些重要信息,Spring 才可以对其进行实例化。

2025-08-13 11:44:57 337

原创 SpirngBoot

Component@Autowired。

2025-08-13 11:44:03 344

原创 单元测试编写

- Spring Test 依赖 -->-- JUnit 5 依赖 -->-- Mockito 依赖 -->使用spring容器的三种方式。mockito包的使用。

2025-08-13 11:43:27 246

原创 spring-Xml文件

在这个文件里申明的bean,里面的属性会自动去容器里找名字相同的bean,如果存在则赋值,不存在则为null,必要条件,bean的必须实现对应属性的set方法。

2025-08-13 11:42:56 397

原创 PropertyPlaceholderConfigurer

spring自带的properties加载类如果需要自定义,只需继承loadProperties方法,在该方法中可以执行父类方法保证原始功能未丢失,然后再执行自己的读取方法并重写了方法来加载多个属性文件。这样可以将不同来源的属性合并到同一个Properties对象中,便于在 Spring 配置中使用。

2025-08-13 11:42:15 390

原创 spring-日志文件

log4j2所需依赖设置编码格式。

2025-08-12 11:00:31 810

原创 MapStruct-编译器实现bean复制

功能:专门用来处理的属性映射很多项目大量映射的方式通过手动get、set,首先写法很low,没有技术含量。而且中间还可能牵涉了很多类型转换,嵌套之类的繁琐操作,非常的麻烦。关于属性的映射,apache的BeanUtil. copyProperties也可以实现,但是其性能差而且容易出异常,很多规范严禁使用这种途径。MapStruct原理类似于lombok,性能高。MapStruct也是像lombok 在编译期进行实现,而且基于Getter、Setter,没有使用反射,所以一般也不存在运行时性能问题。

2025-08-12 10:59:15 752

原创 消息转换器/参数解析器

消息转换器主要用于处理请求和响应体的数据格式转换,而参数解析器主要负责将请求中的数据解析为控制器方法参数。两者在 Spring MVC 中各司其职,协同工作,以实现请求处理的灵活性和高效性。参数解析器主要可以在消息体中获取各种参数再进行整合成后端接口所需要的参数消息转换器可以将请求体中的数据转成成不同的格式、不论是在请求还是返回。

2025-08-12 10:58:42 448

原创 HandlerInterceptor/MethodInterceptor

拦截servlet请求HandlerInterceptor是springMVC项目中的拦截器,它拦截的目标是请求的地址,比MethodInterceptor先执行。实现一个HandlerInterceptor拦截器可以直接实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter类。

2025-08-12 10:57:55 275

原创 状态流转-状态机

COLA框架的状态机组件是一种轻量级的、无状态的、基于注解的状态机实现,可以方便地管理订单等业务对象的状态转换。COLA框架的状态机使用了连贯接口(Fluent Interfaces)来定义状态和事件,以及对应的动作和检查。COLA框架的状态机是COLA 4.0应用架构的一部分,旨在控制复杂度,提高开发效率。简化了状态转换的逻辑,避免了大量的if-else判断提高了代码的可读性和可维护性,方便了单元测试和重构支持多种状态机模式,如同步、异步、延迟等。

2025-08-12 10:56:32 463

原创 稳定性治理之用户追踪

原理是通过SDK嵌入到应用服务内,基于spring的AOP技术,切入到特点的方法和接口,按照spring中注入的executeMap和visual中/control路径的配置,监控服务中的接口和方法,记录用户的请求快照,缓存到ThreadLocal中,在请求返回前,将缓存的数据序列化成一条日志,写到磁盘中,之后通过logbook的收集器采集到JDQ中,消费处理成结构化数据存储到ES、Hbase、CK中,通过平台查询使用。汽车的ID是唯一的,但是它可以行驶在是其他的城市。目前由于Tracer的数据量级较大。

2025-08-12 10:55:14 445

原创 Linux之LVS负载均衡

参考文章:超详细!一文带你了解 LVS 负载均衡集群!-腾讯云开发者社区-腾讯云LVS: 是的简写,也就是,是一个虚拟的服务器集群系统。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层、Server 集群层和共享存储层。将多台服务器组成集群系统从而来提高整体服务器的处理性

2025-08-12 10:51:45 361

原创 日志管理方案对比

rsyslog传统系统审计日志、高吞吐转发动态解析需求高的容器环境Filebeat边缘节点、容器日志采集需复杂ETL或独立缓冲的场景PromtailK8s集群+Loki存储栈非Loki用户或多输出需求Fluentd多云架构、插件扩展性优先内存<512MB的嵌入式设备Logstash非结构化日志解析、自定义流水线资源受限的边缘节点。

2025-08-12 10:50:41 707

原创 日志管理之PLG

职责负责采集应用程序和系统的日志数据,并将其发送到 Loki 的集群中。负责存储日志数据,提供 HTTP API 的日志查询,以及数据过滤和筛选。负责 UI 展示日志数据。是一个快速的日志处理系统,具有卓越的性能和出色的安全性,采用模块化设计,他可以从各种数据源中接收输入、转换数据再将结果输出到指定的位置。他不仅适用于企业,也适用于小型系统。rsyslog是一个c/s架构,既可以作为日志客户端上报日志,也可以作为服务端接收日志rsyslog是模块化设计,因此很多功能需要加载相关的模块。

2025-08-12 10:48:41 395

原创 日志管理之ELK

可以看出 Filebeats 功能比较单一,它仅仅只能收集本地的 log,但并不能对收集到的 Log 做什么处理,所以通常 Filebeats 通常需要将收集到的 log 发送到 Logstash 做进一步的处理。Elasticsearch 则是一个集中存储 log 的地方,更重要的是它是一个全文检索以及分析的引擎,它能让用户以近乎实时的方式来查看、分析海量的数据。Logstash 则并不是唯一的收集 log 的方案,Fluentd 和 Filebeats 也能用于收集 log。

2025-08-12 10:44:24 393

原创 Netty介绍

Unpooled.wrappedBuffer 的操作类似,使用它可以将不同的数据源的一个或者多个数据包装成一个大的 ByteBuf 对象,其中数据源的类型包括 byte[]、ByteBuf、ByteBuffer。可以在channel中装配ChannelHandler流水线处理器,那一个channel不可能只有一个channelHandler处理器,肯定是有很多的,既然是很多channelHandler在一个流水线工作,肯定是有顺序的。于是pipeline就出现了,pipeline相当于处理器的容器。

2025-08-12 10:43:23 1047

原创 Netty之NIO

空转”指的是:Selector 频繁触发写事件,但你没有实际业务要处理(即没有数据需要写),这会造成CPU 空耗,浪费资源。本质上就是:写事件一直在通知你,但你啥也不用干,程序在“白忙活”。

2025-08-12 10:42:03 1806

原创 Netty之零拷贝

无论是传统的 I/O 方式,还是引入了零拷贝之后,2 次DMA copy是都少不了的。因为两次 DMA 都是依赖硬件完成的。所以,所谓的零拷贝,都是为了减少 CPU copy 及减少了上下文的切换。

2025-08-12 10:39:14 491

原创 OHC堆外内存

缓存的分类与实现机制多种多样,包括单机缓存与分布式缓存等等。具体到JVM应用,又可以分为堆内缓存和堆外缓存。OHC 全称为,即堆外缓存,是一款基于Java 的 key-value 堆外缓存框架。

2025-08-12 10:36:13 951

原创 spring-cglib

参数:Object为由CGLib动态生成的代理类实例,Method为上文中实体类所调用的被代理的方法引用,Object[]为参数值列表,MethodProxy为生成的代理类对方法的代理引用。代理对象只会对所有的方法进行代理,并不会复制字段的值,所以如果需要访问原始对象的值只能通过get方法进行获取,如果直接访问会返回null。获取callback的方法如下,提几个理解的要点吧,具体读者在学习的时候建议把我的例子跑一下,然后打一个断点进行理解。// 上面流程图中的目标类 获取目标类即被代理对象。

2025-08-12 10:32:06 834

原创 SPI服务和自动装配

-- 自动配置核心依赖 -->-- 配置注解处理器 -->

2025-08-11 14:49:18 624

原创 字节码Agent

笼统地来讲,Java Agent 是一个统称,该功能是 Java虚拟机 提供的一整套后门,通过这套后门可以对虚拟机方方面面进行监控与分析,甚至干预虚拟机的运行。Java Agent 又叫做 Java探针,是一种可以动态修改 Java字节码的技术。Java类 编译之后形成字节码被 JVM 执行,在 JVM 在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能。

2025-08-11 14:48:11 747

原创 异步执行之动态线程池

第一种情况仅出现在线程初始创建的时候,第二种是线程获取任务绝大多数的情况。线程需要从任务缓存模块中不断地取任务执行,帮助线程从阻塞队列中获取任务,实现线程管理模块和任务管理模块之间的通信。getTask这部分进行了多次判断,为的是控制线程的数量,使其符合线程池的状态。如果线程池现在不应该持有那么多线程,则会返回null值。工作线程Worker会不断接收新任务去执行,而当工作线程Worker接收不到任务的时候,就会开始被回收。worker是线程池中的线程持有对象,worker来负责获取任务,执行任务。

2025-08-11 14:47:08 283

原创 线程装饰器-TaskDecorator

***/

2025-08-11 14:45:47 374

原创 异步执行之线程之间顺序执行方案

主线程等待子线程的终止。也就是说主线程的代码块中,如果碰到了t.join()方法,此时主线程需要等待(阻塞),等待子线程结束了(Waits for this thread to die.),才能继续执行t.join()之后的代码块。join()的使用场景:在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程将可能早于子线程结束。如果主线程需要知道子线程的执行结果时,就需要等待子线程执行结束了。

2025-08-11 14:42:58 527

原创 异步处理之服务编排

该并发框架提供> 1 提供任何形式的串行、并行执行单元的组合。如a、b、c的串行,a、b的串行同时与c并行,a、b、c的并行> 2 为每个执行单元提供执行成功、失败、超时、异常的回调> 3 支持为单个执行单元设置异常、失败后的默认值> 4 支持为整个group(多个任意组合的执行单元)设置超时时间。单个执行单元失败,不影响其他单元的回调和最终结果获取。如果自己依赖的任务失败,则自己也立刻失败。> 5 整个group执行完毕或超时后,同步阻塞返回所有执行单元结果集,按添加的顺序返回list。

2025-08-11 14:33:17 934

原创 异步处理之TTL

是阿里开源的,用于解决异步执行时上下文传递的问题的组件,在基础上,实现了线程复用场景下的线程变量传递功能。

2025-08-11 14:22:57 976

原创 异步方案之ConcurrentLinkedQueue

一个基于链接节点的无界线程安全队列1.多线程安全2.无界队列-链表结构3.CAS操作控制同步,非阻塞同步特性使用锁(如 ReentrantLock)高并发性能,适合频繁操作在高竞争情况下可能性能下降简单易用,适合基本的队列操作需要管理锁的获取和释放,代码复杂性增加不会阻塞线程,非阻塞操作可能导致线程阻塞,其他线程需要等待适合高并发的生产者-消费者模型适合需要对共享资源进行复杂操作的场景。

2025-08-11 14:18:47 371

原创 异步方案之CompletableFuture

Future根据具体需求选择适合的工具。如果需要简单的异步结果表示和阻塞获取结果,可以使用Future;如果需要更复杂的异步任务处理和非阻塞编程,可以使用。

2025-08-11 14:17:56 177

原创 异步方案之Kafka

主要用于 SASL(简单身份验证和安全层)认证,特别是在连接像 Apache Kafka 这样的服务时。这个属性告诉 Kafka 客户端在与 Kafka 服务器进行身份验证时使用哪种 SASL 机制。配置 JAAS(Java 身份验证和授权服务)的属性。

2025-08-11 14:15:31 254

原创 异步处理之MpscArrayQueue

是一个多生产者单消费者(Multi-Producer Single-Consumer,Mpsc)的无界队列实现,意味着可以有多个线程向队列中添加元素,但只有一个线程可以从队列中取出元素。使用方法MpscArrayQueue(Multiple Producer, Single Consumer Array Queue)是一种高效的多线程队列实现,主要用于多个生产者和单个消费者的场景。与官方的多线程队列(例如Java的或。

2025-08-11 14:11:47 372

空空如也

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

TA关注的人

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