Hot For Coding
  • Go里JSON的解析与转换

    Go里对JSON的操作提供了encoding/json这个包两个方法

    • json.Marshal()
    • json.Unmarshal()

    对象转JSON,使用json.Marshal()方法

    // 琼台博客 www.qttc.net
    
    package main
    
    import (
      "encoding/json"
      "fmt"
    )
    
    type People struct {
      Age  int    `json:"age"`
      Name string `json:"name"`
    }
    
    func main() {
      p := People{18, "Nicholas"}
    
      s, err := json.Marshal(p)
    
      if err != nil {
        panic(err)
      } else {
        fmt.Println(string(s)) // Output: {"age":18,"name":"Nicholas"}
      }
    }
    

    ...

    READ ALL

  • JavaScript截取字符串

    首先我们来看一下substring()函数使用介绍

    substring

    语法

    string.substring(start, end)

    substring()需要至少需要一个参数

    • 第一个参数为起始位置
    • 第二个参数可选,为结束位置

    Example

    // 琼台博客 www.qttc.net
    
    // 一个参数
    var str = '欢迎各位童鞋到琼台博客做客';
    var sub = str.substring(3);
    console.log(sub); // Output: 位童鞋到琼台博客做客
    
    // 两个参数
    var str = '欢迎各位童鞋到琼台博客做客';
    var sub = str.substring(3,11);
    console.log(sub); // Output: 位童鞋到琼台博客
    

    ...

    READ ALL

  • MySQL与SQLServer分页区别

    之前一直用MySQL,虽然比起SQLServer这个庞大的数据库系统MySQL很轻量,但它并不逊色。以下说说这两个在数据库各自的分页区别

    取出前十条

    MySQL

    SELECT * FROM table LIMIT 10;
    

    SQLServer

    SELECT TOP 10 * FROM table
    

    每页十条,取出第三页

    MySQL

    SELECT * FROM table LIMIT 20,10
    

    SQLServer

    SELECT TOP 10 * FROM table WHERE id NOT IN(
      SELECT TOP 20 id FROM table ORDER BY id DESC
    ) ORDER BY id DESC;
    

    ...

    READ ALL

  • SyntaxHighlighter语法高亮插件在Chrome下出现右侧滚动条解决方法

    SyntaxHighlighter已经成为高亮插件主流,最近使用发现默认下载安装不做修改的话在Chrome下会出现右侧滚动条,特别丑

    解决这个问题只需要一行代码搞定

    找到shCore.css这个文件,找到下面代码

    .syntaxhighlighter table {
      width: 100% !important;
    }
    

    改成以下代码

    .syntaxhighlighter table {
      width: 100% !important;
      margin: 1px 0 !important;
    }
    

    搞定!即给.syntaxhighlighter类下的table加一个1px像素的外边距。

    ...

    READ ALL

  • Nginx缓存静态文件

    网站一经上线后,有些文件几乎都不常去更新了,比如css、js和图片等。减少HTTP请求是优化网站的最佳方案之一,我们可以利用Nginx缓存静态文件。

    在Nginx中可以使用proxy_cache将用户的请求缓存到本地一个目录,当下一个请求时可以直接调取缓存文件,就不用去请求服务器了。

    具体操作如下

    打开nginx.conf配置文件,在http层级加入以下代码

    proxy_connect_timeout 10;
    proxy_read_timeout 180;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;
    proxy_temp_path /tmp/temp_dir;
    proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
    

    ...

    READ ALL

  • Linux下编译升级PHP版本

    近来,PHP布新版本比较频繁,在我写这篇博文时,PHP5.3.x系列最新版本已到5.3.135.4.x系列的已经到5.4.3。在升级PHP版本前小站使用的程序是5.3.6,已经算是老版本了。之前还听说现在还有用5.2.x版本的,无语了!最新版本做了一些重要的补丁以及安全方面的更新,所以值得升级,下面介绍如何升级PHP版本。

    下载最新版本

    可以到php.net这里下载最新发布的PHP版本包,目前使用VPS居多吧,常规做法是先下载PHP包到本地上,然后在传到VPS上,如果是使用VPS那么可以直接从VPS上下载即可,这样省事,而且也方便。下载时,选择适合VPS的相应节点,如你的VPS在美国就选择美国节点,这样下载速度会比其它节点要快。

    ...

    READ ALL

  • NodeJS读写文件

    NodeJS中读写文件基本都是用fs模块,应该是file system的缩写

    读文件

    读文件有两个API,差别就是一个是同步另一个异步

    • fs.readFile
    • fs.readFileSync
    // 琼台博客 www.qttc.net
    
    // fs.readFile
    var fs = require('fs'),
      path = require('path'),    
      filePath = path.join(__dirname, 'index.md');
    
    fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
      if (!err) {
        console.log('received data: ' + data);
      } else {
        console.log(err);
      }
    });
    
    // fs.readFileSync
    var data = fs.readFileSync(filePath, {encoding: 'utf-8'});
    console.log('received data: ' + data);
    

    ...

    READ ALL

  • JavaScript常用遍历循环方法

    for

    使用for循环是最常见的一种方式

    // 琼台博客 www.qttc.net
    
    for (let i=0; i<1000; i++) {
      console.log(i)
    }
    

    while

    while循环,比较简单

    // 琼台博客 www.qttc.net
    
    let i = 0
    while (i<1000) {
      console.log(i)
      i++
    }
    

    do while

    跟while循环一样,只不过先执行一次

    // 琼台博客 www.qttc.net
    
    let i = 0
    do {
      console.log(i)
      i++
    } while (i < 1000)
    

    ...

    READ ALL

  • Linux计划任务crontab

    在Linux中,也有类似Windows一样的计划任务,并且更直观,更方便

    在命令状态下敲入

    crontab -e
    

    回车即可进入计划任务编辑状态。

    一共分为六列值,如

    */2 * * * * echo 'Hello world!'
    

    表示每两分钟执行一次echo命令

    由此看出前五列表示时间,最后一列表示命令

    第一列 分 0-59
    第二列 时 0-23
    第三列 日 1-31
    第四列 月 1-12 (或者用jan/feb等名字)
    第五列 星期 0-7 (0或7是周日,也可以用mon,tue等表示)
    第六列 命令/脚本

    编辑好了以后直接保存退出即可!

    如每天凌晨两点执行某任务

    ...

    READ ALL

  • MySQL中replace into的用法

    在向表中插入数据的时候,经常遇到这样的情况:

    • 首先判断数据是否存在
    • 如果不存在,则插入
    • 如果存在,则更新

    在SQLServer中可以这样写:

    if not exists (select 1 from table where id = 1) insert into table(id, update_time) values(1, getdate()) else update table set update_time = getdate() where id = 1
    

    在MySQL 中也可以先select,判断是否存在,存在则update否则insert

    ...

    READ ALL