自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 4.线程池-ThreadPoolExecutor源码分析

Java线程池ThreadPoolExecutor源码详细解读

2022-06-09 11:23:39 145

原创 08-队列(Queue)

目录1.队列特点2.队列的接口涉及3.Java的 java.util.Queue4.双端队列5.Java的 java.util.Deque1.队列特点队列是一种特殊的线性表,只能从头尾两端进行操作队尾(rear):只能从队尾添加元素,一般叫做enQueue,入队对头(front):只能从对头移除元素,一般叫做deQueue,出队先进先出的原则:First In First Out, FIFO2.队列的接口涉及队列的内部实现是否可以直接利用以前学过的数据结构呢?推荐使用双向链表,因

2021-11-21 23:28:14 269

原创 07-栈Stack

目录1.栈(Stack)2.栈空间3.栈的接口设计4.实现:4.1.直接继承ArrayList,复用其中的一些方法4.2.将ArrayList作为Stack的一个私有属性5.Java官方提供的栈:java.util.Stack1.栈(Stack)栈是一种特殊的线性表,只能在一端进行操作。往栈中添加元素的操作,一般叫做push,入栈。从栈中移除元素的操作,一般叫做pop,出栈(只能移除栈顶元素,也叫做弹出栈顶元素)。后进先出的原则:Last In First Out, LIFO2.栈空间

2021-11-20 00:17:14 508

原创 CSS-01

CSS-011.CSS简介2.CSS基础选择器3.CSS字体属性4.CSS文本属性5.CSS的引入方式6.Chrome调试工具1.CSS简介CSS的主要使用场景就是美化网页,布局页面的。1.HTML的局限性:HTML只关注内容的语义,比如< h1 >表明这是一个大标题,< p >表示这是一个段落,< img >表示这儿有一个图片。虽然HTML可以做简单的样式,但是会代码结构会非常繁琐和臃肿。2.CSS-网页的美容师CSS是层叠样式表(Cascadin

2021-05-24 23:22:47 98

原创 HTML基础-02

HTML基础-021.表格标签1.1.表格的主要作用:1.2.表格的基本语法1.3.表头table head单元格标签:`< th >`1.4.表格属性:`table`标签的属性1.5.展示一下table标签的属性:1.6.表格结构标签:1.7.合并单元格2.列表标签2.1.列表的介绍:2.2.无序列表:``2.3.有序列表:``2.3.无序列表:``3.表单标签3.1.表单介绍:3.2.表单域:3.3.表单控件(表单元素):4.综合案例5.查阅文档1.表格标签1.1.表格的主要作用:

2021-05-17 23:03:52 62

原创 HTML基础-01

HTML基础-011.认识WEB1.1.常见浏览器1.2.WEB标准2.HTML初识1.认识WEB网页只要是由文字,图像和超链接等元素构成,当然除了这些元素,网页中还可以包括音频,视频以及Flash等。浏览器时网页显示和运行的平台。浏览器内核:包括排版引擎,解释引擎,渲染引擎。负责读取网页内容,整理讯息,计算网页的显示方式并显示页面。1.1.常见浏览器浏览器内核备注IETridentIE、猎豹安全、360极速浏览器、百度浏览器右firefoxGecko可惜这几

2021-05-15 18:03:33 89

原创 05-Jedis和SpringBoot整合Redis

目录1.Jedis测试1.1导入jar包1.2修改redis.conf配置文件,使其能被其他主机连接1.3重启redis服务1.4测试连接代码1.5Jedis常用操作1.5.1Jedis-API: Key1.5.2Jedis-API: String1.5.3Jedis-API: List1.5.4Jedis-API: Set1.5.5Jedis-API: hash1.5.6Jedis-API: zset1.6.模拟手机验证码2.SpringBoot整合Redis2.1.先新建一个SpringBoot项目2.

2021-04-23 17:45:42 243

原创 04-Redis新数据类型

目录1.Bitmaps1.1.简介1.2.相关命令1.3.Bitmaps和Set的对比2.HyperLogLog2.1简介2.2.相关命令3.Geospatial3.1.简介3.2.相关命令1.Bitmaps1.1.简介进行为操作的字符串。现代计算机使用二进制位作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 011000

2021-04-23 15:15:03 65

原创 03-Redis配置文件和发布订阅

这里写目录标题1.Redis配置文件1.1.### Units1.2.### INCLUDES1.3.###网络相关配置1.4.###GENERAL通用###1.5.###SECURITY安全###1.6.###CLIENTS客户端###1.7.1### MEMORY MANAGEMENT内存管理1.Redis配置文件1.1.### Units配置大小单位,开头定义了一些基本的度量单位,只支持Bytest,不支持bit大小写不敏感。1.2.### INCLUDES包含其他公共的配置文件部分

2021-04-23 10:44:37 278

原创 02-Redis的5大基本类型

目录1.基本知识:2.一些命令3.五大基本类型3.1Redis-key的基本命令3.2.String类型1.基本知识:1.Redis有16个数据库,默认使用的是第0个数据库。2.Redis是单线程的原因:因为Redis是很快的,而且是基于内存的。所以CPU,多核不是Redis的性能瓶颈,Redis的性能瓶颈收到机器的内存和网络带宽限制。所以既然不受CPU,多核限制,那么干嘛不用单线程呢?为什么单线程那么快:误区1:高性能的服务器一定是多线程的。(不一定)误区2:多线程一定比单线程效率

2021-04-21 16:59:13 83

原创 01-Redis概述和安装

目录1.Nosql概述为什么要用Nosql1.Nosql概述为什么要用Nosql1.单机MySQL的年代web通过数据库访问层访问单机MySQL。90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够。一般网站是使用静态网页Html,服务器根本没有太大的压力!思考一下,这种情况下:整个网站的瓶颈是什么?1.如果数据量太大,一个机器放不下。2.数据量一大,那么就要建索引,索引太多,一个机器的内存也放不下。3.访问量(读写混合)比较大时,而且没有做读写分离时,那么一台服务器也

2021-04-20 16:42:24 75

原创 Spring14:Spring整合MVC框架

目录1.搭建web环境2.为什么要整合MVC框架3.Spring整合MVC框架的核心思路3.1准备工厂4.Spring开发过程中多配置文件的处理1.搭建web环境相关的jar包坐标:额外引入web的相关jar包<dependencies> <!--引入web相关的jar包 provide仅仅需要在编译和测试阶段,同样provide将不会被打包到lib目录下。 --> <dependency> <groupId>

2021-04-08 22:37:02 123

原创 Spring13:Spring中的事务属性

目录1.什么是事务属性2.如何添加事务属性3.事务属性详解3.1.隔离属性(isolation)3.2事务的传播属性3.3事务的只读属性(readOnly)3.4.事务的超时时间属性3.5.事务的异常属性4.事务属性常见配置总结5.基于标签的事务配置方式(事务开发的第二种形式)5.1基于@Transactional注解的事务开发回顾5.2基于标签的事务配5.3每个方法都要进行配置:太冗余1.什么是事务属性属性:描述物体特征的一些列值事务属性:主要从5个维度来描述事务。1.隔离属性2.传播属性3.

2021-04-08 15:54:53 137

原创 Spring12:Spring事务

目录1.Spring的事务处理1.1什么是事务1.2如何控制事务1.3.Spring控制事务的开发1.4.Spring控制事务的细节分析1.Spring的事务处理1.1什么是事务保证业务操作完整性的一种数据库机制:在一个业务当中涉及到的多步操作,要么一起成功,要么一起失败,而且不能产生相互的影响;事务这个机制是由数据库来保证的,我们通过Java代码仅仅完成的是对这种机制的调用。事物的4个特点:A:原子性C:一致性I:隔离性D:持久性1.2如何控制事务不同的持久层框架,有不同的事务控制机

2021-04-08 13:06:59 105

原创 Spring11:Spring整合持久层

目录1.持久层整合1.1Spring框架为什么要与持久层技术进行整合1.2.MyBatis开发步骤回顾1.3.MyBatis开发过程中存在的问题2.Spring与MyBatis整合2.1`SqlSessionFactoryBean`封装获得`SqlSessionFactory`2.2获得SqlSession和对应Dao接口的实现类2.3分析小结2.4Spring整合Mybatis的开发步骤2.4Spring整合Mybatis的编码1.持久层整合1.1Spring框架为什么要与持久层技术进行整合1.Sp

2021-04-07 17:17:55 132

原创 Spring10:AOP编程+AOP底层实现

目录1.AOP编程1.1. AOP概念1.2.AOP编程的开发步骤1.3.切面的名词解释2.AOP底层实现2.1.核心问题2.2.动态代理类的创建方法1.AOP编程1.1. AOP概念1.3个概念: 1.AOP (Aspect Oriented Programing):面向切面编程 = Spring动态代理开发。 以切面为基本单位的程序开发,通过切面间的彼此协同,相互调用,完成程序的构建。 切面 = 切入点 + 额外功能。 2.OOP (Object Oritened Programi

2021-04-06 17:45:54 172 2

原创 Spring09:Spring代理模式+切入点表达式

目录1.静态代理设计模式1.1为什么需要代理设计模式1.2.静态代理设计模式1.3.静态代理编码1.4.静态代理缺点2.Spring动态代理1.静态代理设计模式1.1为什么需要代理设计模式1.问题:在JavaEE分层开发中,哪个层次对我们来讲最重要DAO ---> Service ---> ControllerJavaEE分层开发中,最为重要的是Service层。Service层中包含了哪些代码?Service层中的代码主要包含两大类:核心功能 + 额外功能(附加功能)

2021-04-01 17:24:42 95

原创 Spring08:BeanPostProcessor-后置处理Bean

目录1.BeanPostProcessor概述2.BeanPostProcessor开发步骤1.BeanPostProcessor概述1.作用:对Spring工厂所创建的对象,进行再加工。它是Spring中的一个很重要的高级特性。AOP的底层实现用到了大量的BeanPostProcessor。2.BeanPostProcessor是一个接口:只是知道要加工,具体怎样的加工不知道,交给实现者来做。3.看一下之前Spring工厂是怎么创建对象的:读配置文件的内容–>反射创建对象–>注入属性

2021-04-01 14:18:08 188

原创 Spring07:对象的生命周期+类型转换器

目录1.Spring中对象的生命周期。1.1.为什么要学习对象的生命周期1.2.Spring生命周期的三个阶段1.2.1 创建对象:Spring工厂何时创建对象?1.2.2.初始化阶段1.2.3.销毁阶段1.Spring中对象的生命周期。1.1.为什么要学习对象的生命周期1.什么是对象的生命周期:指的是一个对象的创建,存活,消亡的一个完整的过程。2.为什么要学习对象的生命周期?原来我们开发需要一个对象时,自己new一个。这个对象如果一直有引用指向的话,它就会一直存活下去。知道没有引用指向它了,就会

2021-03-31 16:36:38 127 2

原创 Spring06:Spring工厂创建复杂对象

目录1.什么是复杂对象2.Spring工厂创建复杂对象的3种方式2.1.FactoryBean接口2.1.1.开发步骤2.1.2.示例:ConnectionFatoryBean< Connection >2.1.3.思想2.1.4.FactoryBean的细节分析2.1.5.FactoryBean原理分析(简易)2.1.6.FactoryBean小结2.2.实例工厂2.3.静态工厂3.Spring工厂创建对象小结1.什么是复杂对象1.简单对象:可以直接通过new构造方法(反射也是调用构造方法

2021-03-31 15:08:42 122

原创 Spring05:反转控制和依赖注入

目录1.反转控制2.依赖注入1.反转控制1.反转控制(IOC Inverse of Control):在这个概念中,是反转重要还是控制重要?我们需要首先知道什么是控制,然后才能在此基础上理解控制怎么翻转。2.控制:对于成员变量赋值的控制权。3.没有使用Spring之前,我们对成员变量的赋值在代码中完成的。有代码来控制对成员变量的赋值,这种方式是存在耦合的。4.有了Spring之后,对成员变量赋值的控制权交给了Spring的工厂结合配置文件来控制的。控制权发生了转移!5.将对成员变量赋值的

2021-03-31 10:41:12 70

原创 Spring04:注入(Injection)

目录1.注入2.注入原理分析(简易版)3.Set注入详解3.1.Set注入JDK内置类型3.2.Set注入用户自定义类型3.3.Set注入的简化写法1.注入1.什么是注入:通过Spring工厂及配置文件,为所创建对象的成员变量赋值。2.为什么需要注入以前我们为对象的成员变量赋值,直接通过编码的方式,这样是存在耦合的如果我们以后想为name属性,设置别的值。那么又要改代码,存在耦合性,所以我们将对象属性的设置放到配置文件中(属性注入)。3.如何进行注入(开发步骤)类的成员变量提供set

2021-03-30 17:29:29 485

原创 Spring03:Spring5.x整合log4j日志框架

1.为什么要整合日志Spring与日志框架进行整合,日志框架就可以在控制台总,输出Spring框架运行过程中的一些重要信息。好处:便于了解Spring框架的运行过程,利于程序的调试2.Spring如何整合日志框架:默认: Spring1.2.3早起都是基于commons-logging.jar Spring5.x默认整合的日志框架 logback log4j2Spring5.x整合log4j2: 1.引入log4j jar包 2.引入log4.properties配置文件。pom

2021-03-30 14:42:31 263

原创 06-循环链表

目录1.单向循环链表2.1要改动的方法2.双向循环链表1.单向循环链表单向循环链表:最后一个节点的next会指向头结点。在原来的单向链表的基础上,我们实现一下单向循环链表。2.1要改动的方法1.add()方法:插入头结点时,要维护循环指针还要考虑只有1个节点时的特殊情况:自己指向自己。当size=0时,向index=0处插入。要找到插入位置的前一个节点node(index-1);,但是插入位置是index=0,那么就没有前一个节点,要做特殊处理。代码修改:注意node()获取节点,一

2021-03-28 23:21:57 220 1

原创 05-双向链表

目录1.双向链表1.1双向链表的设计2.实现双向链表2.1.属性和构造2.2.node(int index)2.3.clear()2.4.add()方法2.5.remove()方法2.6.toString()方法改进3.双向链表小结3.1.双向链表VS单向链表3.2.双向链表VS动态数组小结1.双向链表我们之前学习的链表,也叫做单向链表,它有一些缺点:无论访问哪个节点,即使是最后一个节点,也永远都是从头结点向后查找访问。使用双向链表可以提升链表的综合性能。1.1双向链表的设计1.双向链表除了

2021-03-26 17:12:29 259

原创 04-虚拟头结点,数组和链表的复杂度分析,动态缩容

虚拟头结点,数组和链表的复杂度分析,动态缩容

2021-03-26 11:00:42 298

原创 Spring02:Spring的ApplicationContext工厂

目录1.软件版本和环境搭建1.软件版本和环境搭建1.软件版本JDK1.8+Maven 3.5+IDEA2019+SpringFramework 5.1.42.环境搭建:无外乎两个环节相关的jar包1.1.因为现在是基于Maven的jar包管理,所以在这只需要设置pom依赖即可。通过Maven的中心仓库,来查找相关jar包的坐标,进而进行管理。1.2.将找到的jar包坐标,复制到pom.xml文件中<!-- https://mvnrepository.com/arti

2021-03-25 22:21:35 216

原创 03-链表(Linked List)

目录1.动态数组的缺点2.链表2.1.链表的设计2.2.链表的接口设计2.2.链表的接口(部分)实现2.3.抽取公共部分:继承关系设计1.动态数组的缺点1.动态数组有个明显的缺点:在插入时,如果发现要扩容,那么一次会扩容成原来的1.5倍。但是只是插入1个元素,很可能扩容出来的空间很大一部分根本用不上,所以可能会造成内存空间的大量浪费。2.那么能否用到多少就申请多少内存空间呢?链表可以做到这一点2.链表链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的。2.1.链表的设计需要

2021-03-24 17:18:21 327

原创 02-动态数组ArrayList实现

动态数组ArrayList的实现

2021-03-23 17:41:46 327

原创 01-算法的复杂度(斐波那契复杂度分析)

目录1.复杂度1.什么是算法?2.如何评判一个算法的好坏?3.大O表示法(Big O)1.对数阶的细节2.常见的复杂度3.多个数据规模的情况2.LeetCode刷题指南3.斐波那契数列复杂度分析1.斐波那契数列-递归2.斐波那契数列-循环3.fib方法的时间复杂度分析4.斐波那契的线性代数解法-特征方程4.算法的优化方向5.后续1.复杂度1.什么是算法?2.如何评判一个算法的好坏?3.大O表示法(Big O)1.对数阶的细节2.常见的复杂度3.多个数据规模的情况2.LeetCode刷题指南

2021-03-15 22:54:06 853

原创 Spring01:工厂模式

Spring01_工厂模式第一章 引言1. EJB存在的问题2. 什么是Spring3. 设计模式4. 工厂设计模式4.1 一个简单工厂模式实现第一章 引言1. EJB存在的问题2. 什么是SpringSpring是一个轻量级的JavaEE解决方案,整合众多优秀的设计模式轻量级1. 对于运行环境是没有额外要求的 开源 tomcat resion jetty 收费 weblogic websphere 2. 代码移植性高 不需要实现额外接口JavaEE的解决

2021-03-12 16:53:30 82 2

原创 动态代理

动态代理:上主要内容:1.静态代理回顾2.接口创建实例对象的可行性分析3.动态代理主要内容:1.静态代理回顾2.接口创建对象的可行性分析3.动态代理4.Proxy.getProxyClass()的秘密。5.编写可生成代理和可插入通知的通用方法6.类加载补充7.小结该博文非原创,大部分抄录自zhihu用户:bravo1988的原创文章。主要用于本人学习梳理1.静态代理回顾假设有一个需求,在项目现有所有类的方法前后打印日志。你如何在不修改已有代码的前提下,完成这个需求?静态代理实

2021-03-10 17:47:45 94

原创 反射

在讲JDK动态代理之前,我先讲反射机制疏离一遍。该博文非原创,大部分抄录自zhihu用户:bravo1988的原创文章。主要用于本人学习梳理。主要内容JVM是如何构建一个实例的.class文件类加载器Class类反射API...

2021-03-10 09:32:16 101

原创 静态代理

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-03-10 09:14:42 107

空空如也

空空如也

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

TA关注的人

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