CORS全称是Cross-Origin Resource Sharing(跨域资源共享),是W3C推荐的跨域请求方案。同时也需要服务器端程序的配合。作用主要是以下这些跨站http请求:1、跨域的AJAX请求。2、网络字体(Web Font),就是css里面 @font-face定义的字体,可以在服务器端配置哪些域允许跨站载入这些TrueType字体。3、WebGL的纹理(texture)文件。4、用HTML5的drawImage函数画到canvas里面的图片。场景示例简单的请求一个简单的跨域请求像下面描述的那样:1、只使用了GET, HEAD 或者POST。假如POST用来向服务器发送数据的话,HTTP头的Content-Type字段值是application/x-www-form-urlencoded, multipart/form-data,或者text/plain三个中的一个。2、没有设置自定义的HTTP头,就是哪种以X-开头的,比如X-Modified。例如域http://localhost的需要请求http://www.example.com的内容 :我们可以很容易的在本地通...
 发布日期: 2015-04-23    分类: 其他    浏览量: 7264   0条评论  
1、hhostnamelookups off域名查找:这增加了处理每个请求的开销,首先,服务器会对dns系统做一个反向查询以找出客户系统的主机名,然后又进行正向查询看获得的主机名是否真实指向客户的ip。大多数情况下,你可以简单的关闭这个功能,如果你经常处理服务器日志,这个工作完全可以在以后进行。你可以通过在设置文件中加入指示hostnamelookups off来关闭这个功能。2、options -followsymlinks符号连接:当打开这个选项时,apache将检查每个请求中是否包含对符号连接的引用,这将对请求中包含的每个路径调用一次lstat()系统调用。除非你准备使用符号连接,否则用 options -followsymlinks 来关掉它。3、sethandler server-status服务器状态信息,默认已经关闭。该模块尽管这对测试与监控服务器很有用,但它也为服务器带来了额外的开销,你可以通过寻找任何类似sethandler server-status的指示来关闭,如果可能,你可以在安装apache时移除这个模块。4、options -indexes关闭目录浏览。5、...
 发布日期: 2015-04-13    分类: 其他    浏览量: 3816   0条评论  
本篇文章内容来源于Golang核心开发组成员Andrew Gerrand在Google I/O 2014的一次主题分享“Testing Techniques”,即介绍使用Golang开发 时会使用到的测试技术(主要针对单元测试),包括基本技术、高级技术(并发测试、mock/fake、竞争条件测试、并发测试、内/外部测 试、vet工具等)等,感觉总结的很全面,这里整理记录下来,希望能给大家带来帮助。原Slide访问需要自己搭梯子。另外这里也要吐槽一 下:Golang官方站的slide都是以一种特有的golang artical的格式放出的(用这个工具http://go-talks.appspot.com/可以在线观看),没法像pdf那样下载,在国内使用和传播极其不便。转载自:http://tonybai.com/2014/10/22/golang-testing-techniques/一、基础测试技术1、测试Go代码Go语言内置测试框架。内置的测试框架通过testing包以及go test命令来提供测试功能。下面是一个完整的测试strings.Index函数的完整测试文件://strin...
 发布日期: 2015-04-10    分类: Go    浏览量: 3440   0条评论  
其实这样的程序随便搜一下一大把!这里纯粹练习用的,然后模仿的和windows上面的Ping程序一模一样。这里参考了这篇博文:http://my.oschina.net/ybusad/blog/300155ping程序发的是icmp包,这个协议和tcp、udp协议是在同一层的。包结构如下:    0                   1                   2                   3     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |     Type      |     Code      |          Checksum             |    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    |           ...
 发布日期: 2015-04-10    分类: Go    浏览量: 3494   0条评论  
1、搜索的索引列,不一定是要选择的列。换句话说,最适合索引的列是出现在WHERE字句中的列,或连接字句中指定的列,而不是出现在SELECT关键字后选择列表中的列。2、使用唯一索引。考虑某列中值得分布,索引的列的基数越大,索引的效果越好。例如,存放出生日期的列具有不同的值,很容易区分各行。而用来记录性别的列,只有“M”和“F”,则对此列进行索引没有多大用处,因为不管搜游那个值,都会得出大约一半的行。3、使用短索引。如果对字符串列进行索引,应该指定一个前缀长度,只要有可能就应该这样做。4、利用最左前缀。在创建一个n列的索引时,实际是创建了MySQL可利用的n个索引,多列索引可起几个索引的作用,因为可利用索引中最左边的列集来匹配行,这样的列集成为最左前缀。5、不要过度索引。6、对于InnoDB存储引擎的表,记录默认会按照一定的顺序保存,如果有明确定义的主键,则按照主键顺序保存。如果没有主键,但是有唯一索引,那么就是按照唯一索引的顺序保存。如果既没有主键又没有索引,那么表中会自动生成一个内部列,按照这个列保存。按照主键或者内部列访问时最快的,所以InnoDB表尽量自己指定主键,当表中同时有几个...
 发布日期: 2015-04-07    分类: MySQL    浏览量: 3136   0条评论  
我们能够如此简单的实现Ajax的文件上传要得益于两个新的对象:File和FormData对象,还有就是w3c标准化XMLHttpRequest之后的扩展。现在新的浏览器都支持这些东西。先来看一下File对象。取得File对象有两个途径:1、用户在一个<input>元素上选择文件后返回的FileList对象。2、来自由拖放操作生成的 DataTransfer对象。这里主要讲的是第一个,第二个有兴趣的同学可以自行查找相关资料。假如有这样一个inpu元素:<input id="file" type="file" name="file">可以像下面那样获取到File对象:var input = document.getElementById("file"); console.log(input.files[0]);input.files是就是上面所说的FileList对象,这是一个数组对象,每一个元素都是一个File对象。File对象的主要属性如下:name:当前File对象所引用文件的文件名。size:文件大小,单位是字节。type:文件MIME类型。还有其他一些信息...
 发布日期: 2015-03-27    分类: Javascript    浏览量: 4308   0条评论  
文章只是实现了消费功能。主要的代码清单如下:<?php /** * @link  http://www.360us.net/ * @author dyllen_zhong@qq.com */ class UnionPay { /**  * 支付配置  * @var array  */ public $config = []; /**  * 支付参数,提交到银联对应接口的所有参数  * @var array  */ public $params = []; /**  * 自动提交表单模板  * @var string  */ private $formTemplate = <<<'HTML' <!DOCTYPE HTML> <html> <head>     <meta charset="utf-8"> <title>支付</title> </head> <body> <div style="text-align:cen...
 发布日期: 2015-03-26    分类: PHP    浏览量: 8751   0条评论  
闲来无事,把git的基本用法来一遍。配置git,有提供一个git config的命令来做。git的配置文件存放在三个地方:  1、/etc/gitconfig:对所有用户都适用的配置。用git config配置时加上--system参数就是读写的这个文件。  2、~/.gitconfig:只适用于这个用户的配置。git config加上参数--global参数配置它。  3、项目中的.git/config:只对当前项目有效。Windows系统,在用户主目录里面有个.gitconfig文件。置配用户信息就是配置用户名和电子邮件,每次git提交时都会引用这两条信息,说明是谁提交了更新。配置命令如下:git config --global user.name "test" git config --global user.email "test.qq.com"如果去掉--global参数就是配置当前项目的.git/config文件。配置默认文本编辑器默认是调用系统的默认编辑器git config --global core.editor vim配置差异分析工具git config --glo...
 发布日期: 2015-03-18    分类: 其他    浏览量: 3562   0条评论  
这里讲的是微信开放平台移动应用里面的微信支付功能。开放平台的微信支付和公众号的微信支付是不一样的。然后是我下面的代码仅仅是做了基本的消费功能。基本流程如下:1、获取access token。2、提交预支付订单信息,拿到prepayid。3、组成包括prepayid在内的相关信息数据返回给客户端发起支付请求。在提交预支付订单之前需要先获取到access token才行。这个token是公用的有效期是7200秒。具体获取方法可以看下面的WechatAppPay类。去拿这个access token不是凭公众号的appid和secret去拿而是用微信开放平台移动应用的appid和secret去拿的。这里我写了一些个专门做微信支付的操作的类,有需要的可以拿去参考。下面的代码我都实际测试通过了。开放平台文档版本是V1.7。WechatPayBase类,主要就是一些基础公用功能的方法,代码清单如下:<?php namespace common\services\WechatPay; /** * @link http://www.360us.net/  * @author dyllen_zho...
 发布日期: 2015-03-03    分类: PHP    浏览量: 15412   0条评论  
最近把支付宝、银联和微信支付全都做了一遍,目前做的都还只涉及到消费的功能。做下来感觉就是各个平台的支付流程都是大同小异,签名方式也是一样的。这里主要总结一下微信支付公众号支付的一些东西。微信公众号支付的主要流程如下:1、生成我们自己系统的订单。2、调用微信支付的统一下单接口把订单信息推给微信。3、在第二部会返回一个预支付会话标识,然后凭这个标识用JS去调用支付操作。关于支付页面的url问题,微信要求是最后必须要有“/”,我看到很多文章说不适合MVC结构的程序,我的情况是否定的,MVC结构一样可以。比如url是这个:http://www.example.com/payment/wechatpay/ ,url里面payment是controller,wechatpay是action,这有问题吗?一样可以访问,可以支付,是不是一个真正的目录,在微信看来就是,实际上其实不是。好,下面进入正题。微信支付配置如下:$config = [     'mch_id' => '1234455666', //商户号     'signType' => 'MD5', //签名方式,目前只有MD5...
 发布日期: 2015-02-28    分类: PHP    浏览量: 6568   0条评论