为业务系统赋能,携程机票最终行程系统架构演进之路 作者简介 Stephen,携程资深后端开发工程师,专注新技术挖掘,持续推动业务创新 Scott ,携程资深研发经理,负责订单系统架构升级和优化 一、背景 携程机票订单系统是由多个业务子系统组成,包括出票、改签、航变等等,获取订单行程信息复杂度较高。 例如:用户预订了一个包含了2个乘客的机票订单,该订单发生了航变,其中用户A选择了退票,用户B选择了改签。 业务系统需要获得该订单最新的行程信息以及行程 开发运维 2024-03-08 法医
揭秘 Python asyncio:释放异步编程的无限可能 简介 在现代计算中,异步编程正变得越来越流行。这是一种允许应用程序同时处理多个任务的编程范例,从而提高效率并最大限度地利用计算机资源。python asyncio 是一个专为异步编程而设计的库,它提供了广泛的功能和工具,使开发人员能够轻松编写高性能和可扩展的应用程序。 协程和事件循环 asyncio的核心概念是协程和事件循环。协程是一种协作式多任务机制,它允许函数在暂停执行并等待事件发生时放弃控制 开发运维 2024-03-04 泡泡
Python asyncio 进阶指南:从初学者到专家 并发和异步编程 并发编程处理同时执行的多个任务,异步编程是一种并发编程,其中任务不会阻塞线程。asyncio 是 python 中用于异步编程的库,它允许程序在不阻塞主线程的情况下执行 I/O 操作。 事件循环 asyncio 的核心是事件循环,它监控 I/O 事件并调度相应的任务。当一个协程准备就绪时,事件循环会执行它,直到它等待 I/O 操作。然后,它会暂停协程并继续执行其他协程。 协程 协程 开发运维 2024-03-04 向阳逐梦
揭开 Python asyncio 的魔法:解锁真正的并发性 并发性与传统的阻塞式编程 在传统的阻塞式编程中,当一个任务等待 I/O 操作(例如读取文件或网络请求)时,整个程序会被阻塞,直到该操作完成。这会限制应用程序的效率,特别是当处理大量 I/O 密集型操作时。 asyncio 的事件循环 asyncio 引入了事件循环的概念,该循环不断监视各种 I/O 事件。当检测到事件时,事件循环会将适当的回调函数放到事件队列中。这些回调函数被称为协程,它们代表着可 开发运维 2024-03-04 向阳逐梦
探索 asyncio 的力量:实现无缝的异步操作 异步编程的本质 传统同步编程模型会阻塞应用程序的执行流,直到某个操作完成。这在处理 I/O 密集型任务时效率低下,因为应用程序必须等待这些操作完成,从而导致延迟和资源浪费。 异步编程是通过使用协程来克服此限制。协程是轻量级的、可随时暂停和恢复的函数。当一个协程遇到一个阻塞操作(如网络请求)时,它可以暂停执行,让应用程序处理其他任务。当阻塞操作完成时,协程可以恢复执行,继续从中断处进行。 async 开发运维 2024-03-04 大猫
理解Golang中线程与协程的工作原理 Golang中线程与协程的工作原理 在Go语言(Golang)中,线程和协程是非常重要的概念,它们是并发编程的基本组成部分。理解它们的工作原理对于开发高效的并发程序非常重要。本文将深入探讨Golang中线程与协程的工作原理,并通过具体的代码示例来帮助读者更好地理解。 一、线程的工作原理 在传统的操作系统中,线程是最小的执行单元,每个线程都有自己的执行栈和寄存器集合。线程是由操作系统内核进行调度的, 开发运维 2024-02-29 竹子爱熊猫
初学者必读:掌握Golang协程的基础知识 Golang是一门近年来备受关注的编程语言,其强大的并发处理能力让它在互联网领域得到了广泛应用。其中的协程(goroutine)是Golang并发编程的核心概念之一,对于初学者来说,掌握协程的基础知识将对日后的学习和开发工作大有裨益。本文将从什么是协程、如何创建和管理协程、协程之间的通信等方面进行讲解,并附上具体的代码示例,帮助初学者更好地理解和掌握Golang协程的基础知识。 什么是协程 协程是 开发运维 2024-02-29 大猫
Golang中线程与协程的对比分析 Golang中线程与协程的对比分析 在现代的软件开发中,多线程编程是一项非常常见的任务。而随着硬件技术的发展,多核处理器已经成为了主流,因此利用多线程并行处理数据已经成为了提高程序性能的重要手段。然而,传统的多线程编程中,线程的创建、销毁和切换都会消耗大量的系统资源,而Golang中引入的协程(goroutine)则提供了一种轻量级的线程替代方案。本文将对Golang中的线程和协程进行对比分析,并 开发运维 2024-02-29 爱可生开源社区
Go语言中协程和线程的比较 在Go语言中,协程(Goroutine)和线程(Thread)都是用来运行并发代码的机制。虽然它们的功能类似,但是在实现和使用上却有一些不同之处。本文将通过具体的代码示例来探讨Go语言中协程和线程的区别,并帮助读者更好地了解它们之间的不同之处。 1. 协程与线程的概念 协程是Go语言中轻量级的并发单位,可以看作是一种轻量级的线程。协程由Go运行时管理,具有很小的栈空间和低的创建和销毁开销,使得可以 开发运维 2024-02-25 贤蛋大眼萌
Go语言协程和线程的比较探讨 Go语言是一门开源编程语言,它独特的特性之一就是支持协程(goroutine),CSP并发模型使得在Go中使用协程变得非常方便。相比之下,线程则是更传统的并发编程方式。在本文中,我们将探究Go语言协程与线程的差异,并通过具体的代码示例来加以说明。 1. 协程与线程的基本定义 在编程中,协程是一种比线程更加轻量级的并发策略。在Go语言中,通过go关键字可以很方便地创建一个协程,例如: func ma 开发运维 2024-02-25 大猫
Go语言中协程和线程的对比分析 Go语言协程(Goroutine)与线程(Thread)是并发编程中常见的两种概念,它们都可以用来处理并发任务,但在实现方式、调度方式、资源消耗等方面有着显著的不同。本文将深入探讨Go语言协程和线程的异同,并通过具体的代码示例来加深理解。 一、协程 vs 线程 1.1 实现方式 Go语言的协程是由Go语言运行时(Goruntime)管理的轻量级线程,由Go语言的关键字go来创建。协程具有自己的栈空 开发运维 2024-02-25 穿过生命散发芬芳
携程酒店排序推荐广告高效可靠数据基座填充引擎 作者简介 yang,携程资深后端开发工程师,专注推荐系统架构、数据流批一体、系统稳定性、效率提升等领域; kevin,携程高级研发经理,专注以技术驱动解决推荐系统中产品业务上的共性问题,创新生产模式,重构生产力; 莫秃,携程高级后端开发工程师,负责酒店机器学习平台的研发工作; 一、背景与思考 1.1 背景 携程酒店排序推荐广告工程(以下简称酒店推荐工程)在数据层面引入抽象化的统一数据协议Unifi 开发运维 2024-02-23 醒在深海的猫
探索Go语言的特色之处 深入剖析Go语言的独特特点 Go语言是一种开源的编程语言,由谷歌公司开发。它的设计目标是创建一种具有简单易用的语法、高效的并发编程和良好的可扩展性的语言。在这篇文章中,我们将深入剖析Go语言的独特特点,并通过具体的代码示例来展示它们的实际应用。 一、协程和并发编程Go语言提供了一种轻量级的并发模型,称为协程(Goroutine)。协程是一种轻量级的线程,可以在不同的函数中并发地执行,而无需显式地管 开发运维 2024-01-30 Escape
大语言模型插件功能在携程的Python实践 作者简介 成学,携程高级安全研发工程师,关注Python/Golang后端开发、大语言模型等领域。 一、背景 2023年初,科技圈最火爆的话题莫过于大语言模型了,它是一种全新的聊天机器人模型,除了能应对基本的日常聊天外,还能胜任如文案编写、旅游规划等各项工作。 携程信息安全部也紧跟时代步伐,在携程内部推出基于大语言模型的智能聊天机器人,并发布网页版1.0,让所有“程里人”可以便捷无门槛地享受大语言 开发运维 2024-01-26 大猫
从 SQLlin 的更新看 Kotlin Multiplatform 技术更迭 作者简介 禹昂,携程移动开发专家,Google 开发者专家(Android),上海 Kotlin User Group 组织者,图书《Kotlin 编程实践》译者。 2022 年底,我们在携程的 Github organization 下开源了 SQLlin,SQLlin 是一款基于 Kotlin DSL 及 KSP 技术的,支持众多平台的 Kotllin Multipllatform SQLit 开发运维 2024-01-19 爱可生开源社区
携程代码分析平台,快速实现精准测试与应用瘦身 作者简介 Kevin,携程后端开发专家,追求通过深入业务来简化系统,对底层算法、数据分析有浓厚兴趣。 一、引言 1.1 背景 微服务架构下,产研分工精细,需求迭代频繁,随着需求的不断迭代,应用数、代码量及测试用例越积越多;需求迭代(尤其是有新人加入)的过程中,产品经理需要通过开发了解现状和历史逻辑,开发人员翻阅历史代码花费的时间和精力越来越大,测试人员上线前需要回归的用例也越来越多,严重影响了需求 开发运维 2024-01-12 捡田螺的小男孩
Go语言的常用基础 一、核心特性 Go语言有一些让人影响深刻的核心特性核心特性,比如:以消息传递模式的并发、独特的_符号、defer 、函数和方法、值传递等等,可以查看这篇文章《Go语言-让我印象深刻的13个特性》。首先要记住一些核心特性的用法。 1.Goroutine 协程:独立的栈空间,共享堆空间,比线程更轻量。 线程:一个线程上可以跑多个协程。 Go语言独有的协程,让程序员非常方便的使用并发编程,从而保留更多的 开发运维 2023-12-30 爱可生开源社区
慢聊Golang协程池Ants实现原理 大家都知道goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理,Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。创建一个goroutine大小大概在2k左右,可以说非常的节省机器资源。 但是为什么要用池化的方式呢?机器资源总是有限的,如果创建了几十万个goroutine,那么就消耗比较大了,在一些需要对并发资源进行控制、提升性能、控 开发运维 2023-12-27 剑圣无痕
关于协程,你了解多少? Labs 导读 随着异步编程的发展以及各种并发框架的普及,协程作为一种异步编程规范在各类语言中地位逐步提高。我们不单单会在自己的程序中使用协程,各类框架如fastapi,aiohttp等也都是基于异步以及协程进行实现。 数字化转型时代 用户对计算机 处理效率的要求越来越高 为保证高并发,高性能 在网络请求和程序执行的过程中 大量应用会采用[异步编程] 那作为异步编程范式的一种 协程是怎么做的呢? 系统运维 2023-12-24 剑圣无痕
PHP异步协程开发:解决大文件上传与下载的难题 随着网络技术的发展和应用场景的不断扩展,大文件上传和下载已经成为了许多Web应用面临的难题。传统的处理方式往往耗时较长,效率较低,而PHP异步协程开发则能够有效地解决这些问题。 近年来,PHP语言的异步编程技术逐渐得到了广泛的应用,其中协程技术在实际开发中得到了更广泛的运用。协程是一种用户线程的高级形式,它允许线程中断,等待某些事件的发生,然后再恢复线程的执行。通俗来讲,就是在代码执行过程中,主动 开发运维 2023-12-18 醒在深海的猫