MMKV 原理内存准备通过 mmap,顺丰已辞退工程师邓某

摘要2018年10月30日消息,腾讯认为币应软件全面抄袭微信,要求判令Chips
Limited停止侵权行为,刊登声明消除影响并连带赔偿1000万元。内容概述2018年10月30日消息,据海淀法院网消息,因认为币应软件全面抄袭微信,腾讯科技(深圳)有限公司、深圳市腾讯计算机系统有限公司以不正当竞争纠纷为由将币应软件开发商Chips
Limited及运营商北京风气云飞科技有限公司诉至法院,要求判令Chips
Limited停止侵权行为,二公司刊登声明消除影响并连带赔偿腾讯公司经济损失及合理维权支出共计1000万元。事件始末原告腾讯科技(深圳)有限公司及深圳市腾讯计算机系统有限公司诉称,二公司分别为微信(Wechat)软件的开发者和运营主体。腾讯科技于2011年1月推出的微信(Wechat)是一款移动社交软件,其中“朋友圈”、“扫一扫”、“微信支付”等核心服务功能为公众所知悉。近期,二原告发现一款名为币应(inChat)的软件,认为该软件全面抄袭微信,并在宣传推广中存在使用“微信”表述混淆误导用户的行为。币应(inChat)由Chips
Limited开发、推广、运营,于2018年8月1日正式对外发布。二原告认为,币应软件的用户界面设计、功能内容设置、功能命名及相应图标的设计、排版、布局、色彩搭配等,均与微信软件的界面设计及功能设置等核心要素几乎完全一致。Chips
Limited还通过其官方网站及相关网络媒体,宣传该软件系100%对标“微信”的区块链加密通讯工具、系“币圈微信”、“数字货币微信”、“区块链微信”等。二原告认为,上述抄袭行为,严重侵害其在先权益,且结合Chips
Limited对外宣传中使用“微信”等相关内容,极易引人将该软件误认为是腾讯公司软件或与腾讯公司存在特定关联,搭便车的意图明显。北京风气云飞科技有限公司系
Limited提供币应软件的下载链接。二原告称,在发现风气云飞公司的上述侵权行为后,向其发函要求停止币应软件的分发、下载服务,但风气云飞公司未及时、完全停止币应软件的分发下载服务,导致该软件在短时间内即产生了庞大的访问量和下载量,传播、影响范围扩大,造成了严重的侵权后果。二原告认为Chips
Limited与风气云飞公司已严重侵害其合法权益。日前,海淀法院受理了此案,正在进一步审理中。“币应”是什么?“币应”是一个移动社交APP,号称币圈微信。下图是“币应”APP截图(有没有抄袭,请您自行判断):在“币应”的官网上,是这样介绍的:inChat(“币应”的英文产品名)是一款原创的区块链加密通讯工具,软件设计参考国人操作习惯,能够零成本的学习使用,加密聊天带给我们全方位的隐私保护,支持一个二维码实现所有数字资产收付款,链接传统商业与区块链。在这里,区块链替代了银行卡,闪兑替代了交易所,DAPP替代了小程序,自定义助记词替代了私钥和助记词!
任何开发者都可以基于我们来创建更好的DAPP,复杂的事情交给我们,而创业者只需专注于商业应用。“这里将是,人类未来十年的生活方式!”——inChat
Team此次的两个被告分别有谁?被告1:币应软件开发商“Chips
Limited”(网站:

摘要2018年 9 月 19
日,微博网友“大佬坊间八卦”爆料,顺丰科技数据中心的一位高级工程师邓某因误删生产数据库,导致某项服务无法使用并持续
590 分钟。顺丰已辞退工程师邓某,并在顺丰内网通报。事件概述2018年 9 月 19
日,微博网友大佬坊间八卦爆料,顺丰科技数据中心的一位高级工程师(邓XX)误删生产数据库,导致某项服务无法使用并持续
590
分钟。顺丰根据公司相关规定,辞退工程师邓某,并在顺丰内网通报批评。其他渠道获悉该人任职顺丰科技
IT 数据中心应用交付技术部互联网产品运维组,职务 IT
运维开发高级工程师。据内部通报邓某错选了 RUSS 数据库,打算删除执行的
SQL。在选定删除时,因其操作不严谨,光标回跳到 RUSS
库的实例,在未看清所选内容的情况下,便通过 delete
执行删除,同时邓某忽略了弹窗提醒,直接回车,导致 RUSS
生产数据库被删掉。因运维工作人员不严谨的操作,导致 OMCS
运营监控管控系统发生故障,该系统上临时线上发车功能无法使用并持续了 590
分钟。……
此次故障导致业务产生了严重的负面影响。网友爆料的内部通报邮件截图来自网友的讨论

摘要腾讯微信团队于2018年9月底宣布开源 MMKV ,这是基于 mmap 内存映射的
key-value 组件,底层序列化/反序列化使用 protobuf
实现,主打高性能和稳定性。近期也已移植到 Android
平台,一并对外开源。简介MMKV 是基于 mmap 内存映射的 key-value
组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015
年中至今,在 iOS 微信上使用已有近 3
年,其性能和稳定性经过了时间的验证。近期也已移植到 Android
平台,一并开源。MMKV最新源码托管地址:
源起在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的
crash(请参见文章:《微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?》、《微信团队分享:iOS版微信的高性能通用key-value组件技术实践》),文章里面设计的技术方案是在关键代码前后进行计数器的加减,通过检查计数器的异常,来发现引起闪退的异常文字。在会话列表、会话界面等有大量
cell
的地方,希望新加的计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。这就需要一个性能非常高的通用
key-value 存储组件,我们考察了 SharedPreferences、NSUserDefaults、SQLite
等常见组件,发现都没能满足如此苛刻的性能要求。考虑到这个防 crash
方案最主要的诉求还是实时写入,而 mmap
内存映射文件刚好满足这种需求,我们尝试通过它来实现一套 key-value
组件。MMKV 原理内存准备通过 mmap
内存映射文件,提供一段可供随时写入的内存块,App
只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash
导致数据丢失。数据组织数据序列化方面我们选用 protobuf 协议,pb
在性能和空间占用上都有不错的表现。写入优化考虑到主要使用场景是频繁地进行写入更新,我们需要有增量更新的能力。我们考虑将增量
kv 对象序列化后,append 到内存末尾。空间增长使用 append
实现增量更新带来了一个新的问题,就是不断 append
的话,文件大小会增长得不可控。我们需要在性能和空间上做个折中。更详细的设计原理参考MMKV
原理。iOS 指南安装引入推荐使用
CocoaPods:安装CocoaPods;打开命令行,cd到你的项目工程目录, 输入pod repo
update让 CocoaPods 感知最新的 MMKV 版本;打开 Podfile, 添加pod
‘MMKV’到你的 app target 里面;在命令行输入pod install;用 Xcode 打开由
CocoaPods 自动生成的.xcworkspace文件;添加头文件#import
<MMKV/MMKV.h>,就可以愉快地开始你的 MMKV
之旅了。更多安装指引参考iOS Setup。快速上手MMKV
的使用非常简单,无需任何配置,所有变更立马生效,无需调用synchronize:MMKV*mmkv=[MMKVdefaultMMKV];[mmkvsetBool:YESforKey:@”bool”];BOOLbValue=[mmkvgetBoolForKey:@”bool”];[mmkvsetInt32:-1024forKey:@”int32″];int32_tiValue=[mmkvgetInt32ForKey:@”int32″];[mmkvsetObject:@”hello,mmkv”forKey:@”string”];NSString*str=[mmkvgetObjectOfClass:NSString.classforKey:@”string”];更详细的使用教程参考iOS
Tutorial。性能对比循环写入随机的int1w
次,我们有如下性能对比:更详细的性能对比参考iOS Benchmark。Android
指南安装引入推荐使用
Maven:dependencies{implementation’com.tencent:mmkv:1.0.10’//replace”1.0.10″withanyavailableversion}更多安装指引参考Android
Setup。快速上手MMKV
的使用非常简单,所有变更立马生效,无需调用sync、apply。 在 App
启动时初始化 MMKV,设定 MMKV 的根目录(files/mmkv/),例如在
MainActivity
里:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);StringrootDir=MMKV.initialize(this);System.out.println(“mmkvroot:”+rootDir);//……}MMKV
提供一个全局的实例,可以直接使用:importcom.tencent.mmkv.MMKV;//……MMKVkv=MMKV.defaultMMKV();kv.encode(“bool”,true);booleanbValue=kv.decodeBool(“bool”);kv.encode(“int”,Integer.MIN_VALUE);intiValue=kv.decodeInt(“int”);kv.encode(“string”,”Hellofrommmkv”);Stringstr=kv.decodeString(“string”);MMKV
支持多进程访问,更详细的用法参考Android
Tutorial。性能对比循环写入随机的int1k
次,我们有如下性能对比:更详细的性能对比参考Android Benchmark。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注