Intelligence without ambition is a bird without wings.

2015-07-23
bash-获得脚本文件所在目录

1
dirname $0
阅读此文

2015-07-22
windows-修改环境变量后立即生效

  • 打开cmd

    set path=""
    
阅读此文

2015-07-22
linux-安装go

  1. 下载对应二进制包(官网)

  2. 解压安装

    tar -C /opt/go-$VERSION -xvf go$VERSION.$OS-$ARCH.tar.gz

  3. 修改环境变量

    vi /etc/profile

    export GOROOT=/opt/go-$VERSION
    export PATH=$PATH:$GOROOT/bin

  4. 生效

    • source /etc/profile

    • 重启sshd

阅读此文

2015-07-22
linux-修改环境变量后及时生效

source /etc/profile

重启对应的父进程

  • 对ssh来说,重启sshd
阅读此文

2015-07-20
sql-数据更新

使用场景

  • 记录不存在,则插入

  • 记录若存在,则更新指定值

要求

  • 数据必须存在唯一性

方法

1.INSERT ... ON DUPLICATE KEY UPDATE

1
2
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY
UPDATE name=VALUES(name), age=VALUES(age)

参考

  1. https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
阅读此文

2015-07-16
mysql-字符串

存储

  • char(N), varchar(N),N指的是特定字符集下的字符长度

    • latin1下,char(1)占1字节
    • utf-8下,char(1)占1~4字节,汉字一般占3字节

长度判断

  • length() 获取字符串占用多少字节

  • char_length() 获取字符串长度(特定字符集下的字符个数)

阅读此文

2015-07-15
sql-经验

  1. 除非查询所有字段,否则避免使用select *

    • 增加IO,增加查询时间
    • 增加网络传输,浪费用户流量
    • 增加不安全性,客户端看见了所有字段
阅读此文

2015-07-15
mysql-IP类型.md

  • int

  • 字符串转int

    select inet_aton('192.168.0.1');
    
  • int转字符串

    select inet_ntoa('3232235521');
    
  • 判断IP段

    select inet_aton('192.168.0.0') <= inet_aton('192.168.0.1');
    select inet_aton('192.168.1.1') <= inet_aton('192.168.0.255');
    
阅读此文

2015-07-14
数字签名

名词

| 名词 | 解释 |
|—————-+——————|
| 受信任的发送方 | 拥有密钥的发送方 |

过程

  • 发送方

原文 => HASH => 加密(RSA) => 签名

  • 接收方

除sign外的数据 => HASH ==? 发送过来的sign => 解密(RSA)

目的

  • 保证数据是从指定源发送的

    因为受信任的发送方才有密钥,只有该密钥加密的数据才能正确地被接收方解密

  • 防止数据在途中被第三方修改,保证了数据的完整性

    因为签名是基于全文HASH后得到的,任何修改原文操作,在没有密钥的情况下,无法重新签名,
    也就意味着该数据无效!

阅读此文

2015-07-13
cmake-常用变量

  • CMAKE_INSTALL_RPATH_USE_LINK_PATH

    使用`make install`安装时,不去除RPATH
    
阅读此文