域名解析过程##
例如要寻找主机名为ice.cube.com,且DNS客户端为CentOS系统
1.主机查找本地的/etc/hosts文件,如果有对应的记录,直接可以访问。如果没有则到下一步
2.向本地的DNS服务器发起请求本地的DNS服务查找自己的记录,看能否找到请求的IP地址如果有这个地址,则返回地址给主机,如果不能则到下一步
3.发起迭代请求,首先向根服务器发起请求
4.根服务器发现无法给出ice.cube.com的地址,但是它能提供顶级域.com的地址,于是返回.com的地址
5.于是本地DNS服务器发送请求给.com名称服务器。询问ice.cube.com的IP地址
6.com名称服务器发现无法给出具体地址,但是知道cube.com的地址,于是.com返回.cube.com的地址。
7.本地DNS服务器向.cube.com发起请求。
8.当.cuce.com查看请求域名为ice.cube.com,查找记录,得到地址。然后返回本地DNS服务器地址。
9.本地DNS服务器缓存该地址并返回给主机
10.主机得到ice.cube.com对应的IP于是可以正常通信
git配置多个ssh问题##
ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/gitlab-rsa 生成ssh密钥时区分取名
~/.ssh/config文件下配置不同host使用的不同ssh key
配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径
使用命令将其添加到SSH agent,命令如下:
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_github
客户端与浏览器交互:
- 客户端请求建立SSL连接,将加密规则发送给网站。
- 网站选出一组加密算法与HASH算法,并将身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息
- 获得网站证书之后浏览器要做以下工作:
Ø 验证证书的合法性
Ø 如果证书受信任,浏览器会生成一串随机密码,并用证书中提供的公钥加密。
Ø 使用约定好的HASH计算握手消息,
Ø 使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 - 网站接收浏览器发来的数据之后要做以下的操作:
Ø 使用自己的私钥将信息解密取出密码
Ø 使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
Ø 使用密码加密一段握手消息,发送给浏览器 - 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手结束。
- 使用随机密码和对称加密算法对传输的数据加密,传输。
测试
Unit Test 单元测试
在最低的功能/参数上验证程序的准确性,比如测试一个函数的正确性(开发人员做的)
Integration Test 集成测试
假定各个软件单元已通过单元测试,检查各个软件单元接口之间的协同工作是否正确
Stress test 压力测试
测试在一定的负载下系统长时间运行的稳定性,尤其关注大业务量情况下长时间运行系统性能的变化(例如是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复)
Performance test 性能测试
表示在一个给定的基准下,能执行的最好情况。
Smoke Test 冒烟测试
“冒烟”–如果测试不通过,则不能进行下一步工作
Regression Test 回归测试
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的一种测试方法。
契约测试
也叫消费者驱动测试,Consumer 端提供一个类似“契约”的东西(如json 文件,约定好request和response)交给Provider 端,告诉Provider 有什么需求,然后Provider 根据这份“契约”去实现。
UI测试
测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。
e2e
将程序模拟为黑盒,不care内部实现,只care浏览器上的交互效果是不是我要的。
金字塔:压力 性能 冒烟 UI e2e 契约 集成 回归 单元