
java基础
无始无终123
。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java8--List转为Map、分组、过滤、求和等操作
定义1个Apple对象:public class Apple { private Integer id; private String name; private BigDecimal money; private Integer num; public Apple(Integer id, String name, BigDecimal money, ...转载 2018-07-17 11:44:51 · 12563 阅读 · 0 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2016-12-29 10:46:30 · 225 阅读 · 0 评论 -
Java反射机制( JAVA Reflection)
首先有两个问题: 1> 什么是Java的反射机制? 2> 反射机制有什么作用?1212 反射机制指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。反射能够让我们:在运行转载 2017-04-12 11:29:45 · 253 阅读 · 0 评论 -
Java虚拟机-----运行时栈结构
Java 虚拟机栈 该区域也是线程私有的,它的生命周期也与线程相同。虚拟机栈描述的是 Java 方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧,栈它是用于支持续虚拟机进行方法调用和方法执行的数据结构。对于执行引擎来讲,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧所关联的方法称为当前方法,执行引擎所运行的所有字节码指令都只针对当前栈帧进行操作。栈帧用于存转载 2017-04-12 11:03:53 · 265 阅读 · 0 评论 -
Java虚拟机-----方法区和运行时常量池
方法区: 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的 代码等数据(是唯一的数据)。当java虚拟机通过类加载器加载这个类的时候,这个类的信息就会保存到方法区中,虽然Java虚拟机规范把方法区描述为堆的 一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分转载 2017-04-12 11:01:35 · 726 阅读 · 1 评论 -
Java之控制反转和依赖注入
Java之控制反转和依赖注入1.简介依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念。 2.案例1)一般情况下的类耦合Main.javapublic class Main { public static void main(String[] args) { /****转载 2017-02-24 16:46:43 · 240 阅读 · 0 评论 -
JAVA设计模式之单例模式
概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、转载 2017-02-15 16:05:37 · 170 阅读 · 0 评论 -
JVM类加载原理学习笔记
(1)类的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)七个阶段(2)当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。(3)加载阶段:通过一个类的全限定名来获取转载 2017-01-19 16:18:30 · 218 阅读 · 0 评论 -
Spring AOP 实现原理
什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定转载 2017-01-18 15:37:38 · 338 阅读 · 0 评论 -
Spring AOP四种实现方式Demo详解与相关知识探究
一、前言在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版、代码格式有强迫症的人来说,实在是不能忍受~~~~(>_我亲手实现了一遍,重新整理,加上了一些不易关注到的细节、漏掉的知识,以及自己对AOP的一些理解,写成这篇博客。二、AOP相关概念(1)AOP是什么?AOP与拦截器的区别?太抽转载 2017-01-18 11:37:30 · 744 阅读 · 0 评论 -
try catch异常抛出与spring事务回滚策略相关
将异常捕获,并且在catch块中不对事务做显式提交(或其他应该做的操作如关闭资源等)=生吞掉异常;spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit or rollback(Spring默认取决于是否抛出runtime异常). 如果抛出runtime exception 并在你的业务方法中没有catch到的话,事务会回滚。 一般不需要在转载 2017-01-13 11:26:02 · 11185 阅读 · 1 评论 -
JVM内存模型
前一段时间粗略看了一下《深入Java虚拟机 第二版》,可能是因为工作才一年的原因吧,看着十分的吃力。毕竟如果具体到细节的话,Java虚拟机涉及的内容太多了。可能再过一两年去看会合适一些吧。不过看了一遍《深入Java虚拟机》再来理解Java内存管理会好很多。接下来一起学习下Java内存管理吧。请注意上图的这个:我们再来复习下进程与线程吧:进程是具有一定转载 2017-01-12 11:28:56 · 258 阅读 · 0 评论 -
String s = a+b+c+d+e;创建了几个对象的详细分析?
最近看到许多类似的帖子,大致意思如下:问题1: String s = "a" + "b" + "c" + "d" + "e"; 问此语句共创建了几个对象, 答案是 就创建了一个 String s = "a" + "b" + "c" + "d" + "e"; 赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量 对于常量,编译时就直接存储它们的字面值而不是转载 2017-07-13 11:29:42 · 2459 阅读 · 0 评论 -
Java中创建对象的5种方式 &&new关键字和newInstance()方法的区别
用最简单的描述来区分new关键字和newInstance()方法的区别:newInstance: 弱类型。低效率。只能调用无参构造。new: 强类型。相对高效。能调用任何public构造。newInstance( )是一个方法,而new是一个关键字,其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用new关键字生成对象没有这个限制。Class....转载 2018-05-31 10:04:44 · 1043 阅读 · 0 评论 -
JSP九大内置对象
虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。这些对象可以在JSP页面中调用,而不需要事先定义,这使得JSP编程更加的方便和快捷。其实这些内置对象都对应着某个Servlet类,在JSP被翻译成Ser转载 2017-01-17 17:19:35 · 217 阅读 · 0 评论 -
集合类层次结构关系
翻译人员: 铁锚翻译时间: 2013年11月15日原文链接: The interface and class hierarchy diagram for collections with an example program1. Collections(工具类) 和 Collection(集合顶层接口) 的区别首先, “Collection” 和 “Collections”转载 2017-02-06 14:21:28 · 618 阅读 · 0 评论 -
乐观锁与悲观锁的区别
在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突。这就是著名的并发性问题。典型的冲突有:l 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为6,则用户A丢失了他的更新。l 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。例如:用户A,B看到的值都是6,用户B把值改为2,用转载 2017-07-25 09:08:05 · 516 阅读 · 0 评论 -
Java集合类详解
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Element转载 2017-07-18 23:31:19 · 344 阅读 · 0 评论 -
为什么要重写hashcode()方法
主要原因是默认从Object继承来的hashCode是基于对象的ID实现的。如果你重写了equals,比如说是基于对象的内容实现的,而保留hashCode的实现不变,那么很可能某两个对象明明是“相等”,而hashCode却不一样。这样,当你用其中的一个作为键保存到hashMap、hasoTable或hashSet中,再以“相等的”找另一个作为键值去查找他们的时候,则根本找不到。资源转载 2017-07-26 20:59:00 · 1308 阅读 · 0 评论 -
Java Map-集合实现原理
HashMap 的实现原理HashMap 概述HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 Has转载 2017-07-25 09:14:33 · 19054 阅读 · 1 评论 -
HashMap 在 JDK 1.8 后新增的红黑树结构
读完本文你将了解到:点击查看 Java 集合框架深入理解 系列 - - 乾杯传统 HashMap 的缺点HashMap 在 JDK 18 中新增的数据结构 红黑树HashMap 中关于红黑树的三个关键参数HashMap 在 JDK 18 中新增的操作桶的树形化 treeifyBinHashMap 在 JDK 18 中新增的操作 红黑树中添加元素 putTreeVal转载 2017-07-18 23:23:17 · 27218 阅读 · 9 评论 -
常见的几种设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2017-07-17 16:12:08 · 419 阅读 · 0 评论 -
深入理解Java:类加载机制及反射
一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始转载 2017-07-17 16:05:20 · 372 阅读 · 0 评论 -
servlet的转发与重定向
转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。1、转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得; 以前的requ转载 2017-07-13 16:46:49 · 263 阅读 · 0 评论 -
Java:String和Date、Timestamp之间的转换
一、String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23"; Date date = new Date(); //注意format的格式要与日期String的格式相匹配转载 2017-01-17 11:39:19 · 551 阅读 · 0 评论 -
Java I/O学习(附实例和详解)
一、Java I/O类结构以及流的基本概念在阅读Java I/O的实例之前我们必须清楚一些概念,我们先看看Java I/O的类结构图:Java I/O主要以流的形式进行读写数据。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。根据转载 2017-01-12 14:06:03 · 348 阅读 · 0 评论 -
jdk环境变量配置
1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-6u14-windows-i586.exe2、点击安装jdk-6u14-windows-i586.exe,安装完成后会提示安装jre,因为jdk本身就带有jre,取消安装就行。3、配置环境变量:右击“我的电脑”-->“高级”-->“环境变量”。原创 2016-12-29 14:49:36 · 189 阅读 · 0 评论 -
彻底弄懂 HTTP 缓存机制 —— 基于缓存策略三要素分解法
导语HTTP 缓存机制作为 Web 性能优化的重要手段,对从事 Web 开发的小伙伴们来说是必须要掌握的知识,但最近我遇到了几个缓存头设置相关的题目,发现有好几道题答错了,有的甚至在知道了正确答案后依然不明白其原因,可谓相当的郁闷呢!!为了确认下是否只是自己理解不深,我特意请教了其他几位小伙伴,发现情况也或多或少和我类似。为了不给大家卖关子,下面我贴出2道题,大家可以尝试解答下:转载 2016-12-29 10:55:41 · 227 阅读 · 0 评论 -
动态代理proxy与CGLib的区别
什么是代理?静态代理与动态代理静态代理实例JDK动态代理实例CGLib 简介CGLib 与JDK动态代理的区别 代理模式是Java中常见的一种模式,英文名字叫走Proxy或者Surrogate,代理的本意是一个人代表另一个人,或者一个机构代表另一个机构,采取行动,因而,代理和现实生活中的中介有很大的类似,你买房子、卖房子,可以自己去操作,但是需要了解和买卖房产无关的细节,如契转载 2016-12-28 17:06:02 · 289 阅读 · 0 评论 -
Java进制转换
[java] view plain copy public class Test { public static void main(String[] args) throws Exception{ int a = 10; //十进制 -> 二进制 String转载 2016-12-28 16:57:41 · 202 阅读 · 0 评论 -
StringBuffer与StringBuilder之间的区别
[java] view plain copy public class Test { public static void main(String[] args) { StringBuffer strBuffer = new StringBuffer(); strBuffer.append("StringBu转载 2016-12-28 16:56:12 · 1485 阅读 · 0 评论 -
Java正则表达式
一,Java正则表达式的基本知识1,方括号:方括号中指定的单个字符才参与匹配[java] view plain copypublic class Test { public static void main(String[] args) { System.out.println("a".matches("[转载 2016-12-28 16:44:54 · 247 阅读 · 0 评论 -
JSP中Forward和Redirect之间的区别
为了说明JSP中Forward和Redirect之间的区别,写了一个测试web工程index.jsp:[html] view plain copy%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859转载 2016-12-28 16:37:47 · 442 阅读 · 0 评论 -
ArrayList,LinkedList,Vector,Stack之间的区别
一,线程安全性Vector、Stack:线程安全ArrayList、LinkedList:非线程安全 二,实现方式LinkedList:双向链表ArrayList,Vector,Stack:数组 三,容量扩展方面由于ArrayList和Vector(Stack继承自Vector,只在Vector的基础上添加了几个Stack相关转载 2016-12-28 16:35:33 · 331 阅读 · 0 评论 -
Java双向链表实现
[java] view plain copypublic class DoublyLinkList { private class Data{ private Object obj; private Data left = null; private Data right = null;转载 2016-12-28 16:31:15 · 260 阅读 · 0 评论 -
Java单链表、双端链表、有序链表实现原理
单链表:insertFirst:在表头插入一个新的链接点,时间复杂度为O(1)deleteFirst:删除表头的链接点,时间复杂度为O(1)有了这两个方法,就可以用单链表来实现一个栈了,见http://blog.youkuaiyun.com/a19881029/article/details/22579759find:查找包含指定关键字的链接点,由于需要遍历查找,平均需要查转载 2016-12-28 16:09:37 · 563 阅读 · 0 评论 -
Java Socket编程
Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行转载 2016-06-17 15:04:08 · 225 阅读 · 0 评论 -
程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现)
前几天,看到一篇前辈的博文“程序员必知的8大排序”,不禁的手痒起来,重新翻开严蔚敏老师的《数据结构》复习了一遍,然后一一的用java去实现,其中有不足之处,还望各位道友指正出来。 先来看看8种排序之间的关系: 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数转载 2016-12-29 15:06:18 · 256 阅读 · 0 评论 -
程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现)
接上一篇:程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) . 3.简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)实例:(3)用java实现[pl转载 2016-12-29 15:07:44 · 251 阅读 · 0 评论 -
java文件读写实例
java文件读写操作大全一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的命令∶"); byte buffer[]=new byte[1024]; int count=Sy转载 2016-12-28 17:14:49 · 290 阅读 · 0 评论