文章 Jingwei Wang · 一月 19, 2023 6m read

什么是网页抓取:

简单来说,网络抓取网络收获网络数据提取是从网站收集大数据(非结构化)的自动化过程。用户可以根据需要提取特定站点上的所有数据或特定数据。收集的数据可以以结构化格式存储以供进一步分析。


网页抓取涉及的步骤:

  1. 找到您要抓取的网页的 URL
  2. 通过检查选择特定元素
  3. 编写代码获取被选元素的内容
  4. 以需要的格式存储数据

就这么简单!

用于网络抓取的流行库/工具是:

  • Selenium – 用于测试 Web 应用程序的框架
  • BeautifulSoup – 用于从 HTML、XML 和其他标记语言中获取数据的 Python 库
  • Pandas – 用于数据操作和分析的 Python 库


什么是Beautiful Soup?

Beautiful Soup 是一个纯 Python 库,用于从网站中提取结构化数据。它允许您解析来自 HTML 和 XML 文件的数据。它充当辅助模块,并以与使用其他可用开发人员工具以网页交互的方式与 HTML 交互。

  • 它通常可以为程序员节省数小时或数天的工作时间,因为它可以与您最喜欢的解析器(如 lxml 和 html5lib)一起使用,以提供 Python organic方式来导航、搜索、并修改解析树。
  • beautiful soup 的另一个强大而有用的功能是它可以智能地将正在获取的文档转换为 Unicode












0
0 369
文章 Lilian Huang · 一月 19, 2023 10m read

在上一篇文章中,我们看到了最常用的HL7消息类型之一--ADT(入院、出院、转院)的结构,以及ADT^A04的例子和它所有字段的描述。现在让我们来看看另一个数据流,它与测试订单的订购和履行有关。我说的是ORM(从2.5版本开始,你应该使用特定的消息来订购测试,如OMG、OML、OMD、OMS、OMN、OMI和OMP),ORL和ORU消息。在一个非常简化的情况下,数据的交换可能看起来像这样。

让我们更详细地看一下这些消息。

0
0 903
文章 Jingwei Wang · 一月 19, 2023 6m read

Python 已成为世界上使用最广泛的编程语言(来源:https://www.tiobe.com/tiobe-index/),SQL 作为数据库语言继续引领潮流。 Python 和 SQL 一起工作以提供 SQL 单独无法提供的新功能不是很好吗?毕竟,Python 拥有超过 380,000 个已发布的库(来源:https://pypi.org/),它们具有非常有趣的功能,可以在 Python 中扩展您的 SQL 查询。本文详细介绍了如何使用嵌入式 Python 在 InterSystems IRIS 数据库中创建新的 SQL 存储过程。

用作示例的 Python 库

本文将使用两个非常有用的库:Geopy 和 Chronyk。

Geopy 是一个用于将地理编码(地址和地理坐标的限定)应用于地址数据的库。有了它,就可以从街道名称中获取邮局格式的邮政编码和完整地址。非常有用,因为许多记录都有地址。

Chronyk 用于使用人类语言处理日期和时间。这非常有用,因为在内部,对于 IRIS 和 Python,日期是一个数字,表示自初始日期以来经过的时间量。对于人类来说,日期是 7 月 20 日,或者昨天,或者明天,或者两个小时前。 Chronyk 接受接收这样的日期,然后将其转换为通用日期格式。

InterSystems IRIS 中的 Python 支持

从 2021.1 版开

0
0 205
文章 姚 鑫 · 一月 19, 2023 3m read

第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告

Microsoft Windows 平台的 IRIS 性能数据报告

  • %SS - 使用 ALL^%SS 命令在运行过程中采集了四个样本。

  • Configuration * - 来自服务器的 IRIS 实例名称和主机名、完整的 IRIS 版本字符串、许可客户名称和许可订单号。

  • cpf file * - 当前活动配置文件的副本。

  • irisstat -c - 使用命令 .\bin\irisstat -s -p-1 -c-1 -e1 -m8 -n2 -N127 在运行过程中以均匀间隔采集四个样本。以下是对每个参数的简要说明:

    • -p-1: 对进程表进行采样以包括进程和全局状态信息。
    • -c-1: 对共享内存的计数器部分进行采样以显示日志、锁、磁盘和资源使用统计信息。
    • -e1: SYSLOG 错误表。
    • -m8: 文件表,其中包括所有 IRIS.DAT 文件及其属性。
    • -n2: 网络结构表,包括本地到远程数据库的映射。
    • -N127: 客户端和服务器连接的 ECP 统计信息。
  • irisstat -D - 使用命令 irisstat cache --f1 -D10,100 在运行过程中以均匀的间隔采集八个样本。以下是对

0
0 127
文章 Lilian Huang · 一月 19, 2023 4m read

动机

这个项目是在我考虑如何通过Embedded Python让Python代码自然地处理IRIS globals所提供的可扩展的存储和高效的检索机制时想到的。

我最初的想法是使用globals创建一种Python字典的实现,但很快我就意识到,我应该首先处理对象的抽象问题。

所以,我开始创建一些可以包装Python对象的Python类,在globals中存储和检索它们的数据,也就是说,在IRIS globals中序列化和反序列化Python对象。

它是如何工作的?

像 ObjectScript 的%DispatchGetProperty()%DispatchSetProperty() 和%DispatchMethod()一样, Python 有委托对象的属性和方法调用的方式。

当你设置或获取一个对象属性时,Python 解释器让你通过方式 __setattr__(self, name, value) 和 __getattr(self, name)__来截获这个操作。

请看这个相当基本的例子。

>>> class Test:
...         def __init(self, prop1):
...                 self.prop1 = prop1
...         def __setattr__(self, name, va
0
0 248
文章 Louis Lu · 一月 19, 2023 4m read

您可能还记得在 InterSystems 2022年全球峰会以及 2022.2 版本发布的网络研讨会上,我们发布了一项令人兴奋的新功能——列存储,它可以纳入您 InterSystems IRIS 的解决方案中。 列存储引入了一种存储SQL表数据的替代方法,它为分析查询提供了数量级的加速。 最新的2022.3开发预览版在原有的基础上包括一系列我们认为值得在这里宣布的更新。

快速回顾

如果您不熟悉InterSystems IRIS 的列存储,请观看这段简短的介绍视频以及相关该主题的2022全球峰会内容。 简而言之,我们使用新的$vector数据类型将表数据编码为每列 64k 个值的块。 $vector是一种仅限内部使用的数据类型(目前),它利用自适应编码方案来实现稀疏和密集数据的高效存储。 编码还针对一系列专用$vector操作进行了优化,例如一次计算64k 值的整个块的聚合、分组和过滤,并在可能的情况下利用芯片的SIMD指令

在SQL查询时,我们构建对这些块直接进行操作的查询计划,正如您所想象的,与传统的逐行处理相比,这大大减少了执行查询所需的IO量和ObjectScript指令数。 当然,与面向行且对于单值的操作相比,这个的IO消耗更大,$vector的操作也更重一些,但收益是巨大的。 我们使用一个专业术语矢量化查询计划来表示处理$vector数据的执行策略,通过一系列快速

0
0 201
文章 Louis Lu · 一月 19, 2023 11m read

 

这篇文章主要介绍 HL7 V2.5.1 标准是如何定义查询类请求,以及查询类响应的。相关HL7 V2 的更多基础知识可以参考:HL7v2到底是什么?! 的一系列文章。

1     查询标准的发展

1.1  最早的查询模式

最初,HL7的查询参数通过QRD以及QFR 字段传入。因为这两个字段的设计是为了满足所有的查询需求,所以这两个字段的定义非常随意。

1.2  加强的查询模式

从HL7 V2.3开始,引入了加强版的查询模式,它包含了四种方式:

•      嵌入式查询语言类请求查询:自由格式的select SQL语句

•      虚拟表类请求查询:基于特定的select 条件查询服务端的数据库表

•      存储过程类请求查询:执行服务端的存储过程返回数据

•      事件类请求查询:返回基于特定事件的查询结果

1.3  基于2.4 版本的查询

HL 7 v2.3.1之后的版本更清晰地将请求查询的方式与返回查询数据的方式分开,并且强调了“符合性声明”的存在。 HL 7继续支持存储过程、事件查询和虚拟表查询的语义,但推荐使用新的查询方式,即按参数查询(QBP),使语法更清晰。

QBP查询的目的是在一个精确的一致性声明的框架内统一存储过程、事件和虚拟表查询的语义。

同时该标准仍可以继续使用最初模式查询(QRD/QRF),但使用新的查询

0
0 1048
文章 姚 鑫 · 一月 18, 2023 3m read

第四十九章 使用 ^SystemPerformance 监视性能 - 复制配置文件

复制配置文件

可以使用以下 API 命令将现有配置文件复制到具有不同名称的文件:

set rc=$$copyprofile^SystemPerformance("sourceprofilename","targetprofilename")

必须指定:

  • sourceprofilename - 现有配置文件的名称
  • targetprofilename - 要创建的配置文件的名称。这必须用双引号引起来。

如果成功,该函数返回 1。如果不成功,它返回一个 0 后跟一个 carat 和任何错误的原因。

其中 sourceprofilename 是现有配置文件的名称,targetprofilename 必须是唯一的并且不能包含空格或空白字符。

例如,要复制 2minrun 配置文件,请输入以下内容:

set rc=$$copyprofile^SystemPerformance("2minrun","5minrun")

下次运行 ^SystemPerformance 实用程序时,配置文件列表包括以下配置文件名称和说明:

2minrun     A 2-minute run sampling every 30 seconds
5minrun     A 2-minute run sampling every
0
0 161
文章 Michael Lei · 一月 17, 2023 3m read

ZPM 设计用于与 InterSystems IRIS 数据平台的应用程序和模块一起使用。 它由两个组件组成:ZPN 客户端(用于管理模块的 CLI)和注册表(模块和元信息的数据库)。 我们可以使用 ZPM 来搜索、安装、升级、移除和发布模块。 使用 ZPM,可以安装 ObjectScript 类、前端应用程序、互操作性生产环境、IRIS BI 解决方案、IRIS 数据集或任何文件,例如嵌入式 Python wheel。 

今天的这份实战宝典将分为 3 个部分:

  1. 安装 ZPM
  2. 生成模块
  3. 在注册表中查找、安装、发布模块
  1. 安装 ZPM
  • 下载最新版本的 ZPM(它应该是一个 XML 文件)下载链接
  • 将下载的 XML 导入到 IRIS(它只能部署到已打开 IRIS 的 IRIS 终端)并按 Enter 键

write $SYSTEM.OBJ.Load("C:\zpm.xml", "c")

请注意,“C:\zpm.xml”是下载的 XML 文件的路径,这一步可能需要一些时间。

  • 安装完成后,只需输入 zpm,按 Enter 键,您会看到您在 zpm shell 中
  1. 生成模块

在开始生成模块之前,我们需要准备一个文件夹,里面有一个或多个可以加载的文件,因此我在 C 盘下创建了一个名为 zpm 的文件夹。

执行命令 generate C:/zpm

在指定所有必要的内容后,

0
0 235
文章 Michael Lei · 一月 17, 2023 3m read

每秒插入大量记录,同时同步进行实时查询的能力称为混合事务分析处理 (HTAP)。 它也被称为 Transactional analytics 或 Transanalytics 或 Translytics,当存在来自工业物联网传感器的持续实时数据流或股票市场的波动数据时,它是非常有用的技术,并且允许实时或接近实时地查询这些数据集。

在本文中我将分享我在不同平台上运行带有测试流数据的演示,同时进行持续插入和持续查询,看看每个平台上有何不同反应,如在每个平台上输入和输出数据的速度以及它们的性能。 我在本演示中试验的平台包括:InterSystems IRIS、MariaDB 和 MySQL。

试验结果

20秒的测试时间里:

插入数据条数查询次数插入数据大小查询数据大小
IRIS708,00059,000184M15.217M
MariaDB98,00023,67925M6.69M
MySQL38,00011,9479.869M2.45M

本演示的视频https://www.loom.com/share/8e30930232db4b18ac455e310226575d

需要环境

Docker 和 Docker Compose

本地运行

我们在三个不同的平台(MySQL、MariaDB 和 InterSystems IRIS 社区

0
0 194
公告 Claire Zheng · 一月 16, 2023

亲爱的开发者社区成员们,

我们非常高兴地与您分享最新的开发者社区功能!

🔥 您的 2022 年回顾 🔥  

现在,您可以生成个性化“2022 年活动概要”——体现了您在2022年在开发者社区的主要活动,包括发帖数量、评论、视图、热门和最喜欢的帖子/标签等等!

0
0 180
文章 姚 鑫 · 一月 14, 2023 3m read

第四十五章 使用 ^SystemPerformance 监视性能 - Abort ^SystemPerformance

Abort ^SystemPerformance

如果要停止正在运行的配置文件,可以中止数据收集,并可选择使用 $$Stop^SystemPerformance(runid) 命令删除配置文件的所有 .log 文件。例如,要中止由 runid20111220_1327_12hours 标识的报告的数据收集并删除到目前为止写入的所有 .log 文件,请在终端的 %SYS 命名空间中输入以下命令:

do Stop^SystemPerformance("20111220_1327_12hours")

要在不删除日志文件的情况下停止作业并从这些日志文件生成 HTML 性能报告,请输入:

do Stop^SystemPerformance("20111220_1327_12hours",0)

有关此命令的更多信息,请参阅以编程方式运行 ^SystemPerformance 小节中的 $$Stop^SystemPerformance("runid")

注意:必须有权停止jobs和删除文件。

以编程方式运行 ^SystemPerformance

可以使用启动、收集、预览和停止功能的入口点以编程方式运行 ^SystemPerformance 实用程序,如下表所述:

注意:

0
0 126
文章 Hao Ma · 一月 12, 2023 10m read

InterSystems公司的技术支持中心WRC(World Response Center)提供的服务包括故障报修,升级和数据迁移支持等等。当客户报告了系统故障或性能问题给WRC时, 会被要求收集以下的两份报告,以了解系统的运行情况和性能表现,它们是:诊断报告(Diagnostic Report)和系统性能报告

诊断报告(Diagnostic Report)

有关诊断报告,您需要知道:

  1. 诊断报告是当前系统的运行状况的数据收集。
  2. 是给InterSystems技术支持工程师的,维护人员基本不需要读它。
  3. 当出现紧急故障需要重启系统时,先做一次诊断报告的收集,会对WRC在故障过后分析故障原因提供极大的便利。

报告收集的步骤

进入管理门户页面,“系统管理>诊断报告”(System Operation > Diagnostic Reports),点击运行

  • 报告收集通常需要5-10分钟

  • 执行开始后屏幕会出现提示:诊断报告在…时间运行.报告将储存在…目录中。成功后可以在“系统管理>任务管理器>任务历史“看到记录收集成功的记录。

  • 在运行前,您可以选择报告存放的位置(Diectory for archived reports).

    • 如果不填写,默认报告保存的目录是install-dir\mgr

      ⚠️ :收集报告由内部用户irisuser执行,所以您选

example

0
0 331
公告 Hao Ma · 一月 12, 2023

我很高兴地宣布 ObjectScript 包管理器 ZPM 的生命周期中的一个里程碑。包管理器使开发人员能够以一种方便的方式巧妙地打包 ObjectScript 代码和部署配置设置以及版本信息。在过去的几年里,它已经发展成为许多开发工作流程中不可或缺的一部分。

事实证明,InterSystems 决定使用它来打包我们自己的组件非常重要,这促使我们决定将 GitHub 存储库从社区移至我们的公司存储库,并将其重命名为InterSystems Package Manager (IPM)IPM 仍将是开源的。社区成员将能够审查代码并提交拉取请求。但这种变化使我们能够以非员工能够直接对代码库进行更改的方式确保软件的安全性。更高级别的安全性和信任对于可以将代码与您的数据一起安装的软件来说至关重要。

所以请和我一起庆祝 ZPM 的生命,欢迎 IPM 的诞生,并感谢贡献者——尤其是 Nikolay Soloviev 和@Dmitry Maslennikov,他们再次展示了对开发人员需求的惊人洞察力,以及技能和奉献精神构建出色的软件!

---

https://github.com/intersystems/ipm

0
0 248
文章 姚 鑫 · 一月 11, 2023 4m read

第四十一章 使用^%SYS.MONLBL检查例程性能 - 逐行监控报告示例

本节包含 ^%SYS.MONLBL 例程生成的各种报告的示例:

Line-by-line Detail Report

Line-by-line Summary Report

Line-by-line Delimited Output Report

Line-by-line Procedure Level Report

Line-by-line Detail Report

以下是报告所选期刊实用程序的最小指标详细信息的示例,包括覆盖率分析。报告被发送到 monlbl_JRN_dtl.txt 文件,其中显示了一部分。

Line-by-Line Monitor
 
1.) Stop Monitor
2.) Pause Monitor
3.) Clear Counters
4.) Report - Detail
5.) Report - Summary
6.) Report - Delimited (CSV) Output
7.) Report - Procedure Level
 
Enter the number of your choice: 4
Include Coverage Analysis summary (Y/N)? y
 
The following routines have been exec
0
0 110
公告 Claire Zheng · 一月 10, 2023

亲爱的社区开发者们,

我很高兴地向大家介绍一位我们的新版主 @牛宇翔

@牛宇翔 目前担任首都医科大学附属北京友谊医院信息中心临床组组长。

以下是@牛宇翔 的自我介绍:

本人有接近10年的医疗信息化经验,目前在我院,带领一个微型小团队,基于Ensemble数据库做医院信息系统(Hospital Information System, HIS)应用端研发,我们团队熟悉HTML、CSS、JavaScript及衍生前端语言,日常工作主要根据用户需求开发对应功能,结合临床业务难点痛点,不断优化程序功能。经过两年的学习和努力,我们团队已完成临床新增功能和优化需求共计一千余条,随着科室人力的发展,我们的开发力量会越来越强,可以更好地保证临床需求的及时响应,不断优化和完善系统BUG,提高临床工作效率。与此同时,我还担任应急小组成员,负责进行数据库运维和问题处理,保证第一时间排查故障。

InterSystems 提供了一个非常优秀的集成平台,借助该技术,给我们业务带来了非常大的便利。我也希望这么优秀的技术,能给更多的兄弟单位和合作伙伴创造价值。我也希望能够在社区与大家一起交流,分享自己的一些实践经验;同时也希望借助这个平台,向大家学习一些优秀的实践。我们一起成长,共同进步!

再次欢迎我们的新版主 @牛宇翔👏🏼👏🏼👏🏼👏🏼👏🏼

期待你在InterSystems开发者社区成长为一

1
0 311
文章 姚 鑫 · 一月 8, 2023 3m read

第三十八章 使用^%SYS.MONLBL检查例程性能

例程^%SYS.MONLBL为监视器工具提供用户界面。该实用程序提供了一种方法来诊断在例程中执行选定代码所花费的时间,从而帮助识别特别耗费资源的代码行。它是现有监视器实用程序的扩展,可通过^PerfMon%Monitor系统程序包类访问。由于这些实用程序共享相同的内存分配,因此一次只能在IRIS实例上运行其中一个实用程序。

调用逐行监视例程

如果在调用^%SYS.MONLBL时监视器没有运行,则例程会显示一条警告消息,并提供启动监视器或检查内存要求的选项。例如:


%SYS>Do ^%SYS.MONLBL
  
  
WARNING ! Starting the line-by-line monitor will enable the
  collection of statistics for *every* line of code executed by
  the selected routines and processes. This can have a significant
  impact on the performance of a system, and it is recommended
  that you do this on a 'test' system.
 
  The line-by-l
0
0 112
问题 water huang · 十一月 20, 2022

请问下,项目上数据库用的是cache2010 ,有些文件是部署的,现在想要备份,在cache2016里面可以导出obj为xml,但是cache2010 导出的时候会报错,ERROR #6080: Can not export 'OBJ' type in %RO format for item “xxxxx” 要报错 。

2
0 260
文章 姚 鑫 · 一月 7, 2023 4m read

第三十七章 使用 ^PROFILE 监控例程性能 - Using ^PROFILE

  • 当显示子例程标签列表(以及每个标签的指标)时,可以指定以下任何一项
OptionDescription
#要更详细地分析的子例程标签(在代码中)的行号。按 Enter 后,将显示指定标签的代码。
B显示列表的上一页。
L切换到子程序的行级显示。
N显示列表的下一页。
Q退出列表,返回上一级。
R使用最新指标刷新列表。注:如果列表中显示*UNKNOWN*,请输入R

当显示代码行时,系统会提示指定下一步要执行的操作。的选择包括:

OptionDescription
#要更详细地分析的代码中的行号。按Enter键后,将显示指定标签的代码。
B显示列表的上一页。
C在源代码和中间(INT/MVI)代码之间切换代码显示。
M更改页边距和长度。
N显示列表的下一页。
O根据不同的指标对页面进行重新排序。
Q退出列表,返回到上一级别。
R使用最新指标刷新列表。
S切换到例程的子例程级别显示。

^PROFILE 示例

以下是在终端中以交互方式运行^配置文件实用程序(从%sys命名空间)的示例:

  1. 输入以下命令:
do ^PROFILE
  1. 此时将显示以下消息。
WARNING: T
0
0 107
文章 姚 鑫 · 一月 6, 2023 3m read

第三十六章 使用 ^PROFILE 监控例程性能 - Using ^PROFILE

^PROFILE 实用程序可帮助程序员分析其应用程序例程和类的性能。它分两个阶段完成此任务:

  1. 它收集数据,按例程级别分类,以帮助您确定哪些例程最“有效”。
  2. 它允许选择要收集的例程并在行级别详细显示数据(子例程、过程和单独的行),以便可以“向下钻取”到可能导致性能问题的各个例程。

默认情况下,^PROFILE 捕获最多 5000 个例程的指标;如果没有足够的共享内存可用于最大数量的例程,该实用程序会显示一条消息,说明监视此集合所需的内存页数和可用页数。然后,该实用程序会捕获尽可能多的例程的指标。

Using ^PROFILE

%SYS 命名空间调用 (^PROFILE) 实用程序:

%SYS>do ^PROFILE

当系统提示开始收集数据时,按 Enter

注意:当系统提示回答(是或否除外)时,可以输入显示联机帮助。

默认情况下,配置文件显示具有以下指标的例程编号列表;最初,列表按 RtnLine 指标排序:

Column Title (Metric)Description
RtnLine执行的例程代码行数。默认情况下,它将值列为所有已执行代码行的百分比。
Time执行例程所用的时间。默认情况下,时间列为所有例程使用的总时间的百分比。
CPU用于执行例程的
0
0 139
文章 Nicky Zhu · 一月 6, 2023 8m read

国务院于2022年12月19日发布了《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》(后简称《数据二十条》),如何有效利用数据已经成为下一步的趋势。另一方面,无论是基于数据中台还是数据编织理念,两者也都对如何利用数据提出了构想。因此医疗行业数字化建设的目标已不能再局限于如何收集数据,建立医疗行业数据的流通机制将会是为越来越普遍的需求。

时钟拨回几年前,数据中台概念开始火爆。人们对数据中台的定义、诠释尽管有诸多差异,通过数据中台降低数据共享和利用的成本则是共同的期望。但经过这几年的探索之后,中台已死的观点也在涌现。究其原因,除去中台概念在技术上的不确定,数据流通过程中的责权益的不清晰也是严重的制约因素。毕竟,数据中台自身作为一套技术框架并不能代替法律法规与市场自动将数据转变为商品从而创造出流通价值。

那么,如何能够使数据的流通合规合法,使数据能够如货币和商品一般自由流动,则是我们需要思考和探索的主题,这次《数据二十条》的出现,无疑为医疗信息技术工作者提供了一个明确的思考方向。

0
0 357
问题 Undefined Undefined · 九月 23, 2022

Journaling is NOT on. Updates will NOT be journaled
*** Missing previous 1 files that may contain TSTARTs

ERROR: <ZFILE>ScanForOpenTrans+42^JRNRESTB

There is a problem with searching for open transactions in older files.
If you decide to continue, transactions started in files earlier than
the first one to be restored might remain open after the restore.

Do you want to abort? Yes => No

请问什么情况下会触发出现Do you want to abort?

在门户网站查看数据库Global Journal也是勾选上的.

2
0 214
问题 water huang · 十一月 17, 2022

环境是windows server2012 r2 standard+ensemble2016.

新搭建的环境,安装ensemble的时候,选的是正常模式,就是设置了密码,然后新建了命名空间,发布了bs服务(webservice服务),访问的时候需要用户密码,如果在安全里面的web应用程序里面设置为不需要密码,不勾选密码,就访问不了服务,production页面都进不去。这个还需要什么配置吗?期望的效果是,登录portal需要用户名密码,但是对应某些命名空间发布的web服务,不需要用户密码就能访问

3
0 336