PostgreSQL MCP 使用案例
## 概述
PostgreSQL MCP(PostgreSQL Multi-host Cluster Provisioning)是一种用于部署和管理多节点PostgreSQL集群的工具和架构。它提供了高效的数据库集群管理、高可用性保障和负载均衡功能。本文档将介绍PostgreSQL MCP的基本使用方法和常见应用场景。
## 环境准备
### 安装PostgreSQL MCP
```bash
pip install pg-mcp
```
### 基本配置
创建配置文件 `pgmcp_config.json`:
```json
{
"masters": [
{
"host": "主数据库1 IP",
"port": 5432,
"user": "postgres",
"password": "密码",
"database": "数据库名"
},
{
"host": "主数据库2 IP",
"port": 5432,
"user": "postgres",
"password": "密码",
"database": "数据库名"
}
],
"replicas": [
{
"host": "只读副本1 IP",
"port": 5432,
"user": "postgres",
"password": "密码",
"database": "数据库名"
},
{
"host": "只读副本2 IP",
"port": 5432,
"user": "postgres",
"password": "密码",
"database": "数据库名"
}
],
"connection_pool": {
"min_connections": 5,
"max_connections": 20,
"idle_timeout": 300
},
"high_availability": {
"failover_timeout": 30,
"max_retry_attempts": 3,
"enable_auto_failover": true
}
}
```
## 基本使用案例
### 案例1: 连接数据库集群
```python
from pg_mcp import ConnectionPool
# 初始化连接池
pool = ConnectionPool.from_config("pgmcp_config.json")
# 获取连接
connection = pool.get_connection()
try:
# 使用连接
with connection.cursor() as cursor:
cursor.execute("SELECT version()")
version = cursor.fetchone()
print(f"PostgreSQL 版本: {version[0]}")
finally:
# 归还连接到连接池
connection.close()
```
### 案例2: 读写分离
```python
from pg_mcp import ConnectionPool
pool = ConnectionPool.from_config("pgmcp_config.json")
# 写操作 - 使用主库
def insert_data(name, age):
connection = pool.get_master_connection()
try:
with connection.cursor() as cursor:
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
cursor.execute(sql, (name, age))
connection.commit()
finally:
connection.close()
# 读操作 - 使用只读副本
def get_user(user_id):
connection = pool.get_replica_connection()
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM users WHERE id = %s"
cursor.execute(sql, (user_id,))
return cursor.fetchone()
finally:
connection.close()
# 使用示例
insert_data("张三", 25)
user = get_user(1)
print(user)
```
### 案例3: 事务处理与MVCC优化
```python
from pg_mcp import ConnectionPool
pool = ConnectionPool.from_config("pgmcp_config.json")
def transfer_money(from_account, to_account, amount):
connection = pool.get_master_connection()
try:
# PostgreSQL默认是事务模式,不需要显式begin
with connection.cursor() as cursor:
# 检查余额 - 使用FOR UPDATE避免并发问题
cursor.execute("SELECT balance FROM accounts WHERE id = %s FOR UPDATE", (from_account,))
from_balance = cursor.fetchone()[0]
if from_balance < amount:
raise Exception("余额不足")
# 更新转出账户
cursor.execute("UPDATE accounts SET balance = balance - %s WHERE id = %s",
(amount, from_account))
# 更新转入账户
cursor.execute("UPDATE accounts SET balance = balance + %s WHERE id = %s",
(amount, to_account))
connection.commit()
return True
except Exception as e:
connection.rollback()
print(f"转账失败: {e}")
return False
finally:
connection.close()
```
### 案例4: 批量操作与COPY命令
```python
from pg_mcp import ConnectionPool
import io
import csv
pool = ConnectionPool.from_config("pgmcp_config.json")
# 使用executemany进行批量插入
def batch_insert(users):
connection = pool.get_master_connection()
try:
with connection.cursor() as cursor:
sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)"
cursor.executemany(sql, users)
connection.commit()
print(f"成功插入 {len(users)} 条记录")
finally:
connection.close()
# 使用PostgreSQL的COPY命令进行大批量数据导入(性能更佳)
def bulk_copy(users):
connection = pool.get_master_connection()
try:
# 准备CSV数据
csv_data = io.StringIO()
csv_writer = csv.writer(csv_data)
for user in users:
csv_writer.writerow(user)
csv_data.seek(0)
with connection.cursor() as cursor:
cursor.copy_from(csv_data, 'users', sep=',', columns=('name', 'age', 'email'))
connection.commit()
print(f"成功批量导入 {len(users)} 条记录")
finally:
connection.close()
# 批量插入示例
users_data = [
("李四", 30, "lisi@example.com"),
("王五", 25, "wangwu@example.com"),
("赵六", 35, "zhaoliu@example.com")
]
batch_insert(users_data)
```
### 案例5: 连接池监控与管理
```python
from pg_mcp import ConnectionPool
pool = ConnectionPool.from_config("pgmcp_config.json")
# 获取连接池状态
def get_pool_status():
status = pool.get_status()
print(f"总连接数: {status['total_connections']}")
print(f"活跃连接数: {status['active_connections']}")
print(f"空闲连接数: {status['idle_connections']}")
print(f"等待连接数: {status['waiting_connections']}")
return status
# 监控复制延迟
def check_replication_lag():
connection = pool.get_master_connection()
try:
with connection.cursor() as cursor:
cursor.execute("""
SELECT client_addr, state, sent_lsn, write_lsn,
pg_wal_lsn_diff(sent_lsn, write_lsn) AS lag_bytes
FROM pg_stat_replication
""")
return cursor.fetchall()
finally:
connection.close()
# 使用示例
get_pool_status()
lag_info = check_replication_lag()
for replica in lag_info:
print(f"复制节点: {replica[0]}, 状态: {replica[1]}, 延迟: {replica[4]} 字节")
```
## 高级用法
### 自定义负载均衡策略
```python
from pg_mcp import ConnectionPool, LoadBalancer
class CustomLoadBalancer(LoadBalancer):
def select_replica(self, replicas):
# 自定义选择副本的逻辑
# 例如: 根据副本的负载情况来选择
return min(replicas, key=lambda replica: replica.current_load)
# 使用自定义负载均衡器
pool = ConnectionPool.from_config("pgmcp_config.json", load_balancer=CustomLoadBalancer())
```
### 故障转移与自动恢复
```python
from pg_mcp import ConnectionPool, FailoverStrategy
# 配置故障转移策略
config = {
"failover": {
"check_interval": 5,
"max_retry_attempts": 3,
"retry_delay": 1,
"promote_replica": True
}
}
pool = ConnectionPool.from_config("pgmcp_config.json", failover_strategy=FailoverStrategy(**config["failover"]))
# 带有故障转移的查询执行
def execute_with_failover(sql, params=None):
retries = 0
while retries < 3:
try:
connection = pool.get_connection()
try:
with connection.cursor() as cursor:
cursor.execute(sql, params)
return cursor.fetchall()
finally:
connection.close()
except Exception as e:
retries += 1
if retries >= 3:
raise Exception(f"查询失败,已重试3次: {e}")
print(f"查询失败,正在重试 ({retries}/3)")
```
### 使用PostgreSQL特有功能
```python
from pg_mcp import ConnectionPool
pool = ConnectionPool.from_config("pgmcp_config.json")
# 使用JSON数据类型
def store_json_data(user_id, preferences):
connection = pool.get_master_connection()
try:
with connection.cursor() as cursor:
# PostgreSQL支持直接存储JSON数据
cursor.execute(
"INSERT INTO user_preferences (user_id, preferences) VALUES (%s, %s::jsonb)",
(user_id, json.dumps(preferences))
)
connection.commit()
finally:
connection.close()
# 使用全文搜索
def search_products(query):
connection = pool.get_replica_connection()
try:
with connection.cursor() as cursor:
cursor.execute("""
SELECT id, name, description
FROM products
WHERE to_tsvector('chinese', name || ' ' || description) @@ plainto_tsquery('chinese', %s)
ORDER BY ts_rank(to_tsvector('chinese', name), plainto_tsquery('chinese', %s)) DESC
""", (query, query))
return cursor.fetchall()
finally:
connection.close()
```
## 性能优化建议
1. **合理设置连接池大小**:根据服务器性能和负载情况调整最小和最大连接数。PostgreSQL默认max_connections为100,应避免连接池总大小超过此值。
2. **使用prepared语句**:对于频繁执行的SQL,使用prepared语句可以减少解析开销。
```python
connection = pool.get_connection()
try:
with connection.cursor() as cursor:
cursor.execute("PREPARE get_user AS SELECT * FROM users WHERE id = $1")
cursor.execute("EXECUTE get_user(%s)", (user_id,))
result = cursor.fetchone()
finally:
connection.close()
```
3. **适当配置PostgreSQL参数**:
- `shared_buffers`: 通常设置为系统内存的25%
- `work_mem`: 调整排序和哈希操作的内存使用
- `maintenance_work_mem`: 提高VACUUM等维护操作性能
- `effective_cache_size`: 设置为系统可用缓存的估计值
4. **启用连接池状态监控**:定期检查连接池状态,避免连接泄漏和资源耗尽。
5. **利用PostgreSQL并行查询**:对于大表查询,启用并行查询可提高性能。
```sql
SET max_parallel_workers_per_gather = 4;
```
## 总结
PostgreSQL MCP提供了强大的数据库集群管理、高可用性和读写分离功能。通过合理配置和使用MCP,可以显著提高PostgreSQL数据库的性能、可靠性和可扩展性。特别是利用PostgreSQL的高级特性(如JSONB支持、全文搜索和MVCC并发控制),能够构建功能丰富且高效的应用系统。
在实际应用中,应根据具体业务需求和系统负载情况,调整PostgreSQL MCP的配置参数,以达到最佳的使用效果。定期的性能监控和维护也是保障系统稳定运行的关键因素。
相关文章:
PostgreSQL MCP 使用案例
## 概述 PostgreSQL MCP(PostgreSQL Multi-host Cluster Provisioning)是一种用于部署和管理多节点PostgreSQL集群的工具和架构。它提供了高效的数据库集群管理、高可用性保障和负载均衡功能。本文档将介绍PostgreSQL MCP的基本使用方法和常见应用场景。…...
什么是接口文档,如何使用,注意事项有哪些
一、接口文档的核心内容 基础信息 接口名称:明确功能(如“用户登录接口”)。 接口地址:URL 或 RPC 路径(如 /api/v1/login)。 请求方法:HTTP 方法(GET/POST/PUT/DELETE)…...
Swagger go中文版本手册
Swaggo(github.com/swaggo/swag)的注解语法是基于 OpenAPI 2.0 (以前称为 Swagger 2.0) 规范的,并添加了一些自己的约定。 主要官方文档: swaggo/swag GitHub 仓库: 这是最权威的来源。 链接: https://github.com/swaggo/swag重点关注: README.md: 包含了基本的安装、使用…...
[Java实战]Spring Boot + Netty 实现 TCP 长连接客户端及 RESTful 请求转发(二十六)
[Java实战]Spring Boot Netty 实现 TCP 长连接客户端及 RESTful 请求转发(二十六) 在现代微服务架构中,经常需要在不同服务之间进行高效、可靠的通信。本文将介绍如何使用 Spring Boot 结合 Netty 实现一个 TCP 长连接客户端,并…...
ProfibusDP主站转ModbusRTU/TCP与横河AXG电磁流量计通讯案例
ProfibusDP主站转ModbusRTU/TCP与横河AXG电磁流量计通讯案例 在当今数字化工业时代,智能仪表与控制系统的互联互通成为提高生产效率和管理水平的关键。横河AXG电磁流量计作为一款高性能的流量测量设备,在多个行业得到了广泛应用。而Profibus DP作为一种…...
鸿蒙OSUniApp开发的商品详情展示页面(鸿蒙系统适配版)#三方框架 #Uniapp
使用UniApp开发的商品详情展示页面(鸿蒙系统适配版) 前言 随着移动电商的普及,一个体验良好的商品详情页对于提高用户转化率至关重要。本文将分享我在使用UniApp开发商品详情页时的实践经验,并特别关注如何适配鸿蒙系统…...
VMware中快速安装与优化Ubuntu全攻略
准备工作 在开始安装之前,确保已经下载了VMware Workstation或VMware Player,并准备好Ubuntu的ISO镜像文件。VMware Workstation是一款功能强大的虚拟机软件,支持在Windows或Linux主机上运行多个操作系统。 创建虚拟机 打开VMware Worksta…...
本地 PC 使用Offset Explorer连接实体Ubuntu Kafka 【单机】超时问题解决
现状:本地 PC 使用Offset Explorer连接实体Ubuntu Kafka 超时 一、确认kafka是否在9092端口上运行 netstat -tulnp | grep 9092输出 tcp6 0 0 :::9092 :::* LISTEN 66113/java 使用jps查看进程66113的详细信息…...
CSS AI 通义灵码 VSCode插件安装与功能详解
简介 在前端开发领域,页面调试一直是个繁琐的过程,而传统开发中美工与前端的对接也常常出现问题。如今,阿里云技术团队推出的通义灵码智能编码助手,为前端开发者带来了新的解决方案,让开发者可以像指挥者一样…...
MUSE Pi Pro 使用TiTanTools烧录镜像
视频讲解: MUSE Pi Pro 使用TiTanTools烧录镜像 下载windows下的烧录工具 https://cloud.spacemit.com/prod-api/release/download/tools?tokentitantools_for_windows_X86_X64 下载镜像文件,zip后缀的即可 打开软件默认界面 按住FDL键,同时…...
嵌软面试每日一阅----通信协议篇(二)之TCP
一. TCP和UDP的区别 可靠性 TCP:✅ 可靠传输(三次握手 重传机制) UDP:❌ 不可靠(可能丢包) 连接方式 TCP:面向连接(需建立/断开连接) UDP:无连接࿰…...
开机自启动python程序_ubuntu22.04
一、没有设置开机自启动时 1、 conda activate yolo cd /home/orangepi/work_11.15/zipformer 2、 python app.py 二、设置开机自启动流程 1、新建一个文件.service文件 touch zipformer.service 2、最重要的找到你自己的环境路径 这个是我的 yolo的虚拟环境在ÿ…...
8、SpringBoot集成MinIO
8、SpringBoot集成MinIO https://xiaoxueblog.com/ai/SpringBoot%E9%9B%86%E6%88%90MinIO.html 1、pom <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.12</version> </dependency>2…...
LeRobot 框架的核心架构概念和组件(下)
本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。 。。。。。。继续。。。。。。 机器人控制系统 机器人控制系统提供统一的接口来控制实体机器人。它支持不同的控制模式和机器人类型,…...
ubuntu18 设置静态ip
百度 编辑/etc/netplan/01-netcfg.yaml 系统没有就自己编写 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.20.8/24] # 设置你的IP地址和子网掩码 gateway4: 192.168.20.1 # 网关地址 namese…...
QML元素 - ThresholdMask
QML 的 ThresholdMask 用于根据阈值将源元素与遮罩元素的像素值进行比较,通过设定阈值范围来控制源元素的可见区域。它适用于基于亮度、透明度或颜色通道的动态遮罩效果,例如游戏中的血条、进度指示器或图像处理中的抠图。以下是详细使用技巧和场景示例&…...
[项目深挖]仿muduo库的并发服务器的解析与优化方案
标题:[项目深挖]仿muduo库的并发服务器的优化方案 水墨不写bug 文章目录 一、buffer 模块(1)线性缓冲区直接扩容---->环形缓冲区定时扩容(只会扩容一次)(2)使用双缓冲(Double Buf…...
(独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
背景: 在销售发票生成的凭证中,控制凭证有两个字段:对象类型、对应编码;那这个PSG到底是什么东东?网上一直没人解释,可能没人研究过这个问题。 官方解释: 按我的理解,PSG profile …...
流程编辑器Bpmn与LogicFlow学习
工作流技术如何与用户交互结合(如动态表单、任务分配)处理过 XML 与 JSON 的转换自定义过 bpmn.js 的样式(如修改节点颜色、形状、图标)扩展过上下文菜单(Palette)或属性面板(Properties Panel&…...
群晖NAS部署PlaylistDL音乐下载器结合cpolar搭建私有云音乐库
文章目录 前言1.关于PlaylistDL音乐下载器2.Docker部署3.PlaylistDL简单使用4.群晖安装Cpolar工具5.创建PlaylistDL音乐下载器的公网地址6.配置固定公网地址总结 前言 各位小伙伴们,你们是不是经常为了听几首歌而开通各种平台的VIP?或者为了下载无损音质…...
Unity光照笔记
问题 在做项目中遇到了播放中切换场景后地面阴影是纯黑的问题,不得不研究一下光照。先放出官方文档。 Lighting 窗口 - Unity 手册 播放中切换场景后地面阴影是纯黑 只有投到地面的阴影是纯黑的。且跳转到使用相同Terrain的场景没有问题。 相关文章:…...
【ROS2】编译Qt实现的库,然后链接该库时,报错:/usr/bin/ld: XXX undefined reference to `vtable for
1、问题描述 在ROS2工程中,编译使用Qt实现的库,在其它ROS2包链接该库时,报错: /usr/bin/ld: XXX undefined reference to `vtable for2、原因分析 查看链接失败的几个函数接口都是,信号函数(signals 标记的函数)。因为信号函数都只有定义,没有实现,在执行ROS2 colc…...
deepseek讲解如何快速解决内存泄露,内存溢出问题
Java内存泄漏与内存溢出解决方案及预防措施 作为Java架构师,处理内存泄漏和内存溢出问题需要系统性的方法。以下是一份完整的解决方案和预防建议: 一、问题诊断阶段 1. 确认内存泄漏现象 监控GC日志,观察老年代使用率是否持续增长使用jst…...
双系统重装ubuntu
双系统ubuntu20.04重装(详细版)_ubuntu20.04安装教程-CSDN博客...
图形语言中间层:重构 AI 编程的未来之路
在软件开发的历史长河中,每一次技术革新都伴随着对效率与可控性的重新定义。当 ChatGPT、GitHub Copilot 等 AI 工具以自然语言生成代码的惊艳表现叩响编程世界的大门时,人们曾满怀憧憬地期待一个 “无代码” 的黄金时代 —— 只需用日常语言描述需求&am…...
Ubuntu操作合集
UFWUncomplicated Firewall 查看状态和规则: 1查看状态sudo ufw status, 2查看详细信息sudo ufw status verbose, 默认策略配置: 1拒绝所有入站sudo ufw default deny incoming 2允许所有出战sudo ufw default allow outgoing …...
张量与Python标量:核心区别与计算图断开解析
张量与Python标量的核心区别 张量(Tensor) 是PyTorch中的核心数据结构,类似于多维数组: 支持GPU加速计算跟踪计算历史(用于自动求导)可以包含多个元素Python标量(int/float) 是普通的Python数值类型: 不支持GPU加速没有计算历史记录单个独立数值计算图断开的原因 Py…...
U9C与钉钉审批流对接完整过程
U9C 功能强大,然而在移动办公和审批流方面存在一定不足。为了弥补这一缺陷,不少企业在使用 U9C 的同时,会选择开通钉钉这类 OA 管理系统。不过,两套系统并行使用时,数据同步问题便随之而来。目前,常见的做法…...
双重差分模型学习笔记4(理论)
【DID最全总结】90分钟带你速通双重差分!_哔哩哔哩_bilibili 目录 总结:双重差分法(DID)在社会科学中的应用:理论、发展与前沿分析 一、DID的基本原理与核心思想 二、经典DID:标准模型与应用案例 三、…...
【Pandas】pandas DataFrame diff
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
什么是Agentic AI(代理型人工智能)?
什么是Agentic AI(代理型人工智能)? 一、概述 Agentic AI(代理型人工智能)是一类具备自主决策、目标导向性与持续行动能力的人工智能系统。与传统AI系统依赖外部输入和显式命令不同,Agentic AI在设定目标…...
记录算法笔记(2025.5.15)二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入…...
2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用
一、controller调用 /*** 登录** author jiaketao* since 2024-04-10*/ RestController RequestMapping("/login") public class LoginController {/*** 【小程序】登录获取session_key和openid** param code 前端传code* return*/GetMapping("/getWXSessionKe…...
2021-10-25 C++三的倍数含五
缘由含数字五且是三的倍数-编程语言-CSDN问答 void 三的倍数含五() {//缘由https://ask.csdn.net/questions/7544132?spm1005.2025.3001.5141int a 3, aa a;while (a < 10000){if (aa)if (aa % 10 5)std::cout << a << std::ends, aa a 3; else aa / 10;…...
编程日志5.8
二叉树练习题 1.965. 单值二叉树 - 力扣(LeetCode) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :…...
Vue.js---避免无限递归循环 调度执行
4.4 避免无限递归循环 什么情况下会无限递归? 01 const data { foo: 1 } 02 const obj new Proxy(data, { /*...*/ }) 03 04 effect(() > obj.foo)例如这种情况,它会反复设置添加一直到栈溢出 首先读取obj.foo 的值,这会触发 track 操…...
AI大模型学习二十四、实践QEMU-KVM 虚拟化:ubuntu server 25.04 下云镜像创建Ubuntu 虚拟机
一、说明 虽然说大部分的场合,docker都能解决问题,但是有些大型的软件安装时如果修改配置会很麻烦,比方说前面遇到的code-server和dify 默认都是80和443端口要使用,安装在一起就会端口冲突,通过该端口来解决问题&#…...
Lovart:首个AI设计智能体
今天介绍一款AI设计智能体——Lovart,能调用各种绘画API和视频API,也能调用LibLib上的Flux和LoRA,并且智能体的编排效果确实很好,产出效果比豆包和ChatGPT都好,可以说没有竞品。视频为效果演示,官网有更多案…...
Trae 插件 Builder 模式:从 0 到 1 开发天气查询小程序,解锁 AI 编程新体验
在软件开发领域,效率与创新始终是开发者追求的核心目标。Trae 插件(原 MarsCode 编程助手)Builder 模式的全面上线,无疑为开发者带来了全新的解决方案。它不仅同时支持 VS Code、JetBrains IDEs 等主流开发环境,还能让…...
解决ubuntu20中tracker占用过多cpu,引起的风扇狂转
track是linux中的文件索引工具,ubuntu18之前是默认不安装的,所以在升级到20后会默认安装,它是和桌面程序gnome绑定的,甚至还有很多依赖项,导致无法删除,一旦删除很多依赖项都不能运行,禁用也很难…...
解码生命语言:深度学习模型TranslationAI揭示RNA翻译新规则
RNA翻译是基因表达的核心环节,其精确调控依赖于翻译起始位点(TIS)和终止位点(TTS)的准确识别。传统方法依赖于简单的经验规则(如Kozak序列或最长开放阅读框ORF),但忽略了RNA结构、顺…...
20250515测试飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG时跑iperf3的极速
20250515测试飞凌的OK3588-C的核心板在Linux R4下适配以太网RTL8211F-CG时跑iperf3的极速 2025/5/15 14:47 缘起:让飞凌的OK3588-C的核心板在Linux R4下,想看看以太网RTL8211F-CG的极速。 于是在飞凌的OK3588-C的核心板上,iperf3的收发一起跑…...
在Linux内安装虚拟机安装vmnet.tar 报错
编译报错如下: /usr/lib/vmware/modules/source/vmnet-only/userif.c: 在函数‘VNetCsumCopyDatagram’中: /usr/lib/vmware/modules/source/vmnet-only/userif.c:88:39: 错误:‘skb_frag_t {或称 const struct bio_vec}’ has no member named ‘page_offset’; di…...
CodeBuddy编程新范式
不会写?不想写? 腾讯推出的CodeBuddy彻底解放双手。 示例 以下是我对CodeBuddy的一个小体验。 我只用一行文字对CodeBuddy说明了一下我的需求,剩下的全部就交给了CodeBuddy,我需要做的就是验收结果即可。 1.首先CodeBuddy会对任…...
ESP32简介及相关使用
乐鑫官网: 无线通信 SoC、软件、云和 AIoT 方案|乐鑫科技 (espressif.com) 简介 ESP32 是由 乐鑫科技(Espressif Systems) 推出的一款高性能、低功耗的 Wi-Fi & 蓝牙双模物联网(IoT)芯片,广…...
全志F10c200开发笔记——移植uboot
相关资料: (二)uboot移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>-CSDN博客 F1C200S挖坑日记(3)——Uboot编译篇_f1c200s uboot-CSDN博客 一、安装编译器 Linaro Rele…...
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- Manus解密
解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- Manus解密 那你当前这个步骤执行完成之后,这边说了一个非常重要的点?每次迭代只选择一个工具,这个可能对大家感觉有点反直觉,可能大家立即选择分…...
理解c++中关键字友元friend的作用
理解c中关键字友元friend的作用 friend 关键字在 C 中用于声明一个函数或类为另一个类的友元。 友元函数或友元类可以访问该类的私有(private)和保护(protected)成员。 友元函数 作用: 允许非成员函数访问私有成员&…...
【学习心得】2025年Docker Desktop安装记录
1、docker的官方网站,已进入就可以看到下载按钮,无脑点击下载!英特尔的CPU所以选择AMD64 2、双击安装,默认的勾选不用改 Docker Desktop 4.40.0安装过程中的配置选项窗口 Use WSL 2 instead of Hyper-V (recommended)(…...
数据结构——例题2
1.在线性表中,除了开始元素外,每个元素(A) A.只有唯一的前驱元素 B.只有唯一的后继元素 C.有多个前驱元素 D.有多个后继元素 2.在一个长度为n的顺序表中删除第i个元素(1<i<n)时,需向前…...