
给你一个例子自己看看吧,加深理解
我们知道Java中一般的输入输出流类都是用单字节的读取方法来进行I/O *** 作的,也就是说每次只读写一个字节的数据,这种方法显然繁琐低效。如果从设备读取10M的文件,每次读取一个字节,完成 *** 作将需要做10M/次I/O *** 作,I/O *** 作又是一件相当耗时的事情,无疑在很大程度上降低了系统的性能。
Java中专门提供提高I/O效率的缓冲类,这好比在数据读写时提供一个临时缓冲区,每次读取一个缓冲区大小的数据,将这数据库一次性写入目标设备。下图中分别为两种读取方式。
举个简单例子,在A地有10000本书需要搬到B地,如果一次搬1本,需要10000次。如果每次取1000本放到一个货车上,运到B地,需要10次完成。货车相当于是缓存区。同样道理,开设一个数据缓存区每次读取一数据块对于提高读取效率有显著提升。下面用一个具体代码示例来表示二者的性能差别。
Java代码
import javaioBufferedInputStream;
import javaioBufferedOutputStream;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
public class TestBuffer {
public static void main(String args[]) throws IOException {
String from = "f:/1MP3";
Systemoutprintln(from);
long startTime1 = SystemcurrentTimeMillis();
TestBufferreadWriteWithBuffer(from, "f:/2MP3");
long endTime1 = SystemcurrentTimeMillis();
Systemoutprintln("使用缓冲区读取耗时:" + (endTime1 - startTime1) +"ms");
long startTime = SystemcurrentTimeMillis();
TestBufferreadWrite(from,"f:/3MP3");
long endTime = SystemcurrentTimeMillis();
Systemoutprintln("直接读取耗时:" + (endTime - startTime) +"ms");
}
public static void readWrite(String from, String to) throws IOException {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(from);
out = new FileOutputStream(to);
while (true) {
int data = inread();
if (data == -1) {
break;
}
outwrite(data);
}
} finally {
if (in != null) {
inclose();
}
if (out != null) {
outclose();
}
}
}
/
使用缓存区读写文件
@param from
@param to
@throws IOException
/
public static void readWriteWithBuffer(String from, String to)
throws IOException {
InputStream inBuffer = null;
OutputStream outBuffer = null;
try {
inBuffer = new BufferedInputStream(new FileInputStream(from));
outBuffer = new BufferedOutputStream(new FileOutputStream(to));
while (true) {
int data = inBufferread();
if (data == -1) {
break;
}
outBufferwrite(data);
}
} finally {
if (inBuffer != null) {
inBufferclose();
}
if (outBuffer != null) {
outBufferclose();
}
}
}
}
运行例子时会根据mp3文件的大小决定运行时间的长短,尽量使用小一点的mp3文件,运行时需耐心等待一段时间
(一)系统数据库类型
数据库是整个农用地分等信息系统的基础,是系统开发设计要考虑的重中之重。在数据形式上,系统数据库包括两大块:一是空间数据库,二是属性数据库。目前的空间数据技术已从以MapInfo为代表的混合型数据库(空间数据库+关系型数据库)发展到以ArcInfo的Coverage为代表的拓展型数据库。鉴于农用地分等属性数据量庞大,为减少数据冗余,提高数据检索的速度,本研究采用空间数据和属性数据分开管理的模式,依据关键字段进行绑定,进行科学索引,从而实现空间数据和属性动态链接和高效整合。
1空间数据库
江苏省农用地分等信息系统空间数据库内容包括以下方面:
(1)土地利用现状图层:全省13个省辖市以1996年土地利用现状图为基础,经变更调绘形成以2000年为基准年的土地利用现状图,以现行的土地分类标准按八大类分类进行信息提取并分层存储,系统分别存储为耕地、林地、水域、未利用地、建设用地等图层。
(2)全省土壤类型图层:以土属为分类单位,比例尺为1:20万。
(3)1996年和2000年全省行政区划图层:在行政区划中精确到乡镇级别,分别提取存储了市名图层、县(区)名图层、乡(镇)名图层、全省行政界线图层、市级行政界线图层、县(区)级行政界线图层、乡(镇)级行政界线图层。
(4)评价单元图层:通过GIS空间叠加功能,利用土地利用现状图、行政区划图和土壤类型图叠加产生的评价单元图层,建立分等评价单元数据库。
2属性数据库
江苏省农用地分等信息系统属性数据库内容包括以下方面:
(1)土壤属性数据:以全国第二次土壤普查为基础,结合全省土壤监测样点数据,建立土壤质量状况数据库,最小单位为土种,包括pH值、有机质含量、表层土壤质地、耕层厚度、障碍层深度、水土侵蚀程度、盐渍化程度数据。
(2)农田水利环境数据:建立了1996~2000年间各乡镇农田水利环境基础数据库,包括灌溉保证率、排水条件数据。
(3)土地利用现状数据:建立了全省13个省辖市的以1996年土地利用现状图为基础,经变更调绘形成的以2000年为基准年的土地利用现状数据库,区分耕地中的详细用地类型差异,标示水田、旱地、荒草地等纳入本次评价范围的用地内容。
(4)全省地形地貌数据库。
(5)农业区划数据:输入了江苏省农业区划数据,把江苏全省划分为6大区划,以乡镇为最小级别,建立全省乡镇的区划归属数据库。
(6)农业耕作制度数据:建立了全省各市、县、乡镇的农业耕作制度数据库,包括指定作物水稻和小麦的播种空间分布状况数据库。
(7)光温生产潜力数据:建立了全省各市、县指定作物水稻和小麦的光温生产潜力和气候生产潜力数据库。
(8)农业投入-产出数据:全省13个省辖市以乡镇为单位,建立了1996~2000年农业生产投入-产出数据库。
(9)作物产量数据:全省13个省辖市以乡镇为单位,建立了1996~2000年的指定作物水稻和小麦的产量数据库。
(10)土地利用详查分类面积数据:全省13个省辖市以乡镇为单位,建立了2000年土地利用详查分类面积数据库。
从数据格式上分,数据库又可分为:①图件数据库:指空间数据以及绑定在空间数据上的相关属性数据,本次江苏省农用地分等建立了以分等单元为记录的属性数据库,并通过关键字段与空间数据关联;②分类统计数据库:包括全省13个省辖市以乡镇为单位的1996~2000年指定作物产量统计数据和全省13个省辖市以乡镇为单位的2000年土地利用详查分类面积统计数据。
(二)系统数据库管理模式
为减少数据存储冗余,同时提高索引速度,江苏省农用地分等信息系统数据文件采用普遍的目录树形式进行管理,按省-市-县行政体系分别存储相关数据。全省建立13个省辖市分目录,分目录下按照各自所含的县(区)建立子目录。根据目前行政管理体系现状,基础资料大多来源于县级行政单位,因此采用县(区)为基本行政单位较为合理,在保证资料来源的同时,也利于资料的分类归档存储。其相对应的空间图件数据也按精度要求分割到县级行政单位,既能减少系统调用数据的吞吐量,同时也满足了系统的精度需求。空间数据、属性数据、文本数据按照各自所属的行政级别归类存储,同时设立数据文件管理器进行目录文件的索引管理,见图3-86。
图3-86 江苏省农用地分等信息系统数据文件管理模式图
(三)系统数据库结构
数据库的结构设计决定了数据之间的调用及接口关系,清晰的逻辑调用关系和统一的数据接口格式有利于数据的组织、管理、调用。
1空间数据库
江苏省农用地分等信息系统空间数据库以矢量图件的形式存在,以分图层的方式管理,包括了全省行政界线、土壤类型、按八大类分别提取的土地利用现状、分等单元等图层。其中,分等单元图层作为农用地分等的基础,考虑到图层本身信息量大,可能影响到系统运行效率,因此所在图层的属性表中只保留了ID字段,通过ID字段与外部属性库绑定,实现分等单元与外部属性库一一对应关系。ID字段是本图层的特征代码,表征了单元的唯一性,能体现出单元的图上位置和行政归属。《农用地分等定级规程》(国土资源大调查专用)和《中华人民共和国行政区划代码》(GB/T 2260-1999)为本研究分等单元代码的编码依据;本研究有1996年和2000年两套行政区划工作底图,为此分等单元特征代码共设14位,依次为江苏省代码(2位)-市代码(2位)-2000年县或区代码(2位)-2000年乡镇代码(2位)-1996年县或区代码(2位)-1996年乡镇代码(2位)-分等单元号(2位)。其中,省、市、县(区)的行政代码按国家统一代码,乡镇级代码在县(区)范围内根据划分分等单元的需要依次编码;分等单元编号的原则是不破乡镇界,即单元号是在同一乡镇内部自行编码。示例:32011501210101,指1996年江苏(32)南京(01)市江宁县(21)由于2000年行政调整变更为南京(01)的江宁区(15)。按行政体系分级编码的优点是有利于空间查询和国土资源管理部门根据工作需求按行政级别分类汇总统计数据。
2属性数据库
江苏省农用地分等信息系统采用关系型数据库来存储数据,优点是结构清晰明了,数据的更新维护方便,通过索引能优化数据库,建立快速的查询浏览(表3-26~表3-30)。
表3-26 行政代码数据结构表
表3-27 土壤属性数据结构表
表3-28 农田水利设施数据结构表
表329 指定农作物投入-产出数据结构表
表3-30 农业耕作制度及农业区划表
(四)系统模型库
系统以《农用地分等定级规程》(国土资源大调查专用)中的相关技术方法和计算模型为基础,在模型库中预先内置了分等计算模型。模型库是动态,它允许专家根据情况动态调整计算模型形式及其参数。系统主要模型的数学计算公式如下:
(1)农用地自然质量分值(Clij)计算公式见式(3-11)。
(2)样点土地利用系数计算公式:
中国耕地质量等级调查与评定(江苏卷)
式中:
Klj´——样点的第j种指定作物土地利用系数;
Yj——样点的第j种指定作物实际单产;
Yj,max——第j种指定作物最大标准粮单产。
(3)等值区土地利用系数计算公式:
中国耕地质量等级调查与评定(江苏卷)
式中:
Klj——等值区内第j种指定作物土地利用系数;
Klj´——参与计算的同一等值区内合格样点第j种指定作物土地利用系数;
n——排除异常数据后参与计算的样点的个数。
(4)样点土地经济系数计算公式:
中国耕地质量等级调查与评定(江苏卷)
式中:
Kcj′——样点的第j种指定作物土地经济系数;
Yj——样点第j种指定作物实际单产;
Cj——样点第j种指定作物实际成本;
Aj——第j种指定作物最高“产量-成本”指数。
(5)等值区土地经济系数计算公式:
中国耕地质量等级调查与评定(江苏卷)
式中:
Kcj——等值区内土地经济系数;
Kcj´——参与计算的同一等值区内合格样点第j种指定作物土地经济系数;
n——排除异常数据后参与计算的样点的个数。
(6)农用地自然质量等指数(Ri)计算公式见式(3-12)和式(3-13)。
(7)农用地利用等指数(Yi)计算公式见式(3-14)和式(3-15)。
(8)农用地经济等指数(Gi)计算公式见式(3-16)和式(3-17)。
为了提高服务器安全性 最有效的一个方法就是升级到 SQL Server Service Pack a (SP a) 要下载 SP a 请访问SQL Server SP a 页面 另外 您还应该安装所有已发布的安全更新 要订阅新安全更新的通知 请访问产品安全通知页面 使用 Microsoft 基线安全性分析器(MBSA)来评估服务器的安全性 MBSA 是一个扫描多种 Microsoft 产品的不安全配置的工具 包括 SQL Server 和 Microsoft SQL Server Desktop Engine (MSDE ) 它可以在本地运行 也可以通过网络运行 该工具针对下面问题对 SQL Server 安装进行检测 过多的sysadmin固定服务器角色成员 授予sysadmin以外的其他角色创建 CmdExec 作业的权利 空的或简单的密码 脆弱的身份验证模式 授予管理员组过多的权利 SQL Server数据目录中不正确的访问控制表(ACL) 安装文件中使用纯文本的sa密码 授予guest帐户过多的权利 在同时是域控制器的系统中运行SQL Server 所有人(Everyone)组的不正确配置 提供对特定注册表键的访问 SQL Server 服务帐户的不正确配置 没有安装必要的服务包和安全更新 Microsoft 提供 MBSA 的免费下载 要了解 MBSA 的全部文档和最新版本 请访问MBSA 页面 使用 Windows 身份验证模式 在任何可能的时候 您都应该对指向 SQL Server 的连接要求 Windows 身份验证模式 它通过限制对Microsoft Windows®用户和域用户帐户的连接 保护 SQL Server 免受大部分 Internet 的工具的侵害 而且 您的服务器也将从 Windows 安全增强机制中获益 例如更强的身份验证协议以及强制的密码复杂性和过期时间 另外 凭证委派(在多台服务器间桥接凭证的能力)也只能在 Windows 身份验证模式中使用 在客户端 Windows 身份验证模式不再需要存储密码 存储密码是使用标准 SQL Server 登录的应用程序的主要漏洞之一 要在 SQL Server 的 Enterprise Manager 安装 Windows 身份验证模式 请按下列步骤 *** 作 展开服务器组 右键点击服务器 然后点击属性 在安全性选项卡的身份验证中 点击仅限 Windows 详细信息 请参阅 SQL Server Books Online 或 MSDN中的 身份验证模式 隔离您的服务器 并定期备份 物理和逻辑上的隔离组成 了SQL Server 安全性的基础 驻留数据库的机器应该处于一个从物理形式上受到保护的地方 最好是一个上锁的机房 配备有洪水检测以及火灾检测/消防系统 数据库应该安装在企业内部网的安全区域中 不要直接连接到 Internet 定期备份所有数据 并将副本保存在安全的站点外地点 有关备份过程和其他 *** 作性最佳实践的指南 请参阅SQL Server *** 作指南 分配一个强健的sa密码 sa帐户应该总拥有一个强健的密码 即使在配置为要求 Windows 身份验证的服务器上也该如此 这将保证在以后服务器被重新配置为混合模式身份验证时 不会出现空白或脆弱的sa 要分配sa密码 请按下列步骤 *** 作 展开服务器组 然后展开服务器 展开安全性 然后点击登录 在细节窗格中 右键点击SA 然后点击属性 在密码方框中 输入新的密码 详细信息 请参阅 SQL Server Books Online 或 MSDN中的 系统管理员(sa)登录 主题 限制 SQL Server服务的权限 SQL Server 和 SQL Server Agent 是作为 Windows 服务运行的 每个服务必须与一个 Windows 帐户相关联 并从这个帐户中衍生出安全性上下文 SQL Server允许sa 登录的用户(有时也包括其他用户)来访问 *** 作系统特性 这些 *** 作系统调用是由拥有服务器进程的帐户的安全性上下文来创建的 如果服务器被攻破了 那么这些 *** 作系统调用可能被利用来向其他资源进行攻击 只要所拥有的过程(SQL Server服务帐户)可以对其进行访问 因此 为 SQL Server 服务仅授予必要的权限是十分重要的 我们推荐您采用下列设置 SQL Server Engine/MSSQLServer如果拥有指定实例 那么它们应该被命名为MSSQL$InstanceName 作为具有一般用户权限的 Windows 域用户帐户运行 不要作为本地系统 本地管理员或域管理员帐户来运行 SQL Server Agent Service/SQLServerAgent如果您的环境中不需要 请禁用该服务 否则请作为具有一般用户权限的Windows域用户帐户运行 不要作为本地系统 本地管理员或域管理员帐户来运行 重点 如果下列条件之一成立 那么 SQL Server Agent 将需要本地 Windows管理员权限 SQL Server Agent 使用标准的 SQL Server 身份验证连接到SQL Server(不推荐) SQL Server Agent 使用多服务器管理主服务器(MSX)帐户 而该帐户使用标准 SQL Server 身份验证进行连接 SQL Server Agent 运行非sysadmin固定服务器角色成员所拥有的 Microsoft ActiveX®脚本或 CmdExec 作业 如果您需要更改与 SQL Serve r服务相关联的帐户 请使用 SQL Server Enterprise Manager Enterprise Manager 将为 SQL Server 所使用的文件和注册表键设置合适的权限 不要使用 Microsoft 管理控制台的 服务 (在控制面板中)来更改这些帐户 因为这样需要手动地调制大量的注册表键和NTFS文件系统权限以及Micorsoft Windows用户权限 详细信息 请参阅 Microsoft 知识库文章不使用 SQL Server 中的 Enterprise Manager 来更改 SQL Server 服务帐户 帐户信息的更改将在下一次服务启动时生效 如果您需要更改与 SQL Server 以及 SQL Server Agent 相关联的帐户 那么您必须使用 Enterprise Manager 分别对两个服务进行更改 在防火墙上禁用 SQL Server 端口 SQL Server 的默认安装将监视 TCP 端口 以及UDP端口 配置您的防火墙来过滤掉到达这些端口的数据包 而且 还应该在防火墙上阻止与指定实例相关联的其他端口 使用最安全的文件系统 NTFS 是最适合安装 SQL Server 的文件系统 它比 FAT 文件系统更稳定且更容易恢复 而且它还包括一些安全选项 例如文件和目录 ACL 以及文件加密(EFS) 在安装过程中 如果侦测到 NTFS SQL Server 将在注册表键和文件上设置合适的 ACL 不应该去更改这些权限 通过 EFS 数据库文件将在运行 SQL Server 的帐户身份下进行加密 只有这个帐户才能解密这些文件 如果您需要更改运行 SQL Server 的帐户 那么您必须首先在旧帐户下解密这些文件 然后在新帐户下重新进行加密 删除或保护旧的安装文件 SQL Server 安装文件可能包含由纯文本或简单加密的凭证和其他在安装过程中记录的敏感配置信息 这些日志文件的保存位置取决于所安装的SQL Server版本 在 SQL Server 中 下列文件可能受到影响 默认安装时 :\Program Files\Microsoft SQL Server\MSSQL\Install文件夹中 以及指定实例的 :\Program Files\Microsoft SQL Server\ MSSQL$ \Install文件夹中的sqlstp log sqlsp log和setup iss如果当前的系统是从 SQL Server 安装升级而来的 那么还应该检查下列文件 %Windir% 文件夹中的setup iss以及Windows Temp文件夹中的sqlsp log Microsoft发布了一个免费的实用工具 Killpwd 它将从您的系统中找到并删除这些密码 要更多地了解这个免费下载 请参阅 Microsoft 知识库文章服务包安装可能在文件中保存标准安全密码 审核指向 SQL Server 的连接 SQL Server 可以记录事件信息 用于系统管理员的审查 至少您应该记录失败的 SQL Server 连接尝试 并定期地查看这个日志 在可能的情况下 不要将这些日志和数据文件保存在同一个硬盘上 要在 SQL Server 的 Enterprise Manager 中审核失败连接 请按下列步骤 *** 作 展开服务器组 右键点击服务器 然后点击属性 在安全性选项卡的审核等级中 点击失败 要使这个设置生效 您必须停止并重新启动服务器 详细信息 请参阅 Microsoft TechNet 中的 SQL Server 审核 以及SQL Server Books Online或MSDN中的 使用审核日志 lishixinzhi/Article/program/SQLServer/201311/22139
域名通过是指通过什么
如果是刚注册通过的域名,需要解析到服务器后才能访问。
如果是网站已经搭建起来,通过搜索引擎搜索,不一定马上能展现,因为搜索引擎收录需要时间,你可以主动提交你的域名给搜索引擎。以百度为例,直接搜索你的域名,如没有展示相关网页结果,说明未收录,可以通过主动提交域名给百度即可,如下图,点提交。
区别:
1、存储方式不同
memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
2、数据支持类型不同
redis在数据支持上要比memecache多的多。
3、使用底层模型不同
新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4、运行环境不同
redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上。
扩展资料
注意事项
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如、视频等等。
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘 。
4、过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10 。
5、分布式–设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一,存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化) 。
参考资料:
以上就是关于关于java的io读写,缓冲区是如何提高读写效率的全部的内容,包括:关于java的io读写,缓冲区是如何提高读写效率的、系统数据库和模型库设计、有效帮助保护 SQL Server 2000 的十个步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)