《携程技术2019年度合辑》,送给爱学习的你

携程技术2018年度合辑 携程技术2018年度合辑,涉及到架构、大数据、无线、前端、安全、运维、云计算、数据库、云服务、机器学习、敏捷开发 立即下载

2019年的携程技术合辑要和大家见面了。
 

我们把过去一年中踩过的坑,成功的经验,汇总起来进行分享,希望能帮助大家少走一些弯路。合辑中的文章来自携程技术各部门的一线工程师,有基础架构部门,有业务部门,有人工智能和大数据……经过20年的发展,携程的业务已经遍布全球,IT系统如何支持业务低成本高效率的扩张,在这些文章中都能一窥端倪。 

2019年,携程的国际化战略快速推进,我们对系统进行了多语言的改造,让产品的体验更符合当地人的使用习惯,同时又不引入过多的代码分支。供应商和客人遍布于全球,情况变得日益复杂,如何通过技术手段来持续提升服务效率,为客户提供高品质的服务,可以在书中看到大数据和人工智能技术与业务场景的深度结合。 

对于2010年之前创立的互联网企业,大多采用自建数据中心,当公有云快速发展起来之后,是选择继续在私有云上发展,还是彻底转型使用公有云,是不得不思考的一个问题。云计算的快速发展,为企业提供了弹性的资源使用、高效的线上部署、多数据中心的就近接入、透明的IT成本,我们采用公有云+私有云的“混合云”方案,以取得用户体验和成本之间的平衡。书中可以看到我们在公有云和私有云打通、系统架构Cloud Native化过程中的经验教训。 

新的一年,我们希望能与同行伙伴一起携手共进,开放共享,在追求技术极致的道路上一路向前!

                                    

——携程技术副总裁 马超

书籍概览

下载方式

“携程技术”微信公众号后台回复“2019”,即可免费下载~

 “携程技术”公众号

  分享,交流,成长

大产品小团队携程敏捷技术与管理转型实战6134859.epub 敏捷并不是什么新玩意儿,但它已经成为这个瞬息万变的互联网+科技商业时代的主流管理运营体系。如果一个企业还没开始拥抱敏捷并付诸实践,那它很快就要被淘汰了! 现在我们遇到的问题大多是如何让敏捷落地,如何把敏捷带给整个企业。本书并不是敏捷方法教授的纯理论书,作者只是把5年敏捷转型中趟过的那些坑,吃过的那些亏,流过的那些泪……通过一个个鲜活的案例呈现出来,送给那些已经开始尝试敏捷但可能遇到一些问题的人,以及虽然没有开始但已经跃跃欲试准备实践敏捷的人。 立即下载

相关推荐

携程技术合集 2019.pdf

携程技术合集 2019.pdf

1.携程架构实践 --- 携程整体技术架构

第1 章 携程整体技术架构 架构的意义在于确定"主绳"的位置。架构实际代表的是一个方法论,这个方法论的核心思想在于构建目标的主要环节,主要环节一方面可以带动次要环节, 另外一方面还可以对次要环节的作用范围进行限制。 技术架构大体上可以划分为业务架构和整体技术架构两部分: 1.业务架构更加关注业务流程的技术实现,比如用户下单流程的制定,以及各个环节需要用到的支撑系统; 2.整体技术架构更加关注全局的技术解决方案,比如业务系统之间的通信方式,以及实时观测业务系统的运行状态。 1.1 携程技.

enlyhua的专栏 4912

如何在n8n中高效调用playwright-mcp实现浏览器自动化(附避坑指南)

本文详细介绍了在n8n中高效集成playwright-mcp实现浏览器自动化的全流程指南,包括环境准备、工作流设计与优化、高级技巧与性能调优以及调试与问题排查。通过克服实际部署中的各种挑战,帮助用户打造稳定高效的自动化解决方案,特别适合需要浏览器自动化的工作流场景。

weixin_30379531的博客 388

干货 | 提升内存管理效率,携程酒店查询服务轻量化探索和实践

作者简介NekoMatryoshka,携程酒店资深后端开发工程师,主要工作是缓存类组件的开发维护,并对业务应用的排障和优化有所关注。一、背景和目标 在容器化部署成为主流的现在,降低集群中单个容器的资源需求的意义已经不只限于更少的硬件成本,同时也意味着整个集群更加轻量化,这通常会带来一系列其他优势:例如更短的恢复时间,更精确的资源控制和调度,和更快速的伸缩和部署等。但在另一方面,一味的追求压缩容器配...

携程技术 2741

别再死记硬背参数了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细解析了4GHz镜像抑制混频器的ADS仿真全流程,从理论到实践,涵盖混频器设计基础、ADS工程搭建、二极管选型、非线性仿真及性能优化。通过实战案例,帮助工程师掌握关键参数平衡与调试技巧,提升射频电路设计效率。

weixin_42552716的博客 339

实战演练,如何用Easyexcel合并单元格,设置字体、边框样式,并在尾行加入备注

,实现效果如下:1、多级表头合并2、表头底纹+表格边框3、合并相同数据单元格4、尾行加入备注。

Su7148的博客 1万+

《携程技术2023年度合辑》,送给爱学习的你

序言“疾风知劲草,烈火见真金。”2023年,是我们的挑战之年,也是我们的成长之年。全球旅游行业在经历了三年疫情的严重打击后,终于迎来了全面的复苏和爆发式的增长。我们多个业务线订单量均突破了历史最高值,随着五一、暑期、十一、春运多个业务高峰接踵而至,我们系统承受了前所未有之压力,面对压力,我们没有退缩,而是选择了挑战。我们进行了一系列的技术改进和创新,提升了系统的效率、可扩展性、稳定性和安全性,同时...

携程技术 1052

ESP32 DMX512与RDM协议栈开发指南

DMX512-A是专业灯光控制领域广泛采用的串行通信标准,基于RS-485物理层实现确定性单向数据传输;RDM(Remote Device Management)则在其基础上扩展双向、可寻址、可配置的智能管理能力,满足现代舞台设备远程固件升级、自动发现与参数配置需求。二者共用同一总线但时序与帧结构严格隔离,对硬件定时精度、中断响应延迟及电气隔离提出极高要求。在嵌入式实践中,ESP32凭借Wi-Fi/蓝牙连接能力与丰富外设资源,成为构建低成本智能DMX节点的理想平台。esp_dmx协议栈正是面向该场景的高性能

weixin_34945060的博客 316

《携程技术2022年度合辑》,送给爱学习的你

序言2023年,当世界重新与中国相连,我们有信心让与世界暌违三年再次踏上旅途的旅行者拥有完美旅程。这是携程人在新年伊始面对春天做出的承诺以及对更美好世界的渴望。疫情三年,一直在改变着我们交流的方式,令生活被切割成无可拼凑的碎片;我们急切地讨论着远方的故事,却又置身不确定的当下。而如今春暖花开,作为携程技术人正在把握机遇,做到用实力过硬的技术,打造强适应性的产品,用“全球化视野+本地化运营” 升级用...

携程技术 4311

C++总结笔记

/ ++操作 这是因为定义的数组,申请的是连续的内存空间,当ptr++(ptr是int类型的指针变量),地址空间向后偏移是以int类型的大小为单位进行偏移的,相当于int类型数组元素的向后偏移。使用场景:它是最通用的转换形式,用于将一种类型转换为另一种类型,例如基本数据类型的转换(如 float 转 int),指向基类的指针或引用转为指向派生类的指针或引用等。在派生类被调用时会调用派生类中的函数,不会调用基类中的被重写的函数(基类中的函数需要加上virtual才可以,即基类中的函数是虚函数)。

weixin_50890461的博客 5234

Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息

哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。

u014481728的博客 1137

《携程技术2020年度合辑》,送给爱学习的你

01序言 2020年跌宕起伏,突如其来的疫情对旅游行业造成了前所未有的冲击,也让更多人进一步感受到技术互联互通的重要性。对于旅游业技术人而言,外部的不可控因素让我们更加聚焦于系...

携程技术 728

使用OpenCV从低对比度图像中提取圆形轮廓

希望本文能帮助您从低对比度图像中提取圆形轮在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。

ByteWhiz的博客 350

《携程技术2021年度合辑》,送给爱学习的你

序言2021年仍然是艰难的一年。反复的疫情和全球经济的不确定性,让几乎所有对旅游业不利的因素都在释放。但于变局中开新局,在危机中育新机,旅游业人带着穿越寒冬的信念,奋力前行。携程技术人则“...

携程技术 350

深入Scrapy ItemLoader:打造优雅高效的Python爬虫数据清洗流水线

ItemLoader是 Scrapy 提供的声明式数据加载工具。它的核心理念是:将数据提取(从response中取原始值)和数据清洗/验证(处理空值、格式转换、默认值等)分离开。你可以把它想象成一个工厂流水线:原始零件(selector提取的文本)进入,经过一道道工序(输入处理器),组装成最终产品(Item字段)。首先在items.py中定义清晰的数据结构。使用搭配类型注释(虽然Scrapy自身不强制,但对人和IDE友好)。

2201_76125261的博客 68

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

携程T7用637页PDF,解读十余热门技术领域,八场携程技术沙龙干货

首先介绍一下携程的职级和薪资待遇职类:T(技术)、P(业务)、M(市场)等级划分:tips:1.最近年携程股票涨了很多倍,很多员股票都有百万,不考虑在内。2.携程职时可以选择股票和现哪个更多,越晚进去的股票越少。如Q1拿 300股,Q2只能拿到 240股。3.携程没有那么规范,会根据当前的股票价格去给股数,携程很多员出不来,就是因为上股票太多了。年终奖:12薪+2-4个年终奖(普遍 1.5个),年中+年末各发次。

程序员高级码农的博客 1357

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

[学习资料]携程技术2019年度合辑

资源分享《携程技术2019年度合辑》 https://t00y.com/file/29174114-458516336 密码:407845

199

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Kylin 2019年度文章合辑

Apache Kylin 最受欢迎 Top 10,不容错过! 如何在 1 秒内做到大数据精准去重?作者:史少锋 都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?作者:翟娜 Apache Kylin v3.0.0 正式发布!编辑:倪春恩 从 ES 到 Kylin,斗鱼客户端性能分析平台进化之旅 作者:戴天力 你离可视化酷炫大屏只差一套 K...

yang灬仔 527

一张图带你了解携程码农们的2018

【相关阅读】2017携程代码报告2016携程代码报告《携程技术2018年度合辑》技术人的一手干货戳下方图片免费下载↓↓↓ ...

携程技术中心 617

kylin如何支持flink_2019 年度Kylin文章合辑

最受欢迎 Top 10,不容错过!如何在 1 秒内做到大数据精准去重?作者:史少锋都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?作者:翟娜Apache Kylin v3.0.0 正式发布!编辑:倪春恩从 ES 到 Kylin,斗鱼客户端性能分析平台进化之旅 作者:戴天力你离可视化酷炫大屏只差一套 Kylin + Davinci作者:夏邢...

weixin_29231027的博客 280

携程Tech Girl:做勇敢的女孩

在听到采访结束可能要拍照的消息时,小选眼睛一眨,狡黠地问到“会P图么?”,然后爆发出一阵爽朗的笑声,“你看,这就是女性的顾虑,有时候是无意识的”,她补充道。小选三年前加入携程,目前担任平台...

携程技术 286
上一篇: 来,让携程技术人带你“看”世界——2020携程技术年度盛典侧记
下一篇: 干货 | 携程租车React Native单元测试实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值