hadoop使用内置包进行性能测试TestDFSIO、NNBench、MRBench、SliveTest

hadoop使用内置包进行性能测试

hadoop使用内置包进行性能测试

  • hadoop使用内置包进行性能测试
    • TestDFSIO read & write
    • NNBench
    • MRBench
    • SliveTest

TestDFSIO read & write

TestDFSIO 是一个 Hadoop 自带的基准测试工具,用于测试 HDFS 的读写性能。它会模拟大量的文件读写操作,并输出相应的性能指标。

测试内容:

  • TestDFSIO 使用了两个阶段进行测试 — 写入(Write)和读取(Read)。在写入阶段,它将生成指定数量和大小的文件,并将其写入到 HDFS 中。在读取阶段,它将从 HDFS 读取这些文件并计算读取速度。

测试参数:

hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/fs/TestDFSIO.java
  private static final Logger LOG = LoggerFactory.getLogger(TestDFSIO.class);private static final int DEFAULT_BUFFER_SIZE = 1000000;private static final String BASE_FILE_NAME = "test_io_";private static final String DEFAULT_RES_FILE_NAME = "TestDFSIO_results.log";private static final long MEGA = ByteMultiple.MB.value();private static final int DEFAULT_NR_BYTES = 128;private static final int DEFAULT_NR_FILES = 4;private static final String USAGE ="Usage: " + TestDFSIO.class.getSimpleName() +" [genericOptions]" +" -read [-random | -backward | -skip [-skipSize Size]] |" +" -write | -append | -truncate | -clean" +" [-compression codecClassName]" +" [-nrFiles N]" +" [-size Size[B|KB|MB|GB|TB]]" +" [-resFile resultFileName] [-bufferSize Bytes]" +" [-storagePolicy storagePolicyName]" +" [-erasureCodePolicy erasureCodePolicyName]";
  • -write:指定写入阶段的测试。
  • -read:指定读取阶段的测试。
  • -nrFiles <number>:要创建的文件数量。
  • -size <size>:每个文件的大。
  • -resFile <filename>:指定结果输出文件的路径。
  • -bufferSize <bufferSize>:此参数用于指定读写文件时使用的缓冲区大小。
  • compression <codecClassName>:指定在写入文件时使用的压缩编解码器。
  • storagePolicy <storagePolicyName>:用于在写入文件时指定存储策略。存储策略决定了数据在 HDFS 中的复制和分布方式。
  • erasureCodePolicy <erasureCodePolicyName>:用于在写入文件时指定纠删码(Erasure Code)策略。

执行语句示例:

创建 10 个大小为 100MB 的文件,并将结果输出到当前路径下的TestDFSIO_results.log文件中。

hadoop jar hadoop-mapreduce-client-jobclient-3.3.6-tests.jar TestDFSIO -write -nrFiles 10 -size 100MB

读取10 个大小为 100MB 的文件,并将结果输出到当前路径下的TestDFSIO_results.log文件中。

hadoop jar hadoop-mapreduce-client-test.jar TestDFSIO -read -nrFiles 10 -fileSize 100

TestDFSIO_results.log保存内容:

----- TestDFSIO ----- : writeDate & time: Thu Dec 14 13:21:57 CST 2023Number of files: 10Total MBytes processed: 1000Throughput mb/sec: 49.72Average IO rate mb/sec: 190.11IO rate std deviation: 75.6Test exec time sec: 27.01----- TestDFSIO ----- : readDate & time: Thu Dec 14 13:36:56 CST 2023Number of files: 10Total MBytes processed: 1000Throughput mb/sec: 631.31Average IO rate mb/sec: 655.3IO rate std deviation: 127.5Test exec time sec: 8.03

NNBench

Hadoop NNbench 是一个用于测试 HDFS (Hadoop 分布式文件系统)性能的工具。它可以模拟多个客户端同时进行读写操作,以评估 HDFS 的并发访问能力和吞吐量。

测试内容:

  • 数据生成:NNbench 会生成一系列指定大小的数据块(Blocks),这些数据块将被写入到 HDFS 中。数据块的大小由 -blockSize 参数指定。
  • 写入测试:多个客户端同时向 HDFS 写入生成的数据块,可以设置写入的线程数和每个线程的写入次数。写入操作的参数由 -operation create_write 指定。
  • 读取测试:多个客户端同时从 HDFS 读取之前写入的数据块。读取操作的参数由 -operation open_read 指定。

测试参数:

hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/hdfs/NNBench.java
Options:-operation <Available operations are create_write open_read rename delete. This option is mandatory>* NOTE: The open_read, rename and delete operations assume that the files they operate on, are already available. The create_write operation must be run before running the other operations.-maps <number of maps. default is 1. This is not mandatory>-reduces <number of reduces. default is 1. This is not mandatory>-startTime <time to start, given in seconds from the epoch. Make sure this is far enough into the future, so all maps (operations) will start at the same time. default is launch time + 2 mins. This is not mandatory>-blockSize <Block size in bytes. default is 1. This is not mandatory>-bytesToWrite <Bytes to write. default is 0. This is not mandatory>-bytesPerChecksum <Bytes per checksum for the files. default is 1. This is not mandatory>-numberOfFiles <number of files to create. default is 1. This is not mandatory>-replicationFactorPerFile <Replication factor for the files. default is 1. This is not mandatory>-baseDir <base DFS path. default is /benchmarks/NNBench. Supports cross-cluster access by using full path with schema and cluster. This is not mandatory>-readFileAfterOpen <true or false. if true, it reads the file and reports the average time to read. This is valid with the open_read operation. default is false. This is not mandatory>-help: Display the help statement
  • -operation <write|read>:指定进行写入或读取操作。
  • -maps <numMaps>:指定 MapReduce 作业中使用的 Mapper 数量。
  • -reduces <numReduces>:指定 MapReduce 作业中使用的 Reducer 数量。
  • -blockSize <blockSize>:指定生成的数据块的大小。
  • -bytesToWrite <bytesToWrite>:指定总共写入的数据大小。
  • -bytesPerChecksum <bytesPerChecksum>:指定每个校验和的大小。
  • -numberOfFiles <numberOfFiles>:指定创建/读取的文件数。
  • -replicationFactorPerFile <replicationFactor>:指定写入数据块的副本数量。
  • baseDir <baseDir>:基础DFS路径,默认值为/backages/NNBench。
  • readFileAfterOpen <true|false>:如果为true,则读取文件并报告平均读取时间。只对open_read操作有效,默认为false。
  • ...

执行语句示例:

写入操作(-opertation create_write),采用 12 个 Mapper 和 6 个 Reducer 来处理数据,每个数据块大小为 64MB(-blockSize 67108864),总共写入 128MB 的数据(-bytesToWrite 134217728),写入文件数为1(-numberOfFiles 1),并且将数据块副本数设置为 2(-replicationFactor 2),基础DFS路径为(/benchmarks/NNBench-’hostname -s’),测试结果输出到当前路径下的NNBench_results.log文件中。

hadoop jar hadoop-mapreduce-client-jobclient-3.3.6-tests.jar nnbench -operation create_write -maps 12 -reduces 6 -blockSize 67108864 -bytesToWrite 134217728 -numberOfFiles 1 -replicationFactorPerFile 2 -basedir /benchmarks/NNBench-’hostname -s’

读取操作(-opertation open_read),采用 12 个 Mapper 和 6 个 Reducer 来处理数据,每个数据块大小为 64MB(-blockSize 67108864),总共写入 128MB 的数据(-bytesToWrite 134217728),写入文件数为1(-numberOfFiles 1),并且将数据块副本数设置为 2(-replicationFactor 2),报告平均读取时间(-readFileAfterOpen true)基础DFS路径为(/benchmarks/NNBench-’hostname -s’),测试结果输出到当前路径下的NNBench_results.log文件中。

hadoop jar hadoop-mapreduce-client-jobclient-3.3.6-tests.jar nnbench -operation open_read -maps 12 -reduces 6 -blockSize 67108864 -bytesToWrite 134217728 -numberOfFiles 1 -replicationFactorPerFile 2 -readFileAfterOpen true -basedir /benchmarks/NNBench-’hostname -s’

NNBench_results.log

-------------- NNBench -------------- : Version: NameNode Benchmark 0.4Date & time: 2023-12-14 14:11:35,409Test Operation: create_writeStart time: 2023-12-14 14:11:20,732Maps to run: 12Reduces to run: 6Block Size (bytes): 67108864Bytes to write: 134217728Bytes per checksum: 1Number of files: 1Replication factor: 2Successful file operations: 12# maps that missed the barrier: 0# exceptions: 0TPS: Create/Write/Close: 2
Avg exec time (ms): Create/Write/Close: 882.25Avg Lat (ms): Create/Write: 670.9166666666666Avg Lat (ms): Close: 109.58333333333333RAW DATA: AL Total #1: 8051RAW DATA: AL Total #2: 1315RAW DATA: TPS Total (ms): 10587RAW DATA: Longest Map Time (ms): 11954.0RAW DATA: Late maps: 0RAW DATA: # of exceptions: 0-------------- NNBench -------------- : Version: NameNode Benchmark 0.4Date & time: 2023-12-14 14:17:34,927Test Operation: open_readStart time: 2023-12-14 14:17:26,840Maps to run: 12Reduces to run: 6Block Size (bytes): 67108864Bytes to write: 134217728Bytes per checksum: 1Number of files: 1Replication factor: 2Successful file operations: 12# maps that missed the barrier: 0# exceptions: 0TPS: Open/Read: 2Avg Exec time (ms): Open/Read: 320.75Avg Lat (ms): Open: 3.0Avg Lat (ms): Read: 175.75RAW DATA: AL Total #1: 36RAW DATA: AL Total #2: 2109RAW DATA: TPS Total (ms): 3849RAW DATA: Longest Map Time (ms): 4837.0RAW DATA: Late maps: 0RAW DATA: # of exceptions: 0

MRBench

Hadoop Mrbench 是一个用于测试 Hadoop MapReduce 的性能的工具。它可以模拟 MapReduce 作业的执行过程,以评估 Hadoop 集群的并发处理能力和吞吐量。

测试内容:

  • 数据生成:Mrbench 会生成指定数量的输入数据块(blocks),每个数据块的大小由 -blockSize 参数指定。
  • MapReduce 作业执行:通过调度 MapReduce 作业来模拟实际的计算任务。作业的类型、数量和规模由 -numRuns-maps-reduces 参数指定。
  • 数据读取:测试过程中,将对生成的数据块进行读取操作,以验证数据的正确性。

测试参数:

hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/MRBench.java
Usage: mrbench [-baseDir <base DFS path for output/input, default is /benchmarks/MRBench>] [-jar <local path to job jar file containing Mapper and Reducer implementations, default is current jar file>] [-numRuns <number of times to run the job, default is 1>] [-maps <number of maps for each run, default is 2>] [-reduces <number of reduces for each run, default is 1>] [-inputLines <number of input lines to generate, default is 1>] [-inputType <type of input to generate, one of ascending (default), descending, random>] [-verbose]
  • -maps <numMaps>:指定 MapReduce 作业中使用的 Mapper 数量。
  • -reduces <numReduces>:指定 MapReduce 作业中使用的 Reducer 数量。
  • -numRuns <numRuns>:指定要执行的 MapReduce 作业的次数。
  • -inputLines:指定要输入的数据行数
  • ...

模拟运行10次 MapReduce 作业(-numRuns 10),使用 12 个 Mapper 和 6 个 Reducer 来处理数据(-maps 12 -reduces 6),每个文件输入数据行数为50。
执行语句示例:

hadoop jar hadoop-mapreduce-client-jobclient-3.3.6-tests.jar mrbench -maps 12 -reduces 6 -numRuns 10 -inputLines 50
DataLines       Maps    Reduces AvgTime (milliseconds)
50              12      6       2683

SliveTest

SliveTest 测试的主要目的是评估 Hadoop 文件系统(HDFS)和 MapReduce 框架在高负载、并发访问以及数据完整性方面的表现。
由于 SliveTest 类是作为 Hadoop MapReduce 项目中的一个测试类存在的,它通常不作为独立工具来使用,而是通过运行整个测试套件进行测试。

测试参数:

hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/fs/slive/SliveTest.java
usage: SliveTest 0.1.0-append <arg>         pct,distribution where distribution is one ofbeg,end,uniform,mid-appendSize <arg>     Min,max for size to append(min=max=MAX_LONG=blocksize)-baseDir <arg>        Base directory path-blockSize <arg>      Min,max for dfs file block size-cleanup <arg>        Cleanup & remove directory after reporting-create <arg>         pct,distribution where distribution is one ofbeg,end,uniform,mid-delete <arg>         pct,distribution where distribution is one ofbeg,end,uniform,mid-dirSize <arg>        Max files per directory-duration <arg>       Duration of a map task in seconds (MAX_INT for nolimit)-exitOnError          Exit on first error-files <arg>          Max total number of files-help                 Usage information-ls <arg>             pct,distribution where distribution is one ofbeg,end,uniform,mid-maps <arg>           Number of maps-mkdir <arg>          pct,distribution where distribution is one ofbeg,end,uniform,mid-ops <arg>            Max number of operations per map-packetSize <arg>     Dfs write packet size-queue <arg>          Queue name-read <arg>           pct,distribution where distribution is one ofbeg,end,uniform,mid-readSize <arg>       Min,max for size to read (min=max=MAX_LONG=readentire file)-reduces <arg>        Number of reduces-rename <arg>         pct,distribution where distribution is one ofbeg,end,uniform,mid-replication <arg>    Min,max value for replication amount-resFile <arg>        Result file name-seed <arg>           Random number seed-sleep <arg>          Min,max for millisecond of random sleep to perform(between operations)-truncate <arg>       pct,distribution where distribution is one ofbeg,end,uniform,mid-truncateSize <arg>   Min,max for size to truncate(min=max=MAX_LONG=blocksize)-truncateWait <arg>   Should wait for truncate recovery-writeSize <arg>      Min,max for size to write(min=max=MAX_LONG=blocksize)
  • -append <arg>:追加操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -appendSize <arg>:追加操作的最小和最大文件大小。如果未指定,则默认为 MAX_LONG=blocksize
  • -baseDir <arg>:基础目录路径,即执行操作的根目录。
  • -blockSize <arg>:HDFS 文件块大小的最小和最大值。
  • -cleanup <arg>:在报告后进行清理并删除目录。<arg> 可以是 truefalse
  • -create <arg>:创建文件的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -delete <arg>:删除操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -dirSize <arg>:每个目录的最大文件数。
  • -duration <arg>:每个 Map 任务的持续时间(秒)。设置为 MAX_INT 表示没有时间限制。
  • -exitOnError:在出现错误时立即退出。
  • -files <arg>:总文件数的最大值。
  • -help:显示使用信息。
  • -ls <arg>:列出操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -maps <arg>:Map 任务的数量。
  • -mkdir <arg>:创建目录的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -ops <arg>:每个 Map 任务的最大操作数。
  • -packetSize <arg>:DFS 写入数据包的大小。
  • -queue <arg>:指定作业提交到的队列名称。
  • -read <arg>:读取操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -readSize <arg>:读取操作的最小和最大文件大小。如果未指定,则默认为 MAX_LONG=read entire file
  • -reduces <arg>:Reduce 任务的数量。
  • -rename <arg>:重命名操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -replication <arg>:文件的最小和最大副本数量。
  • -resFile <arg>:结果文件名。
  • -seed <arg>:随机数种子。
  • -sleep <arg>:执行操作之间的随机休眠时间,单位为毫秒。指定一个最小值和最大值。
  • -truncate <arg>:截断操作的百分比和分布方式。分布方式可以是以下之一:beg(起始)、end(结束)、uniform(均匀)、mid(中间)。
  • -truncateSize <arg>:截断操作的最小和最大文件大小。如果未指定,则默认为 MIN_LONG=blocksize
  • -truncateWait <arg>:是否等待截断恢复完成。<arg> 可以是 truefalse
  • -writeSize <arg>: …
hadoop org.apache.hadoop.fs.slive.SliveTest -maps 12 -reduces 6 -files 5 -ops 5 -truncateWait true -cleanup true

执行完毕后如果没有设置 -cleanup true 则需要手动清理测试痕迹:

hdfs dfs -rm -r -f hdfs://hadoop-system-namenode:9000/test/slive/slive/output
2023-12-14 16:51:05,863 INFO slive.SliveTest: Reporting on job:
2023-12-14 16:51:05,863 INFO slive.SliveTest: Writing report using contents of /test/slive/slive/output
2023-12-14 16:51:05,925 INFO slive.SliveTest: Report results being placed to logging output and to file /opt/hadoop/share/hadoop/mapreduce/part-0000
2023-12-14 16:51:05,926 INFO slive.ReportWriter: Basic report for operation type AppendOp
2023-12-14 16:51:05,926 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,926 INFO slive.ReportWriter: Measurement "files_not_found" = 1
2023-12-14 16:51:05,926 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type CreateOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "bytes_written" = 67108864
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "milliseconds_taken" = 3018
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "successes" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Rate for measurement "bytes_written" = 21.206 MB/sec
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Rate for measurement "op_count" = 0.331 operations/sec
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Rate for measurement "successes" = 0.331 successes/sec
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type DeleteOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "failures" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type ListOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "files_not_found" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type MkdirOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "milliseconds_taken" = 35
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "successes" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Rate for measurement "op_count" = 28.571 operations/sec
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Rate for measurement "successes" = 28.571 successes/sec
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type ReadOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "files_not_found" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type RenameOp
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "failures" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Basic report for operation type SliveMapper
2023-12-14 16:51:05,927 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,927 INFO slive.ReportWriter: Measurement "milliseconds_taken" = 4486
2023-12-14 16:51:05,928 INFO slive.ReportWriter: Measurement "op_count" = 8
2023-12-14 16:51:05,928 INFO slive.ReportWriter: Rate for measurement "op_count" = 1.783 operations/sec
2023-12-14 16:51:05,928 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,928 INFO slive.ReportWriter: Basic report for operation type TruncateOp
2023-12-14 16:51:05,928 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,928 INFO slive.ReportWriter: Measurement "files_not_found" = 1
2023-12-14 16:51:05,928 INFO slive.ReportWriter: Measurement "op_count" = 1
2023-12-14 16:51:05,928 INFO slive.ReportWriter: -------------
2023-12-14 16:51:05,928 INFO slive.SliveTest: Cleaning up job:
2023-12-14 16:51:05,928 INFO slive.SliveTest: Attempting to recursively delete /test/slive/slive

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

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

相关文章

vue3制作类微信的六位的密码输入框

这是一个 Vue 3 组件&#xff0c;用于创建一个自定义的密码输入框。这个输入框由6个小输入框组成&#xff0c;每个小输入框只能输入一个字符。当用户在一个小输入框中输入字符后&#xff0c;焦点会自动跳到下一个输入框&#xff0c;直到所有6个输入框都填满为止。当6个字符都输…

Scrapy的crawlspider爬虫

scrapy的crawlspider爬虫 学习目标&#xff1a; 了解 crawlspider的作用应用 crawlspider爬虫创建的方法应用 crawlspider中rules的使用 1、crawlspider是什么 回顾之前的代码中&#xff0c;我们有很大一部分时间在寻找下一页的url地址或者是内容的url地址上面&#xff0c;这…

Web安全-SQL注入常用函数(二)

★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将其信息做其他用途&#xff0c;由用户承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、MySQL数据库构成 初始化安装MySQL数据库后(…

智能优化算法应用:基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.模拟退火算法4.实验参数设定5.算法结果6.…

Android---Kotlin 学习007

集合可以方便你处理一组数据&#xff0c;也可以作为值参传给函数&#xff0c;和我们学过的其它变量类型一样&#xff0c;List、Set 和 Map 类型的变量也分为两类&#xff0c;只读和可变。 List创建与元素获取 通过 listOf() 函数创建一个 List 集合。 val listString : List&…

javaWeb文件上传

1.文件上传的应用场景&#xff1a;提交作业 上传头像 提交简历&#xff08;上传附件&#xff09; 上传商品&#xff0c;图书图片 2.文件上传的前台如何编写以及注意事项&#xff1a; 1.肯定需要用到表单 2.文件上传的那一栏需要提供 input的typefil…

UnicodeUtil.java

计算精度问题带根号√ √ UNICODE字符表 package util;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** radical* 根号√运算问题 Unicode * * author ZengWenFeng* email 117791303qq.com* date 2015.04.07*/ public class UnicodeUtil {/*** 字…

ShardingSphere数据分片之读写分离

1、概述 读写分离是一种常见的数据库架构&#xff0c;它将数据库分为主从库&#xff0c;一个主库&#xff08;Master&#xff09;用于写数据&#xff0c;多个从库&#xff08;Slave&#xff09;进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。 所以&…

React Native android环境搭建,使用夜神模拟器进行开发(适用于0.73+版本)

前言 本文基于&#xff1a;“react-native” : “^0.73.0” 1.安装 Node Node.js&#xff0c;下载时选择 > 18 版本 2.下载并安装 JDK Java SE Development Kit (JDK)&#xff0c;下载时选择 17 版本 安装 验证是否安装成功 打开命令提示符输入 javac -version 回车 3.…

re:Invent 产品体验与感受分享:Amazon ElastiCache Serverless 缓存的即时扩展

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道&#xff09;。 文章目录 前言产品介绍产品使用步骤1.创建缓存服务2.安全组开放访问权限…

【Python】解读a+=b 和 a=a+b是否一样?看完恍然大悟!

文章目录 前言一、可变对象和不可变对象总结 前言 在Python中&#xff0c;对于可变和不可变对象的行为差异是一个重要概念&#xff0c;特别是在涉及到和操作时。理解这一点对于编写高效且无误的代码至关重要。 一、可变对象和不可变对象 首先&#xff0c;让我们谈谈可变和不可…

【INTEL(ALTERA)】 quartus使用Nios® V 处理器系统仿真失败,没有打印输出消息

说明 在 Synopsys* VCS* 和 VCS* MX 仿真器中模拟由以下位置生成的 Nios V 处理器系统时&#xff0c;可能会出现该问题&#xff1a; 英特尔 Quartus Prime Pro Edition 软件版本 23.1 至 23.4&#xff0c;或 英特尔 Quartus Prime Standard Edition 软件版本 23.1std 这是由…

位运算技巧

获取某个10进制数值的二进制最高位 public class Main {public static void main(String[] args) {// 调用 highBit 函数&#xff0c;传入参数 67int result highBit(67);// 输出结果的二进制表示System.out.println(Integer.toBinaryString(result)); // 输出 1000000}/***…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

离散型随机变量的分布律(也称概率质量函数:probability mass function, PMF)

设是一个离散型随机变量&#xff0c;可能的取值为&#xff0c;取各个值的概率记为&#xff1a; &#xff08;1&#xff09; 其中 并且&#xff0c; 公式&#xff08;1&#xff09;就称为离散型随机变量的分布律&#xff0c;也称概率质量函数&#xff1a;probability ma…

svn使用步骤

服务器端主要用来创建仓库&#xff0c;然后供客户端去访问与下载。 客户端&#xff1a; 图形化界面的使用&#xff1a;这里使用的是tortoise工具 1.创建一个文件夹作为自己的本地仓库目录 2.鼠标右键文件夹&#xff0c;在菜单中点击SVN checkout 3.找个图 这一步骤相当于git中…

最新版xposed编写教程

环境&#xff1a; andriod studio2023.1.1 jdk17 gradle8.2 流程&#xff1a; 1.新建项目&#xff0c;选empty views activity即可&#xff08;其他也可&#xff09; 2.语言选java&#xff0c;其他路径名称等暗战自己需要随便改&#xff0c;然后点击finish 3.修改AndroidMan…

调用接口 Promise.all的简单使用方式

created() {const requests [axios.get(/api/data1),axios.get(/api/data2),axios.get(/api/data3)];Promise.all(requests).then(responses > {// 处理响应数据const data1 responses[0].data;const data2 responses[1].data;const data3 responses[2].data;// ...}).c…

茶室茶楼计时计费软件,软件中的商品管理计时操作教程

一、前言 茶室在营业的时候&#xff0c;不但需要计时间&#xff0c;同时还需要管理商品入库出库库存等管理。这就需要一款实用的操作简单的管理软件。 下面以 佳易王茶社计时计费软件V18.0为例说明&#xff0c;其他版本可以参考本教程。 软件下载或技术支持可以点击最下方官…

【Python基础】线程

文章目录 [toc]线程与进程的区别与联系同步任务示例 并发任务示例 线程方法thread_object.start()thread_object.join()thread_object.setDaemon()thread_object.current_thread() 线程与进程的区别与联系 线程是可以被计算机CPU调度的最小单元进程是计算机分配资源&#xff0…