AI驱动信息摘要系统:从架构设计到工程实践的完整指南

news2026/5/3 11:14:10
1. 项目概述一个AI驱动的每日信息摘要工具最近在GitHub上看到一个挺有意思的项目叫“Convenient-huston624/ai-daily-digest”。光看名字你大概能猜到这是个用AI来生成每日摘要的工具。作为一个在信息处理领域摸爬滚打多年的从业者我对这类项目特别敏感。我们每天被海量的信息淹没——新闻、技术博客、行业报告、社交媒体动态想要高效地获取有价值的内容几乎成了一种奢望。这个项目瞄准的正是这个痛点利用AI模型自动抓取、筛选、总结你关心的信息源然后生成一份精炼、易读的每日摘要。这个项目的核心价值在于“自动化”和“个性化”。它试图将我们从手动刷信息流的繁琐中解放出来把信息获取从“主动搜寻”变成“被动接收精华”。想象一下每天早上你的邮箱或者聊天软件里准时出现一份为你量身定制的简报涵盖了昨晚到今天你关注领域的所有重要动态省去了你至少一两个小时的浏览和筛选时间。这对于开发者、研究者、市场人员或者任何需要保持信息敏感度的专业人士来说吸引力是巨大的。我深入研究了这个项目的架构和实现思路发现它虽然概念上不复杂但要把各个环节做稳定、做出效果里面有不少门道。从信息源的配置与管理、内容的抓取与清洗到AI模型的选择与提示词工程再到摘要的格式化与多渠道推送每一个环节都直接影响最终产品的可用性和用户体验。接下来我就结合自己搭建类似系统的经验把这个项目的里里外外拆解一遍分享其中的核心设计、实操要点以及那些容易踩坑的地方。2. 核心架构与设计思路拆解一个AI驱动的每日摘要系统其架构可以类比为一个智能的新闻编辑部。它需要“记者”爬虫或RSS订阅去采集信息“编辑”AI模型来提炼核心“发行部门”推送服务将成品送达读者。ai-daily-digest项目的设计也大抵遵循了这个逻辑我们可以从数据流的角度来理解其核心架构。2.1 信息输入层源数据的管理与获取这是整个系统的基石。摘要的质量首先取决于输入信息的质量和广度。项目通常支持多种信源类型RSS/Atom订阅源这是最规范、最友好的方式。几乎所有的新闻网站、技术博客都提供RSS输出。配置简单只需要订阅源URL系统定时抓取即可。稳定性高对目标网站友好。网站爬虫对于不提供RSS的网站就需要动用爬虫。这里涉及HTML解析如用BeautifulSoup、请求头模拟、反爬策略应对如设置合理的User-Agent、延迟请求等。这一块是复杂度最高、也最容易出问题的部分。API接口一些平台如Twitter、Reddit、特定新闻聚合器提供了官方API。这是最理想的方式数据格式规整但有调用频率限制和可能的认证成本。社交媒体监听通过平台API或第三方工具监听特定关键词、话题或账号的动态。注意在设计信息输入层时必须严格遵守网站的robots.txt协议并设置礼貌的抓取间隔如每次请求间隔2-5秒避免对目标服务器造成压力这也是基本的网络礼仪和规避法律风险的必要措施。项目的设计思路应该是模块化的每一种信源类型对应一个独立的“采集器”Fetcher模块。这样新增一种信源类型时只需要实现对应的采集器接口即可不影响系统其他部分。2.2 数据处理与存储层内容的清洗与暂存原始抓取到的数据往往是杂乱无章的包含大量HTML标签、广告、无关链接和样式信息。这一层负责将“原材料”处理成干净的“文本食材”。内容提取对于网页需要使用可读性库如readability、newspaper3k或自定义的XPath/CSS选择器精准地提取出文章的标题和正文主体剔除导航栏、侧边栏、评论、页脚等噪音。文本清洗去除多余的空白字符、换行符将HTML实体如amp;转换为正常字符。去重同一事件可能被多个信源报道。需要根据标题相似度、正文关键段落或唯一标识符如文章ID进行去重避免摘要中出现重复内容。结构化存储清洗后的文章需要被临时存储等待AI处理。通常使用数据库如SQLite、PostgreSQL或文档存储如Elasticsearch。每条记录应包含唯一ID、源URL、标题、清洗后正文、抓取时间、源站名称、分类标签等字段。这里的一个关键设计点是异步处理队列。采集器抓取到文章后不应立即调用AI模型这很慢且昂贵而是将文章信息放入一个任务队列如Redis, RabbitMQ, 或数据库中的待处理表。另一个独立的“处理工作进程”再从队列中消费任务。这种生产-消费者模式保证了系统的可伸缩性和稳定性。2.3 AI处理层摘要生成的核心引擎这是项目的“大脑”也是最体现技术选型差异的部分。核心任务是将一篇长文章或一组相关文章压缩成一段言简意赅的摘要。模型选型云端大模型API主流选择如OpenAI的GPT系列、Anthropic的Claude、Google的Gemini。优势是摘要质量高、逻辑通顺、支持复杂的指令且无需本地算力。缺点是持续使用有成本且依赖网络。本地开源模型如Llama 3、Mistral、Qwen系列。通过Ollama、LM Studio或直接调用Hugging Facetransformers库部署。优势是数据隐私性好无持续API成本。缺点是对本地硬件尤其是GPU有要求且模型效果和速度可能不及顶级商用API。专用摘要模型有些在特定数据集上微调过的模型如BART, T5的摘要变体可能对摘要任务更高效但灵活性和指令跟随能力通常弱于通用大语言模型。ai-daily-digest项目为了便捷性和效果很可能优先选用云端大模型API。这里就涉及到提示词工程。提示词设计给AI的指令至关重要。一个糟糕的提示词会得到啰嗦、抓不住重点或格式混乱的摘要。一个有效的提示词模板可能长这样你是一个专业的编辑请为以下文章生成一份每日摘要。 要求 1. 摘要长度控制在150字以内。 2. 提炼核心事件、观点或结论。 3. 语言简洁、客观使用中文。 4. 如果文章涉及具体技术请确保术语准确。 5. 格式先一句话总起再分点列出关键信息不超过3点。 文章标题{title} 文章正文{cleaned_content}你需要根据不同的信源类型如科技新闻、学术论文、娱乐八卦微调提示词以达到最佳效果。处理策略单篇文章摘要对每篇文章独立生成摘要。简单直接但缺乏关联信息整合。多篇文章聚合摘要将同一主题或领域的多篇文章先交给AI让它进行对比、归纳生成一份综合性摘要。这能提供更全面的视角但对AI上下文长度和处理能力要求更高成本也更高。分级摘要先为每篇文章生成简短摘要如一句话再对所有简短摘要进行二次归纳形成每日总览。这是一种权衡成本与效果的策略。2.4 输出与推送层摘要的格式化与送达生成好的摘要需要被美观地呈现并送达用户。格式化将AI返回的纯文本摘要包装成更友好的格式。例如Markdown适合在支持Markdown的平台如GitHub, Notion查看。HTML用于生成网页版简报或富文本邮件。纯文本兼容性最强适合短信或简单通知。 通常一份每日摘要的最终格式会包含日期、摘要条目每条含标题、源链接、AI摘要、以及一个简单的页脚。推送渠道电子邮件最经典、最通用的方式。使用SMTP服务如SendGrid, Mailgun或服务器自带的sendmail来发送。需要设计邮件模板。即时通讯工具如通过Telegram Bot、Slack Incoming Webhook、钉钉机器人、企业微信应用消息推送。这种方式更即时、互动性更强。生成静态页面将每日摘要生成一个HTML页面托管在GitHub Pages、Vercel或自己的服务器上用户可以通过固定链接访问。RSS输出将摘要本身再输出为一个RSS源让用户用阅读器订阅。这形成了一个有趣的循环。调度系统整个流程需要定时触发。这通常由系统的“调度器”完成它可能是一个简单的cron作业在Linux服务器上或者使用更高级的作业队列如Celery Beat。调度器在设定的时间例如每天UTC时间0点启动触发采集-处理-生成-推送的完整流水线。3. 关键技术点与实操实现细节理解了整体架构我们深入到几个关键的技术实现环节看看代码层面大概如何组织以及有哪些需要特别注意的细节。3.1 信源配置与模块化采集器实现信源的配置最好采用声明式的方法比如用一个yaml或json配置文件来管理。# sources.yaml sources: - name: Hacker News Top Stories type: rss url: https://news.ycombinator.com/rss category: technology enabled: true - name: 某科技博客 type: web_scraper url: https://example.com/blog extractor: css # 使用CSS选择器提取 title_selector: h1.post-title content_selector: div.post-content category: tech enabled: true - name: 特定Twitter用户 type: twitter_api username: some_tech_leader category: social enabled: false # 暂时禁用在代码中为每种type实现一个基类BaseFetcher然后派生出RSSFetcher、WebScraperFetcher、TwitterAPIFetcher等。主程序读取配置动态加载对应的采集器实例。这样做的好处是扩展性极强新增一个信源类型只需新增一个类。实操心得网络请求的稳健性网络请求是采集环节最不稳定的一环。你必须为每个请求设置超时时间timeout(10, 30)连接超时10秒读取超时30秒。重试机制使用tenacity或backoff库对连接错误、超时、5xx服务器错误进行指数退避重试如最多重试3次。User-Agent轮换准备一个合理的浏览器User-Agent列表每次请求随机选用避免被简单的反爬策略屏蔽。请求间隔在for循环中抓取多个页面时务必使用time.sleep(random.uniform(2, 5))加入随机延迟。3.2 内容清洗与智能去重策略清洗环节除了用BeautifulSoup或readability对于特别顽固的网站可能需要编写针对性的清洗规则。一个常见的技巧是计算正文文本的标签密度标签字符数/总字符数如果密度过高说明提取可能失败了包含了太多非正文内容这条记录应该被标记或丢弃。去重是个技术活。简单的方法是对标题进行模糊匹配如使用difflib.SequenceMatcher计算相似度但效果一般。更可靠的方法是提取关键句/关键词用TF-IDF或TextRank算法从正文中提取出3-5个核心句子或关键词。向量化与相似度计算使用句子向量模型如sentence-transformers将标题和关键句转换为向量。相似度判断计算新文章与已存储文章向量的余弦相似度。如果超过某个阈值如0.85且发布时间接近则判定为重复。对于每日摘要系统你甚至可以利用AI辅助去重。将两篇文章的标题和开头部分交给AI直接提问“这两篇文章描述的是否是同一事件或主题” 虽然成本高但准确率也极高适合对摘要质量要求非常高的场景。3.3 AI模型调用与摘要质量优化假设我们选择OpenAI API作为处理引擎。代码层面并不复杂但优化空间巨大。import openai from tenacity import retry, stop_after_attempt, wait_exponential class DigestGenerator: def __init__(self, api_key, modelgpt-3.5-turbo): openai.api_key api_key self.model model retry(stopstop_after_attempt(3), waitwait_exponential(multiplier1, min4, max10)) def generate_summary(self, title, content, max_tokens200): prompt self._build_prompt(title, content) try: response openai.ChatCompletion.create( modelself.model, messages[{role: user, content: prompt}], max_tokensmax_tokens, temperature0.2, # 低温度输出更确定、更聚焦 ) return response.choices[0].message.content.strip() except openai.error.InvalidRequestError as e: # 处理上下文过长错误 if context length in str(e): # 策略截断content或换用支持更长上下文的模型 truncated_content content[:8000] return self.generate_summary(title, truncated_content, max_tokens) else: raise e def _build_prompt(self, title, content): # 这里可以设计更复杂的提示词模板 return f请为以下文章生成一份简洁的摘要用于每日信息简报。 要求 - 摘要长度在100-150字之间。 - 抓住文章的核心论点、发现或事件。 - 语言平实、精炼直接陈述事实。 - 如果文章有明确的结论或影响请包含在内。 文章标题《{title}》 文章内容 {content} 摘要摘要质量优化的几个关键点Temperature参数对于摘要任务通常设置较低的temperature如0.1-0.3让AI的输出更确定、更少“创造性”保证摘要的客观和稳定。System Prompt的妙用除了用户提示词你还可以在messages列表的开头加入一个system角色的消息来设定AI的“人设”例如{role: system, content: 你是一个专注于科技和商业领域的资深编辑擅长用精炼的语言概括复杂信息。}。这能在一定程度上引导摘要的风格。处理长文本模型有上下文长度限制。如果文章太长需要先进行预处理。简单的方法是截取文章开头部分但可能丢失关键信息。更好的方法是先用更廉价的方式如TF-IDF提取出文章的几个关键段落再将关键段落和标题一起交给AI生成摘要。成本控制监控API的token使用量。对于纯文本摘要gpt-3.5-turbo通常性价比很高。如果追求更高品质可以对重要文章使用gpt-4。可以在配置中为不同信源或文章设置不同的模型策略。3.4 任务队列与异步处理实践为了避免同步处理导致的请求阻塞和超时使用消息队列是生产级系统的标配。这里以Redis RQRedis Queue为例展示一个简单的模式。# producer.py - 采集器抓取文章后将任务放入队列 import redis from rq import Queue from tasks import process_article # 假设处理函数在tasks.py中 redis_conn redis.from_url(redis://localhost:6379) q Queue(digest, connectionredis_conn) def fetch_and_enqueue(): articles your_fetcher.fetch() # 你的采集逻辑 for article in articles: # 将文章数据作为任务参数传入 job q.enqueue(process_article, article) print(f任务 {job.id} 已入队) # tasks.py - 实际处理文章的工作进程任务 from digest_generator import DigestGenerator from database import save_digest gen DigestGenerator(api_keyyour_key) def process_article(article_data): # 1. 内容清洗 (假设article_data包含原始内容) cleaned_content clean_content(article_data[raw_html]) # 2. 生成摘要 summary gen.generate_summary(article_data[title], cleaned_content) # 3. 保存结果到数据库 save_digest({ original_title: article_data[title], url: article_data[url], summary: summary, source: article_data[source], processed_at: datetime.now() })然后你需要在另一个终端运行工作进程rq worker digest。这样采集和AI处理就解耦了。即使AI处理速度慢或者API暂时不可用任务也会在队列中等待由工作进程逐个消化系统整体韧性大大增强。调度器的实现就更简单了一个cron作业足矣# 每天UTC时间0点北京时间早上8点运行采集和入队 0 0 * * * cd /path/to/your/project python producer.py /var/log/digest_fetch.log 21 # 工作进程可以常驻或者用supervisor管理4. 部署、运维与常见问题排查让这个系统稳定、可靠地跑起来并且能持续运营是比开发更考验人的环节。4.1 部署方案选型根据你的资源和技术栈可以选择不同的部署方式部署方式优点缺点适用场景传统VPS/云服务器控制力强可自定义所有环节成本相对固定。需要自行维护系统、环境、依赖和进程监控。有运维能力追求完全控制权的个人或小团队。容器化部署 (Docker)环境隔离依赖打包一次构建到处运行。与CI/CD流程集成好。需要学习Docker镜像管理和存储需要规划。现代应用部署的标准方式适合希望流程标准化的开发者。Serverless (如 AWS Lambda, Vercel)无需管理服务器按实际调用次数计费自动扩缩容。有冷启动延迟运行时间和资源有限制本地文件系统是临时的。处理任务轻量、执行时间短如仅AI处理部分或作为Cron触发的函数。托管服务组合各环节使用最佳托管服务如DB用Supabase任务用Inngest。成本可能较高服务间集成需要配置。希望最大化减少运维负担快速搭建原型。对于ai-daily-digest这类包含定时任务、数据处理和网络请求的项目我个人的推荐是使用一台基础的VPS如DigitalOcean Droplet, Linode, 或云厂商的轻量应用服务器配合Docker Compose进行部署。这样既能获得足够的控制力又简化了环境配置。一个简单的docker-compose.yml可能包含以下服务version: 3.8 services: redis: image: redis:alpine container_name: digest-redis ports: - 6379:6379 volumes: - redis_data:/data worker: build: ./worker # 构建包含Python环境和代码的镜像 container_name: digest-worker depends_on: - redis environment: - REDIS_URLredis://redis:6379 command: rq worker --url redis://redis:6379 digest # 可以设置restart: always scheduler: build: ./scheduler container_name: digest-scheduler depends_on: - redis environment: - REDIS_URLredis://redis:6379 command: python scheduler.py # 这个脚本负责定时触发采集任务并入队 restart: always webui: # 可选一个查看摘要的简单Web界面 build: ./webui container_name: digest-webui ports: - 8000:8000 depends_on: - redis - your_db_service volumes: redis_data:4.2 监控、日志与错误处理一个在后台默默运行的系统必须有完善的眼睛和耳朵。日志记录使用Python的logging模块为不同组件采集、处理、推送设置不同的logger。日志级别至少包含INFO记录正常操作和ERROR记录异常。日志应输出到文件并配置日志轮转避免撑满磁盘。import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(/var/log/digest/app.log), logging.StreamHandler() # 同时输出到控制台 ] ) logger logging.getLogger(__name__)错误警报系统不能失败了无人知晓。最简单的办法是在捕获到关键异常如连续采集失败、API密钥失效、数据库连接中断时发送一封报警邮件或一条Telegram消息给你自己。可以使用smtplib或requests调用通知服务的Webhook。健康检查可以编写一个简单的脚本检查Redis是否可连接、数据库是否正常、工作进程是否存活并通过一个HTTP端点暴露出来。然后使用UptimeRobot之类的免费服务定期访问这个端点实现外部监控。4.3 常见问题与排查技巧实录在实际运行中你一定会遇到各种各样的问题。下面是我总结的一些典型场景和解决思路问题1摘要质量不稳定有时啰嗦有时遗漏重点。排查首先检查AI模型的temperature参数是否设置过高。然后分析问题摘要对应的原始文章看是否是文章本身结构混乱如列表页被误抓为正文或内容过于专业/晦涩。解决优化提示词给出更明确的指令和格式要求。例如明确要求“用三句话概括”、“先陈述事实再说明影响”。对输入内容进行预处理。如果文章有摘要或导语直接使用或作为AI的参考。尝试不同的AI模型gpt-4通常比gpt-3.5-turbo在理解复杂指令和长文本上更可靠。引入人工审核或反馈机制将质量差的摘要标记出来用于后续分析优化提示词。问题2爬虫被目标网站屏蔽返回403错误或验证码。排查检查请求头特别是User-Agent是否模拟得像个真实浏览器。检查请求频率是否过高。解决完善请求头加入Accept,Accept-Language,Referer等常见字段。显著降低请求频率在请求间加入随机延时time.sleep(random.uniform(5, 15))。考虑使用住宅代理IP池但成本较高且需谨慎选择合规服务商。最根本的优先使用RSS或官方API将爬虫作为最后手段。问题3任务队列堆积处理速度跟不上。排查检查工作进程是否正常运行ps aux | grep rq。登录Redis查看队列长度redis-cli llen rq:queue:digest。检查AI API的响应时间是否变慢。解决增加工作进程数量rq worker --url redis://localhost:6379 digest -n 2启动2个进程。优化AI处理对于非关键信源使用更快的模型如gpt-3.5-turbovsgpt-4或缩短生成摘要的长度。实现优先级队列将重要信源的任务放入高优先级队列确保它们被优先处理。问题4推送失败邮件被拒、Webhook超时。排查检查邮件服务商的SMTP配置用户名、密码、服务器、端口。检查是否触发了发送频率限制。检查目标聊天工具Webhook地址是否失效。解决为邮件推送配置DKIM/SPF记录提升发件人信誉。为推送失败的任务设置重试机制并记录重试次数超过阈值则报警。实现推送的“降级”策略。例如邮件推送失败后尝试改用Telegram推送如果都失败则将摘要记录到日志文件中至少保证数据不丢失。问题5摘要内容出现无关信息或“幻觉”。排查这是大语言模型的固有问题。检查AI是否在摘要中加入了原文没有的信息捏造或者总结了无关的广告、评论内容。解决在提示词中加强约束“严格基于提供的文章内容进行总结不要添加任何原文中没有的信息也不要总结评论区的观点。”在输出后处理阶段可以简单计算一下AI摘要与原文的ROUGE分数一种自动评估摘要质量的指标如果分数过低可以标记该摘要可疑或者触发重新生成。对于关键信息这是一个难以完全自动化解决的问题一定程度的人工抽查是必要的。5. 扩展方向与个性化定制一个基础的每日摘要系统跑通后你可以根据个人或团队的需求对它进行深度定制和扩展让它变得更加强大和贴心。5.1 个性化推荐与兴趣建模基础的摘要是“一刀切”的。更高级的系统可以学习你的兴趣。实现思路显式兴趣设置让用户在配置文件中标记感兴趣的关键词、主题或信源权重。隐式兴趣学习记录用户对每日摘要的点击行为点击了哪条摘要、阅读时长。将这些行为数据反馈给系统。兴趣模型将文章和用户兴趣都向量化同样使用sentence-transformers。在生成每日摘要前计算每篇文章与用户兴趣向量的相似度只选择相似度最高的前N篇文章进行摘要和推送。甚至可以调整摘要的详略程度对高兴趣文章生成更详细的摘要。5.2 多模态摘要与交互式简报摘要不一定非得是纯文本。信息图表如果文章包含数据可以尝试用提示词让AI描述出数据的趋势和结论甚至可以联动图表生成工具如matplotlib的文本描述生成或调用DALL-E生成简单的示意图提示。语音摘要将生成的文本摘要通过TTS服务如Azure Speech, Google TTS转换成语音作为每日的播客推送。交互式简报将摘要推送至Slack或Telegram后可以附带按钮。例如“ 已读”、“ 保存到Notion”、“ 查看原文”。用户点击后后端可以执行相应的操作实现简单的自动化工作流。5.3 知识库构建与长期记忆每日摘要流水线产出的结构化数据文章标题、链接、摘要、标签、向量本身就是一个小型知识库。你可以构建搜索系统将所有处理过的文章存入支持向量搜索的数据库如Pinecone, Weaviate, 或PGVector插件下的PostgreSQL。之后你可以直接向这个知识库提问“上周关于‘AI代理’有什么重要的进展”系统会检索出最相关的文章和摘要。生成周期报告基于一周或一个月的摘要数据让AI进行二次分析生成周报或月报总结趋势、热点和变化。关联发现通过向量相似度发现不同信源间对同一事件的报道差异或者发现表面上不相关文章之间的深层联系。5.4 成本优化与资源管理对于个人项目成本是需要认真考虑的。分级处理策略将信源分为核心源和一般源。核心源使用更贵但更好的模型如GPT-4一般源使用性价比高的模型如GPT-3.5-Turbo。或者对长文章先用廉价模型提取关键段落再用强模型生成最终摘要。缓存机制如果多个用户订阅了相同的信源可以对同一篇文章只生成一次摘要然后分发给所有用户避免重复调用AI API。用量监控与预警编写脚本监控AI API的token消耗和费用接近月度预算时发送预警甚至自动切换为本地轻量模型或暂停非核心信源的处理。这个项目的魅力在于它从一个简单的自动化想法出发却可以延伸到一个非常深的技术栈和产品思维中。从网络爬虫、后端队列、AI集成到前端推送几乎涵盖了现代软件开发的多个方面。更重要的是它解决的是一个真实、普遍且高频的痛点。当你每天早晨喝着咖啡浏览着由自己亲手搭建的系统为你筛选、提炼的信息时那种成就感和效率提升的愉悦是驱动你不断迭代和完善它的最大动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2574755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…