OrangePi_Kunpeng_Pro开发板测验——性能巨人

news2024/11/17 7:40:24

文章目录

  • 📑前言
  • 一、开箱初体验的愉悦
  • 二、产品规格概述
  • 三、前置工作
  • 四、性能测试
    • 4.1 CPU 性能测试
      • 4.1.1 单线程 CPU 测试
      • 4.1.2 多线程 CPU 测试
    • 4.2 内存性能测试
      • 4.2.1 内存读写性能测试
      • 4.2.2 高负载内存测试
    • 4.3 I/O 性能测试
    • 4.4 网络性能测试
    • 4.5 测试小结
      • 4.5.1 CPU 性能测试
        • 4.5.1.1 单线程 CPU 测试
        • 4.5.1.2 多线程 CPU 测试
      • 4.5.2 内存性能测试
        • 4.5.2.1 内存读写性能测试
        • 4.2.2 高负载内存测试
      • 4.3 I/O 性能测试
      • 4.4 网络性能测试
  • 五、全篇归纳总结
    • 5.1 性能特点
    • 5.2 使用体验
    • 5.3 适用场景
    • 5.4 不足与改进
    • 5.5 个人评价

📑前言

在当下这个全球互联的时代,高性能单板计算机正逐渐崭露头角,成为推动创新和个性化解决方案的关键力量。其中,香橙派 Kunpeng Pro作为一款集成了华为鲲鹏处理器的板卡,凭借其卓越的计算性能和广泛的应用潜力,已经吸引了全球开发者与技术爱好者的目光。它不仅为高性能服务器、人工智能和边缘计算等领域注入了新的活力,还以其对开发者友好的接口布局和广泛的软件支持,成为了DIY项目与复杂计算任务的理想选择。
近日,我有幸通过CSDN获得了香橙派 Kunpeng Pro的评测资格,这对于一个热衷于技术的开发者来说,无疑是一次难得的探索和实践机会。
随着科技的不断进步,高性能开发板在物联网设备、智能家居、自动化控制等领域的应用愈发广泛。它们作为连接现实世界与数字世界的桥梁,正推动着社会的智能化和数字化进程。香橙派 Kunpeng Pro作为其中的佼佼者,凭借其强大的计算能力和丰富的接口配置,已经在市场上获得了广泛的关注和好评。
在这篇文章中,我将详细分享我对香橙派 Kunpeng Pro的使用体验,包括其性能测试、适用场景和实际应用案例。我将从开箱开始,一步步展示其硬件特点、系统安装过程以及在实际项目中的应用效果。同时,我也将探讨这款开发板在开源硬件浪潮中的地位和作用,以及它如何为开发者提供创新的平台和可能性。
香橙派 Kunpeng Pro作为一款高性能开发板,不仅为技术爱好者提供了实验和学习的平台,更为专业开发者带来了实现复杂项目的强大工具。通过本文的分享,我希望能让更多人了解这款开发板的优势和潜力,共同探索其在各个领域的应用前景。

一、开箱初体验的愉悦

6af63163e85536a6bca11db9acf92da.jpg
485aab47fd5a78a5e0a64544f931f65.jpg
c45c2192742cf80b554b99f3d8762d5.jpg
e71f5c6bf04aa8e925bbed2674eac0d.jpg
f450f33f3dcb249aaf6a2bd77c6428a.jpg
f4a33829cec3e24dfd6030ebfc73eeb.jpg
到手现拆,这个板子真的让人眼前一亮,狠狠喜欢上了!

二、产品规格概述

  • 香橙派 Kunpeng Pro是一款集高性能计算和强大AI功能于一体的开发板。其核心搭载了一个4核64位的处理器以及一个高效的AI处理器,具备8TOPS的算力,满足高AI运算需求。内存方面,提供了LPDDR4X类型的8GB/16GB可选内存,速率高达3200Mbps,确保高速数据读写。存储选项丰富,包括SPI FLASH、SATA/NVME SSD、eMMC插槽和TF卡插槽,满足不同容量的存储需求。
  • 网络连接方面,香橙派 Kunpeng Pro支持Wi-Fi 5双频(2.4GHz和5GHz)和蓝牙4.2/BLE,同时内置10/100/1000Mbps以太网收发器,提供稳定高速的网络连接。显示接口包括两个HDMI 2.0 Type-A端口和一个MIPI DSI接口,支持高清视频输出。此外,还配备两个2-lane MIPI CSI摄像头接口,兼容树莓派摄像头标准。
  • USB接口方面,香橙派 Kunpeng Pro提供了两个USB 3.0 HOST接口、一个USB Type-C 3.0 HOST接口和一个Micro USB接口(主要用于串口打印功能)。音频功能通过一个3.5mm耳机插孔支持音频输入和输出。
  • 开发板还配备了40PIN功能扩展接口,支持GPIO、UART、I2C、SPI、I2S和PWM等接口类型,方便进行各种电子项目和创客活动。散热方面,设有风扇接口,保证设备在高负载运行下的稳定性。
  • 香橙派 Kunpeng Pro预装了openEuler操作系统,优化利用了Kunpeng处理器的特性。产品尺寸为107x68mm,重量仅为82g,轻巧便携,易于集成到各种项目中。无论是开发者、硬件爱好者还是企业用户,都能从这款高性能开发板中受益。

三、前置工作

在开始测试之前,请确保您的香橙派 Kunpeng Pro 已正确启动,并通过 SSH 连接到您的开发板。

  1. 系统更新
    使用以下命令更新系统软件包,以确保安装最新的软件:
sudo yum update -y
  1. 安装基准测试工具
    使用 yum 安装常用的基准测试工具,如 sysbench 和 stress-ng:
sudo yum install -y sysbench stress-ng

四、性能测试

4.1 CPU 性能测试

4.1.1 单线程 CPU 测试

首先,我们将运行单线程的 sysbench CPU 测试,评估香橙派 Kunpeng Pro 的整数计算性能。使用以下命令开始测试:

sysbench cpu --cpu-max-prime=20000 run

结果

[openEuler@openEuler ~]$ sysbench cpu --cpu-max-prime=20000 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:   813.12

General statistics:
    total time:                          10.0011s
    total number of events:              8136

Latency (ms):
         min:                                    1.22
         avg:                                    1.23
         max:                                    1.73
         95th percentile:                        1.25
         sum:                                 9998.20

Threads fairness:
    events (avg/stddev):           8136.0000/0.00
    execution time (avg/stddev):   9.9982/0.00

单线程测试结果显示了总执行时间和每秒事件数,这些数据可以帮助我们了解处理器的基础性能。

4.1.2 多线程 CPU 测试

接下来,我们将运行多线程的 sysbench CPU 测试,评估多核处理能力。使用以下命令进行测试:

sysbench cpu --threads=4 --cpu-max-prime=20000 run

结果

[openEuler@openEuler ~]$ sysbench cpu --threads=4 --cpu-max-prime=20000 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:  3160.23

General statistics:
    total time:                          10.0009s
    total number of events:              31620

Latency (ms):
         min:                                    1.22
         avg:                                    1.26
         max:                                   25.26
         95th percentile:                        1.27
         sum:                                39977.37

Threads fairness:
    events (avg/stddev):           7905.0000/76.40
    execution time (avg/stddev):   9.9943/0.00

多线程测试结果展示了香橙派 Kunpeng Pro 在并行处理任务中的表现。比较单线程和多线程测试结果,可以直观地看到多核处理的优势。

4.2 内存性能测试

4.2.1 内存读写性能测试

我们将使用 sysbench 测试内存的读写性能,评估 8GB 内存的速度和效率。使用以下命令开始测试:

sysbench memory --memory-block-size=1M --memory-total-size=10G run

结果

[root@openEuler ~]sysbench memory--memory-block-size=1M --memory-total-size=10G run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time

Running memory speed test with the following options:
  block size: 1024KiB
  total size: 10240MiB
  operation: write
  scope: global

Initializing worker threads...
Threads started!

Total operations: 10240 ( 7093.69 per second)
10240.00 MiB transferred (7093.69 MiB/sec)

General statistics:
    total time:                          1.4389s
    total number of events:              10240

Latency (ms):
         min:                                    0.13
         avg:                                    0.14
         max:                                    0.23
         95th percentile:                        0.15
         sum:                                 1435.52

Threads fairness:
    events (avg/stddev):           10240.0000/0.00
    execution time (avg/stddev):   1.4355/0.00

测试结果显示内存的读写速度和总执行时间,这些数据反映了系统在处理大量数据时的性能。

4.2.2 高负载内存测试

为了验证系统在高负载下的稳定性,使用 stress-ng 工具对其进行内存压力测试。

[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 8G --vm-method all --verify -t 60s
stress-ng: info:  [10269] setting to a 60 second run per stressor
stress-ng: info:  [10269] dispatching hogs: 2 vm
Segmentation fault
[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 7G --vm-method all --verify -t 60s
stress-ng: info:  [10402] setting to a 60 second run per stressor
stress-ng: info:  [10402] dispatching hogs: 2 vm
stress-ng: info:  [10402] successful run completed in 62.37s (1 min, 2.37 secs)
[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 6G --vm-method all --verify -t 60s
stress-ng: info:  [10516] setting to a 60 second run per stressor
stress-ng: info:  [10516] dispatching hogs: 2 vm
Segmentation fault
[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 5G --vm-method all --verify -t 60s
stress-ng: info:  [10574] setting to a 60 second run per stressor
stress-ng: info:  [10574] dispatching hogs: 2 vm
Segmentation fault
[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 4G --vm-method all --verify -t 60s
stress-ng: info:  [10630] setting to a 60 second run per stressor
stress-ng: info:  [10630] dispatching hogs: 2 vm
Segmentation fault

当–vm-bytes参数设置为8G、6G、5G和4G时,stress-ng遇到了Segmentation fault(段错误),但设置为7G时却成功完成了测试。
这里的段错误通常表示的是程序试图访问它没有权限的内存区域,或者试图以非法的方式访问内存。在stress-ng的上下文中,这可能是因为它试图分配或操作比系统物理内存或可用虚拟内存更多的内存。

  1. 8G: 由于你的系统可能没有8G的空闲物理内存,或者操作系统无法为stress-ng分配这么多连续的虚拟内存空间(考虑到其他进程和系统开销),因此stress-ng在尝试分配或操作这些内存时触发了段错误。
  2. 7G: 在这个设置下,stress-ng成功完成了测试。这可能是因为7G的内存需求在系统的物理内存和虚拟内存管理策略的可接受范围内。
  3. 6G, 5G, 4G: 尽管这些值比8G小,但它们仍然可能导致stress-ng遇到段错误,原因可能是多方面的。可能是因为其他进程正在使用内存,或者系统的虚拟内存管理策略不允许stress-ng分配这么多内存。此外,stress-ng可能在尝试以某种方式操作内存时遇到了问题,这种操作在内存量较小时不会触发,但在达到某个阈值时就会触发。

通过这些测试,我们可以观察到在不同内存分配大小下系统的响应情况。虽然内存分配出现问题,但是7G内存分配下,系统均能稳定运行,表明香橙派 Kunpeng Pro 在极端的高负载环境下依然表现良好。

4.3 I/O 性能测试

为了评估存储设备的性能,可以使用 sysbench 进行 I/O 性能测试。以下命令将测试随机读取和写入性能:

sysbench fileio --file-total-size=10G --file-test-mode=rndrw prepare
sysbench fileio --file-total-size=10G --file-test-mode=rndrw --time=300 --max-requests=0 run
sysbench fileio --file-total-size=10G --file-test-mode=rndrw cleanup

结果

[openEuler@openEuler ~]$ sysbench fileio --file-total-size=10G --file-test-mode=rndrw prepare
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

128 files, 81920Kb each, 10240Mb total
Creating files for the test...
Extra file open flags: (none)
Reusing existing file test_file.0
Reusing existing file test_file.1
Reusing existing file test_file.2
Reusing existing file test_file.3
Reusing existing file test_file.4
Reusing existing file test_file.5
Reusing existing file test_file.6
Reusing existing file test_file.7
Reusing existing file test_file.8
Reusing existing file test_file.9
Reusing existing file test_file.10
Reusing existing file test_file.11
Reusing existing file test_file.12
Reusing existing file test_file.13
Reusing existing file test_file.14
Reusing existing file test_file.15
Reusing existing file test_file.16
Reusing existing file test_file.17
Reusing existing file test_file.18
Reusing existing file test_file.19
Reusing existing file test_file.20
Reusing existing file test_file.21
Reusing existing file test_file.22
Reusing existing file test_file.23
Reusing existing file test_file.24
Extending existing file test_file.25
Extending existing file test_file.26
Extending existing file test_file.27
Extending existing file test_file.28
Extending existing file test_file.29
Extending existing file test_file.30
Extending existing file test_file.31
Extending existing file test_file.32
Extending existing file test_file.33
Extending existing file test_file.34
Extending existing file test_file.35
Extending existing file test_file.36
Extending existing file test_file.37
Extending existing file test_file.38
Extending existing file test_file.39
Extending existing file test_file.40
Extending existing file test_file.41
Extending existing file test_file.42
Extending existing file test_file.43
Extending existing file test_file.44
Extending existing file test_file.45
Extending existing file test_file.46
Extending existing file test_file.47
Extending existing file test_file.48
Extending existing file test_file.49
Extending existing file test_file.50
Extending existing file test_file.51
Extending existing file test_file.52
Extending existing file test_file.53
Extending existing file test_file.54
Extending existing file test_file.55
Extending existing file test_file.56
Extending existing file test_file.57
Extending existing file test_file.58
Extending existing file test_file.59
Extending existing file test_file.60
Extending existing file test_file.61
Extending existing file test_file.62
Extending existing file test_file.63
Extending existing file test_file.64
Extending existing file test_file.65
Extending existing file test_file.66
Extending existing file test_file.67
Extending existing file test_file.68
Extending existing file test_file.69
Extending existing file test_file.70
Extending existing file test_file.71
Extending existing file test_file.72
Extending existing file test_file.73
Extending existing file test_file.74
Extending existing file test_file.75
Extending existing file test_file.76
Extending existing file test_file.77
Extending existing file test_file.78
Extending existing file test_file.79
Extending existing file test_file.80
Extending existing file test_file.81
Extending existing file test_file.82
Creating file test_file.83
Creating file test_file.84
Creating file test_file.85
Creating file test_file.86
Creating file test_file.87
Creating file test_file.88
Creating file test_file.89
Creating file test_file.90
Creating file test_file.91
Creating file test_file.92
Creating file test_file.93
Creating file test_file.94
Creating file test_file.95
Creating file test_file.96
Creating file test_file.97
Creating file test_file.98
Creating file test_file.99
Creating file test_file.100
Creating file test_file.101
Creating file test_file.102
Creating file test_file.103
Creating file test_file.104
Creating file test_file.105
Creating file test_file.106
Creating file test_file.107
Creating file test_file.108
Creating file test_file.109
Creating file test_file.110
Creating file test_file.111
Creating file test_file.112
Creating file test_file.113
Creating file test_file.114
Creating file test_file.115
Creating file test_file.116
Creating file test_file.117
Creating file test_file.118
Creating file test_file.119
Creating file test_file.120
Creating file test_file.121
Creating file test_file.122
Creating file test_file.123
Creating file test_file.124
Creating file test_file.125
Creating file test_file.126
Creating file test_file.127
8153726976 bytes written in 314.28 seconds (24.74 MiB/sec).
[openEuler@openEuler ~]$ sysbench fileio --file-total-size=10G --file-test-mode=rndrw --time=300 --max-requests=0 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Extra file open flags: (none)
128 files, 80MiB each
10GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!

结果显示了读取和写入的速率,帮助我们了解系统的存储性能。

4.4 网络性能测试

安装 ipefr3:

[openEuler@openEuler ~]$ sudo yum install iperf3

使用 iperf3 工具进行网络性能测试,评估网络吞吐量。首先在服务器上启动 iperf3 服务器:

iperf3 -s

然后在客户端上运行 iperf3 测试:

iperf3 -c 192.168.1.100 -t 60

结果

[root@openEuler ~]iperf3 -c 192.168.1.100 -t 60
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.101 port 53950 connected to 192.168.1.100 port 5201

[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-60.00  sec   715 MBytes  100 Mbits/sec                  sender
[  4]   0.00-60.00  sec   713 MBytes  99.5 Mbits/sec                receiver

结果展示了网络带宽,帮助我们了解系统的网络性能。

4.5 测试小结

本次测试对香橙派 Kunpeng Pro 开发板的性能进行了全面评估,涵盖了 CPU 性能、内存性能、I/O 性能和网络性能。以下是各项测试的具体结果与总结:

4.5.1 CPU 性能测试

4.5.1.1 单线程 CPU 测试
  • 使用 sysbench 进行单线程 CPU 测试,整数计算的结果显示每秒事件数为 813.12,总执行时间为 10.0011 秒。单线程性能良好,能够快速完成整数计算任务。
4.5.1.2 多线程 CPU 测试
  • 在多线程(4 线程)条件下,sysbench 测试结果显示每秒事件数为 3160.23,总执行时间为 10.0009 秒。多线程测试结果表明,香橙派 Kunpeng Pro 能够有效利用多核处理器的优势,显著提升并行处理能力。

4.5.2 内存性能测试

4.5.2.1 内存读写性能测试
  • 通过 sysbench 进行内存读写性能测试,结果显示总操作数为 10240,总执行时间为 1.4389 秒,内存读写速度为 7093.69 MiB/sec。该结果表明,香橙派 Kunpeng Pro 在内存读写方面表现出色,能够快速处理大量数据。
4.2.2 高负载内存测试
  • 使用 stress-ng 工具对系统进行高负载内存测试,发现当 --vm-bytes 参数设置为 8G、6G、5G 和 4G 时,测试均出现 Segmentation fault 错误。但在 7G 内存分配时,测试成功完成。这表明在极端高负载环境下,香橙派 Kunpeng Pro 能够在 7G 内存分配下稳定运行,而更高的内存分配可能导致系统不稳定。

4.3 I/O 性能测试

  • 使用 sysbench 测试 I/O 性能,在 10G 文件总大小下进行随机读写测试。测试结果显示,每秒读取和写入速度为 24.74 MiB/sec,总共完成 8153726976 字节写入,执行时间为 314.28 秒。这表明香橙派 Kunpeng Pro 在存储性能方面表现良好,能够有效处理大规模数据读写任务。

4.4 网络性能测试

  • 使用 iperf3 工具进行网络性能测试,结果显示在 60 秒测试时间内,发送和接收带宽均为 100 Mbits/sec。这表明香橙派 Kunpeng Pro 在网络传输性能方面表现稳定,能够满足高带宽网络应用的需求。

五、全篇归纳总结

香橙派 Kunpeng Pro 开发板以其高性能处理器和大容量内存,在实际应用中展现出了强大的计算能力和出色的稳定性。本文旨在全面总结这款开发板的性能特点、使用体验、适用场景以及存在的不足之处,以期为潜在用户提供有价值的参考信息。

5.1 性能特点

香橙派 Kunpeng Pro 开发板凭借其强大的处理器和大容量内存,无论是在单线程还是多线程任务中,都能高效完成。在内存性能测试中,其处理大量数据的能力同样令人印象深刻。此外,该开发板还支持多种外设接口,如HDMI、USB、GPIO,以及通过M.2接口扩展存储,这些特性使得它在各种复杂应用场景中都能游刃有余。

5.2 使用体验

在实际使用中,香橙派 Kunpeng Pro 的系统安装和远程SSH登录过程简便快捷,用户只需简单配置即可开始开发工作。在高负载下,系统表现稳定,这对于需要长时间运行任务的开发者来说至关重要。此外,开发板的兼容性和可扩展性也表现出色,为用户提供了极大的便利。

5.3 适用场景

香橙派 Kunpeng Pro 开发板凭借其出色的性能和丰富的接口,适用于多个领域。在嵌入式系统开发方面,它能够满足工业控制、医疗设备等对高性能计算和稳定性的需求;在物联网应用中,其强大的处理能力和稳定的网络连接确保了物联网设备的可靠运行;在多媒体处理领域,无论是视频处理还是图像识别,它都能提供流畅的性能支持;此外,它还适用于计算机科学、电子工程等领域的教育和科研项目,为学生和研究人员提供强大的实验和开发平台。

5.4 不足与改进

尽管香橙派 Kunpeng Pro 开发板在各方面表现出色,但在某些高负载情况下,仍然存在内存不足的问题。例如,在分配8/6G内存进行压力测试时,出现了Segmentation fault错误。这可能是由于系统的内存管理和分配机制导致的,需要进一步优化和改进。此外,为了确保测试结果的准确性和稳定性,我们还需要注意不同测试工具和方法的兼容性。

5.5 个人评价

综上,香橙派 Kunpeng Pro 开发板以其强大的性能和丰富的功能,为各类应用场景提供了广阔的可能性。无论是专业的开发者还是初学者,都能从中受益。尽管在某些高负载情况下存在内存不足的问题,但这并不妨碍它在其他方面的出色表现。希望本文的总结能够为您提供有价值的信息,并激发您对香橙派 Kunpeng Pro 的兴趣。如果您对这款开发板感兴趣,不妨亲自试用一下,体验其强大的性能和丰富的功能。让我们一起探索更多的可能性!
image.png

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

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

相关文章

基于广义极大极小凹惩罚的心电信号降噪方法(MATLAB R2021B)

凸优化是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化问题。由于心电信号降噪的过程可以理解为求信号的稀疏近似解,因此基于凸优化和稀疏性表达的去噪方法可用于心电信号处理。在凸优化的数学模型中,惩罚项的选取对最终结果会产生…

那些不起眼但很好玩的API合辑

那些不起眼但很好玩的API,为我们带来了许多出人意料的乐趣和惊喜。这些API可能看起来并不起眼,但它们却蕴含着无限的创意和趣味性。它们可以是一些小游戏API,让我们可以在闲暇时刻尽情娱乐;也可以是一些奇特的音乐API,…

gradio image 类型

3种类型,默认是 numpy.array numpy.array PIL.Image str file path. 互相转换 # 从路径到 numpy.ndarray import cv2 image_mask cv2.imread(imagePath) print(type(image_mask))# 从路径到 PIL.IMAGE from PIL import Image image_maskImage.open(imagePath) pri…

zynq PS端 GPIO

记录一下PS端 GPIO 1. GPIO 简介 ZYNQ PS 中包含一组丰富的外设,用于和外部设备进行通信。ZYNQ 的 IO 包括对外连接的 GPIO 和内部 PS 与 PL 通信的 AXIO。其中对外的 GPIO 又分为两种:MIO 和 EMIO。 MIO 和 EMIO 只是 GPIO 信号的两种接口&#xff0c…

wangEditor富文本实现自定义插入数据(手把手)

插件版本如下: vue2版本 “@wangeditor/editor”: “^5.1.23”, “@wangeditor/editor-for-vue”: “^1.0.2”, 文件截图如下: 一、plugins/index.js 入口文件,整合模块导出外部使用 import withMention from ./plugin import renderElemConf from ./render-elem import …

ES升级--04--SpringBoot整合Elasticsearch

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringBoot整合Elasticsearch1.建立项目2.Maven 依赖[ES 官方网站:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/index.html](…

C++ vector 模拟实现

vector的底层也是一个动态数组,他与 string 的区别就是,string 是专门用来存储字符类数据的,为了兼容C语言,使用C语言的接口,在string的动态数组内都会都开一块空间用来存 \0 ,而vector则不会。 首先我们要…

水电收费远程抄表

1.前言:从传统到现代的改变 水电收费远程抄表,是科学技术在公共服务领域的一次重要运用,它改变了过去人力上门服务抄表的传统模式,提高了高效率,降低了偏差,为群众与企业带来了极大的便利。这种系统运用智…

富途面试题:用面向对象的思想设计人关门的场景

我工作两年后,有一次不成功的富途证券的面试,印象非常深刻,面试官提出了一个看似简单实则充满深意的问题:如何用面向对象的思想设计一个人关门的场景? 我当时是这样设计的,创建两个类:Person和D…

Linux命令那么多,先来一篇文件和目录管理命令!

💡本文建议大家收藏! 文件和目录管理命令 1. ls - 列出目录内容 ls命令是Linux中最常用的命令之一,用于列出目录中的文件和子目录。 ls显示当前目录下的所有文件和目录。 ls -l以长格式列出目录内容,显示文件权限、所有者、大…

云途探索——移动云云日志接入实践

目录 1 前言2 新手入门2.1 前置条件2.2. 配置采集对象及规则2.3 安装Agent2.4 日志管理 3 使用场景3.1 优势3.2 应用场景 4 总结 1 前言 随着人工智能、大数据、物联网以及云计算时代的到来,在日志数据量持续爆增、日志数据日益多样化的今天,传统日志服…

Java(六)——抽象类与接口

文章目录 抽象类和接口抽象类抽象类的概念抽象类的语法抽象类的特性抽象类的意义 接口接口的概念接口的语法接口的特性接口的使用实现多个接口接口与多态接口间的继承抽象类和接口的区别 抽象类和接口 抽象类 抽象类的概念 Java使用类实例化对象来描述现实生活中的实体&…

[数据集][图像分类]家庭场景下的家具分类数据集1010张101类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):1010 分类类别数:101 类别名称:[“bath_bath”,“bath_heated_t…

java版CRM客户关系管理系统源码-CRM客户关系管理系统的技术架构与功能实现

CRM客户关系管理系统的技术架构与功能实现 一、引言 随着市场竞争的日益激烈,客户关系管理(CRM)已成为企业赢得市场、提升客户满意度、促 进业务增长的关键手段。本文旨在介绍一款先进的CRM客户关系管理系统的技术架构与功能实现&#xff0…

C++:类的内存分布

类的成员变量和方法是分开存储的,内存给类实例化出的对象开辟空间时只开辟成员变量所占用的空间。类中的所有方法(成员函数)都会放在代码区,所以类的大小一般只计算类中成员变量的对齐之后大小的综合(如果没有虚函数的…

Java设计模式 _行为型模式_观察者模式

一、观察者模式 1、观察者模式 观察者模式 ( Observer Pattern )是一种行为型模式。 常用于对象间存在一对多关系时,比如,当一个对象被修改时,需要自动通知它的依赖对象。 2、实现思路 (1)、定义被观察者的行为&…

ETLCloud中如何执行SQL脚本

SQL脚本 在数据库管理与数据分析的广阔领域中,SQL(Structured Query Language,结构化查询语言)脚本扮演着举足轻重的角色。作为一门专为关系型数据库设计的编程语言,SQL不仅能够执行数据的检索、更新、插入及删除等基…

算法与数据结构:二叉排序树与AVL树

ACM大牛带你玩转算法与数据结构-课程资料 本笔记属于船说系列课程之一,课程链接: 哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep66799?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说系列课程-年度会…

便携式应急气象站:应急气象监测装备

TH-BQX5便携式应急气象站,作为现代气象监测的重要装备,以其独特的便携性、高效性和灵活性,在应急气象监测领域发挥着至关重要的作用。这类气象站不仅为灾害预警、环境保护、农业生产等多个领域提供了实时、准确的气象数据,还在突发…

uniapp通过Canvas绘制网格(心电图,坐标纸等可用)

本篇文档是Canvas绘制心电图的第一个部分&#xff0c;想了解详情的可以关注后学习交流。 心电图的最底层需要一个网状底层&#xff0c;来方便进行数据的测量。 一、白底分大、中、小三个区域的网格 1、首先是HTML部分 <!DOCTYPE html> <html lang"en">…