自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 学习总结与分享-JVM垃圾回收机制与算法

垃圾的判断与算法:引用计数法:给对象中添加一个引用计数器,每当它被引用到一个地方时,计数器值就+1,;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能在被使用。1)、优点判定效率很高(2)、缺点不会完全准确,因为如果出现两个对象相互引用的问题就不行了。可达性分析法:该方法的基本思想是通过一系列的“GC Roots”对象(局部变量,栈等)作为起点进行搜索,如果在“GC Roots”和一个对象之间没有可达路径,则称该对象是不可达的,不过要注意的是被判定为不可达的对象不一定就会成为

2020-06-09 17:25:35 167

原创 学习总结与分享-JVM对象的创建过程

当虚拟机遇到一条new指令时,首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载,解析和初始化过,如果没有,那必须先执行相应的类的加载过程。  在类加载检查通过后,接下来虚拟机将为新生对象分配内存,对象的大小在类加载完毕之后就可以确认,从物理上来讲就是从堆中分配与新生对象大小相等的内存区域来存放新生对象。  分配完成后,虚拟机需要将分配到的内存看空间初始化为零值(除了对象头之外)。这一步保证了对象的实例字段在代码中可以不赋值就直接使用。将对象的信

2020-05-25 22:52:40 167

原创 学习总结与分享-JVM虚拟机类加载过程

一、什么是类的加载java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中。其中类装载器的作用其实就是类的加载。二、类加载的过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们的顺序如下图所示:中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开

2020-05-19 14:20:31 187

原创 学习总结与分享-Spring AOP基础学习

Spring AOP(面向切面编程) 和 Spring IOC(控制反转) 并称为Spring框架的核心,AOP是通过代理的形式动态的为某个或某些方法在不改变原有逻辑的情况下在方法前方法后加入额外的业务。AOP的基本概念:AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截...

2020-01-14 17:26:26 156

原创 学习总结与分享-手写Spring MVC完善篇

在上章分享中我们完成了基础的构建,已经可以根据url访问到controller并对相应的参数根据参数名匹配完成赋值,将参数信息打印到网页中,下面我们需要根据ModelAndView中的视图信息字符串,跳转到相应的页面中,并把model中相对应的参数信息替换到页面的指定符号。代码:@XxxController@XxxRequestMapping("/user")public class Us...

2019-12-23 21:13:43 138

原创 学习写作与分享-spring mvc基础功能搭建

spring mvc:Model (数据)View (视图)Controller (业务)最上层是面向用户的视图层,中间一层是业务逻辑层,最下面一层是数据层。把数据、展示、业务逻辑进行分离,每一层的变化可以不影响其他层,增加程序的可维护性和可扩展性。请求、响应过程View–>Controller–>Model–>Controller-ViewMVC解决思路1...

2019-12-16 19:49:07 196

原创 学习总结与分享-Spring IOC尝试自实现仿IOC容器

Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。也是几乎所有Java工作者必须要掌握的框架之一,其优秀的设计思想以及其代码实现上的艺术也是我们需要掌握的。要学习Spring,除了在我们的项目中使用之外,也需要对它的源码进行研读,但是Spring的实现涵盖的知识很多,在加上其中的类的数量也是非常的多,在我们阅读源码时可能会在几十个类之间穿插阅读,很有可能一...

2019-12-02 21:28:54 134

原创 学习总结与分享-Spring IOC容器源码之扩展知识浅读

Spring 框架提供了几种 PostProcessor接口用于建模对容器或者bean的后置处理器,它们定义了一些方法,这些方法在特定的时机会被调用。通过这种机制,框架自身或者应用开发人员有机会在不侵入容器或者bean核心逻辑的情况下为容器或者bean做针对某些特定方面的定制或者扩展:能力增强,属性设置,内容修改,对象代理,甚至直接替换整个bean。Spring 提供的 PostProcessor...

2019-11-26 09:40:57 152

原创 学习总结与分享-Spring IOC容器源码主线流程浅读

spring ioc容器是spring中最重要的知识之一,是使用spring框架的基础,它为我们提供了快速创建对象,快速注入属性,一次配置多处依赖等功能,也为使用spring框架的各种功能提供了基础依赖。spring ioc容器的创建与生成bean对象至容器中分为注解的方式与xml配置文件的方式两种,其中注解的方式更为方便与灵活,省去了许多配置文件的繁琐与代码量。xml生成bean方式的源码相较...

2019-11-19 17:36:14 170

原创 学习总结与分享-Spring IOC容器的常用注解与生命周期

经过上次的学习,已经初步的了解了Spring IOC的简单容器是如何编写的,也大体明白了Spring IOC容器的作用与原理,那么如何才能使用好Spring IOC使其可以为我们正确的生成实体bean,正确的注入属性呢。Spring 基于xml文件方式生成bean:我们上次的学习就是通过配置文件的方式自己手写的简单IOC容器,而Spring已经为我们封装好了方法,只需要通过正确的xml配置,就...

2019-11-11 20:53:07 272

原创 学习总结与分享-spring篇之IOC(控制反转)浅析

概述IOC 的作用:解耦、单例缓存、Bean生命周期管理、父子容器IOC 工作要经历2个过程:启动预加载BeanDefination、实例化对象且缓存单例,传统BeanFactory的实现类是懒加载(loadClass时再实例化bean),而web容器实现是预加载(启动和实例化一起进行)。但是BeanDefination都是预加载的。IOC的作用1、解耦:实现了类与类依赖关系的解耦,...

2019-10-29 15:35:57 256

原创 学习总结与分享-dubbo的了解与初步使用

什么是dubbo?Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。Dubbo是阿里巴巴SOA服务化治理方案的核心框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。通俗来讲dubbo是一种服务与服务之间的通信方式,是为了解决分布式架构服务器所产生的一些问题的框架。什么...

2019-10-15 11:24:11 173

原创 学习总结与分享-zookeeper的安装和java下的基础使用

Zookeeper概念:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。特点与用途...

2019-09-17 17:57:07 460

原创 学习总结与分享-设计模式之装饰者模式浅析

装饰者模式:装饰者模式也称为包装模式,以透明动态的方式来动态扩展对象的功能,也是继承关系的一种代替方案。若要扩展功能,装饰者提供比继承更有弹性的替代方案。装饰者模式基础条件(UML类图):1、Component是基类。通常是一个抽象类或者一个接口,定义了属性或者方法,方法的实现可以由子类实现或者自己实现。通常不会直接使用该类,而是通过继承该类来实现特定的功能,它约束了整个继承树的行为。比如...

2019-09-02 16:49:39 166

原创 学习总结与分享-设计模式之观察者模式

在完成日常业务中,观察者模式也是十分常见的一种模式,当我们需要改变某一个对象的属性时,其依赖的所有对象都需要做相同的相应的变动的时候,这时使用观察者模式就可以使代码更加的独立健壮。观察者模式观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观...

2019-08-27 00:01:38 154

原创 学习总结与分享-设计模式之代理模式入门

设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。(-----摘自百度百科)人们所熟知的设计模式共有23种,这次要研究的是其中的一种在日常开发中很常见的模式之一,代理模式。...

2019-08-20 15:26:10 188

原创 学习总结与分享-MySQL的优化(完结篇)

在日常代码开发中,我们总是要写各种各样的sql语句,一段程序或者说一次客户端与服务端的交互,最能影响执行速度的就是网络的传输和底层数据的存取等。。那么底层数据的存取如果是使用的是磁盘存储的关系型数据库,那么就是依靠sql语句了,所以,一个或者一组sql的执行效率,直接的影响到了程序的执行速度和用户体验,所以我们在编程时,要学会sql的优化,最大化的优化sql的执行时间,这样不仅可以增加执行速度,还...

2019-08-01 21:44:43 736

原创 学习总结与分享-MySQL的MVCC(多版本并发控制)浅析

我们在平时编码操作数据库时,通常会有一个事务A读取一行数据,而又有另一个事务B需要写同一条数据,而为了保证事务A在每次读取时保持一致性和原子性,在传统的事务的锁机制下,这肯定是不允许的,事务B需要等待事务A执行结束后才可以执行,而当类似的需求并发过多的时候,就很容易产生锁阻塞、死锁或者事务一直在等待执行过慢导致报错等等情况,所以数据库就使用了MVCC这个概念来解决事务在并发下的效率问题。什么是M...

2019-07-29 23:22:57 212

原创 学习总结与分享-数据库的事务与锁入门

这次的事务和锁研究,主要是MySQL数据库的innodb引擎,说到数据库,就免不了要说事务和锁机制,这是数据库最重要的组成部分。什么是事务?事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。(摘自百科)...

2019-07-22 22:45:01 307

原创 学习总结与分享-MySQL数据库索引底层原理入门浅析

  我们在日常中经常操作数据库,mysql数据库是常用的数据库之一,支持多种索引类型,如B+Tree,哈希索引,全文索引等。这次主要研究的就是常用的B+Tree也叫B+树。什么是B+树?  ...

2019-07-16 15:30:35 188

原创 学习总结与分享-ClassLoader类加载器与类加载机制

  在最初学习java时,我们都知道我们编写的java代码在执行前会被编写成class字节码文件,然后通过类加载器加载到jvm虚拟机中去执行,并开辟内存空间存储其中的字节码对象与初始化赋值。在平时编写代码时,我们其实也常常与类加载器打交道,比如反射调用,读取配置文件,动态代理等。。那么,类加载器又是如何工作的呢,其中又是怎么加载对象,给变量赋值的呢,这就是这次我要学习的问题了。类加载的过程类加...

2019-07-09 15:09:05 153

原创 学习总结与分享-浅析java的多态与策略模式

  多态,是java三大面向对象的特性之一,其他还有封装和继承,有时人们也会将抽象算进去,称为四大特性。在日常写代码时,我们基本每天都在看到使用到多态,那么,什么是多态呢,又该怎么正确使用呢,这就是今天要去研究的了。。1.什么是多态:  其实提到多态就不得不提到继承,因为要实现多态,首先第一点必须要有继承一个父类,然后重写或实现其中的方法,最后用最简单的一句话就是:父类型的引用指向子类型的对象...

2019-07-02 15:38:05 471

原创 学习总结与分享-对象拷贝与序列化理论与使用

对象的拷贝与序列化   1.对象的拷贝   对象的拷贝我们常见的几种方式大概分为引用拷贝、浅克隆、深克隆,在实际开发中,当我们想把一个对象中的所有属性的值复制到另一个对象中时,我们经常会用到对象的拷贝,在很多代码中都使用的是引用拷贝,如下面代码 public static void main(String[] args) { Customer c1 = new Customer();...

2019-06-25 10:11:31 133

原创 学习总结与分享-常用Map集合之HashMap原理浅析

Map是一种以(key,value)键值对的形式来存储数据的集合体系,其中HashMap也是这个体系中最常用的集合之一,他的查询速度与增删的速度都十分的快,存取是无序的,并且其中键值对中的键(key)值不能重复,重复则替换之前的value值,那么就引申出几个问题。 1.常见的集合还有哪些? LinkedHashMap,与HashMap的区别为他的存取顺序是有序的,因为他的 HashTa...

2019-06-18 09:48:13 220

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除