Cobra Tutorial
cobracobra 是go的cli框架,包含cli库和生成基于cobra cli应用的命令行工具
简介
子命令,如app server、app sub等
完整兼容POSIX的flag,包括长命名和短命名
子命令的嵌套(子命令)
全局、本地、级联三种flag
好用的工具命令,如cobra init appname初始化cli程序,cobra add cmdname为cli程序增加子命令
智能提示
生成命令help,以及为每个flag、cmd生成-h,--help帮助
生成自动补全功能
生成man帮助文档
命令别名
自定义帮助、用法
为达到saas的12-factor 可选择viper
安装go get -u github.com/spf13/cobra/cobra会自动安装最新版本库和命令行工具,国内下不下来可以手动下载放到对应的文件夹中,然后就可以在你的code里应用它import "github.com/spf13/cobra"
概念cobra主要管理commands、args、flags,commands代表一个命令或动作,一般用动词命名,args代表输入的 ...
viper Tutorial
cobracobra 是go的cli框架,包含cli库和生成基于cobra cli应用的命令行工具
简介
子命令,如app server、app sub等
完整兼容POSIX的flag,包括长命名和短命名
子命令的嵌套(子命令)
全局、本地、级联三种flag
好用的工具命令,如cobra init appname初始化cli程序,cobra add cmdname为cli程序增加子命令
智能提示
生成命令help,以及为每个flag、cmd生成-h,--help帮助
生成自动补全功能
生成man帮助文档
命令别名
自定义帮助、用法
为达到saas的12-factor 可选择viper
安装go get -u github.com/spf13/cobra/cobra会自动安装最新版本库和命令行工具,国内下不下来可以手动下载放到对应的文件夹中,然后就可以在你的code里应用它import "github.com/spf13/cobra"
概念cobra主要管理commands、args、flags,commands代表一个命令或动作,一般用动词命名,args代表输入的 ...
mermaid语法全解(正在更新)
[toc]
Mermaid流程图 graph的基本用法基础
graph图开头要以graph TD从上到下或graph LR从左到右graph RL从右到左开头,代表画图的顺序
带方向的链接需要最少两个-和一个>,-的数量代表连线的长度,如A -----> B
带方向的链接需要最少三个个-,-的数量代表连线的长度,如A ----- B
图的方向支持一下几种方式:
1234567graph LRTB - 从上到下(top buttom)BT - 从下到上(buttom top)LR - 从左到右(left right)RL - 从右到左(right left)TD - 跟 TB 相同
三种线类型
123--- : 实现-.- : 虚线=== : 粗线
虚线带箭头的话加 > ,实线和粗线则最后一个字符替换成 >
注释的两种写法(中间加注释,后边加注释)
12-- 中间加注释写法 -->-->|后边加注释写法|
文本框类型
1234[] - 方形文本框{} - 菱形文本框() - 边角圆滑文本框(()) - 圆形文 ...
GarbledCircuit
Garbled Circuit零碎知识定律:是由实验得出的基本结论,由定律进行数学推导可以得到一些物理上的结论或者定理
定理: 由公理,原理,定律经过数学推导得出的结论
公理: 是没有经过证明,但被当作不证自明的一个命题
信息守恒定律: 物理学的绝对性定律,量子力学基石(幺正性:波函数归一化,全空间粒子总概率为1),指孤立物理系统中信息守恒(定律,不一定正确,如黑洞佯谬的挑战)
黑洞无毛: 黑洞只有质量、角动量以及电荷三个不能变为电磁辐射的守恒量,其他的信息全都丧失
黑洞佯谬: 广义相对论中对黑洞的计算得出黑洞无毛,黑洞层面信息不再守恒,这也是广义相对论和量子理论矛盾之处
同态:抽象代数中,同态是两个代数结构(例如群、环、或者向量空间)之间的保持结构不变的映射
同态加密: 对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的
可信计算(Trusted Computing,TC): 可信目的是保证系统和应用的完整性等,从而确定系统或软件运行在期望的可信状态。可信是安全的必要不充分条件,可信计算分为外包计算和多方计算,外 ...
linux的boot目录
1.查看当前运行的linux内核编译参数
1234#两个方法,proc要求在内核编译时增减相应的选项才会生成,很多系统没有/proc/config.gz,第二种方法,一般zcat /proc/config.gz#或cat /boot/config-$(uname -r)
简洁明了的systemd的使用
简述背景:在systemd之前使用initd 管理服务(把启动脚本放在在/etc/init.d/下),但是有两个主要缺点:
线性(串行)启动导致启动时间过长
initd只负责在系统启动时启动启动脚本,若要处理脚本状态需要自己实现,导致脚本复杂
systemd设计目标
为服务启动和管理提供全套解决方案
可完全取代init.d ,性能更强,功能更多
功能系统管理综合(systemctl))123456789#常用命令# 重启systemctl reboot# 关闭电源systemctl poweroff# CPU暂停systemctl halt# 挂起systemctl suspend
用户(loginctl)12345678910list-sessions List sessionssession-status [ID...] Show session statusshow-session [ID...] Show properties of sessions or the manageractivate [ID] Acti ...
CPU简介
基本概念CPU:( CentralProcessingUnit): 中央处理单元,CPU不等于物理核,更不等于逻辑核,一个逻辑核包含多个物理核,一个物理核可以分成n个逻辑核
物理核(physical core): 可以看的到的,真实的cpu核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。
逻辑核( logical core,LCPU): 在同一个物理核内,逻辑层面的核。1LCPU=1THREAD
超线程( Hyper-threading, HT):时间管理大师,超线程可以在一个逻辑核等待指令执行的间隔把时间片分配到另一个逻辑核。同一物理核超出的逻辑核之间为兄弟线程;
虚拟核:使用虚拟化技术,超分出的核心,位于虚拟机中;
CPU Die(裸晶): 生产中引入概念,从晶圆上切下来的裸晶,通过片外总线互联,可以封装在一个Package中,die之间通过HT(HyperTransport)总线通信
CPU Package(封装):对应一个cpu socket的一个CPU;
双路服务器:主板上有两个cpu插槽(socket),多个处理器通过 QPI 链路相连;
对称多处理机(Sy ...
极简的极客法则
[toc]
写在前面原文是hacker-laws ,作者做了翻译、归纳、整理、夹带私货;阅读hacker laws 有助于coder 更好的开发; here we go!
定律90-9-1 法则 (90–9–1 Principle or 1% Rule)在诸如维基这样的互联网社区中,90% 的用户只看内容并不参与互动,9% 的用户会参与讨论,而只有 1% 的用户会创造内容。
阿姆达尔定律 (Amdahl’s Law)并行计算中,有些部分可以被多核心并行处理,有些部分只能串行处理,增加核心对速度的提升的收益会边际递减
破窗效应 (The Broken Windows Theory)在破窗理论中认为,恶化若不修复,会导致进一步更严重的恶化参见:
布鲁克斯法则 (Brooks’s Law)软件开发后期,添加人力只会使项目开发得更慢。因为有些事情无法分割,切增加沟通成本(和阿姆达尔有点像)《人月神话》大篇幅在讲这个
CAP 定理 (CAP Theorem or Brewer’s Theorem)CAP 定理由 Eric Brewer 所定义,它指出对于分布式数据存储来说,不可能同时满足以下三点 ...
从Typhoon台风到控制反转-依赖注入
最近这两天台风“烟花“ 肆虐长三角,偶然间看到ios开发中的Typhoon,那今天就聊聊依赖注入吧。
什么是Typhoon台风Typhoon 是Objective-C和Swift语言的轻量级依赖注入工具,功能较全,容易上手。
什么是依赖注入(Dependency Injection,DI)依赖注入是减少代码耦合度的一种常见方式。
在解释依赖注入之前我们要解释一下控制反转,因为依赖注入是实现控制反转的一种方式(另一种方式是依赖查找)。
什么是控制反转(Inversion of Control,IoC)控制反转是面向对象编程(OOP)的一种设计原则(SOLID原则的D依赖倒置原则),用来降低代码耦合度。
描述:类A需要用到类B中的对象o,必使得要在类A要获取类B的引用,类B实例创建过程如果在类A代码中实现会使得代码耦合度增大,更改类B中的代码,可能也要去更改引用了类B的代码,很不好用;而控制反转则是将创建类B实例的控制权从类A中剥离到IOC容器控制。
依赖注入与控制反转辨析控制反转是思想,依赖注入是技术,依赖注入是控制反转的一种实现方式。
依赖注入是从类A的角度描述的:类A需要依赖IOC容 ...
golang实现rsa加解密
概述
数字签名
加解密
对称
非对称
RSA算法
大整数的因数分解,是一件非常困难的事情(对目前的计算机算力和数学方法来说)。我们可以以此为数据加解密
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132package mainimport ( "errors" "fmt" "reflect" "strconv" "strings")func main() ...