当前位置: 首页 > news >正文

ARM DIY(四)WiFi 调试

文章目录

    • 焊接
    • 打开内核编译选项
    • 重新编译内核
    • 烧录 && 运行 && 测试
    • 完善脚本
    • 测速
    • 手搓天线
    • 正式天线

焊接

换个粗点的风枪嘴,让热风覆盖 RTL8823BS 整体模块,最终实现自动归位
在这里插入图片描述
焊接 SDIO 接口的上拉电阻以及复位引脚上拉电阻
硬件部分就这么多比较简单,接下来是软件部分

打开内核编译选项

搜索 RTL8723BS
在这里插入图片描述
RTL8723BS 默认关闭,不过要使能该驱动之前,需要先使能 WLANCFG80211
搜索 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 是一门弱类型语言&#xff0c;不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值&#xff0c;自动把变量转换为正确的数据类型。在强类型的编程语言中&#xff0c;必须在使用变量前先声明&#xff08;定义&#xff09;变量的类型和名称。 <?php $x5;…...

KVM创建虚拟机可访问外网+可使用Xshell等工具连接

创建虚拟机时使用桥接网络模块即可&#xff0c;如下&#xff1a; 1、创建一个存储卷(虚拟机的磁盘) 2、创建虚拟机时选择网络 3、系统安装完成后配置固定IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0ONBOOTyes BOOTPROTOstatic IPADDR16.32.15.60 GATEWAY16.32.15.2…...

数据库——Redis 没有使用多线程?为什么不使用多线程?

文章目录 Redis6.0 之后为何引入了多线程&#xff1f; 虽然说 Redis 是单线程模型&#xff0c;但是&#xff0c; 实际上&#xff0c;Redis 在 4.0 之后的版本中就已经加入了对多线程的支持。 不过&#xff0c;Redis 4.0 增加的多线程主要是针对一些大键值对的删除操作的命令&a…...

Node.JS教程

文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发&#xff1f;3.2、CommonJS规范3.3、 modules模块化规范写法 4.Npm&Yarn4.1、npm使用4.2、全局安装nrm4.3、yarn使用 持续更新中总结 Node.JS N…...

mysql表锁死怎么办?事务锁sql超时被锁死怎么办?

不要慌&#xff01;不要慌&#xff01;两句命令教你做人 一、mysql表锁死 1、查询所有进程&#xff1a; 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.其他系统实现五.获取源码 一、系统介绍 项目类型&#xff1a;Java web项目 项目名称&#xff1a;基于JSPServlet的学生宿舍管理系统[sushe] 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java…...

Enabling Large Language Models to Generate Text with Citations

本文是LLM系列的文章&#xff0c;针对《Enabling Large Language Models to Generate Text with Citations》的翻译。 使大语言模型能够生成带有引用的文本 摘要1 引言2 任务设置和数据集3 自动评估4 建模5 实验6 人类评估7 相关工作8 结论不足 摘要 大型语言模型&#xff08…...

Qt Qml实现仪表盘动画

Qt Qml代码实现的仪表盘动画 效果&#xff1a; Qt Qml 仪表盘动画 Qt Qml 代码实现仪表盘动画 Qt Qml 仪表盘动画 部分Qml代码&#xff1a; import QtQuick 2.0Item {width: 2 * radiusheight: 2 * radiusrequired property double radiusproperty double airspeed: 0propert…...

一次PostgreSQL复杂jsonb数据矫正过程分享

背景介绍 想看干货直接看最后的总结&#xff0c;其他流水账可以不看&#xff0c;也可以当故事看。 7月底我司某产品因故需要拉齐现场版本&#xff0c;其中某地版本较低&#xff0c;且曾经做过一些定制内容&#xff0c;升级前也未识别该情况&#xff0c;导致后续持续一个月不断…...

如何在App里拉起小程序?

什么是小程序运行时框架&#xff1f; FinClip 的小程序编程模型是分为多个页面&#xff0c;每个页面有自己的 template、CSS 和 JS&#xff0c;实际在运行的时候&#xff0c;业务逻辑的 JS 代码是运行在独立的 JavaScript 引擎中&#xff0c;每个页面的 template 和 CSS 是运行…...

函数式编程-Stream流学习第二节-中间操作

1 Stream流概述 java8使用的是函数式编程模式,如同它的名字一样&#xff0c;它可以用来对集合或者数组进行链状流式操作&#xff0c;让我们更方便的对集合或者数组进行操作。 2 案例准备工作 我们首先创建2个类一个作家类&#xff0c;一个图书类 package com.stream.model;…...

SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具&#xff0c;包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单&#xff0c;可以在开发人员的电脑上跑。另外说明spring cloud是基…...

无涯教程-进程 - 组会话控制

在本章中&#xff0c;我们将熟悉进程组&#xff0c;会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合&#xff0c;一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…...

tomcat高可用和nginx高可用

tomcat高可用和nginx高可用 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.什么是高可用&#xff1f; 高可用HA&#xff08;High Availability&#xff09;是分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计减少系统不能提供服务…...

关于ios Universal Links apple-app-site-association文件 Not Found的问题

1. 背景说明 1.1 Universal Links 是什么 Support Universal Links 里面有说到 Universal Links 是什么、注意点、以及如何配置的。简单来说就是 当您支持通用链接时&#xff0c;iOS 用户可以点击指向您网站的链接&#xff0c;并无缝重定向到您安装的应用程序 大白话就是说&am…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...