![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK//Demo
文章平均质量分 64
zhangliguo186
具有很强的团队荣誉感!
展开
-
Java 取路径总结
一 JAVA 类中1。取出指定所在类的路径class A {String getPath() { return this.getClass().getClassLoader().getSystemResource("A").getPath(); }} 注,更方便的class A {String getPath() { ...原创 2015-01-19 16:41:51 · 61 阅读 · 0 评论 -
java 中的String 和new String 的区别
内存中区别,String str = "hello" 如果之前有String对象是hello的值的话那str直接就指向之前的那个对象了,不再重新new一个对象了String str = new String("hello");无论以前有没有都重新new一个新的...原创 2015-08-18 13:52:34 · 100 阅读 · 0 评论 -
JAVA中堆和栈的区别
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来...原创 2015-08-18 14:43:21 · 65 阅读 · 0 评论 -
JAVA静态类的应用
静态类是指在一个类的内部,又定义了一个用static修饰的类。那静态类的功能又体现在哪里呢?可以用C中的结构体内嵌结构体来理解,其次需要了解2个概念:内部类和静态修饰符static。 A,首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。B,静态都是用来修饰类的内部成员的。比如静态方法、静态成员变量。它唯一的作用...原创 2015-08-18 15:05:03 · 399 阅读 · 0 评论 -
正则表达式验证日期是否合法(格式,平年,闰年)
public static boolean isDate(String date) { String rexp = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469]...原创 2015-09-10 15:31:15 · 1201 阅读 · 2 评论 -
HttpURLConnection 调用get,post接口,读取返回字符串
场景:工程师A写了一个基于HTTP的接口(http://127.0.1.2:8080/test/url?param=12&test=asdf&test)这个接口会返回Y,或者N 工程师B现在调用这个接口的方法,见代码!我们来使用JDK的UR类,和HttpURLConnection InputStr...原创 2015-09-14 16:23:44 · 1849 阅读 · 0 评论 -
java反射机制概述以及简单实现
要了解JAVA 反射的原理,我们还得对类在虚拟机中的一些知识做简要介绍...一、类文件的结构: 1.1 虚拟机加载Class文件过程: 在JVM 类加载机制的博客里面我介绍过整体流程,这里仅仅介绍加载时相关部分。 在我们启动一个类,或者其他方式加载一个类的时候,会通过类的全限定名获取该类的二进制流,然后将字节流所代表的的静态存储结构转化成方法区的运行时数据结构,然后会...原创 2015-09-30 13:37:51 · 108 阅读 · 0 评论 -
关于JAVA - gc的工作(一)
大多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常有用的,在这里面了解JVM的GC原理,是非常重要的一块知识。我们都知道对于一个大型网站,如果JVM频繁发生FULL GC,那么将会是致命的危险,不仅仅会造成网站响应迟钝,更严重的时候会导致系统崩溃,这对用户体验来讲,都是我们不愿意看到的。在JVM里的内存空间,从大的层面划分,主要有新生代空间(Young)和老年...原创 2015-09-30 14:02:22 · 81 阅读 · 0 评论 -
DES加密和解密工具类,可自定义key
/** * Copyright (c) 2016,JBRJR. * All Rights Reserved. * JBRJR CONFIDENTIAL * * Project Name:demo * Package Name:com.passcode * File Name:DesUtils.java * Date:2016年8月29日 下午1:43:09...2016-08-29 13:51:00 · 564 阅读 · 0 评论 -
HashMap,LinkedHashMap,TreeMap
HashMap,LinkedHashMap,TreeMap都属于Map Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。 HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线...原创 2015-10-08 14:57:47 · 96 阅读 · 0 评论 -
java多线程 -- ThreadLocal使用总结
ThreadLocal和线程同步机制相比有什么优势呢?ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。 在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序缜密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。 概述:而ThreadLo...2015-10-12 16:07:32 · 369 阅读 · 0 评论 -
JAVA Graphics2D画笔初体验
import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;...原创 2015-10-13 13:34:53 · 523 阅读 · 0 评论 -
JDK之TimeUnit类应用
TimeUnit是什么?TimeUnit是java.util.concurrent包下的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),暂停线程时它不会释放锁,如果有线程中断了当前线程,该方法会抛出InterrupttedException异常。但是我们很多人并没有注意的一个潜在的问题就是它的可读性。Thread.sleep()是一个重载方法,可...2015-10-14 14:01:34 · 368 阅读 · 0 评论 -
java GUI ; AWT SWT SWING 比较
AWT AWT是Sun不推荐使用的工具集。然而它在许多非桌面环境如移动或嵌入式设备中有着自己的优势。 更少的内存。它对运行在有限环境中的GUI程序的开发,是合适的。 1.更少的启动事件。由于AWT组件是本地由操作系统实现的。绝大多数的二进制代码已经在如系统启动的时候被预装载了,这降低了它的启动事件。 2.更好的响应。由于本地组件由操作系统渲染。 3.从java 1...2015-10-14 15:51:27 · 402 阅读 · 0 评论 -
java多线程 -- Lock应用,内部静态类,线程池(经典)
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.locks.Lock; import...原创 2015-10-15 15:19:01 · 110 阅读 · 0 评论 -
话说java单例模式的饿汉式,懒汉式
饿汉式://饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变,//这种单利模式比较简单,也比较可靠,唯一不足就是无法对singleton实例做延迟加载。public class Singleton{ private static Singleton singleton = new Singleton (); private Singlet...2015-11-24 16:54:36 · 134 阅读 · 0 评论 -
java动态代理
静态代理:http://zliguo.iteye.com/admin/blogs/2227878静态代理介绍以及简单实现请参考以上地址。动态代理所干的事,静态代理基本也都能干,静态代理与动态代理对比的不足在于,它随着业务的增长代码的臃肿性就上去了,每一个类都需要一个代理类。以上文章使用了用户通过浏览器上网需要身份验证的例子。 动态代理:spring的aop;hiberna...2015-11-25 17:07:43 · 70 阅读 · 0 评论 -
jackson操作对象json互转
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version></dependency&2015-12-07 17:01:15 · 280 阅读 · 0 评论 -
java中null与""的区别
null表示还没new出对象,就是还没开辟空间 “”表示new除了对象,但是这个对象装的是空字符串。比如声明一个 String str ;如果说str是null,那么内存根本没创建字符串对像.如果说str是空串,那么确实存在一个由str引用的字符串对像,只不过这个字符串的值是””null用来表示一个引用没有实例存在,而””本身是一个实例,有自己的对象空间,和”zzyyxx”这样的Strin...原创 2015-08-14 13:56:57 · 88 阅读 · 0 评论 -
Java守护线程
前言:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。User 和Daem...原创 2015-07-28 15:15:23 · 72 阅读 · 0 评论 -
C3P0 部分参数说明
1.最常用配置initialPoolSize:连接池初始化时创建的连接数,default : 3(建议使用)minPoolSize:连接池保持的最小连接数,default : 3(建议使用)maxPoolSize:连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 1...原创 2015-01-26 15:40:10 · 95 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
修改默认内存 只是治标不治本,比如一个list里面 放了10w条记录 溢出了把内存调高点 到了15w 还是得溢出要防止堆溢出注意以下几点1.代码中尽量少new 对象2.尽可能在循环外面 创建对象3.存数据的容器 比如array 很省空间,而像hashtable这种 就很占空间4. 少用一些重量级的组件 比如那个calendar对象 很占空间5、应用比较消耗内存空...原创 2015-01-28 10:18:26 · 86 阅读 · 0 评论 -
java程序写的更健壮
1 、尽早释放无用对象的引用。好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null ,暗示垃圾收集器来收集该对象,防止发生内存泄露。对于仍然有指针指向的实例,jvm 就不会回收该资源, 因为垃圾回收会将值为null 的对象作为垃圾,提高GC 回收机制效率; 2 、定义字符串应该尽量使用 String str="hello"; 的形式,避免使用String str...原创 2015-02-02 15:33:40 · 147 阅读 · 0 评论 -
java 内存管理
http://yangzhiyong77.iteye.com/blog/14681751. java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题。(两部分)分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( 基本类型除外) ,所有的对象都在堆 (Heap) 中分配空间。释放:对象的释放是由垃圾回收机制决定和执...原创 2015-02-02 15:37:07 · 125 阅读 · 0 评论 -
深入java初学jvm
转载自 ---- http://lrysir.iteye.com/blog/1153226 这不是一篇描述jvm是什么的文章,也不介绍jvm跨平台的特性,也不是讲述jvm安全特性的文章,更不是讲解jvm指令操作,数据运算的文章, 本文重点讲述 类型的生命周期。 类型的生命周期涉及到: 类的装载、jvm体系结构、垃圾回收机制。 为什么要讲jvm体系结构? 因为类的装载和垃圾回收机制都和...原创 2015-02-03 08:47:36 · 95 阅读 · 0 评论 -
浅谈java集合接口
java中的集合接口为什么不能存放基本数据类型?首先,集合的存在就是为了方便对多个对象的操作才出现的,集合是存储对象最常用的一种方式,也就是说,集合的从有到无都是因为对象,人们发现要保存多个对 象很麻烦,于是便发明了集合,集合是依赖对象而生的,所以就对基本数据类型"不感兴趣",但是,现在基本数据类型都有了其对应的封装的对象,而且有了自动 拆箱和装箱功能,基本数据类型和其对应对象之间的转换变...原创 2015-02-05 14:18:46 · 103 阅读 · 0 评论 -
java.lang.OutOfMemoryError:Java heap space
解决方法之一:不能一味加内存解决问题,最好定期检查一下程序对内存的消耗,以避免潜 在的内存溢出。建议大家使用jvisualvm来监控JVM。(JDK自带,命令行直 接打jvisualvm即可)一定要设置正确的JVM参数。我建议的JVM参数是:-Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m即:最大512M heap,预留128M...原创 2015-02-16 15:03:27 · 86 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space
引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因根据网上的答案大致有以下两种解决方法:1、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m注意:只有startup.bat启动tomcat,设置...原创 2015-02-16 15:04:32 · 67 阅读 · 0 评论 -
JAVA FTP文件上传与下载
原文出自:http://blog.csdn.net/zlb824/article/details/7742959实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式,),分别为:1、通过JDK自带的API实现;2、通过Apache提供的API是实现。 第一种方式 package com.cloudpower.util; ...原创 2015-02-26 09:30:07 · 86 阅读 · 0 评论 -
浅谈Java抽象类和接口
在面试的过程中,面试官往往会问我们有关抽象类与接口相关的问题,也许我们只能大概的讲出个一二。比如:抽象类只能通过单一继承,而接口可以通过多次实现等。并且,有的时候我们自己都不知道该用抽象类还是接口,下面就为你讲解一下抽象类和接口之间的区别: abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予...原创 2015-02-26 10:39:40 · 101 阅读 · 0 评论 -
java类初始化顺序
public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public String field = "变量"; // 静态初始化块 s...原创 2015-02-26 11:15:44 · 134 阅读 · 0 评论 -
jdk安装以及配置环境变量
第一步安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)第二步1:安装jdk 随意选择目录 只需把默认安装目录 \java 之前的目录修改即可2:安装jre→更改→ \java 之前目录...原创 2015-03-05 16:04:01 · 93 阅读 · 0 评论 -
JAVA线程池原理以及常用线程池介绍
什么原因使我们不得不使用线程池?个人认为主要原因是:短时间内需要处理的任务数量很多。 使用线程池的好处:1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池:1、newFixedThreadPool 创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,...原创 2015-04-14 14:04:59 · 174 阅读 · 0 评论 -
java 线程基本方法介绍
一、run()和start() 这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。二、关键字Synchronized 这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当...原创 2015-04-14 14:17:58 · 87 阅读 · 0 评论 -
Java IO流学习总结
Java流操作有关的类或接口:Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节...原创 2015-04-14 16:16:06 · 59 阅读 · 0 评论 -
BeanUtils支持类
最近在项目中接触到了BeanUtils.copyProperties(),之前没怎么用过这个方法,在网上搜索了一下,发现还有一个 PropertyUtils.copyProperties()的方法,下面对这两个方法做一下总结。另外,在使用的时候,程序抛出了异常,经过分析得 知,异常的原因是因为赋值的对象中有一个时间类型(该属相采用java.util.Date的类型),程序无法通过,下面主要分析...原创 2015-07-13 14:30:18 · 97 阅读 · 0 评论 -
线程start与run方法区别
1:start()方法是启动(即开辟)一个线程的方法,因此线程的启动必须通过此方法。2:run()方法,只是Thread类的一个方法,它本身并不能开辟线程。 所以,当你用run()时候,程序只有一个线程,根本没达到你多线程的目的(是错误的)。而你用start()时候,你的程序又开辟了两个线程,所以结果不同一句话:start 启动新线程并在新线程中运行 run 中代码,而直接调用 run 方...原创 2015-07-28 14:17:57 · 153 阅读 · 0 评论 -
jackson把null替换为" "的2种方式
第一种方式:private String line;private String number;private String suffix = ""; //它可能是null 我们初始化给值为""就解决了private String name;private String classLast;第二种方式:ObjectMapper objectMapper = new ...2015-12-08 13:50:14 · 1610 阅读 · 0 评论