ABF手机麦泡充电宝质量怎样样?

&h2&严格按照『debug 作业规范』来做即可&/h2&&p&&br&&/p&&p&『debug 作业规范』具体是怎样的就比较麻烦了,我手中正好有一段帮人演示 debug 的视频,上传到了 B 站,也顺便贴到了知乎(下方视频)&/p&&p&&br&&/p&&p&里面大概有 4、5 个不同种类的 bug,我 debug 的同时还解释了一下思路,对你不一定有帮助,不过好在只有 4 分钟&/p&&p&&br&&/p&&p&&a href=&///?target=http%3A///video/av/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&如何更好地 debug - 哔哩 (゜-゜)つロ 干杯~-bilibili&i class=&icon-external&&&/i&&/a&&/p&&a class=&video-box& href=&///?target=https%3A///video/695232& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&/v2-7dea5f995b24d24378a2.jpg& data-lens-id=&695232&&
&img class=&thumbnail& src=&/v2-7dea5f995b24d24378a2.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/video/695232&/span&
&/a&&p&&/p&&p&&/p&
严格按照『debug 作业规范』来做即可 『debug 作业规范』具体是怎样的就比较麻烦了,我手中正好有一段帮人演示 debug 的视频,上传到了 B 站,也顺便贴到了知乎(下方视频) 里面大概有 4、5 个不同种类的 bug,我 debug 的同时还解释了一下思路,对你不一…
&p&6000赞来的太快,就像龙卷风。写了很久,在这儿认真还真能收获惊喜呐。期待更多胖友&b&认识阅读的局限,破除书籍迷信&/b&。&/p&&p&=============跑偏的分割线=============&/p&&br&&p&最近很不认同知乎上,一些认为读书能解决关键问题的看法。就着这罐果香浓郁的2013年产可乐,正经回答一次。当然我也准备好跑题了。稍长,不以推书为目的,要书的直接滑到最后。&/p&&br&&p&在回答之前,我要引用一些名人名言,以壮声势:&/p&&br&&p&1)&b&所有不成体系的书籍推荐,都是耍流氓&/b& - 马克·吐温&/p&&p&2)&b&任何以为读读书就能洞悉一门学问的,都too simple,sometimes naive&/b& - 雷锋&/p&&p&3)只收藏、不点赞的同学,人心都是肉长的...地主家也没有余粮呀...我的意思是,不赞不是中国人,么么哒 - 彼得·德鲁克&/p&&br&&p&一、&/p&&p&作为一个管理工作从业以及读书爱好者,当我讨论管理学的时候,进入我思维的不是书单,而是一座体量巨大的移动城堡。现代管理学,大体以泰勒姥爷发表《科学管理原理》(1911)为开端,百年已过,到今天已形成庞大体系,有多大,人类身上能拿来数数的器官肯定不够用。&/p&&br&&p&如果只是消遣阅读,值得一看的管理类书籍,连起来,大概能从东京的秋叶原排到京东的华北仓。而真正想了解或者掌握管理学,不是在床上、办公室搞一搞就能解决的(群众:快停车,这不是开往幼儿园的车啊)。&/p&&br&&p&德鲁克爷爷言犹在耳:管理,是一门实践 —— 实在要给德老一个具象,请想象卖炸鸡那位爷爷,当然他其实更神似韦尔奇 —— 这个观念,和当年站在城楼上的图书管理员时空汇聚、不谋而合,他实践的是“枪杆子里讨工资”。&/p&&br&&p&再举个栗子,用惯右手的程序猿都知道的,人类创造生命大和谐的技能,不是你看几TB&b&东热&/b&就能娴熟的,首先,你得有个媳妇儿。&/p&&br&&p&嗯,准确的说,管理是典型的知行合一,Know it and Just do it。&/p&&br&&p&二、&/p&&p&为了防止世界被破坏、为了维护答案不被折叠,必须得回答理论学习的问题:&b&Know it ?&/b& (程序猿可以理解成:懂 IT )。&/p&&br&&p&理论习得的方法很多,最常见是教学和读书。教学在这没法谈,容易谈的是读书,它确实是重要的learning手段,之一。&/p&&br&&p&在管理学的体系化结构之下,做任何割裂阅读、破碎解读的方式,我都是反对的。最典型的就是:推荐某本或几本书籍。它们常常是带着“长青”、“经典”、“必读”、“XX推荐”、或者“XX大学不可不读” 字眼的。少侠你骨骼清奇、聪慧过人,肯定知道出版社这伙二道贩子,为了卖书,是什么都干得出来的。&/p&&br&&p&反对理由很简单,因为成本高、而收益极低:&/p&&br&&p&&b&① 推荐的书单质量不可控,书籍的甄选成本很高。&/b&推荐书籍的人,往往就丢一个书名,连推荐理由都没有。试想,一本“经典”书籍,推荐的人读完连一点心得都没能提炼出来,要么是书不好,要么是书白看了,要么是书和人的层次不一致。拿到这样的书单,读书的人想碰到好书,看造化。&/p&&br&&p&&b&② 阅读的时间成本很高。&/b&比如这个问题下的其他答案,推荐的都是不错的书,加起来能有几十本,题主翻完很容易,要真正“看完”和“领会”......那我觉得是时候谈谈世界和平的问题了。&/p&&br&&p&&b&③ 理论没有统一性,都是一家之言。&/b&如 &a class=&member_mention& href=&///people/d9adc24d8a761eebf51e9e87a635fa87& data-hash=&d9adc24d8a761eebf51e9e87a635fa87& data-hovercard=&p$b$d9adc24d8a761eebf51e9e87a635fa87&&@warfalcon&/a& 所说,各种书架上的管理学著作,不管是杂论也好、专论也罢,各家有各家的解读。读者盲目地去吸纳这些书,只会导致真气不畅,头脑中出现无数个小人,他们互相打架,最后打残的是读者的脑子。结果可以预见,砖块搬了很多,拍死隔壁家的强子是够了,可楼始终没建起来。&/p&&br&&p&三、&/p&&p&实在选了“读书”这条看起来省事、实则无法预期的道儿,破题之法在哪里呢:&/p&&br&&p&&b&1. 你一定要读上几本学院派的经典书籍。体系化的管理学习,必须建立理论结构。&/b&&/p&&p&阅读质量已被验证、集大成而又非常入门的作品,将管理的发展史、体系、脉络捋一遍,建立知识基础和框架。我再次强调&b&,【不考虑成本、推荐5本书以上的行为都是耍流氓】。&/b&你看我,就只会推荐 4 本:&/p&&br&&a href=&///?target=http%3A///subject/3393766/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《管理学》,(美)斯蒂芬·罗宾斯&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///subject/1279659/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《组织行为学》 ,(美)斯蒂芬·罗宾斯&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《营销管理》,(美)菲利普·科特勒&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///subject/1453922/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《人力资源管理》,(美)加里·德斯勒&i class=&icon-external&&&/i&&/a&&br&&br&&p&&b& 2. 丢弃碎片式的学习,划分出专门的时间。买纸质书,写读书心得。&/b&&/p&&p&某知名数据库企业的中国区HRD,有个我极为认同的观点,大体是“工作之后,还能潜心去读专业书、写笔记,这是一种竞争力”。&b&在信息过载的时代,我认为能抛弃无用的信息流,专心去提升核心实力,真的非常cool,&/b&俗称高冷。&/p&&br&&p&为什么说要买纸质书,倒没有矫情的书香情结。以上著作都算大部头,用阅读畅销书的方法肯定跟没读一样,碎片式、随意式的做法太丧失了,所以&b&我反对在任何数码终端上阅读专业书籍(包括Kindle),一不能专注,二不便做笔记。&/b&&/p&&br&&p&另外就是技术原因,图形基本看不了就不说了,用6、7英寸的电子屏阅读16开本设计的图书,你...你...你眼睛是亲生的么? &/p&&br&&p&&b&3. 控制节奏,不以“读完”为目的。&/b&&/p&&p&我反对任何给自己设定读书数量的行为,最破坏 reading 乐趣的,莫过于此。许下一年读50本以上书籍的同学,出门左转,书摊上留几手等着给你打分呢。至少管理学的书籍,我不许你这么看。&/p&&br&&p&&b&4. &/b&当你按照以上方法,专注而有质量的建好了管理学的基础架构,并且深刻认同&b&【任何以为读读书就能洞悉一门学问的,都too simple,sometimes naive】&/b&,我确信你不会迷失在管理学的星辰大海中了。这时候,请策马扬鞭,寻找更细节、更丰满的书籍去充实管理学的骨架,去形成自己的管理价值观,去诉诸实践。&/p&&br&&p&而管理的实践,场景之多,我觉得尚无把握去说上一说。我能想到的介入手段:&b&① &/b&家庭管理;&b&②&/b&班级管理;&b&③ &/b&户外活动管理;以及最典型的;④职业/工作管理。&/p&&br&&p&感谢阅读。除了前面提到的4本著作(&b&管理学,组织行为学,营销管理,人力资源管理&/b&),一定要再推荐一本的话,我会说: Let there be 「&b&杰克·韦尔奇自传&/b&」。他确实践行了管理的实践,是管理者的标杆。&/p&
6000赞来的太快,就像龙卷风。写了很久,在这儿认真还真能收获惊喜呐。期待更多胖友认识阅读的局限,破除书籍迷信。=============跑偏的分割线============= 最近很不认同知乎上,一些认为读书能解决关键问题的看法。就着这罐果香浓郁的2013年产可乐,正经…
&p&Word Cloud Generator,可以分析出网页上的关键字,做成WordCloud,支持谷歌浏览器、火狐和Opera。这个工具定制的选项很多,生成的SVG可以下载,用来做PPT很好看。&/p&&img src=&/v2-701fbb09f_b.png& data-rawwidth=&3104& data-rawheight=&1400& class=&origin_image zh-lightbox-thumb& width=&3104& data-original=&/v2-701fbb09f_r.png&&&br&&ol&&li&谷歌浏览器版: &a href=&///?target=https%3A///webstore/detail/word-cloud-generator/demclmhdcbofendohdngkfokmbcgickb& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/webst&/span&&span class=&invisible&&ore/detail/word-cloud-generator/demclmhdcbofendohdngkfokmbcgickb&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&火狐版:&a href=&///?target=https%3A//addons.mozilla.org/zh-cN/firefox/addon/word-cloud-generator/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Word Cloud Generator&i class=&icon-external&&&/i&&/a&&/li&&li&Opera版:&a href=&///?target=https%3A///en/extensions/details/word-cloud-generator/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Word Cloud Generator&i class=&icon-external&&&/i&&/a&&/li&&/ol&&p&插件的作者是Jordan Gwyn。他把插件开源了,放在Github上,&a href=&///?target=https%3A///emanresusername/word-cloud-generator& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&emanresusername/word-cloud-generator&i class=&icon-external&&&/i&&/a&。&/p&&p&插件的技术架构比较有意思,是用Binding.scala + Scala.js + d3.js 做的。&/p&&p&Jordan Gwyn利用了Binding.scala的数据绑定功能,右边生成的SVG图片会随着左边的选项改变实时更新,整个界面上没有用任何“更新”或者“提交”之类的按钮。&/p&&p&我觉得对于这种需要实时预览的应用来说,这种数据绑定的界面的用户体验还挺好的。&/p&
Word Cloud Generator,可以分析出网页上的关键字,做成WordCloud,支持谷歌浏览器、火狐和Opera。这个工具定制的选项很多,生成的SVG可以下载,用来做PPT很好看。 谷歌浏览器版: 火狐版:Opera版:
&img src=&/v2-92fda67a20d7ef35f696ab6bed7e5cb2_b.png& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-92fda67a20d7ef35f696ab6bed7e5cb2_r.png&&&p&知乎编辑器太烂了。。我还是贴链接,大家辛苦跳转阅读吧!&/p&&p&&a href=&/?target=https%3A//mp./s%3F__biz%3DMzIzMTYzOTYzNA%3D%3D%26mid%3D%26idx%3D1%26sn%3Dcc073ed95e7ae4aa6a8197%26chksm%3De8a05d1edfd7df39839fbedfaebae804ea940dc96ae6201%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotlin Native 详细体验,你想要的都在这儿&i class=&icon-external&&&/i&&/a&&br&&/p&&p&电脑版直接访问 Kotliner:&a href=&/?target=http%3A////Kotlin%2520Native%%25AF%25A6%25E7%25BB%%25BD%%25AA%258C%25EF%25BC%258C%25E4%25BD%25A0%25E6%%25E8%25A6%%259A%%2583%25BD%25E5%259C%25A8%25E8%25BF%%2584%25BF/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotlin Native 详细体验,你想要的都在这儿&i class=&icon-external&&&/i&&/a&&/p&&p&另外,所有文章已经开始全部更新到 &a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotliner&i class=&icon-external&&&/i&&/a& 如果大家不习惯手机阅读,可以直接访问 &a href=&/?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kotliner&i class=&icon-external&&&/i&&/a& ~&/p&
知乎编辑器太烂了。。我还是贴链接,大家辛苦跳转阅读吧! 电脑版直接访问 Kotliner:另外,所有文章已经开始全部更新到
如果大家不习惯手机阅读,可以直接访问
&p&作为 GitHub 中国区首席 markdown 工程师,我们公司的 HR 经常找我来鉴定的。&/p&&br&&p&从首页来看,我只关心三部分:&/p&&img src=&/v2-6facab6ce6d21cbefcd40e2d7415fc81_b.png& data-rawwidth=&2028& data-rawheight=&1588& class=&origin_image zh-lightbox-thumb& width=&2028& data-original=&/v2-6facab6ce6d21cbefcd40e2d7415fc81_r.png&&&br&&p&1. 活跃时间。如果是在最近三个月,才在 GitHub上活跃的,那么这肯定是为了&b&找工作做准备的。&/b&&/p&&p&2.
star 数代表了&b&受欢迎程度&/b&。star 数并不能代表候选人的真实能力,但是它可以代表候选人的影响力。&/p&&p&3. 擅长的语言类型。GitHub 的语言识别可以减少一些麻烦,如我 GitHub 首页的两个高 star 的 HTML 项目都是电子书。而,像那些&b&只有 README 的项目&/b&是不会有语言的。&/p&&br&&p&接着,我便会看项目的两个内容:&/p&&p&1. 工程实践&/p&&p&2. 少部分代码(一般情况下,我都不会看代码的,有点浪费时间)&/p&&p&工程实践,主要从&b&README、项目目录、提交历史&/b&看起:&/p&&br&&h2&&b&README&/b& &/h2&&p&主要看有没有写得很规范&/p&&img src=&/v2-d4cfe78c_b.png& data-rawwidth=&2010& data-rawheight=&1342& class=&origin_image zh-lightbox-thumb& width=&2010& data-original=&/v2-d4cfe78c_r.png&&&p&1. 如果有上图所示的&b&持续集成、测试覆盖率、代码质量&/b&等等,那自然是好感满满。它可以表明这是不是一个贴近社区水平的开源项目&/p&&p&2. README 里要&b&清楚&/b&写明项目是怎么用的——它可以表明,候选人的表明能力。&/p&&br&&h2&&b&项目结构&/b&&/h2&&img src=&/v2-40ed3caea6958cbec334863_b.png& data-rawwidth=&2010& data-rawheight=&1478& class=&origin_image zh-lightbox-thumb& width=&2010& data-original=&/v2-40ed3caea6958cbec334863_r.png&&&p&表明了候选人对代码的组织能力。其他的,以前端项目为例:&/p&&p&1.
package.json 一般来说是必须的~&/p&&p&2. .gitignore、.npmignore 表明了它了解相关实践&/p&&br&&img src=&/v2-66cdba48ecf9df6bfb1ae9_b.png& data-rawwidth=&2050& data-rawheight=&1440& class=&origin_image zh-lightbox-thumb& width=&2050& data-original=&/v2-66cdba48ecf9df6bfb1ae9_r.png&&&p&提交信息可以看出候选人的表达能力及工程经验。&/p&&p&而诸如, issues 和
pr 的处理表明候选人的协作能力。&/p&&br&&p&最后一步,便是看代码了。可惜,只是少数项目能走到这一步。&/p&&p&看代码一般会先看测试用例——作为开源项目,应该都是要有测试的。&/p&&img src=&/v2-a6a0ab79c6_b.png& data-rawwidth=&2036& data-rawheight=&1298& class=&origin_image zh-lightbox-thumb& width=&2036& data-original=&/v2-a6a0ab79c6_r.png&&&br&&p&随后,才是代码本身~~。&/p&
作为 GitHub 中国区首席 markdown 工程师,我们公司的 HR 经常找我来鉴定的。 从首页来看,我只关心三部分: 1. 活跃时间。如果是在最近三个月,才在 GitHub上活跃的,那么这肯定是为了找工作做准备的。2. star 数代表了受欢迎程度。star 数并不能代表候选…
&p&while (true) 和 for ( ; ; )&/p&&p&这两种方法效果完全一样,但那一种更好呢?&/p&&p&我们来看看它们编译后的汇编代码,&/p&&p&下面是在vs2013中编译的结果: &/p&&p&while (true) 编译前
&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&while (true);
&/code&&/pre&&/div&&p&编译后 &/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&mov
&/code&&/pre&&/div&&p& for ( ; ; )编译前
&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&for (;;);
&/code&&/pre&&/div&&p&编译后 &/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&jmp
&/code&&/pre&&/div&&p&很显然,for ( ; ; )指令少,不占用寄存器,而且没有判断、跳转,比while (true)好。&/p&
while (true) 和 for ( ; ; )这两种方法效果完全一样,但那一种更好呢?我们来看看它们编译后的汇编代码,下面是在vs2013中编译的结果: while (true) 编译前 while (true);
编译后 mov eax,1
test eax,eax
je wmain+29h
jmp wmain+1Eh
for ( ; ; )编…
这个问题是知乎关注度最高的问题,有30万关注,1500回答,详见这里:关注度最高的300个问题 &a href=&/p/& class=&internal&&&span class=&invisible&&https://&/span&&span class=&visible&&/p/24&/span&&span class=&invisible&&305802&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&感谢上面所有答主的贡献!&br&&br&作为一个常年腾讯加班狗,一直在追求效率提升的工具,所以整理了在工作中真正有效提升效率的工具如下:&br&(不断更新中,试用过觉得不错的话就点赞、关注吧~~)&br&&br&&b&====效率提升====&/b&&br&&br&&b&1、Everthing&/b&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Everything Search Engine&i class=&icon-external&&&/i&&/a&&br&受不了windows系统的搜索功能?那你会爱上这个小巧的工具!&br&输入任何关键字,它会在极短的时间内显示系统内所有结果&br&可以按照文件夹、文档、软件程序等分类查找&br&同时支持正则表达式,实在是懒人的必备神器&br&有了它,我几乎都不再整理文件了,想要什么一搜就能找到&br&&img src=&/v2-00f1f1ffb63520dfa67cfd8_b.png& data-rawwidth=&1057& data-rawheight=&712& class=&origin_image zh-lightbox-thumb& width=&1057& data-original=&/v2-00f1f1ffb63520dfa67cfd8_r.png&&&br&&b&-有道云笔记&/b&&br&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/&i class=&icon-external&&&/i&&/a&&br&对于互联网从业者来说,异地公办是家常便饭。&br&工作文档用word写的最大问题是没法同步&br&所以你需要一个强大的同步工具,有道云笔记就是这样一款良心国货&br&电脑客户端、手机、网页版,三端同步,随时随地办公。&br&我现在写大部分非正式文档都用有道了,在公司没做完的工作,回到家里打开电脑就可以继续撰写,非常方便&br&&img src=&/v2-4c5aa3177dcedf3c56ecd2a2ce48ecf2_b.png& data-rawwidth=&1287& data-rawheight=&745& class=&origin_image zh-lightbox-thumb& width=&1287& data-original=&/v2-4c5aa3177dcedf3c56ecd2a2ce48ecf2_r.png&&&br&写好的文章,可以一键分享给其他人,自己还可以随时编辑,对于经常更新的信息公布类、流程类文档来说实在是神器&br&&br&&img src=&/v2-3b0775aca9a9fad99b08c223b13c8ea1_b.png& data-rawwidth=&750& data-rawheight=&564& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-3b0775aca9a9fad99b08c223b13c8ea1_r.png&&&br&微信看到一篇好文章,没时间看,可以先收藏起来!&br&&br&&img src=&/v2-823e083fbfad4ac4cf7166d_b.png& data-rawwidth=&500& data-rawheight=&760& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/v2-823e083fbfad4ac4cf7166d_r.png&&&br&&br&&b&-LastPass&/b&&br&&a href=&///?target=https%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&一款小巧清爽的密码管理软件,免费就已经很强大,满足大部分人的需求了。&br&互联网重度使用者经常会注册N个网站,很多时候账号都不记得了,更别说密码。&br&LastPass就是一个神器,帮你把登陆过的账号密码记录下来,下次访问的时候,自动填写。&br&官方宣称安全性极佳,毕竟没有绝对安全的软件,非常重要的账号密码还是需要用脑子记好。&br&例如你女票/男票在你电脑发现不可描述的网站,然后自动登录了,那就......&br&&br&&img src=&/v2-405dae618e759d1dd37b315_b.png& data-rawwidth=&1262& data-rawheight=&544& class=&origin_image zh-lightbox-thumb& width=&1262& data-original=&/v2-405dae618e759d1dd37b315_r.png&&&br&&br&&b&-Awesome Screenshot网页截图&/b&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&清爽、强大的一个Chrome扩展程序,最厉害的就是截取整个页面的功能。&br&&img src=&/v2-d678a908def_b.png& data-rawwidth=&286& data-rawheight=&260& class=&content_image& width=&286&&&br&&br&&b&-Fences桌面整理&/b&&br&&a href=&///?target=http%3A///products/fences/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/products/f&/span&&span class=&invisible&&ences/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&我的桌面经常乱得满屏都是奇奇怪怪的文件,凡是看过的人都会被惊喜到..一点都不像处女座&br&自从用了Fences,桌面清爽很多,可以在桌面建立多个栅格,把文档拖进去,又整齐又方便。&br&懒人党的福音&br&&br&&br&&b&-PDF处理&/b&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&大部分人常用的PDF软件应该就是Adobe或者福昕了吧,然而这两个软件并不太支持PDF编辑。&br&这是个神奇的网站,PDF转图片、切割单页、合并……各种功能都免费支持,上班族和学生党必备利器。&br&&img src=&/v2-8da14430f1afcc196e383c25fa9db15e_b.png& data-rawwidth=&918& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&918& data-original=&/v2-8da14430f1afcc196e383c25fa9db15e_r.png&&&br&&br&&b&====数据可视化====&/b&&br&&br&&b&-Tagxedo&/b&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&一个词云制作网站,数据报告有了更好的展现方式。&br&(1)输入一段文本,自动分词统计词频;&br&(2)自动生成词云;&br&(3)自由定制形状、颜色,甚至可以自己上传照片!&br&(4)最重要的是,支持中文!!!&br&&img src=&/v2-67ac4ef2ad_b.png& data-rawwidth=&967& data-rawheight=&814& class=&origin_image zh-lightbox-thumb& width=&967& data-original=&/v2-67ac4ef2ad_r.png&&&br&&b&-ECharts&/b&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&觉得Excel图表不够酷炫?有很多数据没法表达?&br&那你应该试试这个可视化工具!&br&我们经常看到的酷炫大数据可视化图,基本上都能在这里找到模板,可以直接套用。&br&简直是工作汇报、升职加薪的必备神器。&br&&img src=&/v2-ccccc70dc8a_b.png& data-rawwidth=&1917& data-rawheight=&855& class=&origin_image zh-lightbox-thumb& width=&1917& data-original=&/v2-ccccc70dc8a_r.png&&&img src=&/v2-6fa45dfedc90bc11468e35e_b.png& data-rawwidth=&1102& data-rawheight=&732& class=&origin_image zh-lightbox-thumb& width=&1102& data-original=&/v2-6fa45dfedc90bc11468e35e_r.png&&&br&&br&&b&====图片处理====&/b&&br&&br&&b&-智图&/b&&br&&a href=&///?target=http%3A//zhitu.isux.us/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zhitu.isux.us/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&这是腾讯ISUX(很牛的一个设计师团队)旗下的一个小网站,图片压缩质量非常好。&br&下图中的原图有600多K,压缩到70K也没有影响画质,也可以自己选择压缩的幅度。&br&对于经常在网上发布文章的小编或者网站运营者来说,图片压缩是非常重要的一个环节,这就是一个好用的小工具。&br&&br&&img src=&/v2-a94ccb8e7fbc1dcd9ebd8a8_b.png& data-rawwidth=&1074& data-rawheight=&739& class=&origin_image zh-lightbox-thumb& width=&1074& data-original=&/v2-a94ccb8e7fbc1dcd9ebd8a8_r.png&&&br&&b&====影音播放====&/b&&br&&br&&b&-QQ影音(也许是腾讯口碑最好的工具软件)&/b&&br&&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&小马哥、张志东都点赞的小软件!&br&话说有一段时间,腾讯内网忽然出现一个帖子,原意大概是:QQ影音为什么口碑这么好?&br&小马哥、Tony(腾讯创始人之一)都纷纷点赞,小马哥甚至在一次战略大会上以QQ影音为案例深度讲授了一些做产品的原则。&br&没有广告、支持各种文件、速度飞快、遮挡字幕、GIF制作……等无数良心功能。&br&在快播倒下、暴风影音/迅雷看看严重商业化的现在,实在是一款口碑佳作。&br&&img src=&/v2-f8dffc3e11b30cfa2fe611_b.png& data-rawwidth=&586& data-rawheight=&384& class=&origin_image zh-lightbox-thumb& width=&586& data-original=&/v2-f8dffc3e11b30cfa2fe611_r.png&&&img src=&/v2-7843efa908e5f7acda4dae98e64a2d6d_b.png& data-rawwidth=&576& data-rawheight=&366& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&/v2-7843efa908e5f7acda4dae98e64a2d6d_r.png&&&br&&br&&br&&br&&b&====免费资源====&/b&&br&&br&&b&-Unsplash&/b&&br&&a href=&///?target=http%3A///link%3Furl%3DH7BGmlPnLD6p28tsk8UWrXgrJpmhjL2vripClIRL01y& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/&i class=&icon-external&&&/i&&/a&&br&一个免费图片网站,有别于其他免费图片的是,这里的图片质量实在是太好了!&br&不仅仅单张图的尺寸非常高,而且内容非常有逼格,绝对没有乱七八糟的图片。&br&我们有很多高逼格的宣传海报,用图也是选自这里。&br&支持tag搜索,准确率非常高,搜music出来的结果大家感受一下图片的质量。&br&&img src=&/v2-cd0e2b453accf40c78af6d45_b.png& data-rawwidth=&1259& data-rawheight=&734& class=&origin_image zh-lightbox-thumb& width=&1259& data-original=&/v2-cd0e2b453accf40c78af6d45_r.png&&&br&&br&&b&-微果酱&/b&&br&&a href=&///?target=http%3A///mp/account/rank& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/mp/ac&/span&&span class=&invisible&&count/rank&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&想知道微信公众号最火的文章、公号是哪个?&br&由于微信的封闭生态,这类数据一致是个谜。&br&微果酱是一个微信数据监控平台,超过十万加的数据是预估的,不过按照我们的观察,数据非常接近真实水平。&br&据说创始人是腾讯QQ第一任产品经理...&br&&img src=&/v2-4c9d007e547dff34d87e_b.png& data-rawwidth=&1253& data-rawheight=&710& class=&origin_image zh-lightbox-thumb& width=&1253& data-original=&/v2-4c9d007e547dff34d87e_r.png&&&br&&br&&b&-icon&/b&&br&&a href=&///?target=http%3A//www.easyicon.net/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&easyicon.net/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&一个免费图标网站&br&做PPT、画原型图、写文档的时候可能需要用到好看的图标,但是自己又不是设计师,所以到这个网站一搜就可以得到质量非常高的icon,重点是个个尺寸都有、不满足的话还有相关推荐。&br&&img src=&/v2-d9c1e859d149ec60ba67903_b.png& data-rawwidth=&1219& data-rawheight=&671& class=&origin_image zh-lightbox-thumb& width=&1219& data-original=&/v2-d9c1e859d149ec60ba67903_r.png&&
这个问题是知乎关注度最高的问题,有30万关注,1500回答,详见这里:关注度最高的300个问题
感谢上面所有答主的贡献! 作为一个常年腾讯加班狗,一直在追求效率提升的工具,所以整理了在工作中真正有效提升效率的工具如下: (不断更…
&img src=&/v2-fb3df91bf3afd1a941ef_b.jpg& data-rawwidth=&1620& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1620& data-original=&/v2-fb3df91bf3afd1a941ef_r.jpg&&&p&今天分享几个我一直在用的几个工作和学习用到的工具网站。&/p&&b&1、坚果云&/b&&p&&a href=&/?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&坚果云 - 云盘|网盘|&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&img src=&/v2-bb9ac5c62db64abdcff14747_b.png& data-rawwidth=&1356& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&1356& data-original=&/v2-bb9ac5c62db64abdcff14747_r.png&&坚果云是专业的同步盘提供商,只需将你的个人文件放入坚果云文件夹,就可以便捷地访问自己的文件,并安全地保存它们。&/p&&p&坚果云提供随着用户使用时间增加而变大的存储空间,免费用户起始每月可上传1GB数据和下载3GB数据。坚果云也提供付费服务,包括面向个人的专业版,和面向企业的团队版与企业版。&br&&/p&&p&&b&2、YoMail &/b&&/p&&p&&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&YoMail邮箱客户端_收发最快速的邮箱客户端&i class=&icon-external&&&/i&&/a&&br&&/p&&img src=&/v2-6cf31b65fe781ded0eeee64f02d8d9d6_b.png& data-rawwidth=&1130& data-rawheight=&719& class=&origin_image zh-lightbox-thumb& width=&1130& data-original=&/v2-6cf31b65fe781ded0eeee64f02d8d9d6_r.png&&&p&YoMail 是一款 Windows 是下的电子邮件客户端。&/p&&p&YoMail邮件客户端是目前收发最快速的客户端,一键登录Gmail邮箱、Hotmail邮箱、Yahoo邮箱、QQ邮箱等主流服务,具备操作便捷、高速收发、实时桌面提醒、快速全文检索等。&br&&/p&&br&&p&&b&3、百度脑图&/b&&/p&&p&&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&百度脑图 - 便捷的思维工具&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&img src=&/v2-7e9aec057ceff71a7a07e0_b.jpg& data-rawwidth=&306& data-rawheight=&240& class=&content_image& width=&306&&(图片来自百度)&/p&&p&百度脑图客户端是一款功能强大的思维导图软件,由百度官方重磅打造。&br&&/p&&p&用户可以直接在线创建、保存、编辑、分享你的思路,依托百度强大的云存储功能,你的思路随身携带。百度脑图,最便捷的脑图编辑工具,你值得拥有哈哈!&br&&/p&&br&&p&&b&4、创客贴&/b&&/p&&p&&a href=&/?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&平面设计,简单,快速,轻松完成平面设计,2016最好的在线平面设计工具-创客贴&i class=&icon-external&&&/i&&/a&&br&&/p&&img src=&/v2-7b3e8bbb58c6d9af2d9cca_b.png& data-rawwidth=&1473& data-rawheight=&691& class=&origin_image zh-lightbox-thumb& width=&1473& data-original=&/v2-7b3e8bbb58c6d9af2d9cca_r.png&&&br&&p& 创客贴是一款基于线上Html5技术开发的云端在线设计工具,面向运营、市场、学生等非专业设计用户。&/p&&p&用户可使用平台提供的大量图片、字体和模板等素材,通过简单的拖拉拽操作,就可以轻松设计出精美的海报、PPT、公号文章首图等图片。&/p&&br&&p&&strong&5、Convertio—文件转换器&/strong&&/p&&img src=&/v2-159e0a80d449ea0e12caf87d95dc672e_b.png& data-rawwidth=&1456& data-rawheight=&751& class=&origin_image zh-lightbox-thumb& width=&1456& data-original=&/v2-159e0a80d449ea0e12caf87d95dc672e_r.png&&&br&&p&这是一款Convertio免费在线文件格式转换工具平台,各种格式转换,上万种都可以,不管是视频还是文件文本文档等,都可以在线转换,无需软件。&br&&/p&&p&ps:够转换包括 Office 文档、图片、视频、音频、压缩包、电子书、绘制文档在内的本地文件格式。&br&&/p&&p&最后欢迎关注我的专栏:&a href=&/c_& class=&internal&&小黑小知识分享专栏&/a&,&/p&&p&和新开通的公众号:&br&&/p&&br&&img src=&/v2-8b7599bbcd094b108d3bc639d69d4ba1_b.png& data-rawwidth=&300& data-rawheight=&300& class=&content_image& width=&300&&&p&来投稿的还可能有稿费哦~&/p&
今天分享几个我一直在用的几个工作和学习用到的工具网站。1、坚果云 坚果云是专业的同步盘提供商,只需将你的个人文件放入坚果云文件夹,就可以便捷地访问自己的文件,并安全地保存它们。坚果云提供随着用户使用时间增加而变大的存储空…
&p&推荐一篇来自阿里技术协会(ATA)的文章——《 Android性能与优化》:本文比较全面的描述了一般项目在Android开发中如何提高性能,如何着手调优项目,如果你目前正在优化你的Android项目,恭喜你,这正是你要的,也十分欢迎拍砖代。 &/p&&p&作者:&a href=&///?target=http%3A///m/16879/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&龚振杰&i class=&icon-external&&&/i&&/a&&/p&&h2&&b&I. 编码习惯&/b&&/h2&&p&&b&尽量避免分配内存(创建对象)&/b&&/p&&ul&&li&如果一个方法返回一个String,并且这个方法的返回值始终都是被用来append到一个StringBuffer上,就改为传入StringBuffer直接append上去,避免创建一个短生命周期的临时对象;&/li&&li&如果使用的字符串是截取自某一个字符串,就直接从那个字符串上面substring,不要拷贝一份,因为通过substring虽然创建了新的String对象,但是共享了里面的char数组中的char对象,减少了这块对象的创建;&/li&&li&尽量使用多个一维数组,其性能高于多维数组;int数组性能远大于Integer数组性能;&/li&&/ul&&p&&b&尽可能static方法&/b&&/p&&p&如果你确定不需要访问类成员,让方法static,这样调用时可以提升15%~20%的速度,因为不需要切换对象状态。&/p&&p&&b&尽可能使用常量而非变量&/b&*&/p&&p&如果某个参数是常量,别忘了使用static final,这样可以让Class首次初始化时,不需要调用&clinit&来创建static方法,而是在编译时就直接将常量替换代码中使用的位置。&/p&&p&&b&从性能层面出发,尽可能直接访问变量而非方法&/b&*&/p&&p&Android开发中,类内尽量避免通过get/set访问成员变量,虽然这在语言的开发中是一个好的习惯,但是Android虚拟机中,对方法的调用开销远大于对变量的直接访问。在没有JIT的情况下,直接的变量访问比调用方法快3倍,在JIT下,直接的变量访问更是比调用方法快7倍!&/p&&p&&b&对被内部类调用的方法/变量改为包可见&/b&&/p&&p&当内部类需要访问外部类的私有方法/变量时,考虑将这些外部类的私有方法/变量改用包可见的方式。首先在编写代码的时候,通过内部类访问外部类的私有方法/变量是合法的,但是在编译的时候为了满足这个会将需要被内部类访问的私有方法/变量封装一层包可见的方法,实现让内部类访问这些私有的方法/变量,根据前面我们有提到说方法的调用开销大于变量的调用,因此这样使得性能变差,所以我们在编码的时候可以考虑直接将需要被内部类调用的外部类私有方法/变量,改为包可见。&/p&&p&&b&少用float&/b&*&/p&&ul&&li&尽量少使用float。在很多现代设备中,double的性能与float的性能几乎没有差别,但是从大小上面double是float的两倍的大小。&/li&&li&尽量考虑使用整型而非浮点数,在较好的Android设备中,浮点数比整型慢一倍。&/li&&/ul&&p&&b&使用乘法代替除法&/b&&/p&&p&尽量不要使用除法操作,有很多处理器有乘法器,但是没有除法器,也就是说在这些设备中需要将除法分解为其他的计算方式速度会比较慢。&/p&&p&&b&使用内部实现,而非上层实现&/b&&/p&&p&尽量使用系统sdk中提供的方法,而非自己去实现。如String.indexOf()相关的API,Dalvik将会替换为内部方法;System.arraycopy()方法在Nexus One手机上,会比我们上层写的类似方法的执行速度快9倍。&/p&&p&&b&谨慎编写Native&/b&&/p&&blockquote&Android JVM相关知识,可参看: &a href=&///?target=http%3A////android_art_dalvik/%3Fspm%3D.blogcont73518.11.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ART、Dalvik&i class=&icon-external&&&/i&&/a& Android JNI、NDK相关知识,可参看: &a href=&///?target=http%3A////ndk/%3Fspm%3D.blogcont73518.12.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NDK&i class=&icon-external&&&/i&&/a&&/blockquote&&p&写native性能不一定更好,Native并不是用于使得性能更好,而是用于有些已经存在的库是使用native语言实现的,我们需要引入Android,这时才使用。&/p&&ul&&li&需要多出开销在维持Java-native的通信,Java调用JNI的耗时较Java调用Java肯定更慢,虽然随着JDK版本的升级,差距已经越来越小(JDK1.6版本是5倍Java调用Java方法的耗时&/li&&li&在native中创建的资源由于在native heap上面,因此需要主动的释放,但也因此对应用而言没有OOM的问题,并且不需要考虑GC时锁线程带来的掉帧,如Facebook的Fresco就是将图片缓存到Native Heap中&/li&&li&需要对不同的处理器架构进行支持,存在明显的兼容性问题需要解决&/li&&li&如果是Dalvik,将省去了由JIT编译期转为本地代码的这个步骤&/li&&/ul&&blockquote&一些重要的参数之类,也可以考虑放在Native层,保证安全性。参考: &a href=&///?target=http%3A////wh_android_tk/%3Fspm%3D.blogcont73518.13.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android应用程序通用自动脱壳方法研究&i class=&icon-external&&&/i&&/a&&/blockquote&&p&&b&权衡面向接口编程&/b&&/p&&p&在没有JIT的设备中,面向接口编程的模式(如Map map),相比直接访问对象类(如HashMap map),会慢6%,但是在存在JIT的设备中,两者的速度差不多。但是内存占用方面面向接口变成会消耗更多内存,因此如果你的面向接口编程不是十分的必要的情况下可以考虑不用。&/p&&p&&b&重复访问的变量,赋值为本地变量&/b&&/p&&p&在没有JIT的设备中,访问本地化变量相对与成员变量会快20%,但是在存在JIT的设备中,两者速度差不多。&/p&&p&&b&遍历优化&/b&&/p&&blockquote&尽量使用Iterable而不是通过长度判断来进行遍历。&/blockquote&&div class=&highlight&&&pre&&code class=&language-text&&// 这种性能是最差的,JIT也无法对其优化。
public void zero() {
int sum = 0;
for (int i = 0; i & mArray. ++i) {
sum += mArray[i].mS
// 相对zero()来说,这种写法会更快些,在存在JIT的情况下速度几乎和two()速度一样快。
public void one() {
int sum = 0;
// 1) 通过本地化变量,减少查询,在不存在JIT的手机下,优化较明显。
Foo[] localArray = mA
// 2) 获取队列长度,减少每次遍历访问变量的长度,有效优化。
int len = localArray.
for (int i = 0; i & ++i) {
sum += localArray[i].mS
// 在无JIT的设备中,是最快的遍历方式,在存在JIT的设备中,与one()差不多快。
public void two() {
int sum = 0;
for (Foo a : mArray) {
sum += a.mS
&/code&&/pre&&/div&&h2&&b&II. 数据库相关&/b&&/h2&&blockquote&建多索引的原则: 哪个字段可以最快的**减少查询**结果,就把该字段放在最前面&/blockquote&&p&&b&无法使用索引的情况&/b&&/p&&ul&&li&操作符BETWEEN、LIKE、OR&/li&&li&表达式&/li&&li&CASE WHEN&/li&&/ul&&p&&b&不推荐&/b&&/p&&ul&&li&不要设计出索引是其他索引的前缀(没有意义)&/li&&li&更新时拒绝直接全量更新,要更新哪列就put哪列的数据&/li&&li&如果最频繁的是更新与插入,别建很多索引 (原本表就很小就也没必要建)&/li&&li&拒绝用大字符串创建索引&/li&&li&避免建太多索引,查询时可能就不会选择最好的来执行&/li&&/ul&&p&&b&推荐&/b&&/p&&ul&&li&多使用整型索引,效率远高于字符串索引&/li&&li&搜索时使用SQL参数(&?&, parameter)代替字符串拼接(底层有特殊优化与缓存)&/li&&li&查询需要多少就limit多少(如判断是否含有啥,就limit 1就行了嘛)&/li&&li&如果出现很宽的列(如blob类型),考虑放在单独表中(在查询或者更新其他列数据时防止不必要的大数据i/o影响性能)&/li&&/ul&&h2&&b&III. 网络调优&/b&&/h2&&blockquote&更多网络优化,可移步&a href=&///?target=https%3A///mars/%3Fspm%3D.blogcont73518.14.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微信Mars与其策略&i class=&icon-external&&&/i&&/a& 当然无论是网速评估、心跳间隔、超时间隔,我认为这些在往常是基于特定环境下指定算法,然后结合自己的经验值给出的结果(如微信中的网速评估、超时间隔等),都能够借助AI整合原本的经验数据,给出一个更优数据的可能性(如某环境下超时间隔为5s为最优值的可能性为80%),来替代人的经验值。但是目前可预见的难点是在于如何去区分以及定义训练的数据,如:网速评估,其实是根据不同的环境(2G、3G、LTE、4G、千兆4G、5G、Wifi、之类的),之前微信其实有自己的一个评估策略,但是如果要接入AI,是因为网速这个评估的结果一直不是一个准确值,之前只是根据我们自己的经验给一个粗略的算法;可能这块要结合各类网络因素,参考RTT(这块的计算算法),输入的因素越多,对应我们能够确定的结果越少,应该训练出来的模型能够越有效,这样可以结合AI给出的”经验”,让网速评估更准确些。这也是目前我在探究的,所以才有了前几天写的&a href=&///?target=https%3A///tensorflow-sample/%3Fspm%3D.blogcont73518.15.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&敲开TensorFlow的大门&i class=&icon-external&&&/i&&/a&。&/blockquote&&p&&b&策略层面优化&/b&&/p&&p&&b&1. 通过If-Modified-Since与Last-Modified&/b&&/p&&ul&&li&第一次请求时,服务端在头部通过Last-Modified带下来最后一次修改的时间。&/li&&li&之后的请求,在请求头中通过If-Modified-Since带上之前服务端返回的Last-Modified的值&/li&&li&如果服务端判断最后一次修改的时间距离目前数据没有修改过,就直接返回304 NOT MODIFIED的状态码,此时客户端直接呈现之前的数据,由于不需要带下来重复的数据,减少用户流量的同时也提高了响应速度。&/li&&/ul&&p&&b&2. 通过Etag与If-None-Match&/b&&/p&&ul&&li&第一次请求时,服务端在头部通过Etag带下来请求数据的hash值&/li&&li&之后的请求,在请求头中通过If-None-Match带上之前服务端返回的Etag的值&/li&&li&如果服务端判断文件没有修改过,就直接返回304 NOT MODIFIED,此时客户端直接呈现之前的数据,由于不需要带下来重复的数据,减少用户流量的同时也提高了响应速度。&/li&&/ul&&p&如果你使用Okhttp3与Retrofit2,对于304 NOT MODIFIED的缓存便可以直接通过下面的代码直接创建一个2M缓存文件来户缓存这类数据。一旦是304 NOT MODIFIED, Retrofit2与Okhttp3将会伪装一个与之前一样的响应给上层,因此对上层是透明的。&/p&&div class=&highlight&&&pre&&code class=&language-text&&private final static int CACHE_SIZE_BYTES = 1024 * 1024 * 2;
public static Retrofit getAdapter(Context context, String baseUrl) {
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.cache(
new Cache(context.getCacheDir(), CACHE_SIZE_BYTES));
Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
retrofitBuilder.baseUrl(baseUrl).client(client);
return retrofitBuilder.build();
&/code&&/pre&&/div&&p&&b&数据结构层面&/b&&/p&&ul&&li&如果是需要全量数据的,考虑使用&a href=&///?target=https%3A///protocol-buffers/%3Fspm%3D.blogcont73518.16.BVpEtL%26hl%3Dzh-cn& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Protobuffers&i class=&icon-external&&&/i&&/a& (序列化反序列化性能高于json),并且考虑使用&a href=&///?target=https%3A///platform/external/protobuf/%2B/master/java/README.txt%3Fspm%3D.blogcont73518.17.BVpEtL%26file%3DREADME.txt& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&nano protocol buffer&i class=&icon-external&&&/i&&/a&。&/li&&li&如果传输回来的数据不需要全量读取,考虑使用&a href=&///?target=https%3A///google/flatbuffers%3Fspm%3D.blogcont73518.18.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flatbuffers&i class=&icon-external&&&/i&&/a& (序列化反序列化几乎不耗时,耗时是在读取对象时(就这一部分如果需要优化,可以参看&a href=&///?target=http%3A////Flatbuffer-Use-Optimize/%3Fspm%3D.blogcont73518.19.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flatbuffer Use Optimize&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&其他层面优化&/b&&/p&&ul&&li&通过自实现DNS(如实现自己的HTTPDNS(用Okhttp3实现尤为简单,因为Okhttp3支持定制DNS)),来降低没必要的DNS更新(由于DNS常见策略是与文件大小以及TTL相关,如果我们分文件以及分域名协商TTL有效期,可能case by case有效这块的刷新率),甚至防止DNS劫持&/li&&li&图片、JS、CSS等静态资源,采用CDN(当然如果是使用7牛之类的服务就已经给你搭建布置好了)&/li&&li&全局图片处理采用漏斗模型全局管控,所请求的图片大小最好依照业务大小提供/最大不超过屏幕分辨率需要,如果请求原图,也不要超过GL10.GL_MAX_TEXTURE_SIZE&/li&&li&全局缩略图直接采用webp,在尽可能不损失图片质量的前提下,图片大小与png比缩小30% ~ 70%&/li&&li&如果列表里的缩略图服务器处理好的小图,考虑到减少下载时的RTT,可以考虑直接在列表数据请求中,直接以base64在列表数据中直接带上图片(但是需要注意的是通常base64后的图片大小会大于原图片大小,适当权衡)(国内还比较少,海外有些这种做法,好像web端比较常见)&/li&&li&轮询或者socket心跳采用系统AlarmManager提供的闹钟服务来做,保证在系统休眠的时候cpu可以得到休眠,在需要唤醒时可以唤醒(持有cpu唤醒锁),这块考虑到省点等问题可以参考&a href=&///?target=https%3A////android_scheduler_and_battery/%3Fspm%3D.blogcont73518.20.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这篇文章&i class=&icon-external&&&/i&&/a&&/li&&li&在一些异步的任务时,可以考虑合并请求&/li&&/ul&&h2&&b&IV. 多进程抉择&/b&&/h2&&blockquote&360 17个进程: &a href=&///?target=http%3A////360%25E6%E6%259C%25BA%25E5%258D%25AB%25E5%25A3%25AB-Android%25E5%25BC%%258F%2591-InfoQ%25E8%25A7%%25A2%%2580%25BB%25E7%25BB%2593/%3Fspm%3D.blogcont73518.21.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&360手机卫士 Android开发 InfoQ视频 总结&i class=&icon-external&&&/i&&/a& ,但是考虑到多进程的消耗,我们更需要关注多个组件复用同一进程。 在没有做任何操作的空进程而言,其大约需要额外暂用1.4MB的内存。&/blockquote&&ul&&li&充分独立,解耦部分&/li&&li&大内存(如临时展示大量图片的Activity)、无法解决的crash、内存泄漏等问题,考虑通过独立进程解决&/li&&li&独立于UI进程,需要在后台长期存活的服务(参看&a href=&///?target=http%3A////android_thread_process_components/%3Fspm%3D.blogcont73518.22.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android中线程、进程与组件的关系&i class=&icon-external&&&/i&&/a&)&/li&&li&非己方第三方库(无法保证稳定、性能等问题,并且独立组件),可考虑独立进程&/li&&/ul&&blockquote&最后,多进程存在的两个问题: 1. 由于进程间通讯或者首次调起进程的消耗等,带来的cpu、i/o等的资源竞争。2. 也许对于部分同事来说,会还有可读性问题吧,毕竟多了层IPC绕了点。&/blockquote&&h2&&b&V. UI层面&/b&&/h2&&blockquote&相关深入优化,可参看&a href=&///?target=http%3A////android-view/%3Fspm%3D.blogcont73518.23.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android绘制布局相关&i class=&icon-external&&&/i&&/a& 对于卡顿相关排查推荐参看: &a href=&///?target=http%3A///3784.html%3Fspm%3D.blogcont73518.24.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android性能优化案例研究(上)&i class=&icon-external&&&/i&&/a&与&a href=&///?target=http%3A///4065.html%3Fspm%3D.blogcont73518.25.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android性能优化案例研究(下)&i class=&icon-external&&&/i&&/a&&/blockquote&&ul&&li&可以考虑使用&a href=&///?target=https%3A////constraint-layout/%3Fspm%3D.blogcont73518.26.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ConstraintLayout&i class=&icon-external&&&/i&&/a&,有效减少了布局的层级,提高了性能&/li&&li&减少不必要的不透明背景相互覆盖,减少重绘,因为GPU不得不一遍又一遍的画这些图层&/li&&li&保证UI线程一次完整的绘制(measure、layout、draw)不超过16ms(60Hz),否则就会出现掉帧,卡顿的现象&/li&&li&在UI线程中频繁的调度中,尽量少的对象创建,减少gc等。&/li&&li&分步加载(减少任务颗粒)、预加载、异步加载(区别出耗时任务,采用异步加载)&/li&&/ul&&h2&&b&VI. 内存&/b&&/h2&&blockquote&根据设备可用内存的不同,每个设备给应用限定的Heap大小是有限的,当达到对应限定值还申请空间时,就会收到OutOfMemoryError的异常。&/blockquote&&p&&b&1. 内存管理&/b&&/p&&blockquote&Android根据不同的进程优先级,对不同进程进行回收来满足内存的供求,可以参照这篇文章: &a href=&///?target=http%3A////android_thread_process_components/%3Fspm%3D.blogcont73518.27.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android中线程、进程与组件的关系&i class=&icon-external&&&/i&&/a&。 在后台进程的LRU队列中,除了LRU为主要的规则以外,系统也会根据杀死一个后台进程所获得的内存是否更多作为一定的参考依据,因此后台进程为了保活,尽量少的内存,尽可能的释放内存也是十分必要的。&/blockquote&&ul&&li&尽可能的缩短Service的存活周期(可以考虑直接使用执行完任务直接关闭自己的IntentService),也就是说在Service没有任何任务的时候,尽可能的将其关闭,以减少系统资源的浪费。&/li&&li&可以通过系统服务ActivityManager中的getMemoryClass()获知当前设备允许每个应用大概可以有多少兆的内存使用(如果在AndroidManifest设置了largeHeap=true,使用getLargeMemoryClass()获知),并且让应用中的内存始终低于这个值,避免OOM。&/li&&li&相对于静态常量而言,通常Enum枚举需要大于两倍的内存空间来存储相同的数据。&/li&&li&Java中的每个class(或者匿名类)大约占用500字节。&/li&&li&每个对象实例大约开销12~16字节的内存。&/li&&/ul&&p&&b&onTrimMemory()回调处理&/b&&/p&&blockquote&监听onTrimMemory()的回调,根据不同的内存等级,做相应的释放以此让系统资源更好的利用,以及自己的进程可以更好的保活。&/blockquote&&p&&b&当应用还在前台&/b&&/p&&ul&&li&TRIM_MEMORY_RUNNING_MODERATE: 当前应用还在运行不会被杀,但是设备可运行的内存较低,系统正在从后台进程的LRU列表中杀死进程其他进程。&/li&&li&TRIM_MEMORY_RUNNING_LOW: 当前应用还在运行不会被杀,但是设备可运行内存很低了,会直接影响当前应用的性能,当前应用也需要考虑释放一些无用资源。&/li&&li&TRIM_MEMORY_RUNNING_CRITICAL: 当前应用还在运行中,但是系统已经杀死了后台进程LRU队列中绝大多数的进程了,当前应用需要考虑释放所有不重要的资源,否则很可能系统就会开始清理服务进程,可见进程等。也就说,如果内存依然不足以支撑,当前应用的服务也很有可能会被清理掉。&/li&&/ul&&p&&b&TRIM_MEMORY_UI_HIDDEN&/b&&/p&&p&当回调回来的时候,说明应用的UI对用户不可见的,此时释放UI使用的一些资源。这个不同于onStop(),onStop()的回调,有可能仅仅是当前应用中进入了另外一个Activity。&/p&&p&&b&当应用处于后台&/b&&/p&&ul&&li&TRIM_MEMORY_BACKGROUND: 系统已经处于低可用内存的情况,并且当前进程处于后台进程LRU队列队头附近,因此还是比较安全的,但是系统可能已经开始从LRU队列中清理进程了,此时当前应用需要释放部分资源,以保证尽量的保活。&/li&&li&TRIM_MEMORY_MODERATE: 系统处于低可用内存的情况,并且当前进程处于后台进程LRU队列中间的位置,如果内存进一步紧缺,当前进程就有可能被清理掉,需要进一步释放资源。&/li&&li&TRIM_MEMORY_COMPLETE: 系统处于低可用内存的情况,并且当前进程处于后天进程LRU队列队首的位置,如果内存进一步紧缺,下一个清理的就是当前进程,需要释放尽可能的资源来保活当前进程。在API14之前,onLowMemory()就相当于这个级别的回调。&/li&&/ul&&p&&b&2. 避免内存泄漏相关&/b&&/p&&ul&&li&无法解决的泄漏(如系统底层引起的)移至独立进程(如2.x机器存在webview的内存泄漏)&/li&&li&大图片资源/全屏图片资源,要不放在assets下,要不放在nodpi下,要不都带,否则缩放会带来额外耗时与内存问题&/li&&li&4.x在AndroidManifest中配置largeHeap=true,一般dvm heep最大值可增大50%以上。但是没有特殊明确的需要,尽可能的避免这样设置,因为这样一来很可能隐藏了消耗了完全没有必要的内存的问题。&/li&&li&在Activity#onDestory以后,遍历所有View,干掉所有View可能的引用(通常泄漏一个Activity,连带泄漏其上的View,然后就泄漏了大于全屏图片的内存)。&/li&&li&万金油: 静态化内部类,使用WeakReference引用外部类,防止内部类长期存在,泄漏了外部类的问题。&/li&&/ul&&p&&b&3. 图片&/b&&/p&&blockquote&Android 2.3.x或更低版本的设备,是将所有的Bitmap对象存储在native heap,因此我们很难通过工具去检测其内存大小,在Android 3.0或更高版本的设备,已经调整为存储到了每个应用自身的Dalvik heap中了。&/blockquote&&ul&&li&全局统一BitmapFactory#decode出口,捕获此处decode oom,控制长宽(小于屏幕分辨率大小 )&/li&&li&如果采用RGB_8888 oom了,尝试RGB_565(相比内存小一半以上(w*h*2(bytes)))&/li&&li&如果还考虑2.x机器的话,设置BitmapFactory#options的InNativeAlloc参数为true,此时decode的内存不会上报到dvm中,便不会oom。&/li&&li&建议采用&a href=&///?target=https%3A///lingochamp/QiniuImageLoader%3Fspm%3D.blogcont73518.28.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&lingochamp/QiniuImageLoader&i class=&icon-external&&&/i&&/a&的方式,所有图片的操作都放到云端处理,本地默认使用Webp,并且获取的每个位置的图片,尽量通过精确的大小按需获取,避免内存没必要的消耗。&/li&&/ul&&h2&&b&VII. 线程&/b&&/h2&&ul&&li&采用全局线程池管理体系,有效避免野线程。可参照 &a href=&///?target=https%3A///Jacksgong/ThreadDebugger/blob/master/demo/src/main/java/cn/dreamtobe/threaddebugger/demo/DemoThreadPoolCentral.java%3Fspm%3D.blogcont73518.29.BVpEtL%26file%3DDemoThreadPoolCentral.java& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThreadDebugger-demo/DemoThreadPoolCentral.java&i class=&icon-external&&&/i&&/a&&/li&&li&结合全局线程池管理体系,使用&a href=&///?target=https%3A///Jacksgong/ThreadDebugger%3Fspm%3D.blogcont73518.30.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThreadDebugger&i class=&icon-external&&&/i&&/a&监控线程,避免线程泄漏的存在。&/li&&/ul&&h2&&b&VIII. 编译与发布&/b&&/h2&&blockquote&关于开发流程优化,可以参考&a href=&///?target=https%3A///large-project-develop/%3Fspm%3D.blogcont73518.31.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这里&i class=&icon-external&&&/i&&/a&&/blockquote&&ul&&li&考虑采用DexGuard,或ProGuard结合相关资源混淆来提高安全与包大小,参考: &a href=&///?target=http%3A////guard_multi_dex/%3Fspm%3D.blogcont73518.32.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DexGuard、Proguard、Multi-dex&i class=&icon-external&&&/i&&/a&&/li&&li&结合Gradle、Gitlab-CI 与Slack(Incoming WebHooks),快速实现,打相关git上打相关Tag,自动编相关包通知Slack。&/li&&li&结合Gitlab-CI与Slack(Incoming WebHooks),快速实现,所有的push,Slack快速获知。&/li&&li&结合Gradle中Android提供的productFlavors参数,定义不同的variations,快速批量打渠道包&/li&&li&迭代过程中,包定期做多纬度扫描,如包大小、字节码大小变化、红线扫描、资源变化扫描、相同测试用例耗电量内存等等,更多的可以参考 &a href=&///?target=http%3A////360%25E6%E6%259C%25BA%25E5%258D%25AB%25E5%25A3%25AB-Android%25E5%25BC%%258F%2591-InfoQ%25E8%25A7%%25A2%%2580%25BB%25E7%25BB%2593/%3Fspm%3D.blogcont73518.33.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&360手机卫士 Android开发 InfoQ视频 总结&i class=&icon-external&&&/i&&/a&&/li&&li&迭代过程中,对关键Activity以及Application对打开的耗时进行统计,观察其变化,避免因为迭代导致某些页面非预期的打开变慢。&/li&&/ul&&h2&&b&IX. 工具&/b&&/h2&&blockquote&这块的拓展阅读,可以直接参考&a href=&///?target=https%3A///android-toolset/%3Fspm%3D.blogcont73518.34.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android开发周边&i class=&icon-external&&&/i&&/a&&/blockquote&&ul&&li&&a href=&///?target=https%3A///studio/profile/traceview.html%3Fspm%3D.blogcont73518.35.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TraceView&i class=&icon-external&&&/i&&/a&可以有效的更重一段时间内哪个方法最耗时,但是需要注意的是目前TraceView在录制过中,会关闭JIT,因此也许有些JIT的优化在TraceView过程被忽略了。&/li&&li&&a href=&///?target=https%3A///studio/profile/systrace.html%3Fspm%3D.blogcont73518.36.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Systrace&i class=&icon-external&&&/i&&/a&可以有效的分析掉帧的原因。&/li&&li&&a href=&///?target=https%3A///studio/profile/optimize-ui.html%3Fspm%3D.blogcont73518.37.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HierarchyViewer&i class=&icon-external&&&/i&&/a&可以有效的分析View层级以及布局每个节点measure、layout、draw的耗时。&/li&&/ul&&h2&&b&X. 其他&/b&&/h2&&ul&&li&懒预加载,如简单的ListView、RecyclerView等滑动列表控件,停留在当前页面的时候,可以考虑直接预加载下个页面所需图片&/li&&li&智能预加载,通过权重等方式结合业务层面,分析出哪些更有可能被用户浏览使用,然后再在某个可能的时刻进行预加载。如,进入朋友圈之前通过用户行为,智能预加载部分原图。&/li&&li&做好有损体验的准备,在一些无法避免的问题面前做好有损体验(如,非UI进程crash,可以自己解决就不要让用户感知,或者UI进程crash了,做好场景恢复)&/li&&li&做好各项有效监控:crash(注意还有JNI的)、anr(定期扫描文件)、掉帧(绘制监控、activity生命周期监控等)、异常状态监控(本地Log根据需要不同级别打Log并选择性上报监控)等&/li&&li&文件存储推荐放在/sdcard/Android/data/[package name]/里(在应用卸载时,会随即删除)(Context#getExternalFilesDir()),而非/sdcard/根目录建文件夹(节操问题)&/li&&li&通过gradle的shrinkResources与minifyEnabled参数可以简单快速的在编包的时候自动删除无用资源&/li&&li&由于resources.arsc在api8以后,aapt中默认采用UTF-8编码,导致资源中大都是中文的resources.arsc相比采用UTF-16编码更大,此时,可以考虑aapt中指定使用UTF-16&/li&&li&谷歌建议,大于10M的大型应用考虑安装到SD卡上: &a href=&///?target=http%3A///intl/zh-cn/guide/topics/data/install-location.html%3Fspm%3D.blogcont73518.38.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&App Install Location&i class=&icon-external&&&/i&&/a&&/li&&li&当然运维也是一方面: &a href=&///?target=http%3A///intl/zh-cn/distribute/essentials/optimizing-your-app.html%3Fspm%3D.blogcont73518.39.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Optimize Your App&i class=&icon-external&&&/i&&/a&&/li&&li&在已知并且不需要栈数据的情况下,就没有必要需要使用异常,或创建Throwable生成栈快照是一项耗时的工作。&/li&&li&需要十分明确发布环境以及测试环境,明确仅仅为了方便测试的代码以及工具在发布环境不会被带上。&/li&&li&国内环境的长连接抉择: 根据各厂商设备在日活的排行,优先适配,而后再结合后台的工作量,评估是否自己做,客户端做主要就考虑电量以及可靠性权衡。如果要接第三方的,一定要了解清楚,国内现在第三方的,依然不太有节操(甚至有些会把你加入某套餐,就是会各种唤起其他应用),如果要自己实现可以看看本文有提到的&a href=&///?target=https%3A////android_scheduler_and_battery/%3Fspm%3D.blogcont73518.40.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&这篇文章&i class=&icon-external&&&/i&&/a&&/li&&li&控制合理加载资源的时间区间: 如由于图片的加载通常都与页面的生命周期有关系,在Android中可以考虑当从页面A进入页面B时,暂停所有页面A的图片加载,退出页面B时,终止所有页面B相关的图片加载,回到页面A时恢复页面A的所有图片加载(这些操作使用Picasso十分快速的实现,因此Picasso支持不同TAG的图片加载暂停、恢复、取消)&/li&&li&代码质量: &a href=&///?target=http%3A//phabricator.org/%3Fspm%3D.blogcont73518.41.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phabricator 的arc diff&i class=&icon-external&&&/i&&/a& (尽量小颗粒度的arc diff 与update review),其实也可以看看Google是如何做的: &a href=&///?target=http%3A////%255B%25E7%25AC%%25AE%25B0%255D%25E8%25B0%25B7%25E6%25AD%258C%25E6%2598%25AF%25E5%25A6%%25BD%%E4%25BB%25A3%25E7%25A0%%25AE%25A1%25E6%259F%25A5%25E7%259A%2584/%3Fspm%3D.blogcont73518.42.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&笔记-谷歌是如何做代码审查的&i class=&icon-external&&&/i&&/a&,还有一点的TODO要写好deadline与master&/li&&li&编包管理: &a href=&///?target=https%3A///gitlab-ci/%3Fspm%3D.blogcont73518.43.BVpEtL& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gitlab CI&i class=&icon-external&&&/i&&/a& (结合Gitlab,功能够用,方便)&/li&&/ul&&p&&b&关注:&a href=&/yunqichengxuyuan& class=&internal&&我是程序员 - 知乎专栏&/a& 获取更多技术干货&/b&&/p&
推荐一篇来自阿里技术协会(ATA)的文章——《 Android性能与优化》:本文比较全面的描述了一般项目在Android开发中如何提高性能,如何着手调优项目,如果你目前正在优化你的Android项目,恭喜你,这正是你要的,也十分欢迎拍砖代。 作者:I. 编码习惯…
&img src=&/v2-7da94b0cabe_b.jpg& data-rawwidth=&1620& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1620& data-original=&/v2-7da94b0cabe_r.jpg&&&b&1、斧子演示&/b&&img src=&/v2-807c75f14bcc8acca4e1be_b.png& data-rawwidth=&1079& data-rawheight=&461& class=&origin_image zh-lightbox-thumb& width=&1079& data-original=&/v2-807c75f14bcc8acca4e1be_r.png&&&br&&p&斧子演示一款简单有趣的演示文稿制作软件 免费下载 以最富动感的方式打动你的观众 图片、视频、文字,让逻辑在画布上流动延伸,让观点在画布上生动演绎 操作简单。&/p&&br&&p&&b&2、 Everything &/b&&/p&&p&&img src=&/v2-30cdf1e149d56da77ee2d8b_b.png& data-rawwidth=&313& data-rawheight=&240& class=&content_image& width=&313&&&br& Everything 是一个运行于Windows系统,基于文件、文件夹名称的快速搜索引擎。 &br&&/p&&p&百G盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。&br&&/p&&p&&b&3、Smallpdf &/b&&/p&&img src=&/v2-a5ade605fea49a4ccf51efd_b.png& data-rawwidth=&1254& data-rawheight=&521& class=&origin_image zh-lightbox-thumb& width=&1254& data-original=&/v2-a5ade605fea49a4ccf51efd_r.png&&&br&&p&轻松转换和编辑所有PDF文件的平台。一个网站就能解决您所有的PDF问题 –是的,免费! 轻松玩转PDF。 压缩PDF PPT转PDF PDF转PPT JPG转PDF等等,看上面截图吧,&br&&/p&&p&今天好累,随手分享几个,晚安啦~&/p&&p&欢迎关注:&a href=&/c_& class=&internal&&每天学习一点知识 - 知乎专栏&/a&&/p&
1、斧子演示 斧子演示一款简单有趣的演示文稿制作软件 免费下载 以最富动感的方式打动你的观众 图片、视频、文字,让逻辑在画布上流动延伸,让观点在画布上生动演绎 操作简单。 2、 Everything
Everything 是一个运行于Windows系统,基于文件、文件夹名称的快…
已有帐号?
无法登录?
社交帐号登录
1399 人关注
384 条内容
3648 人关注
2966 条内容
3125 人关注
126 条内容

我要回帖

更多关于 充电宝哪个品牌质量好 的文章

 

随机推荐