使用以下指令进入copymode模式即可:
1 |
ctrl + b + [ |
参考链接:
https://superuser.com/questions/209437/how-do-i-scroll-in-tmux/209608#209608
使用以下指令进入copymode模式即可:
1 |
ctrl + b + [ |
参考链接:
https://superuser.com/questions/209437/how-do-i-scroll-in-tmux/209608#209608
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package main import "fmt" type A struct { S string } type B struct { A } func (a *A) editA () { a.S += "a" } func (b *B) editB () { b.S += "b" } func main() { b := new(B) b.editA() b.editB() b.A.editA() fmt.Println(b.S) } |
执行后,输出结果为:
1 |
aba |
JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。简洁(Compact): 可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快
自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package main import "fmt" type A struct {} type B struct {} type C struct { A B } func (a *A) Afunc() { fmt.Println("Afunc") } func (b *B) Bfunc() { fmt.Println("Bfunc") } func main() { c := &C { A : *new(A), B : *new(B), } c.Afunc() c.Bfunc() } |
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,本文将从etcd的应用场景开始,深入解读etcd的实现方式,以供开发者们更为充分地享用etcd所带来的便利。 Continue reading "etcd: 从应用场景到实现原理的全方位解读"
我们 k8s集群使用的是1.7.7版本的,该版本中官方已经推荐使用 Deployment代替 Replication Controller(rc)了, Deployment继承了rc的全部功能外,还可以查看升级详细进度和状态,当升级出现问题的时候,可以使用回滚操作回滚到指定的版本,每一次对Deployment的操作,都会保存下来,变能方便的进行回滚操作了,另外对于每一次升级都可以随时暂停和启动,拥有多种升级方案: Recreate删除现在的 Pod,重新创建; RollingUpdate滚动升级,逐步替换现有 Pod,对于生产环境的服务升级,显然这是一种最好的方式。 Continue reading "Kubernetes滚动更新介绍及使用"