曾国藩语录

本文收集了曾文正公的经典语录,予己每日三省

曾国藩(1811年11月26日-1872年3月12日),初名子城,字伯涵,号涤生,宗圣曾子七十世孙。中国近代政治家、战略家、理学家、文学家,湘军的创立者和统帅。

在曾国藩的倡议下,建造了中国第一艘轮船,建立了第一所兵工学堂,印刷翻译了第一批西方书籍,安排了第一批赴美留学生。可以说曾国藩是中国近代化建设的开拓者。

曾国藩与胡林翼并称“曾胡”,与李鸿章、左宗棠、张之洞并称“晚清中兴四大名臣”。官至两江总督、直隶总督、武英殿大学士,封一等毅勇侯,谥号“文正”,后世称“曾文正”。有人推崇他为千古第一完人,但因忠于清室镇压太平天国暴乱又饱受争议。

  • 将来不迎,当下不杂,过往不念

  • 倚天照海花无数,流水高山心自知

  • 利可共而不可独,谋可寡而不可众;独利则败,众谋则泄

  • 久利之事勿为,中争之地无望

  • 惟正己可以化人,唯尽己可以服人

PHP 算法 —— 归并排序

算法原理

下列动图来自**@五分钟学算法**,演示了归并算法的原理和步骤。

merge

原理:

利用递归,先拆分、后合并、再排序。

步骤:

  • 均分数列为两个子数列
  • 递归重复上一步骤,直到子数列只有一个元素
  • 父数列合并两个子数列并排序,递归返回数列

lsyncd —— 多机器实时同步文件神器

lsyncd 是一个支持实时、双向、多机器的多模式文件同步工具。

使用 Lua 语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过 rsync 去差异同步,达到实时的效果。

安装

在源文件服务器上安装:

1
yum -y install lsyncd

更改 Linux 系统的用户名和主机名

可能系统安装时的默认用户名我们不喜欢,但已经在该用户上已经配置了很多东西,所以我们只能修改用户名、而非新建一个。

修改主机名

假设此处我们要修改的新主机名为 hello

  • 修改 hostname 文件

    1
    
    sudo vim /etc/hostname
    

    将内容改为 hello/etc/hostname 文件修改了需要重启才会生效。

  • 用 hostname 修改当前会话的主机名

    1
    
    hostname hello
    
  • 修改 hosts 文件

    1
    
    sudo vim /etc/hosts
    

    将内容修改为类似如下:

    1
    2
    
    127.0.0.1 localhost
    127.0.0.1 hello
    

Linux 命令 —— scp 远程文件拷贝

scp 是 secure copy 的缩写,scp 是 Linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。Linux 的 scp 命令可以在 Linux 服务器之间复制文件和目录。

命令格式

1
2
3
4
5
scp [可选参数] file_source file_target

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

gops —— Go 程序诊断分析工具

GitHub: https://github.com/google/gops

一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具

安装

1
go get -u github.com/google/gops

命令帮助

执行 gops help 查看帮助文档:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
gops is a tool to list and diagnose Go processes.

	gops <cmd> <pid|addr> ...
	gops <pid> # displays process info

Commands:
    stack       	Prints the stack trace.
    gc          	Runs the garbage collector and blocks until successful.
    setgc	        Sets the garbage collection target percentage.
    memstats    	Prints the allocation and garbage collection stats.
    version     	Prints the Go version used to build the program.
    stats       	Prints the vital runtime stats.
    help        	Prints this help text.

Profiling commands:
    trace       	Runs the runtime tracer for 5 secs and launches "go tool trace".
    pprof-heap  	Reads the heap profile and launches "go tool pprof".
    pprof-cpu   	Reads the CPU profile and launches "go tool pprof".


All commands require the agent running on the Go process.
Symbol "*" indicates the process runs the agent.

定时备份 MySQL 并上传到七牛

多数应用场景下,我们需要对重要数据进行备份、并放置到一个安全的地方,以备不时之需。

常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。

常见的数据存储方式有,本机存储、FTP 上传到远程服务器、云存储(如阿里云OSS、七牛云存储等)、甚至本地也行。

我们可能不想每次都手动去备份,也不想每次都那么耗时间的去下载,也不想就放在服务器上丢了,因为我们需要异地备份。那我们可以尝试,写个脚本定时备份数据库,然后自动上传到指定服务器或云存储。

这里,我们说说 Linux 服务器下备份 MySQL 并上传到七牛云存储的方式。

Git 撤销所有未提交(Commit)的内容

撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了…Git 比人聪明,所以能很方便的帮我们解决问题。

场景一

需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:

1
2
3
4
5
mkdir git-tmp
cd git-tmp
git init
echo '第1次输入的内容' > file1.log
git status

以上命令产生了file1.log文件,该文件未被执行过git add、也不在版本库中。清除此类未被跟踪的文件:

1
git clean -fdx

Go 标准库 http.FileServer 实现静态文件服务

http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。

1
http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path")))

访问 http://127.0.0.1:8080,即可看到类似 Nginx 中 autoindex 目录浏览功能。