网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。
性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍ab。
ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。 官方参数文档
一、ab的原理
ab是apachebench命令的缩写。
ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
二、ab的安装
ab的安装非常简单,如果是源码安装apache的话,那就更简单了。apache安装完毕后ab命令存放在apache安装目录的bin目录下。如下:
/usr/local /apache2/bin
如果apache 是通过yum的RPM包方式安装的话,ab命令默认存放在/usr/bin目录下。如下:
which ab
注意:如果不想安装apache但是又想使用ab命令的话,我们可以直接安装apache的工具包httpd-tools。如下:
yum -y install httpd-tools
查看ab是否安装成功,可以切换到上述目录下,使用ab –V命令进行检测。如下:
ab -V
如果ab安装成功,通过ab –V命令则会显示ab的相迎版本,如上图示。
注意以上是在linux平台下进行安装的,如果是windows平台下,我们也可以下载对应的apache版本进行安装。
目前apache最新版2.4.10,apache官网已经没有windows下载的版本。
三、ab参数说明
有关ab命令的使用,我们可以通过帮助命令进行查看。如下:
- -
下面我们对这些参数,进行相关说明。如下:
-n 在测试会话中所执行的请求个数。默认时,仅执行一个请求。
-c 一次产生的请求个数。默认是一次一个。
-t 测试所进行的最大秒数。其内部隐含值是-n 50000 ,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p 包含了需要POST 的数据的文件。
-P 对一个中转代理提供BASIC 认证信任。用户名和密码由一个: 隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401 认证需求代码),此字符串都会被发送。
-T POST 数据所使用的Content -type头信息。
-v 设置显示信息的详细程度-4 或更大值会显示头信息,3 或更大值可以显示响应代码(404 ,200 等),2 或更大值可以显示警告和其他信息。
-V 显示版本号并退出。
-w 以HTML 表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i 执行HEAD 请求,而不是GET 。
-x 设置属性的字符串。
-X 对请求使用代理服务器。
-y 设置属性的字符串。
-z 设置 属性的字符串。
-C 对请求附加一个Cookie : 行。其典型形式是name=value的一个参数对,此参数可以重复。
-H 对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit" )。
-A 对服务器提供BASIC 认证信任。用户名和密码由一个: 隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401 认证需求代码),此字符串都会被发送。
-h 显示使用方法。
-d 不显示"percentage served within XX [ms] table" 的消息(为以前的版本提供支持)。
-e 产生一个以逗号分隔的(CSV )文件,其中包含了处理每个相应百分比的请求所需要(从1 %到100 %)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot' 格式更有用。
-g 把所有测试结果写入一个'gnuplot' 或者TSV (以Tab 分隔的)文件。此文件可以方便地导入到Gnuplot ,IDL ,Mathematica ,Igor 甚至Excel 中。其中的第一行为标题。
-i 执行HEAD 请求,而不是GET 。
-k 启用HTTP KeepAlive 功能,即在一个HTTP 会话中执行多个请求。默认时,不启用KeepAlive 功能。
-q 如果处理的请求数大于150 ,ab每处理大约10 %或者100 个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。
四、ab性能指标
在进行性能测试过程中有几个指标比较重要:
1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
记住:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即
Request per second=Complete requests/Time taken for tests
必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。
2、并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
3、并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。
4、用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:
Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5、服务器平均请求等待时间(Time per request:across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间/总请求数,即:
Time taken for/testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也等于用户平均请求等待时间/并发用户数,即
Time per request/Concurrency Level
五、ab实际使用
[root@centos7 ~]#ab -c 10 -n 100 http://a.ilanni.com/index.php
-c 10 表示并发用户数为10
-n 100 表示请求总数为100
http://a.ilanni .com /index.php 表示请求的目标URL
这行表示同时处理100 个请求并运行10 次index.php 文件。
[root@centos7 ~]#ab -c 10 -n 100 http://a.ilanni.com/index.php
Benchmarking 47.93 .96 .25 (be patient).....done
Server Software: Apache/2.4 .29 ##apache版本
Server Hostname: ip地址 ##请求的机子
Server Port: 80 ##请求端口
Document Path: index.php
Document Length: 18483 bytes ##页面长度
Concurrency Level: 10 ##并发数
Time taken for tests: 25.343 seconds ##共使用了多少时间
Complete requests: 100 ##请求数
Failed requests: 11 ##失败请求
(Connect: 0 , Receive: 0 , Length: 11 , Exceptions: 0 )
Total transferred: 1873511 bytes ##总共传输字节数,包含http的头信息等
HTML transferred: 1848311 bytes ##html字节数,实际的页面传递字节数
Requests per second: 3.95 [#/sec] (mean) ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量
Time per request: 2534.265 [ms] (mean) ##用户平均请求等待时间
Time per request: 253.426 [ms] (mean, across all concurrent requests) ##服务器平均处理时间,
Transfer rate: 72.19 [Kbytes/sec ] received ##每秒获取的数据长度
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 8 3.9 10 13
Processing: 1222 2453 322.6 2520 3436
Waiting: 1175 2385 320.4 2452 3372
Total: 1222 2461 322.5 2528 3444
Percentage of the requests served within a certain time (ms)
50 % 2528 ## 50%的请求在25ms内返回
66 % 2534 ## 60%的请求在26ms内返回
75 % 2538
80 % 2539
90 % 2545
95 % 2556
98 % 3395
99 % 3444
100 % 3444 (longest request)
apache的ab工具也算是一种ddos攻击工具 nginx吞吐率就是要比apache高。 根据前面我们提到的性能指标Requests per second吞吐率越高,服务器性能越好。
你可能感兴趣的:(linux命令)
[ Linux 命令基础 ] Linux 命令大全-命令前置知识-系统管理-文件和目录管理-文本处理命令-网络管理命令-权限和用户管理命令-磁盘管理命令
_PowerShell
shell脚本入门到精通 Linux 命令大全 linux命令前置知识 linux系统管理 linux文件和目录管理 linux文本处理命令 linux网络管理命令 linux权限和用户管理命令
博主介绍博主介绍:大家好,我是_PowerShell,很高兴认识大家~✨主攻领域:【渗透领域】【数据通信】【通讯安全】【web安全】【面试分析】点赞➕评论➕收藏==养成习惯(一键三连)欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋作者水平有限,欢迎各位大佬指点,相互学习进步!我们搞网络安全需要经常用到linux命令,比用拿到linux的shell,需要使用linux命令。再比如sh脚本,我们经常
Linux学习1_Linux命令及英文全称
Wang_Zhenwei
—Linux 转载 linux
LinuxCommandreferences(命令全称,方便记忆)aliasCreateyourownnameforacommandarchprintmachinearchitectureashashcommandinterpreter(shell)awk(gawk)patternscanningandprocessinglanguagebasenameRemovedirectoryandsuff
解决Ubuntu报错 E: Unable to locate package yum
SH-ke
ubuntu yum apt
开门见山,Ubuntu的包管理工具是apt-get,所以不必再安装yum。如果要安装其他包需要使用apt-get命令。#这里以locate命令为例sudoapt-getinstallmlocate下文就是问题解决的全过程了。1.报错E:Unabletolocatepackageyum我在学习Linux命令的时候需要使用locate命令,但是Ubuntu的系统里没有安装locate命令。根据弹幕的指
常用的git和linux命令有哪些?
海姐软件测试
git linux elasticsearch 大数据 搜索引擎
一、Git常用命令1.仓库与基础操作命令作用常用参数/示例gitinit初始化新仓库gitinitgitclone克隆远程仓库gitclonehttps://github.com/user/repo.gitgitstatus查看仓库状态gitstatus-s(简洁模式)gitadd添加文件到暂存区gitadd.(添加所有文件)gitaddfile1.txtgitcommit提交代码gitcommi
linux命令touch意思,Linux touch命令的用法
tegrodikk
linux命令touch意思
touch命令不仅可以创建文件(空文件或多个文件),还可以修改文件的时间参数。在Linux系统中,每个文件有3个时间参数,分别是文件的访问时间、数据的修改时间以及状态的修改时间,它们的含义分别为:访问时间(atime):如果文件的内容被读取,紧接着访问时间就会自动更新。数据修改时间(mtime):当文件的数据发生改变时,该文件的数据修改时间就会随着做出改变。状态修改时间(ctime):当文件的状态
Linux命令touch和mkdir的区别
Easy_Lee_willpower
软件测试 linux 服务器
mkdir文件夹c文件夹d文件夹e:创建文件夹/目录c、d、e,创建的目录是并列关系filec可以查看文件夹c的属性,此时显示directory,表示c是一个文件夹mkdir文件夹x/文件夹y,创建嵌套目录x/ytouch文件名a文件名b。。。:创建一个或多个文件filea可以查看文档a的属性,此时显示empty,表示a是空白文件文件和目录的区别:目录可以嵌套,文件不能嵌套文件(例子:一个exce
DBA(数据库管理员)常用的 Linux 命令
笑远
dba linux 数据库
DBA(数据库管理员)常用的Linux命令作为数据库管理员(DBA),熟练掌握Linux命令对于日常的数据库管理、维护和故障排除至关重要。以下是分类整理的一些常用Linux命令,涵盖文件管理、进程管理、性能监控、网络管理等多个方面,帮助DBAs高效地完成工作。1.文件和目录管理列出文件和目录ls:列出目录内容。ls-l:以长格式显示详细信息。ls-a:显示所有文件,包括隐藏文件。ls-la/hom
Linux命令学习使用列表
祢真伟大
Linux linux 学习 运维
Linux命令学习使用列表1系统启动相关2系统网络相关3系统磁盘相关4系统定时任务5系统进程监控1系统启动相关 1.1麒麟V10sp3修改选择默认启动项2系统网络相关 2.1LinuxIP配置 2.2ping监测网络通信情况3系统磁盘相关4系统定时任务5系统进程监控 5.1Linux定时监测数据库服务若掉了则启动数据库服务
k8s系统学习路径
LCY133
kubernetes 学习 容器
学习Kubernetes(K8s)需要循序渐进,结合理论知识和实践操作。以下是学习Kubernetes的推荐步骤:1.先决条件•掌握容器基础:先学习Docker,理解容器化概念(镜像、容器、仓库)、Dockerfile编写和容器生命周期管理。•熟悉Linux基础:了解Linux命令行操作、网络、文件系统等。•了解云计算概念:如虚拟化、负载均衡、服务发现、分布式系统等。2.Kubernetes核心概
Linux命令学习笔记之 network NetworkManager
kfepiza
OS操作系统 Windows Linux 等 # Linux CentOS Ubuntu 等 linux 学习 centos
networkNetworkManager前言CentOS7最小安装下的测试220511心得:启动network能打开网络,关闭network能关闭网络启动NetworkManager能打开网络,关闭不会关闭网络在两者都启动的情况下,单停network会断网,单停NetworkManager不会一些摘抄前言这两个东西在centOS7最小安装无勾选附加时就存在Ubuntu20.04中只有Networ
Linux 命令学习记录
hxung
面试学习使用 linux 学习 运维
Linux命令详解与进阶指南Linux是一种广泛使用的开源操作系统,掌握Linux命令是开发者和系统管理员的必备技能。本文将详细介绍Linux的常用命令,并涵盖一些高级进阶技巧,帮助你更高效地使用Linux。目录基础命令文件与目录操作文本处理系统信息权限管理进阶命令进程管理网络操作磁盘管理Shell脚本高级技巧管道与重定向正则表达式任务调度性能监控案例实战日志分析自动化部署服务器监控基础命令文件与
解锁Linux命令行的终极指南:从日常操作到系统掌控
领码科技
技能篇 Linux命令 日常操作 系统管理 Shell脚本
摘要Linux操作系统凭借其开源、高效、稳定的特性,已成为开发者和运维工程师的核心工具。本文深度解析Linux命令的底层逻辑与实战技巧,涵盖文件管理、权限控制、进程监控、网络运维等高频场景,结合Shell脚本编写与正则表达式应用,助您实现从命令行基础到高阶系统管理的跃迁。精选80+核心指令详解,配合真实案例与避坑指南,让您轻松驾驭Linux系统的日常运维与深度优化。关键词:Linux命令、日常操作
Linux运维(三)Linux命令行操作:从菜鸟到高手
带上一无所知的我
linux 运维 服务器
Linux命令行操作:从菜鸟到高手引言Linux命令行是每个运维工程师和开发者的必备技能。无论是管理服务器、编写脚本,还是调试程序,命令行都能让你事半功倍。从“只会ls”的菜鸟到“命令行大神”,只需要掌握一些核心技巧。本文将带你一步步进阶,成为Linux命令行的高手!一、菜鸟阶段:从基本命令开始1.查看目录内容:lsls参数说明:-l:以长格式显示文件和目录的详细信息。-a:显示所有文件,包括隐藏
Linux基础——操作系统(OS)、操作系统内核(Kernel)和Shell
D3Zane
Linux基础 linux
文章目录前言一、操作系统(OS)和操作系统内核(Kernel)1.操作系统架构2.内核在操作系统中的具体位置二、了解Shell1.Shell是什么?2.Shell的类型3.Shell的功能?4.Shell的工作原理?5.Shell示例三、Linux命令的执行的过程(原理)总结前言首先,先向Linux创始人LinusTorvalds以及Linux的整个开源社区致敬,没有Linus的Linux内核,没
Linux和gcc/g++常用命令总结
石油人单挑所有
Linux系统编程 linux 运维 服务器 网络 数据库 ubuntu centos
目录Linux命令总结文件操作相关命令lscdpwdcpmvrmcatmkdirrmdirtouch文本处理操作命令grepawksed进程管理操作相关命令pstophtopkillpkillkillallchmodchown网络操作相关命令pingifconfignetstatsslsofcurlwgetssh端口操作相关命令nmap系统信息查看相关命令unamedfdufree查看CPU和内存
工作中常用的linux命令,Linux日常工作中比较实用的一些命令合集。
Wu Jerry
工作中常用的linux命令
系统uname-a查看内核/操作系统/CPU信息head-n1/etc/issue查看操作系统版本cat/proc/cpuinfo查看CPU信息hostname查看计算机名lsmod列出加载的内核模块env查看环境变量资源free-m查看内存使用量和交换区使用量df-h查看各分区使用情况du-sh查看指定目录的大小grepMemTotal/proc/meminfo查看内存总量grepMemFree
Linux 详细了解
ytdbc
linux
1.Linux命令行a.Linux命令行是Linux系统的一个核心组件,允许用户通过键盘输入命令来管理和操作系统,必须学习和掌握常用的Linux命令,才可以高效地使用Linux系统。b.打开终端:在大多数Linux发行版中,你可以通过应用程序菜单或快捷键(如Ctrl+Alt+T)来打开终端。c.输入命令:在命令提示符后面输入你想要的命令,然后按Enter键执行。使用Tab键自动补全:输
linux命令十分钟速通,看看你几个没有掌握
平凡灵感码头
linux学习 linux
1.useradd功能:创建新用户账户常用参数:-m:创建用户的家目录(如/home/username)-s/bin/bash:指定用户的默认Shell-g:指定用户的主组-G:指定用户的附加组案例:sudo useradd -m -s /bin/bash -G developersjohn2.passwd功能:修改用户密码常用参数:-l:锁定用户账户-u:解锁用户账户-d:删除用户密码(使其无密
Linux命令行使用技巧
万贯
运维
关于虚拟机:虚拟机管理:westos-vmctlcreatewestos创建虚拟机westoswestos-vmctlstartwestos开启虚拟机westos-vmctlviewwestos显示虚拟机westos-vmctlpoweroffwestos关闭虚拟机如何解决虚拟机问题:在虚拟机westos里,破坏系统:超级用户root登录,1.什么是Linux?linux是指Linux内核(系统的
玩转Linux必不可少的命令之tar
玩转Linux命令之tar:文件归档与压缩的得力工具tar命令在Linux中是一种常用的工具,广泛应用于创建、打包、压缩、解压归档文件。它能高效地处理文件归档与压缩,尤其在备份和数据迁移时尤为重要。本文将详细介绍tar命令的常见用法,帮助您快速掌握这一强大的工具。一、tar命令的基础语法tar[选项][归档文件][文件或目录]选项:控制tar命令的行为,如创建、解压、列出等。归档文件:归档文件的名
android工具am的用法,Android中AM、PM、dumpsys命令使用总结
喵杀
android工具am的用法
在平时开发中,通过命令行有时候能够快速的帮我们实现一些功能,这里对常用的命令做一些总结。1、AM命令用法1.1、简单介绍am指令是activitymanager的缩写,可以启动Service、Broadcast,杀进程,监控等功能,这些功能都非常便捷调试程序。可以通过adbshell进入Android的Linux命令界面,输入am-help查看详细命令,先介绍几个简单用法,//使用Action方式
Linux 程序员必修课:命令、脚本、程序、进程与线程的全貌
内核程序员kevin
Linux程序员 linux 进程 脚本 线程
Linux程序员必修课:命令、脚本、程序、进程与线程的全貌1.Linux命令、脚本、程序、进程与线程的关系对比表概念定义存储形式执行方式是否需要进程是否支持并发示例命令用户输入给shell的指令,可以是内置命令或外部命令直接输入在shell中(无固定存储)由shell解析并执行仅外部命令需要取决于命令,如&可后台运行ls、cd、echo脚本一组命令的集合,存储在文件中,通常是shell脚本文本文件
Linux 命令大全完整版(12)
茂茂在长安
Linux linux 数据库 服务器 运维 运维开发
Linux命令大全5.文件管理命令ln(link)功能说明:连接文件或目录。语法:ln[-bdfinsv][-S][-V][--help][--version][源文件或目录][目标文件或目录]或ln[-bdfinsv][-S][-V][--help][--version][源文件或目录...][目的目录]补充说明:ln指令用于连接文件或目录,若同时指定两个以上的文件或目录,且最后的目的地是一个已
Linux查看磁盘命令df-h详解
小毛驴850
linux 服务器 运维
df-h是一个常用的Linux命令,用于查看文件系统的磁盘使用情况并以易于阅读的方式显示。以下是df-h命令的详细解释:-h:以人类可读的格式显示磁盘空间大小。例如,使用GB、MB、KB等单位代替字节。执行df-h命令后,将会显示如下输出:FilesystemSizeUsedAvailUse%Mountedon/dev/sda120G10G10G50%/tmpfs2.0G02.0G0%/dev/s
linux命令之——xargs
会飞的爱迪生
linux命令 linux 服务器 运维
【实践操作】:1、查找并删除文件[root@Oldboy~]#find/data/*-typef-name"oldboy.txt"/data/oldboy.txt[root@Oldboy~]#find/data/*-typef-name“oldboy.txt”|xargsrm-f2、查找并cp目录[root@Oldboy~]#find/data/*-typed-name"oldboy1"/data
linux命令之——ln
会飞的爱迪生
linux命令 linux adb 运维
区别:软链接:目录和文件都可以做软链接,硬链接:目录不能做硬链接,文件可以做硬链接用法:硬链接:ln源文件目标文件,在目标文件下创建和源文件一样大小的文件(真实存在)软链接:ln-s源文件目标文件【实践操作】:1、创建一个硬链接文件[root@Oldboy~]#mkdiroldboy[root@Oldboy~]#ls-lidoldboy920896drwxr-xr-x.2rootroot4096M
Linux中常见命令使用
海绵宝宝
Linux linux 运维 服务器
Linux命令,本质是一个二进制可执行程序,与Windows系统中的.exe文件是一个意思ls-l-l看到的信息,开始是d,说明是文件夹,开始是-,则是文件w-h让文件大小更人性化的显示文件操作命令touch创建文件用法:touchLinux路径touch命令无选项,参数必填查看文件内容cat准备好文件内容后,可以通过cat查看内容用法:cat没有选项,只有必填参数,参数表示:被查看的文件路径。m
python百度网盘-百度网盘 Python 客户端
weixin_37988176
最近在GitHub上发现一个有趣的项目,百度网盘Python客户端(bypy),主要使用在Linux命令行下,这样很大的一个好处是可以利用到百度云盘2TB的存储空间(如果你是会员有6TB);你可以在任何服务器上,利用自动化脚本实现一些数据文件、日志文件等等备份操作,同时也提供丰富的文件列表、上传、下载、对比、同步以及批量操作等。虽然百度网盘Python客户端提供很大的便利,但是我强烈不建议将一些重
linux命令.pdf,linux命令大全完整版.pdf
gjbgyuhg
linux命令.pdf
linux命令大全完整版Linux命令大全完整版目录目录I1.linux系统管理命令1adduser1chfn(changefingerinformation)1chsh(changeshell)1date2exit3finger4free5fwhois5gitps(gnuinteractivetoolsprocessstatus)5groupdel(groupdelete)6groupmod(g
Linux命令大全完整版下载
姬钧晴Octavia
Linux命令大全完整版下载【下载地址】Linux命令大全完整版下载分享本仓库提供了一个名为“Linux命令大全完整版”的资源文件下载。该资源文件包含了Linux系统中常用的所有命令,适合Linux初学者和高级用户使用。无论你是想学习Linux命令,还是需要快速查找某个命令的用法,这份资源都能为你提供帮助项目地址:https://gitcode.com/Open-source-documentat
算法 单链的创建与删除
换个号韩国红果果
c 算法
先创建结构体
struct student {
int data;
//int tag;//标记这是第几个
struct student *next;
};
// addone 用于将一个数插入已从小到大排好序的链中
struct student *addone(struct student *h,int x){
if(h==NULL) //??????
《大型网站系统与Java中间件实践》第2章读后感
白糖_
java中间件
断断续续花了两天时间试读了《大型网站系统与Java中间件实践》的第2章,这章总述了从一个小型单机构建的网站发展到大型网站的演化过程---整个过程会遇到很多困难,但每一个屏障都会有解决方案,最终就是依靠这些个解决方案汇聚到一起组成了一个健壮稳定高效的大型系统。
看完整章内容,
zeus持久层spring事务单元测试
deng520159
java DAO spring jdbc
今天把zeus事务单元测试放出来,让大家指出他的毛病,
1.ZeusTransactionTest.java 单元测试
package com.dengliang.zeus.webdemo.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import
Rss 订阅 开发
周凡杨
html xml 订阅 rss 规范
RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Site Summary的缩写,1.0与2.0走的是两个体系)。
RSS
分页查询实现
g21121
分页查询
在查询列表时我们常常会用到分页,分页的好处就是减少数据交换,每次查询一定数量减少数据库压力等等。
按实现形式分前台分页和服务器分页:
前台分页就是一次查询出所有记录,在页面中用js进行虚拟分页,这种形式在数据量较小时优势比较明显,一次加载就不必再访问服务器了,但当数据量较大时会对页面造成压力,传输速度也会大幅下降。
服务器分页就是每次请求相同数量记录,按一定规则排序,每次取一定序号直接的数据
spring jms异步消息处理
510888780
jms
spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
highCharts柱状图
布衣凌宇
hightCharts 柱图
第一步:导入 exporting.js,grid.js,highcharts.js;第二步:写controller
@Controller@RequestMapping(value="${adminPath}/statistick")public class StatistickController { private UserServi
我的spring学习笔记2-IoC(反向控制 依赖注入)
aijuans
spring mvc Spring 教程 spring3 教程 Spring 入门
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
TLS java简单实现
antlove
java ssl keystore tls secure
1. SSLServer.java
package ssl;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.KeyStore;
import
Zip解压压缩文件
百合不是茶
Zip格式解压 Zip流的使用 文件解压
ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
&n
underscore.js 学习(一)
bijian1013
JavaScript underscore
工作中需要用到underscore.js,发现这是一个包括了很多基本功能函数的js库,里面有很多实用的函数。而且它没有扩展 javascript的原生对象。主要涉及对Collection、Object、Array、Function的操作。 学
java jvm常用命令工具——jstatd命令(Java Statistics Monitoring Daemon)
bijian1013
java jvm jstatd
1.介绍
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务
【Spring框架三】Spring常用注解之Transactional
bit1129
transactional
Spring可以通过注解@Transactional来为业务逻辑层的方法(调用DAO完成持久化动作)添加事务能力,如下是@Transactional注解的定义:
/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version
我(程序员)的前进方向
bitray
程序员
作为一个普通的程序员,我一直游走在java语言中,java也确实让我有了很多的体会.不过随着学习的深入,java语言的新技术产生的越来越多,从最初期的javase,我逐渐开始转变到ssh,ssi,这种主流的码农,.过了几天为了解决新问题,webservice的大旗也被我祭出来了,又过了些日子jms架构的activemq也开始必须学习了.再后来开始了一系列技术学习,osgi,restful.....
nginx lua开发经验总结
ronin47
使用nginx lua已经两三个月了,项目接开发完毕了,这几天准备上线并且跟高德地图对接。回顾下来lua在项目中占得必中还是比较大的,跟PHP的占比差不多持平了,因此在开发中遇到一些问题备忘一下 1:content_by_lua中代码容量有限制,一般不要写太多代码,正常编写代码一般在100行左右(具体容量没有细心测哈哈,在4kb左右),如果超出了则重启nginx的时候会报 too long pa
java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶
bylijinnan
java
import java.util.Stack;
public class ReverseStackRecursive {
/**
* Q 66.颠倒栈。
* 题目:用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。
* 颠倒之后的栈为{5,4,3,2,1},5处在栈顶。
*1. Pop the top element
*2. Revers
正确理解Linux内存占用过高的问题
cfyme
linux
Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上:
Mem: 3889836k total, 3341868k used, 547968k free, 286044k buffers
Swap: 6127608k total,&nb
[JWFD开源工作流]当前流程引擎设计的一个急需解决的问题
comsci
工作流
当我们的流程引擎进入IRC阶段的时候,当循环反馈模型出现之后,每次循环都会导致一大堆节点内存数据残留在系统内存中,循环的次数越多,这些残留数据将导致系统内存溢出,并使得引擎崩溃。。。。。。
而解决办法就是利用汇编语言或者其它系统编程语言,在引擎运行时,把这些残留数据清除掉。
自定义类的equals函数
dai_lm
equals
仅作笔记使用
public class VectorQueue {
private final Vector<VectorItem> queue;
private class VectorItem {
private final Object item;
private final int quantity;
public VectorI
Linux下安装R语言
datageek
R语言 linux
命令如下:sudo gedit /etc/apt/sources.list1、deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/ 2、deb http://dk.archive.ubuntu.com/ubuntu hardy universesudo apt-key adv --keyserver ke
如何修改mysql 并发数(连接数)最大值
dcj3sjt126com
mysql
MySQL的连接数最大值跟MySQL没关系,主要看系统和业务逻辑了
方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可
方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppass
单一功能原则
dcj3sjt126com
面向对象的程序设计 软件设计 编程原则
单一功能原则[
编辑]
SOLID 原则
单一功能原则
开闭原则
Liskov代换原则
接口隔离原则
依赖反转原则
查
论
编
在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个类都应该有
POJO、VO和JavaBean区别和联系
fanmingxing
VO POJO javabean
POJO和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Plain Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被
SpringSecurity3.X--LDAP:AD配置
hanqunfeng
SpringSecurity
前面介绍过基于本地数据库验证的方式,参考http://hanqunfeng.iteye.com/blog/1155226,这里说一下如何修改为使用AD进行身份验证【只对用户名和密码进行验证,权限依旧存储在本地数据库中】。
将配置文件中的如下部分删除:
<!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密-->
mac mysql 修改密码
IXHONG
mysql
$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在-
设计模式--抽象工厂模式
kerryg
设计模式
抽象工厂模式:
工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类,
评"高中女生军训期跳楼”
nannan408
首先,先抛出我的观点,各位看官少点砖头。那就是,中国的差异化教育必须做起来。
孔圣人有云:有教无类。不同类型的人,都应该有对应的教育方法。目前中国的一体化教育,不知道已经扼杀了多少创造性人才。我们出不了爱迪生,出不了爱因斯坦,很大原因,是我们的培养思路错了,我们是第一要“顺从”。如果不顺从,我们的学校,就会用各种方法,罚站,罚写作业,各种罚。军
scala如何读取和写入文件内容?
qindongliang1922
java jvm scala
直接看如下代码:
package file
import java.io.RandomAccessFile
import java.nio.charset.Charset
import scala.io.Source
import scala.reflect.io.{File, Path}
/**
* Created by qindongliang on 2015/
C语言算法之百元买百鸡
qiufeihu
c 算法
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?
代码如下:
#include <stdio.h>
int main()
{
int cock,hen,chick; /*定义变量为基本整型*/
for(coc
Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详细介绍AvatarNode
wyz2009107220
NameNode
正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。
1. Secondary NameNode
原理:Secondary NN会定期的从NN中读取editlog,与自己存储的Image进行合并形成新的metadata image
优点:Hadoop较早的版本都自带,