目录:

文章目录

  • 一、下载jmeter安装包
  • 二、分布式环境部署前准备
    • 1. 找到下行代码,修改fales为true同时取消注释(#)
    • 2. 修改输出报告仪表盘的文本,修改为以下样式:
    • 3. 分布式环境的话在master需要将slaves的ip地址输入
    • 4. 端口不建议做修改
  • 三、环境部署
    • 1. 检验java环境安装
      • java环境未安装
        • 1.首先查看yum库中都有哪些jdk版本
        • 2.选择版本,进行安装
        • 3.设置java环境变量
        • 4.验证
        • java环境安装之后检验jmeter能否在linux环境下运行,执行以下语句:
    • 2.jmeter环境变量添加
    • 3.防火墙
    • 4.内核参数修改
  • 四、调试jmeter、jmeter-server
    • 1.jmeter no data to display
    • 2.未禁用ssl报错
    • 3.jvm堆过小
    • 4.非java-1.8 报错
    • 5. jmeter-server运行报错
  • 五、检验jmeter能否运行
  • 六、运行jmeter压测
    • 1、无头模式下运行脚本
    • 2、带输出结果的测试

一、下载jmeter安装包

官网下载:https://jmeter.apache.org/download_jmeter.cgi

  1. 配置插件:plugins manager 【参考网站:https://jmeter-plugins.org/install/Install/】
  2. 把jar包放入你的JMeter根目录下的 lib/ext 目录
  3. 运行jmeter,在选项中即可看到插件管理工具

二、分布式环境部署前准备

【打开bin目录下jmeter.properties】

1. 找到下行代码,修改fales为true同时取消注释(#)

【jmeter分布式存在ssl加密连接,关闭连接后可以不用在创建秘钥,详见:https://jmeter.apache.org/usermanual/remote-test.html#setup_ssl】

# server.rmi.ssl.disable=fales

修改后如下

server.rmi.ssl.disable=true

如果没有修改该项,slaves运行分布式服务时会出现报错

[root@localhost bin]# ./jmeter-serverServer failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

2. 修改输出报告仪表盘的文本,修改为以下样式:

如果想要一个漂亮的图表数据展示的话,需要用到以下方式,当然运行的话需要在命令模式下进行:

打开配置文件,以下数据可以直接覆盖原数据:
[root@localhost bin]# vim jmeter.properties
# This section helps determine how result data will be saved.
# The commented out values are the defaults.# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
jmeter.save.saveservice.output_format=csv# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=all
#
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=true
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

3. 分布式环境的话在master需要将slaves的ip地址输入

remote_hosts=127.0.0.1     #原始文本,master不建议施加压力,因为调用slaves会占用端口。

4. 端口不建议做修改

在运行slaves上运行jmeter-server时会存在端口问题,第一次运行报错后需要检查端口1099是否被占用,可用

netstat -tunlp |grep 1099

查看,也可以用

ps aux | grep jmeter-server

查看正在运行中的server,如存在全部 kill -9 杀掉。
快速杀死jmeter-server后台程序命令:

添加至xshell快速命令效果更佳哦!!!

kill -9 `ps aux|grep jmeter-server|grep -v "grep"|awk '{print $2}'`

三、环境部署

上传文件也是有很多种方法的呢 (`・ω・´)

将修改后的jmeter包压缩上传至服务器,能直接传输可以运用xftp等工具进行。

scp 服务器间的传输方式:

scp root@172.17.58.4:/root/test/api2.0.jmx /home/Androidmov/test/apache-jmeter-4.0
# scp master用户名 @master内网地址:压缩包根目录 slaves保存跟路径

将文件传输至服务器中,在现网环境下会有4A权限限制,可以在ssh登陆服务器中后再运行命令

rz -e   #上传文件,回车后会出现上传窗口
sz      #下载文件,后面需要跟下载文件名,然后回车,选择下载目标目录

上传完包之后,那么接下来就是对jmeter运行环境的准备了哦

解压包,jmeter

上传了当然就需要将jmeter解压出来

unzip apache-jmeter-4.0.zip解压会在同目录下自动创建一个 apache-jmeter-4.0 文件夹

这样前置的准备工作就完成了,下面进入到环境的调试阶段。

1. 检验java环境安装

> java> javac> java -versionjmeter4.0需要java jdk 1.8版本,如下为示例:
[root@otvcloud ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

非JDK1.8报错

[root@AD-Client-Resource-3 bin]# ./jmeter-server
Unrecognized VM option 'MaxMetaspaceSize=256m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

java环境未安装

用yum安装JDK(CentOS)
1.首先查看yum库中都有哪些jdk版本
[root@localhost ~]# yum search java|grep jdkldapjdk-javadoc.x86_64 : Javadoc for ldapjdk
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
ldapjdk.x86_64 : The Mozilla LDAP Java SDK
2.选择版本,进行安装

我们这里安装1.8版本,安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64

[root@localhost ~]# yum install java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64
3.设置java环境变量
[root@localhost ~]# vi /etc/profile

添加如下内容:[此处java版本需要根据实际版本进行控制,后缀jre需要注意,如果你下载的java目录下没有,不用添加]

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效:

[root@localhost java]# source /etc/profile
4.验证
注:因为采用yum安装jdk,系统考虑到多版本的问题,会用alternatives进行版本控制。开始,相应版本的jdk安装在/usr/lib/jvm/之后,会在alternatives中注册,在/etc/alternatives目录下会产生一些链接到/usr/lib/jvm/中刚安装好的jdk版本。
在/usr/bin下面会有链接到/etc/alternatives的相应的文件。比如,/usr/bin下面会有一个链接文件java的映射关系如下:/usr/bin/java->/etc/alternatives/java
/etc/alternatives/java-> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre/bin/java这样,java命令不用设置环境变量,就可以正常运行了。但如果对于tomcat或其他软件来说还是要设置环境变量。
同样,如果安装新的版本jdk,就会重新链接到最新安装的jdk版本。当然,也可以使用alternatives修改所要使用的版本。
具体方法可参照:《使用Linux的alternatives管理多版本的软件》
java环境安装之后检验jmeter能否在linux环境下运行,执行以下语句:
[root@localhost bin]##jmeter -v               # 执行成功会出现jmeter标志如果报错:
bash: /home/Androidmov/apache-jmeter-4.0/bin/jmeter: 权限不够
应当修改jmeter权限:
[root@localhost bin]# chmod 777 jmeter
# 同样适用于jmeter-server

2.jmeter环境变量添加

在linux中添加环境变量有两种,一种是全局变量[/etc/profile],另一种是当前用户环境变量[ /.bashrc],对于测试环境当然是放在全局变量中最好不过了,但是对于现网而言,最好是放在临时用户的环境变量中。【权限越大风险越大】

[root@localhost bin]# vim  ~/.bashrc
[root@localhost bin]# vim  /etc/profile

粘贴以下内容,注意修改jmeter路径

export JMETER_HOME=/root/apache-jmeter-4.0
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

修改即时生效:

# 指定用户:
[root@localhost bin]# source ~/.bashrc
# 系统变量:
[root@localhost bin]# source /etc/profile

3.防火墙

1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off 2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

4.内核参数修改

【以下方法同样适用于对服务器进行性能优化,详细可参考:http://blog.51cto.com/zhangziqiang/500204】

在施加压力的过程中jmeter启动的java进程会消耗大量的端口资源,如果不能即时的释放,就会使jmeter无法发出新的请求,这时jmeter就会报错。这个时候我们可以考虑优化TCP/IP 的内核参数,来及时将TIME_WAIT状态的端口清理掉。

查看当前TCP/IP连接的状态和对应的个数:

netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a, s[a]}'

这个命令会显示出类似下面的结果:

TIME_WAIT 63648
FIN_WAIT1 3
FIN_WAIT2 4
ESTABLISHED 184
LISTEN 17

这个命令同样可以在压测过程中去实时查看应用服务器与数据库服务器的连接状态,更有利于我们分析和判断系统当前的运行情况。

查看当前内存参数:
[root@localhost bin]# sysctl -pnet.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

上面最后这三条以及 net.ipv4.tcp_syncookies 就是压力机需要调整的参数。

简单说明一下:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout 修改系统默认的 TIMEOUT 时间。
修改参数:
[root@localhost bin]# vim /etc/sysctl.conf
输入命令,参数生效:
[root@localhost bin]# /sbin/sysctl -p

四、调试jmeter、jmeter-server

试着运行jmeter,以及jmeter-server,进行正式压测前的调试工作;

  1. jmeter无头模式正常运行;
  2. jmeter并发量大情况下压力机能保证端口的供应;
  3. master正常调用slaves对目标服务器施加压力;
  4. 报告仪表盘数据正常

1.jmeter no data to display

这个报错在报告仪表盘文件夹中,导出后,打开网页出现 jmeter no data to display
就可以使用以下方法解决。

在服务器上的 /bin/user.properties 加入如下参数:

jmeter.save.saveservice.output_format=xmljmeter.save.saveservice.response_data=truejmeter.save.saveservice.samplerData=truejmeter.save.saveservice.requestHeaders=truejmeter.save.saveservice.url=truejmeter.save.saveservice.responseHeaders=true

2.未禁用ssl报错

[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
试运行报错:
[root@AD-Manage-Log-SP bin]# jmeter -n -t test/search.jmx -r
Creating summariser <summary>
Created the tree successfully using test/search.jmx
Configuring remote engine: 10.255.50.12
Exception creating connection to: 10.255.50.12; nested exception is:java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
Failed to configure 10.255.50.12
Configuring remote engine: 10.255.50.62
Exception creating connection to: 10.255.50.62; nested exception is:java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
Failed to configure 10.255.50.62
Stopping remote engines
Remote engines have been stopped
Error in NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured:[10.255.50.12, 10.255.50.62]

3.jvm堆过小

[root@iZ949uw2xehZ bin]# ./jmeter
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/jmeter/apache-jmeter-4.0/bin/hs_err_pid5855.log
java.lang.OutOfMemoryError:gc overhead limit exceeded。

jmeter使用注意事项

1、单击压测过程中使用过多的线程,官网建议1000-2000。具体看机器的配置和启动应用的情况。(A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.)(官网:http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html)2、监听器里面配置写入到文件,不写入到文件的话所用监听结果存放在内存。还要注意不要使用“察看结果树”监听器。3、运行压测过程中使用no-gui模式,不要使用界面压测,使用jmeter -n -t这样的命令去运行。

解决办法:

编辑jmeter   # linux环境下非jmeter.sh !!!
搜索 : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"
改变初始堆内存和最大堆内存1. 修改默认堆内存大小
#默认的
HEAP="-Xms512m -Xmx512m" ,
#修改后
HEAP="-Xms1024m -Xmx1024m"2. 增加jmx端口,用于监控jvm 堆内存
# 可以不做修改
在尾部加入:   JMX="-Dcom.sun.management.jmxremote -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote
.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.172.47"修改ARGS变量,加入$JMX,注意空格
ARGS=" $SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $EVACUATION $PERM $JMX"

4.非java-1.8 报错

[root@AD-Client-Resource-3 bin]# ./jmeter-server
Unrecognized VM option 'MaxMetaspaceSize=256m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
解决:先查看java版本如果是1.7请先升级至1.8,
原因:jmeter4.0需要在8以上才能运行。

5. jmeter-server运行报错

[root@EPG-Test bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[222.221.5.252:41914](local),objID:[34f0793b:1671bcd6f7b:-7fff, 1060029434609099351]]]
Problem creating registry: java.rmi.server.ExportException: Port already in use: 1099; nested exception is:java.net.BindException: Address already in use (Bind failed)
Continuing...
原因:
在运行slaves上运行jmeter-server时会存在端口问题,第一次运行报错后需要检查端口1099是否被占用。

五、检验jmeter能否运行

检查是否可以正常运行

[hnpt@Wechat-MongDB-Slave bin]$ ./bin/jmeter -v_    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____/ \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \/ _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |/ ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 4.0 r1823414Copyright (c) 1999-2018 The Apache Software Foundation

1、如果运维创建了临时账号给你使用,在临时账户中需要给权限给jmeter,否则会抛错。

chown -R  hnpt:hnpt test/
test文件夹下所有文件一次性赋权命令执行前:
-rwxrwxrwx 1 root root  8162 Feb  7  2018 jmeter执行后:
-rwxrwxrwx 1 hnpt hnpt  8162 Feb  7  2018 jmeter

六、运行jmeter压测

我们准备工作做好了之后就进入到我们正式压测的过程中了,在linux环境下运行jmeter脚本。

1、无头模式下运行脚本

无头模式,又称非界面模式,因为jmeter在界面模式下运行会占用很大一部分资源,同时如果开启了查看结果的话,更会使得这一现象变得严重,所有我们的正式压测会采用无头模式进行。

第一种执行方式一般用于验证脚本,不需要任何输出,测试ip,port是否正确,也用于验证测试。

jmeter -n -t [jmx脚本位置]-n  即为无头模式命令
-t  为执行压测脚本

命令模式下运行jmeter脚本,会在屏幕上显示当前的运行情况,每30秒打印一次数据,但是会默认存为result.jtl在bin目录下,所有需要对其进行指导目录和名称。

jmeter -n -t [.jmx脚本位置] -l [.jtl文件目录]-l 为输出测试结果

jtl文件格式可以直接导出值Windows系统,然后在jmeter界面中新建一个监听器就可以打开查看。当然也可以保存为csv格式,导出进行查阅。

在压测时间长,并发量大的情况下不建议这样做,因为jtl会有几百兆甚至于几个G的内容。同时jtl格式文件也是后面转换仪表盘的重要前提。

建议: 可以在bin目录下新建一个test文件,将输出放在该文件夹中,包括后面的仪表盘空白文件夹,创建jtl文件和空白文件夹可以以中间带下划线的方式,这样可以有效避免误操作,在运行一次脚本后可以通过执行删除命令清理环境,方便继续执行压测。

rm -rf test/*_*

2、带输出结果的测试

jmeter -n -t 【Jmx脚本位置】-r -l 【中间文件result.jtl位置】-e -o 【报告指定文件夹】# -r    为执行全部slaves,如果换成-R 后面需要跟ip地址用逗号隔开

注意: 不写位置的化中间文件默认生成在bin下,下次执行不能覆盖,需要先删除result.jtl;报告指定文件夹同理,需要保证文件夹为空

以上就为本次对于jmeter的简单总结,谢谢!!!

jmeter性能测试实战——基础篇相关推荐

  1. Xamarin.Forms开发实战基础篇大学霸内部资料

    Xamarin.Forms开发实战基础篇大学霸内部资料 介绍:本教程是国内第一本Xamarin.Forms开发专向教程.本教程针对Xamarin.Forms初学用户,全面细致的讲解Xmarin.For ...

  2. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  3. ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性...

    ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性 <%@ Page Language="C#" Auto ...

  4. Nginx实战基础篇一 源码包编译安装部署web服务器

    Nginx实战基础篇一 源码包编译安装部署web服务器 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览.表演.放映.广播或通 ...

  5. ASP.NET Google Maps Javascript API V3 实战基础篇一检测用户位置

    ASP.NET Google Maps Javascript API V3 实战基础篇一检测用户位置 对于一些基本的东西,google maps JavaScript api v3 文档已经讲解得足够 ...

  6. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  7. K8S实战基础篇:一文带你深入了解K8S实战部署SpringBoot项目

    K8S实战基础篇:一文带你深入了解K8S实战部署SpringBoot项目 1.前言 2.简介 2.1.为什么写这篇文章 2.2.需求描述 2.3.需求分析 3. 部署实战 3.1 环境准备 3.2 i ...

  8. SpringBoot2零基础到项目实战-基础篇

    springboot2零基础到项目实战-基础篇 课程内容说明 课程单元 学习目标 基础篇 能够创建SpringBoot工程 基于SpringBoot实现ssm/ssmp整合 应用篇 能够掌握Sprin ...

  9. Lua与c++交互实战基础篇-夏曹俊-专题视频课程

    Lua与c++交互实战基础篇-10018人已学习 课程介绍         本课程从实战角度讲解了流行的高性能脚本Lua与c++的联合开发,这套方案已经被大量的对性能由要求的系统使用,成为了高性能脚本 ...

  10. Jmeter 性能测试的基础了解

    最近项目上在对网站和wap做性能优化(目标是支持200个并发,在登录和课程详情页的相关操作),借此机会学习性能测试 1.了解性能测试的基础知识 2.性能测试的流程: 3.怎么样录制脚本: 4.怎样配置 ...

最新文章

  1. 高效工作,分享几个实用的小诀窍,很多人已经悄悄用上了
  2. android 自定义event,Android运用onTouchEvent自定义滑动布局
  3. 【错误记录】SeeMusic 内存错误 ( 内存占用率 100 % | 清除系统设置信息 )
  4. Socket连接外网的思考
  5. 小蚂蚁学习Redis笔记(13)——Redis之phpredis的安装
  6. OJ1068: 二进制数(C语言)
  7. Hackerlands:城市Hackerspaces的农村版本
  8. 360软件管家独立版_【软件】360全家桶独立版
  9. ECMAScript 6 基础入门
  10. android如何查看cpu的占用率和内存泄漏
  11. asp.net使用httpModule来实现一个反向代理
  12. protobuf与protoc
  13. 到底要不要去外包公司?这篇带你全面了解外包那些坑!
  14. 杀毒软件简介:杀毒软件原理,教你如何选择一个好的杀毒软件
  15. ionic学习(十一):页面下拉刷新(Refresher)
  16. JQuery(js辅助开发类库)
  17. 重读《从菜鸟到测试架构师》-- 从专家到高手
  18. 来听听外国UX设计师的22句话
  19. 【毕业设计】基于云平台的火灾报警器 - stm32 物联网 单片机 OneNET云平台
  20. Python 用于电路课程

热门文章

  1. php function overridden,php在函数外声明global变量有什么用?
  2. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t数据类型详解
  3. 计算机扫描服务开启,win7系统,电脑打印机右键中无扫描选项(WIA已启动)
  4. 从IRQ到IRQL(PIC版)
  5. android输入法剪切板历史记录,干货分享 讯飞输入法剪切板使用技巧知多少
  6. Windows_Server_2016 远程桌面120天授权过期
  7. 初步学习CRM的感想
  8. 资料:《大学英语》精读修订版(全六册)原文及全文翻译
  9. 电子技术基础——基本共射放大电路
  10. Perl的一些初级练习题