• 线性表顺序存储结构是指在内存上用连续的存储空间来存储数据。这就导致这种结构需要在初始化的时候就申请好需要的全部空间。如下图,每一个格子代表一片内存的存储区域,如果我们初始化了一个最大5个元素的顺序存储的线性表,那么它在内存中的存储位置,可能是0,1,2,3,4,也可能只2,3,4,5,6,总之他们的内存地址是连续的。这种结构用完空间之后就没有了,申请多大的空间也不好把握,如果申请的比较大,没有存储数据的空间别的程序也不能使用,只能浪费在哪里了,所以灵活性较小。这种结构和数组很相似,所以可以用数组来实现。Go 代码实现:package main import (    "fmt"    "errors"    "os" ) //最大长度 const MAXSIZE = 10 type L...
     发布日期: 2015-12-22  分类: 编程基础  热度: 532 ℃ 0条评论
  • 把Mobile Detect类库作为一个组件引入到Yii2里面去。首先需要先用Composer安装Mobile Detect:composer require mobiledetect/mobiledetectlib。然后新建一个DeviceDetect类:<?php namespace common\service; use Yii; use yii\base\Object; use Detection\MobileDetect; /**  * 移动设备检测功能  * @link http://mobiledetect.net/  * @link https://www.360us.net/  *  * @example  * //注册一个检测移动设备组件  * Yii::$a...
     发布日期: 2015-12-01  分类: PHP  热度: 604 ℃ 0条评论
  • mysql的utf8mb4并不是完整的utf8mb4,只能存储最多三个字节的字符,而完整的utf8mb4编码是一个字符最多可以占用4个字节的。这就导致一些4个字节的字符不能存进utf8mb4编码的表里面,比如emoji表情符号。mysql5.5.3版本的时候新增了一个新的字符集,叫做utf8mb4mb4,这个就是真正的utf8mb4编码的,也可以直接存储emoji表情符号。utf8mb4mb4的字符范围是包含utf8mb4的,所以,我们可以直接把当前数据库的编码转换成utf8mb4mb4,不会有任何问题。为了避免以后因为字符范围而导致的问题,我们在新建数据库的时候也应该用utf8mb4mb4代替utf8mb4作为默认的字符编码。校验规则的话utf8mb4mb4_general_ci和utf8...
     发布日期: 2015-11-17  分类: MySQL  热度: 1217 ℃ 0条评论
  • 1、验证码验证码被认为是对抗CSRF攻击最简洁而有效的防御方法CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求。而验证码,则强制用户必须与应用交互,才能完成最终请求。因此,在通常情况下,验证码能够很好地遏制CSRF攻击。通常我们不可能在所有地方都加上验证码,所有这个也只能作为一种辅助手段。2、Referer Check就是检查请求的来源,这个还可以用来做图片的防盗链。Referer是由浏览器通过HTTP头来发送的。但是,这个头也不是什么时候都有的,很多情况下都是没有的,还可以通过程序来自定义。这个也只能作为一个辅助手段。3、Anti CSRF Token防御CSRF的主要方法是使用一个Token。CSRF的本质原因就是重要操作的所有参数都能被攻击者猜测到。攻击者只有预测出一个UR...
     发布日期: 2015-07-28  分类: 其他  热度: 945 ℃ 0条评论
  • 1、HttpOnlyHttpOnly最早由微软提出,并在IE6中实现,至今已经逐渐成为一个标准。浏览器将禁止页面的javascript访问带有HttpOnly属性的Cookie。严格来说,HttpOnly并非为了对抗XSS,HttpOnly解决的是XSS后的Cookie劫持攻击。PHP设置带HttpOnly属性Cookie的方法是使用自带的setcookie函数:setcookie('PHPSESSID', '79ce945e3bfd1917919e63a7ddbfe385', null, null, null, null, true);最后一个参数是设置httponly属性,执行后服务器会发送如下设置cookie的头:Set-Cookie:PHPSESSID=79ce945e3bfd191...
     发布日期: 2015-07-27  分类: 其他  热度: 776 ℃ 0条评论
  • 1、定位执行效率较低的sql语句通常有两种方法。一种是慢查询日志,用--log-slow-queries[=file_name]启动时,mysql会记录所有执行时间超过long_query_time秒的sql语句的日志文件。 long_query_time参数单位时秒,精度可以精确到微秒,默认情况下管理语句和不使用索引进行查询的语句是不会记录的,如果要记录这两类sql语句可以用--log-slow-admin-statements和log_queries_not_using_indexes来控制。还有一种方法就是使用show processlist命令查看当前mysql在进行的线程,包括线程的状态,是否锁表等,实时的查看sql的执行情况,同时对锁表操作进行优化。2、通过explain分析低效...
     发布日期: 2015-07-26  分类: MySQL  热度: 670 ℃ 0条评论
  • 服务器端:package main import (     "bufio"     "bytes"     "fmt"     "net"     "os"     "strconv"     "time" ) var User map[string]*net.TCPConn func main() {     var tcpAddr *net.TCPAddr     var tcpListen *net.TCPListener     var tcpConn *net.TCPConn     var err error     User = make(map[string]*net.TCPConn)     //监听端口     tcpAddr, err = net.Resolv...
     发布日期: 2015-06-30  分类: Go  热度: 787 ℃ 0条评论
  • 这是一份写HTML的样板,每写一个新的HTML页面都可以用它来初始化。<!-- HTML5. Use tags like <article>, <section>, etc. See: http://www.sitepoint.com/web-foundations/doctypes/ --> <!doctype html> <html>   <head>     <meta charset="utf-8">     <!--     Ask IE to behave like a modern browser     See: https://www.modern.ie/en-us/perform...
     发布日期: 2015-06-24  分类: HTML  热度: 703 ℃ 0条评论
  • pjax=ajax + pushState。像github上面点击一个链接都会有个load的动画,github用的就是pjax加载的这些链接内容。这里用jQuery的pjax库:jquery-pjax.js,github地址:https://github.com/defunkt/jquery-pjax最基础的用法:$(document).pjax('a', '#pjax-container')会在本页面的所有a链接上面启用pjax,内容替换的容器是id为pjax-container的元素,也可以是一个class的元素。上面这句话会使页面上所有的a链接都启用pjax,但是如果我只想部分链接启用呢?我们可以给a元素加上data-pjax属性,然后选择器写上a[data-pjax],这样就只有类似...
     发布日期: 2015-06-24  分类: Javascript  热度: 927 ℃ 0条评论
  • yii2的程序功能测试yii2集成了Codeception测试框架,所以是官方支持程序的单元测试,功能测试和验收测试。yii2的基本应用模板和高级应用模板都支持这三种测试。测试文件是在tests目录,很明显。这里主要是介绍怎么来用框架提供的这个测试功能。第一步安装Codeception:composer global require "codeception/codeception=2.0.*" composer global require "codeception/specify=*" composer global require "codeception/verify=*"第二步是添加全局命令执行命令composer global status,命令的输出应该会有一个目录,类似如下输...
     发布日期: 2015-06-02  分类: PHP  热度: 2088 ℃ 2条评论