自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小萌新的博客

你知道得越多,你不知道的越多

  • 博客(49)
  • 资源 (3)
  • 收藏
  • 关注

原创 JVM内存管理

给对象中添加一个引用计数器,每当有一个地方引用,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。

2023-08-11 18:17:38 648

原创 经典排序算法

在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找并进行移动。重复遍历需要排序的数列,每次比较两个元素,按照升序或降序的方式交换位置,直到没有再需要交换的值,即该数列已经排序完成。利用递归与分治技术将数据序列划分为越来越小的半子表,再对半子表排序,最后用递归将排好序的半子表合并为越来越大的有序序列。使用双重循环遍历该数组,外层循环控制遍历次数,内层循环每个位置相互比较,按照升序或降序的规则,对比时小的或大的数值将被放在前面或后面。

2023-03-20 15:41:21 435 1

原创 Linux基础命令(一):文件、目录、查询、搜索、容量、压缩与解压

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限,文件的权限字符为:“-rwxrwxrwx”, 这九个权限是三个一组的!说明:locate 来寻找数据的时候特别的快, 是因为 locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据搜索;使用说明: tar [-z|-j|-J] [xv] [-f 既有的 tar文件名] [-C 目录]

2023-03-04 17:33:25 923

原创 redis基础数据结构

Redis 的列表结构常用来做异步队列使用。将需要延后处理的任务结构体序列化成字符串塞进 Redis 的列表,另一个线程从这个列表中轮询数据进行处理。

2022-09-27 17:50:57 1485

原创 Spring源码分析九:事务原理源码分析

(一)spring事务入口(二)Spring事务切入方式InfrastructureAdvisorAutoProxyCreator自动代理器、InfrastructureAdvisorAutoProxyCreator层级示意图、获取增强器getAdvicesAndAdvisorsForBean、获取增强器findCandidateAdvisors、匹配增强器findAdvisorsThatCanApply、事务标签提取、 解析事务标签(核心)、事务增强器(事务实现原理)等.........

2022-07-18 22:56:07 289

原创 Spring源码分析番外篇二:事务原理番外篇

(1)创建事务实例,使用DataSourceTransactionManager作为创建类型,有点类似JDBC创建事务实例。值得注意的是:`当前线程存在数据库连接,直接复用,否则创建新的连接,并验证是否开启保存点设置,嵌入式事务时使用;`* (2)判断是否已存在事务,若存在嵌套事务逻辑处理即`handleExistingTransaction方法;`* (3)事务超时验证即TransactionDefinition.TIMEOUT_DEFAULT默认为-1;* (4)事务的传播行为设置即Propaga

2022-07-18 22:42:44 264

原创 Spring源码分析八:Mybatis ORM映射框架原理

2、建立PO3、建立mapper接口映射4、建立Mybatis配置文件5、建立mapper映射文件6、测试类输出结果:7、Mybatis编写程序小结(1)创建数据库表;(2)建立java实体PO;(3)Mapper业务接口定义;(4)编写mapper文件映射;(5)mybatis配置数据源、执行环境参数、别名、mapper文件引入;(6)创建SqlSessionFactory、SqlSession和获取数据库连接,集成到spring中时会自动执行,不需要手动去编写。(

2022-06-01 15:03:44 691 2

原创 Spring源码分析七:JdbcTemplate连接数据库原理

文章目录(一)Spring连接数据库程序1、创建数据库表2、创建实体PO3、创建mapper映射4、创建业务接口5、创建业务接口实现类6、Spring配置文件7、测试类(二)JdbcTemplate核心原理1、update方法(执行DML语句)2、execute底层方法(底层核心,DDL)(1)获取数据库连接(2)用户查询参数设置(3)执行回调方法(4)告警处理(5)资源释放3、query方法(执行DQL语句)(三)总结(一)Spring连接数据库程序1、创建数据库表CREATE TABLE `stu

2022-05-25 14:56:29 1059

原创 Markdown编辑指令

文章目录标题设置标题级别2有序列表无序列表未完成任务列表已完成任务列表引用文本快速创建表格快速创建代码块长长的分割线粗体文本斜体文本删除线行内代码上标下标高亮文本标题设置格式:# + 空格 + 文本 ,多个#代表几级标题,如## 标题级别2标题级别2有序列表格式:1 + . + 空格 + 文本,空格换成回车或tab其他效果,如 1. 有序列表1有序列表1有序列表2无序列表格式:- + 空格 + 文本,*可代替-,如- 无序列表1● 无序列表1● 无序列表2未完成任务列表格式

2022-05-20 17:33:15 1048

原创 Spring源码分析六:Bean加载之populationBean③

文章目录(一)序言(二)bean属性注入:populateBean1、属性注入代码逻辑:populateBean2、属性注入整体流程(三)属性注入中的核心方法1、按名称注入:autowireByName2、按类型注入:autowireByType(较复杂)3、匹配类型bean:(do)resolveDependency(doXX核心)4、依赖注入:applyPropertyValues(四)属性注入总结(一)序言在spring源码分析加载bean之doGetBean②分析里面doCreateBean中简

2022-05-20 11:53:29 362

原创 Spring源码分析五: Bean加载之doGetBean②

文章目录(一)序言(二)非延迟bean加载——doGetBean1、规范化beanName:transformedBeanName2、三个缓存中获取bean实例:getSingleton3、递归获取bean:getParentBeanFactory4、优化缓存bean:markBeanAsCreated5、depends-on依赖实例化:isDependent6、创建bean:createBean(1)实例化前和初始化后的后置处理器(1)InstantiationAwareBeanPostProcessor

2022-05-09 20:18:59 463 1

原创 Spring源码分析——汇总全集

spring源码分析、专注于容器IOC、AOP实现原理,主要用于分析spring工作原理的汇总一、背景本篇文章主要是记录Spring源码分析文章汇总的目录,用于记录Spring源码的思路和步骤,为Spring源码分析文章做链接跳转,后面会持续更新。主要来源:一方面阅读《Spring源码深度解析-郝佳.pdf》,另一方面是结合Spring源码编译后的项目代码进行整理和总结。二、源码分析目录(1)Spring源码分析一:容器篇......

2022-05-07 17:57:38 630

原创 Spring源码分析四:Bean加载总览①

文章目录(一)序言(二)Spring初始化非延迟加载单例入口1、初始化非延迟加载单例bean准备:finishBeanFactoryInitialization2、实例化单例bean:preInstantiateSingletons(三)Spring Bean加载1、非延迟bean加载:doGetBean(四)非延迟加载bean流程(一)序言在Spring源码分析容器篇(http://t.csdn.cn/kjsnI)中初始化非延迟加载单例finishBeanFactoryInitialization中提

2022-05-07 17:40:05 396

原创 Spring源码分析三:Bean标签解析之BeanDefinition

文章目录(一)序言(二)Spring生成BeanDefinition1、Spring Bean解析入口2、Spring Bean内置标签解析(1)bean标签解析——processBeanDefinition方法(2)bean元素解析——parseBeanDefinitionElement方法(核心)①创建AbstractBeanDefinition实例②spring内置硬编码处理③解析元数据④解析lookup-method⑤解析replaced-method⑥解析构造函数参数⑦解析property子元素⑧

2022-05-03 23:44:59 560

原创 Spring源码分析番外篇一:AOP

文章目录(一)AOP获取增强方法1、getAdvisors获取增强方法(核心)2、canApply方法:匹配实际bean业务的增强器序言本文主要是对Spring源码分析三:AOP篇做一个补充,因AOP篇幅受限,一些比较具体实现逻辑不能一一罗列,故新增加AOP补充篇一继续分析Spring源码AOP的实现逻辑。(一)AOP获取增强方法在Spring源码分析三中已提到AnnotationAwareAspectJAutoProxyCreator->findCandidateAdvisors->b

2022-04-26 16:37:36 702

原创 Spring源码分析二:AOP篇

(一)spring Aop概念spring aop简称面向切面编程,不同于OOP即面向对象编程,OOP作为开发业务时,如需要引入安全检测、系统日志、监控等功能时,每个对象都需要引入公共代码,会造成不可维护和冗余代码,AOP的横空出世,正是为了解决OOP纵向的继承关系,AOP关心的是横向切面关系,在某一时刻进行切入,执行一些额外的逻辑。本文不对较低的sprig aop版本进行分析,直接从spring支持@AspectJ开始进行分析,该注解中主要是在切面中定义一个切点和切入点即可。(二)Spring A

2022-04-25 15:10:21 888

原创 Spring源码分析一:容器篇—refresh()

文章目录(一)BeanFactory与ApplicationContext容器(二)ApplicationContext层次结构(一)BeanFactory与ApplicationContext容器BeanFactory是加载Bean的基础基石,早期spring的实现是利用XmlBeanFactory来实现其基本功能,相对于ApplicationContext来说,缺少了很多扩展性。BeanFactory beanFactory = new XmlBeanFactory(new ClassPath

2022-04-10 03:26:37 784

原创 FutureTask分析

文章目录(一)关键概念点1、Future简介(一)关键概念点1、Future简介Future是一个带泛型的接口类,主要定义了五个方法,大致分为三个作用:取消线程执行、线程是否取消或完成和获得返回值。 public interface Future<V> { //取消线程或中断线程 boolean cancel(boolean mayInterruptIfRunning); //是否被中断 boolean isCancelled(

2022-03-21 21:41:54 641

原创 ThreadLocal源码分析

文章目录(一)ThreadLocal介绍(二)ThreadLocal思想(三)源码分析ThreadLocal核心点和api(1)核心成员变量和辅助方法(2)setInitialValue方法(3)get方法(api)(4)set方法(api)(5)remove方法(api)ThreadLocalMap核心源码:(1)核心成员变量和辅助方法(2)构造函数(核心)(3)set方法(核心)(4)getEntry方法(核心)(5)rehash扩容(核心)(6)remove方法(核心)(一)ThreadLocal介

2022-03-14 18:50:55 989

原创 线程池ThreadPoolExecutor分析

文章目录(一)线程池背景(二)线程池优势(三)线程池场景(四)线程池源码分析(1)核心成员变量(2)线程池状态转换(3)线程池七大参数(4)三大固定方法(Executors工具类不推荐使用)(5)四大拒绝策略(6)execute方法(核心)(7)addWorker方法(核心中的核心)(8)工作线程Worker内部方法(runWorker方法)(9)processWorkerExit清理方法(10)tryTerminate状态转换(11)shutdown方法(12)shutdownNow方法(13)await

2022-03-10 23:54:27 390

原创 Semaphore分析

文章目录(一)概念简介(二)使用场景(三)特点(四)Semaphore源码分析(1)构造函数(2)acquire方法(核心)(3)doAcquireSharedInterruptibly方法(核心)(4)release方法(核心)(5)doReleaseShared方法(核心)(一)概念简介Semaphore是一个访问公共资源的线程数量如限流、停车等,它是一个基于AQS实现的共享锁,主要是通过控制state变量来实现。其内部结构关系为:Semaphore内部是通过一个内部核心成员变量sync去调用AQ

2022-03-08 11:22:06 499

原创 CyclicBarrier分析

文章目录(一)概念简介(二)使用场景(三)特点(四)CyclicBarrier源码分析(1)核心成员变量(2)构造函数(3)await方法(核心)(4)辅助方法(一)概念简介CyclicBarrier是一个可循环使用的屏障锁,依赖于ReentrantLock和Condition来实现阻塞和唤醒,主要是分为普通阻塞和超时阻塞,利用构造方法初始化指定parties(屏障数)和count(剩余屏障数),只需要使用await即可让count值持续递减。基于Condition条件,屏障锁对于屏障数分为多组,每组中

2022-03-03 18:28:35 210

原创 CountDownLatch分析

文章目录(一)概念简介(二)使用场景(三)特点(四)CountDownLatch源码分析(1)构造函数(2)await方法(核心)(3)countDown方法(核心)(一)概念简介CountDownLatch是一个阻塞部分线程直到其他线程执行完成后唤醒的同步计数器,核心是其内部类Sync继承于AQS,同时也是利用的AQS的同步原理,也称之为闭锁。(二)使用场景当主线程进行执行时,利用构造方法初始化一个同步数state(AQS原理),主线程调用await方法进行阻塞主线程即谁调用谁阻塞,其它线程调用c

2022-03-01 00:25:02 802

原创 Synchronized与Lock区别

文章目录1、具体区别(核心)2、在锁概念上的区别3、性能比较1、具体区别(核心)(1)synchronized和Lock都是可重入锁,前者是jvm中使用monitorenter(1个)和monitorexit(2个)来实现同步且其中阻塞和唤醒是wait和notify,后者是juc包中的lock层次使用,依赖于AQS来实现加锁和解锁;(2)synchronized是非公平锁,ReentrantLock可以设置公平锁或者非公平锁;(3)synchronized是不可中断且无法获取锁状态,后者是可中断l

2022-02-24 16:34:11 5421

原创 AQS原理分析(ReentrantLock锁分析)

文章目录(一)AQS简介(二)AQS原理剖析ReentrantLock源码分析:源码思想加锁:释放锁:源码逻辑1、构造方法2、非公平锁lock方法(核心)3、acquire获取资源方法(核心)4、addWaiter创建等待者方法(核心)5、acquireQueued入队等待方法(核心)6、cancelAcquire取消线程获取方法(非核心)(一)AQS简介AQS简称AbstractQueuedSynchronizer,是一种实现阻塞锁和依赖FIFO队列的同步器框架。其依赖于一个原子变量state,子类要

2022-02-21 21:04:23 373

原创 Spring源码编译【idea】

文章目录1、github安装2、gradle安装3、spring源码4、配置源码编译环境5、编译spring源码6、idea导入spring源码7、idea编译spring1、github安装先安装github,点击此链接可下载Git:Git下载 直接点击安装并使用默认设置直到安装完成。2、gradle安装安装gradle gradle官网 选择指定的版本下载(1)官网地址打开后,找到下图中的下载(2)自行选择自己的版本可下载,me选择的是5.6.4版本(3)下载解压后,配置环境变量紧

2022-02-08 18:06:21 1433 3

原创 Spring Bean 基础使用篇

文章目录1、自动装配2、声明Bean和属性注入3、限定自动装配4、bean的作用域1、自动装配@Autowired自动装配(1)放置在类成员变量上;@AutowiredPlayerService playerService;(2)放置在构造函数上(构造器本身会自动注入,可不加该注解);@Autowiredpublic PopPlayerServiceImpl(PlayerService playerService){ this.playerService = playerSe

2022-01-28 15:30:52 914

原创 java开发规范

命名规范、控制规范、注释规范、格式规范等

2022-01-21 12:00:05 6903

原创 可重入锁原理分析

(一)synchronized锁分析1、synchronized作用和使用?synchronized作用:(1)原子性:确保线程之间互斥访问同步代码;(2)可见性:保证多线程之间共享变量的修改能及时可见,与java内存模型一致,对变量加lock操作,则执行前会重新从主内存load或assign操作,反之则刷入主内存(unlock);(3)有序性:有效解决重排序问题即释放锁在加锁后,保证代码的有序性。Synchronized可以将任何一个非null对象作为锁即对象监视器(Object Monit

2022-01-14 17:05:47 1143

原创 CAS原理分析

CAS锁分析、包含使用场景、缺点、乐观锁原理、Unsafe类调用原理、自旋式CAS并发操作

2022-01-07 17:46:42 496 1

原创 MySQL安装linux版

mysql安装、linux常见问题

2021-12-29 21:00:04 1525

原创 Git版本回退

git 本地分支代码回滚和远程分支回滚操作

2021-12-29 20:29:53 4108

原创 Git基本操作命令

git 项目初始化、项目下载、回滚、分支、markdown命令等

2021-12-29 20:24:56 291

原创 集合框架核心知识点——线程安全JUC

JUC并发编程集合如CopyOnWriteArrayList和ConcurrentHashMap等常见方法原理,使用场景等

2021-12-24 18:02:34 2521

原创 联合索引和单列使用生效场景

MySQL索引使用场景以及联合索引生效、高性能sql查询注意事项

2021-12-22 20:41:03 974

原创 集合框架核心知识点——非线程安全JU

java常用集合,Collection和Map接口,其数组容器ArrayList和Vector、线性节点容器LinkedList、键值对容器HashMap和线性LinkedHashMap,树结构的TreeSet和TreeMap,以及HashSet等

2021-12-08 20:59:20 412

原创 MySQL索引原理

MySQL核心点,InnoDB与MyISAM的索引区别和索引原理及查找过程

2021-12-06 19:11:58 555

原创 MySQL存储引擎InnoDB之数据页

InnoDB存储引擎——数据页

2021-12-02 10:25:49 1933

原创 MySQL基本概念

MySQL基础概念

2021-11-26 18:21:20 528

原创 Map集合框架(四)——HashTable(JDK1.8)

HashTable继承于Directory类,早期的安全map集合,性能较低

2021-11-26 15:31:56 247

notePad++良心工具

1、中文版打开文件格式的工具; 2、notepad++是一款受大家欢迎的编辑文本工具; notepad(记事本)是一种代码编辑器,也是Windows 操作系统中的程序,用于文本编辑,在文字编辑方面与Windows写字板,Office功能相当。是一款开源、小巧、免费的纯文本编辑器。 在“文件”菜单中,有几个简单的选项:新建、打开、保存、另存为、页面设置、打印、退出。 在“编辑”菜单中除了复制等右键菜单中有的选项,最常用的便是查找、替换, 还可以插入当前时间、日期。 在“格式”中,你可以调整是否自动换行、显示字体。当有一个句子十分长,而拖动下放的滚动条又容易错过一些想要查看的文本时,可以选中自动换行。而字体之更改当前查看的字体,换台电脑查看同一个文件字体又会变为默认的字体。因为纯文本只是符号,不包含任何其他信息。

2022-04-27

Spring源码和Gradle编译配套工具

1、Spring源码已编译为java代码可直接查看; 2、配套idea的gradle版本工具;

2022-02-11

GitHub免费安装程序包

下载此资源文件、直接点击安装,一直默认就行了

2022-02-08

空空如也

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

TA关注的人

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