- 博客(38)
- 收藏
- 关注
原创 对浅拷贝和深拷贝的理解------拷贝两个相互引用的对象
Object类的 clone() 方法能实现对对象的浅拷贝, 如果需要对对象实现深拷贝, 则需要实现Cloneable接口并重写 clone() 方法, 且方法访问权限为 public. 我们来看看当两个对象相互引用时, 实现浅拷贝和深拷贝的情况:Man类中存在一个Woman引用类型的实例属性, Woman类中也存在一个 Man引用类型的实例属性. 使Man类实现 Cloneable接口并...
2018-11-26 18:49:28 768
原创 HashSet与HashMap的区别
HashSet 集合不允许存储相同的元素, 它底层实际上使用 HashMap 来存储元素的, 不过关注的只是key元素, 所有 value元素默认为 Object类对象.HashSet源码如下:HashSet 的构造方法//HashSet底层用来存储元素的结构,实际上使用HashMap来存储private transient HashMap<E,Object> map;...
2018-11-24 22:39:01 20876
原创 HashMap底层实现分析
一. HashMap 概述HashMap根据键的 hashCode 值存储数据, 大多数情况下可以直接定位到它的值, 因而具有很快的访问速度, 但遍历的顺序却是不确定的. HashMap 最多只允许一条记录的 key为null, 但是允许多条记录的 value值为null. HashMap是飞线程安全的, 即任一时刻如果有多条线程同时访问 HashMap, 可能会造成数据的不一致性.在 ...
2018-11-24 09:35:48 267
原创 ArrayLsit与Vector的区别
ArrayList 和 Vector 类都是基于数组实现的 List 类. ArrayList 和 Vector 封装了一个动态的, 允许再分配的 Object[] 数组. ArrayList 和 Vector 使用 initialCapacity 参数来设置该数组的长度. 当向 ArrayLsit 和 Vector 数组中添加元素超过改数组的长度时, 在底层会自动将数组进行扩容.关于 Arr...
2018-11-22 16:23:39 332
原创 ArrayList初始化容量为10源码解析
ArrayList 和 Vector 类是 List 集合的两个典型实现类, ArrayList 和 Vector 都是基于数组实现的 List 类.ArrayList 和 Vector 类封装了一个动态的, 允许再分配的 Object[] 数组. 如果一开始就知道 ArrayList 和 Vector 需要保存多少个元素, 则可以在创建它们时就指定 initialCapacity 大小....
2018-11-21 21:38:54 3584 2
原创 TransactionTemplate模板类对数据库操作实现事务管理
只有详细代码标注, 以备忘使用JdbcTemplate模板类对DAO层的简易实现使用TransactionTemplate事务模板类实现对持久层的事务管理, TransactionTemplate是线程安全的. ...
2018-10-22 23:56:03 506
原创 Spring 容器事件
ApplicationContext 扩展了 ApplicationEventPublisher 接口. 让容器拥有了发布应用文上下事件的能力. 包括容器启动事件, 关闭事件的功能.先解释几个名词: (1)事件源: 事件的产生者. 任何一个 EventObject 都必须拥有一个事件源.(2)事件监听器注册表: 组件或框架的时间监听器必须有所依存. 必须提供一个地方保存时间监...
2018-10-13 16:58:05 549
原创 MySQL数据类型
1. char 和 varchar 类型.char 和 varchar 都用来保存数据库中较短的字符串. 二者的主要区别在于:char 列的长度固定为创建表时声明的长度. 长度可以从 0-255 的任何值.varchar 列中的值为可变长的字符串. 长度可以指定为 0-65535 之间的值.在检索时, char 列删除了尾部的空格. 而 varchar 保留了这些空格....
2018-10-11 10:30:25 108
原创 MySQL基础---------SQL语言
一.MySQL基础MySQL是二十世纪九十年代开发的一个关系型数据库, MySQL5.0增加了对视图, 数据库存储过程, 触发器, 服务器端游标, 以及分布式事务协议等高级特性的支持.MySQL优势: 开源, 免费, 跨平台, 性能高, 用户较多 弱点: SQL标准符合性差.当面对一个陌生的数据库时, 通常需要一种方式与它进行交互, 就用到了 SQL语言....
2018-10-10 14:07:25 277
原创 CGLib动态代理的实现
使用JDK创建动态代理有一个限制, 即它只能为接口创建代理实例. 对于没有定义接口的业务方法的类, 使用CDGlib 进行动态代理.CGLib是一个强大的, 高性能的代码生成库. 被广泛应用于 AOP 框架. 用以提供方法拦截操作.CGLib采用底层的字节码技术, 可以为一个类创建子类, 在子类中采用方法拦截的技术拦截所有父类方法的调用, 并织入横切逻辑.一. CGLib...
2018-10-09 00:26:01 9497
原创 JDK动态代理
Spring AOP使用了两种代理机制: 一种是基于JDK的动态代理; 一种是基于 CGLib 的动态代理.JDK本身只提供接口代理, 而不支持类的代理.JDK动态代理主要涉及 java.lang.reflect 包中的两个类: Proxy 和 InvocationHandler.InvocationHandler 是一个接口, 可以通过实现该接口定义横切逻辑, 并通过反射...
2018-10-08 19:05:43 5369
转载 JDK动态代理(转载)
关于JDK的动态代理,最为人熟知要可能要数Spring AOP的实现,默认情况下,Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。那么,什么是JDK的动态代理呢?JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。JDK从1.3开始支持动态代理。那么JDK是如何生成动态代...
2018-10-08 14:43:15 155
原创 Spring AOP 概述
一.什么是 AOPAOP 是 Aspect Oriented Programing 的简称. 也称为 面向切面编程.图解说明一下AOP:上图中的业务逻辑代码淹没在重复化非业务逻辑代码中 (监控和事务代码). 无法通过抽象父类的方式消除重复性横切代码, 因为这些横切逻辑依附在业务逻辑中, 不能转移到其他地方.AOP 将这些分散在各个业务逻辑代码中的相同代码通过横向切割...
2018-10-07 18:29:57 217
原创 简述Spring IoC容器内部工作机制
Spring Ioc 容器继承体系图 Spring 的AbstractApplicationContext 是 ApplicationContext 的抽象实现类. 该抽象实现类的 refresh() 方法定义了 Spring 容器在加载配置文件后的各项处理工作. 这些处理过程清晰地刻画了 Spring 容器启动时所执行的各项操作. 1.Abstract...
2018-10-06 08:15:11 1025
原创 Spring中的FactoryBean
Spring 通过反射机制利用<bean>的class属性指定实现类实例化Bean. 在某些情况下, 实例化Bean的过程比较复杂, 如果按照传统方式, 需要在<bean>中提供大量的配置信息. 配置方式的灵活性受限. 这时采用编码可能会获得一个简单的方式.Spring 提供了一个 org.springframework.beans.factory.FactoryBe...
2018-09-27 19:08:33 508
原创 通过编码方式动态添加Bean
DefaultListableBeanFactory 实现了 ConfigurableListableBeanFactory 接口. 提供了可扩展配置, 循环枚举等功能. 可以通过此类实现Bean的动态注入. 为了实现在Spring容器启动阶段能动态注入自定义Bean, 需要实现Bean工厂后处理器接口 BeanFactoryPostProcessor. 并实现 postProcesso...
2018-09-27 17:57:17 297
原创 在IoC容器中装配Bean-----------基于Java类的配置
JavaConfig是Spring的一个子项目, 它皆在通过Java类的方式提供 Bean的定义信息. 普通的POJO只要标注了 @Configuration注解, 就可以为 Spring 容器提供Bean定义的信息了. 每个标注了 @Bean注解的方法都相当于提供了 Bean的定义信息.使用 @Configuration 注解标注配置类:在不同配置类中引用定义的Bean, 因为...
2018-09-27 15:50:45 512
原创 在IoC容器中装配Bean之---------------基于注解的配置
Spring从2.0开始引入基于注解的配置方式1.使用注解定义Bean采用基于XML的配置, 则Bean的定义信息和Bean的实现类本身是分离的. 采用基于注解的配置文件, Bean定义信息通过在Bean实现类上标注注解实现.上面使用注解定义了一个 userdao Bean. @Component 注解在类 UserDao上对类进行标注, 它可以被Spring容器识别, Sprin...
2018-09-26 22:04:04 338
原创 XML配置中<bean>之间的关系
1.依赖一般情况下, 可以使用<ref>标签建立对其他Bean的依赖关系, Spring负责管理这些Bean的关系. 当实例化一个Bean时, Spring确保该Bean所依赖的其他Bean, 已经初始化.在某些情况下, Bean之间的依赖关系并不明显.代码示例如下:CacheManager 依赖于 SystemSettings 类. SystemSetti...
2018-09-25 20:24:50 555
原创 在IoC容器中装配Bean之-----------基于XML的配置(依赖注入)
一.Spring装配Bean的简要概述1.要使应用程序中的Spring容器成功启动, 需要同时具备以下三个方面的条件:(1)Spring框架的类包都已经被Maven项目依赖成功.(2)应用程序为Spring提供了完整的Bean配置信息.(3)Bean的类都已经放在应用程序的类路径2.Spring是如何在容器中存储Bean的信息?Spring启动时读取应用程序提供的Bean的...
2018-09-23 20:01:59 251
原创 Spring之ApplicationContext简述
ApplicationContext 由 BeanFactory 派生而来, 提供了更多面向实际应用的功能.ApplicationContext 的主要实现类是 ClassPathXmlApplicationContext 和 FileSystemApplicationContext, 前者默认从类路径加载配置文件, 后者默认从文件系统中装载配置文件. ApplicationContext继承...
2018-09-21 17:02:19 1801
原创 Spring之BeanFactory简述
什么是控制反转 (IoC) Inverse of Control?IoC包括两方面的内容: (1)控制 (2)反转"控制" 指对某一个接口的具体实现类选择的控制权"反转" 指这种控制权从调用者手上移除控制反转就是指, 某一接口具体实现类的选择控制权从调用类移除, 转交给第三方决定 ,第三方可以是Spring容器. Bean工厂 (com.springframework.be...
2018-09-20 17:52:37 489
原创 Spring资源访问接口------------Resource
资源抽象接口JDK提供的访问资源的类 (java.net.URL File)不能很好地满足各种底层资源的访问需求, Spring设计了一个Resource接口, 提供了更强的底层资源访问能力. Spring的Resource接口及其实现类可以在脱离Spring框架的情况下使用.Resource接口及其实现类示意图:WritableResource: 可写资源接口, Spring...
2018-09-19 21:39:12 347
原创 Spring之-----------------SpringIoC容器与Bean的装配
一.Spring简介1.Spring是一个开源框架, 是为了解决企业级应用开发的复杂性而创建的, 最初创建Spring的主要目的是用来替代更加重量级的企业级Java技术, 尤其是EJB (企业级JavaBean, Enterprise JavaBean). 相对于EJB来说, Spring提供了更加轻量级和简单的编程模型. 增强了简单老式Java对象 (POJO) 的功能, 使之具备了之...
2018-09-16 20:44:13 288
原创 Linux基础知识-------进程及服务的控制
进程及服务的控制1.什么是进程系统中正在运行的程序.2.图形的进程查看方式gnome-system-monitor (查看的是/proc里的进程)3.查看进程的命令ps 查看进程ps a 查看当前环境相关进程ps -A 查看所有进程ps -e 查看所有进程ps -a 在当前终端中运行的进程, 但不包含当前环境进程p...
2018-08-21 22:12:22 215
原创 Linux基础知识---------网络配置
一.直连网络tcp ip协议: 传输控制协议, 又名网络通信协议, 由网络层的ip协议和传输层的tcp协议组成, TCP/IP定义了电子设备如何介入因特网, 以及数据如何在它们之间传输的标准.TCP: TCP是面向连接的通信协议, 通过三次握手建立连接, 通讯完成时要拆除连接, TCP只能用于端到端通信.直连网络: 指不用经过其他路由器就可以直接到达的网络.二.路由器路由器的作...
2018-08-21 22:10:22 771
原创 Linux基础知识--------文件权限
一. 文件权限的控制1.权限存在意义Linux文件一般分为两种, 一般文件和目录文件. 文件权限对数据的安全性至关重要.在Linux系统中,每一个文件都有很多属性, 尤其是群组的概念, 用以确保数据安全性.实现系统保护功能.实现数据共享功能.2.权限的识别ls -l file 查看文件的权限ls -ld dir 查看目录的权限3.权限的...
2018-08-18 21:12:52 182
原创 Linux基础知识-------用户的管理
一.系统中为什么要有用户?用户:系统最底层的安全设定. linux操作系统中, 每一个文件和程序必须属于某一个"用户". 每一个用户都有一个唯一的身份标识叫做用户ID (UID).每一个用户也至少需要属于一个用户分组. 用户分组也有一个唯一的身份标识叫做用户分组ID(GID). 用户可以归属于多个用户分组.用户组可分为初始组和附加组: 初始组:指用户一登录就立刻拥有改组权限...
2018-08-12 21:52:47 578
原创 Linux系统基础知识
一.什么是Linxu系统1.Linux: linux指在电脑中运行的内核, 不同linux版本都使用的linux内核, (是什么内核就是什么操作系统)故称为linux操作系统.安卓手机就是linux系统.2.linux是开源的软件, 存在很多版本. 所谓linux操作系统实际上是指 linux内核与其他GNU(开源组织)软件结合, 形成完全自由的操作系统. linux操作系统也被称...
2018-08-03 13:21:41 495
原创 JavaWeb(猜拳游戏)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>猜拳游戏</title> <style type="text/css">
2018-06-29 13:49:35 1208
原创 Javase类的加载和反射
一.类的加载 连接和初始化 1.JVM和类 当我们调用Java命令运行某个Java程序时, 该命令会启动一条Java虚拟机进程, 不管该Java程序有多复杂, 改程序启动了多少个线程, 它们都处于Java虚拟机进程里, 同一个JVM的所有线程, 所有变量都处于同一个进程里, 它们都使用该JVM进程的内存区. 当系统出现以下几种情况时, JVM进程将被终止: ...
2018-06-06 20:12:11 193
原创 对象序列化的含义和意义
序列化机制允许将实现序列化的Java对象转换成字节序列 ,这些字节序列可以被保存在磁盘上,或者通过网络传输,以备以后重新恢复成原来的对象.1.对象的序列化(serialize)指将一个Java对象写入IO流中,对象的反序列化机制(Deserialize)则指从IO流中恢复该Java对象.如果需要让某个对象可以支持序列化机制,必须让它的类是可序列化的(实现Serialize接口或者Externali...
2018-06-03 19:48:03 23370 3
原创 TreeSet类(概述)
1. TreeSet是SortedSet接口的唯一实现, TreeSet可以确保集合元素处于排序状态. TreeSet并不是根据元素的插入顺序进行排序, 而是根据元素实际值来进行排序.(可以确保元素唯一并且元素排序) TreeSet采用红黑树的数据结构对元素进行排序.2.TreeSet支持两种排序方法: 自然排序和比较器排序. 默认情况下,TreeSet 采用自然排序.(In...
2018-05-09 21:06:59 1437
原创 Set接口概述
1. Set集合和List集合的区别? Set: 不允许元素重复, 集合元素唯一(元素可以为null), 不能保证迭代顺序恒久不变, 无序(存储和取出不一致). List: 允许元素重复, 并且元素有序(存储和取出一致).2. Set 集合存储元素时可以保证元素的唯一性, 原因什么? HashSet 集合的add()方法底层依赖于双列集合HashMa...
2018-05-09 19:40:30 4059
原创 Collection集合的概述及程序出现的异常
1.Java提供集合类用于保存盛装引用类型变量,因此集合类也被成为容器类. 所有的集合类都位于java.util包下. 集合只能用来存放引用数据类型(即对象,实际上是保存对象的引用变量).2.Java的集合类主要由两个接口派生而出: Collection和Map, Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类.3.Collection集合的两个子接口...
2018-05-09 18:57:07 249
原创 JAVA基础知识
1.switch语句的格式?针对格式的解释?以及注意事项?switch语句的格式switch(表达式){case 常量: 语句; break;case 常量: 语句; break;........default: 语句; break;}针对格式的解释switch:是一个选择结构语句,与if语句功能一样.case:它...
2018-04-04 20:12:01 274
原创 css+div布局
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>lianxi</title> <style type="text/css"> #main
2018-03-30 16:43:47 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人