当前位置 博文首页 > 程序员漫话编程的博客:美团 5 大最受欢迎的开源项目,牛批!

    程序员漫话编程的博客:美团 5 大最受欢迎的开源项目,牛批!

    作者:[db:作者] 时间:2021-09-18 18:54

    导语:大家好,我是朋哥,十年码农经验,对技术情有独钟。

    小程序开发框架

    mpvue?是一个使用 Vue.js 开发小程序的前端框架,目前支持?微信小程序百度智能小程序头条小程序?和?支付宝小程序。框架基于?Vue.js,修改了的运行时框架 runtime 和代码编译器 compiler 实现,使其可运行在小程序环境中,从而为小程序开发引入了?Vue.js?开发体验。

    主要特性

    使用?mpvue?开发小程序,你将在小程序技术体系的基础上获取到这样一些能力:

    • 彻底的组件化开发能力:提高代码复用性

    • 完整的?Vue.js?开发体验

    • 方便的?Vuex?数据管理方案:方便构建复杂应用

    • 快捷的?webpack?构建机制:自定义构建策略、开发阶段 hotReload

    • 支持使用 npm 外部依赖

    • 使用?Vue.js?命令行工具 vue-cli 快速初始化项目

    • H5 代码转换编译成小程序目标代码的能力

    项目地址

    开源地址:https://github.com/Meituan-Dianping/mpvue


    新一代渠道包打包神器

    Walle(瓦力):Android Signature V2 Scheme签名下的新一代渠道包打包神器

    瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。

    配置build.gradle

    在位于项目的根目录?build.gradle?文件中添加Walle Gradle插件的依赖, 如下:

    buildscript?{
    ????dependencies?{
    ????????classpath?'com.meituan.android.walle:plugin:1.1.7'
    ????}
    }

    并在当前App的?build.gradle?文件中apply这个插件,并添加上用于读取渠道号的AAR

    apply?plugin:?'walle'

    dependencies?{
    ????compile?'com.meituan.android.walle:library:1.1.7'
    }

    配置插件

    walle?{
    ????//?指定渠道包的输出路径
    ????apkOutputFolder?=?new?File("${project.buildDir}/outputs/channels");
    ????//?定制渠道包的APK的文件名称
    ????apkFileNameFormat?=?'${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
    ????//?渠道配置文件
    ????channelFile?=?new?File("${project.getProjectDir()}/channel")
    }

    配置项具体解释:

    • apkOutputFolder:指定渠道包的输出路径, 默认值为new File("${project.buildDir}/outputs/apk")

    • apkFileNameFormat:定制渠道包的APK的文件名称, 默认值为'${appName}-${buildType}-${channel}.apk'可使用以下变量:

      ?????projectName?-?项目名字
      ?????appName?-?App模块名字
      ?????packageName?-?applicationId?(App包名packageName)
      ?????buildType?-?buildType?(release/debug等)
      ?????channel?-?channel名称?(对应渠道打包中的渠道名字)
      ?????versionName?-?versionName?(显示用的版本号)
      ?????versionCode?-?versionCode?(内部版本号)
      ?????buildTime?-?buildTime?(编译构建日期时间)
      ?????fileSHA1?-?fileSHA1?(最终APK文件的SHA1哈希值)
      ?????flavorName?-?编译构建?productFlavors?名

    • channelFile:包含渠道配置信息的文件路径。具体内容格式详见:渠道配置文件示例,支持使用#号添加注释。

    项目地址

    开源地址:https://github.com/Meituan-Dianping/walle


    SQL索引优化建议

    SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一个分析SQL给出索引优化建议的工具。它基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关系 给出索引优化建议。目前SQLAdvisor在美团点评内部广泛应用,公司内部对SQLAdvisor的开发全面转到github上,开源和内部使用保持一致。

    主要功能:输出SQL索引优化建议

    项目地址

    开源地址:https://github.com/Meituan-Dianping/SQLAdvisor

    一套分布式ID生成服务

    Leaf 最早期需求是各个业务线的订单ID生成需求。在美团早期,有的业务直接通过DB自增的方式生成ID,有的业务通过redis缓存来生成ID,也有的业务直接用UUID这种方式来生成ID。以上的方式各自有各自的问题,因此我们决定实现一套分布式ID生成服务来满足需求。

    目前Leaf覆盖了美团点评公司内部金融、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。在4C8G VM基础上,通过公司RPC方式调用,QPS压测结果近5w/s,TP999 1ms。

    配置介绍

    Leaf 提供两种生成的ID的方式(号段模式和snowflake模式),你可以同时开启两种方式,也可以指定开启某种方式(默认两种方式为关闭状态)。

    Leaf Server的配置都在leaf-server/src/main/resources/leaf.properties中

    配置项
    含义
    默认值

    leaf.name

    leaf 服务名

    leaf.segment.enable

    是否开启号段模式

    false

    leaf.jdbc.url

    mysql 库地址

    leaf.jdbc.username

    mysql 用户名

    leaf.jdbc.password

    mysql 密码

    leaf.snowflake.enable

    是否开启snowflake模式

    false

    leaf.snowflake.zk.address

    snowflake模式下的zk地址

    leaf.snowflake.port

    snowflake模式下的服务注册端口

    项目地址

    开源地址:https://github.com/Meituan-Dianping/Leaf

    新一代热更新系统

    Robust是新一代热更新系统,无差别兼容Android2.3-10版本;无需重启补丁实时生效,快速修复线上问题,补丁修补成功率高达99.9%。

    使用方法

    1. 在App的build.gradle,加入如下依赖

      apply?plugin:?'com.android.application'
      //制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application
      //apply?plugin:?'auto-patch-plugin'
      apply?plugin:?'robust'

      compile?'com.meituan.robust:robust:0.4.99'

    2. 在整个项目的build.gradle加入classpath

      ?buildscript?{
      ????repositories?{
      ????????jcenter()
      ????}
      ????dependencies?{
      ?????????classpath?'com.meituan.robust:gradle-plugin:0.4.99'
      ?????????classpath?'com.meituan.robust:auto-patch-plugin:0.4.99'
      ???}
      }

    3. 在项目的src同级目录下配置robust.xml文件,具体项请参考DEMOapp/robust.xml

    优势

    • 支持Android2.3-10版本

    • 高兼容性、高稳定性,修复成功率高达99.9%

    • 补丁实时生效,不需要重新启动

    • 支持方法级别的修复,包括静态方法

    • 支持增加方法和类

    • 支持ProGuard的混淆、内联、优化等操作

    项目地址

    开源地址:https://github.com/Meituan-Dianping/Robust

    关注公众号【程序员漫话编程】,后台回复?”学习资料“? 或者 ”实战项目“即可获得3T视频资源。

    原创不易,有用就关注一下。要是帮到了你 就给个三连吧,多谢支持。
    ?

    觉得不错的小伙伴,记得帮我?点个赞和关注哟,笔芯笔芯~**

    作者:朋哥
    ?

    有问题请留言或者私信,可以 微信搜索:程序员漫话编程,关注公众号获得更多免费学习资料。

    往期资料:

    https://github.com/ProceduralZC/JavaDevGuide
    https://gitee.com/codegrowth/haomony-develop

    cs