Java
文章平均质量分 62
NPPPNHHH
Never trust the client
展开
-
Java ClassLoader 和热加载
热加载:对jvm方法区中类定义进行替换,因为堆(heap)中的Class对象是对方法区对象的封装,所以可以理解为对Class对象的替换, 当一个class被替换后,系统无需重启,替换的类会立即生效。 类加载 类的加载过程 装载:查找并加载类的二进制数据; 链接: 验证:确保被加载类的正确性; 验证阶段是链接阶段的第一步,目的就是确保cla...转载 2019-01-22 18:28:02 · 713 阅读 · 0 评论 -
Java反射机制
一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.Drive转载 2015-02-10 16:00:31 · 640 阅读 · 0 评论 -
log配置
Resin中对日志的设置主要有如下参数:log、logger、access-log、stdout-log和stderr-log。前两个放 在标签,也就是主标签下面,可以输出jdk、resin初始化加载之类的信息;后面三个*-log放在或下面,access用于HTTP输 出,stdout用于标准输出(System.out),stderr用于错误输出(System.err,对应log4j中的l转载 2015-02-10 11:34:51 · 1039 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足转载 2015-02-09 18:15:30 · 1044 阅读 · 0 评论 -
多线程处理for循环
package Thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicInteger;public class TestThreadPool { private static原创 2014-09-28 11:15:37 · 11235 阅读 · 1 评论 -
Ant_的最完整build.xml解释
Ant的概念Make命令是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初Ant开发者在开发跨平台的应用时,用样也是基于这些缺陷对Ant做了更好的设计。Ant 与 makefileMakefile有一些不足之处,比如很多人都会碰到的烦人的Tab问题。最初的Ant开发者多次强调”只是转载 2014-09-10 15:44:54 · 1543 阅读 · 0 评论 -
游戏客户端和服务器 大数据 压缩
package compress;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.GZIPInputStream;import java原创 2014-07-29 17:28:42 · 2227 阅读 · 0 评论 -
Java的注解机制——Spring自动装配的实现原理
JDK1.5加入了对注解机制的支持,实际上我学习Java的时候就已经使用JDK1.6了,而且除了@Override和@SuppressWarnings(后者还是IDE给生成的……)之外没接触过其他的。 进入公司前的面试,技术人员就问了我关于注解的问题,我就说可以生成chm手册……现在想起来真囧,注释和注解被我搞得完全一样了。 使用注解主要是在需要使用Spring框架的时候,特别转载 2014-06-03 14:38:02 · 1454 阅读 · 0 评论 -
Java Math的 floor,round和ceil的总结
floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数(当-1.5时可见,四舍五入后得到的结果不是我们期待的,解决办法是先对他取绝对值,然后在用round方法)round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11转载 2014-06-03 13:53:13 · 748 阅读 · 0 评论 -
Concurrent包中强大的并发集合类
我们平时写程序需要经常用到集合类,比如ArrayList、HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行操作,否则会出现错误,例如下面程序:[java] public class CollectionModifyExceptionTest { public static void m转载 2014-06-16 09:58:45 · 855 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2014-07-07 11:45:29 · 897 阅读 · 0 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2014-06-16 10:02:13 · 624 阅读 · 0 评论 -
随机物品权重算法DEMO
package Test;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Random;public class weight { public static void main(String[] args) throws Exceptio原创 2014-07-23 19:55:19 · 1210 阅读 · 0 评论 -
Ant之build.xml详解
Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初Ant开发者在开发跨平台的应用时,用样也是转载 2014-05-24 16:37:59 · 639 阅读 · 0 评论 -
DateUtil
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;public class DateUtil {原创 2014-06-04 16:33:35 · 3493 阅读 · 0 评论 -
自定义JSON与Object互转工具类(一)
在服务器与客户端交互的过程中,使用JSON格式的数据传输已经是相当普遍的选择。谷歌也专门为之提供了GSON包。这里我们不讨论GSON的使用,而是自定义一个工具类,来实现JSON与Object之间的互转。废话不多说,先来看一个实例:首先定义一个POJO对象User[java] view plaincopypubl转载 2014-06-24 12:33:50 · 14350 阅读 · 2 评论 -
Apache的对象池化工具commons-pool
1. 前言当我们的应用中创建一个十分最重量级的对象的时候,往往为了节省资源成本,使用单例模式,整个的应用中就只有一个对象供大家使用。这样是节省了不少资源,也是大多数应用的做法。不过如果遇到并发量十分大的情况下,并发访问的问题也就出现了。OK即使您不用加锁synchronized,利用ThreadLoacl进行安全变量的副本,但是维持变量副本的资源也是需要消耗资源的。而且对于一个重量转载 2015-02-10 16:07:51 · 919 阅读 · 0 评论 -
RSA加密解密
RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与转载 2015-03-12 15:24:26 · 2481 阅读 · 0 评论 -
java内存模型以及happens-before规则
1. JMM的介绍在上一篇文章中总结了线程的状态转换和一些基本操作,对多线程已经有一点基本的认识了,如果多线程编程只有这么简单,那我们就不必费劲周折的去学习它了。在多线程中稍微不注意就会出现线程安全问题,那么什么是线程安全问题?我的认识是,在多线程下代码执行的结果与预期正确的结果不一致,该代码就是线程不安全的,否则则是线程安全的。虽然这种回答似乎不能获取什么内容,可以google下。在<...转载 2019-01-05 15:36:42 · 467 阅读 · 0 评论 -
JVM原理讲解和调优
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Ja...转载 2018-08-02 20:15:49 · 595 阅读 · 0 评论 -
Java服务器热部署的实现原理
今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了。前几天又有同事在讨论这个问题。这里拿来分享一下。在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署。热部署的目的很简单,就是为了节省应用开发和发布的时间。比如,我们在使用Tomcat或者Jboss等应用服务器开发应用时,我们经常会开启热部署功能。热部署,简单点来说,就是我们将打包好的应用直...转载 2018-05-14 12:00:02 · 430 阅读 · 0 评论 -
Java中的多线程你只要看这一篇就够了
引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都转载 2018-01-24 17:58:30 · 441 阅读 · 0 评论 -
Java虚拟机工作原理
Java虚拟机工作原理 首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件,然后JRE加载Java字节码文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转化为转载 2018-01-11 16:23:14 · 418 阅读 · 0 评论 -
Java内存管理:深入Java内存区域
本文引用自:深入理解Java虚拟机的第2章内容 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述: 对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。转载 2017-10-25 17:39:27 · 372 阅读 · 0 评论 -
Java内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性转载 2017-05-16 22:05:30 · 374 阅读 · 0 评论 -
java成神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap, jcon转载 2017-05-03 15:01:55 · 989 阅读 · 0 评论 -
关于一些nio的问题资料
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据转载 2017-04-19 14:46:41 · 420 阅读 · 0 评论 -
Java中的BIO、NIO、AIO(NIO2)
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙转载 2017-04-19 17:45:47 · 453 阅读 · 0 评论 -
Reactor模式,或者叫反应器模式
Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。 并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。 先用比较直观的方式来介绍一下这种方式的优点,通过和常用的转载 2017-04-19 10:44:08 · 445 阅读 · 2 评论 -
log4j的用法
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中实际使用最多的还是log4j, 人们遗忘了sun的日志工具类。转载 2017-03-16 14:24:19 · 518 阅读 · 0 评论 -
拦截器中读取request中的流后,controller 无法获取到数据解决方案
一般我们会在InterceptorAdapter拦截器中对请求的token进行验证如果是content-type 是 application/x-www-form-urlencoded 则没有什么问题如果我们的接口是用@RequestBody来接受数据,那么我们在拦截器中验证token时需要读取request的输入流 ,因为 ServletRequest中getReader()原创 2017-02-06 15:18:25 · 15330 阅读 · 4 评论 -
关于springmvc跨域
关于跨域问题,主要用的比较多的是cros跨域。详细介绍请看https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS 但是,在springmvc+angularjs下支持跨域请求时,出现复杂跨域场景(post + json)失败的情况。开始的跨域配置如下:public c转载 2016-06-17 20:15:17 · 1370 阅读 · 0 评论 -
Linux 配置jdk
用文本编辑器打开/etc/profile,在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH ex转载 2015-12-25 20:02:04 · 429 阅读 · 0 评论 -
到底EJB是什么
到底EJB是什么?被口口相传的神神秘秘的,百度一番,总觉得没有讲清楚的,仍觉得一头雾水。百度了很久,也从网络的文章的只言片语中,渐渐有了头绪。 用通俗话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。是的,没错!EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用。快崩溃了吧转载 2014-04-17 11:20:22 · 726 阅读 · 0 评论 -
读取HTTP链接文件 到本地文件
package com.test1;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingExce原创 2014-03-07 14:46:20 · 7675 阅读 · 0 评论 -
线程常见笔试题
<br />问题一:sleep与wait区别<br /> 其实两者都可以让线程暂停一段时间,但是本质的区别是一个线程的运行状态控制,一个是线程之间的通讯的问题<br /> 在java.lang.thread类中,提供了sleep(),<br /> 而java.lang.object类中提供了wait(),notify()和notifyall()方法来操作线程<br /> sleep()可以将一个线程睡眠,参数可以指定一个时间。<br /> 而wait()可以将一个线程挂起,直到超时或者该线程被唤醒原创 2011-03-21 15:14:00 · 1209 阅读 · 0 评论 -
几个正则表达式的备忘
1、身份证号正则表达式15位 /^[1-9]/d{7}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{3}$/ /^[1-9]/d{7}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{3}$/2、身份证号正则表达式18位 /^[1-9]/d{5}[1-9]/d{3}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])((/d{4})|/d{3}[A-Z])$/ /^[1-9]/d{5}[1-9]/d{3}((0/d)|(1[原创 2011-03-17 16:02:00 · 765 阅读 · 0 评论 -
java web程序打war包
使用MyEclipse 将 java web程序打war包方法:在server中找到你要发布的服务器,如TOMCAT或WEBLOGIC服务器,在要完成的时候有两个单选的,,一个是Exploded Archive ;一个是Packaged Archive第一个是发布成WEB,,第二个是发布成WAR,,也是在一个目录下!也就是在WebRoot上单击右键,选择Export选项,原创 2011-10-27 16:00:46 · 3706 阅读 · 0 评论 -
java 生成EXCEL 解决中文乱码问题
POI类库是JAVA平台下操作EXCEL的类库,功能很强大,相信大家都在工作已经使用得很熟练了,这里就不详细介绍了,简单的说, 一个Excel文件的层次:Excel文件->工作表->行->单元格 , 对应到POI中为:workbook->sheet->row->cell 。 今天要说的是在创建工作表时,用中文做文件名和工作表名会出现乱码的问题,先说以中文作为工作表名,大家创建工作表的转载 2013-12-23 10:05:06 · 9380 阅读 · 1 评论 -
JSP页面日期按格式显示!
使用FMT1、首先包引入:2、日期参数:Date: 2004/04/01:13:30:00 Java format: Thu Apr 01 13:30:00 CST 2004isoDate: 20040531T235959 Java format: Mon May 31 23:59:59 CDT 20043、标签结果:(日期显示) 显示格式:2004-4-1转载 2013-12-03 16:37:08 · 15133 阅读 · 0 评论