自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 9.使用jvisualVm监控本地,线上jvm

jvisualVm是jdk自带的可视化监控工具,功能很强大,可安装各种扩展插件。本篇不打算讲解如果使用详细的功能,只讲在windows环境怎么监控本地和远端(一般是无界面的linux系统)的java进程。首先安装jdk,打开的{JAVA_HOME}/bin目录,找到jvisualvm.exe程序,双击打开,如图:如上图,左边是本地和远程的java进程,右边是该工具的使用

2016-05-04 13:45:22 4456 1

原创 6.jdk命令行工具

JAVA_HOME\bin目录下可执行文件,本篇介绍的工具全部基于windows平台下的JDK 1.6,版本和操作系统不同会有不同。名称主要功能jpsJVM Process Status Tool,显示指定系统内所有HotSpot虚拟机进程jstatJVM Statistics Minitoring Tool,用于收集

2016-05-03 19:09:20 1299

原创 1.深入理解java集合List

下图是java集合框架图,Collection、Map是集合框架的顶级类,Iterator是集合迭代器。Collection介绍(主要讲解实现类,主要特点,适用场景,实现原理)1、List接口,主要实现类Vector、ArrayList、LinkedList    (1)Vector  ,如下图源码结构,可以看出Vector主要有3个成员变量,elementData是Vecto

2016-05-03 19:06:23 689

原创 5.垃圾收集器总结

垃圾收集器就是jvm垃圾收集机制的算法实现,常用垃圾收集器分类:1、从垃圾收集器执行区域来分,分为新生代、老年代收集器2、从收集方式来分,分为串行收集器、并行收集器、并发收集器这里解释一下并行和并发并行:并行是指两个或者多个事件在同一时刻发生(多个处理器同时处理多个任务,这里就是多个任务并行执行,强调同时执行)并发:是指两个或多个事件在同一时间间隔内发生(单个处理器处理多个任务

2016-05-03 18:59:29 1304

原创 jvm垃圾收集策略和算法

首先我们思考一下为什么jvm需要垃圾回收,那些地方需要垃圾回收,什么是垃圾?1、为什么jvm需要垃圾回收:因为java是实现自动内存管理,程序在申请使用内存时不像C++那样手动申请和释放内存,所以java需要回收已使用的内存2、垃圾回收区域:jvm运行时内存结构:程序计数器、java虚拟机栈、本地方法栈、方法区、堆,我们知道线程私有的区域是会随线程的死亡而自动释放内存,而在运行时线程共享的

2016-04-25 00:40:00 835

原创 java对象内存模型

jvm运行时内存分为程序计数器、java虚拟机栈、本地方法栈、方法区、堆这几个区域。那他们是怎么存储对象的,对象内部信息又是怎么存放的?带着这几个问题我们谈论下对象的创建过程,存储和访问。我们先上一段简单的代码,看看对象的信息如何存储的//A类的信息、方法、字段信息存储在方法区里public class A{    private static int i=0;    //静态变量

2016-04-24 16:54:25 2955

原创 jvm运行时内存

java虚拟机,可以把它理解为跑在操作系统之上的虚拟机,它是实现java平台无关的重要机制(因为编译后的java程序:class文件是在jvm中执行的),所以要运行java程序必须先要安装jvm。常用jvm实现:既然jvm作为虚拟机,很显然它被作为一台机器使用,根据冯诺依曼计算机架构,就会分处理器、内存、IO等,因为java程序是自动分配内存和回收内存的,所以这里我们重点讨论jvm自动内存

2016-04-24 16:51:14 478

原创 redis使用规范

由于每个业务对redis的使用情况是不同的,单独为每个数据结构进行限制,无疑会对开发的进度和难度造成巨大影响,也失去了使用redis丰富的数据结构而不是memcached的初衷。所以只提几条如何用好redis的建议,望各位能够采纳。如何用好redisslowlogredis的slowlog是参考redis集群瓶颈优化的一个点当业务出现性能瓶颈的时候,可以分析slowlog里占用

2015-08-16 21:56:31 2385

原创 redis简介

Redis是一个使用C语言开发的开源高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色    redis的高效是因为redis将数据储存在内存中,同时也支持持久化到磁盘里    redis操作简单,性能高效,稳定易学,基本可以胜任数据库的功能(事务、主从同步、储存过程:可以用自定义脚本实现、备份等)

2015-08-16 21:54:56 572

原创 初识数据库分表

分表是分散数据库压力的好方法。分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到千万级别时就要使用分表了。1,分表的分类1>纵向分表将本来可以在同一个表的内容,人为划分为多个表。(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的。)分表理由:根据

2014-03-26 13:52:05 457

转载 LVS集群

1 集群:就是多台计算机为一件事情协同工作  HA :高可用集群  Client:来自internet上的客户端  RealServer :被访问的服务器,就是集群里被访问的服务器  DGW:eth1_ip公网IP,eth0_ip私网IP  RIP:Real_Server IP,私网IP,与DIP是同子网。(可以使用公网IP,但为了节省公网       5 负载均衡产品

2014-02-22 23:52:48 641

转载 Linux负载均衡软件LVS之二

一、  安装LVS软件1.安装前准备工作操作系统:统一采用Centos4.4版本。地址规划,如表1所示:表1 更详细的信息如图2所示: 图2  LVS DR模式安装部署结构图 图2中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务IP,在DR、TUN模式中,数据包是直接返回给用户的,所以,在Director Serv

2014-02-22 23:23:54 631

转载 Linux负载均衡软件LVS之一

一、 LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能

2014-02-22 23:13:53 599

转载 ApacheBench简介

简介ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。一个简单的例子/*在这个例子的

2013-12-11 10:53:39 897

转载 你应当知道的Java牛人

Java领域有很多著名的人物,他们为Java社区编写框架、产品、工具或撰写书籍改变了Java编程的方式。本文是《最受欢迎的8位Java牛人》的2.0版本。PS:排名不分先后。本文的信息整理自网络博客,信息的真实性未经过严格筛选和确认。1、James Duncan Davidson —— Tomcat 、 Ant他曾是一名软件工程师,现在是一名摄影师。1970年7月29日,J

2013-12-06 13:43:24 866

转载 为什么String类是不可变的

String是所有语言中最常用的一个类。我们知道在Java中,String是不可变的、final的。Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类。String类不可变性的好处只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变

2013-11-29 09:35:17 577

转载 JDK, JRE 和JVM

JDK, JRE 和JVM是Java编程语言的核心概念。尽管它们看起来差不多,作为程序员我们也不怎么关心这些概念,但是它们是不同的针对特定目的的产品。这是一道常见的java面试题,而本文则会一一解释这些概念并给出它们之间的区别。 Java 开发工具包 (JDK)Java开发工具包是Java环境的核心组件,并提供编译、调试和运行一个Java程序所需的所有工具,可执行文件和二进制文件。

2013-11-26 09:56:03 553

转载 TimeUnit类中的sleep() 和Thread.sleep()

TimeUnit是什么?TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),当然

2013-11-26 09:49:51 2178

转载 浅析求素数算法

注意: 如果没有特殊说明, 以下讨论的都是针对n为素数时的时间复杂度1. 根据概念判断:如果一个正整数只有两个因子, 1和p,则称p为素数.代码:bool isPrime(int n){ if(n < 2) return false; for(int i = 2; i < n; ++i) if(n%i == 0) retur

2013-11-13 11:41:09 646

转载 visualvm监控远程机器上的Java程序

JDK里面本身就带了很多的监控工具,如JConsole等。我们今天要讲的这款工具visualvm,就是其中的一款。但是这款工具是在JDK1.6.07及以上才有的。它能够对JAVA程序的JVM堆、线程、类加载情况、JVM GC情况进行监控,是一个很好的免费的监控工具。监控范围:JDK1.4及以上版本的程序都能够监控。它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载

2013-11-13 11:39:04 2345

转载 java 虚拟机参数配置详解

堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在WindowsServer 2003系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3550m -

2013-11-08 10:40:29 714

转载 jvm server和client模式切换

Jvm动态库有client和server两个版本,分别针对桌面应用和服务器应用做了相应的优化,client版本加 载速度较快,server版本加载速度较慢但运行起来较快。   让Tomcat 使用Server版本的jvm吧  在开始菜单 tomcat5 ->tomcat config的java属性中 有一项 jvm路径 指向server目录下的jvm就行了。  启动速度对比一下,在我的C4

2013-11-07 23:15:23 1341

转载 深入理解java.lang.ProcessBuilder类

一、概述      ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。      每个 ProcessBuilder 实例管理一个进程属性集。它的start() 方法利用这些属性创建一个新的 Process

2013-09-26 12:03:05 1170

转载 深入理解java.lang.Process类

一、概述      Process类是一个抽象类(所有的方法均是抽象的),封装了一个进程(即一个执行程序)。      Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。      ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该

2013-09-25 17:45:56 1125

转载 深入java Runtime类

一、概述      Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。      一旦得到了一个当前的Runtime对象的引用,就

2013-09-25 17:37:12 634

原创 java工程使用log4j和properties文件详细配置

java工程源代码:(注释部分是使用配置文件方式,也可以使用XML文件,如果同时存在XML和properties默认使用XML)import org.apache.log4j.ConsoleAppender;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.S

2013-05-30 11:54:17 1790

转载 log4j使用和配置

一、简介  在程序中输出信息的目的有三:一是监视程序运行情况;一是将程序的运行情况记录到日志文件中,以备将来查看;一是做为调试器。但信息输出的手段不仅限于System.out.println()或System.out.print(),还有日志记录工具可以选择。与System.out.pringln()和System.out.print()相比,日志记录工具可以控制输出级别,并且可以在配置文件中

2013-05-30 11:24:33 1382

转载 设计模式之状态模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:  状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。  状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构  用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每

2013-05-17 11:44:05 499

原创 一张图解释UML类图

在画UML图时,比较常搞不清楚依赖、聚合、组合、泛化的关系!简单点讲,我认为依赖关系表现在代码里面就是某个类的方法参数或者局部变量使用的另外一个类,这样两个类就是依赖关系!而聚合与组合都是关联关系,区别是组合强调整体是由不可分割的个体组成的,也就是一个类是另一个的一部分,比如鸟和翅膀的关系!聚合和组合在代码中的表现为某个类的成员变量是另外一个类,关联关系比依赖强!泛化就是继承的意思,比较好理解。一

2013-05-16 12:00:06 1208

转载 设计模式实例之工厂方法模式( Factory Method Pattern) 2

一、工厂方法模式简介(Brief Introduction)工厂方法模式(Factory Method Pattern),定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类中。二、解决的问题(What To Solve)       工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放-封闭原则。工厂方法使一个类的实例化延迟到其子

2013-05-15 14:55:29 810

原创 常用UML建模工具

UML不算是个新名词,但是实际中还是用得很少(可能是因为都是做小项目的原因吧,大项目就用得多了).UML是个好东西,但是过分的依赖于UML也不是一件好事,因为有时候它会把简单的东西复杂化.即使是代码的优良结构和可重用性也不能作为强制使用UML借口,良好的算法完全可以替代部分不必要的设计模块,或者说,其实有更好的UML设计你没有发现.1,RationalRose:大恐龙,小项目中难以

2013-05-15 11:21:37 881

转载 Net设计模式实例之简单工厂模式(Simple Factory Pattern)

一、简单工厂模式简介(Bref Introduction)       简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖二、解决的问题(What To Solve)       客户实例化对象时不需要关心该对象是由哪个子类实例化的。三、简单工厂模式分析(

2013-05-15 11:15:13 653

原创 常见加密算法java实现(MD5,SHA-256,SHA-512)

commons-codec-1.5.jar包下已经实现了有常见的加密算法,下面是几种常见的加密算法实现,使用很方便,很简单!这个连接是DigestUtils方法的使用API文档:http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html

2013-05-14 10:39:59 7403

转载 JAVA反射性能测试和应用场景

通过对比静态调用与类反射调用方法的效率,来了解现代框架中大量应用的反射调用对性能的影响程度。以便在系统架构中对性能与开发便利性之间进行权衡与取舍。代码1: view plaincopy to clipboardprint?·········10········20········30········40········50········60········70····

2013-05-07 16:32:53 725

转载 Java 反射机制中 getMethod()和getDeclaredMethod()区别

今天在程序中用到java反射机制时,遇到的问题记录一下:我当时遇到的问题是,我用反射getMethod()调用类方法时,发生 NoSuchMethodException异常,后来上网发现getMethod()调用公共方法,不能反射调用私有方法,后来找到 getDeclaredField()能够访问本类中定义的所有方法。后来用这个方法解决了我遇到的问题。我查了java api文档,其中详细说明如下:

2013-05-07 16:12:50 9292

转载 Ant命令总结

1 Ant是什么? Apache Ant 是一个基于 Java的生成工具。生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本2 下载、安装Ant 安装Ant下载.zip文件,解压缩到c:\a

2013-05-06 10:36:42 886

转载 JAX-WS使用wsgen和wsimport从Java创建WebService

概念 JAX-WS2.0的全称Java API for XML-Based Web Service 2.0.JAX-WS2.0是对JAX-RPC1.0规范的扩展,是JAX-RPC1.1的后续版本,JAX-RPC2.0标准发布不久后就被重命名为JAX-WS2.0.JAX-WS2.0是Sun新的Web service协议栈,是一个完全基于标准实现的。在binding层,使用的是the Java

2013-05-06 09:37:59 1486

原创 使用POI3.8导出大数据excel方法(解决内存溢出)

工作中遇到大数据导出excel内存溢出的问题,在使用jxl和POI3.8之前的版本都找不到很好的解决办法,通过设置jvm内存效果也不理想。但是在POI3.8以上版本中提供了SXSSFWorkbook的新类,可以通过参数设置常驻内存中的行数,防止OOM异常!但是SXSSFWorkbook仅仅支持excel2007格式,也就是说SXSSFWorkbook只支持.xlsx格式,不支持.xls格式。在

2013-04-28 16:27:48 5124

转载 java 是如何管理内存的

转载自 ---- http://yangzhiyong77.iteye.com/blog/1468175 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题。(两部分)分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间(基本类型除外),所有的对象都在堆 (Heap)中分配空间。释放:对象的释放是由垃圾回收机制

2013-04-18 13:19:48 757 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除