Varnish 和 Squid比较到底强多少
对于坊间流传的:
1.varnish的性能比squid高10~20倍
2.squid 3.0的性能比2.6有提高
本次测试将会揭示结果,
是否varnish的架构真的能提升那么多的性能
是否squid的新版本在性能上有所提升
测试中将不对平台.软件.等等进行优化
由于优化水平的关系将极大的影响结果.
此次测试中的数据可以作为基准数据.
可以由其中个别软件的优化与非优化结果比例系数
自行计算得出比较结果.所以个别软件的优化或者系统优化后对整体的影响
可以由读者自行对特定软件进行,并使用此基准数据进行推算.
WEB站点的页面
我将淘宝的首页获取到本地
作为测试对象
测试页面下载
index_files
平台:
PROXY:
CentOS 5.1 最小化安装
浪潮NF190
Xeon 2.8
1G RAM
73G SCSI
Squid 2.6,Squid 3.0,Varnish 1.1.2
WEB:
CentOS 5.1 最小化安装
浪潮NF180
Xeon 2.8
1G RAM
73G SCSI
Nginx 0.6.31
CLIENT:
CentOS 5.1 最小化安装
浪潮NF260
Xeon 2.4
512M RAM
36G SCSI
http_load-12mar2006
SWITCH:
DLINK DES 1024R+
1.Squid 2.6
编译参数
配置文件
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid26/cache.log
2.Squid 3.0
编译参数
配置文件
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid30/cache.log
3.Varnish 1.1.2
编译参数
配置文件
set backend.host = "192.168.210.111";
set backend.port = "80";
}
运行参数
4.Nginx 0.6.31
编译参数
配置文件
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5.http_load
运行参数
urls.txt
http://192.168.210.222/index.html
6.squid 2.7
编译参数
配置文件
http_port 80 accel vhost vport
cache_peer 192.168.210.111 parent 80 0 no-query originserver name=test1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_log /var/log/squid27/cache.log
测试结果
点图放大
图标中标注浅黄色的为客户端在抓取过程中只出现一次或几次的500
橙色的为出现500抓取错误的频率较多
红色的为几乎每次都会出现500抓取错误
值得注意的是squid 3.0
在500并发连接数时500出现的次数很多
但是在1000的时候反而抓取失败率下降了.
CPU和内存占用率
点图放大
varnish一直保持良好的CPU和内存使用率
但是到了1000并发数的时候
你会发现CPU使用率到了103%
没错.我并没有打错.在5次测试中,VARNISH的1000并发数测试其CPU占用率一直徘徊在101~103之间
可能是varnish的连接池写的不是特别好.当大于varnish处理量时,会使用更多的CPU资源去处理
squid 3.0似乎是个CPU和内存的占用大户
可能和版本比较新以及特性比较多有关(虽然这次什么特性都没用上)
squid 2.6保持了良好的姿态,稳定的CPU占用率和内存占用率.表明了为何市面上使用最多是它的原因.
更详细的内容可以下载此表格
varnish-vs-squid3
虽然varnish有着令人吃惊的CPU占用率(超过处理能力时也很令人吃惊)
但是其处理超大量的链接时内存和CPU使用率的暴涨并不令人满意
不过其表现出的在最大负荷时的fetchs/second
确实比squid 2.6要高出大约8%
实验表明.在需要更加稳定的生产环境中,varnish还不能替代老一代的squid 2.6
但是其对squid 3.0已经产生了很明显的挑战.
如果squid 3.0不能比他的上代产品提供更好的性能和稳定性的话
很有可能最佳反向代理的宝座会被varnish夺走
不论如何
这次测试的主题.varnish比squid有着10倍或者20倍的性能
被证实是不可能实现的.
虽然测试数据量充满100M带宽可能影响到测试的准确度.
但是更高的带宽所带来的同时连接数,很可能会撑爆varnish主机的CPU和内存.
结论
1.varnish在高负载下以CPU和内存为代价,比squid 2.6提高8%,但是绝非10倍~20倍.
2.squid 3.0的性能比2.6更低.而非更高.相反,3.0是最不稳定以及性能最差的.
3.squid 2.7的性能比2.6低,但是CPU和内存占用率控制的更好.
======================================================
Squid 2.6 2.7 3.0 3.1 以及 varnish 2.1.5 性能对比测试
http://www.cnblogs.com/littlehb/archive/2012/02/21/2360787.html
说明:
使用压力测试软件siege,http_load对这几个代理软件进行测试,测试了不同大小的文件和各种并发数。
squid的版本选择,考虑到实际使用的一些需求,并参考了其他的一些文章(
比如:http://www.php-oa.com/2009/12/02/cache%e8%bd%af%e4%bb%b6%e7%89%88%e6%9c%ac%e9%80%89%e6%8b%a9.html
),没有选择比较老的squid 2.5。
每次测试前清除文件缓存并重启代理软件。
这个测试仅作为数据参考,并不能完全模拟生产环境那么复杂的网络请求(请求数,各种大小的文件请求)。
一、测试环境:
硬件:Intel Xeon E5410 @ 2.33GHz * 2,16G内存,SATA 500G * 4(RAID 10)
安装squid 2.7
./configure -prefix=/opt/squid2.7 -enable-xmalloc-statistics --enable-async-io=320 --with-maxfd=65536 -enable-useragent-log -enable-referer-log -enable-epoll -disable-poll -enable-large-cache-files -disable-internal-dns -enable-linux-netfilter -enable-truncate -enable-x-accelerator-vary -enable-follow-x-forwarded-for -with-large-files -with-pthreads -enable-storeio="aufs,coss,diskd,ufs" -enable-kill-parent-hack -enable-gnuregex -enable-cache-digests -enable-delay-pools -enable-stacktraces -enable-default-err-language=Simplify_Chinese -enable-err-languages="Simplify_Chinese English" --enable-auth="basic" --enable-basic-auth-helpers="NCSA" --enable-snmp
注意:
1、不要使用-enable-dlmalloc这个编译参数,否则运行一段时间会报错 FATAL: xcalloc: Unable to allocate 1 blocks of 4112 bytes!
参考:
http://www.mail-archive.com/squid-users@squid-cache.org/msg48804.html
http://www.mail-archive.com/squid-users@squid-cache.org/msg40839.html
大致意思是dlmalloc是squid在某些系统本身malloc太烂的情况的代替方案,dlmalloc已经很老,且不支持2G以上内存(比较有意思的是之前使用的squid 3.0也用了这个参数,却正常运行,内存使用有配置超过10G的,可能3.0有特殊处理兼容了这种编译配置)。
Squid 3的编译参数:
www:/srv# /opt/squid3/sbin/squid -v
Squid Cache: Version 3.0.STABLE25
configure options: '--prefix=/opt/squid3' '--enable-dlmalloc' '--enable-gnuregex' '--enable-async-io=160' '--enable-removal-policies=heap,lru' '--enable-delay-pools' '--enable-storeio=ufs,aufs,null' '--disable-wccp' '--enable-kill-parent-hack' '--disable-select' '--enable-auth=basic' '--with-aio' '--disable-ident-lookup' '--with-filedescriptors=65536' '--enable-err-languages=Simplify_Chinese' '--enable-default-err-languages=Simplify_Chinese'
3.1的编译参数基本和3.0一样。
squid几个版本使用的基本是一样的squid.conf,性能相关的几个配置如下:
cache_mem 4000 MB
maximum_object_size_in_memory 512 KB
#cache_dir
cache_dir aufs /srv/squid_cache 20480 16 256
maximum_object_size 4096 KB
Varnish:
tar zxf varnish-2.1.5.tar.gz
cd varnish-2.1.5
./configure --prefix=/opt/varnish
运行参数:
/opt/varnish/sbin/varnishd -u www -g www -f /opt/varnish/etc/varnish/aipai.vcl -a 0.0.0.0:8080 -s file,/srv/varnish_cache/cache/varnish_cache.data,1G -w 1024,51200,10 -t 3600 -T 0.0.0.0:30000
二、测试结果:
每次测试60s
测试命令:siege -b -c 100 -t 60s URL
表中记录的数据是:Transaction rate,单位:请求/s
典型测试结果:
da01:~/siege-2.69# siege -b -c 500 -t 60s http://www.aipai.com:8080/about/map.html
** SIEGE 2.69
** Preparing 500 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 653211 hits
Availability: 100.00 %
Elapsed time: 59.35 secs
Data transferred: 1238.43 MB
Response time: 0.05 secs //平均相应时间
Transaction rate: 11006.08 trans/sec //平均每秒处理速度,请求/s
Throughput: 20.87 MB/sec //网络吞吐量
Concurrency: 498.86 //最高并发数
Successful transactions: 653212 //成功处理数
Failed transactions: 0 //失败处理数
Longest transaction: 3.01 //最长的请求处理时间
Shortest transaction: 0.00
对于测试结果详细的说明,有兴趣的朋友请查阅siege的文档,比较关键的几个数据上面已经标注了。
测试1:
目标URL:http://www.aipai.com:8080/about/map.html,测试小文件请求,文件大小:6221 byte
并发 10 | 并发 100 | 并发 500 | 并发 1000 | |
squid 2.6 STABLE23 | 8207 | 11211 | 11016 | 10451 |
squid 2.7 STABLE9 | 8261 | 11409 | 11006 | 10002 |
squid 3.0 STABLE25 | 8524 | 9762 | 8138 | 8768 |
squid 3.1.11 | 6421 | 6832 | 5990 | 5834 |
varnish 2.1.5 | 10875 | 10251 | 11459 | 11412 |
PS:siege使用超过1000个并发会报错。
测试2:
目标URL:http://www.aipai.com:8080/c7/Pjg_KScqImgnaiYs.html,测试我们网站典型的播放页请求,文件大小:75356 byte
并发 10 | 并发 100 | 并发 500 | 并发 1000 | |
squid 2.6 STABLE23 | 4554 | 6382 | 6625 | 6696(4 failed ) |
squid 2.7 STABLE9 | 4164 | 6234 | 6565 | 6588 |
squid 3.0 STABLE25 | 4366 | 5315 | 5190 | 5153 |
squid 3.1.11 | 3697 | 4217 | 4357 | 4075 |
varnish 2.1.5 | 6618 | 6781 | 6775 | 5714 |
测试1,测试2总结:
测试1,测试2都是对一个URL进行强压,主要测试MEM_HIT时候软件的处理能力。
1、squid 2.6在squid组中基本是最快的,在测试2并发1000的时候开始不太稳定,有4个Connection timed out。
2、squid 2.7的成绩和2.6在一个水平线,略逊一点。
3、squid 从3.0开始用c++全部重写,目前看来与2.7/2.6性能差距还很明显,3.1从性能上来看比3.0还差(squid哥,不能为了功能损失太多的性能啊)。
4、varnish在大多数测试上处于领先,有些项目差一些(varnish的测试结果不是很稳定,有一些摆幅)。varnish性能比squid强一些,不过远没有达到某些文章宣称的是squid的10倍。
测试3:
进一步模拟生产环境,从实际运行的squid access log中截取了5万个url来测试。
每次测试延长到2分钟。
并发 10 | 并发 100 | 并发 500 | 并发 1000 | |
squid 2.6 STABLE23 | 2839 | 5485 | 6722 | 6604 |
squid 2.7 STABLE9 | 2981 | 5215 | 6789 | 6742 |
squid 3.0 STABLE25 | 2863 | 4294 | 4345 | 3859 |
squid 3.1.11 | 2682 | 3763 | 3402 | 3262 |
varnish 2.1.5 | NA | NA | NA | NA |
4934
注:varnish的测试有一点问题,siege会很快报出结果(并没有到设定的2分钟),查看varnish的log还在不断的有请求进来,这个测试中siege的结果不能使用。
报错:
** SIEGE 2.69
** Preparing 100 concurrent users for battle.
The server is now under siege... done.
siege aborted due to excessive socket failure; you
can change the failure threshold in $HOME/.siegerc
Transactions: 181336 hits
Availability: 99.43 %
测试3总结:
1、由于varnish的成绩有问题,这里就只是squid各版本的比拼了。这个测试比之前的测试1,2更有意义一点,因为能更真实的模拟生产环境(url列表就是从生产环境中截取了一段)。
2、在这个测试中squid 2.7表现的很出色,有3个环节的分数都比之前测试1,测试2中表现更好的squid 2.6高。
3、再验证测试的时候发现,这组测试结果变化较大。拿并发100时squid 2.7的数据来说,结果从3800到5600都有。分析原因可能是因为这里访问的是生产环境URL列表,需要去后端拿各种页面,有不少页面还需要请求数据库(后端和数据库这个时候都还在跑生产环境,并不是空闲的,当跑测试的时候数据库load明显升高),后端和数据库的繁忙程度会导致测试结果有一定偏差。
4、有偏差也能看出一个大致趋势,和测试1,2的结论其实差不多:2.6/2.7的性能接近,3.0差一些,3.1最差。
增加的http_load测试:
“测试3”对3万个url列表进行测试时,varnish的结果无效,考虑使用另外的压力测试工具来对比一下squid和varnish。
这里使用http_load对“测试3”使用的url list进行测试(http_load 支持url 列表)。
并发 10 | 并发 100 | 并发 500 | 并发 1000 | |
squid 2.6 STABLE23 | 4113(264 bad) | 5612(415 bad) | 5922(370 bad) | 5768(354 bad) |
squid 2.7 STABLE9 | 4253(277 bad) | 5723(384 bad) | 5600(341 bad) | 5768(399 bad) |
squid 3.0 STABLE25 | 4121(259 bad) | 4786(350 bad) | 3958(255 bad) | 3868(228 bad) |
squid 3.1.11 | 3405(206 bad) | 3817(247 bad) | 3384(183 bad) | 3310(230 bad) |
varnish 2.1.5 | 4985 | 6519(34 bad ) | 6268(1191 bad) | 6410(1065 bad) |
测试结果抽选:
574373 fetches, 100 max parallel, 8.57065e+09 bytes, in 120 seconds
14921.7 mean bytes/connection
4786.44 fetches/sec, 7.14221e+07 bytes/sec
msecs/connect: 0.398121 mean, 3.682 max, 0.039 min
msecs/first-response: 9.73295 mean, 4198.23 max, 4.263 min
350 bad byte counts
HTTP response codes:
code 200 -- 542073
code 302 -- 26308
code 404 -- 5992
注:
1、varnish随着并发数的增多,有越来越多的 byte count wrong。
http_load测试总结:
1、从性能上来看,基本来之前的测试结论差不多:varnish > squid 2.6 > squid 2.7 > squid 3.0 > squid 3.1
2、squid 2.6,2.7成绩很接近。
3、需要留意的是随着并发数的增加,varnish出现的 bad byte counts比squid更多。
三、测试总结:
1、性能:varnish > squid 2.6 > squid 2.7 > squid 3.0 > squid 3.1
2、squid 2.6和squid 2.7的成绩相差不大,大多数情况是2.6高一些,少数情况2.7高一些。
3、squid 3.0,squid 3.1用c++重写之后目前性能上还比较尴尬。
5、varnish的性能比squid好,不过远没有达到一些文章宣称的10倍,对varnish选择保持关注。原来使用的是squid,可以沿用不少的squid.conf配置,暂时先不换软件了,因为更换之后的配置熟悉以及正式上线的运行不确定性可能会有比较高的成本。
4、最后选用squid 2.7。它有着和2.6相近的性能,更好的支持http 1.1,也有3.0支持的不少特性。
相关文章:

太强了,Python 开发桌面小工具,让代码替我们干重复的工作~
作者 | Cherish 来源 | 杰哥的IT之旅 决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 Python 自动生成透视表",这个问题背后有个非常好的解决思路,让代码替我们做重复的工作,从而减轻工作量&…

Windows 2008
Windows2008系统实现多用户登录 https://help.aliyun.com/knowledge_detail/6530052.html?spm5176.7618386.5.1.RTfIVT#Windows2008系统实现多用户登录 ECS Windows2008如何支持用户多会话登入 https://help.aliyun.com/knowledge_detail/6511066.html?spm5176.7618386.5.1.f…

java 复制对象有哪些方式
2019独角兽企业重金招聘Python工程师标准>>> java 复制对象有哪些方式 Apache的 Common beanutils库 org.apache.commons.beanutils.BeanUtils.copyProperties(dest,origin);Springframework 的BeanUtil 依赖: <dependency><groupId>org.springframewor…

mysql常用语句集锦
mysql UNIX时间戳与日期的相互转换 UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Select UNIX_TIMESTAMP(’2006-11-04 12:23:00′); 例:mysql查询当天的记…

iOS15.4 来袭:新增“男妈妈”表情及口罩面容解锁、AirTags 反跟踪等新功能
整理 | 章雨铭 责编 | 屠敏出品 | CSDN(ID:CSDNnews)今日,苹果发布了iOS/iPadOS 15.4正式版。该版本带来了一些重大新功能的更新,包括在戴口罩时使用Face ID功能,以及一些新的表情符号和Siri语音更新…

symfony2项目访问app_dev.php不显示debug工具栏的问题
2019独角兽企业重金招聘Python工程师标准>>> 当在symfony2中比如添加一个bundle后,访问app_dev.php时不会显示底部debug工具栏,一种情况是模板中没有包含有效的html标签 参考:http://stackoverflow.com/questions/10399089/symfon…

PHP的Smarty
原理:把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译。然后include这个“编译”后的PHP文件。所谓编译也就是模板用正则替换成含PHP代码的过程。实际上并不会每次请求都编译,所以性能尚可。而SMARTY…

真香!精心整理了 100+Python 字符串常用操作
来源丨萝卜大杂烩作者丨周萝卜字符串作为平时使用最多的数据类型,其常用的操作我们还是很有必要熟记于心的,本文整理了多种字符串的操作的案例,还是非常用心,记得点赞收藏~字符串切片操作test "Python Programming" pr…

IOS版添加phonegap-视频播放插件教程
2019独角兽企业重金招聘Python工程师标准>>> 插件集成过程:1.配置Target链接参数选择 Build Settings | Linking | Other Linker Flags, 将该选项的 Debug/Release 键都配置为-ObjC。2.Vitamio SDK 依赖的系统框架和系统库如下:– AVFoundation.framwork…

C#线程同步的几种方法
在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单的做一下归纳。 一、volatile关键字 volatile是最简单的一种同步方法,当然简单是要付出代价的。它只能在变量一级做同步,volatile的含义就是告诉处理器…

ecshop模板的原理分析
模板的原理 类似Smarty/ECShop这类模板的原理如下图所示。1.首先是编译模板ECShop/Smart是利用PHP引擎,所以编译的结果是一个PHP文件,其编译过程就是将分隔符{}替换成PHP的标准分隔符<?PHP ?>,将$var替换成 echo $var; 或者print $va…

Python 快速生成 web 动态展示机器学习项目!
来源丨网络作者丨wedo实验君1. Streamlit一句话,Streamlit是一个可以用python编写web app的库,可以方便的动态展示你的机器学习的项目。优点你不需要懂html, css, js等,纯python语言编写web app包括web常用组件&#x…

Linux-CentOS 7 增加root分区容量
今天搭建了一台CentOS 7 的机器,搭建完成后通过【df -lh】看了一下分区大小,root分区太小了。 分区.png打算把home分区的容量分一部分给root,具体操作步骤如下: 备份home分区cp -r /home/ homebak卸载【home】目录umount /home/现…

PHP数组实际占用内存大小的分析
http://blog.csdn.net/hguisu/article/details/7376705我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1…

肝货,详解 tkinter 图形化界面制作流程!
作者 | 黄伟呢来源 | 数据分析与统计学之美本期案例是带着大家制作一个属于自己的GUI图形化界面—>用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首先详细讲述一下Tkinter的使用方法。tk…

迁移碰到数据库 Unknown collation: 'utf8mb4_unicode_ci'
数据库从香港服务器迁移到阿里云的虚拟主机,不得不吐槽一下。阿里云的ftp好慢,db导入面板也不够友好。 还得靠中断命令行链接,结果版本太低不支持 utf8mb4_unicode_ci,尼玛,现在都mysql5.7了,您还在 5.1时代…

15-shell 输入/输出重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是…

高性能Mysql主从架构的复制原理及配置详解
1 复制概述Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复…

gdal 1.9+python 2.7开发环境配置
最近项目使用Cesium平台基于WegGl做web地球,其中关于地形数据有一种支持格式为terrain的地形数据。这种格式可以通过一个python工具切dem来得到。 下面记录下配置gdalpython开发环境,系统是win7 64位,不过gdal和python是32位的,没…

破纪录了!用 Python 实现自动扫雷!
用PythonOpenCV实现了自动扫雷,突破世界记录,我们先来看一下效果吧。中级 - 0.74秒 3BV/S60.81相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣&a…

java高并发编程(二)
马士兵java并发编程的代码,照抄过来,做个记录。 一、分析下面面试题 /*** 曾经的面试题:(淘宝?)* 实现一个容器,提供两个方法,add,size* 写两个线程,线程1添加…

LAMP 关键数据集锦技术选项参考
LAMP 关键数据集锦技术选项参考 源自日积月累自己的其他人的经验总结负载均衡 LVS工作在四层,内核态,性能极高,有VIP功能,配合 keepalived 做有效的 心跳检查和负载均衡安装配置麻烦,HAProxy工作在四层到七层&am…

centos7 设置中文
查看系统版本[rootwebtest76 ~]# cat /etc/redhat-releaseCentOS Linux release 7.0.1406 (Core) [rootlocalhost ~]# cat /etc/locale.conf LANGen_US.UTF-8[rootlocalhost ~]# cp /etc/locale.conf /etc/locale.conf_bak[rootlocalhost ~]# vim /etc/locale.conf # 修改后原英…

Python最常用的函数、基础语句有哪些?
作者 | 朱卫军来源 | Python大数据分析Python有很多好用的函数和模块,这里给大家整理下我常用的一些方法及语句。一、内置函数内置函数是python自带的函数方法,拿来就可以用,比方说zip、filter、isinstance等。下面是Python官档给出的内置函数…
1.5s~0.02s,期间我们可以做些什么?
原文是在我自己博客中,小伙伴也可以点阅读原文进行跳转查看,还有好听的背景音乐噢背景音乐已取消~ 2333333大爷我就算功能重做,模块重构,我也不做优化!!!运行真快! 前言 本文主要探讨…

Python 自动化办公之 Excel 拆分并自动发邮件
作者 | 周萝卜来源 | 萝卜大杂烩今天我们来分享一个真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍!需求需要向大约 500 名用户发送带有 Excel 附件的电…

In Gradle projects, always use http://schemas.andr
2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为博主原创文章,未经博主允许不得转载。 在做项目自定义时候遇到这个错误 In Gradle projects, always use http://schemas.android.com/apk/res-auto for custom attributes 解决办…

HTTP POST慢速DOS攻击初探
1. 关于HTTP POST慢速DOS攻击 HTTP Post慢速DOS攻击第一次在技术社区被正式披露是今年的OWASP大会上,由Wong Onn Chee 和 Tom Brennan共同演示了使用这一技术攻击的威力。他们的slides在这里: http://www.darkreading.com/galleries/security/applicatio…
Java 学习(20)--异常 / IO 流
异常(Exception) (1)程序出现的不正常的情况。 (2)异常的体系 Throwable(接口,将异常类对象交给 JVM 来处理) |--Error 严重问题,我们不处理。(jvm 错误,程序无法处理) |--Exception 异常 …

runtime自动归档/解档
原文出自:标哥的技术博客 前言 善用runtime,可以解决自动归档解档。想想以前归档是手动写的,确实太麻烦了。现在有了runtime,我们可以做到自动化了。本篇文章旨在学习如何通过runtime实现自动归档和解档,因此不会对所有…