barriers / 阅读 / 详情

空间与非空间数据导入功能的实现

2023-08-23 17:02:18
共1条回复
ardim

传统的空间数据往往采用图层文件方式,文件方式对数据管理安全性较差,存在着属性和图形分开管理的问题,不适合网络共享发展的需要,同时也给数据的安全带来一定的隐患。随着技术的进步,逐渐将属性数据移植到数据库平台上,图形数据和属性数据一起存放在关系数据库中这已成为GIS发展的主流。

(一)非空间数据的导入

1.实现思路

在SQL Server中,对于小8 000个字节的图像数据可以用二进制型来表示,但通常要保存的一些影像图片都会大于8 000个字节。SQL Server提供了一种机制,能存储每行大到2 GB的二进制大对象(Binary Large Object,BLOB)。BLOB是在SQL Server中作为一个单一实体存储的二进制数据集合,主要用于保存多媒体对象,如图像、视频和声音,还可以存储程序,甚至是代码片断。在SQL Server中,BLOB可以是Text、Ntext或者Image数据类型。Image数据类型存储的是长度不确定的二进制数据,最大长度是2GB。

BLOB数据在SQL Server系统中的存储方式不同于普通的数据类型,对于普通类型的数据系统直接在用户定义的字段上存储数据值,而对于BLOB类型数据,系统开辟新的存储页面来存放这些数据,表中BLOB类型数据字段存放的仅是一个16个字节的指针,该指针指向存放该条记录的BLOB数据的页面。

SQL Server 2000 允许多种方式导入Word文档、图片、录像等非空间数据。一种方式是先创建一个Image数据类型列,用于存放数据,再使用Textcopy.exe命令行工具将Imu2043age文件读入数据库,手工完成文档的导入操作。另一种方法是使用Microsoft Active X Directory Object(ADO)Stream 接口编写导入代码。Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本流,从而实现对流的读、写和管理等操作。具体思路(如图8-8)是在VB 6.0环境下先引用ADO类型库,通过声明一个作为 New Adodb.RecordSet的变量,新建一Adodb RecordSet 对象。在创建了这个RecordSet对象后,建立一个存储非空间数据的空表,包括“ID”、“Name”、“Shade”3个字段,其中“Shade”的数据类型为 Image,存储二进制的文档多媒体数据。再创建一使用Adodb.Stream新对象,使用其ADOStream.Open及ADOStream.LoadFromFile方法来完成二进制数据的存取,当然第二次添加时要检测文件是否已存在,并提示是否覆盖。同时ADO Field对象提供了AppendChunk方法将二进制文件写入大字段,当读取数据时使用GetChunk方法即可。

图8-8 非空间数据导入流程图

2.关键代码

'*************查找路径目录下文件*************

Function FindFilesAPI(path As String,SearchStr As String)As Collection

If GetFileAttributes(path &DirName)And FILE_ATTRIBUTE_DIRECTORY Then

Dim FileName As String '文件名

Dim DirName As String '子目录名

Dim dirNames()As String '目录数组

Dim nDir As Integer '当前路径的目录数

Dim i As Integer '循环计数器变量

Dim hSearch As Long '搜索句柄变量

Dim WFD As WIN32_FIND_DATA

Dim Cont As Integer

Set FindFilesAPI=New Collection

If Right(path,1)<>"\"Then path=path &"\"

'搜索子目录

nDir=0

ReDim dirNames(nDir)

Cont=True

hSearch=FindFirstFile(path &"*",'WFD)FindFirstFile为Windows的API函数

If hSearch <>INVALID_HANDLE_VALUE Then

Do While Cont

DirName=StripNulls(WFD.cFileName)'去除文件名空格函数

If(DirName <>".")And(DirName <>"..")Then

'GetFileAttributes为Windows的API函数

dirNames(nDir)= DirName

nDir=nDir + 1

ReDim Preserve dirNames(nDir)

End If

End If

'FindNextFile为Windows的API函数

Cont=FindNextFile(hSearch,WFD)'获取下一个子目录

Loop

Cont=FindClose(hSearch)'FindClose为Windows的API函数

End If

'遍历目录并累计文件总数

hSearch=FindFirstFile(path & SearchStr,WFD)

Cont=True

If hSearch <>INVALID_HANDLE_VALUE Then

While Cont

FileName=StripNulls(WFD.cFileName)

If(FileName <>".")And(FileName <>"..")Then

FindFilesAPI.add path & FileName

End If

Cont=FindNextFile(hSearch,WFD)'获取下一个文件

Wend

Cont=FindClose(hSearch)

End If

End Function

'************数据存储*************

Sub writerd(ts As TextStream,Cn As ADODB.Connection,FileName As String)

Dim rd As Recordset,i As Long,pathName As String

Dim NameWanted As String,kzm As String

On Error Resume Next

Set rd=New ADODB.Recordset

Call SplitPath(FileName,pathName,NameWanted,kzm)

rd.Open"select*from"&DocTable&"where name='"&NameWanted &"'and kam='"& kam &"",Cn,adOpenDynamic,adLokReadOnly

If returnRdEof(rd)= False Then

i=MsgBox("是否替换"& NameWanted & kzm &"?",vbYesNo + vbQuestion)

If i=6 Then

Cn.Execute("delete from"& DocTable &"where name="'& NameWanted &'"and kzm= '"& kzm &'"")

ts.WriteLine NameWanted & kzm &",入库,更新,"& Now

'************导入操作*************

AddLog"数据更新",NameWanted & kzm &,"成功"

Else

ts.WriteLine NameWanted & kzm &",入库,没更新,"& Now

AddLog"数据更新",NameWanted & kzm &,"不成功"

Exit Sub

End If

Else

ts.WriteLine Name Wanted&kzm&",入库,成功,"& Now

AddLog"数据入库",NameWanted & kzm &",成功"

End If

adoStream.Type =1'指定或返回的数据类型adTypeBinary

adoStream.Open'打开对象

adoStream.LoadFromFile FileName'将对象的内容写到FileName文件中

将二进制文件写入大字段

Set rd=New ADODB.Recordset

rd.CursorType=adOpenKeyset

rd.LockType=adLockOptimistic

rd.Open DocTable,Cn,,,adCmdTable

rd.AddNew

rd!name=NameWanted

rd!kzm=kzm

'读取指定长度的二进制内容追加到Shad字段

rd!Shade.AppendChunk adoStream.Read

rd.Update

End Sub

Sub WriteDoc(ts As TextStream,TmpCn As ADODB.Connection,docPath As String,ByVal Pgaload As MSComctlLib.ProgressBar)

Dim tFilecol As Collection,i As Long

Screen.MousePointer=vbHourglass

CreateShadeTable TmpCn

Set tFilecol=FindFilesAPI(docPath,"*.*")

'显示进度

Pgaload.Min=0

Pgaload.Max=tFilecol.Count

'导入操作

For i=1 To tFilecol.Count'- 1

writerd ts,TmpCn,tFilecol(i)

DoEvents

Pgaload=i

Next

Screen.MousePointer=vbDefault

End Sub

(二)空间数据的导入

1.基本概念

AO组件是ESRI公司推出的ArcGIS家族中应用程序ArcMap、ArcCatalog和ArcScene的开发平台,是基于微软的组件对象模型(COM)技术开发的一系列COM组件集。它提供了1 800多个单独的基于COM的组件,几百个具有良好文档说明的接口和数千个方法。AO组件提供了3种类型的类:抽象类(Abstract Class)、组件类(CoClass)和类(Class)。抽象类是不能被创建的,只能作为其他类的父类。类也不能被创建,但该类的对象能被其他类所创建,并作为该类的一个属性,或者被其他类的对象实例化。组件类可以被创建。

为了支持一个不依赖于开发语言工具的组件集,关于ArcObjects库所有相关的数据都被打包进Esricore.olb的类型库,一个类型库被作为一个接口定义语言(IDL)文件的二进制版本,是一系列COM对象和接口的集合,并被编译进一个形如OLB、DLL或OCX这样的二进制文件中。EsriCore.olb几乎包含了除扩展模块外的所有功能。

2.程序实现

为了减轻系统管理维护工作量,应用AO组件提供的强大的GIS功能,自行开发数据导入系统,空间数据的导入即是将已有的不同格式类型的空间数据导入至SQL Server中,转换成由SDE 进行管理的GeoDatabase 的要素类。空间数据一般为Shape、Coverage、DXF/DWG(AUTOCAD)、MIF等格式。要将这些文件转换并导入到GeoDatabase 中,主要用到IFeatureDataConverter接口的ConvertFeatureClass方法。总体步骤和关键代码如下。

1)创建工程,引用AO核心库。在VB工程中引用入一个EsriCore.olb就可以得到ArcObjects。

2)连接数据库。先通过ADO判断是否连接上SQL Server中的数据库。

3)创建一源工作空间工厂名对象(WorkSpaceName),根据导入数据的格式类型(如Coverage),则将EsriCore.ArcInfoWorkSpaceFactory.1和输入的IPropertySet分别赋给工作空间工厂名的属性WorkSpaceFactoryProgID和ConnectionProperties,通过工作空间的OPEN方法建立连接并获得要导入的要素类。

4)同理建立目标工作空间工厂名(SdeWorkSpaceFactory),然后在SdeWorkSpace新建一要素类,把新建的FeatureClassName 与SdeWorkSpace建立关联以备转换。

5)最后利用IFeatureDataConverter的转换函数ConvertFeatureClass来实现FeatureClass到GeoDatabase转换,如果数据库中该文件已入库判断是否覆盖。

6)写入工作日志。

'**********************************************************************

'过程cmdLoadFC2F_Click是程序点击实现模块,其中调用函数据Startzh()实现输入属性及输出属性的设置功能并调用ConvertData函数,在ConvertData函数中利用ArcObjects的IFeatureDataConverter.ConvertFeatureClass方法完成数据转换。关键代码及说明如下:

'**********************************************************************

Private Sub cmdLoadFC2FC_Click()

……

'通过ADO判断是否连接SQL Server获得数据连接

getConnectDb.Open GetConStr,Tuser,tpass

Set DETargetAdodb=getConnectDb(txtTargetUser,txtTargetPassword)

……

'判断导入数据格式为Converage、shape、mif还是AutoCAD的dxf格式

If m_InDataType =convDataTypeShapefile Then

……

'调用GetInProp子过程,获得相应的输入参数,在该子过程中通过pPropertySet.SetProperty"DATABASE",GetPathName(m_Infile,0)对不同输入数据格式的数据的连接,通过WorkspaceFactory.Open(IPropertySet,0),返回一个工作空间 Workspace,这样就可以建立连接了.通过 Workspace 就可以获得该工作空间的 FeatureDataset 或 Featureclass 以备转换。

Call GetInProp

Call GetoutProp'获得相应的输出参数,在该子过程中定义SDE 连接属性

With pPropertySet

.SetProperty"Server",txtServer'定义SDE 服务

.SetProperty"Instance",txtport'定义SDE 端口

.SetProperty"Database,"sde"'数据库名称

.SetProperty"user",txtTargetUser.Text'用户名

.SetProperty"password",txtTargetPassword.Text'登录密码

.SetProperty"version","sde.DEFAULT"'SDE 版本

End With

'通过WorkspaceFactory.Open(IPropertySet,0)建立连接以备导入

……

End if

……

Startzh()'调用开始转换函数

……

End Sub

Function Startzh()'开始转换函数,进行相应参数设置

Dim pInPropertySet As esriCore.IpropertySet '定义输入属性

Set pInPropertySet=New esriCore.PropertySet

Dim pOutPropertySet As esriCore.IpropertySet '定义输出属性

Set pOutPropertySet=New esriCore.PropertySet

Dim sInName As String,sOutName As String,sOutFDName As String,tmpname As String,tmpstr As String '其他输入输出参数

Dim startt As String,endt As String

……

Dim strResult As String

strResult=pLoad.ConvertData(pInPropertySet,_'调用AO转换函数“ConvertData”sInName,m_InDataType,pOutPropertySet,sOutName,sOutFDName,m_OutDataType,ts)……

End Function

Public Function ConvertData(pInPropertySet As IPropertySet,_

sInName As String,_

eInDataType As convDataType,_

pOutPropertySet As IPropertySet,_

sOutName As String,_

sOutFDName As String,_

eOutDataType As convDataType,_

ts As TextStream)As String

eOutDataType=convDataTypeGDB 定义转换后的类型为GDB要素

On Error GoTo fileerr

'设置输入工作空间

Dim pInWorkspaceName As IWorkspaceName

Set pInWorkspaceName=New WorkspaceName

pInWorkspaceName.connectionProperties=pInPropertySet

pInWorkspaceName.WorkspaceFactoryProgID=GetProgID(eInDataType)

'设置输出工作空间

Dim pOutWorkspaceName As IWorkspaceName

Set pOutWorkspaceName=New WorkspaceName

pOutWorkspaceName.connectionProperties=pOutPropertySet

pOutWorkspaceName.WorkspaceFactoryProgID=GetProgID(eOutDataType)

'设置输入的数据集名称

Dim pInDatasetName As IDatasetName

Set pInDatasetName=New FeatureClassName

pInDatasetName.name=sInName

Set pInDatasetName.WorkspaceName=pInWorkspaceName

'设置输出的要素数据集名称

Dim pOutFDName As IDatasetName

If sOutFDName =""Then

Set pOutFDName=Nothing

Else

Set pOutFDName=New FeatureDatasetName

Set pOutFDName.WorkspaceName=pOutWorkspaceName '建立关联

pOutFDName.name=sOutFDName

End If

'设置输出的数据集名称

Dim pOutDatasetName As IDatasetName

Set pOutDatasetName=New FeatureClassName

If Not pOutFDName Is Nothing Then

Dim pFCName As IFeatureClassName

Set pFCName=pOutDatasetName

Set pFCName.FeatureDatasetName=pOutFDName

End If

Set pOutDatasetName.WorkspaceName=pOutWorkspaceName'建立关联

pOutDatasetName.name=sOutName

'打开为获得字段定义的输入表

Dim pName As IName

Dim pInTable As ITable

Set pName=pInDatasetName

Set pInTable=pName.Open

'使字段名有效并报告错误

Dim pInFields As IFields

Set pInFields=pInTable.Fields

Dim pFieldCheck As IFieldChecker

Set pFieldCheck=New FieldChecker

Dim pOutFields As IFields

Dim pEnumFieldError As IEnumFieldError

pFieldCheck.Validate pInFields,pEnumFieldError,pOutFields

If Not pEnumFieldError Is Nothing Then

Dim strFldErr As String

strFldErr ="有些字段将给新名称:"

Dim pFieldError As IFieldError

Set pFieldError=pEnumFieldError.Next

Do Until pFieldError Is Nothing

Dim pInField As IField

Dim pOutField As IField

Set pInField=pInFields.Field(pFieldError.FieldIndex)

Set pOutField=pOutFields.Field(pFieldError.FieldIndex)

Dim pFieldEdit As IFieldEdit

Set pFieldEdit=pOutField

'pFieldEdit.name ="["& pInField.name &"]"

pFieldEdit.AliasName ="["& pInField.name &"]"

Set pOutField=pFieldEdit

strFldErr=strFldErr & vbNewLine &_

"["& pOutField.name &"]"& vbTab &"原因:["& pInField.name&"]"&_

GetFieldError(pFieldError.FieldError)

Set pFieldError=pEnumFieldError.Next

Loop

strFldErr=strFldErr & vbNewLine & vbNewLine &"继续吗?"

Dim iContinue As Integer

iContinue=vbYes MsgBox(strFldErr,vbYesNo,"字段 错误")

If iContinue=vbNo Then

ConvertData ="转换取消"

Exit Function

End If

End If

如果转换为一个要素类建立输出几何定义

通过输出字段跳转寻找几何字段

Dim i As Long

Dim pGeoField As IField

For i=0 To pOutFields.FieldCount

If pOutFields.Field(i).Type=esriFieldTypeGeometry Then

Set pGeoField=pOutFields.Field(i)

Exit For

End If

Next i

获得几何字段的几何定义

Dim pOutFCGeoDef As IGeometryDef

Set pOutFCGeoDef=pGeoField.GeometryDef

给出几何定义的空间索引的格子数和格子尺寸

Dim pOutFCGeoDefEdit As IGeometryDefEdit

Set pOutFCGeoDefEdit=pOutFCGeoDef

pOutFCGeoDefEdit.GridCount=1

pOutFCGeoDefEdit.GridSize(0)= DefaultIndexGrid(pInTable)

Set pOutFCGeoDefEdit.SpatialReference=ProjMap_Arcobject("wgs",0,0)

'执行转换

Dim pConverter As IFeatureDataConverter

Set pConverter=New FeatureDataConverter

'设置进度条

Set frmLoadToGDB.m_ActionObj=pConverter

frmLoadToGDB.Show vbModeless

DoEvents

Dim pEnumErrors As IEnumInvalidObject

'转换为要素类

Set pEnumErrors=pConverter.ConvertFeatureClass(pInDatasetName,Nothing,pOutFDName,pOutDatasetName,pOutFCGeoDef,pOutFields,"",1000,0)

'如果未完全转换成功,显示错误报告

Dim pErrInfo As IInvalidObjectInfo

Set pErrInfo=pEnumErrors.Next

If pErrInfo Is Nothing Then

ConvertData ="转换完毕"

Else

Load frmReport

frmReport.Caption ="错误对象"

frmReport.Visible=True

Do Until pErrInfo Is Nothing

frmReport.lstReport.AddItem pErrInfo.InvalidObjectID & vbTab & pErrInfo.ErrorDescription

Set pErrInfo=pEnumErrors.Next

Loop

ConvertData ="转换出现错误"

End If

Set pInWorkspaceName=Nothing

ts.WriteLine sOutName &",入库,成功,"& Now

AddLog"数据入库",sOutName &,"成功"

Exit Function

fileerr:

ConvertData ="源文件可能不是有效文件"& vbNewLine &"请检查"

ts.WriteLine sOutName &",文件有问题,不成功,"& Now

AddLog"数据入库",sOutName &,"不成功"

End Function

相关推荐

SOUT?是什么意思?

俱乐部
2023-08-16 06:18:562

Sout啥意思

1. SOUT: 串行输出线 | 信号 | 输出电 压 2. SOUT O: 串行输出 | 序列输出
2023-08-16 06:19:051

电路板上的sin+sout+gnd是什么意思?

Sin:signal input, 信号输入口Sout: signal output,信号输出口GND: ground, 就是大家说的“地”,说得是电平参考平面,一般是0V。也分信号地和模拟地。还有一个地说得是大地,就是电力系统上的地,但是不叫GND,叫earth
2023-08-16 06:19:132

Java sout和souf有什么区别?

都是打印输出,souf是不换行输出,sout是换行输出,如果你把println后边的ln去掉之后也是不换行输出。
2023-08-16 06:19:202

让eclipse像idea一样使用 .sout

使用了一段时间idea之后发现使用 a.sout 和 nums.for 这样的快捷键特别好用,于是就想在eclipse中也找找有没有这样的功能,找了半天只找到了最普通 sysout、foreach 等等功能,没有找到 a.sout 这样的使用方法,不过两个IDE对照发现了postfix这个选项,一下解决了问题,具体方法如下 首先如下图,找到Window->Preferences->Java->Editor->Content Assist->Advanced选项,然后把图中框起来的部分打上勾,这个就是允许使用Java后缀模板,因为eclipse中本来就是允许使用 .sout 来快捷输入的,只是这个选项没有开,要手动配置,确实没有idea那么人性化。 勾选上上边这个功能之后就可以尝试了,效果如图:
2023-08-16 06:19:341

IDEA中如何查看System.out.println的输出

View中的Tool Windows,Logcat点击一下就可以了或者在idea中直接输入sout,具体操作如下:1、打开View,点击view菜单,下拉菜单中点击Tool Windows选项。2、点击Tool Windows选项后弹出的右侧菜单,点击logcat即可查看。3、或者在idea中直接输入sout,自动出现提示,按Tab或Enter都可以出现。4、下图为查看System.out.println输出效果显示。
2023-08-16 06:19:431

Sout是什么意思?

abbr. 串行输出线
2023-08-16 06:20:541

有关楼宇对讲SOUT、SIN字母的含义?急!急!急!急!

我用过振威的主机(非可视)SOUT是发出去的音频SIN接收进来的音频GND是电源地线分机上SOUT是红色线SIN是黄色线GND是绿色线近户线是黑色的
2023-08-16 06:21:042

为什么Java中的sout("u5c1a")输出的是尚而不是u5c1a?

1、uxxxx:其中xxxx表示一个16进制数字,是unicode码的写法表示一个char类型的字符2、在Java中char类型的字符在内存战2byte =16位 ,所以一个char类型的字符可以是数字、字母和汉字 3、在java中Character最小值即Character.MIN_VALUE=”u0000”,char的默认值是u0000,Character默认为null4、u5c1a 表示将将2字节5c1a转义位一个汉字字符"尚"5、向控制台输出 sout==>System.out.println("u5c1a")就是输出System.out.println("尚")你明白了吗?
2023-08-16 06:21:232

intellij idea 输入System.out.println()的快捷方法是什么?

你好,可以试试sout
2023-08-16 06:21:567

新西兰的南岛——Sout Island?

新西兰南岛 [网络] South Island; South Island New Zealand; Zealand 英[?zi:l?nd] 美[?zil?nd] n. 西兰岛(丹麦最大的岛); [例句]Australia, New Zealand, and Canada, had no colonial conflict with the mother country.澳大利亚、新西兰和加拿大跟它们的宗主国不曾有殖民冲突。
2023-08-16 06:22:256

平均灵敏度公式是什么

平均灵敏度公式为:Sin(dBm)=NF(dB)+KTBRF(dBm)+Eb/No(dB)-PG(dB),其中各部分分别代表:Sin=可获得的输入信号功率(W)Nin=可获得的输入热噪声功率(W)=KTBRF其中:K=波尔兹曼常数=1381x10-23W/Hz/K,T=290K,室温:Sout=可获得的输出信号功率(W),Nout=可获得的输出噪声功率(W),G=设备增益(数值),F=设备噪声系数(数值)PG=BRF/Rbit,WCDMA规定用户数据速率Rbit等于12.2kbps。F的定义为:F=(Sin/Nin)/(Sout/Nout)=(Sin/Nin)X(Nout/Sout)用输入噪声Nin表示Nout:Nout=(FXNinxSout)/Sin其中Sout=GxSin,得到:Nout=FxNinXG,调制信号的平均功率定义为S=Eb/T,其中Eb为比特持续时间内的能量,单位为W-S,T是以秒为单位的比特持续时间。
2023-08-16 06:22:401

latex 使用时,sout{ }语句里面的内容不换行怎么办(不在这个命令里面的语句都正常换行了)

latex用法设置行间距的方法: %setlength{aselineskip}{15pt} enewcommand{aselinestretch}{1} 2.去掉容差报警的方法: hbadness=10000 olerance=10000 hfuzz=150pt 3.更改子级item,enumerate的图标的方法: enewcommand{labelen...
2023-08-16 06:22:492

您好,我在使用c8051f340单片机,进行keil调试时遇到一个问题:DIR VTREG后没有找到sin,sout虚拟寄存器。

单片机串行通讯在Keil环境中的调试技巧其中<sin>sout是指所选择芯片的串口输入输出寄存器,不同芯片可能会有不同的名字,可以使用dir vtreg查看,如如果没有,自己写程序,用串口助手调试就行啦。
2023-08-16 06:24:161

android studio怎么快速打出System.out.println

很简单,你输入sysout+alt/
2023-08-16 06:24:274

金蝶软件出库单单号SOUT是什么意思?

只是一个编码规则而已,可以修改的
2023-08-16 06:24:481

请问能分析一下这个电路原理吗? L101接的是12V。SOUT输出的是5V信号。请问Q101和Q102的作用是什么?

两个三极管是用来放大信号的电压人然后给Ad8330差分放大器两个输入端比较电压,最后输出放大的差分电压
2023-08-16 06:24:571

缓冲技术的缓冲池的管理

缓冲池由多个缓冲区组成。而一个缓冲区由两部分组成:一部分是用来标识该缓冲器和用于管理的缓冲首部,另一部分是用于存放数据的缓冲体。这两部分有一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作实现的。缓冲首部包括设备号、设备上的数据块号(块设备时)、互斥标识位以及缓冲队列连接指针和缓冲器号等。系统把各缓冲区按其使用状况连成三种队列:(1) 空白缓冲队列em,其队首指针为F(em),队尾指针为L(em);(2) 装满输入数据的输入缓冲队列in,其队首指针为F(in),队尾指针为L(in);(3) 装满输出数据的输出缓冲队列out,其队首指针为F(out),队尾指针为L(out)。另外,在缓冲池中还具有四种工作缓冲区:(1) 用于收容输入数据的工作缓冲区(hin);(2) 用于提取输入数据的工作缓冲区(sin);(3) 用于收容输出数据的工作缓冲区(hout);(4) 用于提取输出数据的工作缓冲区(sout)。 可见,缓冲区工作在收容输入、提取输入、收容输出和提取输出四种工作方式如下: 对缓冲池的管理由如下几个操作组成:(1)从三种缓冲区队列中按一定的选取规则取出一个缓冲区的过程take_buf(type);(2)把缓冲区按一定的选取规则插入相应的缓冲区队列的过程add_buf(type,number);(3)供进程申请缓冲区用的过程get_buf(type,number);(4)供进程将缓冲区放入相应缓冲区队列的过程put_buf(type,work_buf)。其中,参数type表示缓冲队列类型,number为缓冲区号,而work_buf则表示工作缓冲区类型。 使用这几个操作,缓冲池的工作过程可描述如下:首先,输入进程调用get_uf(em,number)过程从空白缓冲区队列中取出一个缓冲号为number的空白缓冲区,将其作为收容输入缓冲区hin,当hin中装满了由输入设备输入的数据之后,系统调用过程put_buf(in,hin)将该缓冲区插入输入缓冲区队列in中。另外,当进程需要输出数据数据时,输出进程经过缓冲管理程序调用过程get_buf(em,number)从空白缓冲区队列中取出一个空白缓冲区number作为收容输出缓冲区hout,待hout中装满输出数据之后,系统再调用过程Put_buf(out,hout)将该缓冲区插入输出缓冲区队列out.对缓冲区的输入数据和输出数据的提取也是由过程get_buf和put_buf实现的。get_buf(out,number)从输出缓冲队列中取出装满输出数据的缓冲区number,将其作为sout。当sout中数据输出完毕时,系统调用过程put_buf(em,sout)将该缓冲区插入空白缓冲队列。而get_buf(in,number)则从输入缓冲队列中取出一个装满输入数据的缓冲区number作为输入缓冲区sin,当CPU从中提取完所需数据之后,系统调用过程put_buf(em,sin)将该缓冲区释放和插入空白缓冲队列em中。
2023-08-16 06:25:071

墨尔本soutblnd火车站的位置?

名称有误,应该是 Southland 火车站 !!2017年11月26日开始投入使用;车站位于墨尔本东南面 18公里郊区的 切尔滕纳姆镇。具体位置是在 Westfield Southland 商场的停车场旁边。
2023-08-16 06:25:271

EDA课程 Quartus Ⅱ的verilog程序问题,求高手告诉一下,谢谢啦!

这个是检测“11010011”序列,如果出现序列:“11010011”,sout输出为1;(assign sout=(st==s8);)“是不是只要把case语句里那9个if()条件语句按din分别==1b`1、1、0、0、1、0、1、1、0的顺序依次检测”不是向左向右检测,而是检测的序列不同;“11010011” 和 “11001011” 的不同。如果要改为向左向右检测,可以将din输入序列的顺序更换一下就行了。din是一个串行数据,属于待检测数据。
2023-08-16 06:25:511

用C++将0.0345表示成.345e-01,急用谢谢

#include <iostream>#include <iomanip>using namespace std;int main(){ double a=0.0345; cout <<setiosflags(ios::scientific) <<setprecision(2) ; cout <<a; return 0;} 注意及时采纳啊!!!
2023-08-16 06:25:592

There is plenty of rain in the sout

There is plenty of rain in the south _A__there is little in the north.while表示然而,就是前后情况的对比
2023-08-16 06:26:063

用JAVA基础怎样把一张图片转换成16进制字符?

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection("jdbc:odbc:blog","sa","");Statement stmt=con.createStatement();ResultSet rs=null; //int uname=Integer.parseInt(request.getParameter("id"));String uname=request.getParameter("uname");String sql = "select picture from 表 where 图片=""+Pname+"""; rs=stmt.executeQuery(sql);while(rs.next()) { ServletOutputStream sout = response.getOutputStream(); InputStream in = rs.getBinaryStream(1); byte b[] = new byte[0x7a120]; for(int i = in.read(b);i!= -1;) { sout.write(b); //将缓冲区的输入 输出到页面 in.read(b); } sout.flush(); //输入完毕,清除缓冲 sout.close();} 希望帮到你同学
2023-08-16 06:26:292

android与我的电脑进行socket通信时出现异常java.net.SocketException: Connection reset

这是因为你的8888端口被使用了。 或者说被之前的服务器占用没有关闭。 你可以修改一下8889试试
2023-08-16 06:26:361

C++中高精度计算的问题

这题垃圾
2023-08-16 06:26:455

开环增益k如何根据折线关系求

1. 开环增益表达式为K=ωn/2ζ或k=Rf/R1。可见开环增益与无阻尼自振频率ωn和阻尼比ζ有关,系统的无阻尼自振频率由系统本身2. 当阻尼比ζ增大时,例如在系统中引入测速反馈
2023-08-16 06:26:592

char[]转string的问题

public class Test { public static void main(String args[]) { char[] chs = {"a","f","d"}; String chToStr = String.valueOf(chs); System.out.println(chToStr); String str = "fdssf"; chs = str.toCharArray(); for(int a = 0; a < chs.length; a ++) { System.out.println(chs[a]); }} }这样可以么?
2023-08-16 06:27:072

VB在窗体上打印以下由星号组成的菱形图案。其中,输出行数可以由用户指定。

用循环语句
2023-08-16 06:27:172

ASP.NET(c#)调用EXE问题

编译后可能路径出错了,仔细检查下Server.MapPath求出的路径!
2023-08-16 06:27:254

java中list的使用方法

import java.io.*;import java.awt.*; // AWT classes for the demo programimport javax.swing.*; // Swing GUI classes for the demo/** * This class contains a useful static method for listing all threads * and threadgroups in the VM. It also has a simple main() method so it * can be run as a standalone program. **/public class ThreadLister { /** Display information about a thread. */ private static void printThreadInfo(PrintWriter out, Thread t, String indent) { if (t == null) return; out.println(indent + "Thread: " + t.getName() + " Priority: " + t.getPriority() + (t.isDaemon()?" Daemon":"") + (t.isAlive()?"":" Not Alive")); } /** Display info about a thread group and its threads and groups */ private static void printGroupInfo(PrintWriter out, ThreadGroup g, String indent) { if (g == null) return; int num_threads = g.activeCount(); int num_groups = g.activeGroupCount(); Thread[] threads = new Thread[num_threads]; ThreadGroup[] groups = new ThreadGroup[num_groups]; g.enumerate(threads, false); g.enumerate(groups, false); out.println(indent + "Thread Group: " + g.getName() + " Max Priority: " + g.getMaxPriority() + (g.isDaemon()?" Daemon":"")); for(int i = 0; i < num_threads; i++) printThreadInfo(out, threads[i], indent + " "); for(int i = 0; i < num_groups; i++) printGroupInfo(out, groups[i], indent + " "); } /** Find the root thread group and list it recursively */ public static void listAllThreads(PrintWriter out) { ThreadGroup current_thread_group; ThreadGroup root_thread_group; ThreadGroup parent; // Get the current thread group current_thread_group = Thread.currentThread().getThreadGroup(); // Now go find the root thread group root_thread_group = current_thread_group; parent = root_thread_group.getParent(); while(parent != null) { root_thread_group = parent; parent = parent.getParent(); } // And list it, recursively printGroupInfo(out, root_thread_group, ""); } /** * The main() method create a simple graphical user interface to display * the threads in. This allows us to see the "event dispatch thread" used * by AWT and Swing. **/ public static void main(String[] args) { // Create a simple Swing GUI JFrame frame = new JFrame("ThreadLister Demo"); JTextArea textarea = new JTextArea(); frame.getContentPane().add(new JScrollPane(textarea), BorderLayout.CENTER); frame.setSize(500, 400); frame.setVisible(true); // Get the threadlisting as a string using a StringWriter stream StringWriter sout = new StringWriter(); // To capture the listing PrintWriter out = new PrintWriter(sout); ThreadLister.listAllThreads(out); // List threads to stream out.close(); String threadListing = sout.toString(); // Get listing as a string // Finally, display the thread listing in the GUI textarea.setText(threadListing); }}
2023-08-16 06:27:352

Crops grow well in the sout的意思?

sout?south吧,南方的玉米生长的很好
2023-08-16 06:27:541

C++中输入一段字母,然后在倒序输出,求高手解决

IN OUT 都没有分配空间。还有里面的下标也有问题。建议从0开始。
2023-08-16 06:28:052

c++ 强制类型转换由int到string

加头文件 #include <sstream>然后stringstream sout;int a;string s;sout<<a;s = sout.str();
2023-08-16 06:28:131

千岛湖最佳旅游月怎么去千岛湖?

如果打算去千岛湖游玩,可以了解一下相关的交通信息,当地的交通还是比较方便的。下面就由小编来告诉你具体的交通方式。可以提前看看相关攻略,跟小编一起来看看。最佳旅行时间千岛湖的雨季是6月到7月初,7月中下旬是伏旱季节。此时天气炎热,最佳游览时间为9-11月,秋高气爽,阳光明媚。冬天的时候,景区的景色会显得阴冷、沉闷,但此时的湖水是最纯净的。这个时候交通和住宿费用是最低的。:外部交通1.飞机千岛湖没有机场。可以坐飞机到杭州萧山机场,然后从机场转到杭州汽车西站,再坐大巴直达千岛湖,也可以在机场包车。2.火车青岛湖火车站不在千岛湖站,而是在邻近的建德市朱茂花园。每天两班火车,开往金华呵呵。建议坐火车到杭州,然后在杭州汽车西站换乘客车去千岛湖。杭州站:环城东路与西湖大道交叉口,从市站到西湖只有10分钟左右的车程。杭州站也是杭州的主要火车站,所有开往各个城市的列车都从这里发车。离火车站西湖不远,很方便。杭州东站:这是亚洲最大的交通目的地之一,这里有多种交通方式,高铁、普轨、专线、地铁、公交等。离杭州东站西湖只有29分钟车程,非常方便。杭州南站:杭州南站位于萧山区,前身是萧山火车站。3.教练千岛湖最重要的汽车站是淳安千岛湖汽车客运中心和阳光站。一般用公交车骑到自行车客运站。或者在机场乘坐机场大巴,这是一种非常方便的交通方式。千岛湖客运中心:杭州汽车西站到千岛湖客运站有班车,6:00-18:50,每40分钟一班。票价61元。也可以从杭州客运中心坐车到千岛湖客运中心。运营时间为7:50-18:20,票价70元。也可以选择从杭州东站广场骑自行车到千岛湖客运中心。运营时间为9:00-18:00,票价65元。阳光站:阳光站位于千岛湖镇阳光路。县城到各乡镇的客运班车都在这里发车,还有到杭州的城际大巴和旅游班车。钱江市场到阳光站有直达车,5:20-17:30。票价38元。4.自动驾驶如果想自驾去千岛湖,也是不错的选择。可以从上海、杭州、黄山等方向进入千岛湖,可以直接在那里导航。5.船千岛湖主要码头有客运码头和千岛湖镇-安徽沈度客运码头。千岛湖轮渡码头:千岛湖轮渡码头是一个非常重要的码头,也是当地居民乘船通勤的重要场所。客运站还有一个工作,就是旅游和邮轮。从黄山到千岛湖,可以到达这个码头。马周边景点不错,但是打车不容易。如果不是很远,我们建议你坐公交车。出了码头,走七八分钟,就有公交车了。到江家、汾口、威坪、梓潼等地的高速客船。普通客船有安徽沈度等十几条航线。6.班车杭州千岛湖班车始发站:1.吴山广场旅游集散中心,车次:每日多班车。2.汽车西站,地址:天目山路89号,车次:空调大巴和中巴大巴30分钟一班。3.汽车站天使分站,地址:艮山西路168号。4.海华酒店东侧,地址:武林路5-7号。内部交通1、游船千岛湖码头有游船直达湖中心和Sout的主要景点游艇套餐:豪华游艇150元,休闲游艇2500元/趟(含普通艇和以6人为基数的豪华艇,超出基数按实际人数计价)。套餐:A类1950元/船,以30人为基数。游船班次:8点、10点2.东南湖区交通:千岛湖镇出发时间10:00,毛竹返回时间12:20。船费是8元。如果你付船费到10元,还可以供应茶叶。船:9:00-13:00,每20分钟一班。你可以参观三个景点:黄山尖、天池岛和密山岛。你可以乘游艇游览桂花岛。2、出租车起步价:5元/2km,超过后,5km以内每公里2元,超过5km收取40%的返程津贴。3、公交车千岛湖开通9条公交线路。K004路公交车直达千岛湖新旅游码头。K001—K005的运行时间为:6:00—22:00,其他班次大部分为:7:00—17:30。
2023-08-16 06:28:211

c++代码转c#

你无聊吧
2023-08-16 06:28:373

keil 串口调试问题 command命令

首先你要先设置串口参数:MODE COM1 9600,0,8,1然后分配设备ASSIGN COM1<SIN>SOUT
2023-08-16 06:28:471

歌词里有i wanna sing i wanna sout 是什么歌

read all about it
2023-08-16 06:29:162

c++中烫的问题

出现 烫 是由于输出的字符串越界,加字符串结束符是解决办法#include <iostream>using namespace std;void myRevers(char * sIn, char * sOut){ static int i=0; int k; k=strlen(sIn); if(i<k) { *(sOut+i)=*(sIn+k-1-i); i++; myRevers(sIn,sOut); } else sOut[i]=0;}int main(){ char *s="sffaaaa",*output; char string[10]; output=string; myRevers(s,output); cout<<output<<endl; return 0;}
2023-08-16 06:29:231

c#如何读写修改bat文件

2023-08-16 06:29:313

如何在JSP上将WORD文档的内容在网页上显示出来

jsp代码如下:<%@page contentType="applicationnd.ms-excel;charset=gb2312" %><%String dm = request.getParameter("dm");String id = request.getParameter("id");%><jsp:useBean id="r" class="dx.MyDoc" scope="page"/><%ServletOutputStream sout = response.getOutputStream();java.io.InputStream in = null;if(dm!=null)in = r.fj(dm,"fj");elsein = r.fj2(id);byte b[] = new byte[0x7a120];// 创建byte数组用作缓冲 while (in.read(b) != -1) { sout.write(b); //输出字符流 } sout.flush(); sout.close();%>MyDoc.fj(),流的形式读入word文件即可,ie可以直接打开,其它浏览器提示下载,下载后是word 文件。
2023-08-16 06:29:441

C++编程题目 一维数组

#include <stdio.h>#include <malloc.h>int *input(int &n){int *array;printf("input n: ");scanf("%d", &n);printf("input %d numbers: ", n);array = (int*)malloc(n * sizeof(int));int i, flag, temp;for(i = 0, flag = 0; i < n; i++, flag++){ scanf("%d", &temp); if(flag == 0) array[i] = temp; else { for(int j = 0; j < flag; j++) { if(temp < array[j]) { int t = temp; temp = array[j]; array[j] = t; } } array[flag] = temp; } }return array;}void output(int *array, int n){ for(int i = 0; i < n; i++) printf("%d ", array[i]); printf(" ");}int main(){ int size = 0; int *array = input(size); output(array, size); free(array); return 0;}
2023-08-16 06:29:524

世界上有哪些著名风景名胜?

一生不可错过的世界20大美景1、美国大峡谷——The Grand Canyon美国大峡谷是一个举世闻名的自然奇观,位于西部亚利桑那州西北部的凯巴布高原上,总面积2724.7平方公里。由于科罗拉多河穿流其中,故又名科罗拉多大峡谷,它是联合国教科文组织选为受保护的天然遗产之一。2、澳大利亚的大堡礁——Great Barrier Reef世界上有一个最大最长的珊瑚礁群,它就是有名的大堡礁。它纵贯蜿蜒于澳洲的东海岸,全长2011公里,最宽处161公里。南端最远离海岸241公里,北端离海岸仅16公里。在落潮时,部分的珊瑚礁露出水面形成珊瑚岛。3、好望角——Cape Town到南非游览,千万不可错过到非洲尖端好望角参观的机会。好望角距离开普敦约六十公里,是大西洋和印度洋的交汇处。其实,好望角是一个突出的小山岬,过去曾被称为暴风角,因为这里的天气恶劣,昔日不少航船都在此处遇险。但在印度洋航线通航后,闻说当时的葡萄牙王便把她改名为好望角,因为登上角点,可以眺望到大西洋和印度洋的壮大景色。4、悉尼——Sydney  作为2000年奥运会的主办城市,悉尼市的最重要的特征可能就是悉尼港--世界上最著名的海港之一了。悉尼港上美丽的悉尼歌剧院和海港大桥更增加了它的知名度。 悉尼歌剧院和海港大桥是澳大利亚的象征。悉尼歌剧院是公认的20世纪世界七大奇迹之一,是悉尼最容易被认出的建筑,它白色的外表,建在海港上的贝壳般的雕塑体,象飘浮在空中的散开的花瓣,多年来一直令人们叹为观止。5、印度泰姬陵——Taj Mahal  坐落于印度古都阿格的泰姬陵,是世界七大奇迹之一,到印度旅游的人士,大都是慕它的盛名而来。这座世界七大建筑奇迹背后其实有一段哀怨缠绵的历史,了解它的历史的背景,确能增加观赏泰姬陵的趣味。   17世纪莫卧儿帝国皇帝沙杰汉为纪念其爱妃慕塔芝玛,动用了数万名工人,以宝石镶饰修建陵寝,图案之细致令人叫绝。泰姬陵最引人瞩目的是用纯白大理石砌建而成的主体建筑,皇陵上下左右工整对称,中央圆顶高六十二米,令人叹为观止。6、澳州艾尔斯岩-Uluru  在澳大利亚中部一望无垠的荒原地带,大自然鬼斧神工劈凿出好几处奇绝景物,其中最负盛名者当推艾尔斯岩。   艾尔斯岩高348米,长3000米,基围周长约8.5公里,东高宽而西低狭,是世界上最大的独块石头。它气势雄峻,犹如一座超越时空的自然纪念碑,突兀于茫茫荒原之上,在耀眼的阳光下散发出迷人的光辉。1873年一位名叫威廉*克里斯蒂*高斯的测量员横跨这片荒漠,当他又饥又渴之际发现眼前这块与天等高的石山,还以为是一种幻觉,难以置信。7、秘鲁印加遗址-Machu Picchu - Peru  20世纪初,人们传说在秘鲁安第斯山脉的崇山峻岭中有一座神秘的古城。西班牙人在长达300年的殖民统治期间对它一无所知,秘鲁独立后100年间也无人涉足。400多年的时光,只有翱翔的山鹰一睹古城的雄姿——   它,就是今天的马丘比丘印加遗址。8、拉斯维加斯——Las Vegas  拉斯维加斯是一个不可思议的人工化城市。当沿着15号高速公路逐渐接近市区时,任何人的目光都会被那闪耀的霓虹灯及极有特色的豪华观光旅馆所吸引,甚至于在完全脱离日常生活的幻境中迷失自我。这里是全世界的娱乐中心,所有城市的设计都是为了尽情的享乐。9、尼亚加拉瀑布——Niagara Falls 举世闻名的尼亚加拉瀑布位于加拿大和美国交界的尼亚加拉河上。它号称世界七大奇景之一,以其宏伟的气势、丰沛而浩瀚的水汽,震撼了所有前来观赏的游人。 尼亚加拉河是连接伊利湖和安大略湖的一条水道,仅长56公里,却从海拔174米直降至海拔75米,河道上横亘着一道石灰岩断崖,水量丰富的尼亚加拉河经此,骤然陡落,水势澎湃,声震如雷。10、埃及金字塔——The Pyramids - Egypt  据拜占庭菲罗所分类的七大奇观中,只有埃及金字塔巍然独存,目前埃及约有八十多座金字塔,始建于公元前2686年至公元前2181年。重点位于『基沙』『萨卡拉』及『孟斐斯』。它能被列为七大奇观之首,是因为在没有先进的科技协助下,单靠一些原始工具及人力,竟可建成如此宏伟的建筑。甚至现今最先进科技也未能做到,那古代埃及人到底是怎样建造?另外,金字塔的神秘至今仍是一个谜。无怪不少人认为金字塔是古代外星人留下的建筑物。更有人指出金字塔并非埃及人所建,而是外星文明所建的遗迹 。直饮水待续。
2023-08-16 06:30:034

VB6.0的部件中没有ADO控件,有会的么?告诉我怎么回事

工程-引用-找到Microsoft ActiveX Data Objects Library下面的示例代码以Northwinds数据库作为远程数据源,然后用ADO来访问它。首先在控制面板中打开“32位数据源”,单击“添加”按钮。在弹出的对话框中选择 "Microsoft ACCESS Driver (*.mdb)" 作为数据源驱动程序。 选择数据库Northwinds所在路径。单击完成,退出ODBC设备管理器。 启动一个新的VB工程,在窗体的Load事件中输入下面的代码: Private Sub Form_Load() Dim cn As ADODB.Connection Set cn = New ADODB.Connection "Set Connection properties cn.ConnectionString = "DSN=RDC Nwind;UID=;PWD=;" cn.ConnectionTimeout = 30 cn.Open If cn.State = adStateOpen Then _ MsgBox "Connection to NorthWind Successful!" cn.Close End Sub 按F5运行程序,看看,一个消息框弹出来告诉你连接成功了。请注意,这里我特别注明了是ADODB.Connection,而不是ADOR.Connection,这样做是为了将二者区分开(如果你引用了ADODB和ADOR的话,这样做很有必要)。连接字符串看上去同RDO的连接字符串差不多。事实上,二者确实差不多。 如果我们要访问一个SQL Server数据库,你的Connection代码看上去应象下面所示: "设置连接属性cn.Provider = "MSDASQL" cn.ConnectionString = "driver={SQL Server};" & "server=prod1;uid=bg;pwd=;database=main" cn.Open "Provider"属性指向SQL Server的OLE DB Provider. 回到我们的示例程序,让我们创建一个Recordset对象来访问“Orders”表,并从该表的"ShipCountry"字段中产生头十个不重复的国家名。修改窗体Load事件中的代码,让它看上去象下面这样。 Private Sub Form_Load() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sSQL As String Dim sOut As String Dim Count As Integer Set cn = New ADODB.Connection Set rs = New ADODB.Recordset " Set properties of the Connection. cn.ConnectionString = "DSN=RDC Nwind;UID=;PWD=;" cn.ConnectionTimeout = 30 cn.Open If cn.State = adStateOpen Then _ MsgBox "Connection to NorthWind Successful!" sSQL = "SELECT DISTINCT Orders.ShipCountry FROM Orders" Set rs = cn.Execute(sSQL) "Enumerate the recordset sOut = "" For Count = 1 To 10 sOut = sOut & rs("ShipCountry") & VBCrLf rs.MoveNext Next Count MsgBox sOut, VBExclamation, "ADO Results" cn.Close End Sub 不幸的是,目前这个Recrodset对象是只读的和forward cursor。如果你想要获取更多的功能,你需要创建一个独立的Recordset对象,该对象拥有自己的Connection属性,就象下面的代码所示: Private Sub Form_Load() Dim rs As ADODB.Recordset Dim sSQL As String Dim sOut As String Dim Count As Integer Set rs = New ADODB.Recordset sSQL = "SELECT DISTINCT Orders.ShipCountry FROM Orders" rs.Open sSQL, "DSN=RDC Nwind;UID=;PWD=;", adOpenDynamic "Report Recordset Connection information MsgBox rs.ActiveConnection, , "Connection Info" "Enumerate the recordset sOut = "" For Count = 1 To 10 sOut = sOut & rs("ShipCountry") & VBCrLf rs.MoveNext Next Count MsgBox sOut, VBExclamation, "ADO Results" rs.Close End Sub 上面代码返回的结果同前例一样,但是本代码中的Recordset是独立的。这一点是DAO和RDO做不到的。Recordset对象的Open方法打开一个代表从SQL查询返回的记录的游标。虽然你可以用Connection对象同远程数据源建立连接,但请记住,在这种情况下,Connection对象和Recordset对象是平行的关系。
2023-08-16 06:33:011

哪位高手懂得jsp网页里如何实现图片上传并且显示的教教我!拜托各位大神

<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*" %> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <%@ page import="java.io.*"%> <html> <body> <% <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //加载驱动程序类 Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=upload_Image","sa","sa"); //建立数据库联机,其中upload_Image为数据库名,sa为连接数据库的帐号及密码。 Statement stmt=con.createStatement(); ResultSet rs=null; //建立ResultSet(结果集)对象 int id= Integer.parseInt(request.getParameter("id")); //获得所要显示图片的编号id,并转换为整型 String sql = "select image from picturenews WHERE id="+id+""; //要执行查询的SQL语句 rs=stmt.executeQuery(sql); while(rs.next()) { ServletOutputStream sout = response.getOutputStream(); //图片输出的输出流 InputStream in = rs.getBinaryStream(1); byte b[] = new byte[0x7a120]; for(int i = in.read(b); i != -1;) { sout.write(b); //将缓冲区的输入输出到页面 in.read(b); } sout.flush(); //输入完毕,清除缓冲 sout.close(); } %> </body> </html>希望采纳
2023-08-16 06:33:201

英语crime怎么读

1、crime英[kra_m]美[kra_m],n.罪行;罪;犯罪活动;不法行为;不道德的行为;罪过;v.指控犯罪;判定犯罪;处罚军事犯。2、[例句]Morepoliceofficersoutonthebeatmayhelptocutcrime.增加巡逻的警察可能有助于减少罪行。
2023-08-16 06:33:281

东南亚的详细知识点 包括经纬位置 以及重要的国家和它的优势条件

东南亚(Sout heast Asia) 位于亚洲的东 南部,包括中 南半岛和马来 群岛两大部分 。中南半岛因位于中国以南而得 名,南部的细长部分叫马来半岛 。马来群岛散布在太平洋和印度 洋之间的广阔海域,共有两万多 个岛屿,分属印度尼西亚、马来 西亚、东帝汶、文莱和菲律宾等 国。东南亚地区共有11个国家:越南 、老挝、柬埔寨、泰国、缅甸、 马来西亚、印度尼西亚、文莱、 菲律宾、东帝汶、新加坡,面积 约457万平方千米。东南亚地处亚洲与大洋洲、太平 洋与印度洋的“十字路口”。马六甲 海峡是这个路口的“咽喉”,战略地 位非常重要。马六甲海峡地处马 来半岛和苏门答腊岛之间,全长 约900千米,最窄处仅有37千米 ,可通行载重20万吨的巨轮,太 平洋西岸国家与南亚、西亚、非 洲东岸、欧洲等沿海国家之间的 航线多经过这里。马六甲海峡沿 岸的国家有泰国、新加坡和马来 西亚,其中新加坡位于马六甲海 峡的最窄处,交通位置尤其重要 。中文名:东南亚 外文名:Southeast Asia 面积:457万平方千米 人口:5.6亿(2002年) 国家总数:11 经纬度:92°E~140°E ,10°S~23°26 "N
2023-08-16 06:33:441

结构体的名字可不可以与内部的成员名字相同?

struct A{ int a; int b;}a;main(){ a.a=1;}编译通过
2023-08-16 06:34:027

酱爆弟弟是Soutija Boy Tellem还是Soutija Boy? Tellem什么意思啊??

Soulja BoyTell"em 就是 tell them(缩写啊) “告诉他们”
2023-08-16 06:34:193

全世界排名前十的风景名胜是那些?

童话里王子与灰姑娘居住的美国约塞米蒂国家公园希腊圣托里尼岛----希腊著名的旅游胜地,爱琴海上的明珠,柏拉图笔下的自由之地,同时也是浪漫至极的啤酒乐园特立尼达和多巴哥海滨风光----加勒比海的绝世风情,让人想起了加勒比海岛的传奇之旅意大利道罗麦特山----意大利北部Val di Funes乡村的雄壮山色,道罗麦特山位于Bolzano以北的山区,是著名的风景区马尔代夫瓦宾法鲁岛----瓦宾法鲁岛以宁静和浪漫著称。在瓦宾法鲁岛上,时间仿佛是静止不动的。阳光虽然很灿烂,但是却不躁热;海风很轻柔,但是却有自己的力道。游客行走在瓦宾法鲁岛的沙滩上,不约而同的很小心很小心,似乎怕惊动了什么,怕破坏这里宁静的感觉。这样的感受,恐怕是独一无二的。奥地利蒂罗尔山区风光----蒂罗尔州是一个多山的地区,它西邻福拉尔贝格州,东接萨尔茨堡州和克恩腾州。蒂罗尔州被萨尔茨堡州分成了两个部分。其中面积较大的北蒂罗尔北边是德国巴伐利亚州,南边是意大利和瑞士。加拿大小猪湾----加拿大哈里法克斯附近的小村Peggy"s Cove小猪湾,优雅的北极圈渔村景致,恬淡而安适橡树园酒店----美国路易斯安那州Oak Alley Plantation橡树园酒店的老橡树甬道。酒店为三星级菲律宾吕宋岛马永火山----菲律宾吕宋岛东南部的活火山。在黎牙实比西北。有完整的火山锥。方圆达130多公里,高2,452米。顶端灰白色,由安山岩组成。上半部几无树木,下半部则林木郁葱。从1616年以来,爆发过二十多次,造成最大灾害的一次是1814年2 月1日,曾湮没了附近小镇。现仍喷出大量蒸汽。山脚下有硫黄温泉,对皮肤病有疗效。土壤肥沃,有大型蕉麻种植园。风景优美,为游览胜地。意大利米兰科莫湖----距米兰有一小时车程,风景如画,星球大战前传的爱情戏场景在这里拍摄,可见其景致之美。
2023-08-16 06:34:312

Soutcc南方高科怎样调配才能接发彩信?

先开通GPRS 开了之后过几个小时就可以上了1)连接名称: 中国移动梦网(GPRS) 2)数据承载方式: GPRS 3)接入点名称(或APN): cmwap 4)用户名: 无 5)密码: 无 6)鉴定: 普通 7 网关IP 地址: 10.0.0.172 端口 80 8)主页: http://wap.monternet.com; 可以随便写9)连接安全: 关
2023-08-16 06:34:483