ARM DIY(四)WiFi 调试
文章目录
- 焊接
- 打开内核编译选项
- 重新编译内核
- 烧录 && 运行 && 测试
- 完善脚本
- 测速
- 手搓天线
- 正式天线
焊接
换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位

焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻
硬件部分就这么多比较简单,接下来是软件部分
打开内核编译选项
搜索 RTL8723BS

RTL8723BS 默认关闭,不过要使能该驱动之前,需要先使能 WLAN 和 CFG80211
搜索 WLAN

使能 WLAN

搜索 CFG80211

已经被打开了,应该是使能 WLAN 时,将其联动打开了
使能 RTL8723BS

发现只能选择为 [M] 无法选择成 [*],有了解的小伙伴可以告知下原因。我的猜测是,WiFi 接口 up 时需要将 fw 文件加载到 WiFi Chip,如果将驱动编译成内核静态模块的话,驱动初始化在文件系统挂载前,那时候还无法从文件系统中读取 fw 文件,所以索性就只让该驱动编译成动态模块,等操作系统启动完毕后由应用层手动加载,这时候就可以方便地从文件目录中读取 fw 文件发送给 WiFi Chip 了。
重新编译内核
make O=DIY_V3S/ linux-rebuild
make O=DIY_V3S/
cp DIY_V3S/images/sdcard.img ~/share/
sync
烧录 && 运行 && 测试
SD 卡烧录 sdcard.img 镜像
上电启动
安装驱动
# insmod /lib/modules/5.3.5/kernel/drivers/staging/rtl8723bs/r8723bs.ko
[ 60.289175] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 60.320409] RTL8723BS: module init start
[ 60.326135] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 60.335108] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 60.386496] pnetdev = de099689
[ 60.448836] RTL8723BS: rtw_ndev_init(wlan0)
[ 60.456286] RTL8723BS: module init ret =0
#
驱动安装后,就会产生 wlan0 接口,但是没有 up,需要手动将其 up
# ifconfig wlan0 up
[ 167.848205] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
#
初次 up 时,会加载 firmware 到 WiFi Chip,fw 文件存放在 /lib/firmware/rtlwifi/
# ls /lib/firmware/rtlwifi/
rtl8712u.bin rtl8723bs_ap_wowlan.bin rtl8723bu_nic.bin
rtl8723aufw_A.bin rtl8723bs_bt.bin rtl8723bu_wowlan.bin
rtl8723aufw_B.bin rtl8723bs_nic.bin rtl8723fw.bin
rtl8723aufw_B_NoBT.bin rtl8723bs_wowlan.bin rtl8723fw_B.bin
rtl8723befw.bin rtl8723bu_ap_wowlan.bin
查看接口
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81 UP BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)#
发现已经 up 了,接下来就让它连接家里 WiFi,
配置 wpa_supplicant.conf
# cat /etc/wpa_supplicant.conf
ap_scan=1
network={ssid="your SSID"scan_ssid=1key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONEpairwise=TKIP CCMPpsk="your SSID password"priority=5
}
#
连接
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
# [ 1060.759388] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 1061.055922] RTL8723BS: start auth
[ 1061.366001] RTL8723BS: auth success, start assoc
[ 1061.378898] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 1061.387965] RTL8723BS: assoc success
[ 1061.398201] RTL8723BS: send eapol packet
[ 1061.428154] RTL8723BS: send eapol packet
[ 1061.442062] RTL8723BS: set pairwise key camid:4, addr:80:ea:07:c9:d6:4a, kid:0, type:AES
[ 1061.476357] RTL8723BS: set group key camid:5, addr:80:ea:07:c9:d6:4a, kid:1, type:AES# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:62 errors:0 dropped:70 overruns:0 frame:0TX packets:2 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:14450 (14.1 KiB) TX bytes:288 (288.0 B)#
连接成功,不过没有分配 IP 地址,手动触发 DHCP 获取 IP
# udhcpc -i wlan0
udhcpc: started, v1.36.1
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.31.29, server 192.168.31.1
udhcpc: lease of 192.168.31.29 obtained from 192.168.31.1, lease time 43200
deleting routers
adding dns 192.168.31.1
#
ping 外网测试
# ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: seq=0 ttl=49 time=76.509 ms
64 bytes from 39.156.66.10: seq=1 ttl=49 time=37.077 ms
64 bytes from 39.156.66.10: seq=2 ttl=49 time=41.511 ms
64 bytes from 39.156.66.10: seq=3 ttl=49 time=45.283 ms
64 bytes from 39.156.66.10: seq=4 ttl=49 time=37.318 ms
64 bytes from 39.156.66.10: seq=5 ttl=49 time=39.462 ms
^C
--- baidu.com ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 37.077/46.193/76.509 ms
#
网络已通
完善脚本
列举上述操作
- 安装驱动
- up interface
- 使用 wpa_supplicant 连接
- 执行 dhcp 获取 IP
如果板子每次重启后都需要手动执行上述操作,那就太麻烦了,遂将上述操作添加到启动脚本中
# cat /etc/inittab
# /etc/inittab
。。。
# now run any rc scripts
::sysinit:/etc/init.d/rcS
::sysinit:/etc/init.d/rc.local // 添加这行
。。。
#
创建 rc.local 文件,并赋予可执行权限
# cat /etc/init.d/rc.local
#!/bin/sh/etc/init.d/wifi_insmod_connect.sh#
创建 wifi_insmod_connect.sh 文件,并赋予可执行权限
# cat /etc/init.d/wifi_insmod_connect.sh
#!/bin/shinsmod /lib/modules/5.3.5/kernel/drivers/staging/rtl8723bs/r8723bs.ko
ifconfig wlan0 up
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
sleep 3s
udhcpc -i wlan0
#
重启
[ 1.826283] Run /sbin/init as init process
[ 1.977033] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 2.471812] r8723bs: module is from the staging directory, the quality is unknown, you have been warned.
[ 2.523731] RTL8723BS: module init start
[ 2.529315] RTL8723BS: rtl8723bs v4.3.5.5_12290.20140916_BTCOEX20140507-4E40
[ 2.538281] RTL8723BS: rtl8723bs BT-Coex version = BTCOEX20140507-4E40
[ 2.568836] pnetdev = 24ff44ca
[ 2.631249] RTL8723BS: rtw_ndev_init(wlan0)
[ 2.638718] RTL8723BS: module init ret =0
[ 2.676561] rtl8723bs: acquire FW from file:rtlwifi/rtl8723bs_nic.bin
[ 5.959413] RTL8723BS: rtw_set_802_11_connect(wlan0) fw_state = 0x00000008
[ 6.247413] RTL8723BS: start auth
[ 6.254599] RTL8723BS: auth success, start assoc
[ 6.266249] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[ 6.275381] RTL8723BS: assoc success
[ 6.285938] RTL8723BS: send eapol packet
[ 6.311315] RTL8723BS: send eapol packet
[ 6.325445] RTL8723BS: set pairwise key camid:4, addr:80:ea:07:c9:d6:4a, kid:0, type:AES
[ 6.358530] RTL8723BS: set group key camid:5, addr:80:ea:07:c9:d6:4a, kid:1, type:AESWelcome to Buildroot for the LicheePi Zero
licheepi-zero login: [ 31.843505] vcc5v0: disablingWelcome to Buildroot for the LicheePi Zero
licheepi-zero login: root
# ifconfig
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)wlan0 Link encap:Ethernet HWaddr 34:C3:D2:BD:F8:81 inet addr:192.168.31.29 Bcast:192.168.31.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:107 errors:0 dropped:119 overruns:0 frame:0TX packets:5 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:20760 (20.2 KiB) TX bytes:1098 (1.0 KiB)# ping baidu.com
PING baidu.com (39.156.66.10): 56 data bytes
64 bytes from 39.156.66.10: seq=0 ttl=49 time=61.308 ms
64 bytes from 39.156.66.10: seq=1 ttl=49 time=44.674 ms
64 bytes from 39.156.66.10: seq=2 ttl=49 time=73.668 ms
64 bytes from 39.156.66.10: seq=3 ttl=49 time=40.631 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 40.631/55.070/73.668 ms
#
可以看到,板子启动后,WiFi 已工作,网络已通。
测速
编译 iperf 测试一下网速

# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 2642
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 2643
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 88.4 KBytes 724 Kbits/sec
[ 5] 1.00-2.00 sec 82.7 KBytes 677 Kbits/sec
[ 5] 2.00-3.00 sec 168 KBytes 1.38 Mbits/sec
[ 5] 3.00-4.00 sec 111 KBytes 911 Kbits/sec
[ 5] 4.00-5.00 sec 111 KBytes 911 Kbits/sec
[ 5] 5.00-6.00 sec 79.8 KBytes 654 Kbits/sec
[ 5] 6.00-7.00 sec 92.7 KBytes 759 Kbits/sec
[ 5] 7.00-8.00 sec 89.8 KBytes 736 Kbits/sec
[ 5] 8.00-9.00 sec 82.7 KBytes 677 Kbits/sec
[ 5] 9.00-10.00 sec 37.1 KBytes 304 Kbits/sec
[ 5] 10.00-11.00 sec 104 KBytes 855 Kbits/sec
[ 5] 11.00-11.41 sec 58.5 KBytes 1.16 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-11.41 sec 1.08 MBytes 794 Kbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
只有 1Mbps 。。。
哦,对了,没接天线,应该是信号不好,看下信号强度,
但是板子中并没有 wpa_cli 命令,交叉编译了一个,
又提示 CONFIG_CTRL_IFACE not defined - wpa_cli disabled,
而 wpa_supplicant.conf 中添加 ctrl_interface=/var/run/wpa_supplicant 后 wpa_supplicant 又运行不起来。。。
索性不用系统自带的 wpa_supplicant 了(应该是有点问题)。
按照之前写的一篇文章《hostapd、wpa_supplicant 交叉编译》,重新编译 wpa_supplicant ,并在 wpa_supplicant.conf 中添加
ctrl_interface=/var/run/wpa_supplicant
系统重启后查看 RSSI
# wpa_cli -i wlan0 signal_poll
RSSI=-65
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
RSSI=-65 确实是信号太弱了,
买的 IPEX 座子还没到,怎么办呢?
手搓天线
那就先手撸一根天线焊上试试吧

# wpa_cli -i wlan0 signal_poll
RSSI=-45
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
哇,RSSI 直接增强到 -45,NB
测一下速
# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 14988
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 14989
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 6.10 MBytes 51.1 Mbits/sec
[ 5] 1.00-2.00 sec 5.56 MBytes 46.7 Mbits/sec
[ 5] 2.00-3.00 sec 6.44 MBytes 54.0 Mbits/sec
[ 5] 3.00-4.00 sec 6.33 MBytes 53.1 Mbits/sec
[ 5] 4.00-5.00 sec 6.28 MBytes 52.7 Mbits/sec
[ 5] 5.00-6.00 sec 6.05 MBytes 50.7 Mbits/sec
[ 5] 6.00-7.00 sec 4.56 MBytes 38.2 Mbits/sec
[ 5] 7.00-8.00 sec 7.06 MBytes 59.3 Mbits/sec
[ 5] 8.00-9.00 sec 6.34 MBytes 53.2 Mbits/sec
[ 5] 9.00-10.00 sec 6.53 MBytes 54.7 Mbits/sec
[ 5] 10.00-10.89 sec 5.87 MBytes 55.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.89 sec 67.1 MBytes 51.7 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
51Mbps,鼓掌👏👏👏
正式天线
等了两天,IPEX 座子到了,焊接,插天线

查看信号强度
# wpa_cli -i wlan0 signal_poll
RSSI=-45
LINKSPEED=150
NOISE=9999
FREQUENCY=2437
和我手搓的天线一样啊,也没高多少,抑或是软件最强只能显示 -45 ???
再测下速
# iperf3 -s
warning: this system does not seem to support IPv6 - trying IPv4
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.31.211, port 1148
[ 5] local 192.168.31.29 port 5201 connected to 192.168.31.211 port 1149
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 5.35 MBytes 44.9 Mbits/sec
[ 5] 1.00-2.00 sec 6.11 MBytes 51.3 Mbits/sec
[ 5] 2.00-3.00 sec 6.46 MBytes 54.2 Mbits/sec
[ 5] 3.00-4.00 sec 6.38 MBytes 53.5 Mbits/sec
[ 5] 4.00-5.00 sec 5.64 MBytes 47.4 Mbits/sec
[ 5] 5.00-6.00 sec 5.86 MBytes 49.2 Mbits/sec
[ 5] 6.00-7.00 sec 6.26 MBytes 52.4 Mbits/sec
[ 5] 7.00-8.00 sec 5.18 MBytes 43.5 Mbits/sec
[ 5] 8.00-9.00 sec 5.96 MBytes 50.0 Mbits/sec
[ 5] 9.00-10.00 sec 5.97 MBytes 50.1 Mbits/sec
[ 5] 10.00-10.86 sec 5.70 MBytes 56.0 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.86 sec 64.9 MBytes 50.1 Mbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
也是 50Mbps 左右嘛。。。说明我手搓的天线性能还是挺好的。
至此,WiFi 调试 OK
相关文章:
ARM DIY(四)WiFi 调试
文章目录 焊接打开内核编译选项重新编译内核烧录 && 运行 && 测试完善脚本测速手搓天线正式天线 焊接 换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位 焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻 硬件部分就这…...
AIGC ChatGPT 实现动态多维度分析雷达图制作
雷达图在多维度分析中是一种非常实用的可视化工具,主要有以下优势: 易于理解:雷达图使用多边形或者圆形的形式展示多维度的数据,直观易于理解。多维度对比:雷达图可以在同一张图上比较多个项目或者实体在多个维度上的…...
Vue2向Vue3过度核心技术路由
目录 1 路由介绍1.思考2.路由的介绍3.总结 2 路由的基本使用1.目标2.作用3.说明4.官网5.VueRouter的使用(52)6.代码示例7.两个核心步骤8.总结 3 组件的存放目录问题1.组件分类2.存放目录3.总结 4 路由的封装抽离5 Vue路由-重定向1.问题2.解决方案3.语法4…...
ElasticSearch常用方法
ElasticSearch:是一个储存、检索、数据分析引擎。 在互联网项目中我们经常会按一定的条件去索引我们指定的数据,但是在大量的数据中我们如果直接查询数据库效率是非常低的,ElasticSearch就可以很好的帮我们完成检索。 es封装了api提供给我我们直接操作…...
nginx下添加http_ssl_module并且配置域名,指定端口
1.切换到源码包: cd /home/nginx-1.23.1 2.进行编译: ./configure --prefix/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 3.配置完成后,运行命令: make make命令执行后,不要进行mak…...
【PHP】PHP变量
1、变量介绍 PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,必须在使用变量前先声明(定义)变量的类型和名称。 <?php $x5;…...
KVM创建虚拟机可访问外网+可使用Xshell等工具连接
创建虚拟机时使用桥接网络模块即可,如下: 1、创建一个存储卷(虚拟机的磁盘) 2、创建虚拟机时选择网络 3、系统安装完成后配置固定IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0ONBOOTyes BOOTPROTOstatic IPADDR16.32.15.60 GATEWAY16.32.15.2…...
数据库——Redis 没有使用多线程?为什么不使用多线程?
文章目录 Redis6.0 之后为何引入了多线程? 虽然说 Redis 是单线程模型,但是, 实际上,Redis 在 4.0 之后的版本中就已经加入了对多线程的支持。 不过,Redis 4.0 增加的多线程主要是针对一些大键值对的删除操作的命令&a…...
Node.JS教程
文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发?3.2、CommonJS规范3.3、 modules模块化规范写法 4.Npm&Yarn4.1、npm使用4.2、全局安装nrm4.3、yarn使用 持续更新中总结 Node.JS N…...
mysql表锁死怎么办?事务锁sql超时被锁死怎么办?
不要慌!不要慌!两句命令教你做人 一、mysql表锁死 1、查询所有进程: SHOW PROCESSLIST; 2、找到进程号kill掉 kill 3269987 2、事务锁 sql超时被锁死 1、查询所有执行中的sql select t.*,to_seconds(now())-to_seconds(t.trx_started) id…...
基于JSP+Servlet+mysql学生宿舍管理系统
基于JSPServletmysql学生宿舍管理系统 一、系统介绍二、功能展示四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java web项目 项目名称:基于JSPServlet的学生宿舍管理系统[sushe] 项目架构:B/S架构 开发语言:Java…...
Enabling Large Language Models to Generate Text with Citations
本文是LLM系列的文章,针对《Enabling Large Language Models to Generate Text with Citations》的翻译。 使大语言模型能够生成带有引用的文本 摘要1 引言2 任务设置和数据集3 自动评估4 建模5 实验6 人类评估7 相关工作8 结论不足 摘要 大型语言模型(…...
Qt Qml实现仪表盘动画
Qt Qml代码实现的仪表盘动画 效果: Qt Qml 仪表盘动画 Qt Qml 代码实现仪表盘动画 Qt Qml 仪表盘动画 部分Qml代码: import QtQuick 2.0Item {width: 2 * radiusheight: 2 * radiusrequired property double radiusproperty double airspeed: 0propert…...
一次PostgreSQL复杂jsonb数据矫正过程分享
背景介绍 想看干货直接看最后的总结,其他流水账可以不看,也可以当故事看。 7月底我司某产品因故需要拉齐现场版本,其中某地版本较低,且曾经做过一些定制内容,升级前也未识别该情况,导致后续持续一个月不断…...
如何在App里拉起小程序?
什么是小程序运行时框架? FinClip 的小程序编程模型是分为多个页面,每个页面有自己的 template、CSS 和 JS,实际在运行的时候,业务逻辑的 JS 代码是运行在独立的 JavaScript 引擎中,每个页面的 template 和 CSS 是运行…...
函数式编程-Stream流学习第二节-中间操作
1 Stream流概述 java8使用的是函数式编程模式,如同它的名字一样,它可以用来对集合或者数组进行链状流式操作,让我们更方便的对集合或者数组进行操作。 2 案例准备工作 我们首先创建2个类一个作家类,一个图书类 package com.stream.model;…...
SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基…...
无涯教程-进程 - 组会话控制
在本章中,我们将熟悉进程组,会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合,一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…...
tomcat高可用和nginx高可用
tomcat高可用和nginx高可用 小白教程,一看就会,一做就成。 1.什么是高可用? 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务…...
关于ios Universal Links apple-app-site-association文件 Not Found的问题
1. 背景说明 1.1 Universal Links 是什么 Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是 当您支持通用链接时,iOS 用户可以点击指向您网站的链接,并无缝重定向到您安装的应用程序 大白话就是说&am…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
