Java
文章平均质量分 76
whitejava2
这个作者很懒,什么都没留下…
展开
-
浅谈Java集合框架
集合框架最大的作用就是维护一组类型相同的对象。只是不同的类有不同的行为和性能。通常关注以下这些行为:能否存放重复的元素遍历的顺序是怎样的是否支持多线程下面首先介绍集合的常用,随后根据每种行为分别进行讨论。常用操作常用的操作一般就是增加删除查询。常用的增加操作有add、addAll,常用的删除操作有remove、removeAll,常用的读取操作有contains、get原创 2014-06-27 20:20:17 · 841 阅读 · 0 评论 -
ElasticSearch:剖析query_and_fetch和query_then_fetch的区别
在ElasticSearch实际使用中遇到了一个问题,就是在数据量很大的情况下做聚合查询(aggregation)会导致内存溢出。当时看了文档,猜测修改search_type能避免内存溢出。实际测试发现,在数据量相同的情况下,search_type设置为query_and_fetch的聚合查询不会导致内存溢出,而默认的query_then_fetch则会内存溢出。本文就从源码层面分析这两种searc原创 2015-06-08 21:48:24 · 15773 阅读 · 0 评论 -
开发工具系列(一):Btrace——线上Debug工具
BtraceBtrace用于调试正在运行的系统,并且在调试时不会暂停系统。特别适用于跟踪线上问题。你可以实时监控一个系统中任何一个方法的调用,你可以知道这些方法的参数、返回值是什么,还可以知道方法调用消耗了多少时间。Btrace不需要安装,只要下载一个包,解压即可。Btrace用法为bin/btrace 。其中pid是正在运行的java进程,trace-script是跟踪原创 2014-12-23 21:15:50 · 3449 阅读 · 1 评论 -
Java RMI 用法总结
RMI就是远程方法调用的简写。顾名思义,就是让一台机器上的对象调用另外一个机器上的对象。RMI的用法非常简单,首先是服务端定义一个接口(接口要扩展Remote接口),再实现这个接口(要扩展UnicastRemoteObject),再绑定到Naming静态类中。客户端通过Naming获取一个远程对象,就可以像普通的对象一样调用远程对象了。RMI中有个Stub类,它的作用就是代理服务器的接口对象,负责原创 2014-08-11 19:34:48 · 1753 阅读 · 0 评论 -
Java Servlet 总结
Servlet是一个接口,接口中有5个方法:init、service、destroy、getServletInfo、getServletConfig。对于Servlet来说,生命周期就是init,service,destroy三步,其中service可能会调用多次。GenericServlet实现了Servlet接口,它只是通用的Servlet,和协议无关。HttpServlet继原创 2014-08-11 19:37:19 · 856 阅读 · 0 评论 -
Java NIO读书笔记
简介NIO的作用就是改进程序的性能。因为有时候程序的性能瓶颈不再是CPU,而是IO。这时候NIO就派上用场了。NIO的原理就是尽量利用系统底层的资源来提高效率,比如利用DMA硬件减小CPU负荷,利用操作系统的epoll机制避免线程频繁切换。通过底层资源提高系统的吞吐量。缓冲区缓冲区就是一个固定大小的一组数据。缓冲区有四个非常重要的属性:容量,限制,位置,标记。容量就是一个缓冲区原创 2014-07-30 21:11:28 · 1055 阅读 · 0 评论 -
Java反射机制的用法
Java的反射机制允许你在程序运行的过程中获取类定义的细节。有时候在程序运行的时候才得知要调用哪个方法,这时候反射机制就派上用场了。获取类类的获取方法有以下几种: forName()。通过Class.forName()获取与字符串向对应的类。比如\lstinline{Class.forName("java.lang.String");}。 getClass()。原创 2014-07-01 21:37:13 · 916 阅读 · 0 评论 -
Java如何访问private变量?
大家都知道private变量是无法访问的,一编译就报错根本无法访问啊。本文教你如何破解这种限制。实现的原理是利用了Java的反射机制。首先定义一个最简单的类,只有一个私有变量和一个公开的方法。代码如下:class Foo { private String message = "This is a Foo."; public void show()原创 2014-07-01 21:39:21 · 11447 阅读 · 1 评论 -
Java中PhantomReference、WeakReference、SoftReference有什么区别?
Java中有多种引用类型,按照从强到弱的顺序分别如下: 强引用:就是最常见的引用,通过等号赋值就是强引用。软引用:当内存不足时自动释放引用。一般应用于需要大量内存的缓存程序中。弱引用:不阻止垃圾回收,当强引用或者软引用都消失时,即使存在弱引用内存也会被释放。幽灵引用:只引用一个对象的“灵魂”,幽灵引用是不能直接访问的,所以get方法永远返回null。这种引用能阻止JVM释放对象的内存,但是原创 2014-07-01 21:37:09 · 1204 阅读 · 0 评论 -
浅谈Java的匿名类
在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码。就像下面这样。那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗?思考以下代码的输出是什么?Runnable x = new Runnable() { @Override public void run() { System.out.p原创 2016-10-04 11:11:38 · 2361 阅读 · 0 评论