当前位置: 首页 > 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终端的产线高速校准及终端发射机…...

Springboot Actuator 环境搭建踩坑

JMX和Springboot Actuator JMX是Java Management Extensions&#xff0c;它是一个Java平台的管理和监控接口。 为什么要搞JMX呢&#xff1f;因为在所有的应用程序中&#xff0c;对运行中的程序进行监控都是非常重要的&#xff0c;Java应用程序也不例外。我们肯定希望知道Java…...

Vue-3.3ESLint

ESLint代码规范 代码规范&#xff1a;一套写代码的约定规则。 JavaScript Standard Style规范说明https://standardjs.com/rules-zhcn.html 代码规范错误 如果你的代码不符合standard的要求&#xff0c;ESlint会跳出来提醒。 比如&#xff1a;在mian.js中随意做一些改动&a…...

STROBE-MR

Welcome to the STROBE-MR website! About: STROBE-MR stands for “Strengthening the Reporting of Observational Studies in Epidemiology using Mendelian Randomization”. Inspired by the original STROBE checklist, the STROBE-MR guidelines were developed to ass…...

Hive安装配置 - 内嵌模式

文章目录 一、Hive运行模式二、安装配置内嵌模式Hive&#xff08;一&#xff09;下载hive安装包&#xff08;二&#xff09;上传hive安装包&#xff08;三&#xff09;解压缩hive安装包&#xff08;四&#xff09;配置hive环境变量&#xff08;五&#xff09;关联Hadoop&#x…...

html中登录按钮添加回车键登录

原文链接有3种方法&#xff0c;其它2中不会弄&#xff0c;第二种方法成功&#xff0c;下面详细说说 原html的登录部分是 <button class"btn btn-success btn-block waves-effect waves-light" id"button" >登入</button> 在该html中增加 &…...

PCL 空间两平面交线计算

PCL 空间两平面交线计算 std::vector<float> LineInPlanes(std::vector<double> para1, std::vector<double> para2) {std::vector<float...

交替合并字符串

题目要求 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 示例 1&#xff1a; 输入&#xff1a;word1 …...

Linux考试复习整理

文章目录 Linux考试整理一.选择题1.用户的密码现象放置在哪个文件夹&#xff1f;2.删除文件或目录的命令是&#xff1f;3.显示一个文件最后几行的命令是&#xff1f;4.删除一个用户并同时删除用户的主目录5.Linux配置文件一般放在什么目录&#xff1f;6.某文件的组外成员的权限…...

基于geojson-vt和canvas的高性能出图

概述 本文介绍基于geojson-vt和canvas&#xff0c;实现node端高性能出图。 效果 实现 1. canvas绘图 import { createCanvas } from canvasconst tileSize 256; const canvas createCanvas(tileSize, tileSize) const ctx canvas.getContext(2d)2. 处理geojson const g…...

CTF是黑客大赛?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…...