浏览器,F5 和 Ctrl+F5的区别

‘浏览器,F5 和 Ctrl+F5的区别’ 引:http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!2144.entry http://www.cnblogs.com/cxd4321/archive/2009/03/11/1408425.html Browser: F5 vs Ctrl+F5 在浏览器里中,按F5键或者点击Toobar上的Refresh/Reload图标(简称F5),和做F5同时按住Ctrl键 (简称Ctrl+F5) ,效果是明显不一样的,通常Ctrl+F5明显要让网页Refresh慢一些,到底两者有什么区别呢? 在上一篇技术文章中,说到了Expires、Last-Modified/If-Modified-Since和ETag/If-None-Match这些HTTP Headers,F5/Ctrl+F5和这些有莫大关系。 假如我第一次访问过http://www.example.com,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://www.example.com/logo.gif,浏览器在显示这个网页之前需要发HTTP请求获取这个logo.gif文件,返回的HTTP response包含这样的Headers: Expires: Thu 27 Nov 2008 07:00:00 GMT Last-Modified: Fri 30 Nov 2007 00:00:00 GMT 那么浏览器就会cache住这个logo.gif文件,直到2008年11月27日7点整,或者直到用户有意清空cache。 下次我再通过bookmark或者通过在URI输入栏直接敲字的方法访问http://www.example.com的时候,浏览器一看本地有个logo.gif,而且它还没过期呢,就不会发HTTP request给server,而是直接把本地cache中的logo.gif显示了。 F5的作用和直接在URI输入栏中输入然后回车是不一样的,F5会让浏览器无论如何都发一个HTTP Request给Server,即使先前的Response中有Expires Header。所以,当我在当前http://www.example.com网页中按F5的时候,浏览器会发送一个HTTP Request给Server,但是包含这样的Headers: If-Modified-Since: Fri 30 Nov 2007 00:00:00 GMT 实际上Server没有修改这个logo.gif文件,所以返回一个304 (Not Modified),这样的Response很小,所以round-trip耗时不多,网页很快就刷新了。 上面的例子中没有考虑ETag,如同在上一篇技术文章中所说,最好就不要用ETag,但是如果Response中包含ETag,F5引发的Http Request中也是会包含If-None-Match的。 那么Ctrl+F5呢? Ctrl+F5要的是彻底的从Server拿一份新的资源过来,所以不光要发送HTTP request给Server,而且这个请求里面连If-Modified-Since/If-None-Match都没有,这样就逼着Server不能返回304,而是把整个资源原原本本地返回一份,这样,Ctrl+F5引发的传输时间变长了,自然网页Refresh的也慢一些。 实际上,为了保证拿到的是从Server上最新的,Ctrl+F5不只是去掉了If-Modified-Since/If-None-Match,还需要添加一些HTTP Headers。按照HTTP/1.1协议,Cache不光只是存在Browser终端,从Browser到Server之间的中间节点(比如Proxy)也可能扮演Cache的作用,为了防止获得的只是这些中间节点的Cache,需要告诉他们,别用自己的Cache敷衍我,往Upstream的节点要一个最新的copy吧。 在IE6中,Ctrl+F5会添加一个Header Pragma: no-cache 在Firefox 2.0中,Ctrl+F5会添加两个 Pragma: no-cache Cache-Control: max-age=0 作用就是让中间的Cache对这个请求失效,这样返回的绝对是新鲜的资源 浏览器中F5和CTRL F5的行为区别 浏览器中F5和CTRL F5的行为区别 作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 ...

2013-05-09 · 2 min · 241 words · -

wrk

wrk - a HTTP benchmarking tool https://github.com/wg/wrk

2013-05-08 · 1 min · 7 words · -

Row_number () over (partition by col1 order by col2)的用法

Row_number () over (partition by col1 order by col2)的用法 oracle row_number 函数 ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) --其中,COL1,COL2可以为多列 select xt.id, xt.item, xt.attribute1, xt.attribute2, ROW_NUMBER() OVER(PARTITION BY xt.id,xt.item order by xt.id,xt.item) test from xxuts_test xt 表示根据COL1分组,在分组内部根据 COL2排序 而这个值就表示每组内部排序后的顺序编号 (组内连续的唯一的) RANK() 类似,不过RANK 排序的时候跟派名次一样,可以并列2个第一名之后 是第3名 LAG 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL BTW: EXPERT ONE ON ONE 上讲的最详细,还有很多相关特性,文档看起来比较费劲 row_number()和rownum差不多,功能更强一点 (可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名 (同样是在各个分组内) dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。 相比之下row_number是没有重复值的 lag (arg1,arg2,arg3): arg1是从其他行返回的表达式 arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,时一个往回检索以前的行的数目。 arg3是在arg2表示的数目超出了分组的范围时返回的值。 按照名字分组查询时间最早的一条记录 给出2种解决方案 rownumber ...

2013-05-08 · 1 min · 126 words · -

电子邮件投递过程

电子邮件投递过程 user -> Email Server -> Email server -> user Email Server -> Email server: SMTP (Simple Message Transfer Protocol) user -> Email Server: POP3 (Post Office Protocol), IMAP (Internet Message Access Protocol) 电子邮件程序分为用户代理(MUA),传输代理(MTA)和投递代理(MDA)。 MTA (Mail Transport Agents) sendmail, postfix, qmail; MDA (Mail Delivery Agents) sendmail(mail), deliver, and procmail MUA (Mail User Agents) elm, pine, /bin/mail, mh, Eudora, and Pegasus,Mozilla Thunderbird, Microsoft Outlook Express 用户代理用来接受用户输入的指令,将用户给出的信件报文传送至信件传输代理。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到用户投递代理。 当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器,并且通过网络将邮件传送给它。 对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件 的接收者察看自己的电子信箱。 显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服 务器上存储信息的空间 (称为信箱) 才能接受邮件。 (发送邮件不受 ...

2013-05-07 · 1 min · 191 words · -

raspberry pi omxplayer mplayer

raspberry pi omxplayer mplayer sudo apt-get install omxplayer sudo apt-get install fonts-wqy-zenhei sudo apt-get install ttf-freefont omxplayer --subtitles The.Legend.of.1900.1998.BDRip.X264-BMDruCHinYaN.chs.srt \ --font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc \ La.Leggenda.Del.Pianista.Sull.Oceano.1998.BluRay.1080p.2Audio.DTS-HD.MA.5.1.x264-beAst.mkv omxplayer -r -o hdmi --subtitles The.Legend.of.1900.1998.BDRip.X264-BMDruCHinYaN.chs.srt \ --font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc \ La.Leggenda.Del.Pianista.Sull.Oceano.1998.BluRay.1080p.2Audio.DTS-HD.MA.5.1.x264-beAst.mkv #-r 全屏播放 #-o hdmi 输出音频到hdmi #-subtitles 字幕 #-font 字体文件 omxplayer中文乱码可以直接在omxplayer中指定字体,直接使用wqy字体即可: $omxplayer -t 1 -p -r -font /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc -align center -o hdmi test.avi omxplayer不支持外置字幕目前新版本omxplayer已经支持外置字幕,可以去网站上下载5,不过目前好像只支持utf-8,不行只能通过enca转码。 标准Raspbian版本中支持树莓派的GPU的播放器好像只有omxplayer,是个命令行程序,没有界面的,也不能拖动。它有很多参数,最常用的是-o,选项有local和hdmi,表示声音输出到audio out还是hdmi,omxplayer后面跟着要播放的文件名称,不支持wmv,不支持外置字幕。打开终端窗口,出现提示符后输入: omxplayer -o hdmi 文件名 OMXplayer支持硬解码,因此是一个非常不错的选择。 支持格式目前知道的有: MKV、AVI、FLV、MP4 如果想用全屏播放,参数是: -r 如果想用HDMI输出声音,参数是: -o hdmi,并且有个前提: /boot/config.txt 里面设置HDMI_DRIVER=2 ...

2013-04-21 · 2 min · 269 words · -

树莓派(raspberry pi) 系统在SD卡上安装Linux

树莓派(raspberry pi) 系统在SD卡上安装Linux sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdx 刚刚拿到一只Simon同学出借的树莓派(raspberry pi) ,准备一张4GB的SD卡,准备跑一下Linux。 在Windows 7上用 工具 Win32DiskImager写入img到SD卡上,报错,失败。 好在俺有Linux vmware虚拟机,在虚拟机上搞,执行命令 sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdb tips: 错误: 接电启动树莓派,派上只有红色的Power灯亮,HDMI电视机上没有输出。 原因: 在Linux上执行dd命令的时候,应该是把操作系统镜像写到SD卡 (硬盘上) ,而不是写到某个硬盘分区上。of=/dev/sdb 误写成of=/dev/sdb1了。 当时写完后,我还纳闷呢,怎么Linux fdisk上这个SD卡还显示只有一个vfat分区,而不是多个Linux分区呢。 解决办法: 首先fdisk /dev/sdb,删除vfat分区;然后执行dd命令写入镜像 sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdb #Raspian安装Chrome 1,wget http://goo.gl/go5yx -O install.sh 2,chmod a+x install.sh 3,./install.sh 4,chrome -disable-ipv6 & (& for running at background) 5,error loading libsmime3.so->try sudo apt-get update then redo step 3 #Raspian安装中文输入法SCIM (Smart Common Input Method) 1,sudo apt-get install scim-pinyin ...

2013-04-17 · 1 min · 127 words · -

windows bat basic

windows bat basic @echo off @echo off 关闭回显 @echo on 打开回显 @echo off并不是DOS程序中的, 而是DOS批处理中的。 当年的DOS,所有操作都用键盘命令来完成, 当你每次都要输入相同的命令时, 可以把这么多命令存为一个批处理, 从此以后,只要运行这个批处理, 就相当于打了几行、几十行命令。 DOS在运行批处理时, 会依次执行批处理中的每条命令, 并且会在显示器上显示, 如果你不想让它们显示, 可以加一个"echo off" 当然,“echo off"也是命令, 它本身也会显示, 如果连这条也不显示, 就在前面加个”@"。 pause 使显示器停下,并显示"请按任意键继续" 例如: @echo off @echo hello! pause 显示如下图hello1 @echo on @echo hello! pause 显示如下图hello2 注释 rem comments0 :: comments1 rem和::都起到注释的作用,然而又有些不同。 一、 rem是一条命令, 在运行的时候相当于把 rem 本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有 类似"&“的连接符号连接。 二、 批处理遇到以冒号”:“开头的行时 (忽略冒号前的空格) ,会将其后的语句识别为"标记"而不是命令语句,因此类似 “:label"这样的东西在批处理中仅仅是一个标记。 三、 对于”::“而言,之所以可以达到注释的效果,是因为第二个:不是标签的合法字符 (把它换成;.等等都行) ,它不被当 作一个合法的标签 这一点很好理解,如果在你的批处理中有一个永远用不到的标签hero,那么你就可以用”:hero"打头来作为注释。只不过 冒号有其先天的优越性–语法上的问题。 好了,我们现在回过头来看看call。比如"call:hero”,为什么要有冒号?这是为了与文件hero区分。 四、 嗯,我想你已经明白我的意思了,下面我将为你解释一些奇妙的东西。 经验告诉我们,在复合语句中使用":“经常会出问题。那么究竟什么时候会出现问题? ...

2013-04-17 · 1 min · 205 words · -

存储过程, proc

存储过程, proc SET ANSI_NULLS ON SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。 SET QUOTED_IDENTIFIER 使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是 Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。 语法 SET QUOTED_IDENTIFIER { ON | OFF } 注释 当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。 当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (’) 是文字字符串的一部分,则可以由两个单引号 (’’) 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。 ...

2013-04-17 · 3 min · 465 words · -

游标

游标 游标 (cursor) 是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。 主语言是面向记录的,一组主变量一次只能存放一条记录。仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求。嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式。在数据库开发过程中,当你检索的数据只是一条记录时,你所编写的事务语句代码往往使用SELECT INSERT 语句。但是我们常常会遇到这样情况,即从某一结果集中逐一地读取一条记录。那么如何解决这种问题呢?游标为我们提供了一种极为优秀的解决方案。 1.游标和游标的优点 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集 (可以是零条、一条或由相关的选择语句检索出的多条记录) 和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。 我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。

2013-04-16 · 1 min · 20 words · -

二级域名

二级域名 二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称;在国家顶级域名下,它是表示注册企业类别的符号。我国在国际互联网络信息中心 (Inter NIC) 正式注册并运行的顶级域名是CN,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个,包括用于科研机构的ac;用于工商金融企业的com;用于教育机构的edu;用于政府部门的gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。 二级域名就是主域名分出来域名。 1)二级域名是寄存在主域名之下的域名。 2)二级域名属于一个独立的分支,他有自己的收录、快照、PR值、反链等。 3)当主域名受到惩罚,二级域名[1]也会连带惩罚。 1、形如"abc com/bbs"的采取目录形式的不能够称为二级域名,一般网民称之为"子页面"。 2、形如".com cn、.net cn、.org cn、.gd cn"的在注册域名时可以见到的也不能够称为二级域名,一般专业人士称之为"二级域"。 3、二级域名的权重高于二级目录,二级域名是作为一个独立的域名出现在互联网上,而二级目录是以网站子页面出现的,所以很多人认为两者之间的权重相同,这种认识是错误的。 4、二级域名比较适用于大型网站,像58同城,赶集网,千龙网,意动时代等大型网站。因为使用二级域名可以减短网址途径的长度,也许会对收录起到很好的效果。全站交织衔接,可以使搜索引擎能检索到,还主动生成网站地图。 5、很多人都误把带www当成一级域名,把其他前缀的当成二级域名,是非常错误的。正确的域名划分为: baidu .com 主(一级)域名 www.baidu .com 二级域名 bbs.baidu .com 二级域名 tieba.baidu .com 二级域名 什么时候使用二级域名好 如果你的营销团队决定推广一个内容或目的完全不同的url,并且决定使用一个吸引人的子域名,那么使用子域名可能是现实选择。如maps.domain这样的网站,就是出于营销考虑使用的子域名成为可接受选择的例子。一个有很好理由使用子域名的情况是,有时候与主域名区隔开的子域名看起来更有权威性。 要小心新闻媒体对域名的关注,因为没有经验的用户经常不理解子域名的概念或者网站域名可以没有www。使用子目录,少一些华丽的营销比通过品牌和广告教育别人要便宜的多了。所以也需要好好研究一番。 如果在域名中使用关键词至关重要的话,子域名也可能是个很合理的选择。搜索引擎似乎确实给予url中的关键词不少权重,而且子域名中完全匹配的关键词权重比子目录要高一些。一般来说权重肯定是一级域名>二级域名>二级目录,但是很多网站都设置了301重定向,就是点击一级域名的时候,由于设置了301重定向,会直接跳转到设置好的二级域名上,这时一级域名的所有权重都转移到二级域名上,这时候一级域名的权重就和二级域名权重是相同的

2013-04-12 · 1 min · 35 words · -

装修

装修 1.前期设计 - 2.主体拆改 - 3.水电改造 - 4.木工 - 5.贴砖 - 6.刷墙面漆 - 7.厨卫吊顶 - 8.橱柜安装 - 9.木门安装 - 10.地板安装 - 11.铺贴壁纸 - 12.散热器安装 - 13.开关插座安装 - 14.灯具安装 - 15.五金洁具安装 - 16.窗帘杆安装 - 17.拓荒保洁 - 18.家具进场 - 19.家电安装 - 20.家居配饰 装修,大致是按照这20步完成的。下面,死抗着尽我最大之所能,把我目前所了解的装修过程以及整个过程中需要注意的诸多细节尽可能详细的阐述一遍…… 一、装修全过程20个环节解析 (一) 前期设计 同样是建造,人和蜜蜂的区别就在于,蜜蜂的建造是本能的反映,而人在建造之前,脑海中首先会形成构思和框架。所以,如果把家装比喻成一场战役,那么家装的前期设计就是这场战役的"作战方案",是家装的"灵魂环节"。再所以,死抗着在上篇《唐亮制造》中通篇讲述的都是前期设计需要注意的问题,在这里就不重复了。 在前期设计中,同学必须还要做的一件事,那就是对自己的房间进行一次详细的测量,大家不要犯懒,最好亲自测量一遍,测量的内容主要包括: 明确装修过程涉及的面积。特别是贴砖面积、墙面漆面积、壁纸面积、地板面积; 明确主要墙面尺寸。特别是以后需要设计摆放家具的墙面尺寸。 我记得我家工长最后跟我按照"实际发生量"结算铺砖一项的总款时,他测量的面积比我自己测量的面积多了10平米,我当时真是哭笑不得。重新测量之后,工长回过身训斥瓦工说: “你们是怎么测的?!“这也是为什么我建议大家自己测量的原因。装修很多地方跟做人的道理一样——我们嘴上不一定很明白,但是心里一定要有数。 顺道提醒大家,开工之前不要忘记去物业办理开工手续,交纳装修押金。 (二) 主体拆改 进入到施工阶段,主体拆改是最先上的一个项目,主要包括拆墙、砌墙、铲墙皮、拆暖气、换塑钢窗等等。主体拆改说白了,就是先把工地的框架先搭起来。 (三) 水电改造 水电路改造之前,主体结构拆改应该基本完成了。在水电改造和主体拆改这两个环节之间,一些同学可能知道,还应该进行橱柜的第一次测量。其实所谓的橱柜第一次测量并没有什么实际内容,因为墙面和地面都没有处理,橱柜设计师不可能给出具体的设计尺寸,而只是就开发商预留的上水口、油烟机插座的位置,提出一些相关建议。主要包括: 看看油烟机插座的位置是否影响以后油烟机的安装; 看看水表的位置是否合适; 看看上水口的位置是否便于以后安装水槽。 对于橱柜的第一次测量,稍微有经验的同学完全可以自行完成。水路改造完成之后,最好紧接着把卫生间的防水做了。厨房一般不需要做防水。 有同学一直认为装修开始之前,一些主料应该事先进场。我要说的是,除非是主体拆改需要用的主料,否则,诸如瓷砖、大芯板等主料的进场时间应该在水电改造之后。因为电路改造如果涉及地面开槽的话,瓷砖、大芯板码放的位置不当的话,工人搬来搬去很是麻烦。前两天"耗子"同学还跟我提到她家当初就遇到了工人满屋子来回来去挪砖的问题,在此提醒同学注意。 (四) 木工 木工、瓦工、油工是施工环节的"三兄弟”,基本出场顺序是: 木——瓦——油。基本出场原则是——谁脏谁先上。“谁脏谁先上"也是决定家装顺序的一个基本原则之一,我后面还会提到。 其实像包立管、做装饰吊顶、贴石膏线之类的木工活从某种意义上说也可以作为主体拆改的一个细环节考虑,本身和水电路改造并不冲突,有时候还需要一些配合,诸如我上篇帖子提到的——“家里准备做假墙的话,要考虑假墙上是否有水电线路,如果有的话,应该让水电改造的工人预埋管。” (五) 贴砖 如果工人忙得开的话,工长一般会在"木工老大"还没有结束的时候就让"瓦工老二"进场贴砖,这很正常,因为两者本身没什么冲突。 ...

2013-04-11 · 2 min · 233 words · -

签名算法

签名算法 我们使用非对称加密算法的时候,对于一个公钥-私钥对,通常是用公钥加密,私钥解密。 如果使用私钥加密,公钥解密是否可行呢?实际上是完全可行的。 不过我们再仔细想一想,私钥是保密的,而公钥是公开的,用私钥加密,那相当于所有人都可以用公钥解密。这个加密有什么意义? 这个加密的意义在于,如果小明用自己的私钥加密了一条消息,比如小明喜欢小红,然后他公开了加密消息,由于任何人都可以用小明的公钥解密,从而使得任何人都可以确认小明喜欢小红这条消息肯定是小明发出的,其他人不能伪造这个消息,小明也不能抵赖这条消息不是自己写的。 因此,私钥加密得到的密文实际上就是数字签名,要验证这个签名是否正确,只能用私钥持有者的公钥进行解密验证。使用数字签名的目的是为了确认某个信息确实是由某个发送方发送的,任何人都不可能伪造消息,并且,发送方也不能抵赖。 在实际应用的时候,签名实际上并不是针对原始消息,而是针对原始消息的哈希进行签名,即: signature = encrypt(privateKey, sha256(message)) 对签名进行验证实际上就是用公钥解密: hash = decrypt(publicKey, signature) 然后把解密后的哈希与原始消息的哈希进行对比。 因为用户总是使用自己的私钥进行签名,所以,私钥就相当于用户身份。而公钥用来给外部验证用户身份。 常用数字签名算法有: MD5withRSA SHA1withRSA SHA256withRSA 它们实际上就是指定某种哈希算法进行RSA签名的方式。 DSA签名 除了RSA可以签名外,还可以使用DSA算法进行签名。DSA是Digital Signature Algorithm的缩写,它使用ElGamal数字签名算法。 DSA只能配合SHA使用,常用的算法有: SHA1withDSA SHA256withDSA SHA512withDSA 和RSA数字签名相比,DSA的优点是更快。 ECDSA签名 椭圆曲线签名算法ECDSA:Elliptic Curve Digital Signature Algorithm也是一种常用的签名算法,它的特点是可以从私钥推出公钥。比特币的签名算法就采用了ECDSA算法,使用标准椭圆曲线secp256k1。BouncyCastle提供了ECDSA的完整实现。 https://www.liaoxuefeng.com/wiki/1252599548343744/1304227943022626

2013-04-04 · 1 min · 39 words · -

English sentence

English sentence correlation,relation correlation 相关性,主要强调两种或多种事物之间相互联动、相互影响的程度,如油价和汽车销售量的相关性等 relation 关系,不强调相互作用,只表明两种事物之间的血缘或物理关系,如外交关系,男女关系等 http://blog.sina.com.cn/s/blog_5056454d0100iw0d.html Bart Lorang may be the best boss ever. 巴特-洛朗或许将成为最佳老板。 The CEO of Denver-based internet start-up FullContact API said in a market that is competitive for top talent, he wants to keep his employees happy and refreshed. 美国丹佛的网络初创公司FullContact API的总裁巴特-洛朗表示,在各家争相雇佣顶级人才的竞争市场中,他想让自己的员工心情愉快,充满干劲。 The flip-flop wearing founder offers his employees $7,500 for what he calls “paid, paid vacation,” however there are rules. 这位穿着夹趾凉拖的公司创始人向他的每位员工提供7500美元,用于"付费带薪休假",但需遵守相关规定。 “One, you actually have to take a vacation to get the money,” Lorang said. “Two, you have to disconnect from work, so that means no calls, no emails, no tweets, no work of any kind.” ...

2013-04-04 · 2 min · 289 words · -

The MIT License

The MIT License http://baike.baidu.com/view/3159946.htm MIT许可证 (The MIT License) 是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款 (如GPL、LPGL、BSD) 相比,MIT是相对宽松的软件授权条款。MIT许可证之名源自麻省理工学院 (Massachusetts Institute of Technology, MIT) ,又称"X条款" (X License) 或"X11条款" (X11 License) MIT内容与三条款BSD许可证 (3-clause BSD license) 内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。有许多团体均采用MIT许可证。例如著名的ssh连接软件PuTTY与X Windows System (X11)即为例子。Expat, Mono开发平台库,Ruby on Rails, Lua 5.0 onwards等等也都采用MIT授权条款。被授权人权利 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。 被授权人可根据程序的需要修改授权条款为适当的内容。 被授权人义务 在软件和软件的所有副本中都必须包含版权声明和许可声明。 其他重要特性 此授权条款并非属copyleft的自由软件授权条款,允许在自由/开放源码软件或非自由软件 (proprietary software) 所使用。 MIT的内容可依照程序著作权者的需求更改内容。此亦为MIT与BSD (The BSD license, 3-clause BSD license) 本质上不同处。 MIT条款可与其他授权条款并存。另外,MIT条款也是自由软件基金会 (FSF) 所认可的自由软件授权条款,与GPL兼容。

2013-04-01 · 1 min · 56 words · -

windows SC命令详解

windows SC命令详解 SC命令详解(一个很有用的command) 作为一个命令行工具,SC.exe可以用来测试你自己的系统,你可以设置一个批处理文件来使用不同的参数调用 SC.exe来控制服务。 一.SC使用这样的语法: SC [Servername] command Servicename [Optionname= Optionvalues] SC [command] 这里使用第一种语法使用SC,使用第二种语法显示帮助。 下面介绍各种参数。 Servername 可选择: 可以使用双斜线,如\myserver,也可以是\192.168.1.223来操作远程计算机。如果在本地计算机上操作 就不用添加任何参数。 Command 下面列出SC可以使用的命令。 config–改变一个服务的配置。 (长久的) continue-对一个服务送出一个继续控制的要求。 control–对一个服务送出一个控制。 create–创建一个服务。 (增加到注册表中) delete–删除一个服务。 (从注册表中删除) EnumDepend-列举服务的从属关系。 GetDisplayName-获得一个服务的显示名称。 GetKeyName-获得一个服务的服务键名。 interrogate-对一个服务送出一个询问控制要求。 pause–对一个服务送出一个暂停控制要求。 qc–询问一个服务的配置。 query–询问一个服务的状态,也可以列举服务的状态类型。 start–启动一个服务。 stop–对一个服务送出一个停止的要求。 Servicename 在注册表中为service key制定的名称。注意这个名称是不同于显示名称的 (这个名称可以用net start和服务控 制面板看到) ,而SC是使用服务键名来鉴别服务的。 Optionname 这个optionname和optionvalues参数允许你指定操作命令参数的名称和数值。注意,这一点很重要在操作名称和等 号之间是没有空格的。一开始我不知道,结果………………,比如,start= optionvalues,这个很重要。 optionvalues可以是0,1,或者是更多的操作参数名称和数值对。 如果你想要看每个命令的可以用的optionvalues,你可以使用sc command这样的格式。这会为你提供详细的帮助。 Optionvalues 为optionname的参数的名称指定它的数值。有效数值范围常常限制于哪一个参数的optionname。如果要列表请用 sc command来询问每个命令。 Comments 很多的命令需要管理员权限,所以我想说,在你操作这些东西的时候最好是管理员。呵呵! 当你键入SC而不带任何参数时,SC.exe会显示帮助信息和可用的命令。当你键入SC紧跟着命令名称时,你可以得 到一个有关这个命令的详细列表。比如,键入sc create可以得到和create有关的列表。 但是除了一个命令,sc query,这会导出该系统中当前正在运行的所有服务和驱动程序的状态。 当你使用start命令时,你可以传递一些参数 (arguments) 给服务的主函数,但是不是给服务进程的主函数。 二.SC create 这个命令可以在注册表和服务控制管理数据库建立一个入口。 ...

2013-03-25 · 2 min · 372 words · -

队头阻塞, head-of-line blocking

队头阻塞, head-of-line blocking 队头阻塞一般指的是TCP协议中的队头阻塞,HTTP1.1中也有一个类似TCP队头阻塞的问题 TCP队头阻塞 队头阻塞 (head-of-line blocking)发生在一个TCP分节丢失,导致其后续分节不按序到达接收端的时候。该后续分节将被接收端一直保持直到丢失的第一个分节被发送端重传并到达接收端为止。该后续分节的延迟递送确保接收应用进程能够按照发送端的发送顺序接收数据。这种为了达到完全有序而引入的延迟机制非常有用,但也有不利之处。 假设在单个TCP连接上发送语义独立的消息,比如说服务器可能发送3幅不同的图像供Web浏览器显示。为了营造这几幅图像在用户屏幕上并行显示的效果,服务器先发送第一幅图像的一个断片,再发送第二幅图像的一个断片,然后再发送第三幅图像的一个断片;服务器重复这个过程,直到这3幅图像全部成功地发送到浏览器为止。 要是第一幅图像的某个断片内容的TCP分节丢失了,客户端将保持已到达的不按序的所有数据,直到丢失的分节重传成功。这样不仅延缓了第一幅图像数据的递送,也延缓了第二幅和第三幅图像数据的递送。 HTTP队头阻塞 上面用浏览器请求图片资源举例子,但实际上HTTP自身也有类似TCP队头阻塞的情况。要介绍HTTP队头阻塞,就需要先讲讲HTTP的管道化 (pipelining)。 HTTP管道化是什么 HTTP1.1 允许在持久连接上可选的使用请求管道。 这是相对于 keep-alive 连接的又一性能优化。在响应到达之前,可以将多条请求放入队列,当第一条请求发往服务器的时候,第二第三条请求也可以开始发送了,在高延时网络条件下,这样做可以降低网络的环回时间,提高性能。 HTTP管道化产生的背景 在一般情况下,HTTP遵守“请求-响应”的模式,也就是客户端每次发送一个请求到服务端,服务端返回响应。这种模式非常容易理解,但是效率并不是那么高,为了提高速度和效率,人们做了很多尝试: 最简单的情况下,服务端一旦返回响应后就会把对应的连接关闭,客户端的多个请求实际上是串行发送的。 除此之外,客户端可以选择同时创建多个连接,在多个连接上并行的发送不同请求。但是创建更多连接也带来了更多的消耗,当前大部分浏览器都会限制对同一个域名的连接数。 从HTTP1.0开始增加了持久连接的概念 (HTTP1.0的 Keep-Alive 和HTTP1.1的 persistent),可以使HTTP能够复用已经创建好的连接。客户端在收到服务端响应后,可以复用上次的连接发送下一个请求,而不用重新建立连接。 现代浏览器大多采用并行连接与持久连接共用的方式提高访问速度,对每个域名建立并行地少量持久连接。 而在持久连接的基础上,HTTP1.1进一步地支持在持久连接上使用管道化 (pipelining)特性。管道化允许客户端在已发送的请求收到服务端的响应之前发送下一个请求,借此来减少等待时间提高吞吐;如果多个请求能在同一个TCP分节发送的话,还能提高网络利用率。但是因为HTTP管道化本身可能会导致队头阻塞的问题,以及一些其他的原因,现代浏览器默认都关闭了管道化。 HTTP管道化的限制 管道化要求服务端按照请求发送的顺序返回响应 (FIFO),原因很简单,HTTP请求和响应并没有序号标识,无法将乱序的响应与请求关联起来。 客户端需要保持未收到响应的请求,当连接意外中断时,需要重新发送这部分请求。 只有幂等的请求才能进行管道化,也就是只有GET和HEAD请求才能管道化,否则可能会出现意料之外的结果 HTTP管道化引起的请求队头阻塞 前面提到HTTP管道化要求服务端必须按照请求发送的顺序返回响应,那如果一个响应返回延迟了,那么其后续的响应都会被延迟,直到队头的响应送达。 如何解决队头阻塞 如何解决HTTP队头阻塞 对于HTTP1.1中管道化导致的请求/响应级别的队头阻塞,可以使用HTTP2解决。HTTP2不使用管道化的方式,而是引入了帧、消息和数据流等概念,每个请求/响应被称为消息,每个消息都被拆分成若干个帧进行传输,每个帧都分配一个序号。每个帧在传输时属于一个数据流,而一个连接上可以存在多个流,各个帧在流和连接上独立传输,到达之后在组装成消息,这样就避免了请求/响应阻塞。 当然,即使使用HTTP2,如果HTTP2底层使用的是TCP协议,仍可能出现TCP队头阻塞。 如何解决TCP队头阻塞 TCP中的队头阻塞的产生是由TCP自身的实现机制决定的,无法避免。想要在应用程序当中避免TCP队头阻塞带来的影响,只有舍弃TCP协议。 比如google推出的quic协议,在某种程度上可以说避免了TCP中的队头阻塞,因为它根本不使用TCP协议,而是在UDP协议的基础上实现了可靠传输。而UDP是面向数据报的协议,数据报之间不会有阻塞约束。 此外还有一个SCTP (流控制传输协议),它是和TCP、UDP在同一层次的传输协议。SCTP的多流特性也可以尽可能的避免队头阻塞的情况。 总结 从TCP队头阻塞和HTTP队头阻塞的原因我们可以看到,出现队头阻塞的原因有两个: 独立的消息数据都在一个链路上传输,也就是有一个“队列”。比如TCP只有一个流,多个HTTP请求共用一个TCP连接 队列上传输的数据有严格的顺序约束。比如TCP要求数据严格按照序号顺序,HTTP管道化要求响应严格按照请求顺序返回 所以要避免队头阻塞,就需要从以上两个方面出发,比如quic协议不使用TCP协议而是使用UDP协议,SCTP协议支持一个连接上存在多个数据流等等。 作者:熊纪元 链接:https://juejin.cn/post/6844903853985366023 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者:熊纪元 链接:https://juejin.cn/post/6844903853985366023 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2013-03-24 · 1 min · 60 words · -

环比 同比

环比 同比 与上一统计段比较,例如2005年7月份与2005年6月份相比较,叫环比。与历史同时期比较,例如2005年7月份与2004年7月份相比,叫同比。

2013-03-23 · 1 min · 3 words · -

linux 下解锁 nexus 7

linux 下解锁 nexus 7 Requirements You must have the sdk installed and you are able to access, and use adb and fastboot. You must have debugging enabled on your Nexus 7. Download Su here (Chainfire’s thread for supersu) (Thanks Eric_Eric_Eric) Download CWM here. Scroll down to Nexus 7 and choose whether touch or regular. Pre-Steps To make this easier, you should put the su zip on the sdcard for later. ...

2013-03-23 · 1 min · 139 words · -

左外连接,右外连接,全连接,内连接

左外连接,右外连接,全连接,内连接, left join, right join 外联接: 外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定: LEFT JOIN 或 LEFT OUTER JOIN, SQL 标准允许省略 OUTER 关键字,因此 LEFT JOIN 已经足够明确。 左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。 如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 RIGHT JOIN 或 RIGHT OUTER JOIN。 右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。 FULL JOIN 或 FULL OUTER JOIN。 完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。 Microsoft® SQL Server 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字: LEFT OUTER JOIN 或 LEFT JOIN RIGHT OUTER JOIN 或 RIGHT JOIN ...

2013-03-20 · 4 min · 657 words · -

Less

Less CSS (层叠样式表) 是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网 (World Wide Web) 中。HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义。 作为一门标记性语言,CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题: CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因为缺少 CSS 编写经验而很难写出组织良好且易于维护的 CSS 代码,造成这些困难的很大原因源于 CSS 是一门非程序式语言,没有变量、函数、SCOPE (作用域) 等概念。LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin (混入) ,运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情。 http://www.w3cplus.com/css/less http://www.cnblogs.com/hooray/archive/2011/12/02/2272212.html

2013-03-20 · 1 min · 38 words · -