HBase基准测试
执行命令:
hbase org.apache.hadoop.hbase.PerformanceEvaluation
返回信息:
[root@node1 /]# hbase org.apache.hadoop.hbase.PerformanceEvaluation Java HotSpot(TM) -Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release // :: INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available Usage: java org.apache.hadoop.hbase.PerformanceEvaluation \ <OPTIONS> [-D<property=value>]* <command> <nclients> Options: nomapred Run multiple clients using threads (rather than use mapreduce) rows Rows each client runs. Default: size Total size in GiB. Mutually exclusive with --rows. Default: 1.0. sampleRate Execute test on a sample of total rows. Only supported by randomRead. Default: 1.0 traceRate Enable HTrace spans. Initiate tracing every N rows. Default: table Alternate table name. Default: 'TestTable' multiGet If >, when doing RandomRead, perform multiple gets instead of single gets. Default: compress Compression type to use (GZ, LZO, ...). Default: 'NONE' flushCommits Used to determine if the test should flush the table. Default: false writeToWAL Set writeToWAL on puts. Default: True autoFlush Set autoFlush on htable. Default: False oneCon all the threads share the same connection. Default: False presplit Create presplit table. If a table with same name exists, it'll be deleted and recreated (instead of verifying count of its existing regions). Recommended for accurate perf analysis (see guide). Default: disabled inmemory Tries to keep the HFiles of the CF inmemory as far as possible. Not guaranteed that reads are always served from memory. Default: false usetags Writes tags along with KVs. Use with HFile V3. Default: false numoftags Specify the no of tags that would be needed. This works only filterAll Helps to filter out all the rows on the server side there by not returning any thing back to the client. Helps to check the server side performance. Uses FilterAllFilter internally. latency Set to report operation latencies. Default: False bloomFilter Bloom filter type, one of [NONE, ROW, ROWCOL] blockEncoding Block encoding to use. Value should be one of [NONE, PREFIX, DIFF, FAST_DIFF, PREFIX_TREE]. Default: NONE valueSize Pass value size to use: Default: valueRandom Set and 'valueSize'; set on read for stats on size: Default: Not set. valueZipf Set and 'valueSize' in zipf form: Default: Not set. period Report every = multiGet Batch gets together into groups of N. Only supported by randomRead. Default: disabled addColumns Adds columns to scans/gets explicitly. Default: true replicas Enable region replica testing. Defaults: . splitPolicy Specify a custom RegionSplitPolicy for the table. randomSleep Do a random and entered value. Defaults: columns Columns to caching Scan caching to use. Default: Note: -D properties will be applied to the conf used. For example: -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.task.timeout= Command: append Append on each row; clients overlap on keyspace so some concurrent operations checkAndDelete CheckAndDelete on each row; clients overlap on keyspace so some concurrent operations checkAndMutate CheckAndMutate on each row; clients overlap on keyspace so some concurrent operations checkAndPut CheckAndPut on each row; clients overlap on keyspace so some concurrent operations filterScan Run scan test using a filter to find a specific row based on it's value (make sure to use --rows=20) increment Increment on each row; clients overlap on keyspace so some concurrent operations randomRead Run random read test randomSeekScan Run random seek and scan test randomWrite Run random write test scan Run scan test (read every row) scanRange10 Run random seek scan with both start and stop row (max rows) scanRange100 Run random seek scan with both start and stop row (max rows) scanRange1000 Run random seek scan with both start and stop row (max rows) scanRange10000 Run random seek scan with both start and stop row (max rows) sequentialRead Run sequential read test sequentialWrite Run sequential write test Args: nclients Integer. Required. Total number of clients (and HRegionServers) running. <= value <= Examples: To run a single client doing the default 1M sequentialWrites: $ bin/hbase org.apache.hadoop.hbase.PerformanceEvaluation sequentialWrite To run clients doing increments over ten rows: $ bin/hbase org.apache.hadoop.hbase.PerformanceEvaluation --rows= --nomapred increment
执行命令:
hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows= --presplit= sequentialWrite
返回信息:
…… // :: INFO zookeeper.ClientCnxn: Socket connection established, initiating session, client: /, server: node3/ // :: INFO zookeeper.ClientCnxn: Session establishment complete on server node3/, sessionid = // :: INFO zookeeper.ClientCnxn: Session establishment complete on server node3/, sessionid = java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid22929.hprof ... // :: INFO zookeeper.ClientCnxn: Session establishment complete on server node5/, sessionid = // :: INFO zookeeper.ClientCnxn: Session establishment complete on server node3/, sessionid = // :: INFO zookeeper.ClientCnxn: Socket connection established, initiating session, client: /, server: node4/ // :: INFO zookeeper.ClientCnxn: Socket connection established, initiating session, client: /, server: node4/ // :: INFO zookeeper.ClientCnxn: Session establishment complete on server node5/, sessionid = Heap dump bytes in 0.962 secs] # # java.lang.OutOfMemoryError: Java heap space # -XX:OnOutOfMemoryError="kill -9 %p" # Executing /bin/sh -c "kill -9 22929"... Killed
分析内存使用情况,执行命令 free ,返回如下信息:
[root@node1 ~]# free
total used free shared buff/cache available
Mem: 65398900 13711168 26692112 115096 24995620 50890860
Swap: 29200380 0 29200380
第1行 Mem:
total:表示物理内存总量。65398900KB/1024=63866MB/1024=62GB 约等于64GB
total = used + free + buff/cache
available = free + buff/cache(部分)
buff:写 IO 缓存
cache:读 IO 缓存
查看哪些进程使用了内存,执行命令 ps aux ,返回如下信息(抽取部分与大数据有关的进程):
[root@node1 ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root ? Ss Mar06 : /usr/lib/systemd/systemd --switched apache ? S Apr08 : /usr/sbin/httpd -DFOREGROUND ntp ? Ss Mar06 : /usr/sbin/ntpd -u ntp:ntp -g clouder+ ? Ssl Mar11 : /usr/java/jdk1..0_67-cloudera/bin/ apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hbase ? S Mar20 : /bin/bash /usr/lib64/cmf/service/hb flume ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Xm flume ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hive ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Xm hive ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil oozie ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -D spark ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -cp oozie ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil spark ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil mysql ? Ss Mar06 : /bin/sh /usr/bin/mysqld_safe --base mysql ? Sl Mar06 : /usr/libexec/mysqld --basedir=/usr hue ? S Mar12 : /usr/sbin/httpd -f /run/cloudera-sc hue ? Sl Mar12 : python2. /opt/cloudera/parcels/CDH hue ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hue ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hbase ? S Mar20 : /bin/bash /usr/lib64/cmf/service/hb rpc ? Ss Mar13 : /sbin/rpcbind -w hue ? Sl Mar13 : /usr/sbin/httpd -f /run/cloudera-sc hdfs ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp hdfs ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hbase ? S : : mapred ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp mapred ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil yarn ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp yarn ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil
其中RSS列,就是物理内存使用量
VSZ:占用的虚拟内存大小
RSS:占用的物理内存大小
执行命令:
ps aux --sort -rss
根据占用的物理内存大小对进程进行排序,返回如下信息(截取):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND clouder+ ? Ssl Mar11 : /usr/java/jdk1..0_67-cloudera/bin/ hive ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Xm hdfs ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp oozie ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -D root pts/ Sl+ : : /usr/java/jdk1..0_131/bin/java -cp hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp mapred ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp yarn ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -Dp flume ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Xm hbase ? Sl Mar20 : /usr/java/jdk1..0_131/bin/java -Dp spark ? Sl Mar12 : /usr/java/jdk1..0_131/bin/java -cp gnome-i+ ? Sl Mar06 : gnome-shell --mode=initial-setup mysql ? Sl Mar06 : /usr/libexec/mysqld --basedir=/usr hue ? Sl Mar12 : python2. /opt/cloudera/parcels/CDH gnome-i+ ? Sl Mar06 : /usr/libexec/gnome-initial-setup root ? Ssl Mar07 : python2. /usr/lib64/cmf/agent/buil root ? S<l Mar07 : /root/vpnserver/vpnserver execsvc root ? Sl Mar07 : python2. /usr/lib64/cmf/agent/buil root tty1 Ssl+ Mar06 : /usr/bin/Xorg : -background none - polkitd ? Ssl Mar06 : /usr/lib/polkit-/polkitd --no-debu gnome-i+ ? Sl Mar06 : /usr/libexec/gnome-settings-daemon gnome-i+ ? Sl Mar06 : /usr/libexec/goa-daemon root ? Ssl Mar06 : /usr/bin/python -Es /usr/sbin/tuned root ? Ss Mar07 : /usr/lib64/cmf/agent/build/env/bin/ root ? Ssl Mar06 : /usr/sbin/libvirtd geoclue ? Ssl Mar06 : /usr/libexec/geoclue -t root ? S Mar07 : python2. /usr/lib64/cmf/agent/buil root ? Ssl Mar06 : /usr/sbin/NetworkManager --no-daemo hive ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil gnome-i+ ? Sl Mar06 : /usr/libexec/caribou gnome-i+ ? Sl Mar06 : /usr/libexec/ibus-x11 --kill-daemon gnome-i+ ? Ssl Mar06 : /usr/bin/gnome-session --autostart root ? Ss Mar06 : /usr/lib/systemd/systemd-journald colord ? Ssl Mar06 : /usr/libexec/colord hue ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil mapred ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hue ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil spark ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil flume ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil hdfs ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil oozie ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil hbase ? Sl Mar20 : python2. /usr/lib64/cmf/agent/buil yarn ? Sl Mar12 : python2. /usr/lib64/cmf/agent/buil gnome-i+ ? Sl Mar06 : ibus-daemon --xim --panel disable root ? Ssl Mar06 : /usr/lib/udisks2/udisksd --no-debug gnome-i+ ? Sl Mar06 : /usr/libexec/mission-control- root ? Ss Mar11 : /usr/sbin/httpd -DFOREGROUND root pts/ S+ : : python /opt/cloudera/parcels/CLABS_ root ? Ss : : sshd: root@notty root ? Ssl Mar06 : /usr/libexec/packagekitd root ? Ssl Mar06 : /usr/sbin/rsyslogd -n gnome-i+ ? Sl Mar06 : /usr/libexec/goa-identity-service root ? Ssl Mar06 : /usr/libexec/upowerd root ? S<Ls Mar06 : /usr/sbin/iscsid root ? Ss Mar06 : /usr/lib/systemd/systemd --switched gnome-i+ ? Sl Mar06 : /usr/libexec/ibus-dconf root ? Ss : : sshd: root@pts/ root ? Ss : : sshd: root@pts/ root ? Ss : : sshd: root@pts/ root ? Ss : : sshd: root@pts/ hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc root ? Sl Mar06 : gdm-session-worker [pam/gdm-launch- hue ? Sl Mar13 : /usr/sbin/httpd -f /run/cloudera-sc hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc root ? Ssl Mar06 : /usr/sbin/ModemManager gnome-i+ ? Sl Mar06 : gnome-keyring-daemon --unlock hue ? Sl Mar12 : /usr/sbin/httpd -f /run/cloudera-sc root ? Ss Mar06 : /usr/sbin/abrtd -d -s hue ? S Mar12 : /usr/sbin/httpd -f /run/cloudera-sc gnome-i+ ? Sl Mar06 : /usr/libexec/gvfsd gnome-i+ ? Sl Mar06 : /usr/libexec/gvfs-afc-volume-monito gnome-i+ ? Sl Mar06 : /usr/libexec/gvfs-udisks2-volume-mo root ? Ssl Mar06 : /usr/lib64/realmd/realmd root ? Ss Mar06 : /usr/bin/abrt-watch-log -F BUG: WAR root ? Ss Mar06 : /usr/bin/abrt-watch-log -F Backtrac apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr08 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND apache ? S Apr07 : /usr/sbin/httpd -DFOREGROUND
执行命令 jps ,查看JVM中运行的进程:
[root@node1 ~]# jps Bootstrap SqlLine HistoryServer Main RESTServer HMaster ResourceManager RunJar Application Jps JobHistoryServer NameNode
执行命令 jmap -heap 31262 ,查看NameNode进程在JVM中的运行情况,返回如下信息:
[root@node1 ~]# jmap -heap
Attaching to process ID , please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11
using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC
Heap Configuration:
MinHeapFreeRatio =
MaxHeapFreeRatio =
MaxHeapSize = (.0MB)
NewSize = (.3125MB)
MaxNewSize = (.3125MB)
OldSize = (.6875MB)
NewRatio =
SurvivorRatio =
MetaspaceSize = (.796875MB)
CompressedClassSpaceSize = (.0MB)
MaxMetaspaceSize = MB
G1HeapRegionSize = (.0MB)
Heap Usage:
New Generation (Eden + Survivor Space):
capacity = (.8125MB)
used = (.81820678710938MB)
(.9942932128906MB)
9.913490201890799% used
Eden Space:
capacity = (.3125MB)
used = (.02981567382812MB)
(.2826843261719MB)
10.988596731597243% used
From Space:
capacity = (.5MB)
used = (.78839111328125MB)
(.71160888671875MB)
1.3101766397664836% used
To Space:
capacity = (.5MB)
used = (.0MB)
(.5MB)
0.0% used
concurrent mark-sweep generation:
capacity = (.6875MB)
used = (.6791000366211MB)
(.008399963379MB)
2.661567829955683% used
interned Strings occupying bytes.
修改上一次测试的参数,减少占用的资源,执行命令:
hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred --rows= --presplit= sequentialWrite
在这个测试中,把PE模式设为了非MapReduuce(--nomapred),即采用起线程的形式。跑的命令是sequentialWrite,即顺序写入、后面跟的10代表起了10个线程来做写入。--rows=1000 代表每个线程会写入1000行数据。presplit,表的预分裂region个数,在做性能测试时一定要设置region个数,不然所有的读写会落在一个region上,严重影响性能。PE工具的所有的输出都会直接写到LOG文件,LOG的位置需要参照HBase的设置。运行结束后,PE会分别打出每个线程的延迟状况。如下面是其中一个线程的结果:
// :: INFO hbase.PerformanceEvaluation: Latency (us) : mean=.9th=.99th=.999th=347.00 // :: INFO hbase.PerformanceEvaluation: Num measures (latency) : // :: INFO hbase.PerformanceEvaluation: Mean = 56.74 Min = 8.00 Max = 347.00 StdDev = 84.51 50th = 25.00 75th = 35.75 95th = 283.00 99th = 305.98 .9th = 346.99 .99th = 347.00 .999th = 347.00 // :: INFO hbase.PerformanceEvaluation: ValueSize (bytes) : mean=.9th=.99th=.999th=0.00 // :: INFO hbase.PerformanceEvaluation: Num measures (ValueSize): // :: INFO hbase.PerformanceEvaluation: Mean = 0.00 Min = 0.00 Max = 0.00 StdDev = 0.00 50th = 0.00 75th = 0.00 95th = 0.00 99th = 0.00 .9th = 0.00 .99th = 0.00 .999th = 0.00 // :: INFO hbase.PerformanceEvaluation: Test : SequentialWriteTest, Thread : TestClient- // :: INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x1696fc9820c336b
以及如下信息:
// :: INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x1696fc9820c3368 // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (2.94 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO zookeeper.ZooKeeper: Session: 0x1696fc9820c3368 closed // :: INFO zookeeper.ClientCnxn: EventThread shut down // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (3.03 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (2.97 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (2.93 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (2.94 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO hbase.PerformanceEvaluation: Finished class org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest rows (2.87 MB/s) // :: INFO hbase.PerformanceEvaluation: Finished TestClient- rows // :: INFO hbase.PerformanceEvaluation: [SequentialWriteTest] Summary of timings (ms): [, , , , , , , , , ] // :: INFO hbase.PerformanceEvaluation: [SequentialWriteTest] Min: 314ms Max: 342ms Avg: 328ms // :: INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x3696fc9821c31b9 // :: INFO zookeeper.ZooKeeper: Session: 0x3696fc9821c31b9 closed // :: INFO zookeeper.ClientCnxn: EventThread shut down
HBase基准测试的更多相关文章
- HBase 管理,性能调优
设置 Hadoop 来扩展磁盘 I/O 现代服务器通常有多个磁盘硬件来提供大存储能力.这些磁盘通常配置成 RAID 阵列,作为它们的出厂设置.这在很多情况下是有益的,但对 Hadoop 却不是. Ha ...
- 公司HBase基准性能测试之准备篇
本次测试主要评估线上HBase的整体性能,量化当前HBase的性能指标,对各种场景下HBase性能表现进行评估,为业务应用提供参考. 测试环境 测试环境包括测试过程中HBase集群的拓扑结构.以及需要 ...
- HBase基准性能测试报告
作者:范欣欣 本次测试主要评估线上HBase的整体性能,量化当前HBase的性能指标,对各种场景下HBase性能表现进行评估,为业务应用提供参考.本篇文章主要介绍此次测试的基本条件,HBase在各种测 ...
- Hadoop基准测试(二)
Hadoop Examples 除了<Hadoop基准测试(一)>提到的测试,Hadoop还自带了一些例子,比如WordCount和TeraSort,这些例子在hadoop-example ...
- 去 HBase,Kylin on Parquet 性能表现如何?
Kylin on HBase 方案经过长时间的发展已经比较成熟,但也存在着局限性,因此,Kyligence 推出了 Kylin on Parquet 方案(了解详情戳此处).通过标准数据集测试,与仍采 ...
- 探究Go-YCSB做数据库基准测试
本篇文章开篇会介绍一下Go-YCSB是如何使用,然后按照惯例会分析一下它是如何做基准测试,看看它有什么优缺点. 转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.l ...
- Mapreduce的文件和hbase共同输入
Mapreduce的文件和hbase共同输入 package duogemap; import java.io.IOException; import org.apache.hadoop.co ...
- Redis/HBase/Tair比较
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式 支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...
- 一篇文章看懂TPCx-BB(大数据基准测试工具)源码
TPCx-BB是大数据基准测试工具,它通过模拟零售商的30个应用场景,执行30个查询来衡量基于Hadoop的大数据系统的包括硬件和软件的性能.其中一些场景还用到了机器学习算法(聚类.线性回归等).为了 ...
随机推荐
- Plastic Sprayers Manufacturer - The Basic Components Of A Spray Bottle
From cleaning to personal beauty, many people use spray bottles every day, but few people know how t ...
- 使刚编辑的vim编辑器配置文件立即生效(实为自动生效)
简单的说,在虚拟机下安装的Centos6.3系统后,默认的是没有vim编辑器的配置文件,此时如果有必要,可以按照自己的习惯定制或配置自己的vim编辑器: 1,如果你是root权限,进入root目录下: ...
- 实时监听 mysql 操作,Linux 版
效果 场景:某数据库新增了某条记录,服务器可以监听到变化的数据与操作,如 增加一条记录: id = 1009,name=''test,number = 11 服务器监听结果: 实现过程 测试过程:数据 ...
- tf.app.run()的作用
tf.app.run() 如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test) 如果你的代码中的入口函数叫main(), ...
- 对FPM 模块进行参数优化!
Nginx 的 PHP 解析功能实现如果是交由 FPM 处理的,为了提高 PHP 的处理速度,可对FPM 模块进行参数跳转.FPM 优化参数:pm 使用哪种方式启动 fpm 进程,可以说 static ...
- Android 华为推送库下载不了
问题:华为库下载不了,导致gradle同步失败 解决: 去掉华为推送在线下载相关代码,将在线下载修改为离线加载aar库 1.通过Maven 仓库离线包下载地址下载关于推送的包: http://deve ...
- HA: Armour-Write-up
下载地址:点我 bilibili:点我 信息收集 nmap扫存活找到IP为:192.168.116.140 ➜ ~ nmap -sn 192.168.116.1/24 Starting Nmap 7. ...
- static关键字的作用是什么?
static的作用:常用来修饰变量. 全局变量被static修饰后,就称之为静态全局变量:局部变量被static修饰后,就称之为静态局部变量.统称为静态变量. 如果需要进一步解释下面的现象,可以了解i ...
- C++:面向对象的相关概念
对象: 一般意义上的对象:是现实世界中一个实际存在的事物 面向对象方法中的对象:是系统中用来描述客观事物的一个实体 抽象与分类: 分类所依据的原则:抽象 抽象出同一类对象的共同属性和行为,形成类 类与 ...
- python 基础之字符串方法
字符串 print('chenxi'*8) 测试 D:\python\python.exe D:/untitled/dir/for.py chenxichenxichenxichenxichenxic ...