java
文章平均质量分 81
MikanMu
码农
展开
-
java读取.properties配置文件的几种方法
读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一、通过jdk提供的java.util.Properties类。此类继承自java.util.HashTable,即实现了Map接口,所以,可使用相应的方法来操作属性文件,但不建议使用像put、putAll这两个方法,因为put方法不仅允许存入String类型的value,还可以存入O原创 2012-06-21 20:18:22 · 75342 阅读 · 3 评论 -
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式):get请求: RequestURL:http://127.原创 2014-05-11 21:20:23 · 225381 阅读 · 27 评论 -
java中什么是bridge method(桥接方法)
在看spring-mvc的源码的时候,在解析handler方法时,有关于获取桥接方法代码,不明白什么是桥接方法,经过查找资料,终于理解了什么是桥接方法。桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法。我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法,在字节码中桥接方法会标记原创 2015-08-07 17:34:37 · 26797 阅读 · 23 评论 -
关于@Override在1.5和1.6之后的区别
@Override注解是作用于源代码的注解,用于表明注解的方法重写了父类型的方法,但是这个注解在1.5和1.6及以后是区别的。1.5中,只能用于在继承某个类时,重写父类中的方法,而在实现一个接口中的方法时,是不能使用该注解的,从1.6开始,才支持实现父接口的方法使用该注解。但是在@Override源代码上的注解或文档中,1.6没有对这个变化进行说明,到1.7才进行了说明。下面是1.5和1.6的原创 2015-08-29 15:53:38 · 2968 阅读 · 0 评论 -
细说java.util.HashMap
HashMap是我们最常用的类之一,它实现了hash算法,虽然使用很简单,但是其实现有很多值得研究的地方。HashMap存储的是key-value形式的键值对,这个键值对在实现中使用一个静态内部类Entry来表示,它存储了key、value、hash值、以及在hash冲突时链表中下一个元素的引用。HashMap底层实现使用了一个数组来存储元素。它的初始容量默认是16,而且必须容量必须是2的原创 2015-09-01 00:02:24 · 9451 阅读 · 0 评论 -
细说java.util.Timer
Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示。任务的执行方式有两种:按固定速率执行:即scheduleAtFixedRate的两个重载方法按固定延迟执行:即schedule的4个重载方法具体差别会在后面详细说明。一、使用方式Timer的具体使用方法非常简单,比如: Timer timer = n原创 2015-08-29 00:59:38 · 9464 阅读 · 2 评论 -
java如何获取方法参数名
在java中,可以通过反射获取到类、字段、方法签名等相关的信息,像方法名、返回值类型、参数类型、泛型类型参数等,但是不能够获取方法的参数名。在实际开发场景中,有时需要根据方法的参数名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable注解,如果不指定相应的value属性,默认就是使用方法的参数名做为HTTP请求的参数名,它是怎么做到的呢?在这样情况下原创 2015-08-05 11:33:32 · 40058 阅读 · 6 评论 -
tomcat如何正确的开启远程调试功能
在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可。什么是JPDA呢?JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个原创 2015-10-17 23:25:35 · 54570 阅读 · 5 评论 -
java正则表达式获取指定HTML标签的指定属性值
有时可能会有这样的需求,从HTML页面获取指定标签的指定属性值,可以通过第三方库解析来获取,但是这样相对比较麻烦!如果使用正则表达式,那么就变得简单了。代码如下:package com.mmq.regex;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import j原创 2012-11-20 23:03:38 · 28467 阅读 · 20 评论 -
java枚举类型的实现原理
Java从JDK1.5开始支持枚举,也就是说,Java一开始是不支持枚举的,就像泛型一样,都是JDK1.5才加入的新特性。通常一个特性如果在一开始没有提供,在语言发展后期才添加,会遇到一个问题,就是向后兼容性的问题。像Java在1.5中引入的很多特性,为了向后兼容,编译器会帮我们写的源代码做很多事情,比如泛型为什么会擦除类型,为什么会生成桥接方法,foreach迭代,自动装箱/拆箱等,这有个术语叫原创 2015-08-29 14:47:09 · 24991 阅读 · 9 评论 -
使用java进行文件编码转换
在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成UTF-8,如果直接在eclipse中把文件编码修改成UTF-8,恭喜你,是乱码,因为不能直接从GBK到UTF-8进行转换,这时就需要我们手动的来转换编码。下面是一个文件编码转换的工具类。package com.mikan.stuff;im原创 2014-07-17 22:56:11 · 18047 阅读 · 4 评论 -
springmvc RestTemplate文件上传
在使用springmvc提供rest接口实现文件上传时,有时为了测试需要使用RestTemplate进行调用,那么在使用RestTemplate调用文件上传接口时有什么特别的地方呢?实际上只需要注意一点就行了,就是创建文件资源时需要使用org.springframework.core.io.FileSystemResource类,而不能直接使用java.io.File对象。Controll原创 2014-05-20 20:27:00 · 55872 阅读 · 12 评论 -
正则表达式:java中匹配HTML中a标签中的中文字符
今天群里一位朋友问到了一个正则表达式的问题,有如下内容:特432453543a1特123你好123吗?特2标签中的文字现在要匹配出内容包含中文但标签的属性中不包含comment的标签中的汉字。解决思路如下:1、首先匹配出不包括comment的标签;2、在匹配结果中进行二次匹配出中文;代码如下:package com.mmq.regex;impor原创 2012-07-24 17:13:46 · 12982 阅读 · 7 评论 -
Chrome浏览器在用户访问一个不存在的网址时,会重新发起一个请求?
今天偶然间发现Google Chrome浏览器在用户访问一个不存在的网址时,会重新发起一个请求:socket = serverSocket.accept();input = socket.getInputStream();output = socket.getOutputStream();Request request = new Request(input);request.pars原创 2012-04-21 17:09:46 · 2408 阅读 · 0 评论 -
java给图片添加水印文字
package com.mmq.watermark;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.Fil原创 2012-07-19 22:29:20 · 13136 阅读 · 2 评论 -
java实现递归下降的表达式解析器
本算法用java代码实现数值表达式的解析。1、数值表达式的组成:数字运算符+、-、*、/、^、%、=圆括号(、)变量其中^运算符表示求幂运算符(如10^2=100),=是赋值运算符。2、本解析器必须满足的约束条件:1)、所有变量都是单个字母(从A到Z的26个字母),字母不区分大小;2)、假定所有的数字都是double类型,可以方便地修改解析器从而处理其他类型原创 2011-11-22 21:19:21 · 5031 阅读 · 0 评论 -
JasperReport打印时报错:java.security.AccessControlException: access denied
JasperReport在打印预览窗口中点击打印时出现如下错误:打开控制台,java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.awt.windows) at java.security.AccessContr原创 2012-04-12 18:45:53 · 2923 阅读 · 0 评论 -
java中创建对象的方法
有4种显式地创建对象的方式:1.用new语句创建对象,这是最常用的创建对象的方式。2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。3.调用对象的clone()方法。4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.转载 2012-09-04 18:57:30 · 35508 阅读 · 3 评论 -
如何防止访问API的friendly方法
前几天在群里,一个前辈给我们出了一道题:你现在要用第三方的一个jar,它提供了一个public方法给你用,但你反编译后发现,它有一个friendly级别的方法更符合你的要求,你想用那个方法,如何不修改原来的jar,来实现这个目的? 有朋友回答:搞了个跟他一样的包?即通过自己定义命名空间跟它一样的类就行了。这个其实容易实现的。答对了,好,问题来了:如果你是这个jar的创建者,怎么防止原创 2012-10-10 22:47:32 · 1837 阅读 · 4 评论 -
applet跨域访问的安全性问题
最近在用jasperreport做报表时,出现一个问题,项目发布在内网时,打印一切正常,但是发布到外网,而且使用域名访问时,总是报拒绝访问的错误:java.security.AccessControlException:access denied (java.net.SocketPermission 125.64.60.11:8000 connect,resolve)at java.sec原创 2012-12-30 16:21:10 · 5385 阅读 · 0 评论 -
关于java的++和--操作符,你真的搞明白了吗?
只要是会java的都知道++和—操作符的用法,如int i = 1;int j = i++;int k = ++i;结果i为3,j为1,k为3。那如下代码:int j = 0;for (int i = 0; i < 100; i++) { j = j++;}System.out.println(j);输出结果又是多少呢?100?0?正确答案原创 2013-04-19 20:12:32 · 5119 阅读 · 0 评论 -
细说JDK动态代理的实现原理
关于JDK的动态代理,最为人熟知的可能要数Spring AOP的实现,默认情况下,Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。那么,什么是JDK的动态代理呢?JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。JDK从1.3开始支持动态代理。那么JDK是如何生成动态代理的原创 2015-09-15 21:12:35 · 49355 阅读 · 43 评论