外存

Mybatis之TypeHandler

自古美人都是妖i 提交于 2021-02-16 19:35:38
mybatis-3.4.6.release. TypeHandler在mybatis中是个重要的组件,对statement设置参数还是从Resultset中取值,都会用到它。 List-1 public interface TypeHandler<T> { void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException; T getResult(ResultSet rs, String columnName) throws SQLException; T getResult(ResultSet rs, int columnIndex) throws SQLException; T getResult(CallableStatement cs, int columnIndex) throws SQLException; } 如List-1中所示,setParameter方法在ParameterHandler中使用到,其它三个getResult方法在ResultSetHandler中使用到,为什么会有三个getResult方法是因为从ResultSet中获取值,可以通过下标或列名称获取,此外存储过程的处理方式不同。 图1

计算机组件及操作系统基础

柔情痞子 提交于 2021-02-14 09:34:16
计算机组件简介 计算机分为5大组件: 1. 运算器 2. 控制器 3. 存储器 4. 输入设备 5. 输出设备 CPU是中央控制器,是控制器和运算器,是一台计算机的运算核心和控制核心; 存储器主要功能是存储程序和各种文件; 输入、输出设备我们一般统称为I/0设备,用于连接计算机内外部,而这些组件的连接则需要总线和主板来完成。 主频 主频也叫时钟频率,用来表示CPU的运算,处理数据的速度。通常,主频越高,CPU处理数据的速度就越快。 不能单纯的以为CPU的主频越高,性能就越好。是需要在相同条件下的对比才有效。 CPU缓存 cpu缓存位于CPU和内存之间的临时存储器,它的容量比内存小,但是交换速度比内存快。 cpu的缓存主要是解决cpu运算速度和内存读写速度不匹配的原因,因为cpu运算速度要比内存读写快很多,这样会使cpu花费很长时间等待数据到来或者把数据写回到内存。 在cpu缓存中的数据是内存中的一部分,但这一小部分是短时间内CPU即将访问到的,当CPU调用数据时,就可以直接从缓存中取得, 从而加快速度,因此在cpu中加入缓存是一种高效的解决方案这样这个内存储器(cache+内存)就变得即有cache高速,又有内存的大容量的存储系统。 按照数据读取顺序和与CPU结合的紧密程度,CPU缓存可以分为一级缓存,二级缓存,三级缓存,每一级的缓存中的所有数据都是下一级缓存 的一部分

20145209刘一阳《JAVA程序设计》第八周课堂测试

若如初见. 提交于 2021-02-13 10:32:55
第八周课堂测试 1、下面代码中共有(C)个线程? public class ThreadTest { public static void main(String args[]){ MyThread myThread =new MyThread(); Thread t1=new Thread(myThread); Thread t2=new Thread(myThread); t1.start(); t2.start(); } } class MyThread extends Thread { ... } A .1 B .2 C .3 D .4 2、Java中,可以继承(B)类定义线程 A .Runnable B .Thread C .Future D .Executor 3、以下(AB)方法会使线程进入阻塞状态? A .Thread.sleep() B .wait() C .notify() D .interrupt() 4、如果有以下代码段: Thread thread = new Thread(new ________________() { public void run() {...} }); 空白部分指定哪些类型可以通过编译?(AB) A .Runnable B .Thread C .Future D .Executor 5、调用线程的interrupt()方法

2019下半年网络工程师真题及答案、刷题

折月煮酒 提交于 2021-02-11 11:30:17
网络工程师2019下半年真题及答案、刷题 软考QQ交流群:9529003,欢迎进群交流! 1、在CPU内外常设置多级高速缓存(Cache),其主要目的是(1)。 A.扩大主存的存储容量 B.提高CPU访问主存数据或指令的效率 C.扩大存储系统的容量 D.提高CPU访问外存储器的速度 参考答案【B】 2、计算机运行过程中,进行中断处理时需保存现场,其目的是(2)。 A.防止丢失中断处理程序的数据 B.防止对其他程序的数据造成破坏 C.能正确返回到被中断的程序继续执行 D.能为中断处理程序提供所需的数据 参考答案【C】 3、内存按字节编址,地址从AOOOOH到CFFFFH,共有(3)字节。若用存储容量为64K×8bit的存储器芯片构成该内存空间,至少需要()片。 A.80K B.96K C.160K D.192K 参考答案【D】 更多软考历年(2017-2019)题目,请前往“微信小程序”,搜索【 软考真题集 】。 发挥互联网共享精神, 免费!免费!免费! 来源: oschina 链接: https://my.oschina.net/u/4339939/blog/3320185

2019下半年软件设计师真题及答案、刷题

余生长醉 提交于 2021-02-11 10:50:42
软件设计师2019下半年真题及答案、刷题 软考QQ交流群:9529003,欢迎进群交流! 1、在cpu内外常需设置多级高速缓存cache,主要目的是(1)。 A、扩大主存的存储容量 B、提高cpu访问主存数据或指令的效率 C、扩大存储系统的存量 D、提高cpu访问内外存储器的速度 参考答案【D】 3、计算机运行过程中,进行中断处理时需保存现场,其目的是(3)。 A、防止丢失中断处理程序的数据 B、防止对其他程序的数据造成破坏 C、能正确返回到被中断的程序继续执行 D、能为中断处理程序提供所需的数据 参考答案【C】 4、内存按字节编址,地址从A0000H到CFFFFH的内存,共存(4)字节,若用存储容量为64k*8bit的存储器芯片构成该内存空间,至少需要()片。 A、80k B、96 k C、160 k D、192 k 参考答案【D】 更多软考历年(2017-2019)题目,请前往“微信小程序”,搜索【 软考真题集 】。 发挥互联网共享精神, 免费!免费!免费! 来源: oschina 链接: https://my.oschina.net/u/4407987/blog/3319111

消息队列总结

萝らか妹 提交于 2021-02-11 10:33:22
使用消息队列是提高系统性能的第二黄金法则。 1、消息队列使用场景 一般稍微大点的系统都会用到消息队列,之前项目中用过的主要有ActiveMQ和kafka。使用消息队列的最终目的是通讯,本质是解耦生产者消费者依赖,一般用在异步处理、解耦、错峰、流量控制等场景。 Java消息队列 2、消息队列模型push vs pull push模型最大问题是慢消费,即消费者速度如果比生产者速度慢很多,会导致消息在broker的堆积,如果这些消息是有用无法丢弃的就会一直在broker端保存,并且broker会不断的给消费者推送消息,消费者reject或error后可能会来回推送。而pull模式,消费者可以按需消费,不用担心自己处理不了的信息来骚扰自己,broker堆积消息也会相对简单,无需记录每一个要发送消息的状态,只需要维护所有消息的队列和偏移量就可以了。由于主动权在消费方,消费方无法准确地决定何时去拉取最新的消息。如果一次pull取到消息了还可以继续去pull,如果没有pull取到则需要等待一段时间重新pull。 pull模式最大的问题是消息延迟和忙等。业界较成熟的做法是从短时间开始(不会对broker有太大负担),然后指数级增长等待。比如开始等5ms,然后10ms,然后20ms,然后40ms……直到有消息到来,然后再回到5ms。 3、如何保证消息不丢失(可靠投递,最终一致性),不重复或有序性?

性能优化技巧:有序归并

烂漫一生 提交于 2021-01-31 21:32:18
一、 问题背景与适用场景 在以前的文章中我们介绍过,关系数据库在进行表间关联时是使用HASH分段技术。设两个关联表的规模(记录数)分别是 N 和 M,则 HASH 分段技术的计算复杂度(关联字段的比较次数)大概是 SUM(Ni*Mi),其中 Ni 和 Mi 分别是 HASH 值为 i 的两表记录数,满足 N=SUM(Ni) 和 M=SUM(Mi),这大概率会比完全遍历时的复杂度 N*M 要小很多(运气较好的时候会小 K 倍,K 是 HASH 值的取值范围)。 如果这两个表针对关联键都有序,那么我们就可以使用归并算法来处理关联,这时的复杂度是 N+M;在 N 和 M 都较大的时候(一般都会远大于 K),这个数会远小于刚才那个 SUM(Ni*Mi)。因此有序归并关联的计算速度会比HASH分段关联快很多。 在实际应用中,因为同维表和主子表总是针对主键或主键的一部分关联,我们可以事先把这些关联表的数据按其主键排序,以后就可以总是使用归并算法实现关联,效率能提高很多。SPL即采用了这样的算法。 下面我们就用集算器SPL与关系数据库Oracle作个对比,来测试一下有序归并关联的效率。 二、 测试环境 1、小数据全内存测试 测试机有两个Intel2670 CPU,主频2.6G,共16核,内存128G,SSD固态硬盘。 采用TPCH标准生成的50G数据,主表是orders

从B+树到LSM树,及LSM树在HBase中的应用

最后都变了- 提交于 2021-01-29 07:34:24
前言 在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tree)来组织数据。本文先由B+树来引出对LSM树的介绍,然后说明HBase中是如何运用LSM树的。 回顾B+树 为什么在RDBMS中我们需要B+树(或者广义地说,索引)?一句话:减少寻道时间。在存储系统中广泛使用的HDD是磁性介质+机械旋转的,这就使得其顺序访问较快而随机访问较慢。使用B+树组织数据可以较好地利用HDD的这种特点,其本质是多路平衡查找树。下图是一棵高度为3的4路B+树示例。 与普通B树相比,B+树的非叶子节点只有索引,所有数据都位于叶子节点,并且叶子节点上的数据会形成有序链表。B+树的主要优点如下: 结构比较扁平,高度低(一般不超过4层),随机寻道次数少; 数据存储密度大,且都位于叶子节点,查询稳定,遍历方便; 叶子节点形成有序链表,范围查询转化为顺序读,效率高。相对而言B树必须通过中序遍历才能支持范围查询。 当然,B+树也不是十全十美的,它的主要缺点有两个: 如果写入的数据比较离散,那么寻找写入位置时,子节点有很大可能性不会在内存中

DMA(direct memory access)直接内存访问

人盡茶涼 提交于 2021-01-25 06:22:43
DMA 实际上是 盗用了总线时间来传输数据 ,而且由于是硬件处理,所以大大加速了数据复制速度! 1. 基本概念 辅存狭义上是平时讲的硬盘,准确地说,是外部存储器(需要通过 I/O 系统与之交换数据,全称为辅助存储设备)。 RAM 与 ROM:计算机内存储器的两种型号 RAM-RamdomAccessMemory易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等。 ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的 BIOS 芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。 ROM 和 RAM 是计算机内存储器的两种型号,ROM表示的是只读存储器,即:它只能读出信息,不能写入信息,计算机关闭电源后其内的信息仍旧保存,一般用它 存储固定的系统软件和字库 等。RAM表示的是读写存储器,可其中的任一存储单元进行读或写操作,计算机关闭电源后其内的信息将不在保存,再次开机需要重新装入,通常用来存 放操作系统,各种正在运行的软件、输入和输出数据、中间结果及与外存交换信息等,我们常说的内存主要是指RAM 。 2. CPU 操作外设:传统方式与 DMA 方式 一直不明白DMA(直接内存存储) 传统方式:CPU 操作外设时,将外设的数据读到内部寄存器中,再将数据传送至内存中,之所以还要讲数据送到内存

计算机组成原理(3)——存储层次结构

て烟熏妆下的殇ゞ 提交于 2021-01-24 02:49:36
三、存储器层次结构 本章要求 掌握存储器的分类和各类存储器的基本工作原理,包括SRAM、DRAM、ROM,掌握主存储器与CPU的连接和数据交换、双口RAM和多模块存储器。 两个重要考点: *Cache *虚拟存储器 存储器的地址组织: 地址和内容的问题 一个32位机一次能访问32个二进制数,4字节,这里讲一下字地址和字节地址的关系。 左边的首字节地址构成大房间的地址。 深入的了解一些问题: Address bus 地址总线 CE 片选信号(横线表示低电平有效) RD 读(横线表示低电平有效) WR 写(横线表示低电平有效) Data bus 数据总线 cpu通过地址总线把地址发过去 存储地址译码小结: 地址译码器: 将二进制代码标识的地址转换成输出端的高电位用来驱动相应的读写电路,以便选择所要访问的存储单元。地址译码有两种方式,单译码方式和双译码方式。 存储器的读写操作 存储器的存取仅仅与存储器的地址有关但是实际中还与其它的控制信号有关。与存储器有关的控制信号还有/cs(片选信号),/WR(写信号),/RD(读信号)。当/CS=1时标识本芯片没有被选中,对该芯片即不实现读操作也不实现写操作。 DRAM存储元 四管动态存储元 四管的动态存储电路时将六管静态存储元电路中的负载管T3,T4去掉而成的。 3.4 只读存储器和闪速存储器 3.4.1只读存储器 ROM的分类