扩展

计算机系统结构第二版习题答案,计算机系统结构课后习题答案(第2版).docx 习题一1、解释下列术语计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性)。计算机系统的内特性:计算机系统的设计人员所看到的基本属性,本质上是为了将有关软件人员的基本属性加以逻辑实现的基本属性。模拟:模拟方法是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。可移植性:在新型号机出台... 阅读详情

扩展

BeanFactoryPostProcessor

BeanPostProcessor: bean后置处理器 bean创建对象初始化前后进行拦截工作的

BeanFactoryPostProcessor: beanFactory的后置处理器,在Beanfactory标准初始化之后调用;所有的Bean定义已经保存加载到beanFactory/.但是Ban实例还未创建

 

实现接口的Bean:

@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println("postProcessBeanFactory");
        int count = beanFactory.getBeanDefinitionCount();
        String[] names = beanFactory.getBeanDefinitionNames();
        System.out.println("当前BeanFactory中有"+count+"个Bean");
        System.out.println(Arrays.asList(names));
        
    }

}

 

 config:

@Configuration
@ComponentScan("com.toov5.ExtBean")
public class ExtConfig {
    @Bean
    public Boss boss() {
        return new Boss();
    }
}

 

Test:

public class test {
    @Test 
    public void test01(){    
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ExtConfig.class);
        applicationContext.close();
      }  
} 

结果: 看到执行过程如下

 

步骤:

   1  ioc容器创建对象

   2 invokeBeanFactoryPostProcessors(beanFactory) ; 执行BeanfactoryPostProcessor; 如何找到所有的BeanFactoryPostProcessor并执行他们的方法

        a,直接在BeanFactory中找到所有类型是BeanfactoryPostProcessor的组件,并执行他们的方法。

        b,在初始化创建其他组件前面执行  

 

 

MyBeanDefinitionRegistryPostProcessor :
@Component
public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println("BeanDefinitionRegistryPostProcessor..bean的数量"+beanFactory.getBeanDefinitionCount());
        
    }
   //BeanDefinitionRegistry  Bean定义信息的保存中心  以后BeanFactory就是按照BeanDefinitionRegistry里面保存的每一个Bean定义信息创建bean实例
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        System.out.println("BeanDefinitionRegistryPostProcessor..Bean的数量"+registry.getBeanDefinitionCount());
        //可以自己注册Bean
        //    RootBeanDefinition beanDefinition = new RootBeanDefinition(Car.class);
       //或者这样,与上面效果是一样的
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Car.class).getBeanDefinition();
        registry.registerBeanDefinition("helloBeanName", beanDefinition);
    }

}

 

 执行test方法后:

  

 

 可以看出 优先于 

BeanFactoryPostProcessor  执行

利用 

BeanDefinitionRegistryPostProcessor  给容器中再额外添加一些组件

原理: 

    1 ioc创建对象

    2 refresh() ---> invokeBeanFactoryPostProcessors(beanFactory)

   3 从容器中获取到所有的BeanDefinitionRegistryPostProcessor组件

     1 一次触发所有的postProcessBeanDefinitionRegistry() 方法

     2 再来触发postProcessBeanFactory() 方法 

 

 

ApplicationListener: 监听容器中发布的时间。时间 驱动模型开发

    public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

      监听ApplicationEvent 及其下面的子事件

 

 

容器刷新事件 容器关闭事件

 

 步骤:

   1 写一个监听器来监听某个事件(ApplicationEvent及其子类)

   2 把监听器注册到容器中

   3 只要容器中有相关事件的发布,就能监听到这个事件

     ContextRefreshedEvent: 容器刷新完成(所有bean都完全创建) 会发布事件

     ContextClosedEvent: 关闭容器会发布这个事件

 4 发布一个事件

    

监听:

@Component 
public class MyApplicationListener implements ApplicationListener<ApplicationEvent>{
   //当容器中 发布此事件以后 方法触发
    public void onApplicationEvent(ApplicationEvent event) {
         
        System.out.println("收到事件"+event);
    }

}

 

test:  发布了一个事件

 

public class test {
    @Test 
    public void test01(){    
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ExtConfig.class);
        //发布事件
        applicationContext.publishEvent(new ApplicationEvent(new String("我发布的时间")) {
        });
        applicationContext.close();
      }  
} 

 

结果:

 

原理:

  ContextRefreshedEvent事件

       1、容器创建对象 refresh()  

       2、 finishRefresh() 容器刷新完成,容器刷新完成会发布ContextRefreshedEvent事件。我们也可以自己发布事件,容器关闭会发布事件

       3、publishEvent(new ContextRefreshedEvent(this) )

            事件发布流程:

                     获取事件的多播器(派发器): getApplicationEventMulticaster()

                     multicastEvent派发事件

                     获取到所有的ApplicationListener: 如果有Executor 可以支持使用Executor进行异步派发,否则,同步的方法直接知心Listener方法 invokeListener(listener, event)

                     拿到listener回调onApplicationEvent方法

 

                            

 

@EventListener   跟实现Listener接口实现的效果是一样的

 

   service

@Service
public class UserService {
    
    @EventListener(classes= {ApplicationEvent.class})
    public void listen(ApplicationEvent event) {
        System.out.println("UserService 监听到的事件"+event);
    }
}

 config

  

@Configuration
@ComponentScan("com.toov5.service")
public class ExtConfig {
    @Bean
    public Boss boss() {
        return new Boss();
    }
}

 

test:

public class test {
    @Test 
    public void test01(){    
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ExtConfig.class);
        //发布事件
        applicationContext.publishEvent(new ApplicationEvent(new String("我发布的时间")) {
        });
        applicationContext.close();
      }  
} 

结果:

 

 监听器的实现ApplicationListener监听某个事件, ApplicationEvent及其子类

 @EventListener

原理: 使用EventListenerMethodProcessor处理器来解析方法上的@EcentListener

 

SmatInitializationSingleton原理 

   ioc容器创建对象并refresh()

   finishBeanFactoryInitialization(beanFactory) 初始化剩下的单实例bean

           先创建所有的单实例bean getBean()

          获取所有创建好的单实例bean,判断是否是SmartInitatializingSingleton类型的。是就调用afterSingletonInstantiated() 

 

 

 

posted @ 2019-04-11 00:28 toov5 阅读(...) 评论(...) 编辑 收藏

计组 | 存储器容量扩展(字扩展、位扩展、字位扩展) 存储器芯片的容量是有限的,为了满足实际存储器的容量要求,需要对存储器进行扩展。主存扩展:将存储芯片连在一起组成足够的容量存储器容量扩展的主要方法有:位扩展:只加大字长,而存储器的字数与存储器芯片字数一致,对所有片子使用共同片选信号;字扩展:仅在字向扩充,而位数不变。需由片选信号来区分各片地址。字位扩展:一个存储器的容量假定为M×N位,若使用l×k 位的芯片(l<M,k<N),需要在字向和位向同时进行扩展。此时共需要(M/l)×(N/k)个存储器芯片。 阅读详情

相关推荐

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

计算机结构原理与组成ppt,计算机组成原理与系统结构课件.ppt

《计算机组成原理与系统结构课件.ppt》由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关《计算机组成原理与系统结构课件.ppt》文档请在天天文库搜索。1、复 习第1章概述1.1计算机系统的基本组成及其层次结构 理解1.2计算机的体系结构、组成和实现 理解1.3计算机发展进步与拓展应用的历程 一般了解 复 习第2章数字电路基础和计算机中的逻辑部件2.1数字电路基础 一般了解半导体...

weixin_32802111的博客 562

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

计算机系统结构习题集2

1.某处理机的指令字长为16位,有双地址指令、单地址指令和零地址指令三类,并假设每个地址字段的长度均为6位。 (1) 如果双地址指令有15条,单地址指令和零地址指令的条数基本相同,问单地址指令和零地址指令各有多少条?并且为这三类指令分配操作码。 (2) 如果要求三类指令的比例大致为1:9:9,问双地址指令、单地址指令和零地址指令各有多少条?并且为这三类指令分配操作码。 解: 1) 单地址指

晨曦2012的专栏 1万+

105. replace( )函数

【目录】

weixin_63986098的博客 1万+

【DRAM存储器一】基本存储单元、阵列结构、读写原理

详述DRAM存储器存储单元、存储阵列结构和读写原理

highman110的博客 7256

若某计算机要求有如下形式的指令,8ug[高等教育]指令系统复习.doc

8ug[高等教育]指令系统复习指令系统复习1. 某计算机有10条指令,它们的使用频率分别为0.30, 0.20, 0.16, 0.09, 0.08, 0.07, 0.04, 0.03, 0.02, 0.01(1) 用霍夫曼编码对它们的操作码进行编码,并计算平均代码长度。(2) 用扩展霍夫曼编码法对操作码进行编码,限两种操作码长度,并计算平均代码长度。2.某模型机有8条指令,使用频率分别为:0.3,...

weixin_39654058的博客 1333

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

计算机组成原理 doc,计算机组成原理53334.doc

第一章1.计算机系统是由硬件系统和软件系统组成的。2.计算机硬件系统是由中央处理器(运算器和控制器)、存储器和输入输出设备组成第三章1.浮点数加减法的的运算步骤: “对阶”操作;尾数的加减运算;规格化操作;舍入;检查阶码是否溢出。2.浮点数乘除法的运算步骤:求乘积的阶码;尾数相乘;规格化处理;舍入;判溢出。第四章1.主存储器的作用:主存储器处于全机中心地位,用于存储当前运行的所有程序和相关数据2....

weixin_39581739的博客 346

KNN算法实现数据分类及matlab完整代码

其基本思想是:对于一个未知样本,找出与该样本距离最近的k个已知样本,然后根据这k个样本的类别来确定该未知样本的类别。在本文中,我们采用iris数据集,该数据集包含四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度,以及三个类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。KNN算法具有简单、直观、易于理解等特点,适用于多分类和二分类问题,但其计算复杂度随着样本数量的增加而增加,也容易受异常值影响。在KNN算法中,常用的距离函数有欧氏距离、曼哈顿距离等。(2)选择距离最近的k个样本,并根据它们的类别来确定未知样本的类别。

qq_39605374的博客 1515

若依框架二次开发——RuoYi-AI 本地部署流程

若依框架二次开发——RuoYi-AI 本地部署流程

bjzhang75的博客 1784

【细碎知识6】字扩展、位扩展和字位扩展

目录0. 基本概念1. 字扩展2.位扩展3. 字位扩展 0. 基本概念 存储容量: 存储容量是主存中能存放二进制代码的总位数,即存储容量=存储单元个数×存储字长(每个存储单元的位数),也可用字节总数来表示: 存储容量=存储单元个数*存储字长/8 举例:2114芯片大小为1K×4b,含义为: 1K 存储单元的个数位2^10个 4b 每个存储单元有4位 地址线: 存储单元的个数=2^地址线的条数 数据线: 数据线确定存储字长,数据线的条数=字长的位数。 字扩展、位扩展、字位扩展是对存储容量

syh的技术记录 2万+

YOLO26模型应用过程中的报错处理及疑问解答,涉及环境搭建、模型训练、模块改进、论文写作

本文记录了YOLO26模型的这一系列过程中可能发生的问题,以及大家非常关心的问题,这里统一做了一个记录和解答。

Limiiiing的博客 241

存储器容量扩展——位扩展、字扩展

存储器(二)——存储容量扩展 前言:(基本概念) 存储空间:CPU决定,操作系统 存储器:用户需求决定(4G,8G)(8G的存储器1各芯片能否完成用户需求?如果不能完成,存储器由若干个芯片组成) 存储芯片:芯片厂家设置(将存储芯片插到扩展槽,最终通过总线和CPU进行连接) 存储器容量的扩展 一. 位扩展(增加存储字长) 1K ✖ 4位 存储芯片组成 1K ✖ 8位 的存储器 2114芯片的基本结构: 位扩展的基本方法: 地址线对应相连 数据线分为高位和低位 片选线和读写控制线连接在

淼的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机组成原理——存储器容量扩展(字扩展、位扩展、字位扩展)

存储器容量扩展 主存,主存储器,又称内存储器 存储器芯片的容量是有限的,为了满足实际存储器的容量要求,需要对存储器进行扩展。 主存扩展:将存储芯片连在一起组成足够的容量 存储器容量扩展的主要方法有: 位扩展:只加大字长,而存储器的字数与存储器芯片字数一致,对所有片子使用共同片选信号; 字扩展:仅在字向扩充,而位数不变。需由片选信号来区分各片地址。 字位扩展:一个存储器的容量假定为M×N位,若使用l×k 位的芯片(l<M,k<N),需要在字向和位向同时进行扩展。此时共需要(M/l)×(N/k)个存储器芯 片

技术小白 6万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

芯片的字扩展,位扩展,字位扩展

芯片的引脚构成: 地址线(Address一般用A表示,从A0开始) 数据线(Data一般用D表示,从)

lee_ritenour 9445

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

字扩展和位扩展

主存扩容 位扩展 位扩展是指增加存储字长,例如,2片1K X4位的芯片,可以组成1K X 8位的存储器。满足下列条件时,采用位扩展的方式: 只加长每个存储单元的字长,而不增加存储单元的数量 芯片数=设计要求的存储器容量/选择芯片存储器容量 芯片之间采用并联的方式 例如下题: 利用1K×4位的SRAM芯片,设计一个存储容量为1K×8位的SRAM存储器, 问:需要芯片,地址线,数据线的数量各为多少...

weixin_44749339的博客 1万+

字扩展,位扩展和字位扩展

位扩展 位扩展指的是用多个存储器器件对字长进行扩充,指的是用多个存储器器件对字长进行扩充,如用2个16KX4位芯片组成16KX8位的存储器。 位扩展的连接方式是将多片存储器的地址、片选CS、读写控制端R/W相应并联,数据端分别引出。 字扩展 字扩展指的是增加存储器中字的数量。如用4个16KX8位芯片组成64KX8位存储器。 静态存储器进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而...

z2431435的博客 4万+

字扩展、位扩展和字位扩展以及片选控制方法

0 存储器扩展 单片存储器芯片容量有限,无法满足日常需求,所以要对其扩展 一条内存条上有多个存储芯片,一块主板又可以插多条内存条 1 位扩展 1.1 扩展方式 字数不变,增加位数 地址线、控制线并联,增加数据线 1.2 举例 例:2 K * 8 bit 扩容为 2 K * 32 bit 的存储体 1 K = 1024 2 * 1024 * 32 bit / 2 * 1024 * 8 bit = 4,需要4片 log2(2 * 1024) = 11,需要11根地址线 32 bit,需要32根数据线

不搞数学的汤老师 1万+

符号扩展与零扩展

符号扩展与零扩展 定义: 符号扩充 符号扩充(又名符号扩展)是计算机算术中,在保留数字的符号(正负性)及数值的情况下,增加二进制数字位数的操作。 举个例子,若计算机使用六位二进制数表示数字“00 1010”(十进制的正10),且此数字需要将字长符号扩充至十六位,则扩充后的值为“0000 0000 0000 1010”。此时,数值与符号均保留了下来。 若计算机使用十位数及二补数表示数字“11 11...

weixin_43946347的博客 8669

字扩展与位扩展

它不像字扩展那样有明确的“零扩展”和“符号扩展”之分,其扩展方式取决于具体的应用需求和上下文。这在某些情况下可以保持位向量的整体特性,例如,如果位向量代表的是一个有符号数,复制最高位(符号位)可以保持符号不变。但这与字扩展的符号扩展并不完全相同,因为位扩展并不一定处理数值的符号性。符号扩展是指在将较小的有符号整数扩展为较大的有符号整数时,用符号位填充高位比特。零扩展是指在将较小的无符号整数扩展为较大的无符号整数时,用零填充高位比特。位扩展没有像字扩展那样标准化的“零扩展”和“符号扩展”的概念。

weixin_49342084的博客 1996

字扩展,位扩展,字位扩展

存储容量是主存中能存放代码的总位数,即,也可用字节总数来表示: 存储容量=个数*存储字长/8。

m0_72398927的博客 3641

【Kotlin】扩展属性、扩展函数

Kotlin 提供了扩展类或接口的操作,而无需通过类继承或使用装饰器等设计模式,来为某个类添加一些额外的属性或函数,我们只需要通过一个被称为扩展的特殊声明来完成。我们可以将那些第三方类不具备的功能强行进行扩展,方便我们的操作。类的扩展是静态的,实际上并不会修改它们原本的类,也不会将新成员插入到类中,仅仅是将我们定义的功能变得可调用,使用起来就像真的有一样。Kotlin 提供了一些泛型扩展函数(在 Standard.kt 中),如:apply、also、run、let、takeIf、takeUnless等

little_fat_sheep 2360

PHP - 各种扩展「底层扩展,上层扩展,自带扩展」

了解PHP扩展, 学以致用, 帮助理解PHP语言的本质, 以及如何开发出更加高效程序.

"代码"的日常搬运 4271

理解水平扩展和垂直扩展

当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题 以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一个软件系统需要不断成长,那么你将有意或者无意中选择这两 种策略中的一种。 垂直扩展 在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现。例如,假设你现在负责一批木材采伐的操作。 在这个例子中,我们假设有3辆卡车,每辆车一次可以运25根木材,计算花.

嘿嘿 2799

基于扩展有限元方法的裂纹扩展

扩展有限元方法是一种很好计算裂纹扩展的工程方法,并且计算裂纹扩展过程中不需要对裂纹尖端进行网格重分。

m0_73816777的博客 3525
上一篇: Spring注解(事务)
下一篇: Spring容器创建过程
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值