一台 server 的 authorized_keys 配置了很多很多 public key, 一个客户端去连接的时候,服务端怎么知道这个客户端的私钥对应哪个 public key 呢?
RSA 加密解密和签名验证
分析数字证书的签名和验证以及 RSA 非对称加密解密的时候,又想到了 SSH 中登陆流程,服务器是如何在 authorized_keys 找到当前登陆客户端与之匹配的公钥呢??
Spring Boot filtering 不生效问题
1. Spring Boot filtering 不生效
今天在写自己的图床的时候,因为用了docker,每次在更新的时候,本地使用 dockerfile-maven-plugin 插件,打包镜像,然后 push 到 Docker hub 自己的私有仓库。然后自己的 VPS,再拉取最新的 Docker img 启动。
所以,每次在更新了 pom.xml 中的 version 后, 需要手动去更新 docker-compose.yml 文件中镜像的版本号。 为了自动做,就把 docker-compose.yml 放到了 src/main/resources 下,然后使用 mave-resources-plugin 插件 copy 到指定目录。这样在编译,打包镜像的时候,会自动更新 docker-compose.yml 文件。
Redis 知识点整理
1. Redis 数据结构
主要的数据类型:
- String(K-V): 单值,键值对,类似 Memcached, 比如配置,常量值,开关等等。
- Hash: 一般是存储对象接口,key 是对象的标示,filed 是属性,value 是属性值。
- Set: 集合,存放不重复的数据,求交集,统计不重复的量。
- List: 链表,常用在消息队列,TimeLine.
- SortedSet: 排名,需要根据 一个值来排序的场景,排行榜等。
IO 模型
1. tcp backlog 参数
- tcp 在三次握手的时候:
- client 会发送一个 SYN 到 server。此时,客户端的 tcp 状态会变成 SYN_SEND,server 收到 SYN包后,将连接状态修改为 SYN——RCVD,维护一个 half open sync queue(半连接)队列,将当前连接加入到半连接队列。半连接的长度为 max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog) 。
- server 端给客户端回应一个 SYN_ACK 的包给 client。client 收到后,会将连接修改为ESTABLISHED,然后发送 ACK 到 server。
- server 收到 client 的 ACK 过后,将连接的状态修改为 ESTABLISHED,并把请求从 sync queue 半连接队列放到 accept queue,长度为min(backlog, somaxconn)。
Docker 私有仓库 Harbor 配置
1. 安装依赖
- docker
- docker-compose
2. 下载安装包
Harbor 安装分为两种,一种是 online,一种是 offline。offline 的包很大,推荐 online 的方式。
1 | wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz |
3. 修改 harbor.yml
配置 harbor.yml 文件,配置并必须参数和可选参数:
Java 实现固定长度队列,自动删除最早添加的数据
服务器有一个发送验证码到指定邮箱的功能。测试的时候,往往会随意填写一个邮箱来测试注册功能,往往需要从日志或者数据库去获取最近发送的验证码,今天就想着来做一个接口,仅供测试机使用,可以列出最近发送的 5 条验证码和对应的邮箱。
1. 长度固定,不能太长了,就最近的几条就可以,所以需要固定的队列。
2. 在添加的时候,自动删除最早添加的记录。
3. 输出的时候,倒序输出
解决 Spring boot Docker Mave 插件自动 push 失败
今天在 Spring Boot 中配置,使用 Maven 命令: mvn -X install -P product dockerfile:build,在自动打包的时候,就 push 镜像到 docker hub,但是一直报错:
Docker 入门
1. 什么是 Docker ?
- Go 语言实现
- 基于 Linux 内核 CGroup, namespace, UFS 等技术:
- CGroup : Control Groups 的缩写,控制 CPU,内存,IO等资源限制。
- namespace : 资源隔离,通过namespace,让一个进程是一个独立的盒子,拥有自己的 PID,网络,hostname等等,不能访问别的 namespace 的资源。
- UFS: 镜像和容器的管理,Docker 目前支持的联合文件系统包括 OverlayFS, AUFS, Btrfs, VFS, ZFS 和 Device Mapper,默认使用 overlay2
- 操作系统层面的虚拟化技术。
- 与传统的虚拟化技术对比:
- Open VZ 类似,但是虚拟出来的是 VPS,利用底层的内核,虚拟出一整套的操作系统。
Hexo Next 主题添加 Valine 评论系统
1. 评论系统选择
网上有很多关于评论系统的选择的介绍,国内国外的,参考下:
知乎 : Hexo(NexT 主题)评论系统哪个好?
- hypercomments : 老毛子开发,现在收费了,果断弃坑了。
- LiveRe : 很多人推荐,但是是棒子做的,注册的时候韩文,填写邮箱验证码死活不通过,放弃。
- Disqus : 国内没法用
gitment,作者弃坑了,果断弃坑,别的可以自己参考,最终选了 Valine.