
JAVA
文章平均质量分 73
继续微笑lsj
眼界决定未来
展开
-
Hazelcast集群服务(1)——Hazelcast介绍
https://www.cnblogs.com/hunter-56213/p/6230442.htmlHazelcast是什么 “分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”——这些牛逼闪闪的名词拿到哪都是ITer装逼的不二之选。在Javaer的世界,有这样一个开源项目,只需要引入一个jar包、只需简单的配置和编码即可实现以上转载 2018-01-02 22:27:35 · 1447 阅读 · 0 评论 -
Timer和TimerTask详解
以下内容根据 The JavaTM Tutorial 和相关API doc翻译整理,以供日后参考:1.概览Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。简单的一个例程:import java.util.Timer;import转载 2016-11-09 22:08:22 · 531 阅读 · 0 评论 -
Zookeeper开源客户端框架Curator简介
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情, 于是在它的基础上包装了一下, 提供了一套更好用的客户端框架. Netflix在用ZooKeeper的过程中遇到的问题, 我们也遇到了, 所以开始研究一下, 首先从他在github上的源码, w转载 2016-10-04 20:41:17 · 561 阅读 · 0 评论 -
java发送邮件工具类
import java.util.Properties; import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingExcept转载 2016-09-20 19:10:04 · 1345 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2016-08-14 14:25:27 · 466 阅读 · 0 评论 -
灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
package com.app.json; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import com.app.entity.duapp.Address;转载 2016-08-20 15:44:40 · 1300 阅读 · 0 评论 -
MyBatis+MySQL 返回插入的主键ID
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。 方法:在mapper中指定keyProperty属性,示例如下:Xml代码 insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.ch转载 2016-07-11 18:22:08 · 412 阅读 · 0 评论 -
java filechannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc转载 2016-06-28 22:47:36 · 460 阅读 · 0 评论 -
Buffer类详解
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffe转载 2016-06-28 22:41:41 · 667 阅读 · 0 评论 -
Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示:import org.junit.Tes转载 2016-06-24 21:57:50 · 770 阅读 · 0 评论 -
java servlet开发
一、Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web服务器中。 按照一种约定俗成的称呼习惯转载 2016-11-09 23:07:31 · 457 阅读 · 0 评论 -
注解@PostConstruct与@PreDestroy讲解及实例
从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式:@PostConstructPublic void someMethod() {}转载 2016-11-09 23:42:29 · 462 阅读 · 0 评论 -
数据库连接池
一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示: 二、使用数据库连接池优化程序性能2.1、数据库连接池的基本概念 数据库连接是一种转载 2016-11-09 23:46:28 · 581 阅读 · 0 评论 -
MappedByteBuffer
java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer。 MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO最主要的就是实现了对异步操作的支持。其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器转载 2016-11-23 23:31:30 · 1043 阅读 · 0 评论 -
Spring 的 init-method 和 destory-method
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种是:通过 在xml中定义init-method 和 destory-method方法第三种是: 通过bean实现InitializingBean和 DisposableBean转载 2016-11-19 17:35:05 · 686 阅读 · 0 评论 -
<context:component-scan>使用说明
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。另外还提供了两个子标签1. 2. 在说明这两个子标签前,先说一下有一转载 2016-11-17 13:18:11 · 444 阅读 · 0 评论 -
mybatis 中的<![CDATA[ ]]>
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用来解决。 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。如果文本包含了很多的"但是有个问题那就是 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在转载 2016-11-12 16:11:12 · 595 阅读 · 0 评论 -
HttpServletResponse对象
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。一、HttpServletResponse对象介绍转载 2016-11-12 13:22:30 · 649 阅读 · 0 评论 -
Timeunit与sleep
TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),当然我确信你这样做过,那么你一定转载 2016-11-12 11:11:06 · 940 阅读 · 0 评论 -
java bigdecimal
首先我们先来看如下代码示例:1 public class Test_1 {2 public static void main(String[] args) {3 System.out.println(0.06+0.01);4 System.out.println(1.0-0.42);5 System.out.println转载 2016-11-12 11:06:58 · 539 阅读 · 0 评论 -
Filter学习
一、Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 Servlet API中提供了一个Fil转载 2016-11-09 23:55:59 · 399 阅读 · 0 评论 -
监听器(Listener)学习
一、监听器介绍1.1、监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。1.2、监听器案例——监听windo转载 2016-11-09 23:52:31 · 586 阅读 · 0 评论 -
java calender坑
5月31日的时候,很多Java的test case都莫名其妙的fail了。报的错误大意是“结束时间格式不对”。通过debug发现实际发送的结束时间为6月31日,当然不对了,6月哪儿来的31日呢。结束时间是通过获取当前,然后+2个月作为结束时间。设置时间是通过java.util.Calendar类来实现的。用Calendar.getInstance(TimeZone.getTimeZ转载 2016-06-01 20:12:04 · 576 阅读 · 0 评论 -
java cpu占用过大
使用jstack分析java程序cpu占用率过高的有关问题使用jstack分析java程序cpu占用率过高的问题1,使用jps查找出java进程的pid,如37072,使用top -p 14292 -H观察该进程中所有线程的CPU占用。[plain] view plain copy print?[root@cp01-game-转载 2016-05-24 22:59:39 · 907 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2016-04-14 15:48:01 · 441 阅读 · 0 评论 -
java中的常用包
1 、 java.lang 包: java 的核心类库,包含了运行java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、 线程、异常处理类等,系统缺省加载这个包。2 、 java.io 包 : java 语言的标准输入 / 输出类库 , 如基本输入 / 输出流、文件输入 / 输出、过滤输入 / 输出流等等。3 、 java.util 包: Java 的实用工具类库Jav原创 2013-10-15 09:31:28 · 3770 阅读 · 4 评论 -
StringTokenizer类的使用
StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(String str, String delim, boolean转载 2013-10-15 00:13:01 · 1074 阅读 · 0 评论 -
sleep和wait有什么区别
1、这两个方法来自不同的类分别是Thread和Object 2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在 任何地方使用(使用范围) synchronized(x){ x.notify(转载 2013-09-27 16:20:47 · 1216 阅读 · 0 评论 -
java中的abstract与interface
在这之前我想插一些C++与java常用语法上的区别,java新手。java与c++(1)继承采用的关键字 c++采用“:”,同时能控制public,protected,private继承(http://blog.youkuaiyun.com/lsjseu/article/details/9061347);java采用继承关键字“extends”,同时不能控制。原创 2013-10-03 11:32:04 · 1369 阅读 · 0 评论 -
java中的String与StringBuffer
两者的区别 java中的String是final类,不能被继承。String是不可变对象,一旦创建就不能改变。对于已经存在String对象我们要去修改都是要创建一个新的对象,然后把新的值保存进去。 例如:String s1 = new String(); String s2 = new String();原创 2013-10-03 01:19:45 · 1783 阅读 · 0 评论 -
java中的变量及变量类型转换
java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。java中的变量都属于一特定的数据类型,使用前必须申明,申明后必须赋初值。变量的分类: (1)按声明的位置分位:局部变量和成员变量。局部变量表示方法和语句块内部定义的变量,局部变量必须进行初始化;成员变量表示方法外部,类内部定义的变量,java默认对成员变量进行初始化,所以在定义时可以不赋初值。原创 2013-04-12 22:48:54 · 1805 阅读 · 0 评论 -
java中的object类
在Java中,任何一个类都扩展来自Object类。当没有为某一个类定义父类时,Java会自动定义Object类为其父类。object类的一些常用方法:(1)public String toString() Object类定义了toString()方法,打印输出对象所属的类名和散列码。建议子类重写该类,当需要字符串的地方,系统自动调用该对象的toString()方法。object定义了自原创 2013-08-26 22:00:54 · 1151 阅读 · 0 评论 -
java中线程的创建
一个exe是一个进程,一个exe有一个main函数表示一个主线程,一个线程可以生成多个线程。当一进程要执行,代码必须要调入内存,表示准备执行。 Java里面的线程通过java.lang.thread这个类来实现的,每一个thread对象代表一个新的线程。通过thread类的start方法来启动一个线程。 java中创建新的线程(1)实现一个类的runnab原创 2013-09-29 19:59:25 · 1413 阅读 · 0 评论 -
Java虚拟机工作原理详解
转自:http://blog.youkuaiyun.com/bingduanlbd/article/details/8363734一、类加载器首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入[java转载 2013-09-30 09:43:16 · 1110 阅读 · 0 评论 -
java的垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放转载 2013-10-20 10:20:52 · 1211 阅读 · 0 评论 -
java静态内部类
如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着: 1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象转载 2013-11-12 00:47:44 · 1869 阅读 · 0 评论 -
Java类中static的用法
转自:http://blog.youkuaiyun.com/monster1/article/details/6210463关于Java中static的使用有以下四种情况:1、静态成员变量 被static修饰的成员变量,叫静态成员变量或类变量;没有被static修饰的变量,叫实例变量。两者的区别是: 静态成员变量在内存中只有一个拷贝(节省内存),JVM转载 2013-11-11 20:06:56 · 1402 阅读 · 0 评论 -
用 IntelliJ IDEA 新建 JAVA 工程
打开 IntelliJ IDEA,在向导中选择“Create New Project”在“New Project”选项卡中,为 Project 命名,这次我们将工程命名为 HelloWorld点“next”进行下一步,然后直接点“finish”完成创建。在右侧的项目管理器中展开我们的“HelloWorld”,在“src”上右键,新建一个“Java Class转载 2016-03-24 09:38:13 · 2306 阅读 · 0 评论 -
Java RMI
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的EJB都是建立在rmi基础之上的,现转载 2016-03-08 20:20:39 · 396 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.Cy转载 2016-03-30 20:31:40 · 576 阅读 · 0 评论