自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring源码解读系列(八):观察者模式--spring监听器详解

一、前言在前面的文章中spring源码解读系列(八)中,我们继续剖析了spring的核心refresh()方法中的registerBeanPostProcessors(beanFactory)(完成BeanPostProcessor的注册)和initMessageSource()(为上下文初始化message源,即不同语言的消息体,国际化处理),有心的朋友顺着我们的思路继续看,发现下面开始了initApplicationEventMulticaster()(初始化事件监听多路广播器),那么什么又是多路广播

2021-08-17 15:28:31 14879 3

原创 spring源码解读系列(七):注册BeanPostProcessor及初始化messageSource

一、前言在spring源码解读系列(五)中我们介绍了spring核心方法org.springframework.context.support.AbstractApplicationContext#refresh中的invokeBeanFactoryPostProcessors(beanFactory)方法,调用各种beanFactory处理器,并在spring源码解读系列(六)中详细介绍了最重要的beanFactory,即ConfigurationClassPostProcessor,今天我们接着介绍r

2021-08-16 17:32:24 17474 1

原创 spring源码解读系列(六):注解开发的核心实现ConfigurationClassPostProcessor

一、前言在前面的文章中spring源码解读系列(五),我们详解了spring工厂调用BeanFactoryPostProcessors的过程,今天我介绍一下spring工厂中最重要的一个BeanFactoryPostProcessor,即ConfigurationClassPostProcessor,该类是实现spring注解开发的基石,是零配置开发的基础。该类的主要作用是:完成我们常用注解的解析,例如@Configuration,@Bean,@Component,@ComponentScan,@Impo

2021-08-12 16:41:31 14277 3

原创 spring源码解读系列(五):BeanFactoryPostProcessors的调用

一、前言在前面的文章中spring源码解读系列(四),我们已经解析到spring的核心方法org.springframework.context.support.AbstractApplicationContext#refresh的prepareBeanFactory(beanFactory)方法,今天我们接着往下解析,下面postProcessBeanFactory(beanFactory)主要是个空实现,留给子类扩展使用,在spring-web中有详细的扩展,我们暂不做详解,重点看下面的invokeB

2021-08-09 16:29:59 11989 2

原创 spring源码解读系列(四):创建BeanFactory的准备工作

一、前言在前面的文章中(spring源码解读系列(二),spring源码解读系列(三)),我们已经详细介绍了spring的核心方法org.springframework.context.support.AbstractApplicationContext#refresh中的第一步prepareRefresh()和第二步ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(),今天我们接着介绍下面的方法。二、解析prepa

2021-08-06 14:49:01 11659 1

原创 spring源码解读系列(三):详解spring自定义标签

前言在spring源码解读系列(二)的最后我们发现了spring解析bean的方法分为两种,一种是解析spring工厂内部默认的标签,即import、alias、beans、bean;另一种是解析我们自定义的标签,本文详细分析spring解析自定义标签的过程,并带领大家自己实现一个自定义标签。一、解析自定义标签入口parseCustomElement方法作用:根据namespaceUri找到对应的NamespaceHandler实现类对象,然后调用parse方法对传入的标签元素进行解析 @Nulla

2021-08-03 14:04:01 14187 4

原创 spring源码解读系列(二):Spring的核心refresh

前言本篇文章我们进入Spring最核心的方法org.springframework.context.support.AbstractApplicationContext#refresh,先整体熟悉一下此方法的主要工作,然后我们再对其中调用到的核心方法以及扩展点注意解析一、核心方法AbstractApplicationContext.refresh直接进入源码,逐行理解@Override public void refresh() throws BeansException, IllegalStat

2021-08-02 15:56:20 13475 2

原创 spring源码解读系列(一):Bean生命周期图解

一、注意事项:本次源码解读基于Spring-Framework 5.2.9版本,可自行通过官网下载源码,本地安装好gradle后可自行编译和运行,跟随本教程走进Spring底层二、spring创建bean的整体流程三、查看入口代码通过main方法自定义测试类 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Person bean = ac.ge

2021-07-29 17:01:10 28649 5

原创 分布式系列课程--RPC编程

1. gRPC 是由google开源的一个高性能的RPC框架。Stubby Google内部的RPC,演化而来的,2015正式开源。云原生时代是一个RPC标准。2. gRPC 核心的设计思路1. 网络通信 ---> gRPC自己封装网络通信的部分 提供多种语言的 网络通信的封装 (C Java[Netty] GO)2. 协议 ---> HTTP2 传输数据的时候 二进制数据内容。支持双向流(双工)连接的多路复用。

2024-06-07 14:59:52 816

原创 ffmpeg常见命令

ffmpeg的安装

2024-06-04 09:46:24 336

原创 内网环境使用python快速搭建文件服务器并映射到外网

3.这里的/表示根目录文件,你可以指定其它,例如/app,但是一定要保证该服务器上存在该路径,我刚开始不知道,随便设置了个/file,结果服务器/根目录下 ,根本没有这个文件夹,客户端访问就一直报错,404路径不存在;启动文件服务器,其中/path/to/your/directory 用来设置为文件服务器的根目录路径,可以不写。目前已经申请了外网域名,通过nginx可以访问到内网的服务器,因此思考,通过这个外网域名借道,在内网linux上搭建一个外网可以访问的文件服务器。

2023-12-11 20:37:56 597

原创 个人成长篇---生活需要治愈

被罗翔老师的这段话治愈了:“不要碰到一点压力,就把自己变成不堪重负的样子,不要碰到一点不确定性,就觉得自己前途黯淡无光,不要碰到一点挫折就搞得自己一蹶不振。人这一辈子啊,你该走的弯路,该吃的苦,该撞的南墙,该掉的陷阱,一样都少不了,坚强挺住,熬过去,跨过去,好运自然来。”不要对别人抱有太多期待,我们总是希望找到能与之共享痛苦和悲伤的人,然而在别人眼中,我们经历的伤痛只是微不足道的尘埃。重要的是,我们要相信自己的价值和能力,相信自己拥有足够的勇气去应对生活中的一切挑战!2.停止后悔,人生没有白走的路。

2023-11-15 09:56:56 125

原创 检查网络畅通命令

注意:telnet需要安装,默认的docker是不安装的。格式:telnet ip port。1.检查udp网络是否畅通。2.检查tcp网络是否畅通。

2023-11-15 06:50:38 265

原创 Nginx常见问题解决

在stream块中配置转发规则:在stream块中,使用server指令来配置转发规则。具有超级用户权限,在/app/lib-nginx/conf/nginx.conf中被忽略。配置后使用reload命令重启nginx,发现报错。最终选择了方法2,可以重启成功,问题得到解决;只有当主进程运行时,“user”指令才有意义。

2023-11-02 10:26:16 349

原创 springboot实现多参数的同时上传多个文件

1.注意MultipartFile[] files对象的接收,要使用注解@RequestPart(“files”) ,而不是 @RequestParam。

2023-05-04 16:18:42 1642 1

原创 运维工作常用命令篇之——k8s

根据ip和域名的管理, 在hosts中配置好后保存退出。3.然后执行 kubectl get node。如果返回的节点都是ready,说明已经恢复正常。2.登录异常的 122 用root账号 执行。发现有节点NotReady。1.检查node节点情况。

2023-03-20 10:41:49 867

原创 微服务系列知识整合

集群知识汇总

2023-03-06 16:19:59 124

原创 解决调用微信公众平台-获取草稿列表响应中文乱码问题

springboot项目解决http调用微信公众平台响应乱码的问题

2022-11-09 21:43:52 851

原创 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

一、现象二、原因分析三、解决方法vi ~/.mavenrc在文件中添加export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home然后重新加载source ~/.mavenrc验证,重新执行mvn -version:已经替换成自己指定版本的jdk四、问题解决此时重新编译,可以发现编译顺利通过...

2022-05-13 08:21:39 251

原创 算法进阶之路(七):二叉树面试真题解析及解题技巧总结

一、二叉树的打印解题思路:使用递归思路,从根节点依次打印左孩子和右孩子,直至最后一层即可,关键是设计出树的结构,我们先看打印效果:打印效果相当于一颗平躺的二叉树,顺时针旋转90度,即是一颗我们常见的二叉树,头节点用“H”包裹,左子树用“^”包裹,右子树用“v”包裹。我们固定每个节点的长度len,这里设置的17,然后不足的用空格分别在值的前后均匀补充。代码如下:二、打印二叉树的后继节点解题思路:1.后继节点指的是在二叉树中序遍历中,该节点后面的节点。中序遍历,当前节点是x的最右边节点,则x

2022-01-20 15:53:41 7838

原创 算法进阶之路(六):二叉树的结构分析及常见面试题

一、二叉树的遍历二、遍历代码—递归方式先序遍历:中序遍历:后序遍历:总结发现:先序、中序、后序只是递归序加工的结果要想遍历所有的节点,每个节点必须经过三次,每次第一次经过时就打印,便是先序遍历;第二次经过时才打印,便是中序遍历;第三次经过时才打印,便是后序遍历。三、遍历代码—非递归方式上面代码是通过递归的方式实现遍历,任何递归的方式都可以通过非递归的方式实现,通过栈这种数据结构同样可以实现遍历,本遍提供先序的非递归方式实现,感兴趣的小伙伴可以自己实现下中序和后序遍历,无非是压栈和出

2022-01-18 14:23:24 7951

原创 JVM垃圾回收器常见参数设置及优化

JVM垃圾回收器参数Serial/Serial Old开启参数-XX:+UseSerialGC 新生代和老年代都用串行收集器Parallel常用参数开启参数JDK1.8默认就是以下组合-XX:+UseParallelGC新生代使用Parallel Scavenge,老年代使用Parallel Old-XX:MaxGCPauseMillis不过大家不要异想天开地认为如果把这个参数的值设置得更小一点就能使得系统的垃圾收集速度变得更快,垃圾收集停顿时间缩短是以牺牲吞吐量和新生代空间为代价换取的

2022-01-14 10:02:58 5842

原创 程序员必修之路---离职与劳动仲裁的纠纷解决

拓展知识,保护小伙伴们的合法权益,毕竟我们挣得都是血汗钱!

2022-01-13 16:57:36 9322

原创 Kafka系统介绍及高性能原理

一、Kafka介绍二、消息队列的分类至多一次,常见的rabbitmq,rocketmq都是这种方式,通过ACK机制确认消息已被消费者消费,此时会将消息删除;没有限制则主要是通过消费者上传的offset(偏移量)来确认消费消息的初始位置,同一消息可以被反复多次消费,一直到达到指定条件,比如kafka是默认保留7天,7天后则会被删除。三、kafka基础架构Kafka集群以Topic形式负责分类集群中的Record,每一个Record属于一个Topic,每个Topic底层都会对应一组分区的日志用于持

2021-11-16 13:47:35 11564 1

原创 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll。尝试重新安装此程序以解决此问题

一、产生操作使用个人的windows系统在安装最新的mysql版本mysql-8.0.27-winx64时,在执行mysql安装初始化命令mysqld --initialize报错提示:二、原因分析MySQL 8.0 以上的版本需要Microsoft Visual C ++ 2015可再发行组件包才能在Windows平台上运行三、解决方案尝试解决:刚看到这个问题时,也是一脸迷茫,度娘各种解决方法,尤其是很多推荐去官网下载https://www.microsoft.com/zh-cn/do

2021-11-05 14:25:38 13284

原创 算法进阶之路(五):链表面试题常用数据结构和技巧

一、链表解析思路最常用的主要是两大解题思路:(1):双指针法(快慢指针)(2):使用容器(数组、哈希表等)二、小试牛刀1.面试题:2.**解题思路:**通过双指针法可以简单有效的解答此类问题,定义一个快指针,每次跳两个节点,定义一个慢指针,每次跳一个节点,当快指针调到末尾时,慢指针此时在中点附近。以上四个小题都可以通过这个思路解决,唯一不同的是,指针初始化位置的不同。3.解题代码:针对小题1的解题代码:public class LinkedListTest { public c

2021-11-03 13:43:46 10995

原创 算法进阶之路(四):桶排序之计数排序和基数排序以及排序的稳定性

一、桶排序简介          前面我们介绍的所有排序,选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序等,都是基于比较的排序,而桶排序是基于容器的排序,主要分为:计数排序和基数排序,时间复杂度都是O(N),额外空间复杂度O(M),但是应用范围有限,需要样本的数据状况满足桶的划分。二、计数排序计数排序,不是基于元素比较,而是利用数组下标确定元素的正确位置。1:找出原数组中元素值最大的,记为max。2:创建一个新数组count,其长度是m

2021-10-25 13:57:47 21285

原创 算法进阶之路(三):堆的数据结构、排序及应用

一、堆的数据结构        堆就是用数组实现的二叉树,主要分为两种:最大堆和最小堆。两者的差别在于节点的排序方式,在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是所谓的“堆属性”,并且这个属性对堆中的每一个节点都成立。        需要注意的是,堆的根节点中存放的是最大或者最小元素,但是其他节点的排序顺序是未知的。例如,在一个最大堆中,最大的那一个元素总是位于 in

2021-10-21 15:25:19 14624

原创 算法进阶之路(二):递归、归并排序和快速排序

1.递归递归的本质是利用系统栈的数据结构,完成遍历,因此任何递归行为都可以改为非递归。递归的时间复杂度分析:任何递归的时间复杂度最终都可以使用上面的表达式来表示,其时间复杂度按照公式分析即可。真题分析使用递归的方式,判断数组任意范围内的最大值,代码实现如下:...

2021-10-15 16:31:06 15579

原创 算法进阶之路(一): 时间复杂度和空间复杂度

一、前言时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小,一般都用大O表示法来表示,记作:T(n)=O(f(n)),都是评估算法的核心指标,评估算法优劣的核心指标除了时间和空间复杂度,还包含常数项时间,其中时间和空间复杂度主要由执行流程决定,常数项时间主要有时间细节决定。下文中我们将一一介绍。二、评估算法优劣的核心指标1.常数时间的操作如果一个操作的执行时间不以具体样本量为转移,每次执行时间都是固定时间,称这样的操作常数时间的操作。2.时间复杂度时间复杂度,本质上是

2021-10-14 15:15:29 20700

原创 Spring自定义注解实现redis缓存

一、前言redis是分布式微服务中必用的基础组件之一,现在国内的大部分项目基本上用到,缓存是其主要作用之一,而在项目中频繁使用set()方法添加注解,会造成代码的重复和臃肿,对于开发经验不足的小白,甚至会因为缓存的添加不当直接影响到正常的业务流程,从而酿成事故,因此成熟的公司都会通过封装基础组件,实现通过注解自动添加redis缓存,本文会从原理出发,带领大家亲自实现自定义注解,完成redis缓存的开发,学会了,你可以在同事面前秀一把了。二、自定义注解的参数说明@Target:注解的作用目标,即注解可

2021-10-13 10:26:46 21730

原创 JVM类加载流程及双亲委派机制

一、类加载流程二、类加载器三、源码分析查看java.lang.ClassLoader的loadClass(java.lang.String, boolean)方法的源码:protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) {

2021-10-12 17:09:16 19948

原创 大数据架构演变之路

一、Java Web为什么需要大数据二、数据库-OLTP & 数据仓库-OLAP三、大数据架构演变1.传统离线大数据架构2.Lambda架构(离线处理+实时链路)离线数仓+实时数仓3.Kappa架构四、架构选择五、实时数仓发展趋势六、实时数仓实践顺丰实时数仓架构...

2021-09-28 10:02:48 21334

原创 java对象的内存模型详解:内存模型及对象头的奥秘

在面试官的因势利导下,很多人对jvm的内存模型已经耳熟能详,但是对我们经常new 出来的对象,比如new Object(),你了解它的内存模型吗?本篇文章将带你走进对象内部,真正去了解这个你最熟悉,也最不熟悉的的对象。一、对象的内存模型先上图,简单易懂:再看jvm源码:class oopDesc { friend class VMStructs; friend class JVMCIVMStructs; private: // 对象头 volatile markOop _ma

2021-08-26 16:39:18 37117 1

原创 epoll、poll、select的原理和区别

一、什么是epoll?epoll是一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。epoll有两种工作方式,ET-水平触发 和 LT-边缘触发(默认工作方式),主要区别是:LT,内核通知你fd是否就绪,如果没有处理,则会持续通知。而ET,内核只通知一次。二、epoll的三个函数 int epoll_create(int size)size参数告诉内核这

2021-08-24 14:49:14 52330 4

原创 Java原子操作类总结-AtomicReference、AtomicReferenceFieldUpdater

一、AtomicReferenceFieldUpdaterAtomicReferenceFieldUpdater是基于反射的工具类,用来将指定类型的指定的volatile引用字段进行原子更新,对应的原子引用字段不能是private的。通常一个类volatile成员属性获取值、设定为某个值两个操作时非原子的,若想将其变为原子的,则可通过AtomicReferenceFieldUpdater来实现。通过调用AtomicReferenceFieldUpdater.newUpdater静态方法生成指定类型、指定

2021-08-23 14:11:11 392

原创 spring常见面试题:IOC、循环依赖、设计模式

一、谈谈你对SpringIOC的理解二、BeanFactory和FactoryBean的区别三、spring中用到哪些设计模式?四、applicationContext和BeanFactory的区别五、谈谈你对循环依赖的理解

2021-08-20 10:53:29 13953

原创 利用数组实现简单的循环队列

原理:在数组不做扩容的前提下,如何让新元素入队并确定新的队尾位置呢? 我们可以利用已出队元素留下的空间,让队尾指针重新指回数组的首 位。这样一来,整个队列的元素就“循环”起来了。在物理存储上,队尾的位 置也可以在队头之前。当再有元素入队时,将其放入数组的首位,队尾 指针继续后移即可。一直到(队尾下标+1)%数组长度 = 队头下标 时,代表此队列真的已 经满了。需要注意的是,队尾指针指向的位置永远空出1位,所以队列最大容量比数组长度小1。这就是所谓的循环队列。public class CirculeQ

2021-07-30 15:34:20 12540

原创 单向链表的java实现

定义节点@Datapublic class LinkNode { /** * 节点中的值 */ private int data; /** * 节点中的指针,指向下一个节点 */ private LinkNode next;}链表的常规操作及测试/** * @author ljx * @Description: 链表的常规操作及测试 * @date 2021/7/29 2:35 下午 */public class

2021-07-29 15:59:23 84

原创 杂七杂八零碎知识点

一、反射性能测试

2021-07-29 12:01:52 118

软考高级-信息系统项目管理师全套备考资料及真题和论文.zip

本人一个月备考,顺利考上软考高级-信息系统项目管理师的全套学习资料,内部有重要知识点的总结,大量论文范文,历年真题及解析,希望给大家带来方便

2021-08-20

空空如也

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

TA关注的人

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