自定义博客皮肤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)
  • 收藏
  • 关注

原创 【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p1(亲测无问题,建议收藏)

该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。软连接,如果提示软连接已存在,记得备份软连接,然后在执行上面再次进行软连接,要不然会出问题,会导致root目录看不了,磁盘看不了,sftp连接不上,等等一系列问题;在升级之前,建议打开多个SSH终端连接,并安装telnet服务器,确保在SSH服务器升级异常时,可以通过telnet服务器远程连接,进行紧急问题修复处理。在升级前一定要备份原有的配置文件,以防出现意外情况。安装一些必要的命令(需要用到的)

2023-12-14 11:15:10 3389 4

原创 MySQL查询JSON数据缓慢问题解决方案

2.数据入库之后数据量1630586,使用Navicat查询缓慢,普通查询都是20S起步,页面调用耗时翻倍,业务功能因为超时无法使用。4.触发索引查询,同样的条件耗时0.021S,比起之前20S+查询速度大大提升。1.数据表需要维护2张表数据关系,设计使用json数组维护关系。3.建立Json数组字段索引。

2023-10-09 11:18:02 1020

原创 Centos7服务器Portainer-ce使用Stacks部署项目

8.保存文件启动项目,编辑Web editor区域底部Deploy the stack按钮变色,点击即可部署项目。选中要跟新的Containers,先停止服务,上传最新的jar到指定的挂载路径,替换之后点击启动按钮即可部署。输入行数时候关闭Auto-refresh logs 按钮,即可查看服务启动日志信息。4.在服务端创建jar的挂载路径,根据自己的需求创建。6.部署项目,将要部署的jar上传到指定的挂载路径。5.将基础镜像上传到服务端,加载镜像。9.服务的启动停止与跟新。选择 local 环境。

2023-08-01 23:29:36 599 1

原创 问题解决电脑断电 | 本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止

4、注册MySQL服务,执行以下命令mysqld install MySQL服务名 --defaults-file="my.ini路径"3、初始化MySQL(会重新生成data文件夹),执行以下命令mysqld --initialize-insecure。连接的好好的,今天打开公司突然断电,恢复之后navicat时候突然显示错误连接不上mysql,进入MySQL安装目录下的bin目录,执行以下命令mysqld --remove 服务名。总体分为2个部分,首先重新注册MySQL服务,然后恢复以前的数据。

2023-07-27 10:38:01 5173 7

原创 Spring- SpringAOP流程解析

该函数主要用来进行代理类的Invoke和执行Interceptor调用链上的下一个Interceptor。该函数主要用于获取Interceptor 调用链。

2022-09-28 22:18:32 388

原创 Spring--SpringAOP核心类

换句话来讲:引入增强的意思即假如项目中一个Java类没有实现某个接口而不具备某些功能,这个时候我们可以使用引入增强(Introduction Advice)在不修改这个类的前提下,使该类具备某个接口的功能。该类可以配置当前代理的Adivsiors、目标对象、代理的接口,以及获取对应代理方法对应有效的拦截器链。该类的作用是使用AOP代理包装每个合格的Bean,并在调用Bean之前委派指定的拦截器。用于创建代理的配置类,以确保所有代理创建者具有一致的属性。该类主要为AOP代理对象工厂实现类提供基本的配置属性。

2022-09-28 22:12:00 393

原创 SpringAOP--JDK动态代理源码解析

该函数主要用户在缓存中查找已经缓存过的Proxy代理对象。如果缓存中没有,或者该条目已被清除,则使用valueFactory来生成新的值(value)。上一篇我们学习了代理模式、静态代理和动态代理。这一篇我们一起来通过示例代码分析下JDK动态代理的源码,搞懂JDK动态代理背后的原理。该函数的主要目的用于返回指定接口的代理类实例。动态代理的中心原理可以用一句话总结概括:动态生成静态代理类(静态代理类我们在上一篇已经学过)该类的目的是根据提供的参数生成保存缓存所需要的键。二,JDK动态代理源码解析。

2022-09-28 22:04:23 722

原创 SpringAOP--AOP及SpringAOP

当用户通过代理接口调用代理实例的方法时,该方法调用会被分发到该实例对应的调用处理器(Invocation Handler)的invoke()方法,同时传入动态接口、代表被调用方法的java.lang.reflect.Method对象、以及代表方法调用参数的一个对象数组。静态代理是在编译期确定被代理的对象,而动态代理类在运行期间由JVM根据反射等机制动态的生成,所以不存在代理类的字节码文件,因为代理类和委托类的关系是在运行期间确定的。事先定义好接口的代理对象,并将接口的实例注入到代理对象中。

2022-09-28 21:58:18 145

原创 Spring-注解上下文和注解

如果@Configuration注解用@Conditional进行标记,则与该类关联的所有@Bean,@ Import和@ComponentScan注解将受条件限制。对于熟悉Spring XML配置的人来说,@ Bean注解与Spring XML配置中的元素具有相同作用。在Spring应用程序中@Configuration注解是配置容器的主要机制,但仍然可能需要使用一些XML,该注解就是用来加载xml配置的。Spring配置中的两个主要注解是@Configuration和@Bean。

2022-09-18 15:06:56 608

原创 Spring启动流程解析-12-完成刷新

如果需要自定义功能或其他生命周期行为,Spring并不提供现成的功能,需要自己实现BeanPostProcessor。除了初始化和销毁回调外,Bean对象还可以实现Lifecycle接口,以便这些Bean可以在容器自身的生命周期驱动下进行start和stop过程。当ApplicationContext接收到开始和停止信号时,它会调用那些关联到在该上下文中的所有Lifecycle实现类(如:启动和停止某些后台进程)。将Bean信息注册到相应的BeanDefinitionRegistry。

2022-09-18 14:01:00 149

原创 Spring启动流程解析-11-完成初始化

将Bean信息注册到相应的BeanDefinitionRegistry。将Bean信息装配到BeanDefinition。一,Spring启动流程概述。二,Spring启动流程详解。Bean初始化前处理。

2022-09-18 13:57:16 158

原创 Spring启动流程解析-10-注册事件监听

将所有事件多播到所有已注册的监听器,让监听器忽略它们不感兴趣的事件。默认情况下,所有监听器在线程中被调用。将Bean信息注册到相应的BeanDefinitionRegistry。将Bean信息装配到BeanDefinition。管理多个监听器并向其发布事件对象的接口。提供监听器注册/管理功能的抽象实现。一,Spring启动流程概述。二,Spring启动流程详解。Bean初始化前处理。

2022-09-18 13:53:43 289

原创 Spring启动流程解析-9-初始化主题

主题是静态资源的集合,通常有css样式表和图片构成,这些css样式和图片会直接影响应用程序的视觉样式。要在Web应用中使用主题,必须实现ThemeSource接口,WebApplicationContext接口就扩展了ThemeSource,但将其职责委托给专用的实现。JSP代码中引用主题文件的键。在JSP中,通常使用spring:theme标签来执行此操作,该标签与spring:message标签的使用方法非常相似。'的Bean,Web应用程序上下文会自动检测到具有''名称的Bean并使用它。

2022-09-18 13:50:13 104

原创 Spring启动流程解析-8-初始化事件广播

本质上,这是标准的观察者设计模式。正常关闭时,所有Lifecycle Bean在销毁回调之前首先会收到停止通知,但是在上下文的生命周期内进行热刷新或中止刷新尝试时,只会调用destroy方法。定义被观察者,实现了Observerable接口,对Observerable接口的三个方法进行了具体实现,同时有一个List集合,用以保存注册的观察者,等需要通知观察者时,遍历该集合即可。ApplicationListener 对象一旦在 Spring 容器中被注册,Spring 会进行监听器的注册,实现事件的监听。

2022-09-18 13:44:57 290

原创 Spring启动流程解析-7-初始化消息源

不同的区域获取加载资源文件,达到国际化信息的目的。Spring中定义一个MessageSource接口,以用于支持信息的国际化和包含参数的信息的替换。与HierarchicalMessageSource一起使用,还能够处理嵌套的消息,这些是Spring提供的处理消息的基本接口。如果最终没有找到任何的消息源,实例化一个空的DelegatingMessageSource,使它能够接受上述方法的调用。MessageSource的简单实现,允许以编程方式注册消息,提供基本的国际化支持(通常用于测试)...

2022-08-28 15:06:43 147

原创 Spring启动流程解析-6-注册后处理器

BeanPostProcessor接口定义了回调方法,可以实现这些方法,以提供自己的实例化逻辑(或覆盖容器的默认值),依赖关系解析逻辑等。普通Bean可以直接使用Xml进行配置,但如果你的Bean拥有复杂的初始化代码(如涉及到很多其他的Bean),使用XML配置方式比较困难,这时就可以使用FactoryBean,并在该类中编写复杂的初始化,然后将自定义FactoryBean插入容器。每个等级中都用有相应的接口,实现其中某个接口或者将实现类注入到Spring容器,容器就会在相应的时机调用其方法。

2022-08-24 21:50:41 140

原创 Spring启动流程解析-5-调用后处理器

也就是说,Spring IoC容器允许BeanFactoryPostProcessor读取配置元数据,并能在容器实例化任何Bean之前更改这些元数据。可以在项目中配置多个BeanFactoryPostProcessor,同时通过设置Order属性来控制这些BeanFactoryPostProcessor的执行顺序,当然仅当BeanFactoryPostProcessor实现Ordered接口时,才可以设置此属性。Spring框架中有很多实现了相同接口的类,那么这些实现类之间必定会有优先级的问题。

2022-08-23 21:50:15 83

原创 Spring启动流程解析-4-BeanFactory后处理

Scope也称作用域,在Soring Ioc容器指其创建的Bean对象对其他Bean对象的请求可见范围,是用来声明IoC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在对象进入相应的Scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。Bean的Scope作用域范围同样是可扩展的:即可以定义自己的范围,甚至重新定义现有范围,但不能覆盖内置的Singleton和Prototype范围。在Web容器启动过程中注册Web相关环境Bean。

2022-08-21 21:56:22 95

原创 Spring启动流程解析-3-准备BeanFactory

通过实现 Aware 接口,Spring 可以在启动时,调用接口定义的方法,并将 Spring 底层的一些组件注入到自定义的 Bean 中。默认情况下由BeanWrapperImpl注册,但是可以通过将其自定义实例注册为自定义编辑器来覆盖。将字符串解析为Locale对象,反之亦然(String格式为[country] [variant],与Locale的toString()方法提供的功能相同)。默认情况下由BeanWrapperImpl注册,但是可以通过将其自定义实例注册为自定义编辑器来覆盖。

2022-08-21 21:09:36 135

原创 Spring启动流程解析-2-获取BeanFactory

lookup-method注入是容器重写Bean上的方法的一种能力,它可以在容器中根据一个Bean的名字返回查找结果。Bean定义可以包含许多配置信息,包括容器相关的信息(比如初始化方法,静态工厂方法等等)以及构造函数参数和属性的值。在Bean定义中,可以通过使用id属性最多指定的一个名称,同时可以通过name属性中定义任意数量的其他名称来为Bean提供多个名称。用于在运行时调用使用新的方法替换原有的方法,还能动态的改变原有方法的逻辑。别名循环检查:A为名称,B为A的别名,需要注册别名

2022-08-21 15:14:44 890

原创 Spring启动流程解析-1-准备刷新

整个refresh()的代码都是同步的,而对应的同步对象是startupShutdownMonitor。startupShutdownMonitor只在refresh()和close()两个方法里被用到,而它是用来同步applicationContext的刷新和销毁。将Bean信息注册到相应的BeanDefinitionRegistry。将Bean信息装配到BeanDefinition。一,Spring启动流程概述。二,Spring启动流程详解。Spring启动流程源码概览。Bean初始化前处理。

2022-08-20 23:34:03 94

原创 Spring路径解析和占位符

因此,在调用env.getProperty("foo")时,如果在系统属性和环境变量中都设置了foo属性,则系统变量将优先于环境变量。接下来我们首先要了解的知识就是“Spring环境、属性和占位符”。设置激活的 profile 和默认的 profile 的功能以及操作 Properties 的工具。当我们执行Spring应用程序的时候,首先遇见的就是路径解析问题。请注意,属性值不会被合并,而是会被前面的条目覆盖。属性解析器,用于解析任何基础源的属性的接口。属性解析器,用于解析任何基础源的属性的接口。

2022-08-20 21:56:57 787

原创 使用Idea搭建Spring源码阅读环境

如果,你非要自己配置,那么在项目目录下的./gradle/wrapper/gradle-wrapper.properties中可以查看当前Spring项目所需的Geadle版本。Java开发这边很少使用到Gradle来构建项目,基本就是Maven,所以我们也不必再去下载一个全局的Gradle,配置环境变量啥的,我们直接让idea自己下载配置就行了。,我们可以在里面引入Spring的相关模块进行测试,但是因为版本原因,引入的方式与网上很多的文档大有不同。这一切办妥后,我们复制仓库链接,然后打开idea。...

2022-07-28 17:53:32 557 1

原创 Spring容器核心类

BeanFactory的核心概念就是Bean工厂,用于Bean生命周期的管理,而Applicationcontext除了具有BeanFactory的特性外,还包括消息国际化、资源访问、事件传播等功能。这些Bean是根据程序提供给容器的配置元数据创建的,如以XML格式的定义。因为ApplicationContext包含BeanFactory的所有功能,除非你需要完全控制Bean处理的方案。XML配置文件的读取时Spring的重要功能,因为Spring的大部分功能都是以配置作为切入点的。......

2022-07-28 16:17:21 347 1

空空如也

空空如也

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

TA关注的人

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