sudo apt-get install dropbear
dbclient -i id_rsa.db root@192.168.0.100
dbcp -i id_rsa.db ~/test.txt root@192.168.0.100:~
dbcp -i id_rsa.db root@192.168.0.233:/home/root/test.txt .
date 031812082019
03: 月份
18: 日期
12: 小时
08: 分钟
2019: 年
https://www.nginx.com/blog/rate-limiting-nginx/
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/
go help testflag
go tool cover -help
运行当前目录下的测试文件 *_test.go
go test
查看详细信息
go test -v
执行指定测试文件
go test -v hello_test.go
执行指定测试函数
go test -v -test.run TestAgent
执行指定测试文件下的测试函数
go test -v hello_test.go -test.run TestAgent
生成覆盖率
go test -cover -coverprofile=cover.out
go tool cover -html=cover.out -o coverage.html
执行当前目录下及其子目录下的所有测试文件
go test ./...
go test github.com/hujia-team/annotations_tool/...
运行包 github.com/hujia-team/annotations_tool 下面,包括子目录的所有测试文件
跳过缓存。(默认情况下,第一次执行过了,第二次就会有缓存)
go test -count=1
测试性能
go test -bench=. -run=none -benchmem
把下面这个 shell 函数加入到 ~/.profile 中,然后就可以直接执行 cover 命令了。
cover () {
local t=$(mktemp -t cover.XXXXXXXXXX)
go test $COVERFLAGS -coverprofile=$t $@ \
&& go tool cover -func=$t \
&& unlink $t
}
main.go 是一个 web 服务器,现在需要测试 HTTP 接口覆盖率。
1. 新建 main_test.go 文件
package main
import (
"os"
"os/signal"
"strings"
"syscall"
"testing"
)
func TestMain(t *testing.T) {
var (
args []string
)
for _, arg := range os.Args {
switch {
case strings.HasPrefix(arg, "DEVEL"):
case strings.HasPrefix(arg, "-test"):
default:
args = append(args, arg)
}
}
waitCh := make(chan int, 1)
os.Args = args
go func() {
main()
close(waitCh)
}()
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGHUP)
select {
case <-signalCh:
return
case <-waitCh:
return
}
}
2. 生成 main.test 测试使用的可执行文件
go test -c -race -cover -covermode=atomic -o main.test -coverpkg $pkgs
$pkgs 是包的路径
pkgs=pkg1,pkg2,pkg3,....
3. 执行 main.test
./main.test -test.coverprofile=main.test.cover.out
4. 执行测试用例
执行当前目录下和子目录下的所有 *_test.go 文件
go test -count=1 -v ./...
5. 暂停 main.test 的执行
用 ctrl+C 暂停 main.test 的运行
暂停之后,就会在目录下生成 main.test.cover.out 这个覆盖率文件。
6. 生成可视化HTML
go tool cover -html=main.test.cover.out -o cover.html
7. 查看覆盖率
用浏览器打开 cover.html 文件查看。
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
https://en.m.wikipedia.org/wiki/Create,_read,_update_and_delete
https://stackoverflow.com/questions/671118/what-exactly-is-restful-programming
https://en.m.wikipedia.org/wiki/Representational_state_transfer
https://leetcode-cn.com/problems/triangle/
DP[i, j] = min(DP[i+1, j], DP[i+1, j+1]) + Triangle[i, j]
Triangle[i, j] 是表示三角形中第 i 行,第 j 列的值。
DP[i, j] 是表示递归到第 i 行,第 j 列时的状态值。
该公式意思:当前节点的状态值为下一层邻接的两个节点中的较小值加上当前节点的值。
整个状态的初始值为三角形的最底下一层。
func minimumTotal(triangle [][]int) int {
row := len(triangle)
for i := row - 2; i >= 0; i-- { //从倒数第二层开始向上遍历
for j := 0; j < len(triangle[i]); j++ {
triangle[i][j] += min(triangle[i+1][j], triangle[i+1][j+1])
}
}
return triangle[0][0]
}
func min(a, b int) int {
if a < b {
return a
}
return b
}