A crazy guy
  • JavaScript快速获取图片宽高的方法

    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器。

    我们一步一步进入这个过程

    简陋的获取图片方式

    // 图片地址 后面加时间戳是为了避免缓存
    var img_url = 'https://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Date.parse(new Date());
     
    // 创建对象
    var img = new Image();
     
    // 改变图片的src
    img.src = img_url;
     
    // 打印
    console.log('width:'+img.width+',height:'+img.height);
    

    ...

    READ ALL

  • 分享一道JavaScript闭包定时执行的笔试题

    这道笔试题如下

    var arr = ['第一次', '第二次', '第三次'];
     
    for (var i=0; i < arr.length; i++) {
      setTimeout(function () {
        document.getElementById('info').innerHTML = arr[i];
      }, i * 10000);
    }
    

    问你执行结果。第一眼看到这道题,我当即就知道考的是闭包,于是我最快就直接说三次的arr[i]的值都是表示数组最后一个值,所以三次赋值结果都是第三次。时间是10秒第一次,20秒第二次,30秒第三次。

    ...

    READ ALL

  • JavaScript判断DOM节点是否存在

    JavaScript判断DOM节点是否存在页面中

    JavaScript原生函数没有提供判断DOM节点是否存在方法,我们通常获取DOM节点几乎都是document.getElement...方法,会返回一个object数组合集,我们可以通过object[0],object[1]这样来访问这个合集的每一个对象。既然返回的是数组合集,那么就有length属性,而length大于等于1即表示DOM节点存在页面中

    Code

    Object.prototype.exist = function(){ 
      if(typeof this !='undefined' && this.length >= 1){
        return true;
      }
    
      return false;
    };
    

    ...

    READ ALL

  • PHP系统函数http_build_query系统函数使用方法

    什么是http_build_query

    使用给出的关联(或下标)数组生成一个经过URL-encode的请求字符串。参数formdata可以是数组或包含属性的对象。一个formdata数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了numeric_prefix参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让PHP或其它CGI程序在稍后对数据进行解码时获取合法的变量名

    http_build_query有多种用法,不仅可以传入关联数组,同时也可以传入索引数组,甚至多维数组以及对象。

    ...

    READ ALL

  • 关于MongoDB最大连接数的查看与修改

    在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道,估计也没有人在WIN平台下使用MongoDB做生产环境

    [root@DELL113 mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
    MongoDB shell version: 2.4.1
    connecting to: 192.168.6.42/test
    >  db.serverStatus().connections
    { "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
    

    ...

    READ ALL

  • MongoDB的安全配置策略

    上一次我写了一篇《Linux下安装MongoDB教程》介绍了Linux下如何安装与连接MongoDB教程,默认MongoDB启动后任何机器都能通过默认端口连接上,非常危险,如果来个恶意分子突然把你数据给remove那就哭死了。所以今天来说说MongoDB的安全配置。

    MongoDB可以从以下几方面入手解决安全问题

    添加用户验证

    添加用户

    在MongoDB中,用户权限是与库绑定的,需要注意。

    添加一个用户

    [root@DELL113 mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42:27017
    MongoDB shell version: 2.4.1
    connecting to: 192.168.6.42:27017/test
    > use test1
    switched to db test1
    > db.addUser('lee','pass')
    {
      "user" : "lee",
      "readOnly" : false,
      "pwd" : "e6d78598d0bfe068a43e57a4bc82183f",
      "_id" : ObjectId("515942fa1f46044556f12069")
    }
    >
    

    ...

    READ ALL

  • Linux下安装MongoDB教程

    MongoDB是NoSQL中的一种,随着越来越多公司产品使用,已经开始逐步取代一些高性能查询的地位了。它使用简单,安装更简单。

    下载MongoDB

    -bash-3.2# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.1.tgz
    --2013-03-29 23:25:20--  http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.1.tgz
    Resolving fastdl.mongodb.org... 205.251.212.177, 205.251.212.190, 205.251.212.16, ...
    Connecting to fastdl.mongodb.org|205.251.212.177|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 93077588 (89M) [application/x-tar]
    Saving to: `mongodb-linux-i686-2.4.1.tgz'
     
    100%[============================================================================================================================>] 93,077,588   114K/s   in 14m 6s  
     
    2013-03-29 23:39:27 (107 KB/s) - `mongodb-linux-i686-2.4.1.tgz' saved [93077588/93077588]
     
    -bash-3.2# ls
    db  install.log  install.log.syslog  logs  mongodb-linux-i686-2.4.1.tgz
    -bash-3.2#
    

    ...

    READ ALL

  • JavaScript获取当前执行函数的函数名称

    JavaScript默认没有提供能直接获取当前执行函数的函数名称方法,但可以通过一些技巧取得当前执行函数的函数名称。

    通过arguments.callee对象获取函数的字面量

    function fun_name (num){
      var tmp = arguments.callee.toString();
      console.log(tmp);
    }
     
    fun_name();
    

    Output:

    function fun_name (num){
      var tmp = arguments.callee.toString();
      console.log(tmp);
    }
    

    ...

    READ ALL

  • JavaScript数组创建、unshift、shift、pop、push函数操作

    如何声明数组

    var tmp = [];         // 简写模式 推荐
    var tmp = new Array(); // 直接new一个
    var tmp = Array();      // 或者这样也可以
    

    在new数组的时候可以传入一个参数,表示数组的初始化长度

    // new的时候传入一个参数表示初始化数组长度
    var tmp = new Array(3); 
    
    console.log(tmp.length);  // Output: 3
    

    但如果你想创建一个只有一个元素3的数组,那么使用new方法是不能实现的,因为系统会把你传入的3当作数组的长度,除非你使用引号引起来当作字符串,如

    ...

    READ ALL

  • JavaScript版拼图游戏

    前两天,《用JavaScript写了一款贪吃蛇》,接着趁热也写一款JavaScript版的拼图游戏,耗时四个小时,代码两百多行,滑动效果借助于jQuery animate函数,欢迎大家试玩。

    拼图相比贪吃蛇,简单多了,但如果逻辑不清晰会容易迷糊,甚至卡死不知道如何继续下去。本文介绍的是九宫拼图,类似其它4乘4格的拼图跟我这里讨论的实现原理一致。

    Demo点这里

    ...

    READ ALL