Linux 终端代理加速访问

可以用命令<code>curl cip.cc</code>检查终端是否处于代理状态可以用命令curl cip.cc检查终端是否处于代理状态

info:Git走代理的方法:传送门

直接在终端运行下面的内容。

#走HTTP代理,用这个
export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"

#走socket5协议,用这个
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"

#或者直接All in
export ALL_PROXY="socks5://127.0.0.1:1080"
info:如果嫌每次都需要执行命令麻烦,可以添加到.bashrc.zshrc文件中,使用source命令刷新下配置文件就可以生效了。

docker 镜像源地址

修改方法

编辑/etc/docker/daemon.json文件,如果有多个参数用,隔开

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

/etc/docker/daemon.json/etc/docker/daemon.json

#重启docker服务
systemctl restart docker.service 

NanoPi NEO2 安装OMV5.X

摘要:本文主要记录NanoPi NEO2(armbian) 安装OMV5.X 过程,和简单配置(时区、SMB……)。

最近看见NanoPi R2S做软路由十分火,然后我就想起来我吃灰的这货了。

NanoPi NEO2的一盘位NAS套件NanoPi NEO2的一盘位NAS套件

看起了挺好的对吧,实际上我是这么用的……(感谢某位大佬赞助的固态)

散热堪忧,尤其是夏天散热堪忧,尤其是夏天

或许是我跑的东西有点多?

有点跑题了,这东西的和R2s差不多,都是1G RAM(R2S是DDR4),都有一个Cortex A53(NEO2是全志H5,R1S是RK3328)直接引出的千兆LAN口,只不过,R2S把USB3.0的口转成千兆口了。而NEO2的是有2个USB2.0的引脚。

我这个NAS套件,把一个USB2.0口转成了个SATA3的口,虽然是3.0的芯片但受限于2.0的口很是蛋疼。还有个电池供电的时钟模块,解决的关机掉时间的问题。

他们都有官方移植的openWrt,做个旁路由也凑合。

总体来说还可以

但是,系统忒老了。官方wiki提供的是OMV3.x,现在都出到了5.x了。

ps:官方wiki,国内直接访问不但慢,还动不动连接失败,真蛋疼。不过wiki东西还是比较全的

于是,我决定折腾下这玩意,本来想自己编译,但太高估我自己了

更新软件包提示 W: GPG error 没有公钥,无法验证签名

今天更新NanoPi neo2 软件包的时候,突然提示GPG error没有公钥,无法验证签名。具体报错如下:

报错信息报错信息

Reading package lists... Done
W: GPG error: http://mirrors.ustc.edu.cn xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://mirrors.ustc.edu.cn xenial-backports InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://mirrors.ustc.edu.cn xenial-proposed InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://mirrors.ustc.edu.cn xenial-security InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
W: GPG error: http://mirrors.ustc.edu.cn xenial-updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

翻译过来就是GPG错误,没有公钥,无法验证签名。

Hockeypuck OpenPGP keyserver,这个网站可以获取缺失的公钥。

命令如下(后面的40976EAF437D05B5是你具体报错时提示缺失公钥的部分):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5

黄色部分提示获取成功黄色部分提示获取成功

再次更新,没有报错了再次更新,没有报错了

Tomcat源码架构笔记(servlet请求处理链路篇)

上一篇文章中,我们在debug模式下完整的跟踪程序走了一遍,对Tomcat start启动阶段所做的操作有了大概的了解。

这回,我们一起看看,Tomcat服务器接受到一个请求到处理这个请求之间经历了怎样的过程。


Servlet请求处理链路分析

  • 一个servlet如何被tomcat处理的?
  • servlet请求 -> 可以处理当前servlet请求的servlet实例 -> servlet.service()

Servlet请求处理链路和URL的对应关系Servlet请求处理链路和URL的对应关系

上一篇文章中我们知道Acceptor线程主要负责监听Socket嵌套字请求,并将其转给sekector(选择器)。

而poller线程,则负责检查sekector(选择器)中是否有数据到来的channel,如果有就进行处理。

NIO模型NIO模型

所以Servlet请求处理链路中最重要的就是poller线程,他负责控制这一系列的操作。