Linux0.11源码学习(二)】的更多相关文章

@Adaptive注解 在上一篇ExtensionLoader的博客中记录了,有两种扩展点,一种是普通的扩展实现,另一种就是自适应的扩展点,即@Adaptive注解的实现类. @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD}) public @interface Adaptive { String[] value() default {}; } @Adapt…
在进行gevent源码学习一分析之后,我还对两个比较核心的问题抱有疑问: 1. gevent.Greenlet.join()以及他的list版本joinall()的原理和使用. 2. 关于在使用monkey_patchall()之后隐式切换的问题. 下面我将继续通过分析源码及其行为来加以理解和掌握. 1. 关于gevent.Greenlet.join()(以下简称join)先来看一个例子: import gevent def xixihaha(msg): print(msg) gevent.sl…
Vue原型对象的包装 在Vue官网直接通过 script 标签导入的 Vue包是 umd模块的形式.在使用前都通过 new Vue({}).记录一下 Vue构造函数的包装. 在 src/core/instance/index.js 这个文件是 Vue构造函数的出生地. import { initMixin } from './init' import { stateMixin } from './state' import { renderMixin } from './render' impo…
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 出版的书籍: <1.0-区块链DApp开发实战> <2.0-区块链DApp开发:基于公链> 本次是系列文章,这是第二篇.第一篇在: 以太坊 layer2: optimism 源码学习…
一.环境准备 对于学习源码来讲,拿到一大堆的代码,脑袋里肯定是嗡嗡的,所以从代码实例进行跟踪调试未尝不是一种好的办法,此处,我们准备了一个小例子: package com.zjl; public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void sayHello…
SocketServer 中非常重要的两个基类就是:BaseServer 和 BaseRequestHandler在SocketServer 中也提供了对TCP以及UDP的高级封装,这次我们主要通过分析关于TCP的处理逻辑来对SocketServer模块进行一个很好的理解和学习 TCPServer TCPServer 继承了BaseServer,初始化的时候,进行了socket套接字的创建. def __init__(self, server_address, RequestHandlerCla…
我们查看Collection接口的hierarchy时候,可以看到AbstractCollection<E>这样一个抽象类,它实现了Collection接口的部分方法,Collection集合系列的各个集合类都继承于该抽象类.我们来看看这个类: public abstract class AbstractCollection<E> implements Collection<E> { protected AbstractCollection() { } public a…
Thrift 提供了如图五种模式:TSimpleServer.TNonblockingServer.THsHaServer.TThreadPoolServer.TThreadSelectorServer ​​ TSimpleServer.TThreadPoolServer 属于阻塞模型 TNonblockingServer.THsHaServer.TThreadedSelectorServer 属于非阻塞模型 TServer TServer 为抽象类 public static class Ar…
这篇笔记主要来就,mybatis是如何利用spring的扩展点来实现和spring的整合 1.mybatis和spring整合之后,我们就不需要使用sqlSession.selectOne()这种方式了,可以直接从spring容器中获取到接口的代理对象,然后调用对应的目标方法,那么,mybatis在将接口交给spring管理的时候,用到了三个扩展点: 1.1 factoryBean  mapperFactoryBean就是实现了factoryBean,然后,通过getObject方法来返回一个代…
linux0.11添加系统调用的步骤 假设添加一个系统调用foo() 1.修改include/linux/sys.h 添加声明 extern int foo(); 同时在sys_call_table数组的最后添加一个元素 ...,sys_foo 2.修改include/unistd.h 增加一个调用号宏 #define __NR_iam 72 再声明供用户调用的函数 int foo(); 3.修改kernel/sys_call.s: 增加调用个数 nr_system_calls = 4.新增文件…