微信团队

微信团队分享:微信支付代码重构带来的移动端软件架构上的思考

你说的曾经没有我的故事 提交于 2020-03-25 20:37:34
3 月,跳不动了?>>> 本文原文由微信客户端高级工程师方秋枋原创发表于WeMobileDev公众号,收录时有修订和加工,感谢作者的无私分享。 1、引言 作为一个重要业务,微信支付在客户端上面临着各种问题。 其中最核心问题就是分平台实现导致的问题: 1)iOS 和安卓实现不一致:容易出 Bug、通过沟通保证不了质量; 2)扩展性差且无法快速响应业务需求:需求变更迭代周期长、数据上报不全面; 3)质量保障体系不完善:缺少业务及设计知识沉淀、协议管理松散、缺少统一的自动化测试; 4)用户体验不一致:比如下图就是之前安卓和 iOS 没有统一前的收银台。 ▲ 微信安卓片和iOS版,没有统一用户体验前的收银台功能 为了解决分平台实现这个核心问题,并解决以往的技术债务。我们建立起了一整套基于 C++ 的跨平台框架,并对核心支付流程进行了重构。微信支付跨平台从 iOS 7.0.4 版本起, 安卓从 7.0.7 版本起全面覆盖。 重构后的软件架构原理如下图所示: 本文分享了微信团队基于 C++ 的移动端跨平台技术在重构整个微信支付功能的过程中,对于移动端软件架构设计方面的思考和实践总结。 术语约定: 本文中的名词 CGI 可以理解为一个网络请求,类似HTTP请求。 2、关于作者 方秋枋: 毕业于华中科技大学,现为微信客户端高级工程师。目前主要负责微信支付的跨平台开发框架与相关业务开发。 是开源项目

基于微信小程序的失物招领系统的Postmortem

流过昼夜 提交于 2020-03-06 03:43:19
基于微信小程序的失物招领系统的Postmortem 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 对于我们团队要解决的问题和实现的功能在项目开始就很明确,在项目过程中也一直没有改变。有清晰的典型用户和典型场景描述。 2.是否有充足的时间来做计划? 有时间 3.团队在计划阶段是如何解决同事们对于计划的不同意见的? 因为团队成员都是第一次上手,很多都是参照网络上的资料,或者按照队长的意思。 计划 1.你原计划的工作是否最后都做完了? 如果有没做完的,为什么? 没做完,很重要的对接工作没完成,遇到问题还没解决。 2.有没有发现你做了一些事后看来没必要或没多大价值的事? 在微信小程序前端浪费了很多时间 3.是否每一项任务都有清楚定义和衡量的交付件? 没有,我们很多任务都是靠团队内演示验收来交付 4.是否项目的整个过程都按照计划进行? 在对接上花了很多时间导致不能按照计划进行 5.在计划中有没有留下缓冲区,缓冲区有作用么? 我们在Alpha冲刺最后留了一天的缓冲,但是就算有缓冲区也没把对接解决好 6.将来的计划会做什么修改? 适当延长缓冲区和加班 资源 1.我们有足够的资源来完成各项任务么? 这个项目并没有需要很多资源。 2.各项任务所需的时间和其他资源是如何估计的,精度如何? 按照以往的一些基础编程经验和学长的意见,精度上有一些误差 3

产品人物传:张小龙

情到浓时终转凉″ 提交于 2020-03-04 03:55:23
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。 爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课,昼伏夜出, 经常以拖鞋示人, 晚上常与舍友守着酒精炉煮面,边打双升。 硕士微波系, 后在导师支持下开始做计算机软件开发, 每天睡到自然中午醒, 然后骑单车去实验室, 一台386一坐就是晚上12点, c,c++,OOP,数据结构,算法...样样精通 小龙哥时常弄个小发明创造, 随手设计个电路自个焊着玩, 日常娱乐主要限于跟小基友们玩围棋,桌球,网球,保龄球,喝喝啤酒,吹吹牛, 至于女朋友, 华中科技大学属性设置是一所男子学校~~~ 男女比例100比3,好伐 幸好还可以去录像厅,正所谓谈笑间,强橹灰飞烟灭 初入职 毕业后分配到电信机关工作, 那个年代这可是令人羡慕的铁饭碗呀, 可小龙哥站在电信那栋楼就开始觉得不爽, 他掐指一算: 吾名小龙,大射手座,阳光少男 火象,宜居采光通风之所, 此地阴凉破败,可谓龙遇浅滩, 与发展不利,人生不利,找女朋友不利, 直接拒了! 第一个作品: Foxmail

微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

大兔子大兔子 提交于 2020-02-13 08:38:25
本文来自微信开发团队yanyang的技术分享。 1、引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历。前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微信客户端做了保护并没有引起太大问题(字符处理这类技术问题,其实曾在Android版微信上导致过严重的用户体验危机,感兴趣的可以看看文章《 微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉 》)。 一般来说,特殊字符闪退是系统漏洞引起,只要更新系统就行。但大部分用户不愿意更新系统,而苹果也不一定第一时间解决问题。另外后台可以拦截恶意文本传递,但对于本地已下发的消息,后台没有办法让它删除。所以客户端还是要做些保护预防特殊字符闪退。 学习交流: - 即时通讯开发交流群: 320837163 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-1449-1-1.html ) 2、微信的思路 由于无法事先知道字符串里包含特殊字符,所以只能先让它排版/绘制,看看是否出现问题。做法是,在排版/绘制字符串前,先设置标记位,排版/绘制结束后,移除标记位。 一旦发现标记位存在,就意味着这字符串可能有问题,下次就不显示这个字符串: 这里有几个问题: 有可能在排版/绘制过程中

微信团队分享:iOS版微信的高性能通用key-value组件技术实践

吃可爱长大的小学妹 提交于 2020-02-13 07:14:28
本文来自微信开发团队guoling的技术分享。 1、前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称MMKV)。 MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。希望对于有高性能key-value 组件或类似技术需求的IM同行,能通过本文获得一定的启发。 学习交流: - 即时通讯开发交流群: 320837163 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-1461-1-1.html ) 2、MMKV 源起 在 iOS 微信的日常运营中,时不时就会爆发特殊文字引起 iOS 系统的 crash,《 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的? 》一文里面设计的技术方案是在关键代码前后进行计数器的加减,通过检查计数器的异常,来发现引起闪退的异常文字。 《 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的? 》里设计的技术方案大致原理就是: 1)在会话列表、会话界面等有大量 cell 的地方,希望新加的计时器不会影响滑动性能; 2

微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

不羁岁月 提交于 2020-02-13 06:21:40
1、引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了。 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟。如今用公司配的 17 年款 27-inch iMac 编译要接近半小时;偶然间更新完代码,又莫名其妙需要全新编译。在这么低的编译效率下,开发心情受到严重影响。 于是年初我向上头请示,优化微信编译效率,上头也同意了。 2、现有方案 在动手之前,先搜索目前已有方案,大概情况如下。 2.1 优化工程配置 1)将 Debug Information Format 改为 DWARF: Debug 时是不需要生成符号表,可以检查一下子工程(尤其开源库)有没有设置正确。 2)将 Build Active Architecture Only 改为 Yes: Debug 时是不需要生成全架构,可以检查一下子工程(尤其开源库)有没有设置正确。 3)优化头文件搜索路径: 避免工程 Header Search Paths 设置了路径递归引用: Xcode 编译源文件时,会根据 Header Search Paths 自动添加 -I 参数,如果递归引用的路径下子目录越多,-I 参数也越多,编译器预处理头文件效率就越低,所以不能简单的设置路径递归引用。同样 Framework Search Paths 也类似处理。 2.2 使用 CocoaPods 管理第三方库 这是业界常用的做法

移动互联网十年

怎甘沉沦 提交于 2020-02-04 08:59:48
移动互联网十年 链接:http://note.youdao.com/noteshare?id=f0bb06cd5bbca543ce4b02cd18383ee5&sub=7C9E6C6CE32244569BAE82848DE28A50 这是一段波澜壮阔、荡气回肠的历史 2011年8月16日,北京798艺术中心。 台上,雷军每公布一项技术参数,台下就传来一阵几乎要掀翻屋顶的声浪。 一位记者问:“这都是哪请来的托,太敬业了!”工作人员只得实话实说:“都是自己来的,我们也没想到。” 这一幕,像极了4年前乔布斯在旧金山。 “手机键盘、触控笔?谁要这些玩意儿呢?”在莫斯康尼会议中心举行的第一代iPhone发布会上,乔布斯向全世界宣布:苹果要重新发明手机! 这引来了台下的阵阵欢呼,但当时的大多数人应该都想不到,当天这款产品的发布,竟然很快就打败了整个行业。 (2007年第一代iPhone发布会) 1 iPhone的发布,并没有引起传统手机巨头特别的重视,却给了雷军极大的震撼。 因为与传统“能上网的手机”相比,iPhone是“能打电话的智能终端”,这是质的区别。 而紧接着Android的发布,则给了雷军更大的震撼。这让雷军开始思索,互联网之后的下一个热点会在哪里? 但此时的雷军,正带领着金山做上市前的最后冲刺。从22到38岁,从6号员工到CEO,雷军为金山工作了16年。 其实不仅仅是雷军

微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

你说的曾经没有我的故事 提交于 2019-12-20 00:57:35
1、引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了。 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟。如今用公司配的 17 年款 27-inch iMac 编译要接近半小时;偶然间更新完代码,又莫名其妙需要全新编译。在这么低的编译效率下,开发心情受到严重影响。 于是年初我向上头请示,优化微信编译效率,上头也同意了。 学习交流: - 即时通讯/推送技术开发交流5群: 215477170 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-2873-1-1.html ) 2、相关文章 《 微信团队分享:微信移动端的全文检索多音字问题解决方案 》 《 微信团队分享:iOS版微信的高性能通用key-value组件技术实践 》 《 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的? 》 《 微信团队原创分享:iOS版微信的内存监控系统技术实践 》 《 iOS后台唤醒实战:微信收款到账语音提醒技术总结 》 《 微信团队分享:微信Android版小视频编码填过的那些坑 》 《 微信手机端的本地数据全文检索优化之路 》 《 微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉 》 《 微信客户端团队负责人技术访谈

微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结

╄→尐↘猪︶ㄣ 提交于 2019-12-20 00:41:09
1、引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了。 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟。如今用公司配的 17 年款 27-inch iMac 编译要接近半小时;偶然间更新完代码,又莫名其妙需要全新编译。在这么低的编译效率下,开发心情受到严重影响。 于是年初我向上头请示,优化微信编译效率,上头也同意了。 学习交流: - 即时通讯/推送技术开发交流5群: 215477170 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-2873-1-1.html ) 2、相关文章 《 微信团队分享:微信移动端的全文检索多音字问题解决方案 》 《 微信团队分享:iOS版微信的高性能通用key-value组件技术实践 》 《 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的? 》 《 微信团队原创分享:iOS版微信的内存监控系统技术实践 》 《 iOS后台唤醒实战:微信收款到账语音提醒技术总结 》 《 微信团队分享:微信Android版小视频编码填过的那些坑 》 《 微信手机端的本地数据全文检索优化之路 》 《 微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉 》 《 微信客户端团队负责人技术访谈

团队项目-Beta版本发布

半城伤御伤魂 提交于 2019-12-05 17:50:26
(1)请大家在作业开头添加格式描述: 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/homework/10049 团队名称 志趣信息 这个作业的目标  β版本的发布 (2)在Alpha版本中未成的任务 1.登录界面,未获取用户授权。 2.日记、备忘录后端存储。 (3)项目: 新增的功能: 1.微信登录界面完成: 2.添加标签: 3.删除标签: 4.搜索: (4)给出项目情况的总结。 后端代码写得不是很好,小组成员能力有限,所以就在完成了α版本遗留下来的微信登录后添加了诸如标签、搜索功能。 (5)各成员完成的工作。 杨光 博客撰写,微信登录界面的完成 周嘉航 标签代码 陈星鑫 设置部分代码 艾尔肯 热合曼 搜索代码 张燕山 测试 (6)在Beta阶段的冲刺中遇到了什么样的问题,怎么解决的。 后端接口连不起了,基本上把前端的大部分界面写出来了,也算是正常运行了,如果有充足的时间的话会更加完善。 来源: https://www.cnblogs.com/FangYuan454/p