Netcat 号称 TCP/IP 的瑞士军刀并非浪得虚名,以体积小(可执行 200KB)功能灵活而著称,在各大发行版中都默认安装,你可以用它来做很多网络相关的工作,熟练使用它可以不依靠其他工具做一些很有用的事情。 最初作者是叫做“霍比特人”的网友 Hobbit hobbit@avian.org 于 ...
编写 Bash Shell 脚本的最佳实践
前言 -- 由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序...
如何在Ubuntu 14.04上使用Corosync,Pacemaker和浮动IP构建高可用服务
介绍 本教程将演示如何将Corosync和Pacemaker与浮动IP一起在DigitalOcean上创建高可用性(HA)服务器基础结构。 Corosync是一个开源程序,它向客户端服务器提供群集成员身份和消息传递功能,通常称为消息传递层。Pacemaker是一个开放源代码群集资源管理器(CRM),该系统可...
golang调用Windows API
golang还能调用Windows API非常有意思,下面写了一个golang换壁纸的demo。 准备了两张bmp格式的图片,没三秒钟换一下壁纸。 主要是先通过dll获取里面api,要注意api参数的写法,dll用完了要释放句柄,这里我用缓存把api缓存起来不必每次调用都去dll里加载。 代码: pac...
外网访问mysql
我的mysql部署在云服务器上,系统是Centos7。 1. 首先,登录云服务提供商的控制台,在服务器的安全组规则中添加入站规则(允许tcp:3306,来源是0.0.0.0/0) 2. 开放防火墙端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ...
MySQL基础操作快速入门
关于MySQL MySQL是一种开源数据库管理软件,可帮助用户存储,组织和检索数据。 这是一个非常强大的程序,具有很大的灵活性-本教程将提供MySQL的最基本介绍。 MySQL安装 快速安装方式如下。 Ubuntu text sudo apt-get install mysql-server Centos text sudo yum...
mysql忘了密码 重置密码
编辑mysql配置文件 vi /etc/my.cnf 在[mysqld]下面加上skip-grant-tables,如: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-grant-tables 重启mysql(centos7) systemctl restart mysqld 登录mysql后重新修改密码 my...
解决ssh登录远程服务器慢的问题
使用ssh远程登录大概需要两分钟才能登上去。 参考网上的方法改各种配置重启sshd都没用, 使用ssh -v root@118.24.114.114调试命令发现卡在pledge: network这里,然后用 这个关键字去找答案终于找到了解决方法。 我这里造成ssh登录慢的原因是/var/log/btmp文件过大(1G多...
goland2020.1含激活
下载地址:https://pan.baidu.com/s/1qh49NXUm0K0VlJo82d723A 提取码:4p8h 激活方式见:Patch/jetbrains-agent/README.txt 如果你下载的jetbrains-agent.jar小于2M,肯定是没有下载完全(可对照sha1sum.txt)。 请保留压缩包内的important.txt和jetbrains-agent...
golang html/template模板继承(嵌套)实例
golang的模板包是html/template,使用的时候通常我们会关注它的模板继承(模板嵌套)怎么写, 毕竟这影响到整体网页渲染接口的写法,以及接口是否优雅和可扩展。 base.tmpl 首先,我们定义一个基础模板layouts/base.tmpl cassandraql {{ define "base" }} <html> <he...
使用group by来统计每天产生的数据量
有张流水表每天都会产生大量数据,我们需要统计每天产生了多少条数据。其中有个字段是modify_time,每产生一条数据就会写入当前时间,格式是2020-04-30 17:41:02。 sql的写法是先查出每条数据的modify_time,截取前10位就可以了,然后在日期数据的基础上进行group by操作,根...
sync.WaitGroup增加timeout
要等待多个goroutine完成,我们可以使用sync.WaitGroup,但是它会一直等待,这里简单封装下增加超时机制。 直接上代码: type WaitGroupTimeout struct { wg sync.WaitGroup done chan struct{} timeout time.Duration } func NewWaitGroupTimeout(timeout...
golang与qpid broker通信
这里我用的是github.com/Azure/go-amqp这个库,它支持AMQP 1.0协议,是纯go语言实现的。qpid用的是1.39.0版本直接启动的话它是不支持AMQP 1.0协议的,需要加载amqp.so库([加载方法](https://www.ningto.com/post/5ea109bb707b535469eb754c))。 下面演示使用sender和rece...
获取本地IP地址
首先来一种windows和linux平台都支持的 ifdef WIN32 include <boost/asio.hpp> include <boost/asio/io_service.hpp> else include <stdio.h> include <sys/types.h> include <ifaddrs.h> include <netinet/in.h> include <string.h> include <arpa/inet.h>...
amqp:connection:framing-error: Expected AMQP protocol header
使用qpid proton的demo去连接qqpidd (qpid-cpp) version 1.39.0的时候报如下错误: amqp:connection:framing-error: AMQP header mismatch: Pre standard AMQP connection ['AMQP\x01\x01\x00\x0a'] 版本信息如下: Qpid Proton 0.31.0 qpidd (qpid-cpp) vers...
用脚本启停我的go程序
用一个脚本来方便编译、启停我的blog程序(go语言编写的),我在程序中使用了github.com/sevlyar/go-daemon这个库来让博客进程在后台运行。具体用法可以看github上的README,它会生成一个文件存放当前运行进程的pid,我这里取名叫:ningtogo.pid。下面就是服务端脚本的编写了。 ...
go channel缓冲的作用
golang中make chan第二个参数设置缓冲区的大小,如果不设置是无缓冲区的。 下面通过一个例子来说明缓冲的作用。 代码如下: package main import ( "fmt" "time" ) var ch = make(chan int) func main() { go sender() time.Sleep(1 time.Second) ...
给mongodb服务增加认证
在连接mongodb的时候增加用户名和密码认证,如你需要访问nodeblog库进行认证。 将数据库配置改为不需要认证的方式启动 noauth:true ./mongod 进入本地数据库 use nodeblog 切换到nodeblog db.createUser({user:"lion", pwd:"lion", roles:[{role: "readWrite", d...
ERROR: child process failed, exited with error number 62
今天做了数据库恢复动作,然后重启mongodb的时候出现如下错误: ERROR: child process failed, exited with error number 62 解决方法是: 找到dbpath所在的目录删除掉(注意你之前的数据应该有备份),如我的存放在db目录 rm -rf ./db mkdir db 然后重新创建...
go拓扑排序
拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。 注意...