1 | select * from test order by A DESC, B AESC |
life's a struggle.
2015-11-03
2015-11-02
要点
a string is in effect a read-only slice of bytes
string
可以存储任意的bytes
字符串字面值是
utf-8
编码的,所以赋给string
时,string
存储的也是utf-8
编码序列使用range
得到的是字符(rune
)序列1
2
3for _, b := range str {
fmt.Printf("%T,%v\n", b, b)
}使用
for
迭代,来访问utf-8
字节(byte
)1
2
3for i := 0; i < len(str); i++ {
fmt.Printf("%v:%T, %v\n", i, str[i], str[i])
}rune
的意思的code point
(unicode码元), 底层类型为int32
参考
2015-11-02
背景
字节序是一个处理器架构特性。
对于多字节数据,存在一个数据的字节安排问题(大小端)。
大小端取决与CPU架构,X86:小端,KEIL-C51:大端
记忆方式
- 大端 <=> 字符串顺序
实例分析
例:0x11223344(4B)在内存中存放时
大端:
数据的高位字节放在内存低地址,也就是说数据由高位字节向低位字节在内存中存放,
类似于字符串的存放,按照从左向右的顺序存放.
内存:0 1 2 3
11 22 33 44
优点
- 直接在内存中观察方便
缺点
不符合逻辑
不利于编码,解码
小端:
数据的高位字节放在内存高地址,也就是数据从低位字节向高位字节在内存中存放
内存:0 1 2 3
44 33 22 11
优点
- 这种存放方式比较符合逻辑
- 利于读入时的解码(转换成对应数据类型的值),如int i = 0x11223344,按ANSI
存放在文件中,再次读入时,需要根据ASCII码把对应的值转换成int型,容易处理,因为先
读入的是低位字节
缺点
- 直接在内存中观察时,不方便
注
- 以上数字都是十六进制形式;
- 假设变量地址为0
2015-11-02
规律
对于UTF-8编码中的任意字节B,如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;
如果B的第一位为1,第二位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的一个字节,并且不是字符的第一个字节编码;
如果B的前两位为1,第三位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由两个字节表示;
如果B的前三位为1,第四位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由三个字节表示;
如果B的前四位为1,第五位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由四个字节表示;
参考
2015-11-02
用户变量
用户变量是会话期的(作用域,生命期)
1 | mysql> SET @t1=1, @t2=2, @t3:=4; |
系统变量
查询系统变量
select @@character_set_server;
通过
show
show variables like 'max_allowed_packet';
参考
2015-11-02
2015-11-02
说明
- 存储使用
UTF-8
(中文占用3B,英文占用1B)
要点
char(n)
或vchar(n)
中n
指的是字符容量,具体占用字节空间取决于编码集字符
一个汉字即一个字符
一个英文字母即一个字符
char_length
获取字符串的字符数目length
获取字节数(所占空间大小)
实验
环境
1 | mysql> show variables like 'character%'; |
参考
2015-11-02
1 | skip-character-set-client-handshake |
2015-10-30
步骤
安装
pptpd
apt-get install pptpd
vi /etc/pptpd.conf
option /etc/ppp/pptpd-option #指定PPP选项文件的位置 debug #启用调试模式 localip 192.168.0.1 #VPN服务器的虚拟ip remoteip 192.168.0.200-238,192.168.0.245 #分配给VPN客户端的虚拟ip
vi /etc/ppp/pptpd-options
name pptpd #pptpd服务的名称 refuse-pap #拒绝pap身份认证模式 refuse-chap #拒绝chap身份认证模式 refuse-mschap #拒绝mschap身份认证模式 require-mschap-v2 #允许mschap-v2身份认证模式 require-mppe-128 #允许mppe 128位加密身份认证模式 ms-dns 8.8.8.8 #使用Google DNS ms-dns 8.8.4.4 #使用Google DNS proxyarp #arp代理 debug #调试模式 dump #服务启动时打印出所有配置信息 lock #锁定TTY设备 nobsdcomp #禁用BSD压缩模式
添加用户
vi /etc/ppp/chap-secrets
#格式:用户名 服务类型 密码 分配的ip地址 test * 1234 *
重启PPTPD服务
service pptpd restart
配置网络和路由规则,设置ipv4转发
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sysctl -p iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
设置MTU来确保过大的包不会被丢弃(可选)
iptables -I FORWARD -s 192.168.0.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300
备份iptables
iptables-save > /etc/iptables.rule
开机自动加载
vi /etc/network/interfaces pre-up iptables-restore < /etc/iptables.rule
参考
2015-10-29
1 | add_header Cache-Control "no-cache"; |