golang两个线程交替打印1-100的奇数偶数

启动两个线程, 一个输出 1,3,5,7…99, 另一个输出 2,4,6,8…100 最后 STDOUT 中按序输出 1,2,3,4,5…100 package main import ( "fmt" "time" ) var pool = 100 //奇数 func oddNum(c chan int) { for i := 1; i <= pool; i++ { c <- i if i%2 == 1 { fmt.Println(i) } } } //偶数 func even(c chan int) { for i := 1; i <= pool; i++ { <-c if i%2 == 0 { fmt.Println(i) } } } func main() { c := make(chan int) go oddNum(c) go even(c) time....

January 31, 2019 · 1 min · ZhaoGuibin

golang抓取知乎图片

代码github地址 https://github.com/zhaoguibin/zhihu_pic 需要安装 gjson go get -u github.com/tidwall/gjson package main import ( "bytes" "fmt" "io" "io/ioutil" "net/http" "os" "regexp" "strings" "github.com/tidwall/gjson" "bufio" "strconv" "time" ) var quit = make(chan int) func main() { url := urlExists() dirName := strconv.FormatInt(time.Now().Unix(), 10) imgDir := "./" + dirName + "/" _, errs := pathExists(imgDir) if errs != nil { fmt.Printf("创建文件失败") return } getImgURL(url, imgDir) } //获取图片地址 func getImgURL(url, imgDir string) { //提交请求 reqest, err := http....

January 26, 2019 · 2 min · ZhaoGuibin

Virtualbox 共享文件夹 cannot create symlink error

npm操作虚拟机共享文件夹里的文件时出现 npm Error: EROFS: read-only file system, symlink的报错信息。 解决方法 原来VirtualBox从安全角度出发,限制了软链接的创建,需要打开相应的Feature。以下为详细步骤: 关闭 VirtualBox。 将VirtualBox安装目录的路径加入系统环境变量PATH中。 打开命令行窗口,执行如下命令: VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1 其中:YOURVMNAME为虚拟机中linux系统的名称 YOURSHAREFOLDERNAME 为共享的目录名称 “以管理者身份运行” VirtualBox 即可!

January 26, 2019 · 1 min · ZhaoGuibin

linux挂载windows下的共享文件

安装cifs-utils yum install cifs* -y 这条命令只可以读取Windows共享文件,不能创建文件 #user=Windows用户 #pass=Windows登录密码 #//192.168.10.64/APP Windows共享文件 #/opt/APP/ linux挂载目录 mount.cifs //192.168.10.64/APP /opt/APP/ -o user=Developer,pass=123456trewq 这条命令可以添加文件操作权限 #user=Windows用户 #pass=Windows登录密码 #//192.168.10.64/APP Windows共享文件 #/opt/APP/ linux挂载目录 #uid,gid,linux用户的id和用户组id,可以通过 id root 命令查看用户的id和用户组id #rw,dir_mode=0777,file_mode=0777这些是设置文件夹权限,可以根据自己的需求设置权限 mount.cifs //192.168.10.64/APP /opt/APP/ -o user=Developer,pass=123456trewq,rw,uid=0,gid=0,dir_mode=0777,file_mode=0777

November 23, 2018 · 1 min · ZhaoGuibin

php-fpm的关闭和重启

php-fpm 关闭: kill -INT `cat /usr/local/php/var/run/php-fpm.pid` killall php-fpm php-fpm启动 /usr/local/php/sbin/php-fpm php-fpm 重启 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` 查看php-fpm进程数 ps aux | grep -c php-fpm

November 23, 2018 · 1 min · ZhaoGuibin

Linux下iptables屏蔽IP和端口号

#封单个IP的命令: iptables -I INPUT -s 192.168.10.66 -j DROP #封IP段的命令: iptables -I INPUT -s 192.168.0.0/16 -j DROP #封整个段的命令: iptables -I INPUT -s 192.168.0.0/8 -j DROP #封几个段的命令: iptables -I INPUT -s 192.168.10.0/24 -j DROP #只封80端口: iptables -I INPUT -p tcp –dport 80 -s 192.168.0.0/24 -j DROP #解封: iptables -F #清空: iptables -D INPUT 数字 #列出 INPUT链 所有的规则: iptables -L INPUT --line-numbers #删除某条规则,其中5代表序号(序号可用上面的命令查看): iptables -D INPUT 5 #开放指定的端口: iptables -A INPUT -p tcp --dport 80 -j ACCEPT #禁止指定的端口: iptables -A INPUT -p tcp --dport 80 -j DROP #拒绝所有的端口: iptables -A INPUT -j DROP 以上都是针对INPUT链的操作,即是外面来访问本机的方向,配置完之后 需要保存,否则iptables 重启之后以上设置就失效...

November 16, 2018 · 1 min · ZhaoGuibin

centos修改IP

首先查看网络接口名称 ifconfig 临时修改IP ifconfig eth1 192.168.10.88 永久修改IP 修改对应的网络接口配置文件,文件路径是 /etc/sysconfig/network-scripts/ vim /etc/sysconfig/network-scripts/ifcfg-网络接口名称 修改以下配置 BOOTPROTO=static # 以下配置有就修改,没有就添加 IPADDR=192.168.10.88 #静态IP GATEWAY=192.168.10.1 #默认网关 NETMASK=255.255.255.0 #子网掩码 修改DNS vim /etc/resolv.conf nameserver 1.1.1.1 nameserver 8.8.8.8 重启网络服务

November 16, 2018 · 1 min · ZhaoGuibin

Nginx使用brotli

首先下载brotli的nginx模块 cd /opt/local/src git clone https://github.com/google/ngx_brotli.git 接着下载brotli源代码 cd ngx_brotli cd deps/brotli git clone https://github.com/google/brotli.git 编译nginx源代码指定第三方模块 ./configure --prefix=/opt/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/opt/local/src/pcre-8.36 --add-module=/opt/local/src/ngx_brotli 可能会报错,提示你 ./configure: error: Brotli library is missing from the /opt/local/src/ngx_brotli/deps/brotli directory. Please make sure that the git submodule has been checked out: cd /opt/local/src/ngx_brotli && git submodule update --init && cd /opt/local/src/nginx-1.12.1 照着它的提示操作就好了,网络不好的话需要等很长时间,这时候就是展现技术的时候了,你懂得 cd /opt/local/src/ngx_brotli && git submodule update --init && cd /opt/local/src/nginx-1.12.1 操作完以后,再一次编译nginx源码 ./configure --prefix=/opt/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/opt/local/src/pcre-8....

November 9, 2018 · 1 min · ZhaoGuibin

MySQL保留两位小数

round(x,d) :用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0; 这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0; SELECT ROUND(5000.56789,2),ROUND(5000,2),ROUND(0.56789,2),ROUND(115.56789,-1); SELECT ROUND(5000.12345,2),ROUND(5000,2),ROUND(0.12345,2),ROUND(114.12345,-1); TRUNCATE(x,d):函数返回被舍去至小数点后d位的数字x。若d的值为0,则结果不带有小数点或不带有小数部分。若d设为负数,则截去(归零)x小数点左起第d位开始后面所有低位的值。 SELECT TRUNCATE(5000.56789,2),TRUNCATE(5000,2),TRUNCATE(0.56789,2),TRUNCATE(115.56789,-1); SELECT TRUNCATE(5000.12345,2),TRUNCATE(5000,2),TRUNCATE(0.12345,2),TRUNCATE(114.12345,-1);

November 9, 2018 · 1 min · ZhaoGuibin

Kafka安装

1.去kafka官网下载到最新的kafka安装包,选择下载二进制版本的tgz文件 2.环境需求:java运行环境 3.配置 在kafka解压目录下下有一个config的文件夹,里面放置的是我们的配置文件 consumer.properites #消费者配置,这个配置文件用于配置于2.5节中开启的消费者,此处我们使用默认的即可 producer.properties #生产者配置,这个配置文件用于配置于2.5节中开启的生产者,此处我们使用默认的即可 server.properties #kafka服务器的配置,此配置文件用来配置kafka服务器,目前仅介绍几个最基础的配置 broker.id #申明当前kafka服务器在集群中的唯一ID,需配置为integer,并且集群中的每一个kafka服务器的id都应是唯一的,我们这里采用默认配置即可 listeners #申明此kafka服务器需要监听的端口号,如果是在本机上跑虚拟机运行可以不用配置本项,默认会使用localhost的地址,如果是在远程服务器上运行则必须配置,例如: #listeners=PLAINTEXT:// 192.168.180.128:9092。并确保服务器的9092端口能够访问 zookeeper.connect #申明kafka所连接的zookeeper的地址 ,需配置为zookeeper的地址,由于本次使用的是kafka高版本中自带zookeeper,使用默认配置即可 zookeeper.connect=localhost:2181 ...

September 30, 2018 · 1 min · ZhaoGuibin