- 博客(36)
- 资源 (2)
- 收藏
- 关注
原创 MongoDB Sharding使用总结
Shard Keys切片字段的选择切片方式的选择查询效果的验证BalancerOthersMongoDB的Sharding机制能够让数据库系统以接近线性的方式进行扩展,非常适合具备大数据集或者高吞吐量的业务。官方文档参考:https://docs.mongodb.com/manual/sharding/文档上已经写得很详细了,这里主要针对其中的几个关键点做使用总结
2018-01-25 15:54:13
2550
原创 对HDFS上多个文件并行执行grep操作
HDFS上存了大量归档压缩的日志文件,偶尔需要到上面查询一些信息。hadoop fs虽然可以执行ls,cat等操作,但是却不能直接执行grep操作。写个map reduce程序再执行,虽然可行,却感觉有点麻烦,没有直接使用shell命令方便灵活。经过查询和尝试,终于找到了方法。举个例子,启用10个进程,查询在2016年1月11日19点和20点之间的所有包含abcdefg的日志记录:hadoop fs
2016-01-12 18:44:54
14245
原创 (一) 初识HTTP/2
HTTP/2是HTTP协议家族的新成员,按照IETF的HTTP Working Group的规划,它将取代“历史悠久”的HTTP1.1协议。为什么修改HTTP呢?HTTP协议的上一个版本是HTTP1.1,在它“服役”超过16年的今天,Web的世界已经发生了巨大的变化。现在,浏览器打开一个新网页,下载的内容不仅仅包含一个HTML文件和少数资源文件了。实际情况可能是,浏览器发起了数十次,甚至数百次HTT
2016-01-07 17:46:28
1457
原创 (十一) HTTP/2的其它要求和注意事项
连接管理HTTP/2的连接是持久的。为了达到最佳性能,客户端不应该关闭连接,直到它确定不再需要与服务端进行通信了(例如,用户从一个特定的网页离开)或者服务端关闭了连接。对于一个给点的主机名和端口对,客户端不应该打开超过一个的HTTP/2连接,其中,主机名源自URI(一种替代服务)或者一个配置的代理。客户端可以创建额外的连接作为替代,用于替代即将耗尽的可用流标识符空间的流,或者为一个TLS连接刷新密钥
2016-01-06 15:11:49
5053
原创 (十) HTTP/2的消息交换
HTTP/2的目的是尽可能地兼容目前正在使用的HTTP协议。这意味着,从应用的角度来看,协议的大部分特性并没有改变。为了实现这个目标,所有请求和响应的语义都被保留,尽管表达这些语义的语法已经变化。因此,HTTP1.1协议中“语义和内容”、“有条件的请求”、“范围请求”、“缓存”和“认证”等规范和要求同样适用于HTTP/2。对于HTTP1.1“消息语法”和“路由”的选定部分,例如HTTP和HTT
2015-10-29 18:20:26
2569
原创 (九) HTTP/2的错误码定义
HTTP/2的错误码是32比特位的字段,用在RST_STREAM帧和GOAWAY帧中传递流错误或连接错误的原因。所有错误码共享一个相同的错误码空间。一些错误码只适用于流或者整个连接,在其它上下文环境中没有预定义的语义。定义了以下错误码:NO_ERROR (0x0,没有错误):关联的条件不是错误的结果。例如,GOAWAY帧可以包含此错误码,表明优雅地关闭连接。PROTOCOL_ERROR (0x1
2015-10-02 16:35:36
5427
原创 (八) HTTP/2的各种帧定义
HTTP/2定义了多种帧的类型,每种类型都有一个唯一的8字节类型编码。在整个TCP连接或者是各个独立的流的建立和管理过程中,每种类型的帧都为特定的目的而服务。DATA帧DATA帧(数据帧,类型是0x0)传输与流相关联的任意的、可变长度的字节序列。例如,使用一个或多个DATA帧携带HTTP的请求和响应的有效载荷。DATA帧可以包含填充字节序列。填充可以被添加到DATA帧,以掩盖消息的大小。因此,填充属
2015-10-01 16:37:47
5255
2
原创 (七) HTTP/2流的错误处理
HTTP/2的帧允许两类错误:使整个连接不可用的错误情况是“连接错误”; 在一个单独的流内部的错误是“流错误”。连接错误处理连接错误是指任何阻止帧层进一步处理或者破坏任何连接状态的错误。遇到连接错误的端点应该首先发送一个GOAWAY帧,带有成功从对端接收到的最后一个流的流标识符。GOAWAY帧包含一个说明为什么终止连接的错误码。发送完这个GOAWAY帧之后,端点必须关闭TCP连接。有可能GOA
2015-09-09 15:39:18
1915
原创 (六) HTTP/2流的优先级
客户端可以通过在打开流的HEADERS帧中包含优先次序信息来为一个新流指定优先级。在其它任意时间,可以使用PRIORITY帧来改变流的优先级。优先次序的目的是允许端点表达希望对端在管理并发流的时候如何分配资源。更重要的是,当发送能力受限的时候,优先级能够用来选择流发送帧。通过让流依赖其它流的完成,可以为流排列优先级。每个依赖都被分配了一个相对权重,即一个用来决定分配给依赖相同流的各个流的可用资源相对
2015-09-09 12:42:44
3675
原创 (五) HTTP/2的流量控制
HTTP/2利用流来实现多路复用,这引入了对TCP连接的使用争夺,会造成流被阻塞。流量控制方案确保在同一连接上的多个流之间不会造成破坏性的干扰。流量控制会用于各个独立的流,也会用于整个连接。HTTP/2通过使用WINDOW_UPDATE帧来进行流量控制。流量控制的原则HTTP/2“流”的流量控制的目标是:在不改变协议的情况下允许使用多种流量控制算法。HTTP/2的流量控制具有以下特
2015-08-28 19:04:24
4545
原创 (四) HTTP/2的流状态
“流”是HTTP/2连接中客户端和服务端之间交换的独立的、双向的帧序列。流具有以下几个重要特性:一个单独的HTTP/2连接能够包含多个同时打开的流,流的两个端点从多个流中交叉存取帧。流可以被客户端或服务端单方面建立和使用,也可以被客户端和服务端共享。流可以被任意一端关闭。帧在流上发送的顺序很重要。接收方按照收到帧的顺序处理帧。特别地,HEADER和DATA帧的顺序在语义上是重要的。流以一个
2015-08-27 20:12:18
3871
2
原创 (三) HTTP/2的帧
HTTP/2的连接建立之后,两个端点之间就可以开始交换“帧”了。帧的格式 +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8
2015-08-26 19:08:57
1863
原创 (二) HTTP/2起步
与HTTP1.x一样,HTTP/2仍然是建立在TCP连接之上的应用层协议,请求由客户端发起,并且,URI的基本规则保持不变。HTTP/2的版本标识对应URI中的http或https,HTTP/2有2个版本标识:“h2”对应以”https”开头的URI,表示HTTP/2是运行在TLS之上的,由TLS提供认证和加密等安全保障;“h2c”对应以”http”开头的URI,表示HTTP/2是运行在明文TC
2015-08-26 16:54:14
1609
原创 Ubuntu下安装MySQL5.5
在MySQL官网上下载了安装包,并且按照官方文档的说明安装。发现文档中的安装说明在Ubuntu下不好使。于是搜寻资源,总结如下:前几步,按照官网的说明进行:shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-O
2011-11-09 19:37:19
1124
原创 关于cookie的设置
1.设置cookie时用什么样的参数,取消cookie时也要用一样的参数;2.设置cookie之前不能输出内容;3.当前页面设置的cookie到下一个页面才会起作用。
2011-11-05 21:15:55
671
原创 PHP中用正则表达式实现类似trim的功能(包括去除全角空格)
trim()函数去除单字节的字符效果很好,但是无法有效去除UTF-8编码中的全角空格(可能去不掉,或引起乱码)。要去掉UTF-8编码字符串开头和结尾的空格(全角、半角)、制表符、换行符等,可以如下实现:$s = mb_ereg_replace('^(([ \r\n\t])
2011-10-09 16:34:56
6436
1
原创 PHP上传文件时$_FILES为空
今天写了一个上传文件的PHP脚本,上传总是不成功,检查后发现$_FILES数组为空,感觉很奇怪。后来才知道,原来是因为form里面没有写上enctype="multipart/form-data"的缘故。表单中enctype="multipart/form-data"的意思,是设
2011-09-05 20:05:46
5947
1
转载 mysql中的G标志实现纵向显示
mysql中提供了一个G [g] 标志,放到sql语句后,可以使一行的每个列打印到单独的行。例如:mysql> select * from user_msg limit 2\G;*************************** 1. row ****************
2011-07-12 15:39:24
3229
原创 Vim自动排版命令
由于在.vimrc文件中设置了filetype plugin indent on和set cindent shiftwidth=4在SecureCRT中使用鼠标复制-粘贴时,代码的自动缩进导致每一行都比上一行缩进一个tab,手工调整很麻烦,幸好发现了vim的自动排版方法:在命令行
2011-07-09 16:40:22
23403
3
转载 使用apache的ab压力测试时失败请求原因
<br />网上一个论坛上找到的,地址http://bbs.51testing.com/viewthread.php?tid=204192<br /> <br />只要出现 Failed requests 就会多出现一行要求失败的各原因的数据统计,分别有 Connect, Length, 与 Exception 三种,分别代表的意义为:<br />Connect 无法送出要求、目标主机连接失败、要求的过程中联机被中断<br />Length 响应的内容长度不一致 ( 以 Conten
2011-05-23 10:27:00
10059
2
原创 使用Zend Studio和Zend Debugger进行php代码的远程调试
1. 下载并安装Zend Studio到Windows。例如Zend Studio 8.0。2. 下载Zend Debugger到Linux。注意,区分系统,有32位和64位的。3. 展开压缩包,例如,tar –zxvf ZendDebugger-5.2.15-linux-glibc23-x86_64.tar.gz。4. 使用phpinfo查看php版本,根据php版本进入对应的目录。例如,php的版本是5.2.5,那么进入5_2_x_comp/。找到Zend
2011-05-20 11:37:00
5582
原创 使用apache的ab压力测试时post文件的使用
网上有很多介绍apache的ab的,却很难找到-p选项具体怎么用,简单实践并总结一下:-p选项指定post文件的位置;-T选项指定post文件的编码方式,默认是明文,如果指定-T 'application/x-www-form-urlencoded',则表示post文件使用urlencode一个小例子命令:cd /usr/local/apache2/binsudo ./ab -c 10 -n 100 -p /home/post -T 'application/x-www-form-urlencoded'
2011-05-19 11:47:00
17113
1
原创 UTF8无BOM
<br />UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行,可能会引起错误。(在Linux下看时,文件开头多了个<feff>)Window下用Notepad++写php文件,编码是UTF-8时就带有这种BOM。用Notepad++时选择以UTF-8无BOM格式编码,解决这个问题。
2011-04-29 17:39:00
2270
原创 用javascript返回前一个页面
<br />返回前一个页面并刷新:<br />location.replace(document.referrer); <br />其中,document.referrer 得到的值是前一个页面的URL。<br />history.go(-1)和history.back()也能返回前一个页面,但是不能刷新页面。
2011-04-21 21:46:00
1291
原创 PDO模糊搜索
<br />$sql = "select * from table where name like '%?%'";<br />$db->query($sql, $name);<br />报错,加转义字符也不好使。<br />解决方法:<br />$sql = "select * from table where name like ?";<br />$name = "%".$name."%";<br />$db->query($sql, $name);
2011-04-18 21:20:00
1283
1
原创 使用UTF-8编码后一些网页出现空白或乱码
<br />由于很多浏览器默认的编码是GB2312,所以使用UTF-8编码时,如果没有显式地用meta或header指定编码,浏览器会首先按照GB2312解析网页,这样,某些UTF-8的网页会变成空白页。另外,浏览器在解析到一半的时候,可能发现编码不对,于是重新解析,这就是有时含有中文的javascript会被执行两次的原因,例如,弹出两个alert。
2011-04-11 21:26:00
905
原创 统一将Linux Shell、Vim和SecureCRT的编码修改为UTF-8
<br />首先检查SecureCRT,<br />设置<br />Options->Global options->General->Default session->Edit Default Settings->Terminal-><br />Appearance->Char
2011-04-08 17:29:00
7189
原创 PHP中的跳转语句问题
PHP中跳转语句执行后,跳转到新页面执行,原来页面中的代码还会继续执行,这样就会引起一些逻辑问题,因此,在跳转语句后面要加上一句:exit();
2011-04-07 20:50:00
1755
原创 解决Linux和SecureCRT上UTF-8汉字乱码问题
首先检查SecureCRT,设置Options->Global options->General->Default session->Edit Default Settings->Terminal->Appearance->Character encoding,选择UTF-8。然后设置Options->Global options->General->Default session->Edit Default Settings->Terminal->Appearance->Font,选择不会出现汉字乱码的字
2011-04-03 10:24:00
1620
原创 配置Apache虚拟主机
在服务器上配置Apache虚拟主机,在本机上远程访问。服务器上的系统是Linux,本机的系统是Windows。假设虚拟主机的域名是www.abc.com,IP地址是192.136.11.23,配置过程如下:1. 修改本机C:/WINDOWS/system32/drivers/etc目录下的hosts文件,增加一行192.168.11.23 www.abc.com2. 修改服务器usr/apache2/conf目录下的httpd.conf,如果已经配好了就不用修改了。(1) 注释以下三行#ServerAd
2011-03-29 21:16:00
662
原创 PHP中的define与const
在老版本的PHP中:define不能定义在类中,而const必须定义在类中,并且const必须通过类名::变量名来进行访问;两者都是不能进行重新赋值。新版本中有些变化,const也可以在类外定义和使用,以下内容来自PHP手册:Example #1 定义常量define("CONSTANT", "Hello world.");echo CONSTANT; // outputs "Hello world."echo Constant; // 输出 "Constant" 并发出一个提示性信息?>Example #
2011-03-29 15:11:00
1610
原创 mysql.sock的问题
<br />PHP程序在Windows下可以运行,但是到了Linux下就出来一个错误:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)<br />在网上查了一下,原因是php设置正是通过'/var/lib/mysql/mysql.sock' 连接的,而机器上的这个目录是空的,真正的mysql.sock在'/tmp/mysql.sock'。解决的办法有3个:<br />1. 要修改一下配置文件,
2011-03-28 21:07:00
1672
原创 javascript的字符串拼接和引号问题,以onclick为例
<br />今天写“删除”超链接,试了两次:<br />$onclick = "javascript:return confirm(/”Are you sure to delete? /”);";<br />echo "<a href=/"$url/" onclick=/"$onclick/">删除</a>";<br />点击“删除”按钮,没有confirm,直接跳转<br /> <br />$onclick = "javascript:return confirm('Are you sure to del
2011-03-26 13:51:00
16544
2
原创 首次配置服务器端apache,iptables,hotst,mysql
最近开始学习Web开发,把遇到的一些问题和解决方法记录在这里,供大家分享,也便于自己查阅。服务器端已经由OPS基本搭好了LAMP环境,但是从其它机器上访问服务器的http://ip/index.htmlhttp://domain/index.html返回404错误。首先想到的是apache没有配置好,于是检察了apache的配置文件,并且重启apachecd /usr/local/apache2/binsudo ./apachestl restart但是仍然不起作用。又胡乱试了一下sudo ./apache
2011-03-26 10:08:00
1546
转载 [转]C语言关键字volatile的使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables
2009-10-07 10:56:00
339
转载 [转]C语言位域精解
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的
2009-10-06 17:13:00
421
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人