自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逍遥Sean的博客

逍遥Sean的博客

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

原创 多线程原子性、一致性与有序性

多线程原子性、一致性和有序性是指在多线程编程中,保证数据正确性和程序执行顺序的三个重要概念。多线程原子性、一致性和有序性是指在多线程编程中,保证数据正确性和程序执行顺序的三个重要概念。> > 1. 原子性:原子操作是指不可中断的一个操作,要么全部执行成功,要么全部执行失败,中间不会被其他线程干扰。多线程环境下,如果多个线程同时更新一个共享变量,就可能出现问题。原子性的解决方案包括使用原子类、锁和同步机制等。> 2. 一致性:一致性是指对于多个线程之间共享的数据,操作后数据的状态保持一致。在多线程环境

2023-10-23 22:26:20 509

原创 MySql的索引与算法-B+树索引

MySQL支持的索引B+树B+树索引聚集索引辅助索引B+树索引的分裂B+树索引的管理B+树索引的使用联合索引覆盖索引MySQL支持的索引B-Tree索引:这是最常见的索引类型,在MySQL中被广泛使用。它可以加速基于等值查询、范围查询和排序的操作。哈希索引:哈希索引只支持等值查询,不能用于范围查询和排序。它在某些情况下可以比B-Tree索引更快。全文索引:全文索引可以用于快速搜索文本数据,支持基于关键词的搜索和短语搜索。空间索引:空间索引可以用于快速搜索地理位置数据,支持基于距离

2023-09-29 07:00:00 149

原创 MySql数据库-SQL函数

SQL函数是一种在SQL语句中使用的可重复使用的代码块,用于执行特定的任务或计算。这些函数通常用于从数据库中选择、过滤和组合数据,以及在查询结果中执行数学运算、字符串操作、日期计算等。类似于Java方法,将一组逻辑封装在方法体中,对外只暴露方法名。好处:隐藏实现细节,提高代码重用性;调用:select 函数名(实参列表) 【from 方法名】;特点:1. 叫什么(函数名)2. 干什么(函数功能)分类:1. 单行函数(length,ifnull)2. 分组函数 做统计使用,又称统计函数

2023-09-29 06:45:00 154

原创 Java多线程并发编程核心知识

线程什么是线程线程创建的几种方式中断线程线程状态守护线程同步竞态条件锁对象条件对象syncgronized同步块volatilefinal概念使用final多线程安全原子性死锁线程局部变量为什么废弃stop和suspend线程安全的集合任务Callable和Future执行器Executor同步器线程与 Swing阻塞队列

2023-09-28 16:02:36 121

原创 MySQL数据库高级查询语句及案例

MySQL数据库高级查询包括以下几个方面:> 1. 聚合函数查询:使用聚合函数如SUM、AVG、MAX、MIN等实现对数据的汇总统计。> 2. 分组查询:使用GROUP BY语句对查询结果进行分组,根据指定字段对数据进行分组计算。> 3. 连接查询:使用JOIN语句将多个表连接起来,实现数据的联合查询。> 4. 子查询:使用SELECT语句嵌套SELECT语句实现对数据的复杂查询。> 5. UNION操作符:使用UNION操作符将多个SELECT语句的结果进行合并。> 6. 存储过程:使用存储

2023-09-28 15:09:30 109

原创 JVM机制理解与调优方案

调整内存分配参数:包括最大堆内存、最小堆内存、新生代大小等,以避免频繁的垃圾回收和内存溢出。优化垃圾回收:可以通过选择不同的垃圾回收器,调整回收器选项等来实现。选择合适的JVM版本:新版本的JVM可能会提供更好的性能和稳定性。减少对象的创建:避免频繁的对象创建和销毁,尽量重用已经创建的对象。使用线程池:尽量减少线程的创建和销毁,使用线程池来管理线程。避免过度同步:使用适当的同步控制方式,避免过度使用锁和同步方法。优化代码结构和算法:使用更高效的算法和数据结构,避免不必要的计算和内存消耗。监控JVM运行状态。

2023-09-28 10:51:02 303

原创 Java核心-你真的知道Object吗(Object:所有类的超类)

今天来聊一聊对象😍(bushi👋)!!!👇👇👇众所周知,Java每个类都是对象,Object类是Java中所有类的始祖,在Java中每个类都扩展了Object。`如果没有明确的指出超类,Object就被认为是这个类的超类`。由于在Java中每个类都是由Object扩展而来的。所以熟悉这个类提供的所有服务十分重要。文章将介绍一些基本的内容,没有提到的内容大多是涉及并发操作的,后续将有文章介绍哦~@[TOC](Object:所有类的超类)# 1 Object类型的变量可以使用Object类型

2023-09-26 11:09:42 101 1

原创 Java开发第二轮面试被疯狂问JVM相关,被整懵了!!赶紧好好复习一下

## 3.怎么判断对象是否可以被回收?1. 引⽤计数算法: 这种⽅式是给堆内存当中的每个对象记录⼀个引⽤个数。引⽤个数为0的就认为是垃圾。这是早期JDK中使⽤的⽅式。引⽤计数⽆法解决循环引⽤的问题。2. 可达性算法: 这种⽅式是在内存中,从根对象向下⼀直找引⽤,找到的对象就不是垃圾,没找到的对象就是垃圾。## 4.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?**目前常见的新生代垃圾回收器有**:1. Serial GC:单线程执行垃圾回收,适用于单核 CPU 系统和小程序启动时使用。

2023-09-24 15:48:05 109

原创 Java面试被问了几个简单的问题,却回答的不是很好

简单讲:一个操作是不可中断的,要么全部执行成功要么全部执行失败,比如银行转账原子性是指一组操作要么全部完成,要么全部不完成,不会出现部分完成的情况,保证操作的完整性和一致性。在多线程编程中,如果一个操作需要被多个线程同时访问,为了保证正确性,必须保证操作的原子性。可以使用同步机制如锁或原子变量等来实现原子性。当多个线程访问同一变量时,一个线程修改了这个变量的值,其他线程就能够立即看到修改的值可见性指的是一个程序中变量在多线程环境下的可见性。

2023-09-24 15:09:49 1590

原创 数据结构与算法-线性表(下)链式存储结构(Java实例)

线性表是一种数据结构,对数据元素进行逻辑上的顺序排列。线性表链式存储结构是指用链表来存储线性表的数据元素。链表由节点组成,每个节点包含两部分:数据域和指针域。数据域存储节点的数据元素,指针域存储指向下一个节点的指针。链式存储结构相对于顺序存储结构的优点是可以更方便地进行插入和删除操作,通过修改节点的指针即可完成操作,而不需要移动大量数据。但是链式存储结构的缺点是访问节点需要通过指针进行跳转,相对于顺序存储结构,访问速度会慢一些。此外,链式存储结构需要额外的空间存储指针信息,会占用更多的内存空间。

2023-09-24 13:12:38 242

原创 Java开发需要的网络基础知识,搞清楚计算机网络底层原理

计算机基础是软件开发的基础,它是软件开发人员必须掌握的一些基本知识和技能,包括计算机体系结构、数据结构、算法、操作系统、计算机网络、数据库等方面的基础知识。这些知识和技能的掌握可以提高软件开发人员的开发效率和质量,这对软件开发至关重要。在软件开发中,计算机基础知识可以帮助开发人员更好地理解开发平台和工具,更好地编写高效、可维护的代码。例如,了解数据结构和算法可以帮助开发人员设计和实现高效的程序;了解操作系统和计算机网络可以帮助开发人员充分利用计算机资源和网络资源;

2023-09-24 09:43:11 485

原创 MyBatis的动态 SQL、代理机制与多级缓存

MyBatis 是一个开源的 Java 持久层框架,它通过 XML 或注解的方式将 SQL 语句与 Java 对象进行映射。相比于传统的 JDBC 操作数据库,MyBatis 简化了很多重复的代码和操作,同时也提供了很多功能强大、易于使用的特性。MyBatis 可以与各种数据库进行交互,支持主流的关系型数据库,如 MySQL、Oracle、SqlServer、Postgres 等。简单易学:MyBatis 的设计思路很简单,易于理解和学习。

2023-09-22 22:10:38 355

原创 TCP网络连接中的三次握手和四次挥手

TCP(Transmission Control Protocol)通讯是一种面向连接的、`可靠`的网络传输协议。它位于 OSI 模型的传输层,负责提供数据传输服务。TCP协议通过三次握手建立连接,确保数据的可靠性和有序性,同时也提供拥塞控制和流量控制机制。它适用于需要保证数据传输的可靠性和有序性的应用,例如文件传输、电子邮件、网页浏览等。TCP通信是一种`可靠的面向连接的通信方式`,连接建立和断开是非常重要的过程。下面是TCP通信的连接和断开过程:> **复杂的连接与释放过程是为了保证连接的可靠性*

2023-09-22 21:53:45 143

原创 Dubbo常考知识点

Dubbo中的架构设计是⾮常优秀的,分为了很多层次,并且每层都是可以扩展的,⽐如:1. Proxy服务代理层,⽀持JDK动态代理、javassist等代理机制2. Registry注册中⼼层,⽀持Zookeeper、Redis等作为注册中⼼3. Protocol远程调⽤层,⽀持Dubbo、Http等调⽤协议4. Transport⽹络传输层,⽀持netty、mina等⽹络传输框架5. Serialize数据序列化层,⽀持JSON、Hessian等序列化机制

2023-09-21 15:23:26 63

原创 Java基础常考知识点(基础、集合、异常、JVM)

基础JDK、JRE、JVM之间的区别hashCode()与equals()之间的关系String、StringBuffer、StringBuilder的区别泛型中extends和super的区别==和equals⽅法的区别重载和重写的区别深拷⻉和浅拷⻉什么是字节码?采⽤字节码的好处是什么?Java中有哪些类加载器说说类加载器双亲委派模型集合List和Set的区别ArrayList和LinkedList区别谈谈ConcurrentHashMap的扩容机制Jdk1.7到Jdk1.8

2023-09-21 12:14:03 281

原创 MySQL常考知识点

MVCC(Multi-Version Concurrency Control ,多版本并发控制)指的就是在使⽤这两种隔离级别的事务在执⾏普通的SEELCT操作时访问记录的版本链的过程。可以使不同事务的读-写、写-读操作并发执⾏,从⽽提升系统性能。⽣成ReadView的时机不同。

2023-09-21 11:37:25 418

原创 Spring常考知识点(IOC、事务、容器等)

通常,我们认为Spring有两⼤特性IoC和AOP,那到底该如何理解IoC呢?对于很多初学者来说,IoC这个概念给⼈的感觉就是**我好像会,但是我说不出来**。那么IoC到底是什么,接下来来说说我的理解,实际上这是⼀个⾮常⼤的问题,所以我们就把它拆细了来回答,IoC表示控制反转,那么:> 1. 什么是控制?控制了什么?> 2. 什么是反转?反转之前是谁控制的?反转之后是谁控制的?如何控制的?> 3. 为什么要反转?反转之前有什么问题?反转之后有什么好处?这就是解决这⼀类⼤问题的思路,⼤⽽化⼩

2023-09-21 09:59:43 197

原创 理解Spring原理 - 手写IOC和DI

User类中包括三个私有属性、set get方法、一个无参构造方法、一个有参构造方法和一个私有普通方法run/***/System.out.println("私有方法run...");return id;return age;获取Class的多种方式获取构造方法获取属性获取方法import org/**// 1. 获取Class的多种方式 @Test public void testClass() {

2023-09-21 09:28:52 94

原创 Java使用Executors和ThreadPoolExecutor创建线程池

# 线程池的所有创建方式线程池的创建方式总共包含以下 7 种(其中 6 种是通过 `Executors` 创建的,1 种是通过`ThreadPoolExecutor` 创建的):1. `Executors.newFixedThreadPool`:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;2. `Executors.newCachedThreadPool`:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程;3. `Execut

2023-09-05 14:26:45 277

原创 Java线程与锁常考知识点

当线程池中的核⼼线程都在忙时,如果继续往线程池中添加任务,那么任务会先放⼊队列,队列满了之后,才会新开线程。这就相当于,⼀个公司本来有10个程序员,本来这10个程序员能正常的处理各种需求,但是随着公司的发展,需求在慢慢的增加,但是⼀开始这些需求只会增加在待开发列表中,然后这10个程序员加班加点的从待开发列表中获取需求并进⾏处理,但是某⼀天待开发列表满了,公司发现现有的10个程序员是真的处理不过来了,所以就开始新招员⼯了。

2023-09-05 09:35:16 133

原创 Java I/O模型发展以及Netty网络模型的设计思想

前言:BIO、NIO的代码实践参考:Java分别用BIO、NIO实现简单的客户端服务器通信Java共支持三种I/O模型:BIO,NIO,AIO流程:主要概念:NIO编程流程:方案:优缺点:方案:优缺点:方案:优缺点:主要基于模型,做了一定的改进,增加了,可以多个主线程和多个从线程并发处理Netty模型图(简单版)Netty模型图(复杂版)工作原理:

2023-09-04 22:55:12 170

原创 Java分别用BIO、NIO实现简单的客户端服务器通信

Java NIO 能够支持非阻塞网络编程,可以理解为new io 或者no blok io 我更喜欢称之为new io,因为他不仅仅实现了非阻塞的网络编程方式,同时也封装了常用的网络编程api,更重要的是引入了多路复用器Selector的概念。一共构造了两个客户端(消息客户端和looker客户端), looker客户端优先启动,随后启动消息客户端,消息客户端与服务器的通信会被转发给looker客户端。无Selector的NIO演示中,显然会出现空转的情况,以及无效连接的处理问题,这些问题都会影响性能。

2023-09-04 16:46:36 788

原创 spring mvc的执行流程

请求拦截。用户发起请求,请求先被sevlet拦截,转发给spring mvc框架请求转发。spring mvc里面的DispcherServlet会接收到请求并转发给HandlerMapping匹配接口。HandlerMapping负责解析请求,根据请求信息和配置信息找到匹配的controller类,如果有配置拦截器,会按照孙旭执行拦截器里面的preHandler方法执行接口。找到controller之后,会把请求参数传递给controller的方法传参返回数据。controller执行完以后返回

2023-09-01 22:07:35 747

原创 spring boot的自动装配原理

总结:自动装配是在约定大于配置这样的思想下的实现,这也是spring boot的主要思想之一,这个思想让开发人员可以更加关注于要实现的业务,而不是繁琐的配置。

2023-09-01 20:57:09 655

原创 远程方法调用中间件Dubbo安装并在spring项目中使用

## 下载安装dubboDubbo是一个高性能分布式服务的Java RPC框架,它可以可以帮助实现不同应用之间的远程调用,帮助我们快速开发和提供高性能、高可靠性的分布式服务,同时提供服务治理、容错、负载均衡等功能。1. **下载Dubbo**:前往Dubbo的官方网站(`https://dubbo.apache.org/zh-cn/`)下载最新版本的Dubbo。2. **安装Zookeeper**:Dubbo依赖于Zookeeper,需要先安装Zookeeper。在Zookeeper的官网(`ht

2023-08-31 16:34:56 899

原创 缓存中间件Redis常考知识点

在指定的时间间隔内将内存中的数据集快照写⼊磁盘,实际操作过程是fork⼀个⼦进程,先将数据集写⼊临时⽂件,写⼊成功后,再替换之前的⽂件,⽤⼆进制压缩存储。整个Redis数据库将只包含⼀个⽂件dump.rdb,⽅便持久化。容灾性好,⽅便备份。性能最⼤化,fork ⼦进程来完成写操作,让主进程继续处理命令,所以是 IO 最⼤化。使⽤单独⼦ 进程来进⾏持久化,主进程不会进⾏任何 IO 操作,保证了 redis 的⾼性能相对于数据集⼤时,⽐ AOF 的启动效率更⾼。数据安全性低。

2023-08-30 12:32:47 1899

原创 缓存中间件Redis必知必会

本文是对redis的基本用法操作的整理。

2023-08-29 23:12:17 411

原创 Linux环境下下载安装缓存中间件Redis

### redis简介Redis是一个开源的、基于内存的、高性能的键值对存储数据库。Redis支持多种数据结构,包括字符串、列表、哈希、集合、有序集合等。它还提供了丰富的功能,如事务、持久化、发布订阅、Lua脚本、流水线等。Redis的内存存储特性使其非常适合缓存、计数器、消息队列、排行榜、实时系统等场景。Redis的性能非常高,它使用了类似于操作系统中页面置换算法的LRU淘汰策略,保证了内存使用效率。同时,Redis还支持分布式部署,可以通过主从复制和集群方式实现高可用、负载均衡等功能。### 文

2023-08-29 20:50:10 1102

原创 spring boot 项目中搭建 ElasticSearch 中间件 一 spring data 操作 es

首先要创建一个spring maven工程,一般使用idea直接创建spring boot start 工程。spring data提供了比较简单的操作框架,几乎不再使用java api,本文后续更新详细索引和文档操作。下载后在bin中点击 elasticsearch.bat 启动es。注:@Repository表示该类是一个数据操作类。注:继承的es存储类,会实现es数据操作的默认方法。写一个简单的实体类,用于与es结构对应。不同的jdk版本要使用适配的es版本。以上已经完成了es索引的创建和删除。

2023-08-28 22:23:10 563

原创 spring boot 项目中搭建 ElasticSearch 中间件 二 Java api 操作 es

下载后在bin中点击 elasticsearch.bat 启动es。创建一个es client 后面的操作都是使用这个。本文使用 elasticsearch-7.10.0。首先要创建一个Java maven工程。写一个简单的实体类,用于与es结构对应。是我自己的log插件,可以替换使用普通。不同的jdk版本要使用适配的es版本。注:以下操作 以索引名为。注:以下操作 以索引名为。

2023-08-28 21:59:29 486

原创 spring boot 项目中搭建 ElasticSearch 中间件 一 postman 操作 es

存储,检索数据集群扩展PB级处理数据全文检索,分析日志管理。

2023-08-28 21:33:15 521

原创 ubuntu系统突然失去网络问题

每天都在用的ubuntu系统突然ssh连接不上,进系统ifconfig也不显示ip。当然也ping不通任何网页。将 NetworkingEnabled=false 修改为 NetworkingEnabled=true。所以网络服务的名称应该是NetworkMannager。初步怀疑网络服务被关闭了,需要修改配置使其自动开启。然而执行以下命令却显示服务不存在。后来也在网上找寻开启网络服务的命令。看到一个yaml文件。关闭网络管理服务成功。

2023-07-02 20:16:09 1955

原创 Linux环境搭建(三)— 搭建数据库服务器

写在前面:本文默认你的Linux系统已经安装vim,yum等,如你使用的是一个全新的操作系统,移步上一篇开始配置:Linux环境搭建(一)— 实现ssh连接未安装yum可参考文章:Linux安装yum更新ubantu包索引安装mysql二、配置环境初始化环境登录mysql免密码登陆找到[mysqld]段,并在下面加入一行修改密码登陆如果提示权限不够登录不上,请换root用户修改加密方式三、外网访问修改配置文件bind-

2023-07-01 14:03:55 1104

原创 Linux环境搭建(二)— 配置Java环境

本文默认你的Linux系统已经安装vim,yum等,如你使用的是一个全新的操作系统,移步上一篇开始配置:Linux环境搭建(一)— 实现ssh连接列举匹配已安装的java的软件包:卸载安装的jdk:查看yum库中的java安装包 :​ 安装需要的jdk版本的所有java程序:查看java版本:

2023-06-30 16:05:14 588

原创 vim删除全文(附安装使用教程)

> Vim是一款常用的文本编辑器,在Linux操作系统中被广泛使用。本文是vim删除全文的操作教程。如未安装vim,可下拉到安装使用章节~@[TOC](vim删除全文(附安装使用教程))# vim删除全文1. 按一下ESC键,确保退出编辑模式,再按两次键盘上面的“g”键,让光标移动到文本的首行,然后按键盘上面的“d”和“G”键。其中“d”键是小写,“G”键要切换成大写的,小伙伴们要注意大小写的切换;2. 按一下ESC键,同样是确保退出编辑模式,按一下“:”键,然后输入“1,$d”,就可以删除所有内

2023-06-30 13:39:53 4361 1

原创 Linux安装yum

其他问题可查看:https://blog.csdn.net/hanxiaoyong_/article/details/124771041。Yum是Linux系统中的软件包管理器,可以通过它来安装、更新和卸载软件包。编辑yum的配置文件/etc/yum.conf,可以使用vi或nano等编辑器来进行编辑。现在yum已经成功安装并配置好了,你可以使用yum来安装、更新和卸载软件包了。如果系统已经安装了yum,则会显示版本号,否则将会提示命令未找到。这个命令会从yum源更新软件包缓存。保存并退出配置文件。

2023-06-30 11:02:41 657

原创 Linux环境搭建(一)— 实现ssh连接

使用的是VMware,Ubuntu环境目的是搭建一个Linux服务器环境,完成Docker环境,数据库环境,Java运行环境,以及RabbitMQ,Redis等中间件环境,可能会分多个服务器部署中间件和数据库本文可能会分多篇,主要记录整个环境搭建过程,以及遇到的问题,解决方法。

2023-06-29 11:43:05 2589

原创 消息队列中间件(二)- RabbitMQ(一)

接收,存储,转发消息。

2023-06-22 23:19:19 289

原创 消息队列中间件(一)

优:erlang高并发特性,性能好,吞吐万级,跨平台,支持多种语言,社区活跃。优:单机吞吐万级,时效性ms级,可用性高(主从架构),可靠性高(丢失率低)优:高吞吐量(百万级),时效性ms级,可用性高,日志成熟。缺:短轮询,失败不重试,宕机消息乱序,社区更新慢。优:吞吐十万级,可用性高,0丢失,分布式。大数据 - 数据采集,传输,存储。缺:官方维护少,高吞吐场景较少使用。缺:商业版收费,学习成本高。大数据场景的数据收集业务。

2023-06-22 16:07:31 341

原创 Spring的常用注解

spring常用注解@EnableWebMvc@Configuration@Bean@SpringBootApplication && @MapperScan@Controller@ResponseBody@RestController@RequestMapping("robot")@Resource@RequestMapping@Service

2023-02-19 00:59:19 407

Java-全文搜索引擎Elasticsearch-掌握所有操作的源代码(Java api和spring data两种方式)

本资源中的项目,使用springboot、logback、junit、mybatis-plus、spring data集成Elasticsearch搜索引擎框架,结合实际案例(赛事系统)完成Elasticsearch中索引、文档所有操作(创建、查询、删除、批量操作等)。 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elasticsearch的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elasticsearch是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。本资源使用 Elasticsearch结合spring data,mybatis plus,logback日志等流行框架搭建自己的全文搜索引擎,大家跟着做就能学会其中的操作方式(Java api封装方法和spring data封装的操作方法)。 注:可以结合博主发布的系列文章学习使用!!!

2023-09-22

Java开发-日志管理-logback框架日志系统基础

在日常工程开发中,日志是非常重要的一部分,通过日志可以迅速定位线上问题,日志框架也有很多选择,日志框架Logback和Log4j是同一个作者,Logback相比于Log4j,性能提高了10倍以上的性能,占用的内存也变小了,并且文档十分详细。Logback主要分为以下三个模块:logback-core:Logback的基础模块;logback-classic:它是log4j的改良版本,同时它完整实现了Slf4j门面日志框架,可以很方便地更换成其它日志系统;logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。 本资源基于maven,使用logback搭建日志结构,实现多种级别日志的输出控制,并封装各个级别的日志输出方法,可以作为日志管理基础进行扩展以满足其他场景的日志管理。

2023-09-22

手写IOC项目,学习理解Spring IOC原理

我们都知道,Spring框架的IOC是基于Java的反射机制实现,实现IOC,必须掌握反射的实践方法。Java反射机制是在运行状态中,对于任意类,都能够知道这个类的属性和方法;对于任何一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象的方式称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息。想要解剖一个类,必须先要获取到该类的Class对象。而剖析一个类或用反射解决具体的问题就是使用相关应用程序接口(1)`java.lang.Class`(2)`java.lang.reflect`,所以,Class对象是反射的根源。 IOC和DI是Spring里面最核心的东西,,资源中会写出这两个模块。资源内容包括Java反射机制的实践,使用反射机制实现IOC(包括依赖注入和对象创建)。

2023-09-21

空空如也

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

TA关注的人

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