iTerm2结合 expect 脚本实现 ssh 登录跳板机后登录指定服务器

痛点

一般情况下,公司所有的服务器都在内网,公网访问、管理服务器都要先通过登录一台跳板机,然后再由跳板机登录到相应的服务器进行操作,跳板机与服务器的连接都是内网地址

通常情况下,我们都是通过两次ssh,第一次本地机器登录跳板机,第二次在跳板机登录指定机器,需要输入两次密码,容易输错

后端码农每天要无数次登录各种机器,如果能通过工具自动化,每次能省半分 …

阅读全文

Vim高效查找和替换

查找

  • 按下/即可进入查找模式
  • 按下n查找下一个,按下N查找上一个
  • 支持正则表达式,例如/vim$匹配行尾的”vim”
  • 查找特殊字符需要转义,例如/vim\$匹配”vim$”

大小写敏感查找

  • 加入\c表示大小写不敏感查找,\C表示大小写敏感查找
/foo\c

Vim大小写敏感配置

  • Vim …

阅读全文

leetcode 236. 二叉树的最近公共祖先

题目描述

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树: root = …

阅读全文

leetcode 235. 二叉搜索树的最近公共祖先

题目描述

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树: root = …

阅读全文

Linux IO模式及select、poll、epoll详解

概念说明

在进行解释之前,首先要说明几个概念: - 用户空间和内核空间 - 进程切换 - 进程的阻塞 - 文件描述符 - 缓存 I/O

用户空间与内核空间

  • 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。
  • 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬 …

阅读全文

Web安全-SQL注入

简介

SQL注入攻击(英语:SQL injection),简称SQL攻击或注入攻击,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

什么时候容易发生SQL注入攻击?

  1. 使用字符串拼接 …

阅读全文

共识机制-股份授权证明机制DPoS

原理

  • Delegated Proof of Stake,叫做股份授权证明机制(又称受托人机制),从某种角度来看,DPoS有点像是议会制度或人民代表大会制度。
  • 如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。
  • DPoS充分利用了持股人的投票,以公平民主的方式达成共识,他们投票选出的N个见证人,可以视 …

阅读全文

共识机制-PoS权益证明

PoS简介

在PoW中,节点之间通过hash的计算力来竞赛以获取下一个区块的记账权

如果验证者愿意提供更多的令牌作为抵押品,他们就有更大的机会记账下一个区块并获得奖励

类似于现实生活中的股东机制,拥有股份越多的人越容易获取记账权

实现原理

常见的有两种:

1. proofhash < 币龄x目标值
2. proofhash < 币数x …

阅读全文

一致性算法-Raft

Raft基础

  • 一个Raft集群包含若干个节点,通常是5个,允许整个系统容忍2个节点的失效。
  • 任何时刻每一个节点都处于三个状态之一:领导者、跟随者、候选人。通常,系统中只有一个领导人,其它节点都是跟随者。跟随者是被动的:不会发送任何请求,只是简单响应领导者或候选人的请求。领导者处理所有客户端请求。
  • Raft把时间分割成任意长度的任期,每个节点存储当前任期 …

阅读全文