go语言提供的flag包可以解析命令行的参数,代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main

import (
"flag"

"fmt"
)

func main() {

//第一个参数,为参数名称,第二个参数为默认值,第三个参数是说明

username := flag.String("name", "", "Input your username")

flag.Parse()

fmt.Println("Hello, ", *username)

}

编译:

go build flag.go

运行:

./flag -name=world

输出:

Hello, world

如果不输入name参数:

./flag

则输出:

Hello,

在c中分为这几个存储区

  1. 栈 - 由编译器自动分配释放
  2. 堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
  3. 全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
  4. 另外还有一个专门放常量的地方。- 程序结束释放

阅读更多

例如像下面的数组:

1
2
3
4
5
$users = array(
array('name' => 'tom', 'age' => 20),
array('name' => 'anny', 'age' => 18),
array('name' => 'jack', 'age' => 22)
);

使用array_multisort

先将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

1
2
3
4
5
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:

1
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

使用usort

使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

1
2
3
4
5
6
7
usort($users, function($a, $b) {
$al = strlen($a['name']);
$bl = strlen($b['name']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。

在部署Open-Falcon安装绘图组件 Dashboard 执行 ./env/bin/pip install -r pip_requirements.txt 时出现如下错误:

error: command 'gcc' failed with exit status 1

解决方式:

1
2
3
sudo yum -y install gcc gcc-c++ kernel-devel
sudo yum -y install python-devel libxslt-devel libffi-devel openssl-devel
pip install cryptography

最近在看CodeIgniter的源码,在system/common.php中有个公共函数load_class的定义,其中用到file_exists函数来判断指定类的文件是否存在,于是就具体查了下该函数的用法~

阅读更多

安装需要用的包

yum install -y pptpd iptables

配置PPTP的设置。首先配置/etc/ppp/options.pptpd文件,找到网络和路由设置,我们设置ms-dns8.8.8.88.8.4.4

1
2
3
4
5
6
7
8
9
10
11
# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients. The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
ms-dns 8.8.8.8
ms-dns 8.8.4.4

阅读更多

yum安装VPN服务

yum install -y pptpd

修改配置文件

修改/etc/ppp/options.pptpd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4

ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns服务器

阅读更多

CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下

直接关闭防火墙

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

设置 iptables service

yum -y install iptables-services

如果要修改防火墙配置,如增加防火墙端口3306

vi /etc/sysconfig/iptables 

增加规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

保存退出后

systemctl restart iptables.service #重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

最后重启系统使设置生效即可。