• Java sleep和yield区别

    yield和sleep都是作用于当前线程

    yield方法会临时暂停当前正在执行的线程,让有同样优先级等待的线程有资源执行。如果没有正在等待的线程,或者所有正在等待的线程的优先级都比较低,那么该线程会继续运行。执行了yield方法的线程什么时候会继续运行由线程调度器来决定,不同的CPU可能有不同的行为。yield方法不保证当前的线程会暂停或者停止,但是可以保证当前线程在调用yield方法时会放弃CPU。

    所以总结下来

    • yield和sleep都不释放锁
    • sleep只是暂停,之后继续
    • yield是让出CPU资源,等待下一次资源调度继续

    ...

    READ ALL

  • CentOS开机卡在进度条的解决方法

    CentOS开机的时候卡在进度条一直进不去

    full

    这看不出开机启动卡在哪里,只好重启按住"e"键,进入启动菜单

    full

    接着按e进入编辑第一项

    full

    然后移动到第二项kernel...接着按e进入编辑

    ...

    READ ALL

  • IE8动态创建script标签onload不工作

    今天做项目,发现一个奇怪的问题,动态创建的script标签在IE8下无法触发onload事件?请看示例代码

    var loadJs = function (src, fun) {
      var script = null;
      script = document.createElement('script');
      script.type = 'text/javascript';
      script.src = src;
      if (typeof fun === 'function') {
        script.onload = fun;
      }
    
      document.getElementsByTagName('head')[0].appendChild(script);
    };
     
    loadJs('http://code.jquery.com/jquery-1.11.0.min.js', function () {
      console.log('From jQuery');
    });
     
    loadJs('test.js', function () {
      console.log('From test.js');
    });
    

    ...

    READ ALL

  • Python一次has_key蛋疼的错误调试

    今晚像往常一样打开Aptana写Python程序时,一个has_key调用报错了,代码如下

    info = {}
    info.has_key("key")
    

    控制台

    Traceback (most recent call last):
      File "D:\workspace\aptana\test\main.py", line 8, in <module>
        print(info.has_key("email"))
    AttributeError: 'dict' object has no attribute 'has_key'
    

    ...

    READ ALL

  • Nginx Upload Module 上传模块

    传统站点在处理文件上传请求时,普遍使用服务器端语言处理,如:Java、PHP、Python、Ruby等。今天给大家介绍Nginx的一个模块,Upload Module上传模块,此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小等参数传给到处理程序。

    安装模块

    GitHub: https://github.com/vkholodkov/nginx-upload-module

    从GitHub上下载源码解压,进入nginx源码目录,重新./configure并且添加如下参数

    ...

    READ ALL

  • JavaScript获取窗口可视区域的宽高

    在jQuery中我们很容易就可以获取整个浏览器窗口可视区域的宽高:

    $(window).width();
    $(window).height();
    

    但是在JavaScript中如何获取这个值呢?关于获取这个值的说法网上一大堆,但大多数都是获取屏幕宽高,而非浏览器可视区域的宽高。因为屏幕大小对于网页来说不是很重要,但可视区域可就不一样了,用户可能随时改变浏览器的大小,所以获取浏览器可视区域的宽高可以动态调整一些需要JavaScript控制的内容。什么是可视区域呢?

    full

    ...

    READ ALL

  • 看看智联招聘是如何被注入恶意脚本

    事情得从修改Email开始,之前使用别的Email地址注册过,但最近需要修改下Email地址,让人恼火的是智联的Email格式验证貌似不支持自定义域名的邮箱,换句话说也就是只能支持常用邮箱。

    无奈搜索脚本发现如下代码:

    if (checkRegForm()) {
      var newEmail = $("#email").val();
      var oldEmail = $("#emailOld").val();
      $.ajax({
        url : "http://my.zhaopin.com/v5/handler/ChangeEmailHandler.ashx",
        dataType : 'jsonp',
        jsonp : 'jsoncallback',
        data : {
          "usermaster_id" : $("#uid").val(),
          "emailOld" : oldEmail,
          "email" : newEmail
        },
        success : function(json) {
          switch (json.status) {
            case "0":
              $("#emailOld").val(newEmail);
              $("#emailshow").val(newEmail);
              $("#email1").val(newEmail);
              $("#oldemail").html(newEmail);
              $("#emailtips a").html(newEmail);
              $("#newwid2").hide();
              $("#divMask").remove();
              $.popupDiv({
                title : "邮箱验证",
                url : "http://my.zhaopin.com/myzhaopin/activeEmail.asp?e=" + oldEmail + "&l=" + $("#loginNameOld").val() + "&t=" + Date.parse(new Date()),
                width : 414,
                heigth : 300
              });
              $("#email").val("").parent().addClass("cenclebtn");
              $("#email_info").text("");
              break;
            case "3":
              $("#email_info").html("必填项为空!");
              break;
            case "4":
              $("#email_info").html("email地址未做修改!");
              break;
            case "10008":
            case "10018":
              $("#email_info").html("用户不存在!");
              break;
            case "10028":
              $("#email_info").html("email已存在,请重新输入!");
              break;
            default:
              break;
          }
        },
        error : function() {
          alert("操作异常,请稍后重试!");
        }
      });
    }
    

    ...

    READ ALL

  • 一道经典的JavaScript面试题

    前两天一位朋友发邮件问了我关于这道经典的面试题,其实在这位朋友给我发邮件之前曾经也有人给我发过邮件询问过此类笔试题,思前想后觉得写出来给那些还正在解答此题中的朋友们。

    题的原型:

    var add = function (m) {
     
      var temp = function (n) {
        return add(m + n);
      }
    
      temp.toString = function () {
        return m;
      }
    
      return temp;
    };
     
     
    add(3)(4)(5); // 12
    add(3)(6)(9)(25); // 43
    

    ...

    READ ALL

  • 网页中的图片

    我们字符集是定义字符跟数字关系方便用于传输,但计算机中如何显示图片呢?一样,计算机并不知道图片是什么,是我们抽象出来的某种可以使用计算机表达的数据集。

    图片原理

    以简单的来说,所有颜色都可以使用红绿蓝调出所有颜色,简称RGB(Red, Green, Blue),CSS上还有一个可以使用的叫RGBA,其中A是Alpha可以表达透明度。也就是是三组值即可以表达一种颜色,当然这三个值肯不能无限大,毕竟只要肉眼分辨不出来的色值即可,以网页为例子,RGB只能定义三需要在0到255之内的值组成。这里每一个色值最高只能到255估计跟一个字节大小有关,表达RGB固定占用三个字节。

    ...

    READ ALL

  • 推荐一个CSS字体图标库

    Font Awesome是一个基于图标字体库,结合CSS3支持服务器端字体,使用:before伪类与content属性写出的一款CSS图标库。

    full

    官网 http://fortawesome.github.io/Font-Awesome/icons/

    以前要在网页上显示图标,基本都是使用Gif图片的居多,目前仍然有不少站点还在使用Gif图标,Gif图标的特点是体积小,可以制作帧频动画,支持透明。但缺点是放大就有齿距,不易于修改,不能通过CSS控制颜色。

    ...

    READ ALL