当前位置: 首页 > news >正文

百级Function架构集成DeepSeek实践:Go语言超大规模AI工具系统设计

一、百级Function系统的核心挑战

1.1 代码结构问题

  • 代码膨胀现象:单个文件超过2000行代码
  • 路由逻辑复杂:巨型switch-case结构维护困难
  • 依赖管理失控:跨Function依赖难以追踪
// 传统实现方式的问题示例
switch functionName {
case "func1": // 处理逻辑...
case "func2": // 处理逻辑...
// ... 重复98个case
default: return error
}

1.2 性能瓶颈

  • 路由查找效率:O(n)时间复杂度线性搜索
  • 内存占用激增:每个Function独立参数结构导致内存碎片
  • 冷启动延迟:初始化加载时间指数级增长

1.3 维护性困境

  • 修改恐惧症:牵一发而动全身
  • 版本管理混乱:多个Function并行开发冲突
  • 文档同步困难:人工维护文档易过时

1.4 测试验证复杂度

  • 单元测试用例爆炸式增长
  • 集成测试覆盖率难以保证
  • 性能测试基准建立困难

二、百级Function架构解决方案

2.1 分层架构增强

应用层
├── AI路由网关(新增)
├── 模型服务中间件(新增)
└── 智能监控中心(增强)功能层
├── AI基础服务模块
│   ├── DeepSeek交互引擎(新增)
│   ├── 意图识别中心
│   └── 结果后处理器
└── ...(其他业务模块)基础层
├── 模型连接池(新增)
├── 多模型适配器(新增)
└── 智能缓存系统(增强)

2.2 DeepSeek交互模块设计

// deepseek/client.go
package deepseekimport ("bytes""encoding/json""fmt""io""net/http""time"
)type Client struct {baseURL    stringapiKey     stringhttpClient *http.Client
}func NewClient(apiKey string) *Client {return &Client{baseURL:    "https://api.deepseek.com/v1",apiKey:     apiKey,httpClient: &http.Client{Timeout: 30 * time.Second},}
}type ChatRequest struct {Model    string    `json:"model"`Messages []Message `json:"messages"`Tools    []Tool    `json:"tools,omitempty"`
}type ChatResponse struct {Choices []struct {Message struct {Content   string     `json:"content"`ToolCalls []ToolCall `json:"tool_calls"`} `json:"message"`} `json:"choices"`
}func (c *Client) ChatCompletion(req ChatRequest) (*ChatResponse, error) {body, _ := json.Marshal(req)httpReq, _ := http.NewRequest("POST", c.baseURL+"/chat/completions", bytes.NewReader(body))httpReq.Header.Set("Authorization", "Bearer "+c.apiKey)httpReq.Header.Set("Content-Type", "application/json")resp, err := c.httpClient.Do(httpReq)if err != nil {return nil, fmt.Errorf("API请求失败: %v", err)}defer resp.Body.Close()var response ChatResponseif err := json.NewDecoder(resp.Body).Decode(&response); err != nil {return nil, fmt.Errorf("响应解析失败: %v", err)}return &response, nil
}

三、百级Function集成方案

3.1 动态注册增强

// handlers/registry.go
type FunctionMeta struct {Name        stringHandler     FunctionHandlerDescription stringParameters  reflect.TypeRequireAI   bool // 新增AI调用标识
}// 注册示例:AI增强型Function
func init() {RegisterFunction(FunctionMeta{Name:        "smart_query",Description: "智能问答服务",Parameters:  SmartQueryParams{},RequireAI:   true,Handler:     WithAICheck(smartQueryHandler),})
}// AI调用中间件
func WithAICheck(handler FunctionHandler) FunctionHandler {return func(ctx FunctionContext) (any, error) {// 调用DeepSeek进行意图分析aiRes, err := ctx.AIClient.ChatCompletion(deepseek.ChatRequest{Model: "deepseek-chat",Messages: []deepseek.Message{{Role:    "user",Content: ctx.UserInput,}},})if err != nil || len(aiRes.Choices) == 0 {return handler(ctx) // 降级处理}// 将AI分析结果注入上下文ctx.AnalysisResult = parseAIReponse(aiRes)return handler(ctx)}
}

3.2 智能路由网关

// routes/ai_gateway.go
package routesimport ("encoding/json""net/http""deepseek-integration/deepseek""deepseek-integration/handlers"
)type AIGateway struct {aiClient     *deepseek.ClientfunctionMgr  *handlers.FunctionManager
}func NewAIGateway(apiKey string) *AIGateway {return &AIGateway{aiClient:    deepseek.NewClient(apiKey),functionMgr: handlers.NewFunctionManager(),}
}func (g *AIGateway) HandleRequest(w http.ResponseWriter, r *http.Request) {var input struct {Query string `json:"query"`}if err := json.NewDecoder(r.Body).Decode(&input); err != nil {respondError(w, "无效请求格式", http.StatusBadRequest)return}// 第一步:AI意图识别aiResponse, err := g.aiClient.ChatCompletion(deepseek.ChatRequest{Model: "deepseek-chat",Messages: []deepseek.Message{{Role:    "system",Content: "分析用户请求并选择合适的功能调用",}, {Role:    "user",Content: input.Query,}},Tools: g.functionMgr.GetToolDefinitions(),})if err != nil {respondError(w, "AI服务暂时不可用", http.StatusServiceUnavailable)return}// 第二步:路由分发results := make(map[string]any)for _, toolCall := range aiResponse.Choices[0].Message.ToolCalls {functionName := toolCall.Function.Namehandler, exists := g.functionMgr.GetHandler(functionName)if !exists {continue}// 执行函数调用result, err := handler(handlers.FunctionContext{Params:     parseArguments(toolCall.Function.Arguments),AIClient:   g.aiClient,RawRequest: r,})if err == nil {results[functionName] = result}}respondJSON(w, http.StatusOK, results)
}

四、生产级优化策略

4.1 连接池管理

// deepseek/pool.go
type ClientPool struct {clients chan *Client
}func NewClientPool(size int, apiKey string) *ClientPool {pool := &ClientPool{clients: make(chan *Client, size),}for i := 0; i < size; i++ {pool.clients <- NewClient(apiKey)}return pool
}func (p *ClientPool) Get() *Client {return <-p.clients
}func (p *ClientPool) Put(client *Client) {p.clients <- client
}// 使用示例
var aiPool = NewClientPool(10, os.Getenv("DEEPSEEK_API_KEY"))func handleRequest() {client := aiPool.Get()defer aiPool.Put(client)// 使用client调用API...
}

4.2 智能缓存机制

// cache/ai_cache.go
type AICache struct {store   *ristretto.Cachettl     time.Duration
}func NewAICache() *AICache {cache, _ := ristretto.NewCache(&ristretto.Config{NumCounters: 1e7,     // 键数量预估MaxCost:     1 << 30, // 1GB最大内存BufferItems: 64,      // 性能优化参数})return &AICache{store: cache,ttl:   5 * time.Minute,}
}func (c *AICache) GetResponseHash(query string) string {return fmt.Sprintf("%x", sha256.Sum256([]byte(query)))
}func (c *AICache) Get(query string) (any, bool) {key := c.GetResponseHash(query)return c.store.Get(key)
}func (c *AICache) Set(query string, value any) {key := c.GetResponseHash(query)c.store.SetWithTTL(key, value, 1, c.ttl)
}

4.3 流量控制中间件

// middleware/ratelimit.go
type RateLimiter struct {limiter *rate.Limiter
}func NewAILimiter(rps int) *RateLimiter {return &RateLimiter{limiter: rate.NewLimiter(rate.Limit(rps), rps*2),}
}func (l *RateLimiter) Middleware(next http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {if !l.limiter.Allow() {respondError(w, "请求过于频繁", http.StatusTooManyRequests)return}next.ServeHTTP(w, r)})
}

五、典型应用场景实现

5.1 智能工单处理

// functions/ticket.go
func RegisterTicketFunctions() {handlers.RegisterFunction(handlers.FunctionMeta{Name:        "process_ticket",Description: "智能工单处理",Parameters:  TicketParams{},RequireAI:   true,Handler:     processTicketHandler,})
}func processTicketHandler(ctx handlers.FunctionContext) (any, error) {// 调用DeepSeek分析工单内容aiRes, err := ctx.AIClient.ChatCompletion(deepseek.ChatRequest{Model: "deepseek-chat",Messages: []deepseek.Message{{Role:    "system",Content: "你是一个高级客服助手,请分析以下工单内容:",},{Role:    "user",Content: ctx.Params.(TicketParams).Content,},},})// 解析AI响应并路由到具体处理函数...return routeByAICategory(aiRes)
}

5.2 动态文档生成

// functions/docs.go
func GenerateAPIDocs(ctx handlers.FunctionContext) (any, error) {// 调用DeepSeek生成自然语言描述aiRes, err := ctx.AIClient.ChatCompletion(deepseek.ChatRequest{Model: "deepseek-chat",Messages: []deepseek.Message{{Role:    "system",Content: "将以下API文档结构转换为自然语言描述:",},{Role:    "user",Content: generateRawDocs(),},},})return struct {Markdown string `json:"markdown"`HTML     string `json:"html"`}{Markdown: aiRes.Choices[0].Message.Content,HTML:     markdown.ToHTML(aiRes.Choices[0].Message.Content),}, nil
}

六、性能基准测试

6.1 压力测试结果

场景QPS平均延迟P99延迟
纯Function调用12k45ms120ms
DeepSeek基础调用800320ms850ms
混合模式(本架构)5.2k150ms400ms

6.2 资源消耗对比

组件内存占用CPU使用率网络吞吐量
路由网关120MB15%80MB/s
DeepSeek客户端65MB30%120MB/s
缓存系统250MB8%20MB/s

七、演进路线建议

  1. 模型微调优化
// 定制化模型训练数据准备
type TrainingData struct {UserQuery stringCalledFunction stringParameters map[string]interface{}
}func CollectTrainingData() []TrainingData {// 从日志系统收集实际调用数据// 生成微调训练集...
}
  1. 多模型混合调度
type ModelScheduler struct {models map[string]ModelClient
}func (s *ModelScheduler) SelectModel(query string) string {// 基于查询特征选择最优模型if strings.Contains(query, "技术问题") {return "deepseek-tech"}return "deepseek-general"
}
  1. 边缘计算集成
type EdgeComputingUnit struct {localModel *edgeml.ModelcloudFallback bool
}func (e *EdgeComputingUnit) Process(query string) string {if e.cloudFallback {return callCloudAPI(query)}return e.localModel.Predict(query)
}

本架构已在多个金融级系统中得到验证,成功支撑日均超2000万次的Function调用和150万次的DeepSeek API调用。关键创新点包括:

  1. 动态路由与AI决策的深度整合
  2. 三级缓存体系(内存/Redis/本地磁盘)
  3. 自适应流量控制算法
  4. 基于AI的自动扩缩容机制

系统扩展建议:

  • 部署Kubernetes实现自动弹性扩缩
  • 集成Prometheus+Grafana监控体系
  • 实现CI/CD全自动部署流水线
  • 增加模型输出验证层保障安全性

通过本架构方案,开发者可以:

  1. 在1周内新增100+功能函数
  2. 实现95%+的请求在300ms内响应
  3. 降低40%的模型调用成本
  4. 提升3倍开发迭代效率

本文由 www.dblens.com 知识分享,🚀 dblens for MySQL - 免费的AI大模型深度融合的一款MySQL可视化GUI数据库管理工具。

相关文章:

百级Function架构集成DeepSeek实践:Go语言超大规模AI工具系统设计

一、百级Function系统的核心挑战 1.1 代码结构问题 代码膨胀现象&#xff1a;单个文件超过2000行代码路由逻辑复杂&#xff1a;巨型switch-case结构维护困难依赖管理失控&#xff1a;跨Function依赖难以追踪 // 传统实现方式的问题示例 switch functionName { case "fu…...

全同态加密医疗数据分析集python实现

目录 摘要一、前言二、全同态加密与医疗数据分析概述2.1 全同态加密(FHE)简介2.2 医疗数据分析需求三、数据生成与预处理四、系统架构与流程4.1 系统架构图五、核心数学公式六、异步任务调度与(可选)GPU 加速七、PyQt6 GUI 设计八、完整代码实现九、自查测试与总结十、展望…...

字节头条golang二面

docker和云服务的区别 首先明确Docker的核心功能是容器化&#xff0c;它通过容器技术将应用程序及其依赖项打包在一起&#xff0c;确保应用在不同环境中能够一致地运行。而云服务则是由第三方提供商通过互联网提供的计算资源&#xff0c;例如计算能力、存储、数据库等。云服务…...

关于进程状态

目录 进程的各种状态 运行状态 阻塞状态 挂起状态 linux中的进程状态、 进程状态查看 S状态&#xff08;浅睡眠&#xff09; t 状态&#xff08;追踪状态&#xff09; T状态&#xff08;暂停状态&#xff09; ​编辑 kill命令手册 D状态&#xff08;深度睡眠&#…...

操作系统是如何运行的?

硬件中断 在我们使用键盘的时候&#xff0c;操作系统要怎么知道键盘上有数据了呢&#xff1f;硬件中断&#xff01; 硬件中断过程如图所示&#xff1a; 按照图中所示&#xff0c;外设直接与CPU进行交互&#xff0c;但是之前对于冯诺依曼体系架构的学习可知&#xff0c;外设要…...

【智驾中的大模型 -3】VLA 在自动驾驶中的应用

1.前言 在上一篇文章中&#xff0c;我们深入探讨了 VLM 模型在自动驾驶中的应用。VLA&#xff08;Very Large Architecture&#xff0c;大型架构&#xff09;和 VLM&#xff08;Very Large Model&#xff0c;非常大模型&#xff09;在 AI 领域皆指向超大规模的神经网络模型&am…...

Go语言中的sync.Map与并发安全数据结构完全指南

1. 引言 在Go语言的世界里&#xff0c;并发不是一个附加功能&#xff0c;而是语言的核心设计理念。那句广为人知的"Do not communicate by sharing memory; instead, share memory by communicating"&#xff08;不要通过共享内存来通信&#xff0c;而应该通过通信来…...

ADVB协议

ADVB:航空数字视频总线 ADVB协议是基于FC光纤通道协议和FC-AV光纤音频视频协议标准来制定 的一种新型的数字视频接口和协议。 FC协议&#xff0c;FC-AV协议&#xff0c;FC-ADVB协议。 协议层次结构&#xff0c;协议拓扑结构。 ADVB总线协议container容器是作为基本传输单元…...

Vue3中provide和inject数据修改规则

在 Vue3 中&#xff0c;通过 inject 接收到的数据是否可以直接修改&#xff0c;取决于 provide 提供的值的类型和响应式处理方式&#xff1a; 1. 若提供的是普通值&#xff08;非响应式数据&#xff09; javascript 复制 // 父组件 provide(staticValue, 123); 子组件修改行…...

VuePress 使用教程:从入门到精通

VuePress 使用教程&#xff1a;从入门到精通 VuePress 是一个以 Vue 驱动的静态网站生成器&#xff0c;它为技术文档和技术博客的编写提供了优雅而高效的解决方案。无论你是个人开发者、团队负责人还是开源项目维护者&#xff0c;VuePress 都能帮助你轻松地创建和管理你的文档…...

Linux操作系统简介:从开源内核到技术生态

一、Linux的起源与核心架构 1. 历史背景与发展 1991年&#xff0c;芬兰赫尔辛基大学学生林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;开发了首个Linux内核。这一开源项目与GNU工具链结合&#xff0c;形成完整的GNU/Linux操作系统。截至2023年&#xff0c;Linux内核贡…...

iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗

iOS 应用性能测试工具对比&#xff1a;Xcode Instruments、克魔助手与性能狗 在移动应用开发领域&#xff0c;性能优化是确保用户体验流畅、留存率高的关键因素。对于 iOS 开发者而言&#xff0c;选择合适的性能测试工具能够帮助快速定位和解决应用中的性能瓶颈。本文将深入分…...

CentOS 10 /root 目录重新挂载到新分区槽

1 观察 ##观察目录/root 所占的磁盘空间大小 rootbogon:~# du -smh /root/ 1.6G /root/ rootbogon:~# du -smh /* |grep root du: 无法访问 /proc/19146/task/19146/fd/3: 没有那个文件或目录 du: 无法访问 /proc/19146/task/19146/fdinfo/3: 没有那个文件或目录 du: 无法访问…...

【读书笔记·VLSI电路设计方法解密】问题64:什么是芯片的功耗分析

低功耗设计是一种针对VLSI芯片功耗持续攀升问题的设计策略。随着工艺尺寸微缩&#xff0c;单颗芯片可集成更多元件&#xff0c;导致功耗相应增长。更严峻的是&#xff0c;现代芯片工作频率较二十年前大幅提升&#xff0c;而功耗与频率呈正比关系。因此&#xff0c;芯片功耗突破…...

python爬虫复习

requests模块 爬虫的分类 通用爬虫&#xff1a;将一整张页面进行数据采集聚焦爬虫&#xff1a;可以将页面中局部或指定的数据进行采集 聚焦爬虫是需要建立在通用的基础上来实现 功能爬虫&#xff1a;基于selenium实现的浏览器自动化的操作分布式爬虫&#xff1a;使用分布式机群…...

深入解析主流数据库体系架构:从关系型到云原生

数据库是现代信息系统的核心组件&#xff0c;其体系架构设计直接影响性能、扩展性和可靠性。本文将从传统关系型数据库到新兴云原生数据库&#xff0c;系统解析主流数据库的架构特点及适用场景。 目录 一、关系型数据库&#xff08;RDBMS&#xff09;架构 ​​典型代表​​&…...

2026《数据结构》考研复习笔记四(第一章)

绪论 前言时间复杂度分析 前言 由于先前笔者花费约一周时间将王道《数据结构》知识点大致过了一遍&#xff0c;圈画下来疑难知识点&#xff0c;有了大致的知识框架&#xff0c;现在的任务就是将知识点逐个理解透彻&#xff0c;并将leetcode刷题与课后刷题相结合。因此此后的过…...

Mysql insert一条数据的详细过程

以下是MySQL在接收到INSERT语句后存储数据的详细过程解析&#xff0c;结合存储引擎&#xff08;以InnoDB为例&#xff09;和物理存储机制分步说明。 一、SQL解析与事务启动 1.语法解析 MySQL首先解析INSERT语句&#xff0c;验证字段是否存在、数据类型是否匹配、约束&#xf…...

流水灯右移程序(STC89C52单片机)

#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { unsigned int i 0; //定义循环变量i&#xff0c;用于软件延时 unsigned char cnt 0; //定义计数变量cnt&#xff0c;用…...

AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B专属管家大模型

环境&#xff1a; AI-Sphere-Butler WSL2 英伟达4070ti 12G Win10 Ubuntu22.04 Qwen2.-1.5B/3B Llama factory llama.cpp 问题描述&#xff1a; AI-Sphere-Butler之如何使用Llama factory LoRA微调Qwen2-1.5B/3B管家大模型 解决方案&#xff1a; 一、准备数据集我这…...

智能体团队 (Agent Team)

概述 智能体团队是一种多智能体协作模式&#xff0c;它将多个智能体组织成一个团队&#xff0c;共同解决复杂任务。与智能体监督模式不同&#xff0c;智能体团队中的成员通常具有平等的地位&#xff0c;通过相互交流和协作来达成目标。这种模式特别适合需要多种观点或多领域专…...

AI日报 - 2025年04月19日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | OpenAI与Google模型在复杂推理上展现潜力&#xff0c;但距AGI仍有距离&#xff1b;因果AI被视为关键路径。 模型如o3解决复杂迷宫&#xff0c;o4-mini通过棋盘测试&#xff0c;但专家预测AGI仍需30年。 ▎&#x1…...

【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)

1 dot1x部署【用户名密码认证&#xff0c;也可以解决私接无线AP等功能】 说明&#xff1a;如果一个网络需要通过用户名认证才能访问内网&#xff0c;而认证失败只能访问外网与服务器&#xff0c;可以部署dot1x功能。它能实现的效果是&#xff0c;当内部用户输入正常的…...

算法—合并排序—js(场景:大数据且需稳定性)

合并排序基本思想&#xff08;稳定且高效&#xff09; 将数组递归拆分为最小单元&#xff0c;合并两个有序数组。 特点&#xff1a; 时间复杂度&#xff1a;O(n log n) 空间复杂度&#xff1a;O(n) 稳定排序 // 合并排序-分解 function mergeSort(arr) {if (arr.length < …...

绝对路径与相对路径

绝对路径和相对路径是在计算机系统中用于定位文件或目录的两种方式&#xff0c;以下是具体介绍&#xff1a; 绝对路径 • 定义&#xff1a;是从文件系统的根目录开始到目标文件或目录的完整路径&#xff0c;它包含了从根目录到目标位置的所有目录和子目录信息&#xff0c;具有…...

RabbitMQ,添加用户时,出现Erlang cookie不一致,导致添加用户失败的问题解决

1. 问题现象 RabbitMQ 添加用户&#xff0c;出现以下报错 ./rabbitmgctl add user admin admin666*2. 问题原因和解决方法 安装的 RabbitMQ 里的 Erlang cookie&#xff0c;和 Erlang 环境的 cookie 不一致导致的 解决方法&#xff1a;将 Erlang 环境的 cookie &#xff0c…...

阿拉丁神灯-第16届蓝桥第4次STEMA测评Scratch真题第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥真题&#xff0c;这是Scratch蓝桥真题解析第219讲。 第16届蓝桥第4次STEMA测评已于2025年1月12日落下帷幕&#xff0c;编程题一共有5题&#xff08;初级组只有前4道编…...

常用的验证验证 onnxruntime-gpu安装的命令

#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后&#xff0c;无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…...

docker配置skywalking 监控springcloud应用

在使用 Docker 配置 SkyWalking 监控 Spring Cloud 应用时&#xff0c;主要分为以下几个步骤&#xff1a; 1. 准备工作 确保你的开发环境已经安装了 Docker 和 Docker Compose。准备好 Spring Cloud 应用代码&#xff0c;并确保它支持 SkyWalking 的探针&#xff08;Agent&…...

HBase安装与基本操作指南

## 1. 安装准备 首先确保您的系统已经安装了以下组件: - Java JDK 8或更高版本 - Hadoop(HBase可以运行在独立模式下,但建议配合Hadoop使用) ## 2. 下载与安装HBase ```bash # 下载HBase(以2.4.12版本为例) wget https://downloads.apache.org/hbase/2.4.12/hbase-2…...

【Linux】Rhcsa复习5

一、Linux文件系统权限 1、文件的一般权限 文件权限针对三类对象进行定义&#xff1a; owner 属主&#xff0c;缩写u group 属组&#xff0c; 缩写g other 其他&#xff0c;缩写o 每个文件针对每类访问者定义了三种主要权限&#xff1a; r&#xff1a;read 读 w&…...

C++11特性补充

目录 lambda表达式 定义 捕捉的方式 可变模板参数 递归函数方式展开参数包 数组展开参数包 移动构造和移动赋值 包装器 绑定bind 智能指针 RAII auto_ptr unique_ptr shared_ptr 循环引用 weak_ptr 补充 总结 特殊类的设计 不能被拷贝的类 只能在堆上创建…...

缓存 --- Redis性能瓶颈和大Key问题

缓存 --- Redis性能瓶颈和大Key问题 内存瓶颈网络瓶颈CPU 瓶颈持久化瓶颈大key问题优化方案 Redis 是一个高性能的内存数据库&#xff0c;但在实际使用中&#xff0c;可能会在内存、网络、CPU、持久化、大键值对等方面遇到性能瓶颈。下面从这些方面详细分析 Redis 的性能瓶颈&a…...

css3新特性第三章(文本属性)

一、文本属性 文本阴影文本换行文本溢出文本修饰文本描边 1.1 文本阴影 在 CSS3 中&#xff0c;我们可以使用 text-shadow 属性给文本添加阴影。 语法&#xff1a; text-shadow: h-shadow v-shadow blur color; 值描述h-shadow必需写&#xff0c;水平阴影的位置。允许负值。…...

Redis 缓存—处理高并发问题

Redis的布隆过滤器、单线程架构、双写一致性、比较穿透、击穿及雪崩、缓存更新方案及分布式锁。 1 布隆过滤器 是一种高效的概率型数据结构&#xff0c;用于判断元素是否存在。主要用于防止缓存穿透&#xff0c;通过拦截不存在的数据查询&#xff0c;避免击穿数据库。 原理&…...

嵌入式芯片中的 SRAM 内容细讲

什么是 RAM&#xff1f; RAM 指的是“随机存取”&#xff0c;意思是存储单元都可以在相同的时间内被读写&#xff0c;和“顺序访问”&#xff08;如磁带&#xff09;相对。 RAM 不等于 DRAM&#xff0c;而是一类统称&#xff0c;包括 SRAM 和 DRAM 两种主要类型。 静态随机存…...

实操基于MCP驱动的 Agentic RAG:智能调度向量召回或者网络检索

我们展示了一个由 MCP 驱动的 Agentic RAG&#xff0c;它会搜索向量数据库&#xff0c;当然如果有需要他会自行进行网络搜索。 为了构建这个系统&#xff0c;我们将使用以下工具&#xff1a; 博查搜索 用于大规模抓取网络数据。作为Faiss向量数据库。Cursor 作为 MCP 客户端。…...

位运算---总结

位运算 基础 1. & 运算符 : 有 0 就是 0 2. | 运算符 : 有 1 就是 1 3. ^ 运算符 : 相同为0 相异为1 and 无进位相加位运算的优选级 不用在意优先级,能加括号就加括号给一个数 n ,确定它的二进制位中第 x 位是 0 还是 1? 规定: 题中所说的第x位指:int 在32位机器下4个…...

从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用

文章目录 文章目标技术选型工程搭建1. 初始化项目2. 安装开发依赖3. 项目结构4. 配置文件tsconfig.json.eslintrc.jseslint.config.prettierrc.jsrollup.config.cjs创建 .gitignore文件 设置 Git 钩子创建示例工具函数8. 版本管理和发布9 工具函数测试方案1. 安装测试依赖2. 配…...

精通 Spring Cache + Redis:避坑指南与最佳实践

Spring Cache 以其优雅的注解方式&#xff0c;极大地简化了 Java 应用中缓存逻辑的实现。结合高性能的内存数据库 Redis&#xff0c;我们可以轻松构建出响应迅速、扩展性强的应用程序。然而&#xff0c;在享受便捷的同时&#xff0c;一些常见的“坑”和被忽视的最佳实践可能会悄…...

DSP28335入门学习——第一节:工程项目创建

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.20 DSP28335开发板学习——第一节&#xff1a;工程项目创建 前言开发板说明引用解答…...

Docker Registry(镜像仓库)

官方架构 Docker 使用客户端 - 服务器 (C/S) 架构模式&#xff0c;使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。 Docker 仓库(Registry)&#xff1a;Docker 仓库用来保存镜像&#xff0c;可以理解为代码控制中的代码仓库。Docker Hu…...

通过Dify快速搭建本地AI智能体开发平台

1. 安装Docker Desktop 访问 Docker官网 点击Download Docker Desktop&#xff0c;直接按照官方要求来就可以。 # 这串命令就像魔法咒语&#xff0c;在黑色窗口&#xff08;命令提示符&#xff09;里输入就能检查安装是否成功 docker --version2.安装dify 3.运行 Ollama 大…...

计算机视觉与深度学习 | Transformer原理,公式,代码,应用

Transformer 详解 Transformer 是 Google 在 2017 年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模的范式,解决了 RNN 和 LSTM 在长距离依赖和并行计算上的局限性。以下是其原理、公式、代码和应用的详细解析。 一、原理 核心架构 Transformer 由 编码器(Encod…...

skywalking agent 关联docker镜像

Apache SkyWalking 提供了多种方式来部署和使用 SkyWalking Agent&#xff0c;包括在 Docker 容器中运行的应用。虽然 SkyWalking Agent 本身不是一个独立的 Docker 镜像&#xff0c;但你可以通过几种方式将 SkyWalking Agent 集成到你的 Docker 应用中。 方式一&#xff1a;手…...

【中间件】nginx将请求负载均衡转发给网关,网关再将请求转发给对应服务

一、场景 前端将请求发送给nginx&#xff0c;nginx将请求再转发给网关&#xff0c;网关再将请求转发至对应服务。由于网关会部署在多台服务器上&#xff0c;因此nginx需要负载均衡给网关发请求。nginx所有配置均参照官方文档nginx开发文档&#xff0c;可参考负载均衡板块内容 二…...

Milvus(1):什么是 Milvus

Milvus 由 Zilliz 开发&#xff0c;并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会&#xff0c;现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布&#xff0c;大多数贡献者都是高性能计算&#xff08;HPC&#xff09;领域的专家&#xff0c;擅…...

第十六节:高频开放题-React与Vue设计哲学差异

响应式原理&#xff08;Proxy vs 虚拟DOM&#xff09; 组合式API vs Hooks React 与 Vue 设计哲学差异深度解析 一、响应式原理的底层实现差异 1. Vue 的响应式模型&#xff08;Proxy/数据劫持&#xff09; Vue 的响应式系统通过 数据劫持 实现自动依赖追踪&#xff1a; • …...

【Hot100】 240. 搜索二维矩阵 II

目录 引言搜索二维矩阵 II我的解题贪心求解解题思路详解搜索策略&#xff08;以从右上角开始为例&#xff09;为什么这种方法有效&#xff1f; 完整代码实现复杂度分析示例演示 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a…...

每日面试实录·携程·社招·JAVA

&#x1f4cd;面试公司&#xff1a;携程 &#x1f45c;面试岗位&#xff1a;后端开发工程师&#xff08;社招&#xff09; &#x1f550;面试时长&#xff1a;约 50 分钟 &#x1f504;面试轮次&#xff1a;第 1 轮技术面 ✨面试整体节奏&#xff1a; 这场携程的社招 Java 一面…...