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

LoongArch单机Ceph Bcache加速4K随机写性能测试

LoongArch单机Ceph Bcache加速4K随机写性能测试

两块HDD做OSD

[root@ceph01 ~]# fio -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=1 -runtime=600 -group_reporting -name=mytest -filename=/dev/rbd0
mytest: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.22
Starting 1 thread
Jobs: 1 (f=1): [w(1)][100.0%][w=1605KiB/s][w=401 IOPS][eta 00m:00s]
mytest: (groupid=0, jobs=1): err= 0: pid=83763: Mon Oct 16 03:44:45 2023write: IOPS=404, BW=1620KiB/s (1659kB/s)(950MiB/600262msec); 0 zone resetsslat (usec): min=3, max=116, avg= 5.76, stdev= 4.41clat (msec): min=36, max=947, avg=316.05, stdev=71.26lat (msec): min=36, max=947, avg=316.06, stdev=71.26clat percentiles (msec):|  1.00th=[  180],  5.00th=[  215], 10.00th=[  239], 20.00th=[  264],| 30.00th=[  279], 40.00th=[  296], 50.00th=[  309], 60.00th=[  326],| 70.00th=[  342], 80.00th=[  363], 90.00th=[  397], 95.00th=[  435],| 99.00th=[  542], 99.50th=[  609], 99.90th=[  793], 99.95th=[  810],| 99.99th=[  944]bw (  KiB/s): min=  232, max= 3072, per=100.00%, avg=1622.36, stdev=394.76, samples=1198iops        : min=   58, max=  768, avg=405.58, stdev=98.69, samples=1198lat (msec)   : 50=0.02%, 100=0.01%, 250=14.65%, 500=83.73%, 750=1.44%lat (msec)   : 1000=0.15%cpu          : usr=0.11%, sys=0.30%, ctx=16672, majf=0, minf=0IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%issued rwts: total=0,243095,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):WRITE: bw=1620KiB/s (1659kB/s), 1620KiB/s-1620KiB/s (1659kB/s-1659kB/s), io=950MiB (996MB), run=600262-600262msecDisk stats (read/write):rbd0: ios=0/242996, merge=0/0, ticks=0/76720597, in_queue=76980152, util=100.00%

【Bcache】一块SSD加速两块HDD(OSD)

Ceph中使用bcache_4K随机写测试_1块SDD加速2块HDD

image-20231013003009484

[root@ceph01 ceph]# fio -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=1 -runtime=600 -group_reporting -name=mytest -filename=/dev/rbd0
mytest: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.22
Starting 1 thread
Jobs: 1 (f=1): [w(1)][10.7%][w=12.1MiB/s][w=3097 IOPS][eta 08m:56s]
mytest: (groupid=0, jobs=1): err= 0: pid=37245: Thu Oct 12 22:08:43 2023write: IOPS=4065, BW=15.9MiB/s (16.7MB/s)(1024MiB/64475msec); 0 zone resetsslat (usec): min=3, max=173, avg= 5.80, stdev= 3.99clat (msec): min=9, max=336, avg=31.47, stdev=21.69lat (msec): min=9, max=336, avg=31.48, stdev=21.69clat percentiles (msec):|  1.00th=[   17],  5.00th=[   19], 10.00th=[   21], 20.00th=[   24],| 30.00th=[   26], 40.00th=[   27], 50.00th=[   28], 60.00th=[   29],| 70.00th=[   31], 80.00th=[   33], 90.00th=[   37], 95.00th=[   48],| 99.00th=[  146], 99.50th=[  180], 99.90th=[  268], 99.95th=[  284],| 99.99th=[  334]bw (  KiB/s): min= 4216, max=20288, per=100.00%, avg=16284.49, stdev=3300.36, samples=128iops        : min= 1054, max= 5072, avg=4071.00, stdev=825.06, samples=128lat (msec)   : 10=0.01%, 20=8.54%, 50=87.00%, 100=2.20%, 250=2.13%lat (msec)   : 500=0.14%cpu          : usr=0.95%, sys=3.21%, ctx=28915, majf=0, minf=0IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):WRITE: bw=15.9MiB/s (16.7MB/s), 15.9MiB/s-15.9MiB/s (16.7MB/s-16.7MB/s), io=1024MiB (1074MB), run=64475-64475msecDisk stats (read/write):rbd0: ios=0/261860, merge=0/0, ticks=0/8185334, in_queue=8198080, util=100.00%

【Bcache】两块SSD加速两块HDD(OSD)

image-20231014231026800

[root@ceph01 ceph]# fio -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=1 -runtime=600 -group_reporting -name=mytest -filename=/dev/rbd0
mytest: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.22
Starting 1 thread
Jobs: 1 (f=1): [w(1)][10.5%][w=15.8MiB/s][w=4047 IOPS][eta 08m:57s]
mytest: (groupid=0, jobs=1): err= 0: pid=363441: Sat Oct 14 11:19:49 2023write: IOPS=4158, BW=16.2MiB/s (17.0MB/s)(1024MiB/63037msec); 0 zone resetsslat (usec): min=3, max=624, avg= 5.76, stdev= 4.10clat (msec): min=10, max=359, avg=30.77, stdev=18.74lat (msec): min=10, max=359, avg=30.78, stdev=18.74clat percentiles (msec):|  1.00th=[   17],  5.00th=[   19], 10.00th=[   21], 20.00th=[   23],| 30.00th=[   25], 40.00th=[   27], 50.00th=[   28], 60.00th=[   29],| 70.00th=[   31], 80.00th=[   33], 90.00th=[   38], 95.00th=[   51],| 99.00th=[  111], 99.50th=[  153], 99.90th=[  262], 99.95th=[  266],| 99.99th=[  359]bw (  KiB/s): min= 3768, max=21016, per=100.00%, avg=16674.80, stdev=3007.06, samples=125iops        : min=  942, max= 5254, avg=4168.57, stdev=751.74, samples=125lat (msec)   : 20=9.54%, 50=85.45%, 100=3.49%, 250=1.38%, 500=0.13%cpu          : usr=0.99%, sys=3.24%, ctx=28037, majf=0, minf=0IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):WRITE: bw=16.2MiB/s (17.0MB/s), 16.2MiB/s-16.2MiB/s (17.0MB/s-17.0MB/s), io=1024MiB (1074MB), run=63037-63037msecDisk stats (read/write):rbd0: ios=0/261835, merge=0/0, ticks=0/7989253, in_queue=7996052, util=100.00%

【Bcache】两块SSD加速两块HDD(OSD)+两块SSD加速block.db和block.wal

[root@ceph01 ~]# fio -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=1 -runtime=600 -group_reporting -name=mytest -filename=/dev/rbd0
mytest: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.22
Starting 1 thread
Jobs: 1 (f=1): [w(1)][10.5%][w=16.3MiB/s][w=4162 IOPS][eta 08m:57s]
mytest: (groupid=0, jobs=1): err= 0: pid=73003: Mon Oct 16 02:34:47 2023write: IOPS=4124, BW=16.1MiB/s (16.9MB/s)(1024MiB/63559msec); 0 zone resetsslat (usec): min=3, max=109, avg= 5.69, stdev= 3.75clat (msec): min=10, max=294, avg=31.03, stdev=17.27lat (msec): min=10, max=294, avg=31.03, stdev=17.27clat percentiles (msec):|  1.00th=[   17],  5.00th=[   19], 10.00th=[   21], 20.00th=[   23],| 30.00th=[   25], 40.00th=[   27], 50.00th=[   28], 60.00th=[   30],| 70.00th=[   32], 80.00th=[   34], 90.00th=[   40], 95.00th=[   52],| 99.00th=[  110], 99.50th=[  136], 99.90th=[  226], 99.95th=[  249],| 99.99th=[  284]bw (  KiB/s): min= 6200, max=20376, per=100.00%, avg=16508.00, stdev=2659.19, samples=126iops        : min= 1550, max= 5094, avg=4126.88, stdev=664.77, samples=126lat (msec)   : 20=9.65%, 50=85.11%, 100=3.87%, 250=1.33%, 500=0.04%cpu          : usr=1.00%, sys=3.13%, ctx=25141, majf=0, minf=0IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):WRITE: bw=16.1MiB/s (16.9MB/s), 16.1MiB/s-16.1MiB/s (16.9MB/s-16.9MB/s), io=1024MiB (1074MB), run=63559-63559msecDisk stats (read/write):rbd0: ios=0/261407, merge=0/0, ticks=0/8062837, in_queue=8075472, util=100.00%

两块SSD做OSD

image-20231013225413334

[root@ceph01 ~]# fio -direct=1 -iodepth=128 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=100G -numjobs=1 -runtime=600 -group_reporting -name=mytest -filename=/dev/rbd0
mytest: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.22
Starting 1 thread
Jobs: 1 (f=1): [w(1)][4.3%][w=34.7MiB/s][w=8883 IOPS][eta 09m:35s] 
mytest: (groupid=0, jobs=1): err= 0: pid=125901: Fri Oct 13 11:06:55 2023write: IOPS=10.2k, BW=39.8MiB/s (41.7MB/s)(1024MiB/25751msec); 0 zone resetsslat (nsec): min=3310, max=78980, avg=5364.31, stdev=3425.80clat (usec): min=2965, max=33393, avg=12565.10, stdev=3428.92lat (usec): min=2970, max=33400, avg=12570.90, stdev=3428.60clat percentiles (usec):|  1.00th=[ 6652],  5.00th=[ 7963], 10.00th=[ 8717], 20.00th=[ 9765],| 30.00th=[10552], 40.00th=[11207], 50.00th=[11994], 60.00th=[12780],| 70.00th=[13829], 80.00th=[15139], 90.00th=[17171], 95.00th=[19006],| 99.00th=[22676], 99.50th=[24511], 99.90th=[27657], 99.95th=[28705],| 99.99th=[31589]bw (  KiB/s): min=33628, max=44247, per=99.99%, avg=40717.55, stdev=2014.23, samples=51iops        : min= 8407, max=11061, avg=10179.18, stdev=503.57, samples=51lat (msec)   : 4=0.01%, 10=23.01%, 20=73.64%, 50=3.35%cpu          : usr=2.23%, sys=7.41%, ctx=20485, majf=0, minf=0IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):WRITE: bw=39.8MiB/s (41.7MB/s), 39.8MiB/s-39.8MiB/s (41.7MB/s-41.7MB/s), io=1024MiB (1074MB), run=25751-25751msecDisk stats (read/write):rbd0: ios=0/260926, merge=0/0, ticks=0/3220267, in_queue=3224032, util=99.89%

结论

测试环境为单机双副本!!

测试IOPSBWlat
两块HDD做OSD4041659kB/s316.06ms
【Bcache】一块SSD加速两块HDD(OSD)406516.7MB/s31.48ms
【Bcache】两块SSD加速两块HDD(OSD)415817.0MB/s30.78ms
【Bcache】两块SSD加速两块HDD(OSD)+两块SSD加速block.db和block.wal412416.9MB/s31.03ms
两块SSD做OSD10.2k41.7MB/s12.57ms
对比数据1640567MB/s7.80ms

相关文章:

LoongArch单机Ceph Bcache加速4K随机写性能测试

LoongArch单机Ceph Bcache加速4K随机写性能测试 两块HDD做OSD [rootceph01 ~]# fio -direct1 -iodepth128 -thread -rwrandwrite -ioenginelibaio -bs4k -size100G -numjobs1 -runtime600 -group_reporting -namemytest -filename/dev/rbd0 mytest: (g0): rwrandwrite, bs(R)…...

景联文科技语音数据标注:AUTO-AVSR模型和数据助力视听语音识别

ASR、VSR和AV-ASR的性能提高很大程度上归功于更大的模型和训练数据集的使用。 更大的模型具有更多的参数和更强大的表示能力,能够捕获到更多的语言特征和上下文信息,从而提高识别准确性;更大的训练集也能带来更好的性能,更多的数据…...

【R】数据相关性的可视化

一千零一技|相关性分析及其可视化:copy&paste,搞定 .libPaths(c("/bioinfo/home/software/miniconda3/envs/R4.0/lib/R/library")) #data("mtcars") library("PerformanceAnalytics") # pdf("test.pdf") #…...

Spring Security 6.x 系列【68】 授权篇之基于注解 缓存的访问控制方案

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. 改造思路3. 实现3.1 基础工程3.2 数据库存储用户3.3 自定义3.4 测…...

QML(11)——qml界面之间通信方式详解

目录 一、属性绑定1、直接绑定 property01: property02实例代码 2、条件绑定 Qt.binding实例代码 二、信号传递1、on<Property>Changed实例代码 2、on<Signal>实例代码 3、条件信号传递 connect实例代码 4、Connections 一、属性绑定 属性绑定具有持续性 1、直接…...

图像检索算法 计算机竞赛

文章目录 1 前言2 图像检索介绍(1) 无监督图像检索(2) 有监督图像检索 3 图像检索步骤4 应用实例5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 图像检索算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff…...

科学清理Windows系统垃圾,让你的电脑性能快如火箭

文章目录 1. 使用磁盘清理工具2. 清理临时文件2.1 清理用户临时文件夹2.2 清理系统临时文件夹2.3 清理系统临时文件 3.卸载不需要的程序4. 删除不必要的下载文件5. 清理回收站6. 压缩磁盘7. 删除旧的系统还原点8. 禁用休眠功能9. 定期进行磁盘碎片整理10. 禁用不必要的启动项11…...

docker图形胡界面管理工具--Portainer可视化面板安装

1.安装运行Portainer docker run -d -p 8088:9000 \ > --restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainer--restartalways&#xff1a;Docker启动后容器自动启动 -p&#xff1a;端口映射 -v&#xff1a;路径映射2.通过…...

环形链表的约瑟夫问题

前言&#xff1a; 据说著名犹太历史学家Josephus有过如下故事&#xff1a; 在罗马人占领乔塔帕特后&#xff0c;39个犹太人和Josephus及他的朋友躲进一个洞里&#xff0c;39个犹太人决定宁愿死也不要被敌人抓到&#xff0c;于是决定了一个自杀方式&#xff0c;41个人排成一个…...

python requests.get发送Http请求响应结果乱码、Postman请求结果正常

最近在写爬虫程序&#xff0c;自己复制网页http请求的url、头部&#xff0c;使用python requests和postman分别请求&#xff0c;结果使用postman发送http get请求&#xff0c;可以得到正常的json数据&#xff0c;但是使用python的requests发送则接受到乱码&#xff0c;response…...

Dialog动画相关

最近需求一个问题&#xff0c;想要在dialog消失时增加动画&#xff0c;之前如上一个文章中遇到的&#xff0c;但是最后改了实现方式&#xff0c;要求在特定的地方缩放&#xff0c;原来的dialog高度是wrap_content的&#xff0c;这样是无法实现的&#xff0c;因此首先需要将dial…...

【java学习—八】==操作符与equals方法(2)

文章目录 1. 操作符2. equals方法String对象的创建 1. 操作符 &#xff08;1&#xff09;基本类型比较值 : 只要两个变量的值相等&#xff0c;即为 true. int a5; if(a6){…} &#xff08;2&#xff09;引用类型比较引用 ( 是否指向同一个对象 ): 只有指向同一个对象时&#…...

Linux系统编程_进程间通信第1天:IPC、无名管道pipe和命名管道mkfifo(半双工)、消息队列msgget(全双工)

1. 进程间通信概述&#xff08;427.1&#xff09; 2. 管道通信原理&#xff08;428.2&#xff09; 进程间的五种通信方式介绍 https://blog.csdn.net/wh_sjc/article/details/70283843 进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;&#xff…...

figma+windows系统

...

typescript实现一个简单的区块链

TypeScript 是一种由 Microsoft 推出的开源编程语言&#xff0c;它是 JavaScript 的超集&#xff0c;允许程序员使用面向对象的方式编写代码&#xff0c;并提供类型检查和语法提示等优秀的开发体验。区块链技术是一种分布式的、可靠的、不可篡改的数据库技术&#xff0c;用于记…...

服务器被暴力破解怎么解决

暴力破解分两种&#xff0c;一种是SSH暴力破解&#xff0c;属于Linux服务器。一种是RDP暴力破解&#xff0c;属于Windows服务器。两者其实攻击手法一样&#xff0c;都是黑客利用扫描工具对某一个IP段扫描&#xff0c;而Linux跟Windows登录端口为别是22和3389。那怎样才能有效避…...

用来生成二维矩阵的dcgan

有大量二维矩阵作为样本&#xff0c;为连续数据。数据具有空间连续性&#xff0c;因此用卷积网络&#xff0c;通过dcgan生成二维矩阵。因为是连续变量&#xff0c;因此损失采用nn.MSELoss()。 import torch import torch.nn as nn import torch.optim as optim import numpy a…...

免费的国产数据集成平台推荐

在如今的数字化时代下&#xff0c;企业内部的数据无疑是重要资产之一。随着数据源的多样性和数量剧增&#xff0c;如何有效地收集、整合、存储、管理和分析数据变得至关重要。为了解决这些常见痛点&#xff0c;数据集成平台成为了现代企业不可或缺的一部分。 数据集成是现代数…...

【yolov8系列】yolov8的目标检测、实例分割、关节点估计的原理解析

1 YOLO时间线 这里简单列下yolo的发展时间线&#xff0c;对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接&#xff1a;https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式&#xff0c;去除了先验设置可能不佳带来的影响借鉴Genera…...

5256C 5G终端综合测试仪

01 5256C 5G终端综合测试仪 产品综述&#xff1a; 5256C 5G终端综合测试仪主要用于5G终端、基带芯片的研发、生产、校准、检测、认证和教学等领域。该仪表具备5G信号发送功能、5G信号功率特性、解调特性和频谱特性分析功能&#xff0c;支持5G终端的产线高速校准及终端发射机…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...