MeiTuan

2020五四青年节 | 青年人在美团是怎样成长的?

安稳与你 提交于 2020-05-04 23:42:45
2020年五四青年节,我们采访了美团技术团队9位青年代表,他们是来自清华大学、北京大学、中国科学院大学等国内高校的2位博士研究生和7位硕士研究生。在这个属于青年人的特别的日子里,我们请他们分享了自己在美团成长的故事。 道阻且长,不忘初心,砥砺前行,行则将至 Q1:毕业时,你应该拿到了不少Offer,为什么最后选择了美团? 杨扬 :最重要的一点,美团的技术氛围很好。在学校的时候,我也关注了美团技术团队的公众号/博客,满满的干货。我其实从大三就开始接触自然语言处理(NLP)这个领域了,那时候就对NLP产生了兴趣和热爱,研究生期间也一直做NLP这个方向,所以投递的岗位以及拿到的Offer也都是与此相关的。此外,也是考虑到美团有海量的数据和丰富的场景,能够将NLP的技术更好地应用,并且公司也处于快速发展的时期,我深信能在美团这里得到更多的成长空间。 当然,还有一个比较特别的原因吧,应该说是缘分。当时有师兄在美团工作,他有一次听了王仲远(AI平台/搜索与NLP部技术负责人)的一次分享后,就直接联系我,然后将我内推了过来,然后才有后续的故事。总的来说,加入美团技术团队,能跟一群优秀的人做事,会让自己变得更加优秀。 Q2:在美团众多的企业理念中,哪一条对你影响比较大? 杨扬 :「每天前进三十公里」,这句话对我影响比较大。每天多学习一点,多思考一点,积跬步以至千里。 Q3:工作中

实测两款SQL回滚工具

匆匆过客 提交于 2020-05-01 17:18:02
第一个:binlog2sql 软件版本要求: Python 2.7, 3.4+ MySQL 5.6, 5.7 下载地址: https://github.com/danfengcao/binlog2sql 缺点:不支持8.0 优点:不需把binlog下载到本地,即可生成回滚SQL 使用方法: python /opt/software/binlog2sql/binlog2sql/binlog2sql.py -h172.18.54.93 -P3308 -udba -p'123456' -dtest -tt1 --start-file='mysql-bin.000016' --start-datetime='2020-04-29 17:40:00' --stop-datetime='2020-04-29 17:44:00' -B --back-interval 0 注意:使用的时候带上--back-interval 0 否则导入回滚SQL的时候,每1000条SQL会sleep 1秒,这里有点坑。 第二个:myflash 软件要求:美团点评用C语言开发,需要安装gcc,glib2 下载地址:git clone https://github.com/Meituan-Dianping/MyFlash.git 该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具

MyBatis 二级缓存实现详解及使用注意事项

大憨熊 提交于 2020-04-28 22:18:52
二级缓存介绍 在上文中提到的一级缓存中,其最大的共享范围就是一个SqlSession内部,如果多个SqlSession之间需要共享缓存,则需要使用到二级缓存。开启二级缓存后,会使用CachingExecutor装饰Executor,进入一级缓存的查询流程前,先在CachingExecutor进行二级缓存的查询,具体的工作流程如下所示。 二级缓存开启后,同一个namespace下的所有操作语句,都影响着同一个Cache,即二级缓存被多个SqlSession共享,是一个全局的变量。 当开启缓存后,数据的查询执行的流程就是 二级缓存 -> 一级缓存 -> 数据库。 二级缓存配置 要正确的使用二级缓存,需完成如下配置的。 首先,在MyBatis的配置文件中开启二级缓存。 <setting name="cacheEnabled" value="true"/> 然后,在MyBatis的 Mapper XML 中加入 cache 或者 cache-ref 标签。 cache标签用于声明这个namespace需要使用二级缓存,并且可以自定义配置。 <cache/> type :cache使用的类型,默认是 PerpetualCache ,这在一级缓存中提到过。 eviction : 定义回收的策略,常见的有FIFO,LRU。 flushInterval : 配置一定时间自动刷新缓存,单位是毫秒。

推荐收藏 | 美团技术团队的“非技术”书单

安稳与你 提交于 2020-04-24 19:44:27
4月23日对于世界文学而言是一个具有象征性意义的日子。1616年的这一天,塞万提斯、莎士比亚、印卡·加西拉索·德拉维加几位大师相继与世长辞。此外,这一天也是其他一些著名作家的出生和去世的日期,例如:莫里斯·德吕翁、哈尔多尔·K·拉克斯内斯、弗拉基米尔·纳博科夫、约瑟·普拉和曼努埃尔·梅希亚·巴列霍。 1995年在巴黎举行的联合国教科文组织大会决定,在4月23日这一天向全世界的图书和作者致敬,鼓励每个人发掘阅读的乐趣,因此设立了“世界图书与版权 日”,又称“世界读书日”。 2020年,新冠肺炎疫情突然而至,无论是国家,还是公司,亦或是我们个人,都面临着来自内外部的新挑战。在这个时候,我们更需要通过读书来保证理性、冷静、客观,希望每位同学都能从读书中汲取营养,会读书,读好书。 在世界读书日这个特别的日子里,我们从美团技术团队内部的书单中精选了23本书籍推荐给大家。之前我们推送过一份技术人必读的《 新春书单 》,而今天的这份书单则涵盖了通用能力(6本)、经济管理(6本)、哲学历史(8本)、人物传记(3本)等非技术领域,也颇具价值。希望每一位同学都能坚持读书,并学以致用。 通用能力类:6本 推荐理由: 达利欧是著名对冲基金桥水的创始人,他的《原则》讲述了许多生活和工作的原则,我也不知道自己真正理解了多少,但拿出其中一项原则都足以引发很多的思考。 例如在公司的管理中,有这么一段话,

白话web安全

 ̄綄美尐妖づ 提交于 2020-04-09 00:57:21
伤心往事 梦回大二,那时候沉迷于毒奶粉,甚至国庆都在宿舍与毒奶粉共同度过,但是却发生了一件让我迄今难忘的事情~ 我新练的黑暗武士被盗了!!!干干净净!!! 虽然过了好久了,但是记忆犹新啊,仿佛发生在昨天。记得那时候还在屯材料,金色小晶体是什么的。没日没夜的刷图攒钱,倒买倒卖假粉,真紫。后来刷悲鸣的时候爆了一把虫炮(一把价格蛮高的手炮武器),把我激动的哟。 然后就挂到拍卖行了,不一会居然有人私信我,说他看中了,但是游戏里的金币不够,看他挺诚心的,就和他商量怎么办~ 最终方案就是他让我登录一个网站,然后输入我的qq号、密码。他会在那个网站上给我转钱。而且价格要比拍卖行高,我一想,不亏!就去了,但是当我输入账号密码后,我的游戏被中断了。等我马不停蹄的登录账号后,我的材料,武器,金币都没了~~ 虽然说这个事和网络安全关系不是很大,完全是因为自己啥都不懂,那个网站应该不是腾讯官方的。相当于我把我的账号密码主动泄漏给他人了~ 不过如果你想保护好的你的账号和隐私,对于网络安全还是有必要进行了解的。 csrf攻击 煮个例子: 我登陆了腾讯官方网站(qq.com),这时候我的身份信息就被保留在cookies中了 那个坏人骗我访问另外一个非腾讯官网网站(xx.com) xx.com有一段脚本会发往请求到qq.com,比如qq.com/some-action,这时候会携带之前被浏览器保存身份信息 qq

三、Spark性能优化:数据倾斜调优

一世执手 提交于 2020-04-08 15:04:30
前言 继 《Spark性能优化:开发调优篇》 和 《Spark性能优化:资源调优篇》 讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。 1.数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。 数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。 数据倾斜发生的原理 数据倾斜的原理很简单:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。比如大部分key对应10条数据,但是个别key却对应了100万条数据,那么大部分task可能就只会分配到10条数据

四、Spark性能优化:shuffle调优

僤鯓⒐⒋嵵緔 提交于 2020-04-08 15:03:47
shuffle调优 调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各个参数的调优建议。 ShuffleManager发展概述 在Spark的源码中,负责shuffle过程的执行、计算和处理的组件主要就是ShuffleManager,也即shuffle管理器。而随着Spark的版本的发展,ShuffleManager也在不断迭代,变得越来越先进。 在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。该ShuffleManager而HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。 因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager

Flutter原理与美团的实践

与世无争的帅哥 提交于 2020-02-29 13:52:41
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件。自从2017年5月发布 第一个版本 以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps” 的Beta 3版本,6月20日发布了第一个 “Release Preview” 版本。 初识Flutter Flutter的目标是使同一套代码同时运行在Android和iOS系统上,并且拥有媲美原生应用的性能,Flutter甚至提供了两套控件来适配Android和iOS(滚动效果、字体和控件图标等等)为了让App在细节处看起来更像原生应用。 在Flutter诞生之前,已经有许多跨平台UI框架的方案,比如基于WebView的Cordova、AppCan等,还有使用HTML+JavaScript渲染成原生控件的React Native、Weex等。 基于WebView的框架优点很明显,它们几乎可以完全继承现代Web开发的所有成果(丰富得多的控件库、满足各种需求的页面框架、完全的动态化、自动化测试工具等等),当然也包括Web开发人员,不需要太多的学习和迁移成本就可以开发一个App。同时WebView框架也有一个致命(在对体验&性能有较高要求的情况下)的缺点

android热修复之Robust使用(真正的入门)

会有一股神秘感。 提交于 2019-12-23 20:02:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 目前能够实现热修复的方案很多,各个方案的优缺点这里也不在一一比较了,这篇文章主要针对第一次尝试集成美团点评基于Instant Run的热修复方案的开发者。 Robust的GitHub地址: https://github.com/Meituan-Dianping/Robust 。 1.在APP的build.gradle,加入依赖: apply plugin: 'com.android.application' //apply plugin: 'auto-patch-plugin' //制作补丁时将这个打开 apply plugin: 'robust' //生成apk时把这个打开 dependencies{ compile 'com.meituan.robust:robust:0.3.2' } 下面是我的项目APP的build.gradle,大家可以当做参考: apply plugin: 'com.android.application' //apply plugin: 'auto-patch-plugin' apply plugin: 'robust' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig {

Maven使用技巧-parent依赖基础

放肆的年华 提交于 2019-12-10 05:33:03
前言 使用parent控制版本依赖是很常见的事情。类似于java中的父子类继承关系,子类可以引用父类中非private的变量和方法,Maven中的parent定义是类似的,继承者可以直接使用parent中的maven depandencies。 在做多项目依赖情况是,我们常常会创建一个项目提供基础依赖。创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义<parent></parent>,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。 如果AB中分别定义对springmvc.jar的依赖,当springmvc.jar版本变化时修改起来又会很麻烦。解决办法是在parent项目的pom文件中使用<dependencyManagement></dependencyManagement>将springmvc.jar管理起来,如果有哪个子项目要用,那么子项目在自己的pom文件中使用。 基础依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: