首页 文章 精选 留言 我的

精选列表

搜索[生命周期],共10002篇文章
优秀的个人博客,低调大师

Go 语言中如何正确使用 context 控制 goroutine 生命周期

在 Go 服务端开发中,启动 goroutine 处理异步任务很常见,比如处理 HTTP 请求时发起下游 RPC 调用、写日志、刷新缓存。这些 goroutine 如果不加控制,在请求超时或客户端断开后仍会继续运行,造成资源泄漏甚至向已关闭的 channel 发送数据导致 panic。context 包就是为解决这类问题设计的,但实际代码里经常看到只把 context 当参数透传、从不检查 Done() 的写法,或者用 context.Background() 替代从上层传入的 ctx。这篇文章从几个真实场景出发,说明 context 的取消信号如何传播、WithCancel 和 WithTimeout 在什么情况下该用哪个,以及为什么在 goroutine 里必须用 select 监听 ctx.Done(),最后给出一个可复用的并发任务封装。

优秀的个人博客,低调大师

覆盖工业AI全生命周期的数智分析平台

做工业数据分析的朋友应该都有同感: 数据采集只是起点,真正头疼的是后面的处理、标注、训练、部署——每一步都涉及不同工具、不同平台,来回切换效率极低,而且过程还不透明。 最近深度体验了一个数智分析模块,最大的感受是:它把“数据→模型→应用”这条链路真正打通了。 几点让我觉得值得拿出来说的: 第一,数据进来之后,血缘关系全程可追溯。 数据处理过程中做过哪些清洗、用了什么算法、参数怎么调的,系统自动记录上下游关系,以树形图展示。哪天模型效果不对劲,顺着血缘往回查,问题出在哪一步一目了然,不用靠猜。 第二,数据处理不是“黑箱操作”。 异常值检测、归一化标准化、数据编码、降噪……十几个功能点全部可视化操作。 每个处理任务都是异步执行,提交后不用干等,后台跑完自动生成新数据集,原始数据不受影响。 更实用的是支持连续任务处理——做完值替换可以直接接归一化,流程中途还能回退到之前的分支走另一条路,最后只保存最终结果。 第三,标注方式覆盖了实际业务中能碰到的所有场景。 有明确规则的用阈值标注直接写表达式;有时间维度的用人工标注在时间轴上画区间;已经训练出模型的用模型标注自动推理打标;连标签都没定义的,用DBSCAN/HDBSCAN聚类先分簇再人工命名。 四种方式搭配着用,基本没有覆盖不了的情况。 第四,模型训练和部署的闭环做得扎实。 分类、回归、降维三大类算法引擎,每个算法都有详细的参数说明和建议范围。 训练任务走队列管理,并发控制、进度监控、超时保护都有。 训练完成的模型发布到模型仓库,可以随时启动/停止、下载onnx格式的权重文件用于离线部署。 更关键的是——已发布的模型可以直接拿来给新数据集做“模型标注”,形成“标注→训练→推理→再标注”的迭代闭环。 第五,也是我最看重的一点:全程不用写代码。 从数据上传、预处理、特征工程到模型训练、部署预测,全部通过可视化界面完成。对工业场景的工程师来说,这大幅降低了AI应用的门槛。 设备故障预测、质量异常检测、能耗分析……这些场景说到底考验的不是算法多先进,而是数据链路是否透明、迭代闭环是否顺畅。这个模块把整条链路串起来了。 有在做工业数据分析的朋友,值得花点时间看看。(获取完整方案请留言) #工业AI #智能制造 #数据分析 #机器学习 #数智化转型 ![](https://developer.qcloudimg.com/http-save/audit-10637273/a20b3a17939b3b2f1ff8b6895cc78509.png) ![](https://developer.qcloudimg.com/http-save/audit-10637273/6f576cea3b99effd49ad7953c5c76ad1.png)

优秀的个人博客,低调大师

Kafka评传——从kafka的消息生命周期引出的沉思

kafka脱胎于雅虎项目,在现今的消息系统中,存在着举足轻重的意义。在笔者看来学习Kafka这款系统既有利于思考分布式消息队列的推演,也有利于发掘rabbitmq中的不足,以史为鉴可以知兴替,学习老大哥rabbitmq中的精华,摒弃其中的糟粕,提升下一代消息队列服务的性能,荣幸之至。 不妨看看消息队列的官方介绍 In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality. 翻译过来就是,在计算机科学领域,消息队列和邮箱都是软件工程组件,通常用于进程间或同一进程内的线程通信。它们通过队列来传递消息-传递控制信息或内容,群组通信系统提供类似的功能 对于消息队列的看法 消息队列就是一个使用队列来通信的组件,消息队列常常指代的是消息服务中间件,然而它的存在不仅仅只是为了解决通信这个问题。笔者看来其存在至少有三个目的: 异步处理 服务解耦 流量控制 消息队列的存在就是为了实现这三个目的,也是围绕这三个目的而进行架构设计实践和功能升级迭代 异步处理 减少请求的等待,还能让服务异步并发处理,提升系统总体性能。流程如图所示 服务解耦 订单服务把订单相关消息塞到消息队列中,下游系统谁要谁就订阅这个主题。这样订单服务就解放啦 流量控制 后端服务相对而言都是比较弱的,因为业务较重,处理时间较长 利用消息队列,可以存在一个缓冲的作用 生产者生产过快,网关的请求先放入消息队列中,后端服务尽自己最大能力去消息队列中消费请求。超时的请求可以直接返回错误信息 消费者消费过慢,当然还有一些服务特别是某些后台任务,不需要及时地响应,并且业务处理复杂且流程长,那么过来的请求先放入消息队列中,后端服务按照自己的节奏处理 kafka消息的生命 一条消息是有生命的,存在出生,亦存在死亡,生死之间的传导也存在着诸多的升华,会历经沉浮,各种纷纷扰扰,有副本,有恢复,有重建,还是很值得探索一番,尝试为其写一篇评传,纪念其短暂又有意义的一生。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册