
basic of java
文章平均质量分 60
jzq1999
这个作者很懒,什么都没留下…
展开
-
log4j的用法
1. 打印错误的详细 stack信息try{ // code here}catch(Exception e){ log.error("APP错误", e);}原创 2014-12-01 17:42:27 · 98 阅读 · 0 评论 -
获得客户端真实IP
/** * 获得客户端真实IP */ public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown"....原创 2013-06-08 08:47:00 · 80 阅读 · 0 评论 -
java的多态性
多态包括重写(override)和重载(overload),重写发生在超类和子类之间,子类覆盖超类的方法。重载发生在同一个类中,方法名字相同,方法的形式参数和返回值不同。 参阅了一下csdn上一篇讲解多态的帖子http://blog.youkuaiyun.com/thinkghoster/article/details/2307001,运行代码如下: package com.base.oo;...原创 2012-11-07 14:55:52 · 79 阅读 · 0 评论 -
java修改文件内容
在实际应用中遇到一个问题,把从网上看到的代码复制到本地进行运行,但网上代码有很多数字标号,需要去掉, package com.homeblog.servlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.htt...原创 2011-11-22 10:25:36 · 117 阅读 · 0 评论 -
java只有值传递?
传统的看法认为,java有两种传递,值传递和引用传递,值传递是基本数据类型的传递,如int,long,byte,引用传递是对象传递时,实际传递的是栈空间对象地址的引用。有一种看法认为,引用传递实际也是值传递,因为传递的引用不是引用地址本身,而是引用地址的拷贝,从这个意义上来说,也相当于把引用地址的值当作参数传递,同基本数据类型的传递是拷贝一份数据传过去,是相同的。请参考一下 cla...原创 2012-05-19 19:50:51 · 62 阅读 · 0 评论 -
String为什么被定义成final类型?
String被定义成final类型,这是众人周知。可是为什么要定义成final类型呢?一个解释是 main()方法的需要,main(String[] args)的参数String[] args如果是非final类,而又有类继承了String类,在运行main()时,传入String[]参数,这时的继承就没什么意义。还有一个解释是性能的需要,说如果类定义成final,所有的方法都是内联,性能...原创 2012-05-19 19:12:28 · 235 阅读 · 0 评论 -
Hibernate的强制加载策略
在hibernate的使用场景中,有的关联对象不需要立即查出,这样可使用fetch="FetchType.LAZY"策略,当需要立即需要特定对象时,可使用hibernate的强制加载策略方法 initialize(Proxy object),其实就是初始化对象的代理,比如在编辑页面里lazy=true,在查看页面里 lazy=false,就要用到强制加载。 /** *...原创 2012-05-15 19:42:29 · 127 阅读 · 0 评论 -
annotation for hibernate
@Controller控制器@Service @Conponent 组件@Repository Dao访问层@Entity 实体@Table 实体mapping表@Column 属性mapping列 ----> 不需要Mapping的时候用@Transient@Id mapping主键属性,可以将Entity中的某个属性标识为标识符(identifi...原创 2012-05-11 09:10:47 · 87 阅读 · 0 评论 -
tomcat7 ava.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
omcat7出来有一段时间了,以前也曾遭遇过“tomcat7 java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory”这个异常,前几天下载了tomcat7.0.27,今天心血来潮,在eclipse中使用tomcat7.0.27,又无例外地遭遇了这个异常,google了一下,http://zghbwjl.blog.163....原创 2012-05-10 10:51:01 · 249 阅读 · 0 评论 -
Java的可变参数机制
在使用DbUtils的QueryRunner的查询方法时,查看源代码,发现有方法的参数是 (Object...params),补了下功课,原来这是jdk1.5的特性---Varargs(可变参数)机制,这样可灵活用在需要不同参数的场合。如这样的示例代码: /** * Description: 查询单个结果 * @param sql * @param...原创 2012-05-08 14:46:39 · 142 阅读 · 0 评论 -
DBUtils使用心得
DbUtils在使用纯jdbc的项目中,独有天然优势,对ResultSet进行了wrapper,可以把ResultSet封装成bean类型,需要留意的是,表的字段与bean的属性相对应才可以,表字段在bean中要有对应的set和get方法,所以可看成是bean要遵守严格的JavaBean规范。在现实场景中经常字段是带有下划线,如user_id,在查询时可以使用select us...原创 2012-05-06 13:05:11 · 201 阅读 · 0 评论 -
常用的Java工具类
纵然,自己手写工具方法会很爽,但有些工具类还是值得参考:Display----- StringUtilsThe bread and butter of the commons-lang library, this utility class includes some methods that should seriously have been included in Stri...原创 2012-05-05 10:29:11 · 96 阅读 · 0 评论 -
Java拷贝文件性能的测试
从http://www.javabloger.com/article/java-copy-file-performance.html上看到Java拷贝文件的性能中介绍,使用NIO性能会很高,于是用NIO和org.apache.io.FileUtils的copyFile方法做了一下测试对比: package com.demo.test.file;import java.io.File...原创 2012-05-05 09:48:03 · 155 阅读 · 0 评论 -
java读取属性文件的方法
主要有两种:一是使用Class的getResourceAsStream方法:private static Properties props; private static final String DatabaseFilePath = "/database.properties"; static{ props = new Properties(); Inpu...原创 2012-05-04 08:39:18 · 106 阅读 · 0 评论 -
struts2接收参数的几种方式
1、使用action属性接收参数只需在action加入getter/setter方法,如参数name=a,接受到参数必须有getName/setName方法。链接:<a href="user/user!add?name=a&age=8">public class UserAction extends ActionSupport { private ...原创 2011-03-30 15:24:26 · 100 阅读 · 0 评论 -
spring读取配置文件的方式
一、解析classpath的应用上下文环境:ApplicationContext context = new ClassPathXmlApplicationContext("application-timer.xml");PropertiesBean propertiesBean = (PropertiesBean) context.getBean("propertiesBean");...原创 2010-12-07 16:47:51 · 92 阅读 · 0 评论 -
拦截器和过滤器的区别
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 ...原创 2010-12-06 18:06:49 · 82 阅读 · 0 评论 -
Java 时间操作
java.sql.Date精确到日,和MySql数据库的date类型相对应。所以在程序里可以用java.util.Date或java.sql.timestamp记录时间,可以精确到秒。MySql的时间类型,用Datetime或Timestamp都可以精确到秒,date类型只精确到日。...原创 2010-12-01 12:00:56 · 89 阅读 · 0 评论 -
maven的pom文件
pom.xml打jar包时加入依赖的包:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mav...原创 2014-07-10 19:23:37 · 89 阅读 · 0 评论 -
Maven常见问题
1. Referenced Projects Classpath Entries如果在配置Deploy Assemble时,增加Maven的依赖Add的是Referenced Projects Classpath Entries,在Debug时遇到“Class Not found”,可能是Maven的包没有发布到WEB-INF/LIB目录下,这时到project的目录下,打开.clas...原创 2014-07-22 09:43:10 · 89 阅读 · 0 评论 -
Java中文乱码问题的解决方案
在WebService调用中,经常会发生中文乱码问题,除了服务器的配置(如tomcat的server.xml中设置)<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redir...原创 2014-07-25 21:20:47 · 265 阅读 · 0 评论 -
Java类加载机制---类的初始化和卸载
类的初始化,包括生成对象的初始化和类的静态块的实例化。 初始化触发的时机: 类被直接引用(主动引用)的时候。 主动引用主动引用的情形有:1. 使用new关健字实例化对象2. 使用类的静态变量3. 使用类的静态方法4. 使用反射机制调用上述操作5. 程序入口 (调用main方法) 初始化顺序是:静态块 ---> 非静态块 ---&g...原创 2016-12-09 14:25:39 · 448 阅读 · 0 评论 -
Thread.join用法
Thread.join(): 用来让主线程等待子线程执行完毕再执行下面的操作。顾名思义,join会让子线程加入MainThread. 适用场景:主线程需要等子线程执行完毕后,再执行下一步操作。比如:主线程需要统计子线程的执行时间,或需要统计子线程的执行结果等。 join() 的作用是等待该线程终止,即该线程存活的时候一直等待,等待线程死亡,好残忍 。。JDK的源...原创 2017-04-10 20:38:40 · 288 阅读 · 0 评论 -
线上故障排查----高内存占用
1. 找出占内存比较大的内存的PID(使用top命令)比如找出PID为8763 2. 查看当前Java进程创建的活跃对象数目和占用内存大小jmap -histo:live $pid > jmap.log 比如查看24102进程的存活对象:jmap -histo:live 24102 | more例如:$ /usr/java/default/bin/...原创 2017-04-10 20:31:13 · 380 阅读 · 0 评论 -
Java类加载机制
类的加载属于Java中的JVM的底层工作。 类加载包括类的生命周期中加载、连接、初始化三个阶段。在加载阶段,JVM在做什么工作?简单地说,就是找到需要加载的类并把类的信息加载到jvm的方法区,然后在堆区实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口。 当执行Class中的下列代码的时候,会做下面的事情:User user = new U...原创 2016-12-03 23:43:01 · 133 阅读 · 0 评论 -
反射机制之---Class对象
Java中的类对象也属于基本部分,类对象即是Class信息对象,当类加载器(ClassLoader)加载类信息的时候,生成Class对象,Class对象是Java对象的模板,每个Java对象都是基于Class信息生成新的对象。 众所周知,Class信息存在方法区(Method Area),或者称为永久代(Perm区),Class对象生成后和其他Java对象一样,也存放在堆(Heap)里...原创 2016-12-01 23:59:45 · 186 阅读 · 0 评论 -
反射机制之---概念
反射机制是Java语言中很重要的特性,是在运行时获知对象信息,并可在运行时操作对象的机制。反射(Reflect), 顾名思义,通过Java对象的Class信息,可以逆向生成对象、探知运行时的对象信息、调用对象方法,一种可以反向作用的机制。 反射的用途:1. 在运行时获取任意对象所属的类对象 Class<?> clazz = Class.forName(Strin...原创 2016-11-29 00:21:22 · 141 阅读 · 0 评论 -
Java实现HTTPS通讯
Https协议用于在保密性要求高的环境中。Https基于Http协议,在Http协议中加了一层封装,加入SSL/TLS协议。使用SSL会用到JSSE(Java Secure Socket Extension),JSSE对Java访问SSL和TLS协议都做了封装。图 1. JSSE相关类之间的关系 安全套接字程序编写的方法使用 Java 编写安全套接字程序,可以遵循一定...原创 2014-11-01 21:34:32 · 770 阅读 · 0 评论 -
Java中keytool的使用
Keytool是用于管理密钥和证书的工具,位于%JAVA_HOME%/bin目录。keytool将密钥(key)和证书(certificates)保存在keystore文件里。所以,在keystore中,包含两种数据:(1)密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) (2)可信任的证书实体(trusted certifi...原创 2014-10-26 18:13:58 · 181 阅读 · 0 评论 -
Maven常用操作
1. Maven导入依赖的jar包到project目录:mvn dependency:copy-dependencie或在 pom.xml 中定义 <plugin> <artifactId>maven-dependency-plugin</artifactId> <executions>...原创 2014-09-27 11:41:05 · 104 阅读 · 0 评论 -
Maven的settings.xml配置
settings.xml是Maven的配置文件,下面解释一下其中的配置含义:settings.xml存在于两个地方:1.安装的地方:$M2_HOME/conf/settings.xml2.用户的目录:${user.home}/.m2/settings.xml前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。...2015-07-09 14:28:04 · 95 阅读 · 0 评论 -
Spring常见错误
1. Spring3.2以上版本引用spring-asm.jar:Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class 原因:Spring 3.2以上版本,不用...原创 2015-06-17 15:37:54 · 212 阅读 · 0 评论 -
数据库表生成MyBatis的Mapping文件
当使用MyBatis的时候,需要每个表建立一个Entity类,还要创建一个Mapping文件,如果表的数量少还好说,当表的数量多的时候,而且以后还会增加的时候,手动创建这些文件就成了一个繁琐而又重复的工作,根据“能用工具不手写”的原则,可以根据Mapping xml的格式,用程序来生成这些对应的文件。 这里是一个生成Mapping XML文件的demo code:...原创 2015-01-30 14:15:31 · 262 阅读 · 0 评论 -
DatabaseMetaData和ResultSetMetaData
MetaData意即元数据,是描述其他数据的数据。1.ResultSetMetaData 封装了描述结果集(ResultSet)的数据,描述ResultSet对象的数据包括列名、列类型、列数、表名等信息 ResultSet里包含一个getMetaData()方法,该方法返回该ResultSet对应的ResultSetMetaData对象。一旦获得...原创 2015-01-30 11:30:01 · 162 阅读 · 0 评论 -
MyBatis的parameterType和resultMap
MyBatis的mapping.xml中有两个重要的属性:parameterType和resultMap属性(parameterMap现在不建议使用)parameterType用来指定传入参数的类型,比如Bean或Map\List。<configuration> <typeAliases> <typeAlias alias="P...原创 2015-01-30 09:32:36 · 351 阅读 · 0 评论 -
Maven仓库镜像
Maven中央服务器地址为 http://maven.apache.org,因为全球Java程序员都访问这个服务域名,压力很大,加上国内GFW的block,在天朝访问会更慢。 故镜像服务器有加速访问的效果。操作:在settings文件的mirrors节点中,增加下面的mirror:<mirror> <id>CN</id> ...原创 2015-01-29 00:35:04 · 138 阅读 · 0 评论 -
数据库表生成MyBatis对应的java类
当数据库中表有多个的时候,写数据库表对应的entity类是一个工作量不小的事情,所以能自动化把数据表生成对应的Java类,有一定的意义(Save Time):/** * Created by jiangzhiqiang on 16/3/24. */import java.io.File;import java.io.FileOutputStream;import jav...原创 2015-01-28 18:03:56 · 119 阅读 · 0 评论 -
spring mvc的注解
Spring4新增注解annotation@RestController: Rest控制器, 使用这个注解,可直接返回json等格式数据 Spring3注解@Controller: 控制器,将请求处理后返回到front page,定义表现层。@Service: 业务方法,业务层@Repository: 库,常用来引用dao类,持久化层@Component: 泛指组...原创 2015-01-28 15:34:17 · 98 阅读 · 0 评论 -
Struts2请求执行流程
请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。 ActionMapper取得了ActionMapping后,在Dispatcher的serv...原创 2010-11-26 18:11:59 · 138 阅读 · 0 评论 -
使用URL传送对象到另一平台
业务场景需要把平台A的数据传送到另一平台B,然后在B端保存数据,两边的数据表是一样的,数据类型有几个不同,考虑了使用httpclient、socket和webservice等几种解决方案后,最后选用了使用URL的ObjectStream来传送对象,代码:import java.io.InputStream;import java.io.OutputStream;import java...原创 2011-05-26 16:04:41 · 103 阅读 · 0 评论