以http
代理简单表示 http proxy
发送和接收的协议
网络通信工具 netcat
netcat
,简写为 nc
,是 unix
系统下一个强大的命令行网络通信工具,用于在两台主机之间建立 TCP
或者 UDP
连接,并提供丰富的命令进行数据通信。nc
在网络参考模型属于应用层。使用 nc
可以做很多事情:建立连接
,发送数据包
,监听端口
,扫描端口
,处理 ip4
和 ip6
,和 telnet
不同,nc
会区分错误输出和标准输出,telnet
则都是标准输出。
Windows自带的端口转发
通过 Windows
实现端口转发。本文为参考转发文章
使用Portproxy
模式下的Netsh
命令即能实现Windows
系统中的端口转发,转发命令如下:
1 | netsh interface portproxy add v4tov4 listenaddress=[localaddress] listenport=[localport] connectaddress=[destaddress] |
bazel 笔记 01
Bazel - a fast, scalable, multi-language and extensible build system
在使用 bazel
许久之后,开始做一下记录,以记录一些奇奇怪怪的处理方式(?)。
docker swarm替代docker-compose
使用 docker-compose 管理本地容器组,是非常方便的手段,但是最近遇到一个 bug,决定使用 docker stack /swarm 替代 docker-compose 。
命令行生成二维码可以试试
echo "二维码内容" | qrencode -o - -t UTF8
事情是这样的,在 docker-compose.yaml
内定义了 network
.aliases
之后,在测试的时候,其他容器能够正常通过 aliases
对其进行访问,但是,到了实际部署的时候,很容易失败,例如重启之后,或者某个容器意外或者手动重启之后,都有可能导致该情况,导致很湿郁闷。
遂,在查找资料之后,决定替换掉 docker-compose
。
Ps:
docker-compose
的配置depends_on
只会控制控制启动顺序,并不会等待所需容器启动成功之后再启动下一 容器
简单来说,启动容器数据库
之后会马上启动容器应用
,并不在乎应用
容器需要数据库
容器才能正常运行,此时可能会造成应用
容器无法找到数据库而意外退出。
kProxyCpp 服务端软件
承接自 kHttpd 项目。
由于 kHttpd
项目使用了 libevent
开源库,其中某些特性导致使用上面不太方面(仅仅指的是我个人而言),所以重新开发了本项目。
功能说明
http server
实现,http server
服务端功能,使用线程池为每个连接进行处理,所以每个请求都可以阻塞(但是并不建议,除非某种特定的场景,例如进行http代理服务,必须等到对方回应,不使用libevent
其中一个原因)。WebSocket server
实现,当前项目实现了WebSocket server
端代码,可以使用 c/c++ 愉快的开发WebSocket
项目,同时WebSocket
服务端也支持http server
,也就是同一个端口同时使用WebSocket server
以及http server
,使得更方便一些。使用WebSocket server
的情况下,请根据实际情况,加大线程数量以及监听数量,否则可能造成后续连接被阻塞。CGI
功能实现,目前实现CGI
调用php
,可以使用php
作为动态脚本进行开发,不过现在还未实现php
的POST
模式,即还未将php
body
数据传入给CGI
。
ssh 隧道端口转发
bazel 工具链
最近在使用 bazel
,尝试使用交叉编译,在这做个记录
配置的地方有几个:
.bazelrc
文件配置,用于激活config
配置- 创建
toolchain
目录,并创建BUILD
文件 - 创建对应的
.bzl
文件
安卓模拟自动注入
本项目是用于模拟自动注入,通过添加注解@Autowired
,方便在安卓下能够更好的自动注入自动添加对象,不需要自己给每一个类进行Instance
维护。
gradle发布到github packages
最近弄了个Android
的模拟自动注入的库,在给别人用的时候,需要发送 jar
或者 aar
给对方,这就导致我可能需要保留一份,否则每次都需要重新编译生成。为了 偷懒
增加效率,在查询资料之后,将其发布到了github packages
。
准备工作:需要github
账号(废话),生成GitHub token
需要有写权限(如果只是使用不需要,如果需要推送则需要),将账号(GITHUB_USER
)
和token
(GITHUB_PERSONAL_ACCESS_TOKEN
)配置到用户目录下~/.gradle/gradle.properties
。
注意事项:
如果发布返回4**系列错误,原因可能是这几个:
GroupPageId
或者ArtificatId
使用了大写,需要改为小写。- 当前
GroupPageId
或者ArtificatId
已经在使用了!!!,需要修改,或者把在使用的删掉。。。。- 账号密码(
Token
)错误。