![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 88
terry01203
计算机从业者
展开
-
guice 注入
Google Guice3.0:http://code.google.com/p/google-guice/ maven地址:Xml代码 dependency> groupId>com.google.injectgroupId> artifactId>guiceartifactId>原创 2016-11-27 01:31:02 · 800 阅读 · 0 评论 -
浅谈Java中的equals和==
在初学Java时,可能会经常碰到下面的代码:1 String str1 = new String("hello");2 String str2 = new String("hello");3 4 System.out.println(str1==str2);5 System.out.println(str1.equals(str2)); 为什么第4行和第5原创 2016-11-19 15:07:46 · 247 阅读 · 0 评论 -
maven内部运行原理解析(一)
编程技术 maven至今还是Java编程语言构建的事实标准,大部分项目还在使用maven来进行构建,因此了解maven内部运行的原理对定位和分析问题还是很有裨益的。本篇文章主要介绍一些maven内部运行过程中的一些基本概念,相信看完后,对那么些刚刚接触maven的读者来说maven将不再陌生。 在具体分析项目构建的过程前,需要了解maven的一些基本概念,这些概念十分重要,请务转载 2016-09-26 11:41:34 · 6802 阅读 · 6 评论 -
理解和正确使用Java中的断言(assert)
一、语法形式: Java2在1.4中新增了一个关键字:assert。在程序开发过程中使用它创建一个断言(assertion),它的语法形式有如下所示的两种形式:1、assert condition; 这里condition是一个必须为真(true)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动如果表达式为false,则断言失败,则会抛出一个Ass原创 2016-11-18 17:42:29 · 866 阅读 · 1 评论 -
JAVA 长度为0的数组和 null
长度为0的数组 int[] arr = new int[0],也称为空数组,虽然arr长度为0,但是依然是一个对象null数组,int[] arr = null;arr是一个数组类型的空引用。1. 编写api方法,进行参数校验时,不要漏掉空数组的情况比如下面这个计算递增子序列最大长度的方法,要考虑空数组的情况。[java] view plain copy原创 2016-11-18 14:45:05 · 4860 阅读 · 0 评论 -
Java虚拟机类加载机制
看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。public class SSClass{ static { System.out.println("SSClass"); }}原创 2016-11-15 10:23:36 · 264 阅读 · 0 评论 -
maven跳过单元测试-maven.test.skip和skipTests的区别
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。一 使用maven.test.skip,不但跳过单元测试的运行,也跳过测试转载 2016-11-16 20:07:01 · 523 阅读 · 0 评论 -
关于JAVA中的JNA
1、jna是什么jna是Javanative access的简称,用他可以调用C、C++代码,特别是windows中强大的库文件(dll,在Linux下是so文件),这样Java就可以操控底层的一些东西,比如调用加密机、智能卡之类的2、jna下载在maven下直接找jna就有,对应的jar包是jna-3.3.0.jar3、调用msvcrt.dll(这是windo原创 2016-11-29 14:31:29 · 1947 阅读 · 1 评论 -
org.apache.log4j.Logger详解
1.概述1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。 最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装原创 2016-11-16 16:29:38 · 322 阅读 · 0 评论 -
Elasticsearch Recovery详解
Elasticsearch Recovery详解基础知识点在Eleasticsearch中recovery指的就是一个索引的分片分配到另外一个节点的过程;一般在快照恢复、索引副本数变更、节点故障、节点重启时发生。由于master保存整个集群的状态信息,因此可以判断出哪些shard需要做再分配,以及分配到哪个结点,例如:如果某个shard主分片在,副分片所原创 2016-10-21 10:55:37 · 8501 阅读 · 0 评论 -
实战 Lucene,第 1 部分: 初识 Lucene
本文首先介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程。18评论朋 周登 (zhoudengpeng@yahoo.com.cn), 软件工程师2006 年 4 月 20 日内容在 IBM Bluemix 云平台上开发并部署您的下一个应用。开始您的试用转载 2016-10-08 17:09:42 · 246 阅读 · 0 评论 -
java 中的Unsafe
javaUnsafe在阅读AtomicInteger的源码时,看到了这个类:sum.msic.Unsafe,之前从没见过。所以花了点时间google了一下。 Unsafe的源码:http://www.docjar.com/html/api/sun/misc/Unsafe.java.html Unsafe源码中的描述如下: 写道A collectio原创 2016-10-20 20:05:43 · 259 阅读 · 0 评论 -
Java NIO系列教程(七) FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAcc原创 2016-11-21 11:02:17 · 209 阅读 · 0 评论 -
Java 7 新的 try-with-resources 语句,自动资源释放
从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。新的语句支持包括流以及任何可关闭的资源,例如,一般我们会编写如下代码来释放资源:?1234原创 2016-11-21 15:11:47 · 224 阅读 · 0 评论 -
java Pattern和Matcher详解
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅读本原创 2016-11-21 18:03:02 · 218 阅读 · 0 评论 -
Google-Guice入门介绍
目录(?)[+] 一. 概述Guice是一个轻量级的DI框架。本文对Guice的基本用法作以介绍。本文的所有例子基于Guice 3.0本文的很多代码来源于Guice主页:http://code.google.com/p/google-guice/wiki/GettingStarted考虑到是入门介绍,本文中并未涉及到AOP相关内容,如有需要还请参考上面链接。原创 2016-11-23 17:19:43 · 453 阅读 · 0 评论 -
Google Guice 系列教程 - 基础实践
前言Google Guice 是一个轻量级的依赖注入框架,它支持Java 5或者更高版本的JDK,得利于Java 5中提供的泛型 (Generics) 和注释 (Annotations) ,它可以使得代码类型安全 (type-safe) 。那么何时在代码中使用 Guice 进行注入呢?一般来说,如果在你的应用中业务对象 (Business Objects) 之间的关系或者依赖需要手动维护的原创 2016-11-26 23:20:30 · 2918 阅读 · 0 评论 -
Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。elasticsearch是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包原创 2016-11-26 17:54:38 · 418 阅读 · 0 评论 -
Google Guice 注入(@Inject注解)
上一节介绍通过注解来实现绑定关系,这一节介绍如何通过@Inject来完成依赖注入的功能:(1)属性注入(2)构造方法注入(3)setter方法注入一.属性注入(1)创建一个接口Hello.Java和一个实现类HelloImpl[java] view plain copy package guice.di; import com.google原创 2016-11-25 10:29:38 · 1862 阅读 · 0 评论 -
JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部原创 2016-11-23 20:25:46 · 292 阅读 · 0 评论 -
java在cmd环境下编译引用第三方jar包的类
背景本人之前也写过一遍关于java在cmd环境下如何编译、执行引用第三jar包的类的文章,具体的地址是:编译引用第三方jar包的类 。最近我一个做php的同学配到一个问题,别人给他们提供了一个接口,是连接数据库方面的,其中有php接口、java接口可供调用,他们为了对比java与php在接口的性能,他需要在自己的电脑上进行测试,可惜自己电脑上只有jre环境,没有开发环境,所以就需要在cmd原创 2016-11-23 16:49:34 · 6883 阅读 · 1 评论 -
编译引用第三方jar包的类
1、类带有包名,并且调用了第三方插件,解决外部编译的问题例如:包名为package excel.checkimport;将包放在根目录下,如:D:\excel\checkimport第三方插件放在跟目录下如:D:\jxl.jar具体的例子可参考文件夹中的列子:如果没有调用其他类的java文件直接编译就行如:javac D:\excel\checkimport\ParamFo原创 2016-11-23 16:51:16 · 942 阅读 · 0 评论 -
elasticsearch源码简读:程序启动
启动类:1.org.elasticsearch.bootstrap.Elasticsearch2.org.elasticsearch.bootstrap.ElasticsearchF,前台运行类,es.foreground=yes,否则不打印系统日志两个类都继承Bootstrap[java] view plain copy public static原创 2016-11-23 14:05:34 · 522 阅读 · 0 评论 -
log4j 级别(level)
所有的log4j的级别,这些级别都相当于一层层的过滤器Log4J LevelsTRACE LevelDEBUG LevelINFO LevelWARN LevelERROR LevelFATAL LevelTRACE LevelYYYYYYDEBUG LevelNYYYYY原创 2016-11-22 15:57:34 · 788 阅读 · 0 评论 -
CopyOnWriteArrayList详解
CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对原创 2016-11-22 14:14:20 · 293 阅读 · 0 评论 -
采用类加载器解决jar hell(jar冲突)有关问题
采用类加载器解决jar hell(jar冲突)问题问题描述:由于历史原因,系统采用了很早期的poi,而最新的poi和之前版本并不兼容,现在要系统要增加一个新功能,需要引入最新的jar文件,在不影响已有使用的基础上,我们如何处理该问题?解决方案:本人的思路是写一个类加载器,动态的加载所需的jar文件到一个单独的命名空间,由于jvm默认的类加载是采用父委托机制的,但在这里,类加载器的实原创 2016-11-21 21:43:16 · 2347 阅读 · 1 评论 -
static class 静态类(Java)
static class 静态类(Java) 一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使原创 2016-10-08 15:36:24 · 422 阅读 · 0 评论 -
java中的Static class
Java中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量(java 没有静态局部变量)、静态方法、静态块。类也可以是静态的。Java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。原创 2016-10-08 14:41:00 · 722 阅读 · 0 评论 -
JAVA基础之理解JNI原理
JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++)的动态库进行交互,给其它语言发挥优势的机会。有了JAVA标准平台的支持,使JNI模式更加易于实现和使用。在此总结了下面这个知识图:实例:环境说明:ubuntu 10.4.2 LTS系统程序清单1:src/com/magc/jni原创 2016-10-12 10:39:42 · 571 阅读 · 1 评论 -
深入分析Java ClassLoader原理
目录(?)[+]一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的原创 2016-10-11 20:45:45 · 557 阅读 · 0 评论 -
JAVA泛型简析
泛型是JDK1.5支持的新功能之一,在目前的JAVA编程中被广泛的使用,下面我们就来看看泛型和它的属性。1、Java泛型 其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1、str2的值是可变的。而泛型也是一样的,这样写class Java_Generic原创 2016-10-11 20:23:42 · 609 阅读 · 0 评论 -
深入研究java.lang.Class类
Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。Class没有公共构造方法。Class对象是在加载类时由Java虚拟机以及通过调用类加载器中的defineC原创 2016-10-11 20:18:21 · 237 阅读 · 0 评论 -
Java 内存区域和GC机制
目录Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在J原创 2016-10-11 17:56:08 · 546 阅读 · 2 评论 -
Java注解教程及自定义注解
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容。在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解。Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate、Jersey、Spring。注解作为程序的元数据嵌入到程序当中。注解可以被一些解析工具或者是编译工具进行解析。我们也可以声明注解在编译过程或执行时原创 2016-10-21 17:44:04 · 320 阅读 · 0 评论 -
Java transient关键字使用小记
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属原创 2016-10-10 20:59:46 · 382 阅读 · 0 评论 -
mvel2.0语法指南
虽然mvel吸收了大量的java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。 除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语转载 2016-09-23 16:50:04 · 472 阅读 · 0 评论 -
mvel2.0语法指南
虽然mvel吸收了大量的java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。 除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语转载 2016-09-23 16:48:41 · 721 阅读 · 0 评论 -
mvel2.0语法指南
虽然mvel吸收了大量的java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。 除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语转载 2016-09-23 16:47:22 · 1977 阅读 · 0 评论 -
mvel2.0语法指南
虽然mvel吸收了大量的java语法,但作为一个表达式语言,还是有着很多重要的不同之处,以达到更高的效率,比如:mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。 除了表达式语言外,mvel还提供了用来配置和构造字符串的模板语言。mvel2.x表达式包含以下部分的内容:属性表达式,布尔表达式,方法调用,变量赋值,函数定义。一、基本语法MVEL 是一种基于java语转载 2016-09-23 16:45:39 · 676 阅读 · 0 评论 -
JVM系列三:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同原创 2016-10-12 14:30:03 · 408 阅读 · 0 评论