访问世界上每一个经纬度为整数的交叉点
拍照 经纬度该项目的目标是访问世界上每一个经纬度为整数的交叉点,并在每个地点拍照记录。 目前中国的进度是 429/978,平原地区的交叉点基本上被记录完毕了,剩下的都是难啃的骨头。
the Degree Confluence Project: https://confluence.org
该项目的目标是访问世界上每一个经纬度为整数的交叉点,并在每个地点拍照记录。 目前中国的进度是 429/978,平原地区的交叉点基本上被记录完毕了,剩下的都是难啃的骨头。
the Degree Confluence Project: https://confluence.org
需要收发邮件的话,要注意商家是否开放25端口
使用
telnet smtp.qq.com 25
显示:
telnet smtp.qq.com 25
Trying 43.129.255.54...
则无法使用。
显示:
telnet smtp.qq.com 25
Trying 43.129.255.54...
Connected to smtp.qq.com.
Escape character is '^]'.
220 newxmesmtplogicsvrszc5-0.qq.com XMail Esmtp QQ Mail Server.
则可以正常使用。
telnet smtp.gmail.com 25
Trying 172.253.117.109...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP ca40-20020a056a0206a800b005897bfc2ed3sm7618602pgb.93 - gsmtp
当然,现在Gmail 推荐使用 TLS/SSL 连接,所以也要测试465:
telnet smtp.gmail.com 465
显示:
telnet smtp.gmail.com 465
Trying 173.194.174.108...
Connected to smtp.gmail.com.
Escape character is '^]'.
正常,超时则无法发送。
telnet pop.gmail.com 995
显示:
Read more...最近服务器遭遇间歇性流量攻击,服务器负载不高,却出现无法打开的情况,查看nginx错误日志,出现大量的“Too many open files”错误,大致意思就是说nginx无法打开更多的文件。
出现这个错误可能是由于系统的ulimit限制和nginx自身的配置有关系。
ulimit命令用来限制系统用户对shell资源的访问。
假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。
ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。
简单来说,ulimit描述符可以对用户打开的文件数量进行限制(不止限制打开文件数量),让单个用户不至于打开较多的文件,导致系统奔溃或者资源不足的情况。 查看ulimit
既然知道了ulimit是做什么的,首先要先知道系统底层限制到底是多少,ulimit的参数如下:
-a:显示目前资源限制的设定;
-c <core文件上限>:设定core文件的最大值,单位为区块;
-d <数据节区大小>:程序数据节区的最大值,单位为KB;
-f <文件大小>:shell所能建立的最大文件,单位为区块;
-H:设定资源的硬性限制,也就是管理员所设下的限制;
-m <内存大小>:指定可使用内存的上限,单位为KB;
-n <文件数目>:指定同一时间最多可开启的文件数;
-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节;
-s <堆叠大小>:指定堆叠的上限,单位为KB;
-S:设定资源的弹性限制;
-t <CPU时间>:指定CPU使用时间的上限,单位为秒;
-u <程序数目>:用户最多可开启的程序数目;
-v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。
由于上述nginx错误是无法打开过多的文件,那么我们直接使用ulimit -n查看同一时间最多可开启的文件数。
ulimit -n
可以看出限制的1024个文件,这就导致nginx尝试打开更多的文件(超出1024个)的时候出现错误“Too many open files”
直接执行命令ulimit -n 65535修改打开文件数,65535指的是需要同一时间最多打开多少个文件,请根据自身情况适当修改。
ulimit命令修改只对当前的shell有效,退出后失效,如果需要永久生效,需要修改/etc/security/limits.conf
这个文件,在底部加入下面的配置:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
*:代表全局
soft:代表软件
hard:代表硬件
nproc:是代表最大进程数
nofile:是代表最大文件打开数
修改完毕后,再次执行命令:ulimit -n
可以看到设置已经生效!
对于使用 传统的 ifconfig 配置的系统(例如老版本的Ubuntu、Debian等),直接修改 /etc/network/interfaces
文件。
sudo nano /etc/network/interfaces
在相应的网络接口下添加多个IP地址。例如:
iface enp30 inet static
address 192.168.0.250
netmask 255.255.255.0
gateway 192.168.0.1
iface enp30 inet static
address 192.168.0.251
netmask 255.255.255.0
保存文件并退出后,重启网络服务:
sudo systemctl restart networking
通过以下命令验证多IP地址是否已成功添加:
ip addr show enp30
这将显示 enp30 接口的所有IP地址。你应该能看到你配置的多个IP地址。
为 enp30 接口添加一个新的IP 192.168.0.251
执行以下命令:
ip addr add 192.168.0.251/24 dev enp30
这操作是临时的,重启后会丢失。
使用curl命令来测试URL的访问速度。
以下是使用curl测试URL访问速度的步骤:
curl -o /dev/null -s -w "time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_pretransfer: %{time_pretransfer}\n time_starttransfer: %{time_starttransfer}\n time_total: %{time_total}\n" <URL>
请将<URL>
替换为要测试的URL地址。
执行命令后,curl将会发送请求并返回一些关于请求的统计信息,包括以下内容:
这些时间单位都以秒为单位。
通过这些统计信息,你可以了解到URL的访问速度和各个阶段的耗时情况。
打开wificall的好处:可以使用英国本地资费,免费接电话。
# 地区检测
DOMAIN-SUFFIX, gspe1-ssl.ls.apple.com
# 沃达丰
DOMAIN-SUFFIX, epdg.epc.mnc015.mcc234.pub.3gppnetwork.org
DOMAIN-SUFFIX, ss.epdg.epc.mnc015.mcc234.pub.3gppnetwork.org
DOMAIN-SUFFIX, ss.epdg.epc.geo.mnc015.mcc234.pub.3gppnetwork.org
DOMAIN-SUFFIX, entsrv-uk.vodafone.com
DOMAIN-SUFFIX, vuk-gto.prod.ondemandconnectivity.com
IP-CIDR,88.82.0.0/19
# CMLinkUK EE
IP-CIDR,46.68.0.0/17
# Giffgaff
IP-CIDR,87.194.0.0/16
或
# 地区检测
- 'DOMAIN-SUFFIX,gspe1-ssl.ls.apple.com,WifiCall'
# 沃达丰
- 'DOMAIN-SUFFIX,epdg.epc.mnc015.mcc234.pub.3gppnetwork.org,WifiCall'
- 'DOMAIN-SUFFIX,ss.epdg.epc.mnc015.mcc234.pub.3gppnetwork.org,WifiCall'
- 'DOMAIN-SUFFIX,ss.epdg.epc.geo.mnc015.mcc234.pub.3gppnetwork.org,WifiCall'
- 'DOMAIN-SUFFIX,entsrv-uk.vodafone.com,WifiCall'
- 'DOMAIN-SUFFIX,vuk-gto.prod.ondemandconnectivity.com,WifiCall'
- 'IP-CIDR,88.82.0.0/19,WifiCall,no-resolve'
# CMLinkUK EE
- 'IP-CIDR,46.68.0.0/17,WifiCall,no-resolve'
# Giffgaff
- 'IP-CIDR,87.194.0.0/16,WifiCall,no-resolve'
节点需要支持UDP!!! wificall走的UDP的500和4500端口
对于镜像的导出和导入,Docker 提供了两种方案,下面分别进行介绍。
使用 docker ps -a
命令查看本机所有的容器。
(1)使用 docker export
命令根据容器 ID 将镜像导出成一个文件。
docker export 镜像ID > server.tar
(2)上面命令执行后,可以看到文件已经保存到当前的终端目录下。
(1)使用 docker import
命令则可将这个镜像文件导入进来。
docker import - new_server < server.tar
(2)执行 docker images
命令可以看到镜像确实已经导入进来了。
这两个命令是通过镜像来保存、加载镜像文件的。首先我们使用 docker images
命令查看本机所有的镜像。
(1)下面使用 docker save
命令根据 ID 将镜像保存成一个文件。
docker save 镜像ID > server.tar
(2)我们还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:
docker save -o images.tar postgres mongo
var bin1 = 0b1101
package main
import "fmt"
func main(){
var num01 int = 0b1100
fmt.Printf("%b的十进制为%d", num01,num01)
}
var oct = 0o1234567
package main
import "fmt"
func main(){
var num01 int = 0o10
fmt.Printf("%o的十进制为%d", num01,num01)
}
var hex = 0x1234
package main
import "fmt"
func main(){
var num01 int = 0xf
fmt.Printf("%x的十进制为%d", num01,num01)
}
1. 二进制转八进制 %b -> %o
2. 二进制转十进制 %b -> %d
3. 二进制转十六进制 %b -> %x
4. 八进制转二进制 %o -> %b
5. 八进制转十进制 %o -> %d
6. 八进制转十六进制 %o -> %x
7. 十进制转二进制 %d -> %b
8. 十进制转八进制 %d -> %o
9. 十进制转十六进制 %d -> %x
10. 十六进制转二进制 %x -> %b
11. 十六进制转八进制 %x -> %o
12. 十六进制转十进制 %x -> %d
// 例
fmt.Printf("十进制%d转成八进制%o",num1,num2)
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于"U+%04X"
%E 用科学计数法表示
%f 用浮点数表示
快速测试 go.dev/play
Read more...sqlite3 db.file
这样我们就进入了数据库操作,下面的命令都只能是sqlite下的命令,如果输入其他命令,都是无效的。
我们可以输入 .help 先查看下大概的命令:
.help
.quit
.tables
.show
.mode list
.mode line
.mode column
.headers on
UFW 是一个 iptables 前端,可以非常方便的管理防火墙的规则。但是当安装了 Docker,UFW 无法管理 Docker 发布出来的端口了。
具体现象是:
-p
选项来把该容器的某个端口发布到服务器的所有 IP 地址上。比如:docker run -d --name httpd -p 0.0.0.0:8080:80 httpd:alpine
将会运行一个 httpd 服务,并且将容器的 80
端口发布到服务器的 8080
端口上。8080
端口访问的请求,用命令 ufw deny 8080
也无法阻止外部访问这个端口。这个问题其实挺严重的,这意味着本来只是为了在内部提供服务的一个端口被暴露在公共网络上。
如果已经按照目前网络上搜索到解决方案修改过了,请先修改回来,包括:
--iptables=false
的修改,包括 /etc/docker/daemon.json
配置文件。FORWARD
规则改回默认的 DROP
,而非 ACCEPT
。/etc/ufw/after.rules
中与 Docker 网络相关的规则。目前新的解决方案只需要修改一个 UFW 配置文件即可,Docker 的所有配置和选项都保持默认。
Read more...