自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 收藏
  • 关注

原创 MySQL 中的 MVCC 版本控制机制原理

MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种数据库事务并发控制机制,主要用于提高数据库的读写性能。它通过。

2025-04-03 01:42:57 461

原创 Mysql 在什么样的情况下会产生死锁?

在 MySQL 中,死锁是指两个或多个事务相互等待对方释放锁,导致所有相关事务无法继续执行的情况。死锁会影响数据库的并发性能,因此需要及时检测并处理。假设有两个事务 T1 和 T2:事务 T1 首先锁定 表 A 的行 1。然后尝试锁定 表 B 的行 1。事务 T2 首先锁定 表 B 的行 1。然后尝试锁定 表 A 的行 1。T1 锁定了表 A 的行 1,并等待获取表 B 的行 1。T2 锁定了表 B 的行 1,并等待获取表 A 的行 1。此时,T1 和 T2 互相等待,导致死锁。

2025-04-02 19:25:12 357

原创 Prometheus 和 Grafana 之间的数据传输方式

大部分监控场景,Grafana 从 Prometheus 直接查询数据并可视化。,Grafana 直接查询 Prometheus,无需额外组件。:大规模数据存储,历史数据分析,Prometheus 存储扩展。,避免 Prometheus 15 天数据过期问题。,数据只能保存一段时间(默认 15 天),避免 Prometheus 单点故障。:短时任务(如定时任务、批处理):日志监控、外部系统数据推送。

2025-04-01 11:59:30 560

原创 多级限流防止 Redis 被打爆

直接用 Lua 脚本保证限流逻辑的原子性,减少 Redis 服务器的多次。拦截大部分请求,减少 Redis 压力,只有必要时才访问 Redis。方案,结合本地限流、缓存和异步队列,提高系统稳定性。记录最近请求状态,减少 Redis 访问次数。,大部分请求本地拦截,不会打爆 Redis。为了避免 Redis 被打爆,建议采用。,只有本地缓存没拦截时才访问 Redis。调用,避免 Redis 负载过高。,本地缓存读写比 Redis 快。,不需要每次都访问 Redis。,防止 Redis 被打爆。

2025-04-01 11:48:05 505

原创 Redis 限流

用 Redis 来实现限流,结合 Spring Boot 的拦截器或者网关过滤器来执行。固定窗口的缺点是,窗口切换时可能导致流量突增。滑动窗口限流可以缓解这个问题。适用于简单的请求限流,比如每秒最多允许 100 次请求。,允许一定程度的突发流量。

2025-04-01 11:40:07 249

原创 A/B 测试评估广告素材的表现

在广告投放场景中,(也称)是一种数据驱动的方法,用于比较两个或多个不同的广告素材(如图片、文案、标题、按钮颜色等)的效果,找出最优的广告版本,以提升广告转化率和 ROI(投资回报率)。如果 B 组的 CTR 显著高于 A 组,则自动选择 B 版本用于正式投放,从而提高广告效果。在实际广告平台(如 Google Ads、Facebook Ads)中,A/B 测试通常结合自动进行,系统会根据实时数据自动调整广告投放,选择最优版本,从而最大化广告收益。

2025-03-31 16:43:16 469

原创 电商平台广告得分情况

电商平台的广告营销系统。

2025-03-31 16:42:14 961

原创 常见的广告 Performance 指标

在。

2025-03-31 16:17:16 500

原创 虚拟货币和 Token

你可以把 Token 当作是虚拟货币的一种,但不是所有虚拟货币都是 Token。Token 主要依赖智能合约,并不能独立运行,而原生币(如 BTC、ETH)本身就带有完整的区块链生态。视为虚拟货币的一种形式,但虚拟货币的范围比 Token 更广。有一定的关系,但不能完全等同。虚拟货币(Cryptocurrency)

2025-03-28 16:24:54 409

原创 Binance Wallet

Binance Wallet 主要是一个。

2025-03-28 15:43:15 849

原创 Redis 中的 LFU 算法源码解析

Redis 的 LFU(Least Frequently Used,最不经常使用)淘汰算法主要用于。由于有些数据可能短期内访问频繁,但长期不再被访问,因此 Redis 采用了。LFU 计数在每次访问键时都会递增,但递增方式不是简单。,避免了某些短期流行的键占用大量缓存,同时也能让真正的。时,以最少使用频率的键进行淘汰。Redis 的 LFU 机制相比 LRU。来存储访问频率计数,存储在。

2025-03-28 00:58:42 609

原创 Redis 中的过期策略和内存淘汰策略

Redis 的(Expiration Policy)决定了,确保内存资源的合理使用。Redis 提供了:只有当客户端访问某个 key 时,Redis 才会检查它是否过期,过期则删除,否则继续保留。GETSETEXISTSnilGET✅ 访问少的过期 key 不会占用 CPU 资源进行扫描,减少 Redis 负担。✅ 适用于对响应时间敏感的业务,因为删除操作分散到用户访问时进行。❌ 过期 key 可能长时间,如果某些 key 过期但长期未访问,它们不会被删除,导致。:Redis 每隔一段时间主动扫描。

2025-03-27 15:17:17 735

原创 CPU 利用率异常高,该如何排查和解决?

在 Java 微服务项目中,CPU 利用率异常升高(接近 100%)可能是由高并发、死循环、线程问题、GC 频繁触发、锁竞争等因素引起的。通过合理调整线程池、优化 GC、减少锁竞争,可以有效降低 CPU 占用,提高微服务的性能。(Full GC)频繁触发,说明 GC 可能是 CPU 占用的主要原因。如果 CPU 主要消耗在 GC 上,可以通过。如果是 Java 17+,可以使用。如果是 Windows,可以使用。查看进程的 CPU 使用情况。运行 60 秒后,使用。找到问题线程后,使用。

2025-03-27 14:33:10 483

原创 Kubernetes 中导致 pod 重启的原因

在 Kubernetes(K8s)中,导致 Pod 重启的原因主要有以下几种:可以使用以下命令查看 Pod 的状态和重启原因:如果 Pod 处于 状态,可以进一步检查:如果怀疑是 OOMKilled:总结导致 Pod 重启的主要原因包括:综合 、 和 进行排查,可以更精准地定位 Pod 重启的具体原因。如果 Pod 的堆内存(Heap Memory)超过了 Pod 限定的内存(Container Memory Limit),可能会导致 Pod 被 OOMKilled(Out of Memory

2025-03-27 11:49:43 1049

原创 redis 缓存命中率降低,该如何解决?

Redis 缓存命中率降低,可能是由于多个因素导致的,比如缓存未命中、缓存污染、缓存淘汰过快等。

2025-03-27 11:15:04 1011

原创 广告营销系统业务中的广告来源

✅。

2025-03-27 10:56:38 451

原创 广告营销业务中的难点问题

广告营销系统中的挑战通常涉及数据准确性、用户定向、预算管理、欺诈防范、创意优化及系统性能等多个方面。通过引入机器学习、流处理、大数据分析等技术,可以有效地解决这些问题。同时,建立实时监控与优化机制,确保系统的持续改进。

2025-03-27 01:38:23 473

原创 Redis 单线程

所有指令在一个线程上按顺序执行,不会并行处理多个命令。进一步优化,减少了线程间的锁竞争,使得性能进一步提升。虽然 Redis 本身是单线程处理命令,但。:Redis 处理命令时(读写数据)仍然是。如果你的业务需要更高的吞吐量,可以采用。可以并行读写数据,具体并行度由。Redis 7.0 对。Redis 主要采用。

2025-03-26 23:25:37 807

原创 Redis 集群配置

在币圈交易所,Redis 集群的节点数量和内存大小通常根据交易所的规模、访问量、并发需求等因素来决定。这种中大型加密货币交易所,Redis 集群的规模通常比较大,主要是为了支撑高并发的撮合交易、行情推送、用户资产查询等核心业务。以 Gate.io 这种交易量较大的交易所为例,Redis 集群一般有。如果是超大型交易所(如 Binance、OKX),可能会有。,Gate.io 这种交易所的。保障交易高并发和稳定性。

2025-03-26 19:38:31 650

原创 多活架构设计

方案,指的是在多个数据中心(或多个区域)同时部署同一业务的多个实例,使它们在。,从而提高系统的可靠性、可用性和业务连续性。,多活架构在发生单点故障时,能够。:故障时自动切换,不影响用户体验。:避免单点故障,提升系统稳定性。:可就近接入,减少用户访问延迟。:支持动态扩容,适应业务增长。:不同区域的负载均衡可能带来。:跨数据中心的数据同步存在。,能够在故障情况下保障服务。:多数据中心部署需要。

2025-03-26 16:09:12 438

原创 线程池中的阻塞队列能不能换成普通的队列

无法保证线程安全,且容易导致 CPU 100% 占用或 OOM。主要用于存放等待执行的任务,而线程池本身是多线程并发执行的。线程池的**工作线程(Worker 线程)**会不断从。(它是非阻塞的,并且是线程安全的),但你需要自己实现。,但需要额外实现阻塞机制,影响性能。不能直接替换为普通的队列(如。Java 线程池可以搭配不同的。

2025-03-26 15:36:26 455

原创 ShardingSphere 分页查询

ShardingSphere 支持标准的。具有全局递增的特性(如使用。,减少跨库分页的开销。生成 ID),可以利用。方案,提高查询性能!如果你的查询字段(如。)是分片键,可以利用。

2025-03-26 11:15:39 224

原创 DDD 领域驱动模型

DDD(Domain-Driven Design,领域驱动设计)是一种,由在 2003 年提出,目的是帮助开发人员,通过来确保代码与业务逻辑保持一致。DDD 关注,强调让开发人员、架构师和业务专家,然后以作为核心来设计系统。订单(Order)订单(Order)newDDD 适合如果系统,DDD 可能太复杂,直接使用更合适。DDD 可以和结合,,能帮助开发团队更好地。。,普通三层架构(Controller-Service-DAO)更合适。✅(比如金融、电商、CRM),DDD 能提供更好的结构和演进能力。

2025-03-25 11:57:36 871

原创 优化广告投放算法

优化广告投放算法”指的是改进广告系统中用于决定的算法,以提升广告的,同时提高投放效率和广告收益。总结来说,优化广告投放算法就是不断改进,以实现更高效、更精准的广告投放,提高收益和用户体验。在广告营销出价算法中,是目前的,因为它在计算效率、模型效果和可解释性之间取得了较好的平衡。如果你是或,GBDT 是最佳选择;如果是,可以结合进行优化;如果是,可以尝试🚀。

2025-03-20 16:47:01 647

原创 实时数仓和离线数仓

实时数仓(Real-time Data Warehouse)和离线数仓(Offline Data Warehouse)是大数据架构中的两种主要数据仓库模式,它们的核心区别主要体现在数据的处理方式、延迟、应用场景和技术选型等方面。

2025-03-20 16:00:34 593

原创 Elasticsearch 中的数据分片问题

确实不是完全相同的概念,尽管它们都涉及到将数据分割存储以提高性能和可扩展性,但在实现和管理上有很大的区别。:副本分片可以在主分片宕机时提供数据冗余,保证数据安全。Elasticsearch 索引中的数据被划分成多个。:新节点加入集群后,可以重新分配分片,实现负载均衡。:数据分散存储到多个分片,多个节点可并行写入数据。:搜索请求可以同时在多个分片上执行,提高吞吐量。Elasticsearch 在存储数据时采用。,这些分片会分布在不同的节点上,实现。,以提高性能和可扩展性。进行分布式存储和查询,

2025-03-20 15:02:28 1051

原创 DSP 计价系统

如果 DSP 发现广告是。

2025-03-20 14:46:22 871

原创 系统可用性保持在 99.9% 指标解析

✅。

2025-03-20 11:43:41 765

原创 项目启动时读取配置文件

来加载远程配置,并在读取失败时回退到本地配置。如果从 Nacos 读取失败,Spring Boot 仍会回退到本地。在 Spring Boot 项目中,你可以使用。这样你的 Spring Boot 项目就可以。Spring Boot 项目通常在。Nacos 远程配置的。,用于读取远程配置。

2025-03-18 01:11:34 406

原创 JDK 动态代理和 CGLIB 动态代理

JDK 动态代理和 CGLIB 动态代理是 Spring AOP 以及许多 Java 框架中常见的两种动态代理方式,它们在。两者各有优势,选择合适的方式能提升代理的效率和可维护性。如果希望 Spring。

2025-03-17 23:33:38 963

原创 Spring 原生启动过程

以下是基于 AnnotationConfigApplicationContext。Spring 内部使用 DefaultListableBeanFactory。Spring 通过 BeanDefinitionReader。,它主要涉及 ApplicationContext。在 Bean 还未实例化之前,Spring 允许。通常,Spring 通过。Spring 应用的启动通常由。Spring 本身不依赖。

2025-03-17 23:05:46 298

原创 堆文件分析

MAT 是一个强大的内存分析工具,常用于 Java 应用的内存泄漏检测和优化。通过。

2025-03-15 18:33:01 908

原创 JConsole 监控线程池状态

的状态,包括线程数量、任务执行情况、CPU 及内存使用情况等。如果你的应用运行在服务器上,JConsole 也可以进行远程监控。这样,你的 JMX 连接是通过 SSH 隧道加密的,更加安全。这样,你可以轻松分析线程池的运行状态,调整最优的参数配置!JConsole 提供多个选项卡,可以帮助监控线程池状态。可以用来监控 Java 线程池(JMX 远程连接使用的是。这样就可以安全高效地。

2025-03-15 17:57:40 870

原创 JMX 和 JAAS 认证

JMX 认证主要涉及。

2025-03-15 17:56:36 556

原创 SSL 和 TLS 认证

SSL认证是保护网站数据安全的关键技术,网站通过部署SSL证书实现加密通信、身份验证和数据完整性。现代互联网基本都采用。

2025-03-14 23:15:58 1092

原创 JDK 自带监控工具

这些工具在 Java 开发、生产环境监控和故障排查中都非常有用,建议熟练掌握!

2025-03-14 16:34:42 826

原创 JVisualVM 监控线程池状态

的状态,包括线程数、CPU 使用率、任务执行情况等。这样,你就可以精准分析 Java 线程池的运行情况,找到最优参数调优方向!如果需要长期监控线程池状态,可以结合。JVisualVM 支持。

2025-03-14 16:12:04 722

原创 线程池参数调优

在 Java 线程池(

2025-03-14 16:03:09 249

原创 DSP 核心实现技术方案

候选池的实现通常不是单一中间件能够完成的,而是需要多种中间件结合,根据业务需求进行选择和组合。高并发低延迟和实时更新常见的最佳实践是缓存+消息队列+流计算的组合架构,确保查询速度快,同时候选池数据始终是最新的。结合 Redis(缓存)+ Kafka(消息队列)+ Flink(流计算)+ Elasticsearch(精准查询),具体方案如下:✅ 超高并发低延迟:Redis 作为候选池缓存,保证毫秒级响应。✅ 实时数据更新:Kafka + Flink 实时流处理,商家数据变化时候选池自动调整。✅ 精准筛选:

2025-03-14 01:23:27 1062 2

原创 SpringBoot 启动过程

Spring Boot 是构建在 Spring 框架之上的项目,它通过简化配置和内置的开发工具,帮助开发者快速创建基于 Spring 的应用。@EnableAutoConfiguration 将所有符合自动配置条件的bean定义加载到IoC容器,自动配置好tomcat、springmvc、web常见功能,初始化容器、应用监听器。@ComponentScan 的功能其实就是自动扫描并加载符合条件的组件,最终将这些bean定义加载到IoC容器中。

2025-03-14 01:19:14 178

空空如也

空空如也

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

TA关注的人

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