Java学习笔记
Java学习笔记!
老码农zhuli
自娱自乐的代码人!GIT:https://github.com/zhuli
展开
-
Java学习笔记51:数组转ArrayList和ArrayList转数组技巧
ArrayList转数组: public class Test { public static void main(String[] args) { List list = new ArrayList(); list.add("王利虎"); list.ad原创 2013-09-12 16:52:55 · 2932 阅读 · 1 评论 -
Java深入 - Json
Java不像PHP解析和生产JSON总是一个比较痛苦的过程。但是使用JSONObject和JSONArray会让整个过程相对舒服一些。需要依赖的包:commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar1.原创 2013-07-02 10:41:45 · 34945 阅读 · 5 评论 -
Java学习笔记49:Java监控常用工具
Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下:jps 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。常用参数:-l: 输出完成的包名称;-m: 输出程序的命令行输入参数;-v: 输出完整的JVM参数。jstack 用途:1)查看java程序崩溃生成core文件,获得cor转载 2013-06-17 10:23:50 · 1701 阅读 · 0 评论 -
Java学习笔记48:探秘Java虚拟机 gc的监控
1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn:新生代的内存空间大小,注意:此处的大小是(eden+ 2 survivor space)。与jmap -转载 2013-06-14 09:54:06 · 2563 阅读 · 0 评论 -
Java学习笔记47:Java 内存区域
程序计数器:程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。每个线程都有自己的计数器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如原创 2013-06-13 11:17:13 · 1243 阅读 · 0 评论 -
Java学习笔记46:Java 线程池
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线转载 2013-06-09 12:29:55 · 1746 阅读 · 2 评论 -
Java学习笔记45:Java 线程与主线程之间的变量关系
运行下面的代码:package com.test.www;public class Test { public static int count = 0; public static void inc() { //这里延迟1毫秒,使得结果明显 try { Thread.sleep(1);原创 2013-06-08 12:17:28 · 3020 阅读 · 0 评论 -
Java学习笔记44:常用集合使用
package com.test.www;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.原创 2013-06-07 10:41:07 · 1466 阅读 · 0 评论 -
Java学习笔记43:Java泛型
普通泛型:class Point{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T getVar(){ // 返回值的类型由外部决定 return var ; } public void setVar(T var){ // 设置的类型也由外部决定 this.var = var转载 2013-06-06 10:48:01 · 1556 阅读 · 0 评论 -
Java学习笔记42:线程的几个方法和概念
在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。要注意的是Thread类也实现了Runnable接口,因此,从Thread类继承的类的实例也可以作为target传入这个构造方法。可通过这种方法实现多个线程的资源共享。线程的生命周期:新建状态:用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 就绪状态:当一个转载 2013-05-27 12:37:27 · 1411 阅读 · 0 评论 -
Java学些笔记41:FTP4j
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能。可以将ftp4j嵌到你的Java应用中,来传输文件(包括上传和下载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。转载 2013-05-23 13:31:38 · 1572 阅读 · 0 评论 -
Java学些笔记40:FTP操作类
pom.xml需要依赖: commons-net commons-net 3.2 import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStr原创 2013-04-26 17:05:25 · 4574 阅读 · 0 评论 -
Java学习笔记39:Spring XML使用
我们使用jdom的XML解析库,所以pom.xml中需要依赖: org.jdom jdom 2.0.2 创建XML实例: Element rootElement = new Element("root"); //创建根节点 //属性创建 rootElement.setAttribut原创 2013-04-24 20:12:50 · 1502 阅读 · 0 评论 -
Java学习笔记38:通过Spring Bean 注入static变量,来设计一套适合测试,开发,生产环境的配置项
这边文章的目的主要是为了在spring开发web项目的时候,让我们的测试,开发,生产环境的配置项.properties作为配置文件。我们首先需要建立一个config文件夹,然后创建开发,测试,生产环境的.properties配置项文件。例如,dev.properties文件为开发环境,pre.properties文件为生产环境。dev.properties配置内容为原创 2013-04-22 15:38:55 · 15311 阅读 · 0 评论 -
Java学习笔记37:Spring 使用 @ResponseBody 返回中文乱码问题解决
今天在使用spring 的时候,发现中文返回的是乱码。经过研究发现,主要是@ResponseBody 引起的。主要是由于 @ResponseBody 返回字符串结果的时候,使用了org.springframework.http.converter.StringHttpMessageConverter 中默认的编码。请看 org.springframework.http.converter.原创 2013-04-17 13:46:10 · 3142 阅读 · 0 评论 -
Java学习笔记36:Java log4j 基本配置和使用
pom.xml中加入依赖包 org.slf4j slf4j-api 1.6.6 org.slf4j jcl-over-slf4j 1.6.6 runtime org.slf4j slf4j-log4j12 1.6.6 runtime 配置一个log4j.properties文件,是日原创 2013-04-16 12:16:53 · 1846 阅读 · 0 评论 -
Java学习笔记35:Java常用字符串操作函数
package com.yunos.account.controller.api;import org.apache.commons.lang.StringUtils;public class Test { public static void main(String[] args) { String str = "Hello World";原创 2013-04-03 14:11:29 · 2269 阅读 · 0 评论 -
Java学习笔记 - java多线程
线程简介:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同原创 2013-04-01 13:22:39 · 1684 阅读 · 0 评论 -
Java学习笔记33:mybatis动态SQL语句
一 if标签 SELECT * from STUDENT_TBL ST if test="studentName!=null and studentName!='' "> WHERE ST.STUDENT_NAME LIKE CONCAT(CONCAT('%', #{studentName}),'%') 二 where标签 SELECT * fro转载 2013-03-13 13:06:18 · 1249 阅读 · 0 评论 -
Java学习笔记32:Spring整合mybatis使用
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。Spring框架中整合mybatis主要下面几个步骤原创 2013-02-25 17:57:14 · 4326 阅读 · 0 评论 -
Java学习笔记31:Java程序员应该了解的10个面向对象设计原则
摘要:Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计。查看Apache和Sun的开放源代码能帮助你发现其他Java设计原则在这些代码中的实际运用。面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton、Decorator、Observe转载 2013-02-19 18:45:52 · 1649 阅读 · 0 评论 -
Java 学习笔记30:gson的深入使用
gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。对象转JSON:对象转JSON很简单,只要将对象放进toJson函数的参数中即可HashMap map = new HashMap(); //实例化一个hashmap m原创 2013-02-18 13:37:38 · 1354 阅读 · 0 评论 -
Java学习笔记28:keyStroe https证书
JDK中keytool常用命令-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书-alias 产生别名-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中-keyalg 指定密钥的算法 -validity 指定创建的证书有效期转载 2013-02-16 13:17:37 · 1364 阅读 · 0 评论 -
Java学习笔记27:模板Velocity使用方法
Velocity是什么?Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。如何配置?在servlet-context.xml中增加以下内容,如果有jsp的配置先注释掉:<beans:bean id="velocit原创 2013-01-17 14:07:26 · 5687 阅读 · 0 评论 -
Java学习笔记26:webx安全配置问题
1、默认拦截器即使你不加说明,BasicRequestContext也总是会启用一个默认的interceptor实现:ResponseHeaderSecurityFilter。这个类实现了下列功能:• 避免header name和value中出现CRLF字符 ── 在header中嵌入CRLF(回车换行)字符是一种常见的攻击手段。攻击者嵌入CRLF以后,使服务器对HTTP请求发生错转载 2013-01-06 15:13:17 · 1911 阅读 · 0 评论 -
Java学习笔记25:Java中MD5使用
import java.security.MessageDigest;/** * MD5工具类 * @author zhuli 2012-12-19 下午6:22:42 */public class Md5Util { /** * 字符串MD5加密后返回字符串格式 * @param md5Str原创 2012-12-19 19:30:21 · 1603 阅读 · 0 评论 -
Java学习笔记24:Mvn常用命令
mvn archetype:create :创建 Maven 项目mvn compile :编译源代码 mvn test-compile :编译测试代码mvn test : 运行应用程序中的单元测试 mvn site : 生成项目相关信息的网站 mvn clean :清除目标目录中的生成结果mvn package : 依据项目生成 jar 文件 mvn install :在本地 Rep原创 2012-12-19 05:47:58 · 1807 阅读 · 4 评论 -
Java 学习笔记23:关于Java Session使用
关于SESSION度娘说“Session:在计算机中,尤其是在网络应用中,称为“会话”。当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。通过这个cookie值,就可以对应存储在服务器端的这个session信息。在访问者从到达某个特定的主页到离开为止的那段时间,每个访问者都会单独获得一个Session。Java中的Session使用原创 2012-12-14 11:19:51 · 9586 阅读 · 0 评论 -
Java 学习笔记22:Maven以及其Eclipse插件m2eclipse的安装
Maven以及其Eclipse插件m2eclipse的安装(本文参考了Maven实战)检查JDK的安装以及环境变量的配置打开cmdecho %Java_Home%java -version 如下图 下载Mavenhttp://maven.apache.org/download.html 我这里安装时最新的3.03版本 安装转载 2012-12-13 11:03:24 · 1424 阅读 · 0 评论 -
Java 学习笔记21:Java断点调试的使用
Java断点调试是写Java程序一个非常基本功。下面我们就介绍一下简单的Java断点调试功能。我们给findAllGuestbook()方法添加了两个断点,eclispce最左边有两个绿点的就是断点的点。断点需要Ctrl + Shift + B 快捷键就可以部署断点了。然后我们需要运行的是Debug模式,在eclispce上面的一只甲壳虫模样的按钮。然后点击原创 2012-12-11 19:22:49 · 10114 阅读 · 2 评论 -
Java 学习笔记20:深入Java的Cookie使用
Java的Cookie使用设置Cookie,设置了一个username的cookie,路径为"/",有效期为:3600。设置了一个test的cookie。 @RequestMapping(value="/test") @ResponseBody public String test(HttpServletResponse response, HttpServletReque原创 2012-12-10 15:19:57 · 2845 阅读 · 1 评论 -
Java 学习笔记19:深入Serializable
Java的SerializableSerialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。说白了,原创 2012-12-10 14:49:17 · 1644 阅读 · 1 评论 -
Java 学习笔记18:深入Java HashMap
HashMap是什么?HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。Java的HashMapJava的HashMap主要由两种数据结构组成:一个是数组,一个是链表。新建HashMap的时候,会新建一个数组结构,但是数组结构的长度有限,例如原创 2012-12-06 14:16:55 · 1581 阅读 · 0 评论 -
Java深入 - 深入理解Java集合
List类型Java List一共三个实现类:分别是ArrayList、Vector和LinkedList。类型说明ArrayListArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从A原创 2012-12-06 11:46:59 · 4194 阅读 · 3 评论 -
Java深入 - ThreadLocal
什么是线程?度娘说:线程(thread, 台湾称 执行绪)是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。java的线程假如我们做的是web程序,那么http的每次请求都会在一个java进程中启动,并且这个程序会生成一个线程去跑。所以java写的web程序是多线程的。原创 2012-12-05 12:53:50 · 6536 阅读 · 3 评论 -
Java 学习笔记15:关于web开发中,全局变量的一点想法
在PHP开发中,我们经常习惯于在php类中定义很多变量。这是因为php是解析型的语言,在做web开发的时候,一次解析就释放内存。但是Java可能就有些不同,Java是编译型的语言,web容器运行后,类的对象就会常驻在内存中,这个时候如果类的对象中有定义公用变量,那么就会不同的人访问web程序导致这个变量造成冲突。可以看一个简单的例子: public int i = 0; //定原创 2012-12-05 10:22:39 · 6743 阅读 · 1 评论 -
Java 学习笔记14:Spring 数据库数据源DBCP配置说明
连接数据库都必须要有数据连接,一般Spring中采用DBCP配置源,通过在bean.xml中配置相应的数据配置,就可以连接数据库了,可以看一下以下相关配置:原创 2012-12-04 14:30:53 · 16618 阅读 · 0 评论 -
Java 学习笔记13:Spring JSTL 核心标签库 使用
JSTL 核心标签库标签共有13个,功能上分为4类:1.表达式控制标签:out、set、remove、catch2.流程控制标签:if、choose、when、otherwise3.循环标签:forEach、forTokens4.URL操作标签:import、url、redirect使用标签时,一定要在jsp文件头加入以下代码:下面分别对这些标签进行说明:转载 2012-11-30 18:10:52 · 10468 阅读 · 6 评论 -
Java深入 - Java的正则表达式 Pattern和Matcher
Pattern和Matcherjava.util.regex 是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和MatcherPattern: 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。Pattern类原创 2012-11-28 16:55:05 · 2322 阅读 · 2 评论 -
Java 学习笔记11:Spring MVC 中的基于注解的 Controller
终于来到了基于注解的 Spring MVC 了。之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求。实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPath转载 2012-11-28 10:45:02 · 3711 阅读 · 0 评论