香橙派AIpro部署边缘端夜莺监控

news2024/9/22 21:18:13

文章目录

    • 硬件信息
      • 硬件简介
      • 技术路线
      • 硬件参数
      • 到手实拍
      • 接口详情图
      • 应用场景
      • 相关资源
        • 香橙派官方
        • 昇腾论坛
    • 开箱使用
      • 准备工作
      • 上电准备
      • 启动设备
        • 开发板状态
      • 连接设备
        • 方式一、显示器直连
        • 方式二、`Micro Usb` 数据线串口连接
        • 方式三、`Micro Usb` 数据线方式+网络直连
        • 方式四、`Micro Usb`数据线方式+WIFI连接
    • 部署夜莺监控
      • 夜莺介绍
      • 部署准备
      • 部署安装
        • 部署前置
        • 安装`Mariadb`。
        • 安装`Redis`
        • 安装n9e
    • 整体体验
        • 入门资源
        • 硬件开箱
        • 环境部署

在这里插入图片描述
最近入手了一块 香橙派 AIpro,目前体验下来可玩性还是很高的,通过文章记录下来整个过程体验过程。

硬件信息

硬件简介

正如香橙派官方给出的介绍。

OrangePi AIpro(8-12T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。 Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。

技术路线

硬件参数

以下是开发板对应的硬件规格参数(来自官方提供的用户使用手册)。

到手实拍

香橙派 AIpro 开发板到手之后,设备整体感官上,设备比较小巧,携带比较方便。

接口详情图

应用场景

可广泛适用于AI教学实训、AI算法验证、智能小车、机械臂、边缘计算、无人机、人工智能、云计算、AR/VR、智能安防、智能家居、智能交通等领域。

相关资源

香橙派官方

下载资源页面
外壳及散热器安装资料
官方工具
用户手册
原理图
机械图
Linux源码

昇腾论坛

香橙派AIpro快速上手指南
香橙派AIpro学习资源一站式导航

开箱使用

准备工作

电源、电源线(双Typ-C)、USB鼠标键盘、个人主机一台(Windows)、Micro-Usb 数据线(自备)、显示器、HDMI2.0接口线一根。

上电准备

拿到设备,请不要着急给设备通电,需要有如下几个注意事项(官方提供的用户手册中有部分说明):

  • 网络外置元件避免与板面重合
    板子正面的网络外置元件拆开时,是折叠在板子背面的,使用时需要将这个元件展开,不与板面重合,避免因为通电时,元件与板面过电导致短路。
  • 确认系统读取引导为SD 读取
  • 确认设备与电源线完好能上电
    1)电源空插带电插座一段,十几秒后拔掉;
    2)插上电源线,另一头插香橙派 AI pro 开发板;
    3)插上后,若电源指示灯闪烁并风扇转动则表示电源、电源线以及设备能够加电。
  • 选择合适的HDMI口
    接入显示器,依据系统选择HDMI口,存在两个口,对于预装系统为Linux系列时,为避免麻烦,可以直接选择连接HDMI0

启动设备

开发板为上电自启,刚启动时,小风扇的声音会稍大一些,待系统运行稳定后,会进入正常运行状态,基本就听不到声音。

开发板状态

上电后,香橙派 AIpro 开发板上的指示灯,电源灯会常亮,待系统运行后,另一个信号灯会亮起,效果如下:

连接设备

方式一、显示器直连

最简单的方式莫过于,直接给香橙派 AIpro 接上HDMI线,另一头插一个显示器,在操作系统用户界面中进行相关操作。

接上显示器,插上电源,等待上电后,两个指示灯亮起,显示器屏幕出现需要输入账户和密码,系统烧写时,配置账户默认为HwHiAiUser,对应秘钥为Mind@123,登录成功后,进入系统操作页面。

方式二、Micro Usb 数据线串口连接

使用MobaXterm个人版进行连接,这个工具官方推荐,支持的多种连接方式,其中包括SSHCOM口。

插上数据线后,解压软件,启动MobaXterm
创建会话,选择加载的串口。

选择波特率为115200

连接香橙派 AIpro,输入账户(HwHiAiUser)和密码(Mind@123)。


这种单一通过Micro Usb 数据线方式虽然简单,但是很多功能会因此受限,例如上传文件,适合用于其他网络方式连接前的准备工作。

方式三、Micro Usb 数据线方式+网络直连

通过网线连接主机和香橙派 AIpro。

通过Micro Usb 数据线方式(方式二),用MobaXterm进行登录,连接到香橙派 AIpro 开发板,用于配置固定IP。
查看当前运行中网络接口。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  616cb837-629c-3926-81cb-cb4c91d86aa5  ethernet  --

此时,可以看到网络接口并未关联设备。查看ipconfig,可以知道eth0 为对应的有线网卡。

[HwHiAiUser@orangepiaipro ~]$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether c0:74:2b:fe:3b:9d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 10  bytes 1612 (1.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1612 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 92:bb:ab:5f:49:4b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看对应网络连接,相关配置信息。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli con show "Wired connection 1"|grep ipv4.
ipv4.method:                            auto
ipv4.dns:                               --
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         --
ipv4.gateway:                           --
ipv4.routes:                            --
ipv4.route-metric:                      -1
ipv4.route-table:                       0 (unspec)
ipv4.routing-rules:                     --
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-iaid:                         --
ipv4.dhcp-timeout:                      0 (default)
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.dhcp-fqdn:                         --
ipv4.dhcp-hostname-flags:               0x0 (none)
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.required-timeout:                  -1 (default)
ipv4.dad-timeout:                       -1 (default)
ipv4.dhcp-vendor-class-identifier:      --
ipv4.dhcp-reject-servers:               --

手动为"Wired connection 1"设置一个IP、网关以及网络掩码。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli con mod "Wired connection 1" ipv4.addresses "192.168.37.100/22" ipv4.gateway "192.168.37.1" ipv4.dns "8.8.8.8" ipv4.method "manual"

再次查看网络接口信息。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli con show "Wired connection 1"|grep ipv4.
ipv4.method:                            manual
ipv4.dns:                               8.8.8.8
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.37.100/22
ipv4.gateway:                           192.168.37.1

尝试启动Wired connection 1时,反馈如下。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli con up "Wired connection 1"
 sudo nmcli con up "Wired connection 1"
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)

查看对应ifconfig 时,eth0 出现对应的ip 地址。

[HwHiAiUser@orangepiaipro ~]$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.37.100  netmask 255.255.252.0  broadcast 192.168.39.255
        inet6 fe80::87be:7177:1316:5c4d  prefixlen 64  scopeid 0x20<link>
        ether c0:74:2b:fe:3b:9d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置主机网络,为避免个人主机之前配置过固定IP,可以先配置为自动获取,之后再执行一下操作。

配置Ipv4,设置IP网络为手动,IP 不与 香橙派 AIpro相同,此处为192.168.37.101,具体配置如下,特别需要注意,如果本地网络较为复杂,可以直接指定默认网关为 香橙派 AIpro的固定IP,此处为192.168.37.100

配置之后,以此点击确定到第一个以太网状态窗口,等待一分钟左右,若配置成功,则能够看到数据的发送和接收均有数据变化。

通过cmd 命令窗口,查看ipconfig,可以看到如下输出,标识个人主机网络配置成功。

ipconfig
以太网适配器 以太网:
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::601d:340e:bfbe:6ff8%22
   IPv4 地址 . . . . . . . . . . . . : 192.168.37.101
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.37.100

在个人主机发送中,向香橙派 AIpro数据包,如果收到反馈,则表示,网络直连配置成功。

>ping 192.168.37.100
正在 Ping 192.168.37.100 具有 32 字节的数据:
来自 192.168.37.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.37.100 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.37.100 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.37.100 的回复: 字节=32 时间<1ms TTL=64
192.168.37.100 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 1ms,平均 = 0ms

打开MobaXterm,创建SSH 会话,指定Remote host 为香橙派 AIpro的IP,指定账户为HwHiAiUser

设置会话显示名称并点击确定。

双击创建的目标会话,输入对应的账户秘钥(默认)Mind@123

点击确定。

登录成功。

方式四、Micro Usb数据线方式+WIFI连接

通过Micro Usb 数据线连接,使用ModaXterm 进行访问,配置无线WIFI

通过nmcli 命令行扫描WIFI,查找到目标目标WIFI 为Custom2

[HwHiAiUser@orangepiaipro ~]$ nmcli dev wifi
IN-USE  BSSID              SSID                         MODE   CHAN  RATE      >
        14:46:58:51:FC:C1  CU_uUV3                      Infra  2     130 Mbit/s>
        22:57:89:E2:0D:6A  Custom2                     Infra  1     270 Mbit/s>

连接Comstom2,并输入连接密码,确保密码是正确的,如果总是超时,可以多试几次。

[HwHiAiUser@orangepiaipro ~]$ sudo nmcli dev wifi connect "Comstom2" password wifi_password
Device 'wlan0' successfully activated with 'ca54f6d0-2217-446d-9a7a-7d6783a437ff'.

查看对应wlan0相关网络配置如下:

[HwHiAiUser@orangepiaipro ~]$ ip a s wlan0
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 7c:88:99:ff:70:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.27/24 brd 192.168.3.255 scope global dynamic noprefixroute wlan0
       valid_lft 86247sec preferred_lft 86247sec
    inet6 fe80::5cc6:c9fb:b2e6:b775/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

使用MobaXterm 进行SSH 访问连接,其中192.168.3.27 为开发板地址。

输入远程账户对应的秘钥,返回如下标识连接成功。

尝试访问互联网络,存在数据响应则表示,香橙派 AIpro 开发板能够访问互联网。

[HwHiAiUser@orangepiaipro ~]$ sudo ping www.baidu.com
[sudo] password for HwHiAiUser:
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=53 time=11.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=53 time=11.2 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=53 time=11.0 ms

还有其他方式,可以支持不同场景下的设备连接访问,可参考论坛和用户使用手册。

部署夜莺监控

香橙派 AIpro 开发板,既可以作为终端AI 边缘端的实战工具,它天生自带的开发板属性,也可以作为边缘端监控服务,这里主要讲解基于香橙派 AIpro 开发板实现夜莺监控的相关教程案例。

夜莺介绍

官方介绍如下。

Nightingale | 夜莺监控是一个 All-in-One 的云原生监控工具,集合了 Prometheus 和 Grafana 的优点,你可以在 UI 上管理和配置告警策略,也可以对分布在多个 Region 的指标、日志、链路追踪数据进行统一的可视化和分析。夜莺融入了顶级互联网公司可观测性最佳实践,沉淀了众多社区专家经验,开箱即用。夜莺监控项目,托管于中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。

夜莺官方提到,对于硬件这块儿,本身能够运行在1G1核云主机中,部署到香橙派AIpro开发板中,也算是奢华了。

夜莺监控,可部署在 1 核 1G 的云主机,可在上百台机器集群化部署,可运行在 K8s 中;也可将时序库、告警引擎等组件下沉到各机房、各 Region,兼顾边缘部署和中心化统一管理,解决数据割裂,缺乏统一视图的难题。

部署准备

当前使用的是,夜莺开源版本,进入文档中心,选择查看相关部署安装教程。

安装主要分为两个部分,一部分是采集器,一部分为夜莺监控,采集器采集数据最终传输到夜莺监控中。

  • 夜莺监控nightingale,当前使用版本选择V7

部署安装

部署前置

夜莺监控依赖MariadbRedis,时序数据库默认使用Prometheus。为了简化操作,设备连接方式使用的是上述方式四,便于香橙派 AIpro 开发板直接通过网络下载安装,简化准备工作。

安装Mariadb

主要是用于测试环境,所以暂时是使用的简单密码1234,实际使用需要更加复杂,整体执行命令如下:

# install mysql 
[HwHiAiUser@orangepiaipro ~]$ sudo yum -y install mariadb*
  python3-libselinux-3.3-1.oe2203.aarch64                               python3-libsemanage-3.3-3.oe2203.aarch64
Complete!
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl enable mariadb 
[sudo] password for HwHiAiUser:
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl restart mariadb
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.5.15 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2024-07-19 19:03:44 UTC; 15s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
[HwHiAiUser@orangepiaipro ~]$ sudo mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234');"
安装Redis

Redis 安装命令如下:

# install redis 
[HwHiAiUser@orangepiaipro ~]$ sudo yum install -y redis
Last metadata expiration check: 0:06:12 ago on Fri Jul 19 19:01:24 2024.
Dependencies resolved.
Total download size: 753 k
Installed size: 5.3 M
Downloading Packages:
redis-4.0.14-6.oe2203.aarch64.rpm                                                                           2.5 MB/s | 753 kB     00:00
--------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                       2.4 MB/s | 753 kB     00:00

Installed:
  redis-4.0.14-6.oe2203.aarch64

Complete! 
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl enable redis
Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /usr/lib/systemd/system/redis.service.
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl restart redis
[HwHiAiUser@orangepiaipro ~]$ sudo systemctl status redis
● redis.service - Redis persistent key-value database
     Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2024-07-19 19:10:09 UTC; 3s ago
   Main PID: 37916 (redis-server)
      Tasks: 4 (limit: 41426)
     Memory: 1.5M
     CGroup: /system.slice/redis.service
             └─37916 "/usr/bin/redis-server 127.0.0.1:6379" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
安装n9e

下载n9e-v7.0.0-beta.14-linux-arm64.tar.gz,上传到香橙派 AIpro 开发板中,上传目录为/home/HwHiAiUser/apps/
解压安装包,查看配置文件相关配置,是否符合部署要求,其中n9e 就是实际的二进制执行程序。

[HwHiAiUser@orangepiaipro apps]$ tar -zxvf n9e-v7.0.0-beta.14-linux-arm64.tar.gz
[HwHiAiUser@orangepiaipro apps]$ ll
total 132M
drwxr-xr-x  3 HwHiAiUser HwHiAiUser 4.0K Jul 19 19:18 cli
drwxr-xr-x  8 HwHiAiUser HwHiAiUser 4.0K Jul 19 19:18 docker
drwxr-xr-x  4 HwHiAiUser HwHiAiUser 4.0K Jul 19 19:18 etc
drwxr-xr-x 65 HwHiAiUser HwHiAiUser 4.0K Jul 19 19:18 integrations
-rwxr-xr-x  1 HwHiAiUser HwHiAiUser  37M Jul 18 08:15 n9e
-rwxr-xr-x  1 HwHiAiUser HwHiAiUser  16M Jul 18 08:15 n9e-cli
-rwxr-xr-x  1 HwHiAiUser HwHiAiUser  35M Jul 18 08:15 n9e-edge
-rw-r--r--  1 HwHiAiUser HwHiAiUser  70K Jul 18 08:13 n9e.sql

导入数据库表结构到Mariadb中。

[HwHiAiUser@orangepiaipro apps]$ sudo mysql -uroot -p1234 < n9e.sql

校准时间,避免时间与真实时间不符引发问题。

[HwHiAiUser@orangepiaipro apps]$ date
Fri Jul 19 19:27:50 UTC 2024
[HwHiAiUser@orangepiaipro apps]$ timedatectl set-timezone Asia/Shanghai
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ====
Authentication is required to set the system timezone.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ====
[HwHiAiUser@orangepiaipro apps]$ date
Sat Jul 20 03:29:30 CST 2024

运行夜莺监控服务,按ctrl+c即可停止运行。

[HwHiAiUser@orangepiaipro apps]$ ./n9e
runner.cwd: /home/HwHiAiUser/apps
runner.hostname: orangepiaipro
runner.fd_limits: (soft=1024, hard=524288)
runner.vm_limits: (soft=unlimited, hard=unlimited)
http server listening on: 0.0.0.0:17000
2024-07-20 03:30:24.699908 DEBUG memsto/host_alert_rule_targets.go:93 get_targets_of_alert_rule total: 0 engine_name:default

可以控制后台运行。

[HwHiAiUser@orangepiaipro apps]$ nohup ./n9e &> n9e.log &
[1] 46835
[HwHiAiUser@orangepiaipro apps]$ netstat -anpl|grep 17000
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::17000                :::*                    LISTEN      46835/./n9e

浏览器访问17000端口,默认用户是 root,密码是 root.2020

进入系统。
在这里插入图片描述

应用本身对资源的占用并不高,去在开发板中部署Mariadb,板子还可以有其他的应用空间(32GB SD卡) 。

整体体验

由于测试时间有限,目前只是针对应用场景中,涉及到边缘端部分的部署和使用,总体上可以从如下几个方面进行评价。

入门资源

官方用户手册,基础使用内容,还是比较齐全的,官方工作人员也在不断的更新,更新很规范,简单易于阅读。
各种辅助工具,镜像烧写,镜像编译,AI样例,能够满足基于开发板的常规入门上手操作,社区也很活跃,出现的问题,能够很快通过外部环境找到解决办法。

硬件开箱

在使用的过程中,对于无显示器操作的使用者来说,Micro Usb 方式对设备的连接,使用会比较频繁,是否可以增加,对于通过串转网方式哪些功能受限,进行说明,上电其实很快,需要自己考虑的硬件基础也不多,基本上就是插SD卡,接电源线,插电源等待开机。开箱过程中,出现过对于新到手硬件外观无损坏,如果设备无法正常加电时,如何进行排查的应急方案。
涉及到网络配置时,虽然各种场景都有对应的解决方案,但是网络部分的配置,目前都是通过查阅资料方式进行尝试,中途涉及到命令会比较不可控,未来如果能够通过用户的反馈不断更新那就更nice了。

环境部署

香橙派 AIpro中,镜像系统和镜像源都很新,用的过程中,基本没有遇到需要更新底层依赖组件的情况,对于在香橙派 AIpro 中需要快速搭建软件环境时,起到了很高的辅助,这样进而能够降低在无互联网环境下,边缘端的快速辅助落地,极大的缩短了部署周期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图(二D)

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图&#xff08;二D&#xff09; 散点图示例解析效果 饼图示例解析效果 折线图示例解析效果 柱状图示例解析效果 箱线图示例解析效果 直方图示例解析效果 等高线图使用filled.contour函数示例…

Pixel6 GKI 内核编译

前言 前段时间写了一篇关于pixel4 Android内核编译编译内核的流程。 但是随着Android版本的提升Google开始推崇GKI方式发内核模式,这种模式可以方便供应商剥离内核和驱动的捆绑性&#xff0c;官方抽象出一部分接口(GKI)提供给产生使用极大便利和解耦开发复杂性。 在pixel4 And…

python-爬虫实例(1):获取京东商品评论

目录 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲人两行泪 获取京东商品评论信息 一、实例示范 二、爬虫四步走 1.UA伪装 2.获取Url 3.发送请求 4获取响应数据进行解析并保存 总结 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲…

【BUG】已解决:AttributeError: ‘str‘ object has no attribute ‘get‘

已解决&#xff1a;AttributeError: ‘str‘ object has no attribute ‘get‘ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c…

JVM中的GC流程与对象晋升机制

JVM中的GC流程与对象晋升机制 1、JVM堆内存结构2、Minor GC流程3、Full GC流程4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;垃圾回收&#xff08;GC&#xff09;是自动管…

Let’s Encrypt申请证书流程(附带问题解决方式)

文章目录 前言Let’s Encrypt 和 OpenSSL的区别文章相关 正文1、安装snapd2. 使用snapd安装certbot3. 生成证书&#xff08;需要指定nginx&#xff09;5. Nginx.conf的配置 问题1、error: system does not fully support snapd原因解决方式 2、The error was: PluginError(‘Ng…

宠物医院管理系统视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

实现给Nginx的指定站点开启目录浏览功能

一、问题描述 需要实现在浏览器上可以浏览Nginx部署网站内容并下载一些常用的软件安装包、文件资料等内容;并且针对一些文件夹或内容需要进行认证后才能查看;有一些格式类型的文件也不能够访问查看。 二、问题分析 1、实现浏览器上可以浏览下载文件内容; 2、针对一些文件…

H3CNE(计算机网络的概述)

1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义&#xff1a; 网络设备连接排列的方式 网络拓扑的类型&#xff1a; 总线型拓扑&#xff1a; 所有的设备共享一…

继承和多态(下)

目录 1.多态 2.多态成立的条件 虚函数重写&#xff1a; 虚函数重写的两个例外 3.override 和 final 4.重载&#xff0c;重定义&#xff08;隐藏&#xff09;和重写 5.抽象类 接口继承和实现继承 6.多态的原理 虚函数表 多态的原理 动态绑定和静态绑定 7.单继承虚表…

C语言高校人员管理系统

该系统使用easyx插件。 以下是部分页面 以下是部分源码&#xff0c;需要源码的私信 #define _CRT_SECURE_NO_WARNINGS 1//vs的取消报警 #include<easyx.h> #include<stdio.h> #include<stdlib.h>#define width 1280 #define height 840 #define font_w 35 …

《样式设计002:tab切换与底部swiper滑动块》

描述&#xff1a;在开发小程序过程中&#xff0c;发现一些不错的案例&#xff0c;平时使用也比较多&#xff0c;稍微总结了下经验&#xff0c;以下内容可以直接复制使用&#xff0c;希望对大家有所帮助&#xff0c;废话不多说直接上干货&#xff01; 一、tab切换与底部swiper滑…

AD9826 spi读写源码贡献

AD9826是一款专为成像应用设计的模拟信号处理器&#xff0c;它采用三通道架构&#xff0c;设计用于对三线彩色CCD阵列的输出进行采样和调理。这款处理器集成了多个关键功能组件&#xff0c;包括输入箝位电路、相关双采样器(CDS)、偏移DAC和可编程增益放大器(PGA)&#xff0c;并…

新手小白的pytorch学习第八弹------分类问题模型和简单预测

目录 1 启动损失函数和优化器2 训练模型创建训练和测试循环 3 预测和评估模型 这篇是接着新手小白的pytorch学习第七弹------分类问题模型这一篇的&#xff0c;代码也是哟~ 1 启动损失函数和优化器 对于我们的二分类问题&#xff0c;我们经常使用 binary cross entropy 作为损…

秋招突击——7/19——队列同步器AQS学习

文章目录 引言基础知识简介AQS接口和示例第一类&#xff1a;访问和修改同步状态的方法第二类&#xff0c;5个重写的方法第三类&#xff0c;9个模板方法 队列同步器实现原理同步队列独占式同步获取和释放共享式同步获取和释放独占式同步获取和释放 相关面试题怎么理解Lock和AQS的…

如何解决热插拔时的电压过冲

摘要 热插拔是指将上电电压源连接到电子器件的输入电源或电池连接器。热插拔产生的电压瞬态尖峰会损坏器件内部的集成电路。该文解释了此类电压瞬变的根本原因&#xff0c;并提供了防止这些瞬变损坏电子产品中的集成电路(IC) 的可能设计。 1 引言 当将高于 5V 的 USB 适配器…

达梦数据库的系统视图v$dmwatcher

达梦数据库的系统视图v$dmwatcher 查询当前登录实例所对应的守护进程信息&#xff0c;注意一个守护进程可以同时守护多个组的实例&#xff0c;因此查询结果中部分字段&#xff08;N_GROUP、SWITCH_COUNT&#xff09;为守护进程的全局信息&#xff0c;并不是当前登录实例自身的…

BUUCTF - Web - 1

文章目录 1. [极客大挑战 2019]EasySQL 1【SQL注入-万能密码】2. [极客大挑战 2019]Havefun 1【前端代码审计-注释泄漏】3. [HCTF 2018]WarmUp 1【PHP代码审计】4. [ACTF2020 新生赛]Include 1【PHP伪协议】5. [ACTF2020 新生赛]Exec 1【命令注入-基础】6. [GXYCTF2019]Ping Pi…

张量网络碎碎念:CGC

在本系列 上一篇文章 中&#xff0c;我介绍了张量网络的一些基础概念。其中很大一部分来自 github 上一个教程。事实上&#xff0c;该教程的大部分内容来自 e3nn 官网。 除了上篇文章介绍的一些可视化技巧&#xff0c;官网还提供了其他一些可视化模块。使用这些功能能使我们更深…

windows USB 设备驱动开发-开发Type C接口的驱动程序(三)

编写 USB Type C 端口控制器驱动程序 如果 USB Type-C 硬件实现 USB Type-C 或电源传送 (PD) 物理层&#xff0c;但未实现供电所需的状态机&#xff0c;则需要编写 USB Type-C 端口控制器驱动程序。 在 Windows 10 版本 1703 中&#xff0c;USB Type-C 体系结构已得到改进&am…