企业虚拟服务平台AI能力落地实战:一线架构师的1个经典案例解析(附代码)

好的,作为一名资深软件工程师和技术博主,我很乐意为你撰写这篇关于“企业虚拟服务平台AI能力落地实战”的技术博客文章。


标题:企业虚拟服务平台AI能力落地实战:一线架构师的1个经典案例解析(附核心代码)

摘要/引言

你是否也曾面临这样的困境:企业内部的IT服务、业务咨询、流程审批等需求日益增长,传统的人工服务模式不仅成本高昂、响应迟缓,还常常因信息不对称导致用户体验不佳?在数字化转型的浪潮下,将AI能力深度融入企业虚拟服务平台,打造智能化、个性化、高效化的服务体验,已成为提升企业运营效率和核心竞争力的关键。

然而,AI能力的落地并非一蹴而就,它涉及技术选型、架构设计、数据治理、模型训练与部署等多个环节,充满了挑战与坑点。

本文将以一个真实的大型企业级虚拟服务平台(我们暂且称之为“智慧企业助手”)为例,由一线架构师带你深入剖析AI能力(特别是自然语言处理NLP能力)是如何从0到1成功落地并创造价值的。我们将重点分享:

  • 项目背景与面临的核心痛点
  • AI能力模块的技术选型与架构设计考量
  • 核心功能(如智能问答、意图识别、实体抽取)的实现思路与关键代码片段
  • 上线过程中的挑战、解决方案及宝贵经验教训

无论你是正在规划企业AI平台的架构师,还是希望了解AI落地实践的开发者,相信这篇文章都能为你带来深刻的启发和实战指导。

正文

一、项目背景与挑战:传统服务模式的“天花板”

1.1 项目背景

我们服务的客户是一家员工规模超万人的大型集团企业(ABC集团)。随着业务的快速发展和数字化转型的推进,员工对于IT支持、HR政策咨询、财务报销指引、业务流程查询等服务的需求越来越频繁和多样化。原有的服务模式主要依赖:

  • 静态FAQ网站:信息分散,更新不及时,员工查找困难。
  • 服务热线与邮件:人力成本高,高峰期等待时间长,问题解决效率低,且服务质量依赖客服人员个体经验。
  • 各业务系统独立入口:员工需要记住多个系统的地址和操作方式,体验碎片化。

ABC集团亟需一个统一的、智能化的虚拟服务平台,作为员工获取各类服务的“单一入口”。

1.2 核心痛点与AI赋能目标

  • 痛点1:信息获取效率低AI目标:智能问答,精准匹配用户需求,秒级响应常见问题。
  • 痛点2:服务请求处理慢AI目标:意图识别与流程自动化,自动触发简单流程,复杂流程辅助人工。
  • 痛点3:用户体验碎片化AI目标:自然语言交互,降低使用门槛,提供个性化服务。
  • 痛点4:知识沉淀与复用难AI目标:构建企业级知识库,实现知识的自动更新与智能推荐。

二、AI能力模块技术选型与架构设计

2.1 核心AI能力界定

针对上述痛点,我们将“智慧企业助手”的核心AI能力聚焦在自然语言理解(NLU)自然语言生成(NLG)上,具体包括:

  • 智能问答(FAQ + 知识库问答):回答标准、重复性问题。
  • 意图识别:理解用户输入的真实意图(如“申请出差”、“查询工资条”、“重置密码”)。
  • 实体抽取:从用户 query 中提取关键信息(如“出差时间”、“工号”、“系统名称”)。
  • 多轮对话管理:引导用户补充信息,完成复杂任务。
  • 知识库管理与维护:支持结构化、非结构化知识的导入、更新与检索。

2.2 技术选型考量

在技术选型上,我们主要评估了以下几种方案:

方案类型优势劣势适用性评估
完全自研模型高度定制化,数据隐私性好技术门槛高,周期长,成本高,需要专业AI团队维护资源充足且有特定算法需求的大型科技公司
开源框架搭建成本相对较低,可定制性较好仍需较强AI工程能力,运维复杂,效果调优难度大有一定AI技术储备的团队
云厂商AI API快速上线,无需关注底层模型,运维成本低数据需出域(部分企业敏感),定制化程度受限,长期调用成本可能高追求快速迭代、AI技术储备较弱或对数据出域不敏感的企业
本地化部署的AI中间件/平台平衡了定制化、数据隐私和开发效率初始采购成本可能较高,依赖厂商支持对数据隐私有强需求,希望快速落地且具备一定定制能力

最终选择:考虑到项目周期、成本、数据安全(企业内部敏感信息多)以及对AI技术团队的依赖程度,我们选择了“本地化部署的AI中间件/平台 + 少量定制开发”的混合方案。具体而言,我们选用了某商业NLP平台(例如:类似百度UNIT、科大讯飞星火认知大模型API的本地化部署版本,或一些专注于企业知识管理的AI平台)提供基础的NLU、NLG能力,同时针对企业特定的业务流程和知识库结构进行了定制开发和集成。

2.3 系统整体架构

我们采用了微服务架构,将“智慧企业助手”划分为以下核心模块:

[用户层] | | (Web/APP/企业微信/钉钉) v [接入层/API Gateway] --- 负载均衡、认证授权、限流 | v [核心服务层] |-- [对话服务] --- 会话管理、上下文维护 | | | v |-- [AI能力服务] --- NLU(意图识别、实体抽取)、NLG(回答生成)、知识库检索 | | | v |-- [业务流程编排服务] --- 根据意图和实体调用相应的业务接口 | | | v |-- [知识库管理服务] --- 知识导入、审核、更新、版本控制 | v [数据存储层] |-- 对话日志数据库 (MySQL/MongoDB) |-- 知识库数据库 (Elasticsearch/PostgreSQL+向量插件) |-- 用户画像数据库 (Redis/MongoDB) | v [集成层] --- 与企业现有业务系统(HR系统/OA系统/ITSM系统/CRM等)通过API/Webhook集成 | v [运维监控层] --- 日志收集、监控告警、性能分析、A/B测试平台

AI能力服务模块内部细化

AI能力服务 | |-- 请求预处理:分词、纠错、脱敏 | |-- NLU引擎: | |-- 意图分类器 (模型A) | |-- 实体识别器 (模型B) | |-- 槽位填充器 | |-- 知识库检索引擎: | |-- FAQ匹配 (精确/模糊匹配) | |-- 文档问答 (基于向量检索 + 大模型理解,如RAG架构) | |-- NLG引擎: | |-- 模板式回答生成 | |-- 抽取式/生成式回答生成 (基于知识库内容) | |-- 多轮对话策略管理器

2.4 关键技术点:RAG在企业知识库问答中的应用

对于非结构化或半结构化的企业文档(如政策手册、操作指南),传统的FAQ匹配效果不佳。我们引入了检索增强生成(RAG)技术:

  1. 知识预处理:将文档分段、分句,使用预训练语言模型(如BERT、ERNIE的企业版或开源版本)将文本转换为向量嵌入 (Embedding)。
  2. 向量存储:将文本片段及其向量存储到向量数据库(如Milvus, FAISS, 或PostgreSQL+pgvector)。
  3. 检索:用户提问时,同样转换为向量,在向量库中进行相似度检索,召回最相关的文本片段。
  4. 生成:将召回的文本片段作为上下文,喂给大语言模型(LLM),让其基于这些事实性信息生成自然流畅的回答。

这有效解决了大模型“幻觉”问题,并能利用企业最新的内部文档。

三、核心功能模块实现与代码示例

由于涉及具体商业AI平台的API调用细节,以下代码将采用伪代码通用Python代码风格进行演示,重点展示实现思路。

3.1 意图识别与实体抽取模块

假设我们使用的AI中间件提供了类似如下的API接口:

# 伪代码:调用AI中间件的NLU接口进行意图识别和实体抽取defcall_nlu_api(user_query,session_id=None):""" 调用NLU服务识别用户意图和实体。 Args: user_query (str): 用户输入的自然语言文本。 session_id (str, optional): 会话ID,用于上下文理解。 Returns: dict: 包含意图和实体信息的响应。 """importrequests NLU_API_URL="http://internal-ai-middleware:8080/api/nlu/v1/parse"API_KEY="your-secure-api-key"# 实际项目中使用更安全的认证方式payload={"query":user_query,"session_id":session_id,"domain":"enterprise_service"# 我们定义的业务域}headers={"Content-Type":"application/json","Authorization":f"Bearer{API_KEY}"}try:response=requests.post(NLU_API_URL,json=payload,headers=headers)response.raise_for_status()# 检查HTTP请求是否成功returnresponse.json()exceptrequests.exceptions.RequestExceptionase:print(f"NLU API调用失败:{e}")# 失败处理逻辑,如返回默认意图或提示用户return{"intent":{"name":"fallback","confidence":0.0},"entities":[]}# 使用示例user_input="我想申请下周一到周三去上海出差"nlu_result=call_nlu_api(user_input)print("NLU Result:",nlu_result)# 预期的nlu_result结构可能如下:# {# "intent": {# "name": "apply_business_trip",# "confidence": 0.98# },# "entities": [# {# "entity": "start_date",# "value": "2024-05-20", # 假设中间件已做日期标准化# "start": 5,# "end": 11,# "confidence_entity": 0.99# },# {# "entity": "end_date",# "value": "2024-05-22",# "start": 14,# "end": 20,# "confidence_entity": 0.98# },# {# "entity": "destination",# "value": "上海",# "start": 23,# "end": 25,# "confidence_entity": 0.99# }# ],# "session_id": "unique-session-id-generated"# }

3.2 基于RAG的知识库问答模块核心代码

以下是RAG流程中文档向量化存储查询时检索生成的核心逻辑示例(使用开源库):

# 文档向量化与存储 (示例使用 sentence-transformers 进行编码,FAISS 进行向量存储)fromsentence_transformersimportSentenceTransformerimportfaissimportnumpyasnpfromtypingimportList,DictclassRAGKnowledgeBase:def__init__(self,model_name:str="all-MiniLM-L6-v2"):self.model=SentenceTransformer(model_name)# 加载预训练嵌入模型self.index=None# FAISS索引self.documents=[]# 存储原始文档片段,与向量一一对应defadd_documents(self,documents:List[str])->None:""" 向知识库中添加文档片段并构建向量索引。 Args: documents (List[str]): 文档片段列表。 """self.documents.extend(documents)# 将文档转换为向量embeddings=self.model.encode(documents,convert_to_numpy=True)# 初始化FAISS索引 (假设使用L2距离)ifself.indexisNone:dimension=embeddings.shape[1]self.index=faiss.IndexFlatL2(dimension)# 添加向量到索引self.index.add(embeddings)defretrieve_relevant_docs(self,query:str,top_k:int=3)->List[Dict]:""" 根据用户查询检索最相关的文档片段。 Args: query (str): 用户查询。 top_k (int): 返回的相关文档数量。 Returns: List[Dict]: 包含文档内容和相似度分数的字典列表。 """ifself.indexisNoneorlen(self.documents)==0:return[]# 将查询转换为向量query_embedding=self.model.encode([query],convert_to_numpy=True)# 搜索相似向量distances,indices=self.index.search(query_embedding,top_k)# 整理结果results=[]foriinrange(top_k):doc_idx=indices[0][i]ifdoc_idx<len(self.documents):results.append({"document":self.documents[doc_idx],"similarity_score":1.0/(1.0+distances[0][i])# 简单归一化,值越大越相似})returnresults# RAG问答生成 (示例使用一个简单的LLM API,实际中可以是开源LLM如Llama2, ChatGLM等的本地部署)defgenerate_answer_with_llm(query:str,context_docs:List[str],llm_api_url:str)->str:""" 结合检索到的上下文文档,调用LLM生成回答。 Args: query (str): 用户查询。 context_docs (List[str]): 检索到的相关文档片段。 llm_api_url (str): LLM服务的API地址。 Returns: str: 生成的回答。 """importrequests context="\n\n".join([doc["document"]fordocincontext_docs])prompt=f"""基于以下提供的上下文信息,用简洁明了的语言回答用户的问题。如果上下文信息不足以回答,请说"根据提供的信息,我无法回答该问题。" 上下文:{context}用户问题:{query}回答:"""payload={"prompt":prompt,"max_tokens":200,"temperature":0.3# 降低随机性,使回答更聚焦事实}try:response=requests.post(llm_api_url,json=payload)response.raise_for_status()returnresponse.json().get("choices",[{}])[0].get("text","").strip()exceptExceptionase:print(f"LLM API调用失败:{e}")return"抱歉,生成回答时遇到问题。"# 使用示例if__name__=="__main__":# 初始化知识库kb=RAGKnowledgeBase()# 添加一些企业政策文档片段 (实际中会从文件、数据库导入)policy_docs=["员工出差申请需提前至少3个工作日在OA系统提交,经部门经理和分管领导审批后方可执行。","国内出差交通首选高铁二等座或经济舱;特殊情况需乘坐一等座或商务舱需VP级别以上审批。","出差住宿标准:一线城市(北京、上海、广州、深圳)单人每日不超过600元,其他省会城市不超过500元,地级市不超过400元。","出差补贴标准为:国内出差每日100元,用于补助市内交通和午餐,无需提供发票。"]kb.add_documents(policy_docs)# 用户查询user_query="上海出差住宿标准是多少?"# 检索相关文档relevant_docs=kb.retrieve_relevant_docs(user_query,top_k=2)print("检索到的相关文档:",relevant_docs)# 调用LLM生成回答 (假设我们有一个本地部署的LLM服务)llm_url="http://internal-llm-service:5000/generate"answer=generate_answer_with_llm(user_query,relevant_docs,llm_url)print(f"用户问题:{user_query}")print(f"AI回答:{answer}")# 预期回答:"出差住宿标准:一线城市(北京、上海、广州、深圳)单人每日不超过600元。"

3.3 业务流程集成示例

当意图识别为“申请出差”,并且实体抽取完成后,需要调用对应的OA系统API创建出差单:

# 伪代码:出差申请流程处理defhandle_business_trip_application(nlu_result,user_info):""" 处理出差申请意图。 Args: nlu_result (dict): NLU识别结果,包含意图和实体。 user_info (dict): 当前用户信息 (如工号、部门等)。 Returns: str: 处理结果反馈给用户。 """intent=nlu_result.get("intent",{}).get("name")ifintent!="apply_business_trip":return"无法处理该请求。"entities=nlu_result.get("entities",[])# 提取关键实体 (实际中会有更复杂的实体映射和校验逻辑)entity_map={}forentinentities:entity_map[ent["entity"]]=ent["value"]required_entities=["start_date","end_date","destination"]missing_entities=[entforentinrequired_entitiesifentnotinentity_map]ifmissing_entities:# 如果有缺失的必填实体,发起多轮对话询问用户returnf"为了帮您完成出差申请,请提供以下信息:{', '.join(missing_entities)}。"else:# 实体信息完整,调用OA系统API创建出差单oa_api_url="http://internal-oa-system:8080/api/trips"payload={"employee_id":user_info["employee_id"],"start_date":entity_map["start_date"],"end_date":entity_map["end_date"],"destination":entity_map["destination"],"reason":entity_map.get("reason","因公出差"),# 可选实体# ... 其他可能需要的字段}# 调用OA API (此处省略具体的requests.post代码和异常处理)# response = requests.post(oa_api_url, json=payload, headers=auth_headers)# if response.status_code == 201:# trip_id = response.json().get("trip_id")# return f"出差申请已提交,申请单号:{trip_id}。请等待审批。"# else:# return f"提交出差申请失败,请稍后重试或联系IT支持。"# 模拟成功响应returnf"出差申请已提交,申请单号:TRIP-{user_info['employee_id']}-{entity_map['start_date']}。请等待部门经理审批。"

四、系统集成与部署上线

4.1 与企业现有系统集成

“智慧企业助手”不是一个孤立的系统,其价值很大程度上依赖于与企业现有IT生态的集成。我们主要通过以下方式进行集成:

  • REST API调用:与OA、HR、ITSM等系统的标准API对接。
  • Webhook回调:接收其他系统的事件通知(如“审批通过”)。
  • 数据库直连/视图:对于一些老旧系统,在确保安全和性能的前提下,采用只读视图获取必要数据。
  • SSO集成:复用企业统一身份认证,确保用户身份安全。

4.2 部署与DevOps

  • 容器化部署:所有服务模块均打包为Docker容器,通过Kubernetes进行编排和管理,确保环境一致性和弹性伸缩能力。
  • CI/CD流水线:使用Jenkins/GitLab CI构建自动化测试和部署流程,支持灰度发布和快速回滚。
  • 多环境隔离:严格区分开发、测试、预生产、生产环境。
  • 监控告警:部署Prometheus + Grafana监控系统指标(响应时间、成功率、资源使用率),ELK/EFK栈收集和分析日志,设置关键指标告警阈值。

五、效果评估与持续优化

5.1 关键绩效指标 (KPIs)

为了衡量AI能力的落地效果,我们定义了以下KPIs:

  • 意图识别准确率:正确识别意图的query占比。
  • 实体抽取准确率/召回率:正确抽取实体的比例。
  • 问答准确率 (Human Evaluation):由人工评估AI回答的相关性和正确性。
  • 用户满意度 (CSAT):用户对AI回答/服务的满意度评分。
  • 问题解决率 (Resolution Rate):无需转接人工即可解决的用户问题比例。
  • 平均处理时长 (AHT):相比传统人工服务的效率提升。
  • 人工客服工作量减少比例

5.2 持续优化策略

AI模型不是“一劳永逸”的,需要持续迭代优化:

  • 数据驱动迭代:收集用户真实对话日志,定期进行人工标注和错误分析,用于模型的重新训练和微调。
  • 知识库动态更新机制:建立知识贡献者(各业务部门)与AI平台的联动机制,确保知识时效性。
  • A/B测试:对新的意图分类模型、知识库检索算法或对话策略进行A/B测试,选择效果更优的方案。
  • 用户反馈闭环:提供“这个回答有帮助吗?”、“纠错反馈”等入口,鼓励用户参与优化。

5.3 遇到的挑战与经验教训

  • 挑战1:冷启动问题教训:初期可通过导入历史FAQ、人工整理高频问题和答案来构建基础知识库;对于意图识别,先覆盖核心高频意图。
  • 挑战2:数据质量与标注成本教训:重视数据清洗和标准化;利用半监督学习、主动学习等方法减少人工标注成本;鼓励业务专家参与标注。
  • 挑战3:用户对AI的不信任或期望过高教训:清晰设定用户预期(例如,明确告知AI能做什么,不能做什么);提供便捷的人工转接入口;通过优秀的用户体验逐步建立信任。
  • 挑战4:企业内部术语和简称的理解教训:在模型训练数据中大量引入企业内部语料;允许用户自定义同义词、别名。
  • 挑战5:模型性能与响应速度教训:优化模型结构和推理参数;对高频query和热门知识库内容进行缓存;采用量化、蒸馏等技术减小模型体积和加速推理。

六、结论

通过在ABC集团“智慧企业助手”项目中的实践,我们成功将AI能力(特别是NLP和RAG技术)落地到企业虚拟服务平台,有效解决了传统服务模式下的效率低、体验差等痛点。

核心价值总结:

  1. 提升服务效率:常见问题秒级响应,复杂流程自动化处理,显著降低人工客服压力。
  2. 改善用户体验:7x24小时不间断服务,自然语言交互更便捷,“一站式”服务入口。
  3. 沉淀企业知识资产:将分散的隐性知识显性化、结构化,促进知识共享与复用。
  4. 数据驱动决策:通过分析用户交互数据,洞察用户需求,反哺业务流程优化。

给其他企业的建议:

  • 明确业务目标:AI落地不是为了炫技,而是为了解决实际业务问题。
  • 小步快跑,快速迭代:从最小可行产品(MVP)开始,逐步扩展功能和优化体验。
  • 重视数据治理:高质量、相关的数据是AI效果的基石。
  • 业务与IT深度协作:AI项目需要业务专家深度参与定义需求、提供知识、评估效果。
  • 关注用户体验和采纳率:技术再好,用户不用也是白搭。

AI在企业服务领域的应用方兴未艾。未来,我们将探索更多AI能力的融合,如多模态交互(语音、图像)、情感分析、个性化推荐等,持续提升“智慧企业助手”的智能化水平,为员工创造更卓越的服务体验。

行动号召:
你所在的企业是否也面临类似的服务挑战?你认为AI还能在哪些企业服务场景中发挥价值?欢迎在评论区留言分享你的想法和经验!让我们一起探讨AI驱动的企业服务数字化转型之路。


参考文献与延伸阅读

  • [相关NLP技术博客/论文,例如关于BERT, RAG的介绍]
  • [所选AI中间件/平台的官方文档]
  • [企业知识管理相关最佳实践]
  • [Kubernetes/Docker容器化部署指南]

关于作者
一线资深软件架构师,10+年企业级应用开发与架构设计经验,专注于AI、云计算、微服务等技术领域的落地实践。热衷于分享技术心得,希望通过文字帮助更多工程师少走弯路。欢迎关注我的技术公众号/博客 [此处可填写你的公众号或博客名称]。


希望这篇详细的案例解析对你有所帮助!它力求还原一个真实的企业AI落地项目的思考和实践过程。

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

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

相关文章

【Python】【爬虫】复刻爬取豆瓣电影数据功能

参考链接 关于豆瓣的电影数据爬取与 Excel 交互式报表实现

【必收藏】Java开发者转型大模型完全指南:从CRUD到AI,你的Java功底就是最大底气

本文为Java开发者提供大模型转型实用路径&#xff0c;强调无需从零开始&#xff0c;而是将现有Java工程能力与大模型结合。通过两步走策略&#xff1a;先了解大模型应用场景&#xff0c;再从API调用入手&#xff0c;逐步掌握LangChain框架、私有化模型部署和Prompt工程。Java开…

月薪从8K到40K:初级提示工程师→架构师的薪资跃迁指南,掌握这9个核心技能

月薪从8K到40K&#xff1a;初级提示工程师→架构师的薪资跃迁指南&#xff0c;掌握这9个核心技能 摘要/引言 在当今数字化时代&#xff0c;技术领域的职业发展道路充满机遇与挑战。对于许多初级提示工程师而言&#xff0c;从月薪8K迈向40K&#xff0c;成为架构师&#xff0c;实…

2026年大学生学习网络安全还有出路吗?

如果你正在考虑网络安全这条路&#xff0c;我可以很肯定地告诉你——2026年网络安全不仅依然有出路&#xff0c;而且正处于需求爆发期&#xff0c;人才缺口巨大、薪资竞争力强、发展路径多元&#xff0c;是当前技术领域中前景最为明朗的方向之一。下面我会结合行业现状、政策背…

MCP:AI时代的“万能插座”,让大模型真正“动”起来

你是否曾想过&#xff0c;让AI不仅能聊天、写文章&#xff0c;还能直接帮你订机票、发邮件、控制家里的智能灯泡&#xff0c;甚至管理复杂的企业数据库&#xff1f; 这听起来像是科幻电影里的场景&#xff0c;但随着**MCP&#xff08;Model Context Protocol&#xff0c;模型上…

【优化调度】基于遗传算法GA求解雾中任务调度计算附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

揭秘AI Agent:下一代人工智能的“全能管家”

你是否厌倦了繁琐的重复性工作&#xff1f;是否幻想拥有一个能听懂需求、自主决策、帮你搞定一切的私人助理&#xff1f; AI Agent&#xff08;人工智能代理&#xff09;的出现&#xff0c;正在将这个幻想变为现实。如果说大语言模型&#xff08;LLM&#xff09;是拥有了丰富知…

【图像加密】基于正弦 余弦混沌映射生成随机序列,对图像 RGB 三通道分别执行 “行移位 - 列移位 - XOR 异或” 操作实现图像加密解密附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

A.每日一题——85. 最大矩形

题目链接&#xff1a;85. 最大矩形&#xff08;困难&#xff09; 算法原理&#xff1a; 博主声明&#xff1a;这84题和85题感谢灵神&#x1f339;&#x1f339;&#x1f339;的启发&#xff0c;我在灵神的思路上产生自己的想法&#xff0c;因此自己纯手敲了一遍&#xff0c;写博…

云雀播放器 6.35.5| 高颜值音乐播放器 动画非常流畅 全球超1亿用户

云雀播放器是一款时尚、免费的Android离线音乐播放器和视频播放器&#xff0c;旨在为用户提供完美的音乐和视频播放体验。它拥有超过1亿用户的全球用户群&#xff0c;以其强大的功能和优秀的性能而备受用户喜爱。无论您是喜欢听音乐还是观看视频&#xff0c;云雀播放器都能满足…

springboot微服务框架中,a服务的aa方法中调用了b服务的bb方法,然后调用c服务的cc方法,由于bb方法会更新数据库,但是需要等到cc方法执行成功,才要把事务提交,如果cc方法不成功,就回滚

针对这种跨服务的事务场景&#xff0c;Spring Boot 提供了几种解决方案&#xff0c;按简单程度推荐&#xff1a;方案1&#xff1a;使用分布式事务&#xff08;推荐&#xff09;1.1 集成 Seata&#xff08;最完整方案&#xff09;步骤&#xff1a;<!-- 各服务pom.xml中添加 -…

Manjaro 制作 Ventoy 多系统启动盘终极指南(避坑版)

作者&#xff1a;一位踩过所有坑的 Manjaro 用户 适用系统&#xff1a;Manjaro / Arch Linux 及其他基于 Arch 的发行版 目标&#xff1a;用官方 ventoy 包制作支持 Windows Linux PE 的多合一启动 U 盘为什么选择 Ventoy&#xff1f; 一次安装&#xff0c;终身使用&#xff…

springboot怎么将事务设置为pending,等另外一个请求ok了,再做commit

在Spring Boot中实现跨请求的事务管理是一个复杂的需求&#xff0c;因为HTTP协议是无状态的&#xff0c;而数据库事务通常绑定在一个请求的上下文中。不过&#xff0c;有几种方案可以实现类似的效果&#xff1a;方案1&#xff1a;使用编程式事务 状态存储&#xff08;推荐&…

vivado hls设计总结(二十)

一、硬件高效型C语言代码之C类和模板 1.vivado hls支持C class类的综合 2.vivado hls只是支持对顶层函数进行综合 3.vivado hls不支持对顶层的class类进行综合 4.如果要对类成员函数进行综合&#xff0c;需要将类本身例化为函数 5.不支持对位于顶层的类进行综合 6.不支持对位于…

OBS面部追踪插件终极指南:从入门到精通

OBS面部追踪插件终极指南&#xff1a;从入门到精通 【免费下载链接】obs-face-tracker Face tracking plugin for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-face-tracker 想要让直播画面更加专业动人&#xff1f;OBS面部追踪插件正是您需要的利器&a…

大学生Kali学习高频命令合集 12个实操案例 覆盖渗透测试基础场景

对于刚接触Kali Linux的大学生来说&#xff0c;最核心的学习痛点莫过于“命令多且杂、记不住、不会用”。在网络安全课程实践、渗透测试入门练习中&#xff0c;很多人往往对着教程照猫画虎&#xff0c;却不理解命令背后的逻辑&#xff0c;遇到参数变化或场景调整就束手无策&…

深度学习计算机毕设之基于python-CNN卷积神经网络的宠物行为训练识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

学长亲荐!继续教育必备TOP8 AI论文软件深度测评

学长亲荐&#xff01;继续教育必备TOP8 AI论文软件深度测评 2026年继续教育AI论文工具测评维度解析 在当前学术研究日益数字化的背景下&#xff0c;继续教育群体对高效、专业的写作辅助工具需求愈发迫切。从文献检索到内容生成&#xff0c;从格式排版到查重检测&#xff0c;每一…

Golang map取不存在的key时返回零值

现象由于python的字典取不存在的key时会报错&#xff0c;误以为golang也是一样的。其实不然。原因golang的map取不存在的key时&#xff0c;并不会报错&#xff0c;而是会返回对应数据类型的零值&#xff0c;例子如下&#xff1a;package mainimport "fmt"func main()…

【计算机大数据毕业设计选题推荐】基于Spark+Django的健康饮食营养数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘

✍✍计算机毕设指导师** ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡有什么问题可以…