- 博客(62)
- 收藏
- 关注
原创 Nacos服务注册源码分析(基础版)
前面的博客中我们已经介绍了如何在Spring Cloud引入Nacos,接下来我们来看看如何手动去注册一个服务,以及服务注册的底层逻辑。
2025-01-24 11:26:55
1112
原创 Nacos源码本地运行及相关问题(windows)
这是因为nacos在1.4.1版本之后采用了protobuf,protobuf是google团队开发的用于高效存储和读取结构化数据的工具。这个包是由protobuf在编译时自动生成。所以上述缺失的代码在编译时自动生成的,所以需要优先使用maven编译将它们生成出来。
2025-01-24 11:09:19
357
原创 ArrayList并发修改异常:ConcurrentModificationException
背过八股的同学应该知道,增强for循环里面直接对数组进行remove/add容易出现并发修改异常,Java数组(ArrayList)会维护一个修改次数的属性()和其内部类Itr的属性,每次从数组中取元素时会校验这两者是否相等,如果不相等就会抛出。 这段代码在遍历数组的同时修改了数组,结果是运行成功,移除了第一个元素"1",并未抛出异常。
2025-01-21 11:30:15
608
原创 Nacos源码之服务注册(SpringCloud版)
配置端口号,不能与已启动服务的端口号重复: 启动新配置好的服务: 此时Nacos上服务如下,可以看到有两个。
2025-01-01 16:30:02
568
原创 SpringCloud启动源码分析
在前面的博客中我们已经详细分析过Spring的启动源码,包括beanDefinition的加载、bean的初始化以及各种后处理器的回调,这个过程还是比较复杂的。 作为Spring全家桶中的一员,SpringCloud也是对Spring做的封装,底层逻辑其实一致,我们先来看看SpringCloud的入口方法: 我们直接去看看的方法,根据调用形式可以看到这里调用的是的静态方法: 这部分的代码逻辑是:先创建一个对象,然后调用这个对象的的方法。的构造方法和它的非静态方法。
2024-12-15 18:58:58
1013
原创 SpringCloud和Nacos的基础知识和使用
1.注册中心Euraka(国内用的较多的是Nacos):负责服务注册和发现。2.负载均衡Ribbon:负责服务实例的选择(同一个服务可能部署在多个服务器上)。3.远程调用Feign:通过HTTP请求调用其他服务的接口。4.熔断器Hystrix:容错管理工具,用于处理分布式系统中的延迟和故障。5.API网关Zuul:用于路由、过滤和负载均衡。1.服务注册:只有一个服务注册到注册中心,才可能被其他服务发现并调用;2.服务发现:即一个服务通过注册中心发现了其他服务。
2024-12-14 19:18:34
859
原创 Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
之前我们有讲过如何使用Jpype调用jar包,在成功调用jar包后,接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包,并调用其中的方法会以下提示信息: 虽然提示信息显示有Windows显示致命错误,但是并不会影响最后的测试用例是否会通过。但是每次运行Pytest测试函数时,都会有这样的信息看着很难受。
2024-11-26 19:13:35
808
原创 Jpype调用jar包
公司要求使用python对接口做自动化测试,接口的实现是Java,部分接口需要做加解密,因此需要使用python来调用jar包来将明文加密成密文,然后通过http请求访问接口进行测试。
2024-11-25 21:32:13
1146
原创 Spring源码学习(一):Spring初始化入口
作为一个刚步入职场的小白,对Spring(SpringBoot)的了解只停留在会用,并未对其内部的原理有过学习。在公司导师的指导下,开始进一步学习Spring的源码,毕竟Spring源码是Spring全家桶的基础,学习了源码对Spring其他框架也能更好上手。 由于本人的基础并不太好,因此文章中有错误的地方欢迎指出。
2024-11-24 15:54:25
2161
4
原创 Spring源码学习(五):Spring AOP
方法内部会根据不同通知的类型创建不同类型的beanDefinition,然后设置beanDefinition中的属性值。特殊的是,方法内部还会设置构造器参数: 我们进入到方法内部可以看到,不同通知类型对应着不同类型的class: 从类的继承关系来看,这五个通知类型都继承至 我们先来看看实现了哪些接口,可以看到这些接口在我们Spring初始化启动源码分析时都有讲到过,特别是这个超级接口,我们会回调里面的方法干很多事情。 获取当前bean的自定义目标源。如果获取到了。
2024-11-05 20:16:15
1392
原创 Spring源码学习(四):component-scan加载beanDefinition
方法会解析XML文件,将其解析成一个文档树(主要是靠),继续调用的会遍历这个文档树中的节点,对符合条件的节点进行解析,得到BeanDefinition。 所以委托给又进一步委托给。 我们最终得到的beanDefinition是类型的,该类型是的实现类,也是的子类。因此会走那两个if逻辑。1.根据标签的命名空间找到对应的命名空间处理器;2.根据命名空间处理器找到当前标签的解析器;3.创建并配置一个扫描器,加入包含和排除哪些注解;4.找到符合条件的候选Bean;
2024-11-02 13:12:46
950
1
原创 Spring源码学习(三):finishBeanFactoryInitialization
beanFactory在经过一系列配置后可以开始真正的加载Bean,从这篇开始主要是讲述Bean的实例化过程。
2024-11-02 12:52:46
756
原创 Spring源码学习(二):prepareBeanFactory准备Bean工厂、回调BeanFactoryPostProcessor、注册BeanPostProcessor
Spring在启动后,方法中容器会注销已有的beans,关闭已有的beanFactory,创建一个新的beanFactory,然后获得所有的Bean定义(基于注解或者基于XML文件)。这一步其实还未实例化任何Bean,只是取得了beanDefinitions,这一篇主要讲解在获得beanDefinitions到真正开始实例化这些beans中间,Spring容器会干的一些事情。是Spring提供的一个扩展接口,Spring中大部分功能都是通过后处理器的方式进行扩展的。
2024-11-02 12:35:12
1022
原创 吴恩达深度学习课程第五章第二周编程作业(pytorch实现)
文章目录前言一、词向量运算1.数据准备2.余弦相似度3.词类类比二、表情生成器V1三、表情生成器V21.构造嵌入层embedding_layer2.Dataloader3.构造LSTM4.模型训练5.实验结果前言 本博客只是记录一下本人在深度学习过程中的学习笔记和编程经验,大部分代码是参考了【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第二周作业 - 词向量的运算与Emoji生成器这篇博客,对其代码实现了复现,但是原博客中代码使用的是tensorflow,而我在学习中主要用到的
2022-01-12 17:54:02
2298
3
原创 ubuntu服务器安装anaconda并配置pytorch环境
文章目录前言一、安装Anaconda并创建虚拟环境二、安装pytorch三、更换anaconda镜像源加速pytorch安装前言 做深度学习难免会用到实验室服务器上的GPU来跑数据,这时需要安装anaconda,创建虚拟环境并安装相应的深度学习框架(本文用到的是pytorch)。anaconda安装踩的坑比较少,每次都比较顺利,但是下载pytorch时有一些注意的事项。一、安装Anaconda并创建虚拟环境 在Anaconda官网下载linux版本: 下载完成后,我们将下载好的.sh文件
2022-01-08 16:38:28
7530
2
原创 吴恩达深度学习课程第四章第二周编程作业(pytorch实现)
文章目录前言一、问题描述二、前置知识和模型架构1.残差网络的基本知识2.模型架构二、编程实现1.Dataloader加载数据2.残差块的封装3.残差网络ResNets4.主控函数四、结果前言 本博客只是记录一下本人在深度学习过程中的学习笔记和编程经验,大部分代码是参考了【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第二周作业这篇博客,对其代码实现了复现,但是原博客中代码使用的是tensorflow,而我在学习中主要用到的是pytorch,所以此次作业我使用pytorch框架
2021-12-01 20:46:48
4246
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人