访问的方法与技巧

2024-09-10

访问的方法与技巧(精选9篇)

访问的方法与技巧 篇1

0 引言

会员制是当前很多企业所采用的主流营销策略之一。随着网络的普及,基于B/S架构的信息管理系统将成为各企业今后进行信息化平台开发时理想的架构选择。

笔者在参与靖江工人国际影城的信息化平台建设过程中,将会员管理系统规划成一个B/S架构的网站,在VS2005开发平台上使用C#编程语言进行开发;会员卡则选择了S50型的M1卡,该卡属于非接触式、可读写的IC卡。介绍在这样的开发环境下,工作在客户端的浏览器对本地IC读卡器访问的技术实现。

1 访问技术

配合所采用的IC卡,选择由深圳德卡科技有限公司出品的D3型读卡器。B/S架构的应用程序是不能通过客户端浏览器来直接控制客户端硬件设备的,简单的办法是借助ActiveX插件来完成(这个插件在读卡器的随机光盘中可以找到,只需在客户端注册一下即可)。

1.1 使用“类+ActiveX插件”的方案

ASP.Net平台下开发首选采用面向对象的方法来实现,所以根据随机光盘中的Demo,首先设计了一个名为ClsReadICCard的类,在类内实现对读卡器的密码验证、读、写和鸣叫等功能,然后在相应的页面内通过调用该类来实现业务逻辑的处理。

1.2 使用“JScript+ActiveX插件”的方案

JScript脚本语言是微软开发的,它与JavaScrip语法非常类似,VS2005开发环境中支持JScript脚本程序的开发。在VS2005中添加一个基于“JScript文件”模板的文件,根据帮助文档和Demo完成几个通过读卡器对IC卡进行读写的函数,然后在相应页面内包含该文件,并调用相关函数实现业务逻辑的处理。

1.3 方案的选择

通过调试和论证,第一种方案无法实现对客户端读卡器的访问,它访问的只是安装在Web服务器上的读卡器,因为类代码在.Net平台下,经过编译后变成了动态连接库文件,这个代码只能在服务器段运行,而不是由浏览器来解释,所以不能达到预想的要求。第二种方案中使用的是JScript脚本语言,这种语言与JavaScript类似,是一种客户端的脚本语言,代码首先被下载到客户端,然后由浏览器来负责解释执行,所以最终访问的是安装在客户端的读卡器。

2 JScript脚本的设计

借助读卡器完成对IC卡访问的过程分4步:初始化读卡器、初始化卡信息、读写IC卡、关闭设备。

以写卡为例,在JScript文件中编写一个名为WriteInfo的函数,该函数的具体功能是实现将页面上的会员类型和会员号写入IC卡,流程如图1所示。

参考帮助文档中的驱动程序函数说明,结合流程图和IC卡的设计,完成WriteInfo函数,核心代码和注释为(代码中忽略了部分异常判断):图1写卡流程

其他功能函数用类似的方法完成设计。代码中的rd是在页面上通过object标记引用ActiveX组件而定义的读卡器对象,具体定义的HTML代码为:

3 功能页面的设计

3.1 页面设计

以对WriteInfo函数的调用为例,此函数在制作会员卡功能页面中被调用,该页面的运行效果如图2所示。

该页面内,在选择好会员类型、输入会员号后,点击“制卡”按钮即可实现将指定信息写入IC卡的功能,写入后同时读出卡内信息,分析显示的业务逻辑处理。

根据页面的运行效果,在页面上布局各个控件,并对控件进行命名,其中“制卡”按钮的名称为CmdSave,该控件是VS2005工具箱中的标准按钮控件;右下角的控件是一个名为ReturnData的HTML输入对象,该控件实际运行时是隐藏的,JScript中所有产生的信息均存放在该控件内,图中显示的是读出的当前IC卡信息,信息格式为“会员类型:会员号,IC卡的ID编号”。

3.2 脚本的调用

点击“制卡”按钮后实现了两个过程:将指定信息写入IC卡并读出;分析显示读出的卡内信息,操作员可以对这个信息进行校对。第一个过程所涉及到的代码均在JScript脚本文件内,主要调用WriteInfo函数,而第二个过程则是处理返回数据,该代码用C#编程语言编写。

ASP.Net平台中的标准按钮Button支持两个事件:OnClientClick和OnClick。其中OnClientClick是客户端的事件方法,可以实现对JScript函数的调用;OnClick是服务器端的事件方法,可以实现用C#语言、面向对象的方法来完成对业务逻辑的处理。在ASP.Net的事件触发机制中,OnClientClick事件比OnClick事件优先触发,这样就可以实现先写、读卡后分析数据的业务处理顺序要求。

对于在页面上的命令按钮,需要将两个事件绑定到该控件上。首先,在VS2005开发环境的属性窗口的事件列表中双击“Click”事件,即可完成OnClick事件的绑定,切换到HTML源代码视图,对应的代码为:

将OnClientClick事件绑定到按钮上的方法有两种:直接在asp:Button对象中添加属性“OnClientClick=‘WriteInfo()’”;采用代码进行绑定,具体是在页面的Page_Load事件中添加语句“this.CmdSave.Attributes.Add(‘onclick’,‘WriteInfo();’);”。

3.3 业务逻辑处理代码的编写

读写IC卡的代码已在JScript脚本中实现,而对于业务逻辑代码的编写,在这个页面中主要是将页面上名为ReturnData控件里的卡内信息分解后显示,具体显示位置在该页面的下半部分。

参考文献

[1]布拉德利.C#.NET程序设计[M].北京:清华大学出版社,2005

[2]麦克唐纳,兹普兹塔.ASP.NET高级程序设计(第3版)[M].北京:人民邮电出版社,2009

[3]凌琳,段斌,侯平,等.基于Web的信息系统中客户端读卡器应用设计[J].电脑与信息技术,2001,(3):50-52

访问的方法与技巧 篇2

一、VB访问数据库的原则

总则:具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案

*代码的重用和运行的效率

例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO

*实现的简便性,易维护性

如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易

*安全性原则

报这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。

二、VB访问数据库的方法

VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。

数据访问接口功能及含义:

ADC:高级数据连接器(AdvancedDataConnector):提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLEDB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。

ADO:Active数据对象(ActiveDataObjects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Aclearcase/“ target=”_blank“ >ccess等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。

DAO:数据访问对象(DataAccessObjects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。

DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。

JET:数据连接性引擎技术(JointEngineTechnology):是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。

0DBC:开放式的数据库连接(OpenDatabaseConnectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。

ODBCDirect:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。

OLEDB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLEDB不能被VB直接调用。

RDC:远程数据访问控件(RemoteDataControl):是一种对RDO数据绑定的控件,

可以输出特定的结果集到数据源控件。

RDO:远程数据对象(RemoteDataObjects):远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBCAPI的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。

VBSQL:是VisualBasic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-LibraryAPI相同。VBSQL只支持微软的SQLServer。VBSQL快而且轻但不支持对象界面。

使用RDO的一般方法如下:

先声明变量:

PublicconAsrdoConnection,resAsrdoResultset

然后初始化rdoEngine,设置用户和口令等缺省参数;WithrdoEngine

.rdoDefaultUser=”sa“注释:用户为sa

.rdoDefaultPassword=”pass“注释:口令为pass

.rdoDefaultCursorDriver=rdUseServer

.rdoDefaultLoginTimeout=15

EndWith

再连接到要访问的远程数据库(可使用DSNConnection和DSN-LessConnection)。

使用DSNConnection举例(连接服务器SERVER上的数据库hotel):

Setcon=rdoEnvironments(0).OpenConnection

(”hotel“,rdDriverNoPrompt,False)

使用DSN-LessConnection举例(连接服务器SERVER上的数据库hotel):

Setcon=rdoEnvironments(0).OpenConnection

(”“,rdDriverNoPrompt,False,_”driver={SQLServer};server=SERVER;database=hotel“)

建立连接后,既可使用OpenResultset方法执行查询并处理结果集,又可使用Execute方法执行包括数据定义和数据操作在内的动作查询。例如:

Setres=con.OpenResultset(”SELECT*FROMmenu“,rdOpenStatic)

con.Execute”CREATEVIEWmenu_viewASSELECT代码,菜名FROMmenu“,rdExecDirect

RDO最强大和最重要的特性之一是:它可以查询和处理由存储过程返回的结果,无论它有多么复杂。除RDO外,还可使用RDC访问远程数据库。

远程数据控件(RDC)与数据控件(DC)类似,不同之处是RDC使用RDO连接到ODBC驱动程序管理器,而DC则使用DAO连接到Jet数据库引擎。利用RDO和RDC,无需使用Jet引擎就可以访问ODBC数据源。这样,在访问远程数据库时,可以获得更好的性能和更大的灵活性。

远程数据控件MSRDC使用举例如下:

Connect:driver={SQLServer};server=SERVER;database=hotel

DataSourceName:

SQL:SELECT*FROMmenu

UserName:sa

Password:pass

CursorDriver:3-rdUseClient

可以使用RDC执行许多简单的远程数据访问操作,不需编写任何代码,只要填写有关项就可以了,使用起来很方便。但应注意,除非在设计时禁止并只在需要时启动RDC,否则它至少将消耗一个远程数据库连接。在远程数据库连接资源有限或要求很高效的情况下,宜慎用、少用RDC。这种情况下,应尽可能考虑使用RDO,并使用存储过程(预编译好的SQL语句)。

最后还应注意,只有32位操作系统(如WindowsNT或Windows95),才能支持RDO和RDC。RDO和RDC也只能用于访问32位ODBC数据源。

并行计算的内存访问方法 篇3

本发明主要涉及到计算机技术层面的内容, 尤其针对多线程的PDF格式文件操作中的内存访问控制, 同时由此引申到多线程并行计算时的内存访问有效策略及如何更好提高运行效率的方式, 下面就该发明的技术背景及发明内容做详细的介绍。

当前图书、图片、文件等实体资源的数字化, 通常是采用扫描——识别——提取的方式。先将文档扫描为PDF格式, 再进行文档模块和文字的识别, 之后提取识别后的信息, 供编档和供给搜索引擎以供建立索引。由于现有技术的限制, 在对大量文档处理过程中存在占据大量系统资源的问题, 导致处理速度减慢, 当前的多核处理器技术逐步成熟, 首选方式是在多个CPU上同时实现多线程的运行。但现实操作中仍存在提速有限且CPU未能完全利用的问题, 为此发明人结合业内多年工作经验及实验操作分析和研究该问题的成因, 发现要归因在内存操作中其分配和释放需要县城保护, 并且全部线程共享同个内存池, 这类因素导致访问需要等待, CPU效用率低, PDF的频繁操作会使得大量出现线程等待。

为了改善内存访问, 本领域技术人员提出了多种方法。例如, 专利授权公告号:CN100487660C, 名为“一种多线程处理器动态内存管理系统及方法”的中国发明专利公开了一种多线程处理器动态内存管理方法, 该方法在一定程度上解决了内核线程的内存释放问题, 能够避免某一时刻某一空闲的内核线程占用过多的空闲内存。由主控内核线程取代硬件仲裁器, 利用消息机制, 提高了内存在各个内核线程间的分配使用效率。但是该方法却无法解决共享一个内存池的多个线程均请求较大内存空间而必须排队等候的问题。并且应用此方法, 要改变内存管理代码, 并不适合代码的直接移植。

2 本发明具体内容阐述

(1) 本发明目的在于针对多个线程调用同一个执行模块时, 由于必须共享同一内存池, 且该内存池无法提供足够资源而导致内存访问等待时间过长的问题, 提供一种新的内存访问策略, 以缩短甚或消除并行计算时的内存访问等待时间, 使单个线程能够拥有独立的内存池。能在不改变或很少改变模块代码特别是完全不改变内存管理的情况下, 将单线程代码, 简单移植到多线程环境中。并让多核多线程的优势得到充分发挥。

(2) 本发明的并行计算的内存访问方法, 用于存在调用同一原始执行模块的n≥2个并行线程的情况, 其特征在于, 包括以下步骤:

S1) 根据线程数n确定需创建的映像执行模块的个数k, n-1≥k≥1;

S2) 确定该n个线程与原始执行模块及k个映像执行模块之间的映射策略F;

S3) 创建k个映像执行模块, 并为其分配各自私有的内存池;

S4) 执行所述并行的n个线程, 令各个线程按照所述映射策略F调用执行模块, 每个执行模块访问且仅访问其私有的内存池;

S5) 线程运行完成后删除创建的映像执行模块, 释放资源。

其中, 所述映像执行模块的个数为k可以是随时间变化的。或者, 所述映像执行模块的个数k在线程执行期间也可是固定不变的。较佳地, 可根据同一时间调用同一执行模块的线程个数的统计值来确定映像执行模块的数量。

根据本发明的一实施例, 所述映像执行模块的个数k为1个。根据本发明的另一实施例, 所述映像执行模块的个数k为n-1个。其中, 当所述映像执行模块的个数k为n-1个时, 所述映射策略F可为:每个线程分别调用一个不同的执行模块, 线程与执行模块是一一对应的。根据本发明的再一实施例, 所述映射策略F可为静态策略, 一个线程仅指向一个被它调用的执行模块, 而一个执行模块被一个或一个以上的线程调用。较佳地, 所述映射策略F为将调用执行模块频繁的线程, 配置为独享一个执行模块, 将相对调用执行模块频率较低的线程, 配置为共享执行模块。根据本发明的又一实施例, 所述映射策略F为动态策略的“多窗口排队”机制, 该策略F中, 为每个执行模块定义“空闲”、“繁忙”两个状态, 将所有的空闲执行模块排队需要调用执行模块的线程从空闲执行模块队列中择一调用, 若没有空闲的则等待;在线程对执行模块的调用进行中将该执行模块标记为繁忙, 执行完毕后, 线程释放该执行模块, 将其标记为空闲。

应用本发明的方法可令并行计算的效率随核心数增加而呈线性增长, 而不受内存访问瓶颈的限制。对各种操作系统均可适用。并且使用静态方式时, 甚至无需增加代码, 即可将单线程的程序直接移植到多线程环境。而灵活的动态方式和动态映射策略, 则可使本发明在占用不是那么多的系统资源的情况下显著提高效率, 事半功倍。

(3) 本发明目的在于, 在不改变操作系统的内存管理的前提下, 改变内存访问方式。为对便于对本发明进行更好的理解, 首先对一般的内存管理方式进行说明。内存管理的特点之一是执行模块是隔离的, 每一个执行模块被分配独立的内存池空间。其中, 执行模块可视为是系统在内存中建立的一个个数据结构, 用于管理运行时加载到内存中的程序代码, 数据以及资源。每个执行模块作为一个系统资源的分配单位, 享有其独自的内存池, 执行模块中的多个函数将共享该执行模块的内存池。所述执行模块可以是运行后被加载到进程中的一个windows下的.exe程序或一个动态链接库 (dll) 等。同一个执行模块, 不论多少个线程在调用, 只会被加载一次, 由同一个进程开启的所有线程, 对于同一执行模块, 它的内存池是共享的。依照操作系统类型的不同, 执行模块还可有其它形式。按照本领域技术人员的公知, 不同的操作系统的内存管理模式会有区别, 但是均会存在这样一种特定的单元, 其由一些数据和代码的集合构成, 表现为程序、函数等形式, 并且对该种代码组合操作系统会分配私有的 (private) 内存空间 (包括逻辑的或物理的) 以供其访问。因此, 在本发明中, 执行模块也可理解为在给定操作系统下, 依据该操作系统的默认内存管理方式而为其分配单独的内存池的一组代码和数据的集合。

专利名称:并行计算的内存访问方法

专利号:ZL 2010 1 0140502.6

申请日:2010.04.07公开日:2013.04.17

申请人:福州福昕软件开发有限公司林芝

摘要:本发明是一种有关计算机并行计算的内存访问的方法, 用于存在调用同一原始执行模块的n≥2个并行线程的情况, 包括以下步骤:S1) 根据线程数n确定需创建的映像执行模块的个数k, n-1≥k≥1;S2) 确定该n个线程与原始执行模块及k个映像执行模块之间的映射策略F;S3) 创建k个映像执行模块, 并为其分配各自私有的内存池;S4) 执行所述并行的n个线程, 令各个线程按照所述映射策略F调用执行模块, 每个执行模块访问且仅访问其私有的内存池;S5) 线程运行完成后删除创建的映像执行模块, 释放资源。本发明可令并行计算的效率随核心数增加而呈线性增长, 而不受内存访问瓶颈的限制。各种操作系统通用, 且便于将单线程的程序直接移植到多线程环境。

双网卡绑定提高访问速度网络技巧 篇4

利用NICExpress将两块网卡绑定起来,它可以将任意品牌、任意型号的网卡绑定在一起使用。这样就可以解决我们网络访问单块网卡压力过大的难题。

一、准备工作

准备工作很简单,就是将两块或多块网卡安装到服务器,并安装好驱动程序即可。一般来说可以根据网络负载程度选择绑定网卡的数量不宜过多,一般以绑定2-5块为宜,再说绑定那么多,你的主板也没有多余的PCI插糟可供使用啊。另外为了使绑定后的网卡工作稳定、性能得以发挥,建议尽量使用同一品牌、同一型号的网卡(快知道:有线网卡与无线网卡能否共存)。

二、安装设置

首先执行安装程序,待安装向导提示“Setup Type”时,选择“Enabled”,这样做的目的是启用网络负载平衡,当数据流量比较大时,该软件就会自动进行分流,使绑定的每块网卡都担当一定的任务,而不是把重任压在某一块网卡的身上(快知道:集成网卡的难题?)。

小提示:如果是Windwos XP,那么在接下来的安装向导中可能会出现硬件无法通过兼容性测试,这里只要点击“仍然继续”按钮即可继续。

根据安装向导的操作,待文件复制完毕即会进入绑定网卡设置窗口,可以看到窗口上方是计算机上已经安装的网卡,中间是设置组的名称,可以直接输入。现在我们要做的就是在上方已经安装好的网卡列表中选中要绑定抽多卡,单击“Add”按钮,将其添加到“Assigned Adapters”框中去,被添加的网卡就是被绑定的网卡(如图1),添加好之后单击“OK”按钮,稍候片刻还会弹出一个参数设置窗口,在这里我们建议使用程序的默认参数即可(快知道:安装双网卡的驱动)。

图1三、应用设置

现在我们绑定的网卡即可在工作了,

打开“网上邻居”的属性窗口,我们可以看到在原来物理网卡的基础上又多功能出一块虚拟的网卡(如图2)。右击该网卡,选择“属性”命令打开网卡的设置窗口,我们可以看到在已安装的组件中多出一个“NIC Express Transport for Ethernet”,选中该项并单击“属性”按钮即可打开网卡绑定窗口,在这里我们可以增加其它绑定的网卡,也可以将绑定的网卡删除;如果打开“Internet协议(TCP/IP)”的属性窗口,那么还可以像普通网卡一样设置该虚拟网卡的IP地址等参数(快知道:局域网出现IP冲突解决办法)。

图2

小提示:如果被绑定的网卡在绑定之前已经设置了IP地址,那么在绑定过程中程序会提示是否使用已经设置的IP地址。另外,我们还可以根据需要,将带宽应用在不同的程序上,在www.it8g.com/ZhanChang/10/2943.htm就介绍了使用NetLimiter对带宽进行合理分配的方法。

四、综合应用

现在我们就可以将两根网线连接到绑定的两块网卡,然后通过虚拟网卡的IP地址访问服务器,并进行操作,你就可以在网卡的指示灯上看到两个网卡都在进行数据交换(快知道:网络打印机无法安装之迷)。

另外我们也可以进入开始菜单,在安装的NICExpress中“NIC Express Enterprise Edition”,在打开的窗口“Settings”选项卡中可以查看网卡的流量。如果想查看某一块网卡的流量,那么可以在“Select Device”下拉菜单中进行选择,而“Scale”则是流量的计量单位,建议大家选择“Mbits/Sec”即每秒多少兆,这样比较客户的从右侧的示意图中观察出流量的大小(如图3)。

图3

如果我们在安装时没有启动网络负载平衡,那么在这里可以将窗口切换到“Advanced”选项卡,将“Load Balancing Settings”下的“Load Balancing Disabled”设为其它任意选项即可(快知道:QOS与负载平衡的关系)。

基于SDT安全访问控制的方法 篇5

第16届SACMAT会议论文征集结果表明,当前访问控制技术的核心思想仍然是对传统DAC,MAC,RBAC思想的扩展,通过建立授权管理子系统来管理权限,大多都是从权限管理的角度进行描述[2]。而文中基于SDT(Software Dynamic Translation软件动态翻译,)思想,提出了一套结合软件动态翻译器进行访问控制的方法。并借助软件动态翻译开源平台Strata[3],实现了访问控制的机制。不同于传统的访问控制思想,它的侧重点在于动态执行中对系统资源的访问控制。

1 SDT思想

动态二进制翻译(SDT Software Dynamic Translation)技术,是一种即时编译技术,它将针对源体系结构编译生成的二进制代码动态翻译为可以在目的体系结构上运行的代码[4],如图1所示。

软件动态翻译器作为一个软件层,位于操作系统之上,应用程序二进制之下,来控制程序的执行。通过插入、修改可执行代码等方式来动态控制程序的执行过程从而影响程序的执行状态,动态收集正在执行程序的信息来决定怎样控制程序的执行[5]。

软件动态翻译系统的功能模块有系统初始化模块、运行时调度模块、缓存管理模块、虚拟CPU模块、虚拟环境模块等[6,7]。总体框图如图2所示。

系统初始化模块负责完成对系统环境参数等初始化的过程,完成后将控制交给运行时调度模块;此模块负责对应用程序进行虚拟化,动态切片应用程序,动态收集正在执行程序的信息,选择合适的片进行执行,对调度过程进行优化等;选定要执行的片段后,调用缓存管理模块,此模块进行片段缓存的建立以及片段的维护等;建立好缓存后,将要执行的片段放入缓存,然后请求虚拟CPU模块,对当前片段进行标准硬件的模拟过程,即“取指”、“译码”、“翻译”、“执行”;对整个应用程序进行同样的操作后,请求虚拟环境模块,对上下文环境进行保存,转换到真实的机器上进行操作。此外,虚拟环境模块还完成中断、I/O操作及存储器地址映像与存储保护等功能。

2 基于SDT思想的访问控制方法

SDT可以控制和动态修改正在执行的程序从而提供对于不可信的二进制代码可以强制执行特定用户安全策略的机制[8]。SDT访问控制方法的基本思想是:通过软件动态翻译器将不可信二进制代码的执行过程跟系统资源隔离,不可信二进制代码只能通过软件动态翻译器来执行,在动态执行过程中,由SDT控制将用户设定的安全策略强制加入可执行代码中,从而软件动态翻译器便通过安全策略来控制应用程序对系统资源的访问。

(1)使用安全加载器加载不可信的二进制文件。安全加载器定位应用程序的入口点并且在此处插入对软件动态翻译器启动进程的调用。

(2)软件动态翻译器建立一张系统调用表来监视指定的系统调用以及对应的返回函数,并且动态加载二进制代码。

(3)软件动态翻译器动态切片执行不可信二进制文件,具体为:调用系统初始化模块进行系统初始化,运行时调度模块对应用程序进行切片,缓存管理模块进行片段缓存的建立和片段维护,虚拟CPU模块进行标准硬件的执行过程。翻译函数检查应用程序代码并定位操作系统调用。

(4)在系统调用定位时,要对每一次系统调用进行监视。具体为:对每一个系统调用地址,软件动态翻译器检查此系统调用是否是被监视之一。多数情况下,在运行时刻,软件动态翻译器可以决定要被调用的系统调用,在这种情况下,如果操作系统调用是被监视的一个,那么执行操作系统调用的代码被替换成用户指定安全策略代码;若不是,则不会采取翻译行为,操作系统调用代码直接被复制到片段缓存。有一些情况,翻译阶段不能决定操作系统调用是否被调用,这种情况下,软件动态翻译器必须在片段被执行时,产生并插入一些进行检测的代码,检测是否被调用的操作系统调用是监视之一,如果是,调用合适的用户提供的安全策略代码,否则,操作系统调用被执行。

3 基于Strata访问控制的实现

采用Strata作为实验平台。利用其本身提供的安全虚拟可执行环境、可扩展接口来实现文中提出的访问控制方法。安全策略的编写采用C语言。即在一个安全的虚拟可执行环境中,通过软件动态翻译器虚拟化可执行应用程序并注入安全策略相结合来实现访问控制。

3.1 Strata平台简介

目前几种比较有影响的软件动态翻译系统有,Intel公司的IA-32 Execution Layer,IBM公司的DAISY,Transmeta的CMS及HP的Dynamo[4]等。这些系统对软件动态翻译系统关键技术有不同的实现。因此这些系统都有比较特定的应用场景[6]。而由Pittsburgh大学和Virginia大学的研究人员,在开发CoCo项目[9]过程中开发的软件动态翻译平台——Strata,是一个满足可扩展性和可移植性的通用平台。Strata被组织成虚拟机的形式,位于可执行代码之下,操作系统之上的软件层,可以动态控制和修改可执行代码,此外,通常有一个对应的代码缓存来保存修改后的可执行代码,程序修改后便在代码缓存中直接执行[10]。

Strata虚拟机通过“取指-译码-翻译-执行”来模拟标准的硬件行为。取指是从内存中装载指令块;译码是分析指令并判断该将其分派到哪个对应的翻译器;翻译是当指令块被写入FC$时对其进行一些修改;执行发生在控制权被返回给FC$中的二进制代码时,由主机CPU执行。例如,可执行文件program.exe,通过Strata平台动态翻译执行的过程,即Strata虚拟化应用程序的过程[11],如图3所示。

3.2 安全虚拟可执行环境

安全虚拟可执行环境(SVE)能减少主机系统运行一个不可靠程序的风险。SVE限制恶意代码对系统资源的访问,从而使主机有能力控制何种个人资源可以被使用。当前的SVE都只是针对特定的应用,缺少一个统一构架。而Strata可以提供一种可扩展、可移植的SVE系统构架[12]。

Strata提供的SVE类似于沙箱技术,经典沙箱系统的实现途径一般是通过拦截系统调用,监视程序行为,然后依据用户定义的策略来控制和限制程序对计算机资源的使用,比如改写注册表,读写磁盘等。但Strata的设计重点不在于SVE环境本身,而在于它提供通用的SVE。

3.3 可扩展接口

Strata的接口支持扩展,其接口及对应功能如表1所示[11,12,13]。

其中,一部分完成对应用程序指令的读和翻译,其余的完成上下文管理(capture,exec),指令缓存管理(flush),低层内存管理(alloc,alloc_exec),片段缓存客户化(begin_fragment,end_fragment,emit),低层链接(patch)以及初始客户化(init)等功能。

3.4 注入安全策略

采用Strata开发团队设计的安全API,通过编写安全策略,将其注入到不可靠可执行文件中。安全API允许使用者指定需要监视哪些系统调用并且执行的安全策略代码。Strata安全API包括4个函数[3]:

第一个函数在初始进入Strata时被调用,第一个函数实现里调用了第二个API函数watch_syscall(),它指明了要去监视的系统调用和当被监视的系统call被调用时执行哪些安全策略,参数callback用来匹配要进行监视的系统调用。最后两个API函数用来界定安全策略代码。

实现访问控制的关键代码如下:

init_syscall()函数指明sys_open系统调用应当被监视,当sys_open被应用程序调用时,转向执行安全策略代码myopen,myopen打开路径,并调用makepath_absolute()函数将路径转换成绝对路径,再跟/etc/passwd进行比较,如果一样,则报错并中断,如果不一样,安全策略代码执行sys_open,再返回对应结果,就如正常执行效果一样。

图4是通过Strata向用户可执行文件注入安全策略示意图。

本方法中,安全策略的书写是语言和编译器无关的,因为最后要进行执行的安全策略是编译之后的二进制代码,这也是本方法的优势之一。为方便读者阅读,实验采用C语言书写安全策略。此外,此方法是在二进制代码运行阶段来定义和强制执行安全策略代码,这种动态控制的方法更加安全。此外,SDT访问控制方法与传统访问控制最大的区别就是:可以让用户自主完成安全策略,进而达到访问控制的效果。这样的方法,不仅易于实现,更加面向用户化,并且动态保护过程更加安全。

4 结束语

Mysql数据库的访问方法浅析 篇6

PHP作为一种跨平台的动态网站服务器端脚本语言, 可在Windows9X/NT/2000/Me, Sco Unix, Sun Solaris, Linux等多种平台上运行, 支持M SSQL Server, Oracle, My SQL, DBM等常用数据库。在一个平台上用PHP脚本语言编写的程序, 不用修改就可以在另一个平台上运行。基于一种数据库编写的PHP脚本语言程序, 略作修改就适用于另一种数据库。近几年, PHP因其免费、跨平台、运行于服务器以及可嵌入HTML等优点, 被很多人用来开发基于Web的应用程序或数据库。

1 PHP程序访问Mysql数据库的方法和程序

用PHP程序访问Mysql数据库的方法具体步骤如下:

1.1 mysql_connect ()

语法:int mysql_connect ([string hostname[:port][, string username[, string password]]]) 。

该函数与My SQL数据库服务器建立一个连接, 函数的参数分别是主机名、端口号 (一般用默认号3306) 、用户名和密码。函数执行成功则返回一个integer型的连接描述符, 如果出错返回false。

1.2 mysq_lselect_db ()

语法:int mysql_select_db (string database name[, int link_identifier]) 。

该函数选择一个My SQL数据库, 即建立一个与数据库database name的连接。其后的任何mysql-query () 操作都作用在database n a m e指定的数据库上。执行成功返回T U R E, 失败返回F A L S E。

1.3 mysql_query ()

语法:int mysql_query (string query[, int link_identifier]) 。

该函数向选定的数据库送出一个查询字符串。参数query就是查询字符串, 提供给My SQL数据库进行相关的操作。如果失败, 则返回FALSE, 成功则返回查询结果。

1.4 mysql_fetch_array ()

语法:array mysql_fetch_array (int result, int[resulttype]) ;本函数用来将查询结果result拆到数组变量中。若result没有资料, 则返回false值。

1.5 mysql_num_rows ()

语法:int mysql_num_rows (int result) 。

该函数可以得到返回记录的数目, 比如查询到多少条记录。

下面给出实际应用的简单例子和程序。

设有一张表, 存放在名为server1的Mysql数据库服务器上, 表的结构如下。

现在, 我们用PHP程序查询出所有学生的id号和姓名。程序如下。

2 结语

本文概括介绍了用PHP、CAPI访问Mysql数据库的方法和程序, Mysql应用的广泛性注定需要爱好者们更多的学习和实践。

摘要:Mysql数据库是快速, 功能强大且价格低廉的应用于网络的数据库, 在网络方面表现非常优越。本文介绍了PHP程序访问Mysql数据库的方法和程序。

关键词:Mysql,PHP,数据库

参考文献

[1]王军.Ian Gilfillan《MySQL4从入门到精通》[M].北京:电子工业出版社, 2003.

矩阵分块的方法与技巧 篇7

定理1设A= (aik) sn, B= (bkj) nm, 把A, B分成一些矩阵

应该注意, 对矩阵A的列的分法要与矩阵B的行的分法一致, 则

其中

例1证明上三角阵的乘积仍是上三角阵.

证明当n=1时, 命题显然成立.假设n-1时命题正确.

对于n, 把矩阵A, B分块如下:

其中A1, B2是n-1阶上三角矩阵,

由归纳假设A1B1是n-1阶上三角矩阵, 从而AB是上三角矩阵.

例2设A, B都是n阶矩阵, 且AB=0, 证明R (A) +R (B) ≤n.

证明因为

所以Aβi=0.这说明矩阵B的列向量组是Ax=0的解向量.

设R (A) =r1, R (B) =r2, 则

(1) 当r1=n时, 该方程组只有零解, B=0, r1+r2=n, 结论成立.

(2) 当r1

综上, R (A) +R (B) ≤n.

例3设B为一r×r矩阵, C为一r×n矩阵, 且R (C) =r.证明如果BC=0, 那么B=0.

证明BC=B (C1, C2) = (BC1, BC2) =0, 不妨设C1为r×r矩阵, R (C1) =r, C2为r× (n-r) 矩阵, BC1=0, 两边右乘C1的逆B=0.

通过以上例子可以看出, 利用矩阵的分块思想进行乘积运算, 说服力强, 表述简单、严谨, 线性代数中有些定理用分块乘法证明, 也有相当的妙趣.

定理2设Am×sBs×n=Cm×n, 则R (C) ≤min (R (A)

证明C= (c1, c2, …, cn) ,

知C的列向量组能由A的列向量组线性表示, 因此R (C) ≤R (A) .

知C的行向量组可由B的行向量组线性表示.因此R (C) ≤R (B) .

综上所述R (C) ≤min (R (A) , R (B) ) .

例4设, 且≠0, 1≤k≤n, 则有下三角形矩阵Bn×n使BA=上三角形矩阵.

证明对n作归纳法, 当n=1时, 一阶矩阵既是上三角形又是下三角形.故命题自然成立.

设对n-1命题为真, 我们来看

它仍满足命题中所设的条件.由归纳法假设, 有下三角形矩阵 (B1) (n-1) × (n-1) 满足B1A1=上三角形矩阵.

再作

这时矩阵已成为上三角形了.将两次乘法结合起来就得到

此即所要求的下三角形矩阵.

参考文献

[1]王萼芳, 石生明.高等代数[M].北京:高等教育出版社, 2003.

思想沟通的方法与技巧 篇8

1 了解对象,抓住时机

对职工进行思想沟通前,思想政治工作者要充分了解自己要达到的思想沟通的目的,这种了解是基于对对方个性分析和自己对对方熟悉程度之上的了解。只有达到了了解的程度,才能在思想沟通过程中抓住要点,切中利弊,才能把问题讲深、讲透。同时,要抓住和员工思想沟通的“契机”,择机而发,因势利导。言贵在精,更贵在时,当其时一言值千金,反其时,则一言不值半文钱。不宜进行思想沟通有几种情形:一是当思想政治工作者对要沟通的思想认识还处于模糊阶段时;二是当对方思想情绪还处于波动中时;三是当有第三者在场或有其他因素干扰时;四是当时间仓促时。那么,何时是思想沟通的最佳时机呢?一般来说,在一定时间里,或因某种不利于对方成长的因素暂时消失,或因某种有利对方进步的因素突出出现,就会形成思想沟通的有利时机的到来,进而取得谈话的主动权。这是思想沟通的有利的关键时刻,抓住这个火候,思想沟通的成功就有了把握。

2 热情诚恳,善于启发

思想沟通,是说理的艺术、交心的渠道。古人说“人之相交,贵在交心”。思想政治工作中思想沟通,要达到“推心置腹”的境地。推心置腹的过程,应是平等的思想交流,真挚的感情交流。思想政治工作者在和员工思想沟通中不能盛气凌人,说酸话、辣话,应当以诚相见,以理服人,想方设法把自己的一片真情坦露给对方,使对方真诚地感受到你的热情、诚恳和关心,从而点燃自己内心的火焰,产生“反省自我”的自觉性。同时,还要善于以光引光,以热引热,把对方随时反映出来的消极思想引向正面,达到无形之中见成效的佳境。要达到这一点,思想政治工作者首先诚意要足。要做到表扬要实事求是,不信口开河,使对方产生正确的激励作用;批评对方不无中生有,不能让对方不下了台。要本着诚恳与善良的态度,平等与对方进行思想交流。其次,涵养性要强。思想沟通中,对方有时会对我们的某些言行表示出反对的意见来。这就需要我们具有良好的个性修养。即使面对严厉的斥责,也不能在言语或表情上有反对的表示,更不能急躁,甚至大发雷霆。否则,一方面会使对方封闭自己的思想,不愿再同你进行思想沟通;另一方面,也会破坏思想沟通的气氛,使思想沟通无法进行下去。三是要运用得体的语言。主要是指出对方的错误或缺点时,要回避那些生硬和带有刺激性的语言,尽量选择那些既能表达本意又能使对方欣然接受的词句。有人说,成功的启发,“恰如投石击破水中天”,启人以思,导而弗牵。引导对方掌握正确的思想和道德标准,调动对方接受教育的自觉性,是进行思想沟通的一种高超艺术。

3 寓理于情,以情感人

对职工进行思想沟通时,思想政治工作者的语言不但要有一定的思想性,还要有一种感召力和高尚的情趣,以调动对方的感情,陶冶对方的心灵。心灵的呼唤,离不开感情作媒介;思想的共鸣,也需借助友爱去撞击。思想政治工作是一种感情和艺术。而这种感情离不开对邪恶、对卑鄙的憎恨之情。尤其是寓有哲理的感情流露可以打动人心。在对员工进行思想沟通进入正题之前,我们要有意识地加进一些叙家常之类的对话,也同样可以营造融洽交流的气氛。因为,第一,可以减轻对方的心理压力及仓促感,使其渐渐进入“角色”;第二,能够缩短彼此间的心理差距,达到联络感情,融洽气氛,引出对方说话欲望的目的;第三,可以观察对方的情绪,为正题定好“基调”。我们公司做思想政治工作的同志说,成功的思想沟通,应是“三分含情,七分叙理”。要将情理有机地“化合”,做到情中有理,理中含情,情理交融,使思想沟通有摄取人心的艺术魅力。

4 耐心细致,不怕反复

三角变换的方法与技巧 篇9

熟悉各公式在恒等变形中的作用,才能在解决问题时,合理选择公式,灵活运用公式,提高分析和解决有关三角问题的能力。

常用的技巧有: (1) 角的变换; (2) 函数名称的变换; (3) 公式的变形及逆用; (4) “1”的妙用; (5) 变换结构。

一、角的变换

三角变换中经常要化复角为单角, 化未知角为已知角, 因此, 明确角与角之间的关系十分重要。哪些角消失了, 哪些角变化了, 结论中是哪个角, 条件中, 有没有这些角, 在审题中必须认真观察和分析。常见的变角方式有α= (α+β) -β;2α= (α+β) + (α-β) ;2α-β= (α-β) +α;α可视为的倍角, 可视为的半角等等。应注意变角形式不唯一, 应因题而异。

例1: (2012年江苏省11) 设α为锐角,若的值为____________。

点评:题目考查的是同角三角函数,两角差的正弦,二倍角的正弦公式,及综合运用所学知识分析、解决问题的能力。求解时,应注意两个步骤,一是求出角的某一个三角函数值,二是确定角的范围。

二、函数名称的变换

三角变换的目的在于“消除差异,化异为同”,而题目中经常出现不同名的三角函数,这就需要化异名函数为同名函数,变换的依据是同角三角函数的关系式和诱导公式和如何把正切化为正弦,正弦化为正切。

例2: (2012山东17)

在△ABC中,内角A, B, C所对的边分别为a, b, c,已知sin B (tan A+tan C) =tan Atan C

求证:a, b, c成等比数列。

解析:由已知得:sin B (sin Acos C+cos Asin C) =sin Asin C

sin Bsin (A+C) =sin Asin C, 则sin2B=sin Asin C

再由正弦定理可得:b2=ac,所以a, b, c成等比数列。

点评:题目的特点是关于sinα、cosα的齐次式,通常把分子、分母同除以cosα或cos2α转化为关于tanα的三角式,从而利用已知条件求出它们的值。

三、公式的变形及逆用

在进行三角变换时, 我们经常顺用公式, 但有时也需要逆用公式, 以达到化简的目的。习惯上通常是顺用公式, 逆用公式较困难, 因此要加强逆用公式的意识。如sin2α=2sinαcosα可变形为可变形为sinα=tanαcosα, 升降幂公式是二倍角公式的变形等。

例3: (2012·全国卷14) 已知,tanα=2,则cosα=________。

解析:因为tanα=2,所以,sinα=tanαcosα,sinα=2cosα,代入sin2α+cos2α=1得

例4: (2012浙江18) 在△ABC中,内角A, B, C的对边分别为a, b, c。已知

求tan C的值。

解析:本题主要考查三角恒等变换、正弦定理、余弦定理及三角形面积求法等知识点。

点评:在利用同角三角函数的平方关系时,若开方,要特别注意判断符号。

四、“1”的妙用

在三角函数中, 1的代换有

在具体的三角变换过程中,常根据题目的不同特征,选择不同的变换方式。

例5: (湖北高考) 若△ABC的内角A满足,则sin A+cos A= () 。

又因为A为锐角,所以,选A。

点评:用1=sin2A+cos2A把左式化为 (sin A+cos A) 2,这是最常用的代换。

五、变换结构

1.分析题目的结构, 掌握结构的特点, 通过降幂、升幂、常数代换等手段, 为使用公式创造条件。这也是三角变换的重要策略。常见的降幂公式有一般地, 三角函数式中含有平方项的式子均可通过上述两个公式降幂。

例6:已知,若a=f (lg5) ,则

A.a+b=0 B.a-b=0 C.a+b=1 D.a-b=1

解析:本题可采用降幂处理,则

2. 引入辅助角。

asinθ+bcosθ可化成,这里辅助角所在象限由a, b的符号确定,φ角的值由确定,高考中经常利用该式将所给问题化为只含一个角的三角函数。

例7: (2012湖北17)

已知向量a= (cosωx-sinωx, sinωx) ,设函数f (x) =a·b+λ (x∈R) 的图像关于直线x=π对称,其中ω,λ为常数,且

求函数f (x) 的最小正周期。

由直线x=π是y=f (x) 图像的一条对称轴,可得

又,k∈Z,所以k=1,故

所以f (x) 的最小正周期是

例8: (2011北京高考,文15)

已知函数

求f (x) 的最小正周期。

上一篇:就业心理素质论文下一篇:数据组织管理