`
文章列表
      当Web应用的系统性能成为用户访问瓶颈的时候,作为系统的构建者,Code Monkey自然无法置身事外。专业的性能测试,自然需要有专门的测试部门来负责主导,然而作为程序猿,关注性能、了解一点和系统性能相关的知识,无论是对工作、还是从完善自身知识体系的角度来考虑都大有裨益。在这篇博客中,使用的工具包括JMeter、Tomcat和Visual VM,重点在于JMeter的入门使用。   【使用工具】     JMeter:用于对Web应用进行性能测试,是Apache组织的顶级项目之一。作为一个顶级项目,都意味着会有一个专门的项目管理委员会,JMeter官网如是说。JMeter ...
         作为Java码农一枚,不了解Java的Class字节码结构似乎情有可原。但是关于Java代码的编译优化,或许值得一探究竟。我们编写好一个Java类文件之后,通过javac命令将一个*.java文件编译为*.class字节码文件。同样我们可以将一个*.class文件反编译为一个*.java文件。通过研习反编译之后的Java代码和原始代码的不同,我们可以了解一些Java代码编译优化的基础知识,有助于我们编写出更加高效实用并且简洁易读的代码。             在这里,我们使用非常流行的DJ Java Decompiler作为反编译工具,DJ Java Decompil ...
         在生产环境下对Java虚拟机JVM进行参数调优是必不可少的。作为普通的开发人员,如果对JVM的参数优化有一定的了解,即使是从知识体系的完整性来考虑也是大有裨益的。另外,了解JVM的运行原理也有助于编写性能良好的程序,而不是让代码成为服务器CPU和内存的杀手。   【Windows平台的参数调优】        通常我们都在Windows系统下面进行软件开发工作,因此在Windows平台下面的JVM参数调优也是有必要了解的。有时候开发大规模的商业系统,即使是在开发环境也不得不进行JVM参数调优,否则系统根本跑不起来。选用MyEclipse作为开发工具,集成Tomcat作 ...
【 类加载器简介】        类加载器(classloader)用于将类的class文件加载到JVM虚拟机。 JVM有三种加载器,引导类加载器器(bootstrap classloader)、扩展类加载器(extensions classloader)和应用类加载器(application classloader),另外还可以继承java.lang.ClassLoader类创建自定义加载器。   【类加载器种类】   1. 引导类加载器(BootStrap):并不是一个Java类,采用C++语言编写、内嵌在JVM内核里面,使用JNI(Java Native Interface)调 ...
        在生产环境下,通常都需要对JVM进行参数优化,其中对垃圾回收器的参数优化是一个非常重要的一方面。下面重点介绍Java的堆内存,垃圾回收算法,常用的垃圾回收器以及Java堆内存的分配策略,这些内容将作为对JVM进行垃圾回收参数优化的重要基础。然后通过简单示例验证Java的垃圾回收机制。   【Java堆内存结构】        Java的堆(Heap)是存放对象的内存区域。在逻辑上我们可以把堆细分为新生代(Young Generation)、老年代(Old Generation)和永久代(Permanent Generation)。   1.  新生代:可以再划分为Ed ...
       学Java三年有余,对自己来说JVM一直以来都是黑匣子,看不懂,摸不透。作为一个有技术情节、略带些许完美主义情节的攻城狮,不了解JVM似乎有时候夜不能寐,总觉得有一个未知的世界自己需要探索。理论为实践服务 ...
        在生产环境下,通常需要对Tomcat的一些参数进行设置以达到优化性能的目的。Tomcat运行于虚拟机JVM之上,因此对JVM的优化必不可少,另外机器的硬件、软件环境对服务器的运行效率至关重要。抛去其他因素不谈,下面仅介绍对Tomcat的有关参数进行优化设置。   【基本参数设置】        修改Tomcat的/conf目录下面的server.xml文件,针对端口为8080的连接器添加如下参数:     1. connectionTimeout:连接失效时间,单位为毫秒、默认为60s、这里设置为30s,如果用户请求在30s内未能进入请求队列,视为本次连接失败。    ...
        在Tomcat的运行过程中会生成很多日志,日志功能可以帮助对服务器运行追踪和web应用排错。Tomcat的日志功能主要包括系统日志、访问日志,系统日志记录Tomcat服务器自身的运行状况,访问日志记录web应用的用户访问历史。   【系统日志】        系统日志如catalina.2014-08-30.log和catalina.out文件,其中catalina.2014-08-30.log是catalina.out内容按照每天进行日志分割的结果,但是随着系统的运行、catalina.out的文件大小不断增加、会严重影响Tomcat的运行效率,因此有必要对catal ...
        还记得3年前写的第一个Java操作JDBC的程序,关于连接参数的配置全都硬编码写在Java代码里面。然后开始尝试着使用数据库连接池,比如DBCP、C3P0之类的,并且把连接池的设置参数写在属性文件里面,如mysql.properties,然后累死累活的从属性文件中把连接池参数解析出来,只为了修改参数的之后不再重新编译Java源文件。在使用Spring框架之后,终于从属性文件的解析中解脱出来,感觉对数据库连接池使用的学习应该到此结束。         在生产环境下,为了使对数据库连接池参数的修改生效,不得不重启Tomcat,这真是个噩梦。然而,在学习了Tomcat对JNDI数 ...
和Nginx类似,Tomcat也有虚拟主机、虚拟目录的概念。借助于虚拟主机功能,允许在一台Tomcat服务器上面创建多个虚拟主机。通过虚拟目录的设置,可以自定义web应用的存放目录,不再强硬要求web应用一定存放在Tomcat的webapps目录。了解一点运维的活儿,我会比较Happy   【一】虚拟主机:Virtual Host  [一]  简介:“虚拟主机”功能可以在一台物理机器上面“模拟”出多台逻辑机器,本质上是将 不同的域名绑定到同一个IP地址上面。  [二] 进行DNS设置:修改C:\WINDOWS\system32\drivers\etc下面的hosts文件,示例如下 ...
Tomcat是Java Web开发最为常用的web容器。说来惭愧,从写第一个Java的Hello World程序迄今已3年有余,对Tomcat的使用却也一直停留在Hello World级别。鉴于此,决定对Tomcat的日常工作使用做一个比较完整全面的总结。<一>. 简介: Tom ...
在上一篇博客中已经简要的介绍了MD5、BASE64、DES、RSA等算法在Java中的具体应用。现在可以考虑对这些代码封装成一个工具类EncryptUtil,然后再补充一下Commons Codec对BASE64的扩展支持!   <一>. EncryptUtil工具类:  1. 使用commons-logging记录异常日志。  2. 提取常量字段、公共字段。  3. 提取公共方法:  Java代码  //创建密钥   createSecretKey(String key):Key   
        搞Java的攻城狮应该比较欣喜若狂的,不仅Sun公司的JDK提供了庞大的类库,而且还有众多的开源组织和个人不断地丰富着Java的生态系统。没错的,诸如MD5、BASE64、DES、RSA等经典加密解密算法,JDK都有提供专门的API来封装相关操作。程序猿只需要了解算法的思想,以及学习如何使用API即可。当然,针对BASE64算法,JDK仅仅提供了非常标准的实现,在某些场景下无法满足应用需求。在最后一部分,将学习Apache提供的Commons Codec对BASE64算法的扩展实现,以满足实践的需要。   <一>. MD5加密算法:        消息摘要算法 ...
     在单台Tomcat应用中,通常使用session保存用户的会话数据。面对高并发的场景,一台Tomcat难当大任,通常我们会使用Nginx在前端拦截用户请求,转发给后端的Tomcat服务器群组。在集群环境下,怎么才能做到session数据在多台To ...
作为Nginx学习的最后,本篇博客简要介绍在Nginx使用过程中的一些尚未提及的重要知识点,包括Nginx的性能监控、限制下载速度、防盗链、rewrite与重定向、location的优先级以及二级域名的配置等方面。   <一>. Nginx性能监控:  1. 查看Nginx的版本:  nginx -v   2. 查看Nginx安装配置的详细模块:  nginx -V      可以看到Nginx安装时,已经安装了用于性能监控的模块--with-http_stub_status_module    3. 配置nginx.conf,允许通过HTTP方式访问性能监控页面 ...
Global site tag (gtag.js) - Google Analytics