ssh-keygen

ssh-keygen, linux 生成 ssh 密钥 ssh-keygen 是用于为 SSH 创建新的身份验证密钥对的工具。此类密钥对用于自动登录,单点登录和验证主机。 目前广泛的用在 linux 服务验证、git 身份验证上。 执行 ssh-keygen 可以生成一个密钥对, 这个密钥对称为公钥文件和私钥文件 ,例如: 使用 rsa 算法:id_rsa(私钥), id_rsa.pub(公钥) 使用 dsa 算法:id_dsa(私钥), id_dsa.pub(公钥) 在 ~/.ssh 目录下生成私钥 id_rsa 和公钥 id_rsa.pub 文件 # 优先使用 ed25519 # 默认的密钥目录 /home/user_0/.ssh, .ssh 目录不存在的话会自动创建. ssh-keygen -t ed25519 -C "foo" ssh-keygen -t ed25519 -C "foo" -f ~/tmp/foo # RSA 算法 ssh-keygen -t rsa -C "foo" ssh-keygen -t rsa -C "foo" -f ~/tmp/foo ssh-keygen -t ed25519 -f foo -C "bar" # -t 选择加密算法, -t ed25519 使用加密算法 ed25519, 可选值: ed25519, rsa, dsa # -f foo, 生成的密钥文件名, 不指定文件名的话, ed25519 算法默认的文件名是 id_ed25519, 也可以指定完整的路径, 如 /home/user_0/tmp/foo # -C "bar" 在公钥文件中添加注释,即为这个公钥“起个别名”(不是 id,可以更改)。 # 公钥放到服务器的这个文件里 vim ~/.ssh/authorized_keys # 打印公钥指纹, The -l option instructs to show the fingerprint in the public key # while the -f option specifies the file of the key to list the fingerprint for. ssh-keygen -l -f id_ed25519 # 从私钥生成公钥 # -y This option will read a private OpenSSH format file and print an OpenSSH public key to stdout. ssh-keygen -y -f id_ed25519 > id_ed25519.pub ssh-keygen -t rsa ssh-keygen -t rsa -b 4096 ssh-keygen -t ecdsa -b 521 # -t type 指定要创建的密钥类型。可以使用: "rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2) ssh-keygen -t rsa -C "Michael Ledin" -b 4096 -m "PEM" # -C comment # -b key 长度 # -t 类型: dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa scp /root/.ssh/id_rsa.pub root@192.168.10.184:/root ssh 192.168.10.184 cat /root/id_rsa.pub >> /root/.ssh/authorized_keys # ok,you will login 192.168.10.184 without input password. 推送公钥到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.1.0.2 print SHA256 fingerprint # retrieve the SHA256 fingerprint ssh-keygen -lf /path/to/ssh/key # GitHub (MD5) fingerprint format ssh-keygen -E md5 -lf <fileName> ssh-keygen -A public key file: authorized_keys ...

2011-11-24 · 3 min · 543 words · -

GOF 23 种设计模式, Design pattern

GOF 23 种设计模式, Design pattern 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。 四位作者合称 GOF(四人帮,全拼 Gang of Four)。 单例 (Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式 [[Singleton#单例模式 Singleton]] 原型 (Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。[[prototype模式#原型模式 Prototype]] 工厂方法 (Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。 抽象工厂 (AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。 建造者 (Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。[[创建者模式-builder#创建者模式 建造者模式 Builder]] 代理 (Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。[[proxy-pattern#代理模式 proxy pattern]] 适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。[[adapter]] 桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 装饰(Decorator)模式:动态的给对象增加一些职责,即增加其额外的功能。 外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。 享元 (Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。 组合 (Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。 模板方法 (TemplateMethod)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。[[Template-Method#设计模式 – 模板方法 Template Method]] 策略 (Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。[[设计模式-策略strategy#设计模式 – 策略 Strategy]] 命令模式 (Command):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 职责链 (Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 状态 (State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。 观察者 (Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。 中介者 (Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。 迭代器 (Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 访问者 (Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。 备忘录 (Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。 解释器 (Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。 分类 创建模式, Creational Patterns Simple Factory 简单工厂模式 https://blog.wiloon.com/?p=1399 Factory Method 工厂方法 Abstract Factory 抽象工厂模式 Prototype, 原型 Builder, 建造者 Singleton, 单例 结构模式, Structural Patterns Facade, 外观 Proxy, 代理 Adapter, 适配器 Composite, 组合 Decorator, 装饰器 https://blog.wiloon.com/?p=847 Bridge, 桥接 Flyweight, 享元 行为模式, Behavioral Patterns Template Method, 模板方法 Memento, 备忘录 Observer - 观察者 https://wiloon.com/observer Chain Of Responsibility, 责任链 Command, 命令模式 (别名: 动作模式(Action)或事务模式(Transaction)) State, 状态 Strategy, 策略 Mediator, 中介者 Interpreter, 解释器 Visitor, 访问者 Iterator, 迭代器 GoF: (Gang of Four,GOF设计模式) - 四人组 Design Patterns: Elements of Reusable Object-Oriented Software (即后述《设计模式》一书) ,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著 (Addison-Wesley,1995) 。这几位作者常被称为"四人组 (Gang of Four) “,而这本书也就被称为"四人组 (或 GoF) “书。 ...

2011-10-29 · 2 min · 379 words · -

windows basic, win basic

windows basic, win basic cmd ## 删除 目录 remove-item dir0 -recurse -force copy C:\Users\desktop\foo.txt D:\backup\ /y # force overwrite copy /b/v/y C:\Users\desktop\foo.txt D:\backup\ # cmd-连续执行多条命令 copy C:\Users\desktop\foo.txt D:\backup\ && D:\backup\foo.exe # 查看证书 certmgr.msc # 查看 windows 的版本 winver ISO https://isofiles.bd581e55.workers.dev/ win10 应用开机启动, 启动项 打开运行 win + r, 输入 shell:startup, 将该应用的快捷方式从文件位置复制并粘贴到 “启动” 文件夹中。 msdn i tell u https://www.itellu.com/2021/06/22/win11-v2021-v1/ windows iso 打开页面: https://www.microsoft.com/zh-cn/software-download/windows10 点击 立即下载工具 运行 MediaCreationTool21H1.exe 选择 “为另一台电脑创建安装介质” uupdump https://uupdump.net/ ...

2011-10-14 · 3 min · 639 words · -

linux user, group, 用户 用户组

linux user, group, 用户 用户组 用户 查看用户 cat /etc/passwd wyue:x:513:513::/home/wyue:/bin/bash 看第三个参数: 500 以上的,就是后来建的用户了。其它则为系统的用户。 创建用户 # create user, 创建目录 /home/user0, 默认 bash sudo useradd -m user0 # 创建用户 user_0, 默认不会创建 home 目录, 默认 bash sudo useradd user_0 # 给 user_0 设置密码 sudo passwd user_0 sudo useradd -m -s /bin/bash user0 # create group and user sudo useradd -m -s /bin/bash -g group0 user0 sudo passwd user0 sudo useradd -m -s /bin/zsh user0 sudo useradd -M -s /bin/false user1 sudo useradd user0 # ubuntu shadow 包提供的工具 # adduser 是一个高级脚本,通常存在于 Debian / Ubuntu 系统 上。 # --system 创建一个系统用户,通常用于运行系统服务(如 Kafka、nginx、mysql 等),不是用于日常登录的普通用户。系统用户的 UID 通常小于 1000。 # --group 同时创建一个与用户名相同的用户组(kafka),并将用户添加进这个组。 # kafka 是一个系统用户,通常用于运行 Kafka 服务。 sudo adduser --system --no-create-home --group kafka options # -m: create home folder, 不加 -m 参数,默认不创建 home # -M: Don't create a home directory # -s: specify shell for user, 默认是 /bin/bash # -s /bin/false - Don't assign a shell (or more accurately, make the shell /bin/false, so the user cannot be logged into) # -r: create system account # -d: home dir # -r - Make a system user # -g <群组>: 指定用户所属的群组; # -G <群组>: 指定用户所属的附加群组 # -c <备注>:加上备注文字。备注文字会保存在 passwd 的备注栏位中; 删除用户 -r, 删除用户 home 目录 userdel -r test 设置密码 sudo passwd user0 输入密码: 一般密码至少要有六个字符,这里输入的密码是看不见的,屏幕没显示 重新输一次密码: ...

2011-09-25 · 9 min · 1830 words · -

find command

find command find 命令默认会递归遍历子目录 # find pathname -options find / -name '*task*.log' # find by file size # >100MB find . -type f -size +102400k -name 按文件名查找文件 # -name 按文件名查找文件 find . -name t.sql # 使用通配符时要加引号(单引号/双引号) find . -name 'bookmark*' # . 当前目录 # / 根目录 # 查 3 分钟前修改的文件 find . -mmin +3 -a, and -o, or -type f 表示查找文件而不是目录 -type d 目录类型 -prune prune 的功能就是当遇到某个文件夹的时候,跳过这个文件夹,不进去继续查找。 ...

2011-04-30 · 4 min · 685 words · -

accord, grant

accord, grant https://www.tjxz.cc/11067 give、accord、award、confer、grant、endow、present与bestow这组动词均含有“给予、赠给”之意。 give 最普通用词,泛指将自己的东西给予他人,所给予的东西,物质或非物质的均可。 She gave us a set of saucepans as a wedding present. 她送我的结婚礼物是一套深平底锅。 Can you give me a date for another appointment? 我能再和您约个时间吗? They never gave me a chance/choice. 他们从来就没给过我机会/选择余地。 Has the director given you permission to do that? 主任允许你那样做了吗? accord 侧重所给予的是应得的或是恰当的,或是因某种原因而适于接受的。 The massed crowds of supporters accorded him a hero’s welcome. 蜂拥云集的支持者们给予他英雄般的欢迎。 Certainly in our society teachers don’t enjoy the respect that is accorded to doctors and lawyers. 的确,在我们这个社会中,老师没有得到像医生和律师所受到的那种尊敬。 ...

2006-01-02 · 2 min · 230 words · -

godaddy

godaddy 买域名 在Godaddy搜索某个关键字, 比如 wiloon 在列表里找一个喜欢的或者价格低的, 有很多首年1.x$的, 比如 wiloon.online 购买并支付, 支付方式可以用 paypal. cloudflare> add site> free> 添加解析记录 type: A name: @ ipv4 address: proxy: false (DNS only) Save (保存设置然后等 DNS 生效) 配置域名解析, 配置到某一个 vps, DNS> Nameservers> Change Nameservers

2006-01-02 · 1 min · 38 words · -

sketch, 素描

sketch, 素描 素描的学习过程: 1石膏几何体. 2素描静物 3人物 学习石膏几何体和静物会解决的问题: 基本的绘画技巧、比例、构图、黑白灰、空间、虚实等,建立绘画思维和观察方法。 三:为什么要先学素描? 搞清楚素描学习的目地 素描学习是对绘画意识和能力的培养,不要只是去学习套路的技法,不然就失去了素描学习的意义。 说的简单点,素描会解决形,色,空间,体积,基本的透视关系,画面关系等问题。所有的视觉艺术(摄影,电影,设计,绘画)都会涉及到这些,重要性显而易见。 有很多学生一开始就会给老师说,我想学水彩,想学油画,不学素描太枯燥了。 如果你是想真学到东西,不了解素描你可能永远都是外行,除了我们的中国画,西方历史上的名家们谁没画过素描呢?只是有些艺术流派,有些艺术创作风格,特别是现代艺术,可能有些不需要很强的素描的基本功。但是他们都是画过大量的素描。 https://zhuanlan.zhihu.com/p/321783268

2006-01-02 · 1 min · 15 words · -

ubuntu install k8s

ubuntu install k8s ubuntu 24.04 安装 单节点 k8s sudo swapoff -a sudo sed -i '/swap/s/^/#/' /etc/fstab sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl # 安装 containerd, 我之前 已经 安装 了, 跳过这步 K8S_VER="v1.33.4" ARCH="amd64" # 下载二进制文件 curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubectl" curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubeadm" curl -LO "https://dl.k8s.io/release/${K8S_VER}/bin/linux/${ARCH}/kubelet" # 添加可执行权限 chmod +x kubectl kubeadm kubelet # 移动到系统 PATH 目录 sudo mv kubectl kubeadm kubelet /usr/local/bin/ /etc/systemd/system/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=https://kubernetes.io/docs/ After=containerd.service Wants=containerd.service [Service] ExecStart=/usr/local/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target sudo systemctl daemon-reload sudo systemctl enable kubelet VERSION="v1.34.0" curl -LO https://github.com/kubernetes-sigs/cri-tools/releases/download/${VERSION}/crictl-${VERSION}-linux-amd64.tar.gz sudo tar -C /usr/local/bin -xzvf crictl-${VERSION}-linux-amd64.tar.gz crictl --version # 如果之前 有过 初始化 sudo kubeadm reset -f sudo systemctl stop kubelet # 初始化集群, kubeadm 会启动 kubelet 服务 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 install Kubernetes 1.28.2 on Ubuntu 22.04 ...

2006-01-02 · 5 min · 929 words · -

coupling relationship, 耦合关系

coupling relationship, 耦合关系 耦合 不同模块之间的关系就是耦合,根据耦合程度可以分为 7 种,耦合度依次变低。 内容耦合 公共耦合 外部耦合 控制耦合 标记耦合 数据耦合, Data Coupling 非直接耦合 内容耦合 内容耦合是最紧的耦合程度,一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。 公共耦合 一组模块都访问同一个全局数据结构,则称之为公共耦合。 外部耦合 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。外部耦合和公共耦合很像,区别就是一个是简单变量,一个是复杂数据结构。 控制耦合 模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。 从控制耦合开始,模块的数据就放在自己内部了,不同模块之间通过接口互相调用。 标记耦合 调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。 数据耦合, Data Coupling 调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。 非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。 子模块无需知道对方的存在,子模块之间的联系,全部变成子模块和主模块之间的联系。 内聚 偶然内聚 逻辑内聚 时间内聚 通信内聚 顺序内聚 功能内聚 https://yanhaijing.com/program/2016/09/01/about-coupling/

1 min · 42 words · -

http method, get, head, post, options, put, delte, trace, connect

“http method, get, head, post, options, put, delete, trace, connect” https://www.cnblogs.com/machao/p/5788425.html HTTP Method 的历史: HTTP 0.9 这个版本只有 GET 方法 HTTP 1.0 这个版本有 GET HEAD POST 这三个方法 HTTP 1.1 这个版本是当前版本,包含 GET HEAD POST OPTIONS PUT DELETE TRACE CONNECT 这 8 个方法 我们先看看HTTP 1.1 规范的中文翻译 方法定义 (Method Definitions) HTTP/1.1常用方法的定义如下。虽然方法可以被展开,但新加的方法不能认为能分享与扩展的客户端和服务器同样的语义。 Hst 请求头域 (见13.23节) 必须能在所有的HTTP/1.1请求里出现。 9.1 安全和等幂 (Idempotent) 方法 9.1.1 安全方法 (Safe Methods) 实现者应当知道软件是代表用户在互联网上进行交互,并且应该小心地允许用户知道任何它们可能采取的动作(action),这些动作可能给他们自己或他人带来无法预料的结果。 特别的,GET和HEAD方法仅仅应该获取资源而不是执行动作 (action) 。这些方法应该被考虑是"安全"的。可以让用户代理用其他的方法,如: POST,PUT,DELETE,这样用户代理就能知道这些方法可能会执行不安全的动作。 自然的,保证当服务器由于执行GET请求而不能产生副作用是不可能的;实际上,一些动态的资源会考虑这个特性。用户并没有请求这些副作用,因此不需要对这些副作用负责。 9.1.2等幂方法 (Idempotent Mehtods) 方法可以有等幂的性质因为 (除了出错或终止问题) N>0个相同请求的副作用同单个请求的副作用的效果是一样 (译注: 等幂就是值不变性,相同的请求得到相同的响应结果,不会出现相同的请求出现不同的响应结果) 。方法GET,HEAD,PUT,DELETE都有这种性质。同样,方法OPTIONS和TRACE不应该有副作用,因此具有内在的等幂性。然而,有可能几个请求的序列是不等幂的,即使在那样的序列中所有方法都是等幂的。 (如果整个序列整体的执行的结果总是相同的,并且此结果不会因为序列的整体,部分的再次执行而改变,那么此序列是等幂的。) 例如,一个序列是非等幂的如果它的结果依赖于一个值,此值在以后相同的序列里会改变。 ...

5 min · 976 words · -

Infinitive 不定式

Infinitive 不定式 动词不定式一般是由“to + 动词原形”构成,还需要注意得是,这里的 to 是动词不定式的一部分,不做介词使用。举几个动词不定式的例子: to be to have to hold to sleep to spend 一定要注意的是,动词不定式中词尾从不以-ed或-ing结尾。动词不定式是动词的三种类型之一,具有动词、形容词、名词或副词的特征。在句子中通常可以作主语、宾语、补语、表语、定语、状语等。 https://liulingo.com/infinitive-yong-fa-he-li-zi

1 min · 19 words · -

字面量,常量和变量

“字面量,常量和变量” int a; //变量 const int b = 10; //b 为常量(具名常量, named constants), 10 为字面量 string str = "hello world!"; // str 为变量, hello world!为字面量 看完这个例子,我相信大家都会说,啊,可不就是这样吗?这其中可能稍微有点不太理解的就是字面量。像_常量_啊,_变量_啊, 字面量 在计算机科学中,字面量 (literal) 是用于表达源代码中一个固定值的表示法 (notation) 。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如: 整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。 有个不太好,但是足以说明问题的解释,那就是 对象字面量就是引号引起来的部分,必须是等号右边的部分。虽然这样的解释不太好,但是确实如此,这就是字面量。 const int b = 10; //b为常量,10为字面量 string str = "hello world!"; // str 为变量,hello world!为字面量 变量 有些数据在程序运行中可以变化或者被赋值,这称为变量。 int a; //变量 常量, 具名常量 有些数据可以在程序使用之前预先设定并在整个运行过程中没有变化,这称为常量。 const int b = 10; //b 为常量, 10 为字面量 foo = func_0(b, 11) // func_0有两个参数一个传的是具名常量 b, 一个是常量 11 变量与常量的区别 它们在内存中的存储方式是一样的。只是常量不允许改变,就像只读文件一样。 变量、常量与字面量的区别 字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现,(右值是指等号右边的值,如: int a=123这里的a为左值,123为右值。) 常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作。 作者: 贺贺v5 链接: https://www.jianshu.com/p/0f2816805da6 来源: 简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1 min · 90 words · -

面向对象

面向对象 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式主要有2类:实现继承、接口继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力。 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 https://www.cnblogs.com/bigberg/p/7182741.html

1 min · 22 words · -