上一篇:阿里为什么推荐使用LongAdder?而不是AtomicLong?
小程序开发框架
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 名
项目地址
开源地址:https://github.com/Meituan-Dianping/walle
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%。
使用方法
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'
在整个项目的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' } }
在项目的src同级目录下配置robust.xml文件,具体项请参考DEMOapp/robust.xml
优势
另外,搜索公众号互联网架构师后台回复“面试”,获取一份惊喜礼包。
项目地址
开源地址:https://github.com/Meituan-Dianping/Robust
END