自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书生不读四书五经

2017/10/13 日创建

  • 博客(23)
  • 收藏
  • 关注

原创 无题-自我检讨

自我检讨

2023-12-04 10:50:37 352

原创 JUC - ArrayList和LinkedList总结

文章目录一、概述1. 集合的继承结构2. 简述集合的使用场景二、ArrayList的源码解析1. 简述ArrayList2. 空的ArrayList第一次扩容2.1 那么为什么以1.5倍这个值作为比较的基准呢?3. subList 修改值后原ArrayList会更改4. ArrayList 小结三、LinkedList的源码解析1. LinkedList仅仅是一个列表吗?2. LinkedList的迭代3. LinkedList小结一、概述​​1. 集合的继承结构由上图可知,Collect

2021-05-27 10:36:49 211

原创 七、详谈Spring的AOP原理

文章目录一、AOP概述1、AOP是什么?2、什么场景下会使用到AOP?3、老弟工作中AOP的实现内容?二、AOP源码解析1、AOP的包及SPI解析类?2、AOP在Spring中的入口?3、DEBUG跟踪Spring AOP源码流程3.1 判断Bean的方法是否被增强3.2 创建Bean的代理对象三、总结一、AOP概述1、AOP是什么?AOP是Spring中的一种动态技术,支持对类的方法的增强,在对象创建的过程中会判断该bean是否需要增强,该bean的class中是否有方法在切入点上,如果在切入点上会

2020-08-04 18:14:19 355

原创 六、Spring如何自定义标签

一、自定义标签的定义1. 什么是自定义的标签?1.1 自定义标签配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:muzi="http://www.jd.com/schema/mytags"

2020-07-30 14:27:03 405

原创 五、component-scan 标签的解析原理

文章目录一、component-scan概述1、Spring中component-scan标签配置2、component-scan功能案例代码二、component-scan解析源码1、回顾Spring的自定义标签解析(SPI)2、Spring xml解析自定义标签入口3、ContextNamespaceHandler parse解析4、ComponentScanBeanDefinitionParser 解析compponent-scan标签4.1 注解扫描器4.2 扫描包下的类并注册BeanDefinit

2020-07-30 10:55:03 3938

原创 四、Spring是如何初始化Bean的实例

文章目录一、回顾BeanDefinition注册1.BeanDefinition是什么?2.注册BeanDefinition逻辑回顾3.为什么回顾BeanDefinition注册相关内容?二、Bean的实例化过程1.Bean实例化方法入口描述2.图解Bean实例化流程3.论BeanPostProcessor4.源码解析Bean的实例化过程4.1 找到入口代码4.2 不断的getBean直到doGetBean4.3 不断的createBean最后doCreateBean4.4 有参和无参构造函数的初始化4.5

2020-07-29 19:15:45 1133

原创 JDK1.8 HashMap源码解析

一、哈希寻址1.寻址表达式(n - 1) & hash --> 与操作结果 [ 0 - (n-1) ]2.哈希方法static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}高16位不变,低16位和高16位做异或操作。右位移16位,正好是32bit的一半,自己的高半区和低半区做异或,这么

2020-07-24 09:38:04 281

原创 单例模式

单例模式的定义与特点老弟觉得,为了节省内存资源,保证数据内容的全局一致性,要求某些类只能创建一个实例,这就是所谓的单例模式。单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等常常被设计成单例。单例模式有 3 个特点:1

2020-07-23 10:32:09 125

原创 Java synchronized 能防止指令重排序吗?为何双重校验单例模式要加上 volatile?

一、synchronized 的有序性Java 里的操作无序现象是什么?《深入理解 Java 虚拟机》- P374: 如果在一个线程观察另一个线程,所有操作都是无序的指的是 “指令重排序” 和 “工作内存与主内存同步延迟” 现象。指令重排是JVM层面对程序进行的优化措施,如果不深入了解,则在并发编程时可能会发生难以发现的Bug。截止JDK1.8, Java 里只有 volatile 变量是能实现禁止指令重排的。synchronized 虽不能禁止指令重排,但能保证有序性这个有序性是

2020-07-23 10:29:57 782

原创 程序运行和内存区域

文章目录一、Java程序的运行1.Java从编译到执行1)Java程序运行过程2)什么是JIT(Just In Time Compiler)?3)解释器和编译器的优点2.JVM跨平台和语言无关性1)JVM的跨平台2)JVM的语言无关性二、Java内存区域1.运行时数据区域1)线程私有2)线程共享2.Java虚拟机栈1)什么是栈?2)什么是Java虚拟机栈?3)Java虚拟机栈中存储内容?4)Java虚拟机栈参数5)栈帧的数据结构i)局部变量表ii)操作数栈iii)动态链接iv)返回地址(完成出口)3.程序计

2020-07-23 10:18:16 287

原创 三、Spring怎样解析XML并注册BeanDefinition

一、概述1、为什么需要理解XML配置解析?我是一个刚交了一年社保的一年工作经验的小老弟,从大学刚接触软件开发到毕业正式入职所接触到JavaSE或JavaEE项目中,基本都会使用Spring作为项目的对象管理容器。尤其在大学期间,WEB项目使用Spring的时候基本都是通过配置applicationContext.xml全局配置文件,然后使用web.xml配置ContextLoaderListener加载这个全局配置文件去初始化容器。早期版本的Spring,只能通过加载XML去启动配置文件,演变到现在也

2020-07-09 17:53:49 339

原创 二、快速理解Spring的加载流程

#一、Spring继承结构###1、Spring容器的继承结构常见的容器的实现类有ClassPathXmlApplicationContext、AnnotationConfigApplicationContext这两个实现类。其中一种是基于XML解析的实现类,一种是基于注解扫描的实现类。###2、Spring工厂的继承结构Spring中默认的工厂的实现类就是DefaultListableBeanFactory,还有一些别名和单例相关的接口没有在图中绘制。###3、什么是BeanDefiniti

2020-07-09 17:50:48 1708

原创 一、Spring框架简介和学习经验

Spring概览老弟就喜欢先整一些情怀铺垫一下,不想看一些废话的话可以直接跳到Spring环境搭建。一、作者介绍欲了解Spring,先了解Spring作者Rod Johnson,下面个人介绍摘取自百度百科。Spring Framework创始人,著名作者。 Rod在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。 有着相当丰富的C/C++技术背景的Rod早在1996年就开始了对Java服务器端技术的研究。他是一个在保险、电子商务和

2020-07-09 17:47:36 729

原创 Spring源码介绍

序言 六个月的实习期已经结束了,先后在百度、爱奇艺、京东AI实习,同学们的实习都是做点小项目带薪学习,我这是工作一个又一个除去双休日无缝衔接,脑袋疼,甚至有点想吃烤面筋和回家路上的铁板鱿鱼。 闲话不多说,既然实习期满归校,快拾起我最初的Geek梦想,开始我的总结记录,伴随着每一篇博文,书写我的成长之旅,总结实习经验,开心快乐的工作、学习、生活下去。 我始终坚信:“ 机...

2018-10-30 13:18:43 607 1

原创 实习间的自述

不知不觉从五月初实习到了八月末,实习了三个多月,期间经历过多次的面试考核,感觉时间过的很快,而我也成长了许多。 记得从今年的二月末就开始向着春招发起了冲刺,幸运的是我斩获了人生的第一个Offer,因为学校在东北,实习地点在长春,期间经过了学院的领导老师们的帮助和提携,终于在五月初如愿去Du厂实习。年纪轻轻来到了BJ略显青涩,手无足措,幸亏和两个童鞋聚在一起在周边找了一个9平米...

2018-08-24 14:13:49 1172

原创 异乡梦为马,一别即是秋。

出尘里,望黎明六月六,一别曾帮助我的人,心怀感恩,谨记淳淳的教诲,不忘昨日,不迷,不乱。敬来日,希望在六月的北京,触摸不得,一如捧着的沙儿,握的紧了,挤压,流逝。洗去尘埃,用昨天的淳淳教诲贯彻心灵的缺。惺忪的眼,从迷惑混沌的夜努力的寻找光明。你是天上的星,不是北斗,也不是启明。你是令人尊敬的无名,你的光,第一次接触便深深的触动心灵。那一刻,我沉默了,我想之前的我都错...

2018-06-06 08:53:47 366

原创 中英文字典树

英文字典树 英文字典树的结构图是这样的。按照树型结构存储字符串,每个结点存一个字符,自顶向下做标记的就是词的词尾,比如,app,apple,application,abstract,absorb,block,black,blake... 等等 介绍一下英文字典树的结点数据结构: 1.词频 int型变量记录词频 2.结点型数组,长度26下标对应0 - 25(也...

2018-03-27 15:54:38 1177

原创 基数排序、计数排序、桶排序

排序算法之空间换取时间 空间换取时间的算法在当下用来解决问题是很常见的,因为现在的硬件很发达,内存,CPU配置都非常高,遇到难解的问题用空间换取时间是值得的。那么在排序算法种,使用空间换取时间的算法有那些? 1.计数排序: 计数排序是一种牺牲了大量空间的排序算法,计数排序和序列中数据的值域有关系,值域越大,我们所开辟的空间就越大,而且计数排序局限于 0 - 无穷大 的整数...

2018-03-25 14:52:10 602

原创 二分查找及变种二分查找

二分查找 二分查找也称折半查找(Binary Search),它的查找效率很好。二分查找有一个要求是必须采用顺序存储结构,而且表种的元素是有序的。只有满足这个条件我们才能使用二分查找。 查找条件: 查找区域的左边界,小于等于查找区域的右边界 查找过程: 1. 循环条件 == 查找条件 2.计算序列中间下标位置 3.如...

2018-03-23 21:20:08 377

原创 堆排序、快速排序

排序算法之堆排序 堆排序是基于完全二叉树的排序算法,即二叉树的除最后一层外每一层都达到容纳结点的最大值。最后一层从左至右依次排列。堆排序引入了另一种算法设计技巧,使用一种我们称为“堆”的数据结构来进行信息管理,不仅用在堆排序中,而且它也可以构造一种有效的优先队列。 堆是一个数组,它可以被看成一个类似于完全二叉树的数据结构。即如果我们认为数组下标为 “i” 的位置的元素为根节点,则它...

2018-03-19 14:26:05 1146

原创 冒泡、插入、选择、希尔、归并

排序算法概览:排序算法之起泡排序 起泡排序是最简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误(大于或小于)就把它们交换过来。这样数组中最大或最小的元素会一步一步的浮到数组的最后。直到重复执行 n-1次起泡循环,数组变成一个有序数组。图解:描述:第一步到第三步index总是小于index+1 所以不选择置换,当第四步 97 &gt; 45 置换元素,置换...

2018-03-18 20:27:44 285

原创 平衡二叉查找树的删除及删除调整

AVL树的删除 avl树的删除,我们需要从某一个角度或者视角去想问题,比如我们根据删除的结点的继承关系来看: 1.删除的结点 左右子树都为空 (1)可能是根节点,那么我们直接删掉他 (2)可能是叶子结点,在删除时我们认为它被删除,然后以它为基点回溯调整树,最后删掉它。 2.删除的结点 左子树为空 , 右子树不为空...

2018-03-14 11:34:39 3907 2

原创 平衡二叉查找树的插入及插入调整

什么时AVL树?在数据结构中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度差的绝对值不能超过一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次旋转来使得AVL树保持平衡。AVL树的本质是一棵二叉搜索树,它的特性是:1.任意一个根节点的左孩子小于根节点,右孩子大于根节点。2.每个结点的左右子树的...

2018-03-14 08:32:40 2165 1

空空如也

空空如也

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

TA关注的人

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