forked from itwanger/toBeBetterJavaer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
48 changed files
with
698 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
--- | ||
title: 聊聊如何学习开源项目 | ||
shortTitle: 聊聊如何学习开源项目 | ||
author: 勇哥 | ||
category: | ||
- 微信公众号 | ||
--- | ||
|
||
工作几年的程序员同学,有了一定的项目经验,对于编程也有了自己的理解,但他们偶尔也会感到困惑,不知道接下来该如何提升自己。 | ||
|
||
在笔者看来:"这个阶段的程序员最需要的是提升自身编程能力和视野高度,而学习开源项目是最有效的方法之一"。 | ||
|
||
这篇文章,笔者聊聊自己的学习开源项目的心得,希望对你有所帮助。 | ||
|
||
# 1 学会使用 | ||
|
||
首先,我们需要学习**如何使用开源项目**。 | ||
|
||
Github 是全球最大的在线软件源代码托管服务平台,很多开源项目都托管在他上面。 | ||
|
||
在 GIthub 下载源码后,需要重点关注类似 **Quick Start,Getting started ,Example** 之类的文档,这些文档告诉初学者如何使用项目。 | ||
|
||
假如项目需要部署,参考项目文档,在独立的环境中,尝试从零开始,动手部署该项目。 | ||
|
||
某些项目也会提供完善的 example 工程·,里面有现成的例子,可以尝试按照文档介绍运行入门例子。 | ||
|
||
如果入门例子运行顺利 ,对于项目初学者来讲是一个很好的开始。若运行中出现异常,也不必慌张,寻找项目中 FAQ 文档,或者搜索出现问题的关键字(比如异常信息),查询相关的解决方案。 | ||
|
||
成功运行了项目中第一个基础例子之后,可以尝试运行更复杂的功能例子。 | ||
|
||
笔者建议**单独创建一个工程,一个一个功能例子完善整个项目。当这个项目越来越充盈,也就证明你掌握得越多**。在学习过程中,将学习的心得记录在笔记中,便于后续回溯。 | ||
|
||
# 2 阅读源码 | ||
|
||
**阅读源码是深入理解开源项目最重要的一步**。 | ||
|
||
阅读源码之前,尝试从源码构建该项目。通常开源项目都会提供一份构建指南,指导你如何搭建一个用于开发、调试和构建的环境。构建成功后,尝试运行该项目。 | ||
|
||
查看该项目的架构设计文档,梳理出整个项目的骨架,可以画流程图或者 UML 图,加深对项目的理解。 | ||
|
||
当我们了解到整个项目的骨架后,可以挑选感兴趣的模块来阅读,比如你对网络通讯感兴趣,就阅读网络层的代码,深入到实现细节,如它用了什么库,采用了什么设计模式,为什么这样做等。如果可以,DEBUG 细节代码。 | ||
|
||
阅读源码的时候,重视单元测试,尝试去运行单元测试,基本上一个好的单元测试会将该代码的功能和边界描述清楚。 | ||
|
||
笔者体系化的阅读源码是在2014年。彼时,RocketMQ 3.0 刚开源不久,笔者对消息队列极其感兴趣,同时也迫切想了解网络编程框架 Netty 到底是如何使用的。 | ||
|
||
于是,先从 RocketMQ 网络通讯模块 remoting 开始学习,因为源码中有完善的测试用例,先运行单元测试,学习网络编码模型。 | ||
|
||
在学习网络编程的过程中,笔者有两点思维突破: | ||
|
||
**▍一、客户端的编程模型** | ||
|
||
RocketMQ 客户端网络通讯有如下三种方式: | ||
|
||
* oneway : 单向发送 | ||
* sync :同步调用 | ||
* callback :异步回调 | ||
|
||
很多技术的思想是相通的,下图是蚂蚁开源的通讯组件 sofa-bolt 支持的调用类型。 | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_png/V71JNV78n28Y8MicStwz8LpZ58sNEy5RuR03NuIZuzKYiabSwdrgkQUCRoymNsubXOlkFP7MCicunObuu4frs94Rg/640?wx_fmt=png) | ||
|
||
蚂蚁通讯框架Bolt调用类型 | ||
|
||
**▍二、服务端处理器模式** | ||
|
||
RocketMQ 服务端通讯使用经典的 Reactor 模式 ,服务端注册不同的业务处理器,而各个业务处理器可以绑定不同的线程池。 | ||
|
||
``` | ||
void registerProcessor( | ||
final int requestCode, | ||
final NettyRequestProcessor processor, | ||
final ExecutorService executor); | ||
``` | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_png/V71JNV78n28Y8MicStwz8LpZ58sNEy5Ruk6t4pMGiaEI7rpq2qfzouy4aJiawrfAicoVl3CssJJVLrcgBCdDhv5cSg/640?wx_fmt=png) | ||
|
||
* * * | ||
|
||
学完网络框架 Remoting 之后,然后结合 Broker 模块,学习 RocketMQ 存储模型,通过这种方式就可以对 RocketMQ 有了一个相对清晰的认识。 | ||
|
||
# 3 知行合一 | ||
|
||
笔者大学刚毕业的时候,读李开复老师的书,书中有一句话,我印象深刻:“**I Hear and I Forget, I See and I Remember, I Do and I Understand** ” 。 | ||
|
||
中国古代哲学家荀子也说过:"**不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之;学至于行之而止矣**"。 | ||
|
||
学习源码的过程中,将知识点夯实的关键要诀是**动手实践**,并保证实践之后有**输出产物**,也就是**知行合一**。 | ||
|
||
笔者总结了两点经验,供大家参考。 | ||
|
||
**▍一、源码中的知识点应用到项目中** | ||
|
||
开源项目中有非常多的**优秀实践** ,可以将代码中的编码技巧,设计思想,优秀源码引进到业务项目里。 | ||
|
||
2014年,艺龙的优惠券计算服务遇到性能瓶颈,笔者负责重构这个系统。在阅读 RocketMQ 源码后,学习到了线程池使用精髓:**线程池隔离,各司其职** 。 | ||
|
||
于是,笔者先梳理出业务场景,根据任务类型,绑定不同的线程池,为了便于扩展同时对外暴露并发度的配置参数。在重构这个系统的过程中,还引入 RocketMQ 创建线程工具类代码 。 | ||
|
||
重构之后,不仅系统的性能提升了5倍,而且笔者的自信心也大大提升,对技术的理解也更加深刻。 | ||
|
||
**▍ 二、造轮子** | ||
|
||
当我们学习了一个开源项目,我们可以参考开源源码仿写一个。仿写的过程就是查漏补缺的过程,也能完善自己的知识体系。 | ||
|
||
2016年,sharding-jdbc 开源了,下图是当时 sharding-jdbc 的架构设计图: | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_png/V71JNV78n28Y8MicStwz8LpZ58sNEy5RuSqHFDEbve3ibpS9LCQ8ABpmszKzZvQCOv4gGKPFE2cXbEsl7UvVlmsQ/640?wx_fmt=png) | ||
|
||
笔者当时对分库分表着迷,同时脑海里有很多疑问,比如如何封装 jdbc 的接口,如何实现 SQL 解析 ,如何将多个分片的结果聚合等。 | ||
|
||
于是,笔者参考 sharding-jdbc 的源码,仿写了一个分库分表组件。 | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_png/V71JNV78n28Y8MicStwz8LpZ58sNEy5RuLBRfQbiaOoFHsVXECnhTyHaFDqWRTtMqOGOtP3Hz3J7o00ib094Jg70g/640?wx_fmt=png) | ||
|
||
经过这次仿写,笔者深入实践了 client 模式分库分表的原理,并积累了自己的技术储备。 | ||
|
||
# 4 参与开源 | ||
|
||
> “开源理念之一就是非常鼓励不同的人一起合作”。——Linux 之父 `Linus Torvalds` 2016 年 2 月 TED 演讲《The mind behind Linux (opens new window)》 | ||
在《教授鼓励学生参与开源项目的 5 个理由》这篇文章里,提到了如下五点理由: | ||
|
||
1. 无边界的学习 | ||
2. 专业的交流 | ||
3. 外在的机会 | ||
4. 更深入的理解计算机科学 | ||
5. 玩 | ||
|
||
那么程序员如何参与开源呢 ?参与开源有很多种方式,最常见的有如下几种: | ||
|
||
1. 直接参与开源项目的开发 | ||
2. 参考开源项目的社区比赛 | ||
3. 修复开源项目中的 Bug | ||
4. 开源项目文档编写 | ||
5. 参与开源项目的测试和 Demo 编写工作 | ||
6. 参与开源项目推广 | ||
|
||
参与一个开源项目,并与许许多多同样聪明的工程师协作,把脑海中的奇思妙想一一实现,那是多么美好的事情。 | ||
|
||
# 5 写到最后 | ||
|
||
亲爱的程序员朋友,当你不知道选择哪一个开源项目开始学习时,希望你**立足当下,**当前技术团队使用的开源组件,正是你学习的方向。 | ||
|
||
行动起来,相信你会成为更好的自己,加油。 | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_jpg/E44aHibktsKapR0VnBicTdJkajth5o8OQpKjuXr5a1TuW21dmiaB2enXIFONvu1C5utmic40xbaRKl2OLeW5ImvJibQ/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1) | ||
|
||
![](https://mmbiz.qpic.cn/mmbiz_png/E44aHibktsKb9KpZvt9jfMS0rPmyMufl11zg41ExIr2bDlcrQbNgW78TXFA642PI0F50yn0YGHROcWFVeFJCQTg/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1) | ||
|
||
最近我开通了[**股东服务**](https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247505577&idx=1&sn=5114f8f583755899c2946fbea0b22e4b&chksm=ebd497a8dca31ebe8f98344483a00c860863dfc3586e51eed95b25988151427fee8101311f4f&token=319992632&lang=zh_CN&scene=21#wechat_redirect),感兴趣的可戳:[**我开通了付费渠道**](http://mp.weixin.qq.com/s?__biz=MzU4NzA3MTc5Mg==&mid=2247487129&idx=1&sn=4b0d7f12315585738c33e655326805c7&chksm=fdf0e6c6ca876fd034adb19af56315a9221e0e8c71fe3d7924627872e1706789b04c44dc571d&scene=21#wechat_redirect) | ||
|
||
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/2BGWl1qPxib14ibDza9cLmAHwzNX1iaicgMvEmWBP7yEOkGIQCyIjPELEvMkcM6Q34saoqtAl20kxMagrqyzMRAryA/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1) | ||
|
||
关注公众号回复「**对线」**即可免费领取《对线面试官》系列电子书**。** | ||
|
||
点击 阅读原文 跳转至Java开源消息推送平台项目仓库 | ||
|
||
>参考链接:[https://mp.weixin.qq.com/s/nWdzvy76YV4sKqmu6znfQg](https://mp.weixin.qq.com/s/nWdzvy76YV4sKqmu6znfQg),出处:Java3y,整理:沉默王二 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
--- | ||
title: 同事见项目要垮跑路了,无奈公司新人背了大锅... | ||
shortTitle: 前同事见项目要垮跑路了,无奈公司新人背了大锅... | ||
description: 软件“莫名”崩溃了。。。 | ||
category: | ||
- 微信公众号 | ||
head: | ||
--- | ||
|
||
> [二哥的编程星球](https://mp.weixin.qq.com/s/e5Q4aJCX9xccTzBBGepx4g)已经有 **1000 多名** 球友加入了,如果你也需要一个良好的学习氛围,[戳链接](https://mp.weixin.qq.com/s/e5Q4aJCX9xccTzBBGepx4g)加入我们吧!这是一个 Java 学习指南+编程实战+LeetCode 刷题的私密圈子,你可以向二哥提问、帮你制定学习计划、和球友一起打卡成长,冲冲冲。 | ||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-da6a85f1-2544-4410-a42e-6721ca5fa85c.jpg) | ||
|
||
|
||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-76aa00e4-41a6-44e9-9b25-0b82551ef67a.jpg) | ||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-d3345136-764a-4b57-a3e4-8fa98a5f574c.jpg) | ||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-146eb782-427f-42f8-bae4-17a88aca6609.jpg) | ||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-895d4642-7868-4a5b-83a6-df5bb1d78762.jpg) | ||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-qiantsxxmykpllwngsxrbldg-9d861226-854d-41c0-802e-5f8421506c8b.jpg) | ||
|
||
|
||
|
||
--- | ||
|
||
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。 | ||
|
||
- [为什么这样?真的不甘心!](https://mp.weixin.qq.com/s/oshIokqSO_OMeNJeQKpeGA) | ||
- [双非本,拿到这个offer也不错](https://mp.weixin.qq.com/s/OHXpEOKcLaKW8h0TS4Xqjg) | ||
- [今年嵌入式软件这块真挺香](https://mp.weixin.qq.com/s/6YuyA1Ja5RfDEQatfsQpjA) | ||
- [入职 15 天,就想跑路了?](https://mp.weixin.qq.com/s/EW95wdK4SM0CiBEJqUP7Mg) | ||
- [比亚迪,秋招的神](https://mp.weixin.qq.com/s/PmVwFKsXkGeJjmNPiu5hrQ) | ||
- [今年这情况,拿到这俩 offer 不错了](https://mp.weixin.qq.com/s/xxl1qOKQUrVoO-bRJorE6Q) | ||
- [曝光秋招毁约公司](https://mp.weixin.qq.com/s/gOuoM27tl4l6GW7aqZu98Q) | ||
- [垃圾外包,离职也罢](https://mp.weixin.qq.com/s/3Iry19JaEoN4pA3-JDtVhw) | ||
- [非科班转码](https://mp.weixin.qq.com/s/CyJAVQza-9zmDdboStKe8w) | ||
- [美团率先开奖 24k,不甘心?](https://mp.weixin.qq.com/s/MGqyie9KvD6kH8Tuv2mqOw) | ||
|
||
![](https://files.mdnice.com/user/3903/b7e50cf4-6fca-4511-9bfd-aa1ed9eb587b.png) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
--- | ||
title: 银行为什么要以科技岗招人然后让人干两年柜员? | ||
shortTitle: 银行科技岗招了人却让干两年柜员? | ||
author: 小牛肉 | ||
category: | ||
- 微信公众号 | ||
--- | ||
|
||
> [二哥的编程星球](https://mp.weixin.qq.com/s/e5Q4aJCX9xccTzBBGepx4g)已经有 **1000 多名** 球友加入了,如果你也需要一个良好的学习氛围,[戳链接](https://mp.weixin.qq.com/s/e5Q4aJCX9xccTzBBGepx4g)加入我们吧!这是一个 Java 学习指南+编程实战+LeetCode 刷题的私密圈子,你可以向二哥提问、帮你制定学习计划、和球友一起打卡成长,冲冲冲。 | ||
秋招也看了些银行,主要是金融科技岗,发现大部分都会要求轮岗一到两年,心中大呼实在太坑了吧,干两年柜员还能写得来 Hello World?感觉根本原因是培养方式有问题,先熟悉业务再开发系统,这俩强行整了个先后顺序有点不合适吧,找个有经验的开发人员带两年不比在柜台干两年有用。上网搜罗了一些资料分享出来~ | ||
|
||
知乎有类似问题:www.zhihu.com/question/422427316 | ||
|
||
![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/weixin-yinhwsmyykjgzrrhrrglnjy-b95e2bb5-14db-4b6d-a021-ea1949f887e2.jpg) | ||
|
||
> 回答 1:www.zhihu.com/question/422427316/answer/1504706224 | ||
同今年入的建行科技类专项人才。目前在市分行科技部。此前在网点做柜员。下面是我的感受: | ||
|
||
两年基层后,确定还能写出 hello world?本来科技部人就存在养老,一个萝卜一个坑,不像柜员,流动性大并且需求大,基本上去了基层锻炼就废了。在调去科技部之前,我已经提交了辞职,因为白天做柜员,晚上写代码,实在太累,而且不知道这么累是为了什么,这样学习代码,闭门造车,还不如去互联网加班。后来运气好,给我调去了,但据我所知,大部分都是做了一年两年柜员还在网点,并且科技部都是年级比较大的,所以新人去了哪里? | ||
|
||
前段时间省行老总来开会,也对基层锻炼的决策不满意,**科技人员应当跟随业务人员在开发系统过程中去了解业务,而不是两年只学业务**。并且我认为,在基层网点做柜员,做大堂经理,根本连业务也学不到! | ||
|
||
最后,你问为什么招科技类做柜员。我认为,这就是上面的决定,想要科技和业务复合的金融科技人才,但是落实到实际和基层,真正的系统开发还是交给了外包和省行,下面的科技类专项只是一种人才储备。关于是否会调回科技部,那只能看当地科技部有没有这方面需求了。 | ||
|
||
* 轮岗问题:如果是科技中心一般都不轮岗的。如果是分行省行的科技岗位,无论校招还是社招,很多科技岗位都要去基层锻炼,一定要向hr问清楚,轮岗超过三个月的都不建议去,那种轮岗一年以上的,一年后你就一个标准柜员,很难有机会转岗。最重要的是这种长达一年的专业不对口恶心工作你忍受的了吗? | ||
* 面试难度,市分行很容易,学历要求很低,省份或许会有名校研究生学历限制。 | ||
* 福利待遇,银行和公务员是不一样的,公务员的年终奖不会告诉你但是基本上都有。银行没有可能就是没有。薪资待遇问清楚,每个地方银行绩效不一样所以薪资不一样。以我在的国有四大行之一为例,第一年一般是见习期,薪资很低,五千以下。第二年第三年逐渐好一些,八九千的样子吧。 | ||
|
||
> 回答 2:www.zhihu.com/question/422427316/answer/1670483428 | ||
因为根本不需要那么多科技岗人员。 | ||
|
||
省行层面还存在一些开发性质的工作,二级行科技岗就是修电脑的。 | ||
|
||
**开发性质的工作主要在总行**,有些行还有开发中心,还有很多开发工作都选择了专业团队外包出去。 | ||
|
||
所以省行科技部门一般三十多人,二级行一两个人足够(沿海地区省行科技部门可达一百多人,有省会市行的,市行科技部门二十人左右,其他地市行也是一两个人)。 | ||
|
||
就目前来说,各行招聘中,除了管培几乎确定基层轮岗后可以回到省行,其他岗位是没有本质性区别的,都需要从柜台开始,**等待机会**。 | ||
|
||
当然,科技岗、小语种岗等专项人才,会比柜员岗的员工在一些内部招聘上略有优势。 | ||
|
||
为什么要招这么多科技岗员工,因为各省招聘从人数到各类人员构成都是总行确定的。要响应金融科技政策,首先要把相关人才储备到位。 | ||
|
||
从柜员做起没有错,因为各岗位确实需要具备一定的基层工作年限,对银行最基础的工作有一定的了解。超过三年就没必要了。 | ||
|
||
就以往来看,很多科技岗员工入行后,慢慢的自己也不想从事科技岗位了,最终从事营销岗位。 | ||
|
||
因为银行来说,营销岗才是主流岗位,从收入到提拔晋升都具有很大优势,非营销岗位中,办公室、人力、财会也不错,其他非营销岗位在银行并不具有很好的发展前景。 | ||
|
||
> 回答 3:www.zhihu.com/question/422427316/answer/1683310079 | ||
首先我很明确的告诉你,你确实是被骗了。作为一名前银行员工,对于银行的招聘流程也算熟悉。我来讲一下,银行为什么要这样干。 | ||
|
||
第一,银行的愿望很美好。由于银行搞科技开发,最终的目的也是为了业务发展,因此银行方面希望科技岗位的工作人员能熟练掌握银行的具体业务,具有深厚的业务背景,这样在搞开发的时候,才能以业务为导向,开发出真正面向市场、符合客户需求的产品。从这个角度来说,科技岗的新人先去柜台干一两年似乎是无可厚非的。 | ||
|
||
第二,银行确实骗人了。而这源于两方面原因,一方面是因为柜员流失率高,所以银行需要不断的招聘新人,弥补人员流失;另一方面银行柜员又招不来人,尤其是高学历、名校的学生,如果银行在招聘公告中说明是柜员,那无疑最终报名的都是学校学历很一般的学生。所以这几年各家银行都学聪明了,在招聘时各种其他名义招聘,比如运营岗,科技岗,管培生等等。等招进来以后,就以新员工必须先从柜台开始熟悉业务为理由,把你放到柜台上,从此遥遥无期。甚至有银行为了招揽双一流高校的学子,会以总行或者省分行的名义招聘,招进来以后放下去当柜员。 | ||
|
||
**总结来说,真要去就去总行科技中心,分行下的科技岗大概率是个坑。** | ||
|
||
--- | ||
|
||
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。 | ||
|
||
- [为什么这样?真的不甘心!](https://mp.weixin.qq.com/s/oshIokqSO_OMeNJeQKpeGA) | ||
- [双非本,拿到这个offer也不错](https://mp.weixin.qq.com/s/OHXpEOKcLaKW8h0TS4Xqjg) | ||
- [今年嵌入式软件这块真挺香](https://mp.weixin.qq.com/s/6YuyA1Ja5RfDEQatfsQpjA) | ||
- [入职 15 天,就想跑路了?](https://mp.weixin.qq.com/s/EW95wdK4SM0CiBEJqUP7Mg) | ||
- [比亚迪,秋招的神](https://mp.weixin.qq.com/s/PmVwFKsXkGeJjmNPiu5hrQ) | ||
- [今年这情况,拿到这俩 offer 不错了](https://mp.weixin.qq.com/s/xxl1qOKQUrVoO-bRJorE6Q) | ||
- [曝光秋招毁约公司](https://mp.weixin.qq.com/s/gOuoM27tl4l6GW7aqZu98Q) | ||
- [垃圾外包,离职也罢](https://mp.weixin.qq.com/s/3Iry19JaEoN4pA3-JDtVhw) | ||
- [非科班转码](https://mp.weixin.qq.com/s/CyJAVQza-9zmDdboStKe8w) | ||
- [美团率先开奖 24k,不甘心?](https://mp.weixin.qq.com/s/MGqyie9KvD6kH8Tuv2mqOw) | ||
|
||
![](https://files.mdnice.com/user/3903/b7e50cf4-6fca-4511-9bfd-aa1ed9eb587b.png) |
Oops, something went wrong.