缓冲池的工作原理

一:缓存技术 缓冲池技术 基本原理是什么(计算机操作系统)

就是计算机会想现有加载的一些东西保存在内存里面,下次使用起来就快多了!

二:缓冲区工作原理

本文探讨Oracle数据缓冲区的内部机制——Oracle用这一内存来防止不必要的数据块从磁盘重读。理解Oracle数据缓冲区如何操作,是成功地运用它们调整数据库性能的关键。

在Oracle 8i以前的版本里,当数据块被从磁盘送进数据缓冲区的时候,数据块会被自动地放置到最近使用过的数据列表的前部。但是,这种行为从Oracle 8i开始就变了:新数据缓冲区被放置在缓冲区链的中部。在调节数据库的时候,你的目标就是为数据缓冲区分配尽量多的内存,而不会导致数据库服务器在内存里分页。数据缓冲区每小时的命中率一旦低于90%,你就应该为数据块缓冲区增加缓冲区。

数据块的存活时间

在调入数据块之后,Oracle会不停地跟踪数据块的使用计数(touch count,也就是说,这个数据块被用户线程所访问的次数)。如果一个数据块被多次使用,它就被移动到最近使用过的数据列表的最前面,这样就能确保它会在内存里保存一段较长的时间。这种新的中点插入技术会确保最常使用的数据块被保留在最近使用过的数据列表的最前面,因为新的数据块只有在它们被重复使用的时候才会被移动到缓冲区链的最前面。

总而言之,Oracle 8i数据缓冲池的管理要比先前的版本更加有效。通过将新的数据块插入缓冲区的中部,并根据访问活动(频率)调整缓冲区链,每个数据缓冲区就被分割成两个部分:热区(hot section),代表数据缓冲区的最近使用的一半;冷区(cold section),代表数据缓冲区的最早使用的一半。只有那些被反复请求的数据块才会被移进每个缓冲池的热区,这就让每个数据缓冲区在缓冲常用数据块的时候效率更高。

热区的大小要用下面的隐藏参数来配置:

_db_percent_hot_default

_db_percent_hot_keep

_db_percent_hot_recycle

Oracle公司作为官方没有推荐更改这些隐藏参数。只有懂得内部机制和希望调节其数据缓冲区行为的有经验人员才应该使用这些参数。

找到热数据块

Oracle 8i保留着一个X$BH内部查看表,用来显示数据缓冲池的相对性能。X$BH查看表有下列数据列:

Tim:两次使用之间的时间差,和_db_aging_touch_time参数相关。

Tch:使用计数,它和被使用过_db_aging_hot_criteria次之后从冷区移入热区直接相关。

由于Tch数据列用来追踪特定数据块的使用次数,所以你就能够编写一个字典查询来显示缓冲区里的热数据块——使用计数大于10的数据块,就像下面这样:

SELECT

obj object,

dbarfil file#,

dbablk block#,

tch touches

FROM

x$bh

WHERE

tch > 10

ORDER BY

tch desc;

这项高级查询技术在用于追踪DEFAULT缓冲池里的对象时尤其有用。一旦定位了热数据块,你就能够把它们从DEFAULT缓冲池移动到KEEP缓冲池。

完全缓冲数据库

从Oracle 8i开始,随着64位寻址的出现,你就能够创建一个完全在数据缓冲区里缓冲的数据库。现今,任何数据库通常只用不到20G的内存就......余下全文>>

三:简单介绍连接池的优点和原理。

连接池运作原理在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。  数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。  数据库连接池的主要操作如下:  (1)建立数据库连接池对象(服务器启动)。  (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。  (3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。  (4)存取数据库。  (5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。  (6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。连接池的实现  1、连接池模型   本文讨论的连接池包括一个连接池类(DBConnectionPool)和一个连接池管理类(DBConnetionPoolManager)。连接池类是对某一数据库所有连接的“缓冲池”,主要实现以下功能:①从连接池获取或创建可用连接;②使用完毕之后,把连接返还给连接池;③在系统关闭前,断开所有连接并释放连接占用的系统资源;④还能够处理无效连接(原来登记为可用的连接,由于某种原因不再可用,如超时,通讯问题),并能够限制连接池中的连接总数不低于某个预定值和不超过某个预定值。   连接池管理类是连接池类的外覆类(wrapper),符合单例模式,即系统中只能有一个连接池管理类的实例。其主要用于对多个连接池对象的管理,具有以下功能:①装载并注册特定数据库的JDBC驱动程序;②根据属性文件给定的信息,创建连接池对象;③为方便管理多个连接池对象,为每一个连接池对象取一个名字,实现连接池名字与其实例之间的映射;④跟踪客户使用连接情况,以便需要是关闭连接释放资源。连接池管理类的引入主要是为了方便对多个连接池的使用和管理,如系统需要连接不同的数据库,或连接相同的数据库但由于安全性问题,需要不同的用户使用不同的名称和密码。   2、连接池实现   下面给出连接池类和连接池管理类的主要属性及所要实现的基本接口: public class DBConnectionPool implements TimerListener{ private int checkedOut;//已被分配出去的连接数 private ArrayList freeConnections = new ArrayList();//容器,空闲池,根据//创建时间顺序存放已创建但尚未分配出去的连接 private int minConn;//连接池里连接的最小数量 private int......余下全文>>

四:局域网基本工作原理

局域网并不同于外界通讯使用的TCP/IP协议体系,它是一种建立在传统以太网(Ethernet)结构上的网络分布,除了使用TCP/IP协议,它还涉及许多协议。

在局域网里,计算机要查找彼此并不是通过IP进行的,而是通过网卡MAC地址,它是一组在生产时就固化的唯一标识号,根据协议规范,当一台计算机要查找另一台计算机时,它必须把目标计算机的IP通过ARP协议(地址解析协议)在物理网络中广播出去,“广播”是一种让任意一台计算机都能收到数据的数据发送方式,计算机收到数据后就会判断这条信息是不是发给自己的,如果是,就会返回应答,在这里,它会返回自身地址。当源计算机收到有效的回应时,它就得知了目标计算机的MAC地址并把结果保存在系统的地址缓冲池里,下次传输数据时就不需要再次发送广播了,这个地址缓冲池会定时刷新重建,以免造成数据冗余现象。实际上,共享协议规定局域网内的每台启用了文件及打印机共享服务的计算机在启动的时候必须主动向所处网段广播自己的IP和对应的MAC地址,然后由某台计算机(通常是局域网内某个工作组里第一台启动的计算机)承担接收并保存这些数据的角色,这台计算机就被称为“浏览主控服务器”,它是工作组里极为重要的计算机,负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其他计算机和其他来访本工作组的计算机提供浏览服务,它的标识是含有\ \_MSBROWSE_名字段。这就是我们能在网络邻居看到其他计算机的来由,它实际上是一个浏览列表,用户可以使用“nbtstat -r”来查看在浏览主控服务器上声明了自己的NetBIOS名称列表。

浏览列表记录了整个局域网内开启的计算机的资源描述,当我们要访问另一台计算机的共享资源时,系统实际上是通过发送广播查询浏览主控服务器,然后由浏览主控服务器提供的浏览列表来“发现”目标计算机的共享资源的。

但是仅知道彼此的地址还不够,计算机之间必须建立一条连接的数据链路才能正常工作,这就需要另一个基本协议来进行了。NetBIOS(网络基本输入输出系统)协议是IBM开发的用于给局域网提供网络以及其他特殊功能的命令集,几乎每个局域网都必须在这种协议上面进行工作,NetBIOS相当于 Intranet上的TCP/IP协议。而后推出的NetBEUI协议(NetBIOS用户扩展接口协议)则是对前者进行了功能扩充,这几个协议都是组成局域网的基本必备,最后,为了建立连接,局域网还需要TCP/IP协议。

【定义】

为了完整地给出LAN的定义,必须使用两种方式:一种是功能性定义,另一种是技术性定义。前一种将LAN定义为一组台式计算机和其他设备,在物理地址上彼此相隔不远,以允许用户相互通信和共享诸如打印机和存储设备之类的计算资源的方式互连在一起的系统。这种定义适用于办公环境下的LAN、工厂和研究机构中使用的LAN。

就LAN的技术性定义而言,它定义为由特定类型的传输媒体(如电缆、光缆和无线媒体)和网络适配器(亦称为网卡)互连在一起的计算机,并受网络操作系统监控的网络系统。

功能性和技术性定义之间的差别是很明显的,功能性定义强调的是外界行为和服务;技术性定义强调的则是构成LAN所需的物质基础和构成的方法。

局域网(LAN)的名字本身就隐含了这种网络地理范围的局域性。由于较小的地理范围的局限性,LAN通常要比广域网(WAN)具有高得多的传输速率。例如,LAN的传输速率为10Mb/s,FDDI的传输速率为1......余下全文>>

五:‘缓冲内存’是什么意思?

它是处理器内部的一些缓冲存储器,其作用跟内存相同。缓存的出现使得CPU处理器的运行效率得到了大幅度的提升,缓存越大处理器效率就越高,同时因为缓存的物理结构比内存复杂很多,因此其成本也很高。

现在谁不必AMD的CPU呀,Intel的双核心无法算真正的双核。CPU频次越高就是处理速度越快,这只是说CPU的速度越快,你要提高这个电脑的速度要是要有与之匹配的主板,足够大的内存和缓存等等。

至于你只用来玩游戏看电影上网的换就没必要用双核心的,那是浪费金钱。玩3D游戏主要是显卡,CPU用64位的AMD2500就够了或者P4也行,有钱买个大的硬盘好点显卡,加个1G内存,没有什么游戏无法玩的。

六:请问DHCP的工作原理是什么?

整个过程:

1. DHCP请求IP地址的过程

l 发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCPDISCOVER包,只有DHCP服务器才会响应。

l 提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCPDISCOVER报文后,从IP地址池中选择一个尚未分配的IP地址分配给客户端,向该客户端发送包含租借的IP地址和其他配置信息的DHCPOFFER包。

l 选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发送DHCPOFFER包,客户端从中随机挑选,然后以广播形式向各DHCP服务器回应DHCPREQUEST包,宣告使用它挑中的DHCP服务器提供的地址,并正式请求该DHCP服务器分配地址。其它所有发送DHCPOFFER包的DHCP服务器接收到该数据包后,将释放已经OFFER(预分配)给客户端的IP地址。

如果发送给DHCP客户端的DHCPOFFER包中包含无效的配置参数,客户端会向服务器发送DHCPCLINE包拒绝接受已经分配的配置信息。

l 确认阶段,即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST包后,便向客户端发送包含它所提供的IP地址及其他配置信息的DHCPACK确认包。然后,DHCP客户端将接收并使用IP地址及其他TCP/IP配置参数。

2. DHCP客户端续租IP地址的过程

l DHCP服务器分配给客户端的动态IP地址通常有一定的租借期限,期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP租约。实际使用中,在IP地址租约期限达到一半时,DHCP客户端会自动向DHCP服务器发送DHCPREQUEST包,以完成IP租约的更新。如果此IP地址有效,则DHCP服务器回应DHCPACK包,通知DHCP客户端已经获得新IP租约。

如果DHCP客户端续租地址时发送的DHCPREQUEST包中的IP地址与DHCP服务器当前分配给它的IP地址(仍在租期内)不一致,DHCP服务器将发送DHCPNAK消息给DHCP客户端。

3. DHCP客户端释放IP地址的过程

l DHCP客户端已从DHCP服务器获得地址,并在租期内正常使用,如果该DHCP客户端不想再使用该地址,则需主动向DHCP服务器发送DHCPRELEASE包,以释放该地址,同时将其IP地址设为0.0.0.0。

这里来的是复制粘贴的,但是希望对你有帮助,如果有问题可以问我,我的电子邮箱是 hljf2004@gmail.com

七:java 中数据连接池的运行机制?

简单来说,首先要有一个集合,这个集合保存你所有的数据库连接,还要设置一些参数,比如说最大连接是多少,最少连接是多少,空闲时间等等,这个集合就是你的连接池了。

然后你所生成的连接你还要包装一下,实现connection接口,里面至少有两个属性,一个是你连接池类,另一个是你真正得到的connection,让这个连接包装后的close方法是根据连接池最大的连接判断是直接关闭连接,还是让你的连接回到集合中

以前做连接池原理培训的时候正好写了些代码,我给你贴个代码吧

public class MyPoolConnection extends MyConnection implements Connection {

private MyConPool2 pool;

public MyPoolConnection(MyConPool2 pool, Connection con) {

super(con);

this.pool = pool;

}

/*

* 覆盖了CLOSE方法,不是将数据库连接池中的连接直接关闭,解决了直接关闭的问题

*/

public void close() throws SQLException {

pool.releaseConnection(con);

}

}

当然,更好的做法是实现一个拦截器,然后拦截close方法,代码如下:

public class MyProxyCon implements InvocationHandler {

MyProxyPool pool;

Connection con;

public MyProxyCon(MyProxyPool pool) {

this.pool = pool;

}

/*

* 作用:把动态代理绑定到指定的Connection 返回值:动态代理后的Connection

*/

public Connection bind(Connection con) {

this.con = con;

Connection proxyCon = (Connection) Proxy.newProxyInstance(con

.getClass().getClassLoader(), con.getClass().getInterfaces(),

this);

return proxyCon;

}

/*

* 作用:方法调用拦截器 返回值:代理对象 判断当前方法是否为CLOSE,如果是的话,把有关的方法动态的调用给被代理的对象

*/

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {

Object obj = null;

if ("close".equals(method.getName())) {

pool.releaseConnection(con);

} else {

obj = method.invoke(con, args);

}

return obj;

}

}

// 代理模式的使用范围:为了保护某些对象,把相关的权限进行了检查,//

// 在合适以后把决定要调用的方法传给被代理的对象//

/......余下全文>>

八:NAT原理简介

nat网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。编辑本段网络地址转换(NAT)简介 NAT概述   NAT(Network Address Translation,网络地址转换)是将IP 数据报报头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用IP 地址空间的枯竭。[1]   说明:   私有 IP 地址是指内部网络或主机的IP 地址,公有IP 地址是指在因特网上全球唯一的IP 地址。   RFC 1918 为私有网络预留出了三个IP 地址块,如下:   A 类:10.0.0.0~10.255.255.255   B 类:172.16.0.0~172.31.255.255   C 类:192.168.0.0~192.168.255.255   上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用。 NAT技术的产生   虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。   随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求,于是也就产生了NAT技术。 NAT技术的作用   借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。   NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。 NAT技术实现方式   NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat 和端口多路复用OverLoad。   静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。   动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方......余下全文>>

扫一扫手机访问

发表评论