java
whuruby
珞珈山下的理想,一分耕耘一分收获
展开
-
GC
1. GC概述 1.1 GC(Garbage Collection)是JVM的核心组件,它在JVM中以单独的线程(daemon thread)运行,作用于内存堆区域(Stack Space),扫描那些经过new关键字创建的无用的对象并清除以释放内存,必要时整理内存。 // 只作用于堆区域吗? 也会扫描方法区(永久代) // 只处理经过new关键字创建的对象吗? 也会处理无用常量和无用...原创 2018-07-29 17:18:35 · 198 阅读 · 0 评论 -
Session基础
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><div id="content" class="content mod-cs-content text-content clearfix">1、HTTP协原创 2015-05-07 10:09:23 · 338 阅读 · 0 评论 -
Tomcat容器中相关对象的生命周期
1、Tomcat中相关对象的生命周期 (1)ServletContext:应用程序生命周期内,被所有Request和Session共享 (2)Servlet、Filter、Listener:应用程序生命周期内,被所有Request和Session共享 (3)HttpSession:客户端(浏览器)不关闭(同一实例),并且在Server中没有过期,被所有持有相同Session的Request共享原创 2017-07-26 17:56:23 · 430 阅读 · 0 评论 -
Java Web学习02-服务器端口总结
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><div id="content" class="content mod-cs-content text-content clearfix">一、服务器类型原创 2015-05-07 10:03:35 · 388 阅读 · 0 评论 -
对称秘钥与公共秘钥的区别
1、对称秘钥 定义:消息发送方和消息接收方必须使用相同的密钥,该密钥必须保密。发送方用该密钥对待发消息进行加密,然后将消息传输至接收方,接收方再用相同的密钥对收到的消息进行解密 如何使用?:发送方将秘钥共享给接收方 为什么称为【对称】?:加密和解密使用了相同的秘钥 常见算法:DES、AES等2、公共秘钥(非对称秘钥) 定义:使用两个密钥,一个公共密钥PK和一个原创 2017-08-20 10:19:12 · 8934 阅读 · 0 评论 -
Java BIO与NIO比较
参考:http://blog.csdn.net/skiof007/article/details/52873421 http://blog.csdn.net/z173273946/article/details/50010375 BIO与NIO对比 NIO内部机制简单模拟原创 2017-08-19 10:22:56 · 258 阅读 · 0 评论 -
Java BIO学习总结
1、流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 2、IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 3、字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高原创 2017-07-10 15:16:08 · 2664 阅读 · 1 评论 -
Java常用集合类
Collections:使用Iterator遍历 Map:使用Map.entrySet遍历List:元素有序,可重复ArrayList:动态数组实现,随机存取速度快LinkedList:双向队列实现,插入删除速度快Set:元素无序,不可重复 Queue:模拟堆栈、队列Hashtable中key和value均不允许为null,否则抛出异常NullPointerExcep...原创 2017-07-16 11:14:48 · 272 阅读 · 0 评论 -
Java中的逻辑与和短路与
1、名词解释&称为逻辑与,会全部判断后得出结果,只有两个操作数都是true,结果才是true&&称为短路与,会从左往右逐个判断表达式,只要能得出结果后面的不再判断,也是只有两个操作数都是true,结果才是true。但是如果左边操作数为false,就不计算右边的表达式,直接得出false,相当于短路了右边|称为逻辑或,||称为短路或,道理类似2、举例说明 (1)逻辑或逐个判断表达式,因此以下代码会原创 2017-08-29 13:57:49 · 997 阅读 · 0 评论 -
HashMap和TreeMap排序
代码示例public static void main(String[] args) throws ParseException { Map<String, String> hashM = new HashMap<String,String>(); hashM.put("aa", "1"); hashM.put("cc", "4");原创 2017-09-07 08:57:01 · 388 阅读 · 0 评论 -
Java内存模型学习
1、JVM内存主要由线程栈和堆两部分组成,JVM支持多线程,并为每个线程分配一个线程栈。2、每个线程栈都有一个方法调用堆栈,用于追溯各个方法的逻辑调用过程,每个方法中会创建很多局部变量,尽管不同线程会执行同样的方法,但是每个线程会有不同的局部变量拷贝,8种基本数据类型(boolean, byte, short, char, int, long, float, double)变量都存储在线程原创 2017-06-20 22:36:28 · 213 阅读 · 0 评论 -
JDK之动态代理
1、基本原理1.1 原理描述:使用代理模式必须要让代理类和目标类实现相同的接口,客户端通过代理类来调用目标方法,代理类会将所有的方法调用分派到目标对象上反射执行1.2 涉及技术:代理、反射1.3 局限性:必须基于接口实现2、实践2.1 定义接口及实现类public interface Say { void sayHello(String content);...原创 2018-08-19 17:12:06 · 165 阅读 · 0 评论 -
Java动态代理
Java动态代理技术Jdk Proxycglib proxy新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入J...原创 2018-10-27 21:09:30 · 375 阅读 · 0 评论 -
Java运算符结合性
注意: int a = ++i; //先自增再赋值 int b = i++; //先赋值再自增int a = 1 ? 2 : 3 ? 4 : 5; // 运行结果a=2;即条件运算符是从右到左结合原创 2017-07-15 22:35:26 · 1088 阅读 · 1 评论 -
Java Web学习01
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><div id="content" class="content mod-cs-content text-content clearfix">1、下载安装T原创 2015-05-07 10:10:40 · 561 阅读 · 0 评论 -
简单控制台程序启动过程
1、键入命令java bytecode_filename,开始启动JVM,操作系统给JVM分配一定数量的内存空间2、JVM在类路径(classpath)中搜索指定的字节码文件,并加装到JVM内存空间中。这里的类路径包含两个方面,一是JRE的“home”路径下的系统JAR文件,二是用户自行编写的XX.class文件。注意系统JAR中的核心类(String,Math,System等)通常会自动加载原创 2015-05-07 10:12:13 · 476 阅读 · 0 评论 -
java数组、集合使用及相互转换
package com.gooagoo.javautil;import java.util.Arrays;import java.util.Collections;import java.util.Iterator;import java.util.List;public class TestMain{ public static void main(原创 2017-06-05 16:32:13 · 259 阅读 · 0 评论 -
Java反射基础学习
package com.gooagoo.classloader;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java原创 2017-06-06 22:26:09 · 165 阅读 · 0 评论 -
Java泛型温习
package com.gooagoo.classloader;public class GenericClass { public static void main(String[] args) { //没有泛型 Class intClass = int.class; Class intClassTest = int.class; /原创 2017-06-06 22:31:45 · 178 阅读 · 0 评论 -
Java抽象类与接口比较
1、抽象类/** * 抽象类用于总结一系列相似对象的共有特征 * * 抽象类可以有普通成员变量、非抽象方法 * 抽象类可以没有抽象方法 * 抽象类中抽象方法必须显式声明为public abstract * 抽象类中的成员应该有相关性 * * 继承类必须实现抽象方法 * @author Administrator * */public abstract class Anim原创 2017-07-10 18:11:54 · 307 阅读 · 0 评论 -
泛型类型擦除
1、关于类型擦除 使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型)/** * 使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型) * 编译时进行了类型擦除,导致两个函数定义一模一样,编译报错 */public cl原创 2017-07-11 10:40:58 · 412 阅读 · 0 评论 -
关于ClassLoader
1、基础知识 开发阶段定义的类经编译后生成Class文件(二进制),里面保存类的描述信息。JVM当且仅当需要用到某个类时才将其对应的Class文件加载到内存中,而且只会加载一次。类的加载通过类加载器实现。常用的类加载器有四种: (1) BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,位于JAVA_HOME/jre/原创 2017-07-03 21:45:26 · 214 阅读 · 0 评论 -
Java内部类
1、Java Member Inner Classpublic class JavaMemberInnerClass { private int data = 10; private static String str = "hello"; protected double score = 90.0; // 内部成员类能获取父类所有成员(private,protected,sta原创 2017-06-13 21:54:10 · 193 阅读 · 0 评论 -
Java异常学习
1、三种类型异常:checked exception、unchecked exception(runtime exception)、error2、五个关键字:try、catch、finally、throw、throws3、使用try…finally…. | try….catch….finally 那什么时候使用try-finally,什么时候使用try-catch-原创 2017-06-14 09:01:10 · 222 阅读 · 0 评论 -
Java Clone研究
1、Clone出处Object中方法:protected nativeObject clone() throws CloneNotSupportedException;2、自定义对象如何重定义clone(1)实现Cloneable接口(必须,否则调用clone方法报异常CloneNotSupportedException)(2)重写Object类的clone()方法,内部调用O原创 2017-06-26 22:26:57 · 200 阅读 · 0 评论 -
Date之Parse和clone
public static void main(String[] args) throws CloneNotSupportedException, ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // test parse date Date date = new Date();原创 2017-06-27 08:41:33 · 511 阅读 · 0 评论 -
软件开发分层的好处
(1)计算机程序是用来高效、方便地处理日常业务。要想通过计算机解决问题,首先得将问题描述成计算机可以理解的形式。面向对象是当前比较热门和实用的建模方法,它将现实世界中的问题领域抽象成一个个对象和对象之间的交互,对象包括属性、方法以及与其它对象之间的联系组成。(2)面向对象建模是对核心问题的理解与表达,其结果表达通常使用UML表示,它是一个中介,既让用户(非专业人员)了解具体要做的是什么,也让开原创 2015-05-05 10:31:06 · 4240 阅读 · 0 评论