千万级大表的优化技巧
大家好,我是苏三,又跟大家见面了。 前言 大表优化是一个老生常谈的话题,但随着业务规模的增长,总有人会“中招”。 很多小伙伴的数据库在刚开始的时候表现良好,查询也很流畅,但一旦表中的数据量上了千万级,性能问题就开始浮现:查询慢、写入卡、分页拖沓、甚至偶尔直接宕机。 这时大家可能会想,是不是数据库不行 ...
掌握设计模式--中介者模式
中介者模式(Mediator Pattern) 中介者模式(Mediator Pattern)是一种行为型设计模式,它通过引入一个中介者对象,来减少多个对象之间的直接依赖,使对象之间的通信变得松耦合。对象不直接相互引用,而是通过中介者与其他对象交互。这有助于提高系统的可维护性和扩展性。 核心思想: ...
如何定位 Druid & HikariCP 连接池的连接泄漏问题?
在数据库连接池的使用中,连接泄漏是一个常见且严重的问题。本文通过分析一个实际的案例,探讨了连接泄漏的危害、产生原因以及如何在 Druid 和 HikariCP 这两种常见的连接池中定位和解决连接泄漏问题。 ...
Spring AI 增加混元 embedding 向量功能
上次我们讨论了如何将自己的开源项目发布到 Maven 中央仓库,确保其能够方便地被其他开发者使用和集成。而我们的项目 spring-ai-hunyuan 已经具备了正常的聊天对话功能,包括文本聊天和图片理解等基础功能。今天,我们进一步优化和扩展了该项目,新增了一个向量化功能。如图所示: 好的,首先就 ...
为什么构造函数需要尽可能的简单
最近在做一些代码重构,涉及到Python中部分代码重构后,单元测试实现较为麻烦甚至难以实现的场景,其中一个主要的原因是构造函数过于复杂。 因此,本篇文章借此总结一下我们应该需要什么样的构造函数。本篇文章涉及的概念不仅限于Python。 构造函数是什么 构造函数用于创建对象时触发,如果不自定义构造函数 ...
『Plotly实战指南』--饼图绘制高级篇
在数据可视化的世界里,饼图是最直观的展示比例关系的工具之一。 然而,传统的静态饼图已经无法满足现代数据分析的需求。Plotly作为一款强大的可视化库,不仅提供了饼图丰富的基础功能,还支持交互效果和动态更新等高级特性。 本文我们将深入探讨Plotly在饼图绘制上的高级功能,包括交互效果和动态更新等技巧 ...
C# Socket教程入门,Socket的使用方法,附可执行Demo
dotnet8.0 C# 入门级简单Socket网络连接教程 另附控制台极简Demo
很多的信息,我都放到注释里了,只有有了上下文,看的才简单,才容易看明白 ...
【Guava】集合工具类-Immutable&Lists&Maps&Sets
Immutable 如《Effective Java》Item1)所述,在设计类的时候,倾向优先使用静态工厂方法(static factory method)而非构造函数(constructor)创建对象,优点在于: 静态工厂方法多了一层名称信息,比构造函数更富表达性。 可以更灵活地创建对象,比如缓 ...
在 VS Code 中,一键安装 MCP Server!
大家好!我是韩老师。 本文是 MCP 系列文章的第三篇。之前的两篇文章是: Code Runner MCP Server,来了! 从零开始开发一个 MCP Server! 经过之前两篇文章的介绍,相信不少童鞋已经用上甚至开发起了第一个 MCP Server。 不过呢,还是遇到一些童鞋在安装/配置 M ...
如何使用 OpenAI Agents SDK 构建 MCP
1.概述 OpenAI Agents SDK 现已支持 MCP(模型上下文协议),这是 AI 互操作性的重大变革。这使开发人员能够高效地将 AI 模型连接到外部工具和数据源。本篇博客,笔者将指导使用 OpenAI Agents SDK 构建 MCP 服务器,以增强你的 AI 应用程序。 2.内容 2 ...
OpenEuler RISC-V 上跑bitcoin(实战版)
不久前刚在OpenEuler 24.09 RISC-V上部署了 bitcoin,不过还没跑起来,这次我打算在这个环境下面运行一些应用服务,体验一下 OERV 的开发感觉。 编译出来的 bitcoin 主要有几个命令,bitcoin-cli、bitcoind、bitcoin-util、bitcoin- ...
从木舟平台来庖丁解牛微服务
一、概述 有人奇怪为啥surging 宣布不更新,后面又更新了,又开发出木舟平台呢?我只能说有些事是命里注定,有些事情注定放弃不了,当你放弃的时候,会有客户花钱让你扩展更新,会有客户购买你的微服务引擎框架,甚至碰上叫你定制功能,给了代码,没给钱的,最近一年surging 就卖出去了10万,那为啥又开 ...
Go语言实现1024终端游戏-不到400行代码
先放源码地址,喜欢看源码翻源码,喜欢看文章的继续看文章 https://github.com/taadis/go1024 - go1024 使用 go 语言实现的 1024 终端游戏,不到400行代码,代码简洁,以便理解和学习和掌握 go 语言开发. 安装和运行 要运行这个程序,你需要先安装依赖: ...
理解Rust引用及其生命周期标识(下)
在上一篇文章中,我们围绕 “引用必然存在来源” 这一基本概念,介绍了Rust中引用之间的关系,以及生命周期标记的实际意义。我们首先从最简单的单参数方法入手,通过示例说明了返回引用与输入引用参数之间的逻辑关系;通过多引用参数的复杂场景,阐释了生命周期标注(本人给其命名为 “引用关系标记”)的必要性及其 ...
Netty源码—10.Netty工具之时间轮
大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务 ...
Linux 离线升级 RSYNC
前言:本文操作是在 CentOS-7 下执行的,不确定在其他 Linux 发布版是否能同样正常执行。 1、检查前置依赖组件 在安装 rsync 之前,需要确认已安装了相关依赖组件: gcc 、openssl-devel 、xxhash 、zstd 、lz4 。 rpm -qa | grep gcc ...
3D Gaussian splatting 01: 环境搭建
3D Gaussian 是一种新的辐射场的实时渲染方法, 能够在较少的训练时间中实现SOTA级别的视觉效果, 允许以 1080p 分辨率进行高质量的实时(≥ 30 fps)新视图合成. 3D Gaussian Splatting 使用 3D Gaussian 球表示三维模型, 并通过 Splatti... ...
Java的IO模型、Netty原理详解
1.什么是IO 虽然作为Java开发程序员,很多都听过IO、NIO这些,但是很多人都没深入去了解这些内容。 Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等 2.同步与异步、阻塞与非阻塞 同步:一 ...
Hive SQL实现近N周的数据统计查询
文/朱季谦 先前遇到过一个需求,需要基于HIVE统计近N周范围的数据,例如,统计近7周范围的数据指标。 需要用HIVE SQL去实现该功能,而HIVE SQL并没有PostgreSQL那样例如通过函数to_char((to_date('202550', 'YYYWW') - INTERVAL '5 ...
重生之我是中间件----Nginx
简介 为什么要用Nginx,比如ASP.NET的kestrel本身就可以作为Web服务器使用。 主要从两点角度考虑: 高可用 nginx的高可用主要体现在反向代理实现负载均衡,并衍生出当web发版更新后,实现滚动更新(热更新)。使得用户无感 对运维友好 通过简单的配置即可实现负载均衡 其它 并发请求 ...