最近换工作,面试发现很多公司都爱问 TCP 协议,所以根据自己的理解总结了一份手记仅供面试使用。
通过GitHub Action自动部署Maven项目
前言
要把自己的 JAVA 项目发布到 Maven 中央仓库上,这个过程非常的麻烦,而且由于 Maven 中央仓库的严谨性,每次发布都需要登录到Nexus
网站手动进行流程确认,并不支持纯命令行式的部署,导致无法做到真正的CI/CD
,为了弥补这一点,我抓包分析了一下Nexus API
并且开发了一个Github Action
(maven-nexus-release)用于自动的Close
和Release
,从而达到真正的全自动部署。
JAVA枚举最佳实践
在业务开发中经常会使用枚举来定义一些业务常量,这确实可以让我们的代码变的干净和优雅,但是如果枚举使用不当的话很可能就会发生问题,这里分享一些关于枚举最佳实践。
Go语言HTTP服务生命周期
在 go 语言里启动一个 http 服务非常简单,只需要一行代码http.ListenAndServe()
就可以搞定,这个方法会一直阻塞着直到进程关闭,如果这个时候来了些特殊的需求比如:
- 监听服务启动
- 手动关闭服务
- 监听服务关闭
在 go 中应该怎么实现呢?下面来一一举例。
linux中访问运行中程序的输出
为什么HTTPS是安全的
1. HTTP 协议
在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。
1.1 HTTP 协议介绍
HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层
。
HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下:
- 请求
1 | POST http://www.baidu.com HTTP/1.1 |
- 响应
1 | HTTP/1.1 200 OK |
debian快速设置apt源
前言
使用 docker 的时候为了排查问题经常需要下载一些软件包,但是一般镜像中都没有vim
,如果直接用apt
官方源去下载,基本上就是下面这样:
这是因为没有更新源,需要通过apt-get update
进行更新,但是国内访问官方源的速度实在是太慢,要修改成国内的源镜像去加速,这里记录下没有vim
的情况下如何快速修改源地址。
使用清华大学镜像
1 | sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list |
- 更新和安装软件
1 | apt-get update |