源码

Spring源码解析

本秂侑毒 提交于 2020-04-07 05:52:02
我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegistry和SingletonBeanRegistry接口. 这边主要提供了这样的三个功能: 别名管理,单例创建与注册,工厂方法FactoryBean支持. 我们来看看这些接口,类的主要职责吧: BeanFactory Spring IOC容器的根接口 -- HierachicalBeanFactory 实现容器的继承,就是可以有父 BeanFactory -- -- ConfigureabelBeanFactory提供factory的配置功能 AliasRegistry 定义bean name的别名管理 -- SimpleAliasRegistry 在实现别名管理接口基础上,添加一个canonicalName查找类真是名称api SingletonBeanRegistry 提供单例注册,查询服务 -- DefaultSingletonBeanRegistry 实现单例与DisposableBean的生命周期管理(创建,维护,销毁) -- --FactoryBeanRegistrySupport 添加工厂方式创建类FactoryBean的支持 -- -- -- AbstractBeanFactory BeanFactory的抽象实现.

nacos源码分析

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-06 21:42:06
Nacos源码分析系列 Author:zxw School:吉首大学 email: 502513206@qq.com @Nacos: http://dubbo.apache.org/zh-cn/index.html 1.前言 ​ 努力能够成为社区的commiter 2.目录 nacos-naming模块:服务发现与注册 来源: oschina 链接: https://my.oschina.net/u/4182062/blog/3221720

shiro登录源码

这一生的挚爱 提交于 2020-04-06 19:08:13
//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory(configFile); //2、得到SecurityManager实例 并绑定给SecurityUtils org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); SecurityUtils.setSecurityManager(securityManager)源码: * * *设置一个VM(静态)单例SecurityManager,专门用于透明使用 * {@link #getSubject() getSubject()}实现。 * < p / > * <b>此方法调用主要用于框架开发支持。应用程序开发人员很少, *如果需要,需要调用这个方法。</b> * < p / > Shiro开发团队更喜欢SecurityManager实例是非静态的单例应用程序 *和<em>不是</em> VM静态单例

Java编程思想第4版课后答案+源码

会有一股神秘感。 提交于 2020-04-06 17:53:14
下载Java编程思想第4版中英文两版pdf文档下载 课后习题答案+可运行源码+两套配套视频   链接:https://pan.baidu.com/s/1knj4bwrd2c_w0jdtGmMShw 提取码:utpa 注意:   中文版有一页(文件页码548,书籍页码515)图像缺失。不过没关系,只是一页源码以及简单说明,不影响整体知识。   网上的目前找到的所有版本此页都是缺失的。   实在要看,可以看对应的英文版本(文件658页,书籍636页),没什么难度。 Java编程思想第4版课后答案+源码 来源: https://www.cnblogs.com/kehoudaan/p/12642951.html

Dubbo 源码分析

风格不统一 提交于 2020-04-06 17:40:38
开篇 前面用了4 篇文章分析了 Dubbo SPI 的几种用法以及如何在 Dubbo 中应用的, Dubbo SPI 使用方法(一)- 扩展点自动包装 Dubbo SPI 使用方法(二)- 扩展点自适应 Dubbo SPI 使用方法(三)- 扩展点自动装配 Dubbo 源码分析 - Dubbo SPI 在 Protocol 层 的应用 本文通过调试 Dubbo2.7.x 源码分析 如何通过 getExtension(name) 获取一个扩展对象实例 。 正文 回顾一下 Dubbo SPI 的最基本的用法 public class App { public static void main( String[] args ) { // 第一步 ExtensionLoader<HelloService> extensionLoader = ExtensionLoader.getExtensionLoader(HelloService.class); // 第二步 HelloService helloService = extensionLoader.getExtension("helloService"); // 第三步 helloService.sayHello("xiaoming"); } } 我们直接从第二步 debug 进入 getExtension(name) 方法 1.

asp.net core 3.1 源码分析之KestrelServer

北慕城南 提交于 2020-04-06 12:29:17
public class KestrelServer : IServer { private readonly List<(IConnectionListener, Task)> _transports = new List<(IConnectionListener, Task)>(); private readonly IServerAddressesFeature _serverAddresses; private readonly IConnectionListenerFactory _transportFactory; private bool _hasStarted; private int _stopping; private readonly TaskCompletionSource<object> _stoppedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously); public KestrelServer( IOptions<KestrelServerOptions> options, IConnectionListenerFactory transportFactory, ILoggerFactory loggerFactory) :

源码分析Dubbo网络通信篇NettyClient

China☆狼群 提交于 2020-04-06 11:24:14
在源码分析 Dubbo 通讯篇之网络核心类一文中已给出 Dubbo netty client 的启动流程,如下图: 以 Dubbo 协议为例,DubboProtocol#refer 中,在创建 Invoker 时,通过 getClient 方法,开始 Client(连接的)创建过程,先重点看一下: private ExchangeClient[] getClients(URL url) { // @1 // whether to share connection boolean service_share_connect = false; int connections = url.getParameter(Constants.CONNECTIONS_KEY, 0); // @2 // if not configured, connection is shared, otherwise, one connection for one service if (connections == 0) { service_share_connect = true; connections = 1; } ExchangeClient[] clients = new ExchangeClient[connections]; // @3 for (int i = 0; i < clients

JDK13.0.2源码调试《一》

核能气质少年 提交于 2020-04-06 11:13:52
Launcher state: First application arg index: 2 debug:on javargs:off program name:java launcher name:java javaw:off fullversion:13.0.2+8 Java args: Command line args: argv[0] = java argv[1] = App.java JRE path is /opt/app/jdk/jdk-13.0.2 jvm.cfg[0] = ->-server<- jvm.cfg[1] = ->-client<- 1 micro seconds to parse jvm.cfg Default VM: server Does `/opt/app/jdk/jdk-13.0.2/lib/server/libjvm.so' exist ... yes. mustsetenv: FALSE JVM path is /opt/app/jdk/jdk-13.0.2/lib/server/libjvm.so 1 micro seconds to LoadJavaVM JavaVM args: version 0x00010002, ignoreUnrecognized is JNI_FALSE, nOptions is 6 option[ 0]

【Go专家编程】recover源码剖析

不问归期 提交于 2020-04-06 10:58:28
本节试图探究一下recover()的实现源码,以便更好的理解其工作机制。 recover的真身 就像我们之前针对panic做的一样,我们也写一段简单的代码,通过其汇编码尝试找出内置函数recover()的底层实现。 编写以下简单的代码,并保存在名为compile.go的文件里: // recover/compile.go package recover func compile() { defer func() { recover() }() } 然后使用以下命令编译代码: go tool compile -S recover/compile.go 接着根据代码行号找出recover()语句对应的汇编码: 0x0024 00036 (recover/compile.go:5) PCDATA $0, $1 0x0024 00036 (recover/compile.go:5) PCDATA $1, $0 0x0024 00036 (recover/compile.go:5) LEAQ ""..fp+40(SP), AX 0x0029 00041 (recover/compile.go:5) PCDATA $0, $0 0x0029 00041 (recover/compile.go:5) MOVQ AX, (SP) 0x002d 00045 (recover/compile.go:5

asp.net core 3.1 源码学习之 GenericWebHostBuilder

爷,独闯天下 提交于 2020-04-06 10:52:48
先看下如下的扩展方法 public static class GenericHostWebHostBuilderExtensions { public static IHostBuilder ConfigureWebHost(this IHostBuilder builder, Action<IWebHostBuilder> configure) { var webhostBuilder = new GenericWebHostBuilder(builder); configure(webhostBuilder); builder.ConfigureServices((context, services) => services.AddHostedService<GenericWebHostService>()); return builder; } } 当我们调用IHostBuilder的扩展方法ConfigureWebHost时候,系统创建了GenericWebHostBuilder类,并注册GenericWebHostService类 再分析下GenericWebHostBuilder public GenericWebHostBuilder(IHostBuilder builder) { _builder = builder; _config = new