研究生的第一个假期作业终于在今天结束了。寒假作业评比一共三轮，一共7个组，我们拿到了第一名，小组奖金900元虽然金额不大，也算是没有辜负我们组所有人这么长时间花费的努力。所以，简单记录一下这个寒假的工作吧~接收到任务1月10号学校放假，那时候新型冠状病毒还并不是一个新闻。我以为这又是一个枯燥的寒假。本来我们的寒假期间是1月10号~2月5号（正月十二）所以虽然我们腊月都感到截止日期的逐渐逼近，但我们还都是心照不宣的不讨论寒假作业这件事情。到了正月初四，组长终于开始意识到“问题很大”。于是组长贴心的下午两点叫我们起床，开工。那个时候虽然只是听说疫情挺严重，学校的通知也只是正月15之前禁止到校，但谁也不知道疫情竟然已经如此严重了，延迟开学居然延迟3月份还未能开学。[album type="photos"][/album]1月28号，正月初四，如果按照既定的时间截止的话，时间已经很紧急了，但是我丝毫没有开始写代码的欲望，甚至还有一种莫名的自信。但是组长的任务安排也都是有更近的截止时间，所以每天下午3点左右简直就是灵魂拷问时间啊2月4号之后，公司那边要求2月7号提供项目目前的进度报告：所以我们必须在2月6号左右就得完成一个大概的初始版本。也就是至少客户端可以直播对话。需要认真起来了然后这个时候，我对整个项目的流程都不是很清楚，拉流推流啥意思。recorder、grabber是啥。player、client、capture关系又是什么，我真的不太清楚。关于我们这次视频会议，公司之前在直播这方面有所研究，一直开发维护theia项目，这个项目的功能就是主播直播，观众观看、发弹幕、连线之类的。不管怎样，到了2月7号晚上我们基本有一个可以用的版本了。界面啥的基本都是沿用theia项目，我们为了简化流程，客户端拉流的只拉了一个多个用户的混合流。就这样有一周暂时没怎么写寒假作业，2月15号我觉得学一下javafx，重新写一下客户端这边界面，现在的界面颇有一股复古的气息。界面重构以及流程梳理本科的时候用netbeans写过java的桌面端程序，netbeans是可以直接拖控件就创建好界面的。现在使用Scala+javafx，于是学习了screnbuilder的用法还有jxml的用法，以及在网上找到了一个Scala+javafx的helloworld demo。到了19号我基本把界面重构出来，也把整个客户端的流程重新设计了一下，整个client模块我基本是重新写了一遍。到了2月25号的时候，对照寒假作业的要求，发现我们还有一些功能没有完成：这几个功能让整个会议的功能变得复杂了很多。除此之外，之前client只拉一个混合后的流的做法虽然简单，但是问题是显而易见的，延迟太高，5、6s左右，而且用户自身的画面和声音在混合流中，都有延迟，就很奇怪。所以，最后我们还是决定客户端拉多个用户的流，这样问题是增加了客户端这边的内存开销，但是效果是延迟更低，会议效果会更好。不仅如此，在最后的几天根据发言人、支持人身份对客户端的画布进行动态分配。写代码是一回事，等真正一起联调测试的时候，bug就是一个个的浮现水面了。准备最后的评选2月28号，我们开始了第一次测试，当时由于我开了全局代理，导致 new Image(url) 这个地方无法对图片进行加载，以至于我一打开会议界面就卡死了。所以第一次测试只有我们组的另外两个人。当时测试问题还比较少。到了29号晚上3个人测试，问题就变得特别多，不仅客户端这边，后台那边对ws消息的处理也有一些问题。3月1号下午我们又开始了测试，这才基本没什么影响使用的大功能了。3月2号开始了第一轮评比，7进3，我们录制一个4~5分钟视频发到视频网站上，然后研二的学长学姐们评比3月4号上午开始第二轮，3进2，同样是录制一个1~2分钟的视频发到视频网站上，然后参赛其他组评比3月4号下午开始进行第三轮，2进1，是参赛其他组直接观看web端的录像（混流后的）进行评比。由于我们客户端界面好看，第二轮我们录制的视频还特意做了一个小剧本，配上朱一旦的「完美搭档」的bgm，第三轮我们web查看的录像的混流效果很好，延迟较低，而且音画基本同步。所以最后，我们拿到了第一名。从一开始我们感觉好像来不及，到最后我们每个人都是朝着第三轮的目标开始完善自己的部分。也算是没有辜负我们的努力吧~最后的完成的界面：同时还有web端可以查看和管理录像。相关技术和工具：scalajavafxsrs 流服务器ffmepeg项目地址：https://github.com/HiddenTrackMJ/geek有兴趣欢迎star,fork~
当我从Linux转换开始使用macOS的时候，我发现macOS的终端很丑，它长这样：于是我找到这样一篇文章：Mac OS 终端 iTerm2 并配置 zsh。所以什么是终端，什么是zsh。终端很久很久以前，终端这个概念是这样的：是一种硬件，是一种输入输出设备，用于和计算机交换信息。终端的工作：用户通过终端输入命令，终端将命令传入计算机，执行后，并把结果输入到终端上显示。从这个概念不难可以看到电传打印机符合这个概念：但是现在计算机硬件一体化程度越来越高，硬件质量也越来越强，输入输出设备完全没必要单独用一个硬件和计算机进行交换信息了，取而代之使用软件终端和计算机进行交互信息。这就是终端模拟器 (Terminal Emulator)，也就是我们现在所讨论的终端。除了它不是硬件，它符合终端的概念和工作流程。举个例子，下面这些软件都是终端：1GNU/Linux：gnome-terminal、Konsole；macOS：Terminal.app、iTerm2；Windows：Win32 控制台、ConEmu 等。shell我之前很迷惑一个问题是，有终端就够了嘛，输入命令，执行并把结果输出，要shell干什么。更让人抓狂的shell还有很多种类，bash,cshell,zsh。这些到底是做什么的？所以需要明确下终端负责的工作。终端的工作范围：接收用户的输入，显示传过来的输出。（此外还提供一些优化用户体验的功能，比如支持文字复制粘贴、软件背景颜色的调整等）终端的工作其实是很少的哦，简单来说3点：GUI软件界面、接收输入、显示输出。而shell的核心工作就是操控计算机内核（如新建文件等等），即访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件 ---- 此类文件经常被称作工具)、或包含一定内容的文件(文本文件)2shell分为：图形化 shell（图形化的桌面环境），如Windows Explorer （文件管理器）、 Linux的桌面环境有：KDE、GNOME、CDE、 XFCE等。命令行 shell。如bash 、sh 、csh 、ksh我们一般讨论shell都是指命令行shell。shell为什么叫做命令解释器不管是GUI shell 还是命令行 Shell，其实都是在解释命令，只不过GUI shell隐藏解释命令细节，用户通过点击鼠标的操作操作内核命令。shell为什么叫做壳如上图，shell通过解析命令调用 系统调用和相关API操作内核命令，进而读写硬件完成任务。shell是最外的一层的接收用户操作，像一层壳一样裹在整个调用过程中。为什么有这么多命令行shellshell与shell脚本语言并不完全相同的概念。shell除了包括对命令的语法规范（shell语言）和对命令解析，还包括一些额外的功能（如命令补全、主题等等）。shell语言和我们学习的任何其他高级语言c,python,java没有太大区别。不同的shell语言可以看做java语言的不同版本。不同shell的区别主要是两方面：脚本语言语法有差异功能、外观、自定义美化上有差异脚本语言早期的sh甚至不支持给长命令设置别名的语法。3zsh虽然完全兼容bash的语法，但还有一些语法差异，具体可以看Zsh和Bash，究竟有何不同 坑很深自定义功能配置除非我们需要编写shell脚本，普通用户一般很难发现不同shell脚本语言差异。对文件操作ls、pwd等等这些常用命令所有shell都一样支持。所以我们普通用户更关注是细节、外观、功能上的差距。这一点zsh做的格外的优秀。比如色彩高亮、命令提示、智能补全、快速跳转等等附加功能。4我们在讨论配置终端的时候，实际上是在讨论配置shell。为什么zsh如此受欢迎？这个较新的shell与bash兼容，但包括更多的功能。 zsh shell提供内置的拼写校正，改进的命令行完成，充当shell插件的可加载模块，允许您在命令行上别名文件名或其他任何东西的全局别名，而不仅仅是命令，以及更多主题支持。 它像bash，但有很多附加功能，附加功能和可配置选项，你可能会喜欢，如果你在命令行上花费大量的时间。3总结： 终端就是软件，是最外层的，shell = shell脚本语言解析器+编辑、外观等额外功能不同shell的切换输入cat /etc/shells，可以查看本机上的所有shell：临时切换比如切换bash，直接输入bash，即可切换到bash环境下，输入exit，复原默认shell环境。默认切换5#使用系统自带的 zsh：输入密码成功切换，重启终端即可使用 zsh。 chsh -s /bin/zsh #使用第三方的 zsh，如从 brew 安装的 zsh。 sudo chsh -s /usr/local/bin/zsh 命令行界面 (CLI)、终端 (Terminal)、Shell、TTY，傻傻分不清楚？ ↩ Shell 是用来解决什么问题的？ - Bryan Yuan的回答 - 知乎 ↩ Bash，Zsh和其他Linux Shell之间有什么区别？ ↩ 为什么说 zsh 是 shell 中的极品？ - 韦易笑的回答 - 知乎 ↩ 终端中的 zsh 和 bash ↩
[scode type="red" size="simple"] （网络计算研究院2020年被合入了计算机学院）关于网研1组的名额的事情我是完全不清楚，抱歉[/scode]本来这篇文章是很早之前写的，写到一半写不下去。现在上岸了，我打算完结这篇文章。可能是写的心情不一样吧。知乎上初试学习方法帖子很多，我的初试成绩也不高，所以我只打算一些我曾经迷惑的问题。报考：北京邮电大学 网络技术研究院 计算机科学与技术 {人工智能、网络智能化、人机交互}研究方向笔记集合[post cid="916" size="small" /]初试总分： 342(101)思想政治理论：58(201)英语一：66(301)数学一：100(803)计算机学科基础综合：118我希望我的一些文字能让你更轻松的面对考研。当我回过头来看，我们作为大学四年的成年人，我们不应该再和高三一样，把考研当做人生的一道坎，或者当做一个特殊而重大的任务。我们应该把考研当做生命的一种经历，一个过程，一个体验。就像我之前说的，我觉得人生不应该是工作、放假、工作、放假这样的循环。不管是很累的工作、还是放松下来的假期，我们都应该坦然的去经历。去年这个时候我还待在家里，考研我一无所知，我不知道怎么报名，我当然还幻想可能可以保研，也不知道考研只能报一首学校，以及如果学习准备我也一无所知。所以我想说的是2020年考研的小伙伴完全来的及，先不必急。我当时只是心里有点着急，但实际上什么也没做。不知道考研是自己看书还是听视频。正式备考（7月份）之前，也随大流的一样的每天拿的数学训练册做几题玩一会手机，又或是看看课本，根本都不做题。到了8月份时候，我发现我之前看的高数，线代，概率论，我彻底彻底忘了，我看到一些概念，我甚至不知道什么意思。因为我没做题。我回答一下可能疑惑的一些问题，这也是我当年困惑的问题：考研累吗累，但是别无选择。我是7月份开始备考的，当时夏天天气最炎热的时候。一开始学习效率不高，第一个月还偶尔去看电影。不是很紧张。学习过程中看手机。但是我很快调整过来的，因为时间太紧了。我觉得可以从这几个方面缓解：首先，自己为什么考研？我自己考研首先我的专业课知识学的太不扎实，考研前，我的计网一塌糊涂，数据链路层我没理解这个链路到底什么意思？一条路吗？所以我没办法找工作。其次，我希望我在研究生中能学到更深层次的理论知识，如果一旦工作，基本很少有学习时间和自己的空闲时间的，我觉得我没办法很快接受这样的环境。其次，给自己复习订一个整体时间规划：我当时规划是这样，7-8月看完数学课本，7-9两个月看完4门专业课。10-12月每个月大概完成什么任务。每天也要有每天需要完成的计划，我一开始总是每天计划内容太多，导致完成不了，所以计划一定要合理。计划需要定期根据你的进度调整，这样你心里有数，你的进度到哪了。ps：也不至于网上说的不洗头，没必要，该整理自己还是要整理的干干净净的，头要洗，不然头发都没了每天学多长时间我每天早上9点醒，10点才开始起床学习。10-11：50 上午学习13：00 - 17：50 下午19：00 - 22：00 晚上这样一天也有10个小时了，到了10月份之后，晚上学到22：30左右。对于我来说，可以了。我早上起的很晚，大家可以根据自己作息安排，保证一天任务量能够完成即可。我也尝试过早起7点或者8点。试了几天，发现上午特别困，都快睡着了，根本学不进去，就索性放弃了。学习时候带手机吗不带。我一开始带。到了10月份之后就彻底不带，因为时间彻底不够了。有人说，查单词啊，要用手机……我觉得没必要，张剑的英语黄皮书，赠送了一个词汇本，遇到单词用这个查并标记好就行了，上面查不到的单词就没必要管。当然个人有不同安排，但是我建议不带。因为真的学习过程中很枯燥的，尤其是前期，不是太紧张的话很容易松懈。跨考计算机难度大吗我今天问了室友才知道三跨是什么意思。跨专业、跨省、跨学校。其实难度最大的应该是跨专业。跨专业的同学认为自己底子差，和计算机专业同学没办法竞争。老实说，本科学校交给我们的实在是太少太少，而且本科上课不积极，不认真。计算机网络、组成原理本科学的时候我也没有学明白，只是为了应付考试，做了一些题目，获得不错的分数。这些专业课知识都是我在考研期间才学的更仔细了一些。我是学渣，我摊牌了本科上课学的语言C / C++/ Java，其实都是学的很浅。C的语言我忘了差不多了，C++ 没仔细学，主要用的最多是java。语言你学了一门，你会发现语言是很有基础语法是差不多，所以跨考的同学熟练掌握一门语言我认为可以了，在这个基础上，再了解别的语言不会花费很多时间。(我个人认为java是门很容易基本使用的语言，因为很多方法都是jdk提供的，比如动态数组、list，当然c++也有，我更喜欢java)所以跨考学生不必要担心和别的同学能力差很多，计算机综合专业知识可以在初试学习阶段的时候弥补。开发语言知识可以在初试结束后弥补。什么时候开始正式复习有的人从大三开始准备，有的人今年3月份开始准备。我是暑假7月份正式开始的。说到底需要自己制定一个整体的时间计划。我再3月份时候也打算准备，但是周围根本没那个气氛，我也认识不到考研的严峻性和重要性，甚至对考研一无所知，所以这个时候准备是被动。如果再考研一次，我希望我能提前准备，不要后面慌慌张张的。把学习、准备这件事情当做生活的一件普通小事，细水长流。我知道说起来很简单，做起来真的很难。专业课怎么准备专业课 118，不高，但是我现在没弄明白为什么这么低。因为除了选择题有几道题常识性问题我不确定，大题数据结构我写的代码可能不是很完美，其他专业课的题目我都会，计算也验算了，不知道是不是算错了……考研前，我的专业课知识绝不比任何人好，虽然我的成绩单写的分数都是90、80分，但是那些都是考试前熬了几天夜，然后做了试卷得来的。对每门课里面有很多一知半解的问题。我的方法就是做笔记。一门课一门课的学，一章一章的学。比如计算机网络，每一章，我会把我搞不明白的问题都写下来，然后一个个一些搞懂，并写到纸上。这轮专业课复习不是面向试题的，只是纯粹的想学懂专业课知识。最后，我4门课，每门都有大概40页A4纸的笔记。我买的天勤系列，除了数据结构，其他的简直是垃圾。垃圾课本，误人子弟。计算机网络，买谢希仁第七版，讲的真的好！数据结构看天勤的差不多了，我还参考看了李春葆编的那本数据结构。计算机组成原理和操作系统用的就是大学的教材，这个应该都差不多。第二轮专业课复习，就是做题。我建议两轮可以交叉来。我第一轮完成后，开始做题发现好多知识又忘了……做题才是加深记忆的好方法，考研考的就是记忆，重复，做题。要不要看视频、报班？除了政治马原、毛中特的视频可以选徐涛的视频，或者“腿姐”（我听的是徐涛，马原里的资本理论讲的很容易理解），数学我觉得没什么必要看视频，自己多总结，别人就是告诉你题型以及解法。你遇到题目仍然不会做。要和别人组队学习吗？建议找一个小伙伴，每天吃饭时候一起去。没小伙伴，你每天吃饭可能很不规律，甚至时不时给自己放个假。我一开始自己一个人学，然后比如中午就有时候学的时间就会推后，导致下午学习就乱了。但是不一定要在一起学，可以是不同教室。我和我室友就是这样，吃饭点在楼底集合。复试北邮总成绩（满分100） = 初试成绩（总成绩500） /10 + 复试成绩（总成绩100） /2表头分别是，姓名、专业、研究方向编号、英语面试成绩（满分10分）、笔试成绩（满分30）、面试成绩（满分60）、复试总成绩（满分100）、初试总成绩（满分500）、考研总成绩（满分100）最终总成绩排名第6因为我是最后一名进的复试（一共11个人），当时真的很慌。机试今年网研院机试很简单，不能带纸质资料进考场了，以前(2018年及其以前)可以。（用大佬们的话说就是人均4A）47分钟ac了4题。OJ排行榜第八，但是我其实没有acm经历，只是靠的速度而已，嘿嘿嘿。第一题，输入四个数，输出最小的第二题给定年份范围，判断闰年个数第三题，链表操作，按值查找，删除，反序链表 这个我要吹爆Java的list，API好用到爆第四题，求图最小生成树，我一开始以为我做不出来，因为我没看这个代码，但是幸亏我看了思路，不是很难今年题目测试用例都很简单，没有特别奇怪的输入要考虑。本地通过样例，直接提交就过了。说下我觉得小技巧吧：提前大概30分钟进考场，随便选一台机器。可以选把编译器打开，每题第一行都是输入测试数据组数，先把这些代码写好。然后左右分屏，网页在左边，编译器在右边，边看边写很快。支持语言 c/c++(支持stl)/java 8。现在支持java 8 了，可以看下java 8 的新特性，有的还是很有帮助的。(我一开始以为只支持java 7，所以没看java 8 新特性)机试训练可以借下学长的VPN网关账号，去刷下北邮的往年机试题目。关于往年的机试题，可以看下这里 [post cid="916" size="small" /]笔试官网写的是占复试成绩30%，但是不及格不影响录取。但是会影响录取后的排名，最后的排名是按照初试成绩/10 + 复试成绩/2。第一年发奖学金是按照这个排名的(一等奖8000，覆盖70%，二等奖4000，覆盖30%)笔试全部是选择、判断题，主要考察对概念的认识理解，不是很深入。我掉的坑就是我之前看的2015年的计算机系统结构题目是计算题，我以为考的是流水线计算题，结果都是概念题，而我没好好准备！！笔试基本都是概念题，计算题好像是没有！关于笔试的笔记也可以参照这篇文章 [post cid="916" size="small" /]面试我没有项目怎么办我觉得项目不重要，而是看你的计算机能力怎么样，这个能力包括对新技能的学习能力、已掌握的计算机方面能力。比如，面试的人工智能专业，在初试后准备Python学习和相关算法学习，这个就可以写在简历上。如果时间来得及，可以自己做一个感兴趣，但是规模不大的项目，比如对自己家庭的人脸识别(这个其实调用现成库就可以，主要是对整个流程和算法思想有所了解)，也可以写在简历上。非跨考的，平时的课设一定有不错的，也可以写在简历上。项目不多，老师可能多问一些专业课知识，这方面就要多准备一些。北邮网研面试全纪录[post cid="922" size="small" /]北邮报考的一些问题北邮报考难吗知乎上都说，有的组难度甚至和985齐平，我觉得这么说不准确。和普通一点的985可能齐平，但是和计算机学科排名靠前的比如北航，还是要容易一些。大家可以参考今年北邮的组线和别的大学的院线（复试线）就可以知道情况了。我报考的组组线是342，我是最后一名进入复试的。别的组除了网研2组专硕350+，其他组的组线都不是很高。计算机学院的组线平均在340+左右。所以打算包括北邮的，应该将初试目标分数定在360+，这样进复试比较稳。当然进复试之后还得继续准备。（我们组就有370被刷掉了）计算机学院的组线还是比较稳定的，340+，但是其他学院比如网研、网安、软件有的组分数很低。我看到一个278上的网研4组专硕什么是报考到组这个问题我一开始愣是没明白，其实没这么复杂。报考的时候我们都要选择某个学院——某个专业——某个研究方向(组)只不过一般的学习是整个专业一起面试，所以一起复试的人很多。而且你被录取了，你以后的研究方向不一定是你报考的那个方向，只是作为一个参考。北邮复试，是按研究方向一起复试的。你填什么研究方向，录取的就是什么研究方向。所以进复试的人相对比较少。研究方向又叫做组。比如我报是 {人工智能、网络智能化、人机交互}，组号是1，组号就是研究方向编号。北邮还有一个名词是中心。就相当于院下面还有一个子院。这个子院负责几个专业的几个组。比如我们网络研究中心，负责计算机科学与技术（学硕）的1组(编号为1的研究方向)和计算机技术(专硕)的14组(编号为14的研究方向)以及信息与通信工程（专硕）的1组，和电子与通信工程（专硕）的1组。中心本身又分为几个工作组。被录取后会被分配到哪个工作组下面学习工作。总结：报考是报考到某学院下面的某中心的某组，复试名单以及面试按该组进行面试，录取后会被分配到该中心的某个工作组。要提前联系导师吗我中心是“导师组”制，一直是统一招生，统一管理的，和很多中心的“导师制“不同，具体是哪位导师的意义没有那么大。大家不需要事先联系导师这个是王老师原话，我其实没看懂……我出了初试成绩，家里人催着我给老师发邮件，联系。甚至要马上去上门拜访，被我理智制止了。其他中心似乎需要联系导师，有考试北邮学长说，如果可以考研前联系好，就可以直接去实验室工作了……这方面我不太了解调剂是怎么回事，怎么操作第一次调剂是出了复试名单之后，你没进复试，可以进行调剂。调剂最好先联系好导师。第二次调剂是复试被刷了，校内会有二次调剂机会。有一个学长写一个github就是关于北邮录取的，更多信息可以看这里：See_you_in_BUPT北邮歧视双非吗根据往届学长学姐们所说，北邮还是很公平的。我自己认为，很多双非的初试分数很高，但是复试还是被刷，原因有可能不是歧视双非，而是你除了考试的专业课知识之外知识掌握的不够。换句话说，大部分双非的考研期间可能很努力，分数很高，但在大学其他时间内努力不够，导致的专业素养不够。再换句话说，只要你有实力（包括考试成绩和其他专业技能），北邮考研还是相对公平的选专硕还是学硕？（此答案是北邮研一经历一学期之后写的）专硕和学硕在培养方案有一定区别，首先学硕可能在学校实验室这边搞科研，也可能在公司那边上班实习做项目之类的，专硕基本都会被分配到公司那边做项目。专硕毕业难度低，不需要发小论文，毕业要求低。学硕毕业必须发小论文，而且老师可能要求很高。很容易被怼，如果没有创新点的话。专硕研究生课程的要求也会低一点，比如数学类的课程只要求必选一门，总学分要求也低一点。专硕和学硕在社会的承认度这点我不能很确认，至少就我个人来说，两者应该差距不是很大。总的来说，专硕的要求低，而且从近几年来说，有些组录取分数和学硕很接近，有的组，专硕的分数还是很低的。两者都是3年制。致谢考研经历时间太长了。感谢考研期间一直一起吃饭的一起聊天、吐槽的室友@林国杰(他复试还没完成，祝愿他能上岸)感谢万静老师一直以来的关心和帮助，感谢所有学长学姐提供的经验，还有复试群里面提供的资料！也感谢我的父母在我考研期间没有给我过多的压力！最后考研过程中，一定会有不想学习的时候，一定有痛苦怀疑的时候，一定有焦躁不安的时候。经验帖子看的再多，也都是别人的故事，只有自己走过来了，才觉得这段时间自己没有辜负，自己除了知识方面，在思想方面也一定有所成长。即使最差的结果失败了，这段时间也一定不是白白浪费的。当经历过来再回过来来看，也不过是一次考试的准备而已。人生路上的选择、挫折、困难还很多。希望我的经历能对你有所帮助~如果有别的问题可以在评论区留言哈~如果我知道的，我会尽量回答的
!> 总结：QC 35 头戴式耳机个人不建议买，原因：头戴式，时间带长了，头发压得很难受。而且戴眼镜的话，降噪效果会差一点。QC20 降噪神器，十分推荐，买过这么多东西，便宜的，贵的。QC20 是我买的最值得的一件物品。（因为我特别讨厌噪声，特别讨厌）我个人是对噪声很敏感以及很讨厌的，所以自从入手了降噪耳机，可以说生活烦恼少了很多。Bose qc系列都是降噪耳机，因为很早以前入手的降噪神器qc20（入耳式），最近又入手了qc35II（头戴式），所以就我的体验写下此文，做下对比，给想要入手的小伙伴做一个参考。先上两款的实体图：（图来源见水印，我自己拍的不好看就不拍了 ::twemoji:sweat:: ）[album type="photos"][/album]降噪效果首先两款耳机都不是全频降噪的，不可能戴上后什么噪声都听不见的，对环境噪声的消除比较干净，对人声和机械键盘声有减弱的效果，但不能完全消除，对广播声音、大声说话声也是不能完全消除的qc20消除人声的效果要比qc35ii效果好，原因之一可能是qc20开启降噪后有白噪声的底噪（事实上，我个人觉得这个底噪并不会觉得烦躁，开启降噪后再听歌根本听不见底噪，而且这个底噪可以更好隔绝人声），QC35II戴上后，基本没有任何底噪，如果在安静的环境下，你会怀疑是不是开了降噪。佩戴舒适程度虽然说qc20的耳塞是鲨鱼鳍设计，而且购买时候会有大中小三款耳塞可以调换，但是我平时工作时候连续带3小时听歌的话，耳朵还是有点酸痛的（但是相比忍受噪声，这根本不算什么好嘛）。qc25II头戴式，戴起来还是很舒适的，连续带几个小时，耳朵有点压力，不过比qc20要好点。而且如果戴眼镜的用户，虽然戴起来没什么毛病，但是降噪效果会变弱（因为眼镜框会让耳套有缝隙）。续航方面qc20官方数据是连续降噪16小时，qc35II无线连接连续高降噪是20小时，我觉得qc20的续航真的很好，能用很长时间。qc35II还没有充电过价格方面京东自营还是比较贵，可以选择京东全球购，但是要确定是正品，我的qc20是1600多，qc35II是2050关于爆音qc20确实有爆音，在地铁上不会，在公交车比较颠簸的话会。因为我之前一直坐地铁才带降噪，公交时间比较短一般不戴，后来才发现这个问题。不过还能忍受吧。严重的话每隔10s大概会爆音一次。不颠簸应该没问题。其他方面如果单纯受不了噪音，而且是说话声，键盘声，强烈建议是qc20，降噪神器！！就算不能完全消除人声，你把耳塞塞的紧一点，效果都会好一点，而且戴眼镜也不会影响降噪效果。如果想买无线的，那只能选择qc35II了，事实上还有qc30（耳塞式），不过续航能力差点，而且设计俗称“狗圈”，百度下就能知道了，qc35第一代和第二代几乎没有差别，就是二代多了一个降噪等级开关（没卵用，我一直是高降噪都嫌不够用了，怎么可能开低降噪）
昨天上午11点在京东买了一款鼠标：小米（MI）小米便携鼠标 无线蓝牙4.0 男女生家用/笔记本电脑办公/鼠标 银色（￥99 没错！小米鼠标之前使用的一直是有接收器的无线鼠标，都是在天猫上面随便买的。不仅是充电的而且还很便宜。这次想买个可以连接蓝牙的，不需要接收器的鼠标，就选择了看上去颜值还可以的[小米鼠标]晚上大概5点多的时候，就到货了！拆开鼠标，大失所望：鼠标内置两节7号电池，很重！比起我之前用的充电鼠标不是重一点点！在mac OS上，滚轮滚动的时候真的想死的心都有了，没办法用，一卡一卡的，自带卡顿特效鼠标摇动的时候，有没有闭合严密的声音，很烦鼠标点击声音超大，也许以前的PC电脑用惯了静音鼠标，现在就很不习惯鼠标的咔咔点击声。再加上这样的价格，这样的使用体验，于是决心退货，改日再挑选一个合适的鼠标。这是我第一次退货，以前在当当网买了书，质量不好，都认了， 因为退货不是上宿舍取件，我还得自己跑个挺远的地方。这次不一样了，在家里，京东可以上门取件，直接退货！昨天晚上12点左右，发起的售后服务。今天中午13点左右，就已经退款完成了。期间，客服给我打了两个电话：提醒工作人员会上门收件，请准备好物品和发票提醒财务处已经发起了退款请求了，具体金额会在1-15个工作日来原路退回整个流程下来，非常的方便流畅。不知道是不是所有退货都这样，毕竟我是第一次网上退货。。。但是需要注意的两点是：包装尽量保持完整纸质发票不要丢失上门取件的快递小哥，只看了发票，没有查看物品里面详细物品。那么问题就来了，如果里面物品损坏了，或者元件缺少，京东那边该如何处理呢？京东自营商品给我做直接的体验就是京东物流，非常迅速。当初京东自建立自己的物流体系真的是眀策。逃~
本篇单纯为个人记录，仅以备用与参考，仅适用于vivo X5max+ 2015-02-25b版本 ，360 也木有任何广告费~ root手机对各位机友来说，应该是家常便饭，但对于vivo手机真的是！很麻烦！首先这款手机查遍了互联网，也找不到第三方rec,就根本没办法通过线刷[超级权限SU]来破解root，只能用360root，尽管流氓，还得破解了。但是root成功后，一旦重启，system仍然会被锁，就成为[不完全root]，只能看看wifi密码之类的，不能修改核心文件。所以，一切需要写入system的操作都得在没重启之前。之前一直用[Google相册],不得不说Google公司技术确实没话说，国产软件还没有与Google相册相平衡的。我喜欢的这个软件有几点：自动备份并且，不限量的免费上传空间额度（高清画质）自动整理与归纳相册内容但是！更新后，一进入，一会儿就自动退出，连相片都没办法备份了（在挂V P N前提下）。Google 三件套之前一直没有刷到系统内置应用，所以想通过root，直接把Google三件套刷到系统中去，提高应用的稳定性。前期工作备份手机的信息（联系人，信息，重要相册之类）恢复出厂设置，清除SD卡所有内容（SD杂乱的东西都不要了！太占空间！）通过电脑把官方签名的降级ROM包下载到SD卡中 [PD1408BL_B_1.7.18-update-full.zip],其他版本的ROM包不确定能否root成功。刷降级包关机。然后开机键+上音量键 同时按，选择[recovery mode]，进入rec 模式双清缓存和用户应用数据，双清，防止后续可能出现未知错误把降级包刷进系统，出现[正在更新系统……]的界面启动手机(reboot phone)使用360root 获取系统权限下载电脑端的360 root，按照提示，会发现root成功！这时候千万不要关机，不要重启！否则一切功亏一篑下载[酷安]与[shadowsocks-Android]，在酷安中搜索[Link2SD]、[GO谷歌安装器] 、[绿色守护]、Lux。先挂上VPN，然后打开[GO谷歌安装器]，赋予root权限，直接把Google三件套刷进系统，然后在这个软件中选择[谷歌套件更新]，不然的话就提示，Google play 服务出错，闪退。在Google Play store 中下载[Google 相册]。使用[Link2SD]把[绿色守护]、[Lux]、[Google 相册] 转换为系统应用(注2:)。这时候，重启一下手机，Google相册正常使用了，Hooray!* 注1：[酷安]软件市场强烈推荐，因为上面的APP都是正版，评论区对于付费软件还有破解版（尽管并不好，但是很方便），[Link2SD]获取root权限后，可以直接把应用变成系统应用。[绿色守护]、[Lux] 为个人爱好，可以不装。* 注2：同上，[绿色守护]、[Lux] 为个人爱好，可以不刷进系统。至此，一切看起来差不多了~vivo X5max+上似乎没办法装Xposed 模块，所以更高级的玩法也没办法实现了。
2017年是一个https加密时代，最新的chrome浏览器，任何没有https协议的表单页面都会被标记为不安全。https不仅能反劫持运营商的广告，并且还能让你的网址多一个s（逃）。如果你是VPS或者独立IP或者主机面板有导入SSL证书的选项，那么给博客添加SSL都会有大把的教程帮助你快速搞定。但是如果你的主机和我一样，是共享IP的渣渣虚拟主机，主机商又不提供SSL证书安装服务，那只能通过CDN在传输过程中全站HTTPS，这种方式更简单。以下介绍的就是使用又拍云的CDN服务配置全站HTTPS。注1：又拍云有一个[又拍云联盟]的站长扶持计划，只要在博客页脚加上upyun的logo，通过审核后，每个月有免费的15G流量和10G存储空间，对于我们这种个人博客基本够了。注2：除了国内的又拍云还有国外的cloudlfare同样支持免费CDN服务，我以前用过一次，效果不是很理想。首先进入又拍云首页,点击控制台，好了进入到了管理界面了。滑动到页面最底部，有一栏叫做[又拍云服务]，下面有一个栏目叫[全网加速服务],对，没有看错，就是这个栏目，点击[立即创建]。好了，进入好正题了。这个页面分为三栏目：创建服务回源配置为服务授权（操作员）第三项不用考虑，可以直接跳过！（第三项不用考虑，可以直接跳过！）创建服务又拍云和七牛的后台管理不一样，使用前，使用任何服务，都需要先创建一个服务项目。以我为例，名称为：ihewro。源站类型：当然填写自主源了。源站指的就是我们主机上的数据。加速域名：当然是自己博客的域名：www.ihewro.com。前提是要备案，回源配置回源是什么回事呢？其实也很好理解。使用了CDN服务后，用户访问你的博客是这样的一个过程：用户输入域名地址DNS服务器解析得到又拍云的CDN的CNAME记录根据用户地理位置 对CNAME记录继续解析获取距离最近的缓存服务器的IP地址，浏览器向缓存服务器发出请求缓存服务器根据浏览器提供的域名，通过Cache内部专用DNS 解析得到真正主机的IP地址。缓存服务器向真实主机IP地址发起请求缓存服务器从实际IP地址得得到内容以后，一方面在本地进行保存，以备以后使用，二方面把获取的数据返回给客户端，完成数据服务过程；看了上面对CDN过程是不是有了很明确的概念了，什么？根本没看懂？好吧，简单来说的过程是这样：输入域名——解析出 CNAME记录（CDN服务商提供的）——解析出地理位置最近的缓存服务器的IP地址——解析出真实主机的IP地址（主机商提供的）——向主机发起数据请求——得到数据并且存储到缓存服务器上——over！所以呢，CDN的关键就是通过CDN服务商提供的CNAME记录，使用户每次请求都是访问距离最近的缓存服务器，缓存服务器如果已经有数据了，直接返回数据。如果缓存服务商没有请求的数据，就继续向真实主机发起数据请求。而向真实主机请求数据的过程就是回源的过程。如果你还是很模糊，也没关系，上面那些都不重要！重要的是下面：第一项是填写[回源 Host],可以不填，那就不填！其实就是上面的第四步中的浏览器提供的域名。第二项是回源协议，一般共享IP地址的主机不能自主上传SSL证书的，如果强行以https访问，则会自动跳转到主机商设定的固定页面（我的主机就是这样），所以只能选HTTP,不影响后面配置全站HTTPS。（这项之后也可以修改的）第三项是线路配置，就是回源配置。回源地址是什么意思呢？就是CDN通过回源地址来获取你的真实主机上面的内容。回源地址分为：源站IP和源站地址两种。源站IP就是你主机的真实IP。一般主机商提供了A记录就是源站IP地址，直接填上IP地址即可！后面不需要改。如果回源地址填写的是域名地址，这个域名地址不能和加速域名相同，虽然这个域名叫做源站域名，其实可以理解为通过解析这个域名来获得源站IP的域名。这个[源站]非你想的那个[源站]。更换DNS解析记录如果上面CDN原理弄清楚了，会发现DNS解析记录必须更改为CDN服务商的提供的CNAME记录。这个记录在哪呢？点开 控制台——服务 可以看见你刚才新建的那个服务名称。点击配置，再点击解析，就可以看到CNAME记录。去你的域名解析管理那儿把你的域名CNAME记录指导这儿就行了！到这儿，全站CDN基本上大功告成了，可以用奇云测测试你的网站，可以看到有很多个节点！接下来就是配置全站HTTPS，后面就很简单了。配置全站HTTPS在该服务下，有一个HTTPS的栏目，点击管理，就可以自主申请免费HTTPS证书，流程都有说明了，不再赘述。申购是自动流程化，一般一个小时之内就能审核成功，然后在工具箱——SSL证书服务上面，点击HTTPS配置，就可以选择强制HTTPS访问了。最后一丁点文中图片如果是http资源一定要改成https地址，通过数据库的SQL语句,先进入到该表下，然后执行：UPDATE 表名 SET 字段名= REPLACE( 替换前的字段值, '替换前关键字', '替换后关键字' ) 举个栗子，替换文章内容页面的http链接，就是这样：UPDATE typecho_contents SET text= REPLACE( text, 'http://', 'https://' ); 注：text就是文章的内容的字段名称。文中内容为个人总结，CND原理部分参考：CDN工作原理CDN的原理以及其中的一些技术如有知识性错误，欢迎拍砖指出。相关文章：多说适配HTTPS完~
怎么学JavaScript？JavaScript 我也学了一段时间，可是每次写起代码来总是入门级别，很是苦恼。这篇文章中说把整本书给敲下来未尝不是一个好办法，我很有体会，有时候看不进代码，敲下来的过程中就在慢慢的吸收代码的精髓，觉得很受益处，遂转载之。转载原文：统一回复《怎么学JavaScript？》鉴于时不时，有同学私信问我(老姚，下同)怎么学前端的问题。这里统一回复一下，如下次再遇到问我此问题同学，就直接把本文链接地址发给你了。首先说句题外话。关于有人管我叫大神的事情。个人感觉这跟你买东西时，人家管你叫帅哥一样，你答应与否都无妨。正题开始，前端怎么学，应该因人而异，别人的方法未必适合自己。就说说我的学习方法吧。我把大部分时间放在学习js上了。因为这个js的学习曲线，先平后陡。项目实践和练习啥的，我不说了，主要说下工作之外的时间利用问题。我是怎么学的呢，看书，分析源码。个人这几天统计了一下，前端书籍目前看了50多本吧（点击我）。大部分都是js的。市面上的书基本，差不多都看过。第一个问题是，看书有啥好处？好处应该是不言而明的，书看多了，基础会逐渐夯实起来。看多了，自己的判断力，自然就上来了。看别人的文章，就能很快判断出，对方每块儿讲得对不对，哪块儿又是自己不清楚的，模棱两可的。当然也为看源码，分析源码提供了基础。10本书读2遍的好处，应该大于一本书读20遍。10本书的交集，那就是基础知识的核心，而并集那就是所有的知识。好书当然要多读，反复读。但是只读一本是不行的。因为每本书的侧重点都不一样。从不同的侧面，去理解一个知识点，是很有意义的。所以特别佩服印度人，他跟你讲英文，你一个词语没听懂，他会蹦出n个同一意思的单词，你听懂一个，就ok了。看书也是这样的，某一块讲得不透彻，不用担心，其他书籍可以帮助你来了解。第二个问题是，书籍推荐。个人觉得不错的，没事可以翻翻的。书籍如下：《javascript面向对象编程指南》，风格轻松易懂，比较适合初学者，原型那块儿讲得透彻，12种继承方式呢。《js权威指南》、《js高级程序设计》，这两本书经典是经典，但是太厚，适合把其中任意一章都当成一本书来读。洋洋洒洒，很难一口气看完。比较适合当做参考书。《你不知道的javascript》狙击js核心细节，闭包、原型、this讲得都还清楚。目前《中册》也出了，还在看。《js设计模式与开发实践》js设计模式也是要学的，此书把js的设计模式讲得非常清晰，一点不晦涩，看起来没多少难度。《正则指引》，分析源码时，如果正则表达式不懂，没法进行下去的。此书相对来说讲得比较清晰。《基于MVC的JavaScript Web富应用开发》，看完后，基本能写出自己的mvc框架了。是本好书。《javascript函数式编程》，js是一门函数式语言，此书是函数式编程一个入门，函数是一等公民那是非常重要的。《js忍者秘籍》，jq作者写的，没有传说中的那么难读，话说就算你看完并理解所有知识点，也不会达到世界高手级别的。因为你还没有做到随心所欲。《javascript框架设计》，如果初看此书，会觉得此书有罗列代码之嫌。在我看来，此书讲究的是框架的全局观。以上书籍是我认为是成就高手之路上必须看的，也需要反复看。css相关的书籍，说实话我看得比较少，总共有六七本吧。有两本必须推荐一下：《css权威指南》，css基础知识点那是讲得非常清楚的。什么层叠优先级、line-height啥的。不是随便一本书都敢叫“权威指南”的。《css揭秘》此书我也是不断的看，此书才不屑于全面讲css3各属性呢。css规范文档能讲的，它只会讲你最不在意的。此书解决的47问题，解决思路和解决方案同等重要，很有启发性。以上各书你都可以不买，至少买本此书吧。第三个问题，怎么看。想必很多同学，都想看书，但是很难看下去。文字部分相对来说还能看看，一遇到代码，头皮就发麻了。此问题一开始时我也遇到的。说一个学习理论。比如说学英语，有个开水理论。词汇量必须达到6000才行，如果没达到，英文水平不会上去的，这跟烧开水一样，没事烧烧，放着凉凉，从来没烧到100度，那么此水是永远不能喝的。一旦煮沸过，就可以随时喝了。20本书你看不下去，说明什么呢？任何一本书，你都没看完过。熟悉的，永远只是前三章。别笑，我原先也是这样的。那么现在的问题是，怎么把一本书看完呢？很简单，敲。《基于MVC的JavaScript Web富应用开发》这本书我看时，就是这样，终于有一天，我下定决心要把此书从头到尾敲一遍。文字加代码都敲，然后就一章一章得看完了。代码敲一遍后，你会发现，没之前看起来的那么难。如果你属于一看书就犯困那种同学。强烈建议你把《javascript面向对象编程指南》此书从头到尾敲一遍。坚持看完一本书后，信心就上来了。先保证看完一本再说。看完3本后，基本应该能做到几天就能看一本了。万事开头难，加油吧。第四个问题，看书的层次问题。书看完后，要自己总结，要与其他书籍对比看。有同学同时对比着看《权威指南》和《高设》来的。随便拿出个知识点，你都能闭着眼睛说得头头是道，说明水平够了。下一块就是源码的学习了。看框架源码之前，想说一件事情：dom的api不懂，没问题，你可以百度。但是正则一定要先研究研究。不然大多数人去尝试分析源码时，遇到的挫折都在于此。怎么去阅读源码呢？敲，照着敲。有哪些代码值得去敲呢？优秀框架或者库的源码都值得你去敲。但是拿jq来敲，来入门，那不行的。原因：太他么长了。八九千行呢！！个人觉得underscore.js库是不错的第一个选择。原因都是工具方法，敲完以后自己的水平应该略有小成吧。其实有一些api的实现，你要把它当成getElementById一样，深深的印在脑海里。比如extend方法，必须张口就来。敲完underscore库后，可以考虑去看看《javascript函数式编程》这本书了。jq的源码不好敲。那么zepto的源码比较少1800多行，敲一天应该敲完了。敲几遍后，把所有不懂的地方，都百度清楚，然后就可以写自己的类jq的库了。然后就可以作为一项技能写进自己的简历里。比如“创建过自己的jquery库”。当然敲的过程，还能帮助自己对jq的api认识。然后是backbone.js，因为此框架是以类jq和underscore为基础的mvc框架。代码也没多少行。敲吧。spine.js与backbone类似。可以在敲其之前，先看看那本《基于MVC的JavaScript Web富应用开发》。希望你的简历可以添加这么一笔，“创建过自己的mvc框架”。其他的，我也敲过一些。包括jq.validate.js，包括一些插件。如果你愿意的话，bootstrap你可以去敲敲啊。源码挺多的，可以按插件逐个来敲。分析明白了，轮播、分页、下拉框等等的插件那还不是分分钟随手就写一个了。最起码看看人家api接口是怎么设计的也是极好的。话说个人在阅读其css代码中，也学到了不少东西。说到插件，有两个必须提提，一个是表格插件，一个是树。都敲完，简历里可以这么写上，“创建过自己的UI框架”。当然了，你也可以敲你喜欢的框架代码，重要的是明白其实现原理，最好理解其为啥那么设计，如果对设计模式比较熟悉的话，会经常发现原来是这么回事。。。照着敲只是分析源码的入门，用途也是为了学习，最后能用在自己的项目中，那是才是正道。就算没啥用，也是打发时间的好方式，比看电视剧强多了。我闲着无聊时，就背着敲underscore源码。。。最后说句，如果你简历上能如期写上那几句话后，必须是大神。加油吧。后记写本文的最初目的，正如文章开头说的那样，方便自己回复大家的提问。本站的任何一篇分享学习经验的文章，基本都会引起共鸣，这确实是一个值得讨论的话题。这里再说说几个事情。1.有人问我前端工作经验事情。没几年。三年多。2.初学者或新手（beginner）怎么办？看书和分析源码是重要的提高方式，但不适合新手。新手需要的是能快速的入门和入行，能快速的上手工作。一种快捷的学习方式就是看视频。正如有的同学说得那样，知道有哪些东西，怎么用就可以了。看视频是有好处的，首先它是一种被动学习方式。我最开始的入门也是看视频来的，只需要看就行了。一遍没懂，再放一遍，我基本上是1.5倍数去看的。而读书是一种主动方式，需要自己一页一页翻。需要自己主动的去理解。而很多东西，也许只是视频老师一句话，就能突出的重点，需要我们自己去解读。还有另一件事情是，比如发现自己某个知识点不太清楚，可以单独去百度。比如this，文章很多的。这种学习方式也是快速掌握知识点的好办法。书籍需要技术评审，那么看文章一定要看看评论。不过视频就不好说了，视频一般都不会讲得太深入，偶尔也有讲错的。当年我也曾被一些视频误导过，建议找不错的视频看看。各大网站培训机构的免费视频挺多的。3.看书和分析源码的时机但已经工作一年半载时，正是提高的好时候，此时可以去看书了。全面系统的梳理知识点，扫清自己的盲区。如果只是靠项目经验是不够的，通过项目来学习，那肯定是必须的，工作本身就是一个学习的过程。但是工作三年不看书的话，学又能学到多少呢？更何况每个项目都很类似，一直处在舒适区，那真就是5年经验重复第一年的了。所以我不认同这句话：面试时强调自己的学习能力是工作能力不强的表现。3年经验的水平，完全有可能超过5年的。4.没有时间去学习？如果你还没毕业，就已经天天在本站混了。其实你领先了一大步。都是混过大学的。天天充斥着lol和电视剧的陪伴，我只想说进入社会是要还的。最可怕的是什么呢？该还、还不还（这几个字别念错了）。时间是有的，就看你愿意付出不。下班后学习，周末学习，节假日别人玩的时候，在家敲代码。这样才能领先别人。5.兴趣问题？兴趣和擅长是一个良性迭代循环。你擅长某件事情，就会越喜欢它，越喜欢，就越愿意花时间，进而越擅长。此道理都懂，只是缺乏一个trigger。如果你喜欢玩游戏的话，其实你可能非常适合做前端。玩游戏就是一个反馈机制，前端工作的反馈，相对其他工作来说也是非常及时的。代码一改，网页一刷，就看到效果了。擅长、优越感、成就感通常都是连在一起的。每看完一本书，我都觉得很有成就感。每敲完一个库，也有成就感。以上纯属一家之言，每个人的学习习惯、方式、态度都不一样。先端正态度、找到自己的学习方法，进而养成坚持下去的习惯。最后说一句，你我共勉：只要你走在正确的道路上，不管、走得多慢，都是前进！本文完。
同步更新官网文档：v3.1 2017/8/17instantclick 中文文档简介instantclick.js 是一种ajax无刷新和预加载页面的技术，对于普通博客程序，有着明显的加速作用。(instantclick.js ≈ pjax + 预加载页面)而且，使用方法也十分的简单。在github截止目前，已经由4447个star了，非常可观。但是官方文档纯英文，可能阅读上有点障碍，所以，在此，翻译一下大部分的官方文档内容，方便新手快速使用。大部分采用直译方式，需要注意的地方 用小括号注释起来。（尽管如此，instantclick.js 仍然有一些bug亟待解决，如果你可以忽略缺点吧，我们一起开始吧！）目录初级阶段开始使用instantclick 工作原理预加载页面黑名单规则事件和脚本的重新加载进阶阶段跟踪页面内容的变化自定义加载条初级阶段开始使用下载instantclick.js最新的发布版本是2014/12/25发布的V3.1.0 （虽然github一直有更新，但是并没有发布新的版本~）压缩版本2.7kb开发版本21kb其他的下载方式github上面的最新开发版本通过bower（一种前端开发工具） : bower install instantclick初始化instantclick把 instantclick.js 和 初始化代码 放在你的页面的结束之前( 标签结束之前)... 现在instantclick 已经成功在你的网页上面生效。阅读下面的文章以便更熟练的使用instantclick。instantclick 工作原理：将会让你建立正确的模型以便更好的理解instantclick的机制预加载页面：将会向你展示不同的预加载页面的方法黑名单规则：因为有些链接你不想预加载事件和脚本的重新加载：将会帮助你使instantclick更好的配合你的网页中的JavaScript。instantclick不总是“即插即用”（不是通过两行代码就可以在你的网页上运行），你可能需要自定义一些设置来适应你的网站，这也是为什么阅读上述文章是强制性的。instantclick 工作原理InstantClick与传统的web应用区别不大，但是很有必要去了解这些不同的地方！instantclick使浏览器不再刷新整个页面（即无刷新页面效果）首先：你需要理解的核心内容是：instantclick在技术上使你的网站成为单页应用程序；浏览器不再刷新整个页面，而是通过instantclick技术来更改页面内容，这意味着：你不能依赖DOMContentLoaded和jQuery.ready()这两个函数来触发相关事件（这两个事件在刷新整个页面的时候才会触发，但是你可以使用[InstantClick’s events]()来替代)依赖上面两个函数的第三方脚本（比如js代码）需要调整（参阅[事件和脚本的重新加载]()）在加载页面的时候，浏览器不会在显示原本加载进度条了，instantclick有它自己的加载进度条。其次：你需要明白instantclick只会改变 和title，所以你的脚本只会被加载一次（带来的好处是速度的明显提升）。下面还有一些内容你需要了解：通过instantclick加载的每个页面的 标签里面的样式和脚本应该是相同的（因为instantclick只会加载一次 标签里的内容）如果 标签里面的某些内容依赖于网页的内容（比如在页面加载时运行的脚本或css动画），它需要调整以便正常运行。InstantClick是渐进式增强功能：如果访问者的浏览器不支持InstantClick，您的网站链接将照常工作，只是不会提升速度了。预加载页面InstantClick 关于预加载方式有多种选择。你可以根据你的服务器配置来选择合适的方式。但是不管怎样，当每个页面改变时，不会重新加载脚本和样式表，这样会使你的页面加载速度提升一倍！（与Turbolinks、pjax等等技术是类似的）默认: 在鼠标悬停预加载(on mouseover)当用户鼠标悬停在链接上开始预加载页面。如果用户网络链接不错的话，你的页面会很快的打开。初始化方法就是[开始使用]()设置的方式。不会给服务器带来额外负担：在鼠标点击的瞬间预加载(mousedown)当用户按下你的链接按钮的瞬间，页面开始预加载。这为你的服务器带来了接近零的开销，但仍然能够带来一个很“神奇”的速度提升！使用方法：将'mousedown'作为参数传递给InstantClick.initInstantClick.init('mousedown');折中的方式：鼠标悬停延迟一定时间才会预加载如果用户在您选择的延迟过后仍悬停在链接上，则该网页将开始预加载。推荐的延迟时间为：100ms和50ms。超过100ms效果比mousedown效果更差。低于50ms，则会与mouseover效果相似。要使InstantClick延迟一定时间后预加载，请将延迟（毫秒）作为参数传递给InstantClick.init。InstantClick.init(50);手机端效果上面的任何预加载方式，在手机端的时候，当用户手指接触链接时候都会开始预加载。如果您的网站针对移动设备（在安卓和iOS界面上使用了[FashClick]()技术）进行了优化，则当访问者从链接中释放手指时，会发生“点击”，导致预加载大约100 ms的延迟。如果您的网站没有针对手机进行优化，延迟时间则取决于操作系统。 Android给出300 ms，iOS给出450 ms。在同一站点上的3G请求的延迟时间通常需要大约200ms。如何选择？如果您的网站可以处理额外的负载，选择 在鼠标悬停时预加载方式。如果你的网站不能，选择在鼠标点击的瞬间预加载方式。您的网站的速度仍然会超过99％的网站。如果你想确定你的服务器是否可以，先选择在鼠标点击的瞬间预加载方式，你的服务器几乎不会有额外的压力。然后使用鼠标悬停延迟100毫秒预加载。然后50毫秒延迟（或减少更小的减少，如果你有耐心）。然后直接用在鼠标悬停时预加载，分别看你的服务器是否能够承受额外的负担。如果服务器端分析很重要，你只能使用在鼠标点击的瞬间预加载，使用任何其他方式都会带来误差。黑名单规则有一些链接是不需要通过instantclick来预加载。黑名单规则可以实现这个效果。哪些需要进入黑名单哪些需要进入黑名单，而不能进入白名单的：链接指向操作，例如注销和切换语言。链接指向需要一段时间加载的非HTML内容链接指向的页面与当前页面 标签内的css样式和脚本不同链接触发JavaScript的操作部分链接已在内部列入黑名单，且无法列入白名单：链接有target或者download属性链接与当前的域名或者协议不同链接指向当前页面的锚点链接(#anchor)把一个链接列入黑名单把一个链接加入黑名单，只需要在链接中加入data-no-instant属性Blog把一组链接列入黑名单有时候要把一组链接一起列入黑名单，这时候比给所有链接分别添加data-no-intant要方便的多。把父元素内部的所有链接列入黑名单，只需要向该父元素添加data-no-instant属性。把一个链接或者一组链接列入白名单如果您已将某个父元素列入黑名单，并且希望将其中的某个链接（或者子元素内部的所有链接）列入白名单，只需要向该链接或子元素添加data-instant属性。InstantClick在后台中从当前链接的位置到 的位置，遍历所有的父元素，如果找到data-no-instant属性，它就会认为该链接已经被列入黑名单，并停止循环遍历父元素。如果它找到data-instant属性，它会认为该链接已经被列入白名单。（此处翻译可能需要修改）如果您希望默认将所有链接列入黑名单，然后逐个将链接列入白名单或仅想把某个容器的链接列入白名单，请在 添加一个data-no-instant属性，然后向该链接或者容器中添加data-instant属性。白名单模式下面的方法已经弃用，可能会在4.0版本中删除。只有当你的网站正确激活参数（真正的参数传递给InstantClick.init），这种方法才会有用。（此处翻译可能需要修改）正确的方式™：如果要实现与白名单模式相同的效果，只需添加data-no-instant到你的 标签中，参见上一条目“把一个链接或者一组链接列入白名单”。通过向InstantClick.init传递true参数来启用白名单模式。InstantClick.init(true); /* or */ InstantClick.init(50, true); /* or */ InstantClick.init('mousedown', true);事件和脚本的重新加载InstantClick技术上使你的网站成为单页应用程序，因此当页面切换的时候，不会触发DOMContentLoaded函数。因此，一些脚本可能需要调整才能与InstantClick正常工作。InstantClick会触发4个事件以便于挂钩到页面的整个生命周期：change:当前的页面一旦改变会触发该事件，即使浏览器不支持instantclick，页面初始加载的时候也会触发该事件，这个事件可以用来替换DOMContentLoaded.它的回调可以接受一个可选的isInitialLoad参数，它是一个布尔值，当它是初始页面更改或当InstantClick不被支持时为true，而当InstantClick更改页面时为false。（此处翻译需要修改）fetch:页面开始预加载的时候receive:页面已经预加载完成，你可以使用该事件[修改页面的内容]().wait:用户已经点击了链接，但是页面还没有开始预加载。仅在页面不是立即显示（可能由于网络原因）的时候触发。监听一个事件，比如change，你可以使用InstantClick.on:InstantClick.on('change', yourCallback);您需要在InstantClick.init之前调用InstantClick.on，因为change事件在网页初始加载时就会被触发，包括浏览器不支持pushState的时候。（此处翻译可能需要修改）如果在 标签内部有一个脚本，当instantclick切换到另一个页面的时候，你并不希望重新加载它 ，你可以添加一个data-no-instant属性。 如果有一些脚本与instantclick发生冲突，建议向所有脚本添加一个data-no-instant属性，然后逐个删除每个属性，直到找到罪魁祸首。您可以通过查看Turbolinks兼容性站点上的示例（在CoffeeScript中）了解如何解决兼容性问题。例如，以下是如何使Google Analytics（网站统计与分析）（2013年末的代码）正常工作： 在receive事件里改变页面内容有时，即时改变页面内容比为instantclick重构你的后端代码要简单。你可以使用receive事件。这个事件有三个参数：url， ，body 和title。url 接收的页面的地址，它包括哈希值。它是只读的。body是body对象，title是标题文本。如果你想在页面显示之前改变页面内容，你可以修改这两个参数并返回一个对象（或者只修改其中的一个参数）。下面是一个例子：InstantClick.on('receive', function(url, body, title) { var dont_display = body.querySelector('#dont_display_me_when_loaded_with_instantclick') if (dont_display) { dont_display.setAttribute('hidden', ''); } title += ' (loaded with InstantClick)'; return { body: body, title: title }; });要记住 body 对象是body 而不是document.body!当您有多个回调函数监听receive函数时，每个后续回调将获得最后更改的内容。如果你不想修改页面内容，则不用返回任何内容或返回false。进阶阶段跟踪页面内容的变化当前跟踪页面内容的变化的方式目前有点笨拙。它可能稍后在InstantClick 4.0中更改。要检查样式表或脚本（外部或内联）何时更新，请添加一个data-instant-track属性： InstantClick将检查href或src属性（如果存在）中的更改。要指示文件已更新，请修改其属性： 如果它是内联脚本或样式，InstantClick将检查元素内容中的更改。 当检测到任何更改时，InstantClick将重新加载页面，从而使浏览器重新评估所有脚本和样式。自定义加载条进度条是一个假的进度条，只是在那里给你的用户的感觉页面的加载进度。在未来，应该可以使进度条显示真正的进度（通过查看服务器的Content-Length头）。即使页面已经立即加载，也会显示进度条，在将来这将更改。你可以在github讨论。当访问者缩放页面或旋转其设备时，该栏的大小和位置会自动调整，因此即使您的网站未针对移动设备进行优化，也会正常工作。默认情况下，进度条的颜色为#29d, 你可以改变CSS:#instantclick-bar { background: white; }你也可以让进度条消失：#instantclick { display: none; }使进度条消失的方式不是最佳的。在稍后的InstantClick版本中，可能可以通过向InstantClick.init传递参数来实现这个效果。
githubpage除了在国内有些地区访问速度不好，还是有很多优点的，比如无限流量，无限空间。静态博客框架有很多，hexo个人认为更简单容易上手，因为有官方中文文档。hexo原理就是通过本地一个程序扫描source目录内容，建立索引，根据你 theme 文件夹的主题生成页面到 public 文件夹。然后通过git方式把pubilc文件夹内容传到github。github pages能够解析并且展示出来。演示地址：http://ihewro.top[...]