Hot For Coding
  • Python socket.error [Errno 98] Address already in use

    今天在写一个Python与HTML5 WebSocket实例,每次重新运行脚本总是提示地址已经存在并且被使用!查询相关文档才知道在socket编程中,当通过客户端向服务器端发送消息,关闭了连接后,这时如果马上再去运行服务器端程序,会提示这个错误:

    socket.error: [Errno 98] Address already in use

    这是因为在TCP/IP终止连接的四次握手中,当最后的ACK回复发出后,有个2MSL的时间等待,MSL指一个片段在网络中最大的存活时间,这个时间一般是30秒,所以基本上过60秒后就可以重新连接!

    为什么要等待2MSL?是因为在最后发出ACK回复后,发送方不能确认ACK是否被另一端正常收到,如果另一端没有收到ACK回复的话,将会在1MSL后再次发送FIN片段。所以说发送方等待2MSL时间,也就是刚好它发ACK回复和对方发送FIN片段的时间,如果此时间内都没有再次收到FIN片段的话,发送方就假设对方已经正常接收到了ACK回复,此时它就会正常关闭连接!

    ...

    READ ALL

  • MySQL的timestamp自动更新时间

    通常表中会有一个Create date创建日期的字段,其它数据库均有默认值的选项。MySQL也有默认值timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp的值!

    Example

    CREATE TABLE categories (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

    记得,要改时区

    SET time_zone='+08:00';
    

    ...

    READ ALL

  • jQuery自定义插件开发

    喜欢使用jQuery的朋友,或许在经过一段时间的使用以后,可能会感觉这个插件少一点了自己想要的某些功能。其实jQuery支持插件开发模式,简单容易!

    如以下代码:

    // 插件代码开始
    (function($) {
      // 插件名称命名
      $.fn.plugin_name = function(){ 
        // 代码处理块
      };
    })(jQuery);
    // 插件代码结束
    

    使用的时候可以直接

    // 调用定义的方法名
    $('#id').plugin_name();
    

    我们这里主要以颜色赋值的实例来谈谈插件的具体模式开发!我们首先需要两个方法,一个是color前景颜色设置,一个是bgcolor背景颜色设置。

    ...

    READ ALL

  • 新浪微博加关注按钮IE下不能显示

    今天产品给我提一个Bug,称在IE浏览器下微博关注按钮出不来,并且有JavaScript报错

    full

    其它浏览器均正常,唯独IE下有这个报错,但从图片上的错误信息来看,很难判断是哪出了问题?怎么解决?

    当时想,微博不会有一个这么严重的Bug吧?在IE下就不能出现按钮?因此怀疑跟我的页面某块地方有冲突了,于是单独写一个html静态页测试

    <html>
      <head>
      </head>
      <body>
        <wb:follow-button uid="2619203540" type="red_1" width="67" height="24" ></wb:follow-button>
        <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=2844920245" type="text/javascript" charset="utf-8"></script>
      </body>
    </html>
    

    ...

    READ ALL

  • Python实现斐波那契

    昨天我写了一版JavaScript实现的,今天用Python实现一下

    什么是斐波那契

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
    这个数列从第3项开始,每一项都等于前两项之和

    代码实现

    arr = []
    
    def fibonacci():
      i = 0
      l = len(arr)
      if l < 2:
        i = 1
      else:
        i = arr[l - 1] + arr[l - 2]
      arr.append(i)
    
      return i
    
    for i in range(10):
      print(fibonacci())
    

    ...

    READ ALL

  • JavaScript实现斐波那契

    什么是斐波那契

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
    这个数列从第3项开始,每一项都等于前两项之和

    代码实现

    function fibonacci() {
      var list = [];
      return function () {
        var i;
        if (list.length < 2) {
          i = 1;
        } else {
          i = list[list.length - 1] + list[list.length - 2]
        }
    
        list.push(i);
        return i;
      };
    }
    
    var f = fibonacci();
    for (var i = 0; i < 10; i++) {
      console.log(f());
    }
    

    ...

    READ ALL

  • C读写字符getchar和putchar

    C语言标准库提供了读写一个字符的函数,分别是getcharputchar两个函数

    getchar

    使用方法也很简单,每次调用getchar时,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回

    #include <stdio.h>
    
    int main() {
      int c = getchar();
      return 0;
    }
    

    以上代码使用int类型接收返回值是因为getchar返回的是ASCII码

    putchar

    每次调用putchar时将会打印一个字符,如

    #include <stdio.h>
    
    int main() {
      putchar(65); // Output: A
      return 0;
    }
    

    ...

    READ ALL

  • Canvas画饼图!

    近来比较忙,有点无暇顾忌小站了!于是忙里偷闲,把项目中的收获记录下来,方便他人,提升自己!

    饼图

    饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到。如cnzz的统计饼图

    full

    从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆。

    都使用什么方法实现

    目前众多站点制作饼图大多使用Flash,或者服务器端生成,如C++、PHP、Python、Java等等,只要安装相应的基础库就能实现画图。但很少有站点这么干,因为耗费服务器资源。

    cnzz里使用的就是Flash

    ...

    READ ALL

  • 学习C语言

    C语言,一门系统级语言,虽然现在很多应用层很少用到它,但学习一下C语言有利于更好的了解系统底层

    任何语言的开端都从Hello World开始,新建一个hello.c并写入以下代码

    #include <stdio.h>
    
    int main() {
      printf("Hello world");
      return 0;
    }
    

    源码写完了,下一步是需要编译

    [root@test01 learn]# gcc hello.c 
    

    编译结束后会在目录下生成a.out编译文件

    [root@test01 learn]# ll
    total 16
    -rwxr-xr-x 1 root root 8440 Oct 10 16:45 a.out
    -rw-r--r-- 1 root root   72 Oct 10 16:45 hello.c
    

    ...

    READ ALL

  • IE6通过class动态切换样式无效解决方法

    美工那边给了一个焦点图的样式

    full

    当图片切换的时候,底部小白点的样式要相应变化,美工写好了样式,直接在白点element上添加class=ok就好。

    但在IE6下不起作用,通过工具查看,发现样式class属性已改写成功,但小白点的样式就是不变化。

    后来直接用JavaScript在标签inline-style方式写样式,而不是通过class切换修改样式,问题解决了!

    有点不清楚IE6下为何会有这个bug

    ...

    READ ALL