- 博客(11)
- 收藏
- 关注
原创 Netty源码学习笔记之serverBootstrap的启动分析
serverBootstrap的启动serverBootstrap 的启动从 bind() 方法进入serverBootstrap.bind(port).sync();然后一路跟进去,直到跟到 doBind() 方法private ChannelFuture doBind(final SocketAddress localAddress) { //创建、初始化以及将该channel注册到selector上,异步操作 final ChannelFuture regFuture = init
2021-11-14 22:46:33 1653
原创 netty源码学习笔记之NioEventLoopGroup初始化分析
NioEventLoop首先我们先来了解一下NioEventLoopNioEventLoopGroup就是一组NioEventLoop,而NioEventLoop又继承了Executor。因此,NioEventLoop本身实际上就是一个Executor。我们可以在源码中找到它的 execute() 方法public void execute(Runnable task) { if (task == null) { throw new NullPointerEx
2021-11-13 21:09:36 340
原创 Linux中进程的调度
本文主要介绍一下在Linux系统中进程的调度调度类和调度策略进程主要可以分为两种:实时进程:实时进程一般是需要操作系统尽快返回结果,因此优先级比较高普通进程:一般情况下大多数进程都是普通进程,优先级没有实时进程那么高因此,对于不同的进程就会有不同的调度策略。在进程数据结构 task_struct 中有一个成员变量为该进程的调度类unsigned int policy;配合这个成员变量的还有用于描述优先级的成员变量int prio, static_prio, normal_prio;
2021-09-21 22:21:40 414
原创 Spring 中 BeanDefinition 的注册
本文我们来了解下 spring 中 BeanDefinition 的注册在 spring 中对 bean 的注册主要有两种方式:第一种是通过配置来注册我们的bean,对应的方法是 DefaultListableBeanFactory 里的 registerBeanDefinition() 方法第二种是直接注册一个单例 bean,对应的方法则是 DefaultListableBeanFactory 里的 registerSingleton() 方法下面我们分别来看看这两个方法registerBe
2021-07-14 00:14:25 751
原创 spring依赖查找过程
Spring依赖查找上篇文章依赖处理过程我们通过简单分析了解到了spring处理依赖时的过程,而其中里面有一个方法 resolveDependency() 就是依赖查找过程。而今天我们主要深入去探讨一下这个方法以及相关的实现resolveDependency()方法我们发现,resolveDependency() 方法实现在DefaultListableBeanFactory 这个类里,也就是我们底层IOC容器BeanFactory的实现类@Override@Nullablepublic Obj
2021-07-06 15:27:24 282
原创 spring依赖处理过程
今天我们来聊一聊spring依赖处理的过程关于依赖处理比较重要的类就是org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor于是我们着重看看这个类里的两个方法,分别是postProcessMergedBeanDefinition 和 postProcessProperties,我们一个方法一个方法来看1.依赖处理经过的第一个方法:postProcessMergedBeanDefinition
2021-07-05 16:19:09 258
原创 Spring中的ObjectFactory
1.ObjectFactory的实现类ObjectFactory在Spring中提供的是延迟依赖查找的功能,(具体演示先跳过,感兴趣可以自己试试),而ObjectFactroy有两个比较重要的实现类,一个是org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean$TargetBeanObjectFactory ,另一个则是org.springframework.beans.factory.support.Defau
2021-07-04 15:08:52 2269
原创 Spring中BeanFactory与ApplicationContext的关系
首先我们先来看BeanFactory与ApplicationContext的UML图(继承关系)从图上可以看出,ApplicationContext继承了BeanFactory,也就是说ApplicationContext是BeanFactory的子类,那么它们之间有什么区别呢?下面通过一个简单的例子来说明:public class DependencyInjectionDemo { public static void main(String[] args) { BeanFa
2021-07-03 14:41:53 605
原创 ReentrantLock 原理及源码剖析
首先看看ReentrantLock 的UML类图1. 非公平锁实现原理1.1 加锁解锁流程从构造器看,ReentrantLock 默认实现为非公平锁public ReentrantLock() { sync = new NonfairSync();}NonfairSync 继承自 AQS没有竞争时static final class NonfairSync extends Sync { final void lock() { //没有竞争时,将锁的状
2021-05-05 22:32:58 137
原创 本地方法
本地方法接口什么是本地方法?简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。在定义一个native method时,并不提供实现体(有些像定义一个Javainterface),因为其实现体是由非java语言在外面实现的。本地接口的作
2020-12-22 16:50:48 418
原创 静态变量与局部变量的对比
变量的分类:1.按照数据类型分:①基本数据②引用数据类型2.按在类中声明的位置分:①成员变量:在使用前,都经历过默认初始化赋值类变量:linking的prepare阶段:给类变量默认赋值—> initial阶段:给类变量进行显示赋值即静态代码块赋值实例变量:随着对象的创建,会在堆空间中分配实例变量空间,并进行默认赋值②局部变量:在使用前,必须要进行显示的赋值如上图所示,方法内的局部变量num未进行显示的赋值。...
2020-12-13 17:06:41 207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人