0%

最近换工作,面试发现很多公司都爱问 TCP 协议,所以根据自己的理解总结了一份手记仅供面试使用。

阅读全文 »

前言

要把自己的 JAVA 项目发布到 Maven 中央仓库上,这个过程非常的麻烦,而且由于 Maven 中央仓库的严谨性,每次发布都需要登录到Nexus网站手动进行流程确认,并不支持纯命令行式的部署,导致无法做到真正的CI/CD,为了弥补这一点,我抓包分析了一下Nexus API并且开发了一个Github Action(maven-nexus-release)用于自动的CloseRelease,从而达到真正的全自动部署。

阅读全文 »

在业务开发中经常会使用枚举来定义一些业务常量,这确实可以让我们的代码变的干净和优雅,但是如果枚举使用不当的话很可能就会发生问题,这里分享一些关于枚举最佳实践。

阅读全文 »

在 go 语言里启动一个 http 服务非常简单,只需要一行代码http.ListenAndServe()就可以搞定,这个方法会一直阻塞着直到进程关闭,如果这个时候来了些特殊的需求比如:

  • 监听服务启动
  • 手动关闭服务
  • 监听服务关闭

在 go 中应该怎么实现呢?下面来一一举例。

阅读全文 »

前言

在 linux 中我们经常会使用&符号让进程在后台运行,例如:

1
nohup java -jar app.jar &

但是这样的话在终端就看不到输出了,有时候临时需要排查问题看不到输出就 GG 了。

解决办法

其实可以利用proc系统文件来访问程序对应的输出:

  1. 首先获取到进程对应的PID
  2. 通过tail命令读取输出:
1
2
3
4
#获取标准输出
tail -f /proc/<PID>/fd/1
#获取错误输出
tail -f /proc/<PID>/fd/2

1. HTTP 协议

在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。

1.1 HTTP 协议介绍

HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层

HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230RFC 7231RFC 7232RFC 7233RFC 7234RFC 7235),通讯报文如下:

  • 请求
1
2
3
4
5
6
7
POST http://www.baidu.com HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Content-Length: 7
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

wd=HTTP
  • 响应
1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Thu, 14 Feb 2019 07:23:49 GMT
Transfer-Encoding: chunked

<html>...</html>
阅读全文 »

前言

使用 docker 的时候为了排查问题经常需要下载一些软件包,但是一般镜像中都没有vim,如果直接用apt官方源去下载,基本上就是下面这样:

这是因为没有更新源,需要通过apt-get update进行更新,但是国内访问官方源的速度实在是太慢,要修改成国内的源镜像去加速,这里记录下没有vim的情况下如何快速修改源地址。

使用清华大学镜像

1
2
sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sed -i 's|security.debian.org/debian-security|mirrors.tuna.tsinghua.edu.cn/debian-security|g' /etc/apt/sources.list
  • 更新和安装软件
1
2
apt-get update
apt-get install -y net-tools

前言

github page 在国内访问速度非常慢,而且近期 github.io 的域名经常被干扰解析成127.0.0.1,迫于无奈在网上找到了一个能白嫖加速 github page 的办法,就是套一层 cloudflare CDN,虽然它在国内没有 CDN 节点,但是整体效果是完爆 github.io,不过要注意的是免费版本是有请求次数限制的,每天 10W 次,当然这足够我的小博客使用了,这里记录一下操作步骤。

阅读全文 »

前言

以前在使用wireshark做协议分析的时候,一直以为它只能抓 HTTP 的报文,所以在抓 HTTPS 包的时候一直是用的Fiddler,然而有一天我突然想抓一下HTTP2的报文看一看,Fiddler就不行了,于是在一番 google 之后发现wireshark是可以支持的,只不过需要在特定的条件下才可以。

阅读全文 »

为什么升级

最近突然想把博客的评论系统换掉,因为之前用的valine评论插件,起初是觉得方便并且可以支持匿名评论,但是在评论之后没有通知,很多评论都是过了很久之后我才知道,所以想换一个能有通知的评论系统,起初的选型是:GitmentGitalk,但是发现一个更好的utterances,查了一下 next 高版本已经可以支持utterances了,这样升级 next 就直接接入了。

阅读全文 »