当前位置: 首页 > news >正文

Web服务(Web Service)

简介

Web服务(Web Service)是一种Web应用开发技术,用XML描述、发布、发现Web服务。它可以跨平台、进行分布式部署。
Web服务包含了一套标准,例如SOAP、WSDL、UDDI,定义了应用程序如何在Web上实现互操作。
Web服务的服务端和客户端使用简单对象访问协议(SOAP)进行通信,通信的双方可以使用不同的编程语言、运行在不同的平台上。

简单对象访问协议(SOAP:Simple Object Access Protocol)

总体介绍

SOAP是一个基于XML的轻量级的协议,用于在去中心化的、分布式环境中交换结构化的、有类型的信息。是 Web服务的通信协议。
SOAP本身没有定义任何应用语义(例如一种编程模型)或者定义实现特有的语义,它只是通过提供一个模块化的包模型、通过一种编码机制(用于对模块内的数据编码),来定义一种简单的机制,用来表达应用语义。这样就使得SOAP可以用在各种各样的系统中,从消息系统到远程过程调用(RPC)。

一个SOAP消息用于请求一个web服务,例如远程过程调用(RPC)。但SOAP不仅仅、也不是必须用于RPC。

SOAP协议运行在其它协议之上,例如HTTP协议。

SOAP版本:SOAP 1.1、SOAP 1.2,两者都是W3C的标准。Web服务部署的时候可以两个版本都支持。

SOAP 1.1

协议介绍

SOAP 1.1协议:https://www.w3.org/TR/2000/NOTE-SOAP-20000508/

SOAP 1.1包含如下三个部分:

  • SOAP 信封(envelope),定义了一个总体框架,用于表达消息内是什么、谁应该处理这个消息、是可选的还是强制的。
  • SOAP 编码规则(encoding rules),定义了一种序列化机制,用于交换应用定义的数据类型实例。
  • SOAP RPC表达,定义了一个规则,用来表达远程过程调用(RPC)和响应。

一个SOAP消息就是一个XML文档,其中必须包含一个SOAP envelope和一个SOAP body,一个可选的SOAP header。

SOAP 1.1不依赖于传输协议,可以和多种传输协议结合,例如HTTP协议、java消息服务(JMS)。

SOAP独立于操作系统、不绑定某一个编程语言或者组件技术。
只要客户端能发出XML消息就行,用什么技术实现客户端无关紧要。类似地,服务可以用任何语言来实现,只要服务能处理SOAP消息就行。客户端和服务端可以运行在任何合适的平台上。

消息示例(用于RPC的场景)

本示例来自SOAP 1.1协议:https://www.w3.org/TR/2000/NOTE-SOAP-20000508/。
更多示例请参考协议中的附录A:https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383539

备注:本示例中SOAP消息底层绑定了HTTP协议

示例中,一个GetLastTradePrice SOAP请求发送给StockQuote 服务。请求有一个字符串类型的参数(ticker symbol),在 SOAP 响应中返回一个float类型的值。

内嵌到HTTP 请求中的SOAP请求消息:

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:GetLastTradePrice xmlns:m="Some-URI"><symbol>DIS</symbol></m:GetLastTradePrice></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

内嵌到HTTP 响应中的SOAP 响应消息:

HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/><SOAP-ENV:Body><m:GetLastTradePriceResponse xmlns:m="Some-URI"><Price>34.5</Price></m:GetLastTradePriceResponse></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP 1.2

协议介绍

SOAP 1.2包含三个部分、另外包含一些断言和一套测试集:

  • Part 0:入门https://www.w3.org/TR/soap12-part0/
    描述了有代表性的SOAP消息结构和消息交互模式,通过各种使用场景描述了SOAP的特征,目的是为SOAP 1.2特征提供一个更加容易理解的指南,帮助技术开发者理解SOAP怎么使用。

  • Part 1:消息框架https://www.w3.org/TR/soap12-part1/
    这部分提供了一个处理模型、一个扩展性模型、一个底层协议绑定框架、和SOAP消息结构。

  • Part 2:附加部分https://www.w3.org/TR/soap12-part2/
    描述了SOAP数据模型、SOAP编码、SOAP RPC表示、描述特性和绑定的惯例、SOAP提供的消息交互模式、SOAP HTTP绑定。

消息示例(用于多轮交互的旅行预订场景)

本示例来自SOAP 1.2版本的part0:https://www.w3.org/TR/soap12-part0/

备注:本示例只演示SOAP消息,而暂时不管底层绑定了什么协议。

例1:从旅行预订应用 -》旅行预订服务,发起旅行预订请求

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header><m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference><m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime></m:reservation><n:passenger xmlns:n="http://mycompany.example.com/employees"env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><n:name>Åke Jógvan Øyvind</n:name></n:passenger></env:Header><env:Body><p:itineraryxmlns:p="http://travelcompany.example.org/reservation/travel"><p:departure><p:departing>New York</p:departing><p:arriving>Los Angeles</p:arriving><p:departureDate>2001-12-14</p:departureDate><p:departureTime>late afternoon</p:departureTime><p:seatPreference>aisle</p:seatPreference></p:departure><p:return><p:departing>Los Angeles</p:departing><p:arriving>New York</p:arriving><p:departureDate>2001-12-20</p:departureDate><p:departureTime>mid-morning</p:departureTime><p:seatPreference/></p:return></p:itinerary><q:lodgingxmlns:q="http://travelcompany.example.org/reservation/hotels"><q:preference>none</q:preference></q:lodging></env:Body>
</env:Envelope>

例2:从旅行预订服务 -》 旅行预订应用,返回响应,提供机场列表供选择

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header><m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference><m:dateAndTime>2001-11-29T13:35:00.000-05:00</m:dateAndTime></m:reservation><n:passenger xmlns:n="http://mycompany.example.com/employees"env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><n:name>Åke Jógvan Øyvind</n:name></n:passenger></env:Header><env:Body><p:itineraryClarification xmlns:p="http://travelcompany.example.org/reservation/travel"><p:departure><p:departing><p:airportChoices>JFK LGA EWR </p:airportChoices></p:departing></p:departure><p:return><p:arriving><p:airportChoices>JFK LGA EWR </p:airportChoices></p:arriving></p:return>  </p:itineraryClarification></env:Body>
</env:Envelope>

例3:从旅行预订应用 -》 旅行预订服务,选择了机场

<?xml version='1.0' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header><m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference><m:dateAndTime>2001-11-29T13:36:50.000-05:00</m:dateAndTime></m:reservation><n:passenger xmlns:n="http://mycompany.example.com/employees"env:role="http://www.w3.org/2003/05/soap-envelope/role/next"env:mustUnderstand="true"><n:name>Åke Jógvan Øyvind</n:name></n:passenger></env:Header><env:Body><p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"><p:departure><p:departing>LGA</p:departing></p:departure><p:return><p:arriving>EWR</p:arriving></p:return></p:itinerary></env:Body>
</env:Envelope>

SOAP 1.1 和 SOAP 1.2之间的变化

https://www.w3.org/TR/soap12-part0/#L4697

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web服务描述语言(WSDL:Web Services Description Language)

简介

WSDL是XML格式,用于描述Web服务。
WSDL 1.1版本W3C发布出来仅仅用于讨论,但没有批准。
WSDL 2.0版本是被W3C批准的正式版本。

WSDL 1.1

https://www.w3.org/TR/2001/NOTE-wsdl-20010315

包含如下几部分:

  • 服务定义
  • SOAP绑定
  • HTTP GET 和 POST绑定
  • MIME绑定

WSDL 2.0

介绍

WSDL 2.0包括3部分:

  • part 0 入门:https://www.w3.org/TR/wsdl20-primer/
    本部分包含WSDL 2.0基本知识、导入机制、扩展性和预先定义的扩展、杂项。
  • Part 1 核心:https://www.w3.org/TR/wsdl20/
    本部分包含组件模型、类型、模块化、文档、语言扩展性、定位 WSDL 2.0文档。
  • Part 2 附件:https://www.w3.org/TR/wsdl20-adjuncts/
    本部分包含预先定义的消息交互模式、预先定义的扩展、预先定义的行为样式、WSDL SOAP绑定扩展、WSDL HTTP绑定扩展。

WSDL 2.0文档样例

样例来自:https://www.w3.org/TR/wsdl20-primer/#basics-greath-scenario

<?xml version="1.0" encoding="utf-8" ?> 
<description xmlns="http://www.w3.org/ns/wsdl"targetNamespace= "http://greath.example.com/2004/wsdl/resSvc" xmlns:tns= "http://greath.example.com/2004/wsdl/resSvc"xmlns:ghns = "http://greath.example.com/2004/schemas/resSvc"xmlns:wsoap= "http://www.w3.org/ns/wsdl/soap"xmlns:soap="http://www.w3.org/2003/05/soap-envelope"xmlns:wsdlx= "http://www.w3.org/ns/wsdl-extensions"><documentation>This document describes the GreatH Web service.  Additional application-level requirements for use of this service -- beyond what WSDL 2.0 is able to describe -- are available at http://greath.example.com/2004/reservation-documentation.html</documentation><types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://greath.example.com/2004/schemas/resSvc"xmlns="http://greath.example.com/2004/schemas/resSvc"><xs:element name="checkAvailability" type="tCheckAvailability"/>    <xs:complexType name="tCheckAvailability">     <xs:sequence>      <xs:element  name="checkInDate" type="xs:date"/>      <xs:element  name="checkOutDate" type="xs:date"/>      <xs:element  name="roomType" type="xs:string"/>      </xs:sequence>     </xs:complexType>   <xs:element name="checkAvailabilityResponse" type="xs:double"/>    <xs:element name="invalidDataError" type="xs:string"/>    </xs:schema>    </types><interface  name = "reservationInterface" ><fault name = "invalidDataFault"element = "ghns:invalidDataError"/> <operation name="opCheckAvailability" pattern="http://www.w3.org/ns/wsdl/in-out" style="http://www.w3.org/ns/wsdl/style/iri"wsdlx:safe = "true"><input messageLabel="In" element="ghns:checkAvailability" /><output messageLabel="Out" element="ghns:checkAvailabilityResponse" /><outfault ref="tns:invalidDataFault" messageLabel="Out"/></operation></interface><binding name="reservationSOAPBinding" interface="tns:reservationInterface"type="http://www.w3.org/ns/wsdl/soap"wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"><fault ref="tns:invalidDataFault" wsoap:code="soap:Sender"/><operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/></binding><service name="reservationService" interface="tns:reservationInterface"><endpoint name="reservationEndpoint" binding="tns:reservationSOAPBinding"address ="http://greath.example.com/2004/reservation"/></service></description>

统一描述、发现和集成(UDDI:Universal Description, Discovery and Integration)

备注:OASIS已经宣布关闭了UDDI技术委员

UDDI基于XML,规定如何注册、分发、发现 Web服务。发布的标准有 V2和V3。

UDDI Version 2 OASIS标准包含如下部分:
https://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv2
在这里插入图片描述

UDDI Version 3 OASIS标准包含如下部分:
https://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm#uddiv3
在这里插入图片描述

支持带附件的SOAP消息Java接口(SAAJ:SOAP with Attachments API for Java interface)

SAAJ提供了利用Java编程模型在互联网上发送XML SOAP消息的标准方法,SOAP消息可以携带附件(例如附件是二进制形式)。SAAJ用来处理 SOAP消息,例如读、写、发送和接收。

主要的类和接口:
https://www.ibm.com/docs/en/was/9.0.5?topic=SSEQTP_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/cwbs_saaj.htm
在这里插入图片描述
在这里插入图片描述

SAAJ 1.2 只支持SOAP 1.1消息,而SAAJ 1.3支持SOAP 1.1 和SOAP 1.2 消息。
SAAJ 1.3向后兼容SAAJ 1.2,SAAJ 1.4向后兼容SAAJ 1.3。

SAAJ 1.3:
https://www.jcp.org/aboutJava/communityprocess/maintenance/jsr067/SAAJ1_3ChangeLog.html

SAAJ 1.4:
https://download.oracle.com/otn-pub/jcp/saaj-1_4-mrel4-eval-spec/saaj-1.4.pdf

Web服务策略(WS-Policy:Web Services Policy)

Web服务策略用来表示Web服务的能力和需求,是供机器阅读的语言。
Web服务策略提供了一种机制,用来表示Web服务的能力和需求一致的结合,决定策略的兼容性,命名和引用策略,将Web服务元数据结构(例如service、endpoint 和operation)和策略关联。
Web服务策略是一门简单的语言,有四个元素(Policy, All, ExactlyOne 和 PolicyReference ) 和两个属性(wsp:Optional 和 wsp:Ignorable)。

例如文档中给出的策略示例(https://www.w3.org/TR/ws-policy-primer/):

<All><wsam:Addressing>…</wsam:Addressing><ExactlyOne><sp:TransportBinding>…</sp:TransportBinding><sp:AsymmetricBinding>…</sp:AsymmetricBinding></ExactlyOne>
</All>
<All><mtom:OptimizedMimeSerialization wsp:Optional="true"/><wsam:Addressing>…</wsam:Addressing><ExactlyOne><sp:TransportBinding>…</sp:TransportBinding><sp:AsymmetricBinding>…</sp:AsymmetricBinding></ExactlyOne>
</All>
<sp:TransportBinding><Policy><sp:TransportToken><Policy><sp:HttpsToken><wsp:Policy/></sp:HttpsToken></Policy></sp:TransportToken><sp:AlgorithmSuite><Policy><sp:Basic256Rsa15/></Policy></sp:AlgorithmSuite>…</Policy>
</sp:TransportBinding>

Web Services Policy 1.5版本包含如下几部分:

  • 入门:https://www.w3.org/TR/ws-policy-primer/
    这部分不是一篇正式的规范。它提供了Web服务策略语言的介绍性描述。基本概念—策略表达式章节覆盖了Web服务策略的基本机制,高级概念—策略表达式章节针对策略实现者和断言作者提供了更深层次的资料,策略语言版本章节提供了策略语言版本管理的例子和最佳实践。
  • 框架:https://www.w3.org/TR/ws-policy/
    这部分提供一个通用目的模型和对应的语法,来描述基于Web服务的系统中实体的策略。定义了一套基本的结构,可以被其它的Web服务规范使用和扩展,来描述更广范围的要求和能力。
  • 附件:https://www.w3.org/TR/ws-policy-attach/
    这部分定义了两个通用目的关联策略和目标的机制,也定义了这些通用目的的机制怎么来使策略和WSDL 和 UDDI 描述关联。

Web服务寻址(WS-Addressing:Web Services Addressing)

Web服务寻址提供了跟传输无关的访问Web服务和消息的机制。

示例:在SOAP 1.2消息中利用寻址属性(示例来自https://www.w3.org/TR/ws-addr-core/#tocRange):

(01) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"      xmlns:wsa="http://www.w3.org/2005/08/addressing">
(02)   <S:Header>
(03)    <wsa:MessageID>http://example.com/6B29FC40-CA47-1067-B31D-00DD010662DA</wsa:MessageID>
(04)    <wsa:ReplyTo>
(05)      <wsa:Address>http://example.com/business/client1</wsa:Address>
(06)    </wsa:ReplyTo>
(07)    <wsa:To>http://example.com/fabrikam/Purchasing</wsa:To>
(08)    <wsa:Action>http://example.com/fabrikam/SubmitPO</wsa:Action>
(09)   </S:Header>
(10)   <S:Body>
(11)     ...
(12)   </S:Body>
(13) </S:Envelope>
  • Web服务寻址 1.0 - Core:https://www.w3.org/TR/ws-addr-core/
    本部分包含端点引用、消息寻址属性、安全考虑。

Web服务安全(WS-Security)

Web Services Security: SOAP Message Security 1.0 (WS-Security 2004) :
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf

这是OASIS发布的规范,取代Web Service Security (WS-Security) Version 1.0、Web Services Security Addendum Version 1.0。
本规范包括如下章节:

  • 消息保护机制
  • ID引用
  • 安全头
  • 安全标识
  • 标识引用
  • 签名
  • 加密
  • 安全时间戳
  • 扩展样例
  • 错误处理
  • 安全考虑
  • 互操作性
  • 隐私考虑

JAX-WS(Java API for XML-Based Web Services)

https://download.oracle.com/otn-pub/jcp/jaxws-2_3-mrel5-eval-spec/jaxws-2.3.pdf

JAX-WS 2.0 规范是代替JAX-RPC 1.0的下一代Web服务API。JAX-RPC(The Java API for XML Based RPC)是基于XML的RPC(远程过程调用)的Java API。
JAX-WS 2.0 使用JAXB(The Java Architecture for XML Binding)进行XML数据绑定,所谓绑定就是指XML请求和XML响应如何映射成java对象。

本规范包括如下章节:

  • 介绍
  • WSDL 1.1 到Java的 映射
  • Java 到 WSDL 1.1的映射
  • 客户端API
  • 服务API
  • 核心API
  • 注解
  • 定制化
  • Handler框架
  • SOAP绑定
  • HTTP绑定

JAXB(Java Architecture for XML Binding)

https://jcp.org/en/jsr/detail?id=222
https://download.oracle.com/otn-pub/jcp/jaxb-2_3-mrel3-eval-spec/JAXB-2.3-spec.pdf

JAXB可以根据XML Schema生成java类,也能根据java类生成XML Schema。XML数据绑定指定了XML请求和XML响应如何映射成java对象。
另外,支持三个主要操作:

  • 将XML数据解包为java 对象的内容树。
  • 将java内容树打包回XML文档。
  • XML文档表示和java内容树的绑定。

解包的过程能够对照schema检查XML文档的正确性。
下面的图来自:https://download.oracle.com/otn-pub/jcp/jaxb-2_3-mrel3-eval-spec/JAXB-2.3-spec.pdf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

Web服务(Web Service)

简介 Web服务&#xff08;Web Service&#xff09;是一种Web应用开发技术&#xff0c;用XML描述、发布、发现Web服务。它可以跨平台、进行分布式部署。 Web服务包含了一套标准&#xff0c;例如SOAP、WSDL、UDDI&#xff0c;定义了应用程序如何在Web上实现互操作。 Web服务的服…...

Java第4章 类的继承

目录 内容说明 章节内容 一、继承的概念 二、继承的使用 extends关键字...

Linux网络和安全:配置、远程访问与防御指南

文章目录 Linux 网络和安全引言网络配置IP地址配置配置网络接口防火墙设置安全性加强 Linux网络配置及端口管理网络配置命令端口管理 防火墙和安全性设置防火墙管理工具安全性设置 Linux远程访问技术&#xff1a;SSH和VPNSSHVPN Linux软件和服务网络工具文件传输VPN技术安全审计…...

如何搭建Linux环境

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 当我们想要搭建一个Linux系统&#xff0c;我们应该怎么使用呢&#xff1f; 今天我就带领大家搭建Linux系统&#xff01;&#xff01;&#xff01; 目录 Linux环境安装 双系统&#xff08;不推荐&#xff09; poww…...

【解决方案】edge浏览器批量添加到集锦功能消失的解决方案

edge的集锦功能很好用&#xff0c;右键标签页会出现如下选项&#xff1a; 但在某次edge更新后&#xff0c;右键标签页不再出现该选项&#xff1a; 这里可以参考为什么我的Edge浏览器右键标签页没有“将所有标签页添加到集锦”功能&#xff1f; - Microsoft Community 一文提出…...

JS操作字符串方法学习系列(1)-每天学习10个方法

目录 **字符串连接 (Concatenation)**:**字符串长度 (Length)**:**字符串查找 (Search)**:**字符串替换 (Replace)**:**字符串分割 (Split)**:**字符串大小写转换 (Case Conversion)**:**字符串切片 (Slice)**:**字符串删除空白 (Trim)**:**字符串检查开头和结尾 (Starts/EndsW…...

iterator和generator

iterator和generator iterator es6: let/const ...展开 迭代器 是一种机制&#xff0c;比如在控制台输出Iterator是没有这个类的&#xff0c;为不同的数据结构提供迭代循环的机制。 迭代器对象&#xff1a;具备next方法&#xff0c;next能够对你指定的数据进行迭代循环&#x…...

ipv6笔记及总结

1、路由器请求消息Router Solicitation和路由器通告Router Advertisement消息主要用于无状态地址的情况下&#xff0c;有状态的情况使用的是dhcpv6 server分配&#xff08;例如&#xff1a;IPv6地址以及其他信息&#xff08;DNS、域名等&#xff09;&#xff09;。 2、关于IPv…...

64位Ubuntu20.04.5 LTS系统安装32位运行库

背景&#xff1a; 在ubutu&#xff08;版本为20.04.5 LTS&#xff09;中运行./arm-none-linux-gnueabi-gcc -v 后提示“no such device”。 经多方查证&#xff0c;是ubutu的版本是64位的&#xff0c;而需要运行的编译工具链是32位的&#xff0c;因此会不兼容。 解决方法就是在…...

关于vue.config.js

关于vue.config.js 简述 vue.config.js是一个可选的配置文件&#xff0c;如果项目的根目录中存在这个文件&#xff0c;那么它就会被vue/cli-service自动加载。你也可以使用package.json中的vue字段&#xff0c;但是注意这种写法需要你严格遵守JSON的格式来写。 这个文件应该…...

Jupyter NoteBook 中使用 cv2.imshow 显示图片

Jupyter NoteBook 中使用 cv2.imshow 显示图片 有两种办法: 用 cv2.imshow时加入cv2.destroyAllWindows() 用 plt.imshow() 代替 cv2.imshowhttps://blog.csdn.net/kuweicai/article/details/103359299...

gpt扣款失败,openai扣款失败无法使用-如何解决gpt扣款失败的问题?

gpt扣款失败&#xff0c;openai扣款失败无法使用。毕竟你花了钱却无法使用你所期待的服务&#xff0c;这种情况确实令人不快。但是&#xff0c; 为什么gpt扣款失败&#xff1f; 可能是由于支付问题导致的扣款失败。这包括信用卡额度不足、支付信息错误等等。如果你的支付信息…...

OJ练习第180题——颠倒二进制位

颠倒二进制位 力扣链接&#xff1a;190. 颠倒二进制位 题目描述 颠倒给定的 32 位无符号整数的二进制位。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中&#xff0c;没有无符号整数类型。在这种情况下&#xff0c;输入和输出都将被指…...

SpringSecurity授权--前端进行访问控制

目录 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;页面 SpringSecurity可以在一些视图技术中进行控制显示效果。例如Thymeleaf中&#xff0c;只有登录用户拥有某些权限才会展示一些菜单 &#xff08;1&#xff09;引入依赖 <!--Spring Security整合Thyme…...

如何看待Unity新的收费模式?

文章目录 背景Unity的论点开发者的担忧如何看待Unity新的收费模式&#xff1f;1. 理解Unity的立场2. 考虑小型开发者3. 探索替代方案4. 对市场变化保持敏感5. 提高游戏质量 结论 &#x1f389; 如何看待Unity新的收费模式&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1…...

WebRTC系列--sdp协商中的answer编解码协商过程

关于createAnswer的流程在前面的文章WebRTC系列-SDP之CreateAnswer这篇文章中有详细的分析。 这篇文章主要对于MediaSessionDescriptionFactory的AddAudioContentForAnswer做详细的分析,也就是说对于音频编码的匹配也是在这个方法里实现: 首先主要的函数调用如下图: 这篇文…...

WeCanStudio工具套件介绍

直接上视频,在超燃的《天马座幻想》的背景音乐下&#xff0c;再次了解一下该工具套件吧。 WeCanStudio开发套件介绍...

图形化思维:Graphviz和DOT语言的艺术与实践

前言 Graphviz和DOT语言是一对强大的工具&#xff0c;用于创建各种类型的图形&#xff0c;从流程图和组织结构图到网络拓扑图&#xff0c;无所不能。它们的灵活性和自定义性使得它们在数据可视化、系统设计、项目规划等各个领域都备受欢迎。然而&#xff0c;要想真正掌握Graph…...

如何查看电脑详细配置、型号?这4个技巧 yyds!

知道自己电脑的配置和型号&#xff0c;可以更合理合适的去安装软件&#xff0c;避免出现电脑系统和软件不兼容问题。 了解详细配置信息可以检测一下电脑组件是否是二手的。 从解决实际问题的角度&#xff0c;推荐这4个技巧&#xff1a; 1、右键“此电脑” 2、设备管理器查看…...

安卓机型固件系统分区的基础组成 手机启动规律初步常识 各分区的基本含义与说明

此贴为基本常识。感兴趣的友友可以了解手机的启动顺序和各模式的基本操作与意义。另外了解手机系统分区各文件夹的含义 分区说明对应贴&#xff1a;安卓机型固件中分区对应说明 手机开机基本启动顺序 当我们按下手机开机键的时候。基本的启动顺序为 注意&#xff1a;该结构图…...

php如何把数组元素反转-array_reverse使用要点

在PHP中&#xff0c;你可以使用array_reverse()函数来反转数组的元素顺序。该函数会返回一个新的数组&#xff0c;其中的元素顺序与原始数组相反。 以下是使用array_reverse()函数反转数组的示例代码&#xff1a; <?php $originalArray array(a, b, c, d); $reversedArr…...

【CV学习笔记】tensorrtx-yolov5 逐行代码解析

1、前言 TensorRTx(下文简称为trtx)是一个十分流行的利用API来搭建网络结构实现trt加速的开源库&#xff0c;作者提到为什么不用ONNX parser的方式来进行trt加速&#xff0c;而用最底层的API来搭建trt加速的方式有如下原因: Flexible 很容易修改模型的任意一层&#xff0c;删…...

微信管理系统可以解决什么问题?

微信作为一款社交通讯软件&#xff0c;已经成为人们日常生活中不可缺少的工具。不仅个人&#xff0c;很多企业都用微信来联系客户、维护客户和营销&#xff0c;这自然而然就会有很多微信账号、手机也多&#xff0c;那管理起来就会带来很多的不便&#xff0c;而微信管理系统正好…...

mysql事务测试

mysql的事务处理主要有两种方法1、用begin,rollback,commit来实现 begin; -- 开始一个事务 rollback; -- 事务回滚 commit; -- 事务提交 2、直接用set来改变mysql的自动提交模式 mysql默认是自动提交的&#xff0c;也就是你提交一个sql&#xff0c;它就直接执行&#xff01;我…...

Spring面试题14:Spring中什么是Spring Beans? 包含哪些?Spring容器提供几种方式配置元数据?Spring中怎样定义类的作用域?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring中什么是Spring Beans? 包含哪些? 在Spring中,Spring Beans是指由Spring容器管理的对象。Spring Beans包含以下内容: 类定义(Class De…...

Tomcat部署、优化、以及操作练习

一.Tomcat的基本介绍 1.1.Tomcat是什么&#xff1f; Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&#xff0c;T…...

服务器假死日志按时间统计排查

文章目录 场景解决方案排查过程根据cost时间来筛选 场景 服务器假死&#xff0c;进程还在&#xff0c;但是已经接不到请求了。因此有客户报事&#xff0c;发现服务假死了。 解决方案 这种假死问题一般不太好排查&#xff0c;常规来说有几种可能。 1、慢sql导致卡死。 2、大数…...

CSS——grid网格布局的基本使用

网格布局在实现页面自适应&#xff0c;大屏可视化中常常使用&#xff0c;在这篇博客里&#xff0c;记录一下网格布局的基本使用。 参考文档&#xff1a;网格布局_菜鸟教程 文章目录 1. 体会grid的自适应性2. grid-template-arr配置网格行列3. 网格单位fr与repeat()简写属性值4…...

【python】使用Nuitka打包python项目-demo示例

文章目录 写在前面参考准备工作Quick Start参数说明使用打包程序输出目录结构日志2023.09.20 写在前面 本文的demo示例的代码/数据可从笔者的GitCode获取: HelloWorld 参考 Nuitka官网: https://github.com/Nuitka/NuitkaNuitka使用: https://daobook.github.io/nuitka-doc/…...

Java多线程篇(5)——cas和atomic原子类

文章目录 CASAtomic 原子类一般原子类针对aba问题 —— AtomicStampedReference针对大量自旋问题 —— LongAdder CAS 原理大致如下&#xff1a; 在java的 Unsafe 类里封装了一些 cas 的api。以 compareAndSetInt 为例&#xff0c;来看看其底层实现。 可以发现&#xff0c;最…...

做网站安全联盟解/口碑营销的成功案例

去掉tbody标签即可正常输出&#xff0c;否则会输出空列表...

网站宣传夸大处罚/重庆网站建设维护

1&#xff0c;font-size属性设置字体的大小 声明&#xff1a; 有能力管理文本的大小在 web 设计领域很重要。但是&#xff0c;您不应当通过调整文本大小使段落看上去像标题&#xff0c;或者使标题看上去像段落。 请始终使用正确的 HTML 标题&#xff0c;比如使用 <h1> - …...

湛江市住房和城乡建设网站/手机关键词seo排名优化

1.笛卡尔积形式------无条件 select * from tb_a,tb_b tb_a和tb_b表中的所有记录相互匹配成新的记录 tb_a                  tb_b 结果&#xff1a; 2.左连接 查询步骤:从左表读出一条&#xff0c;选出所有与on匹配的右表纪录(n条)进行连接&#xff0c;形成n…...

利用大平台做网站/seo工程师是什么职业

转自 http://selfboot.cn/2016/10/30/forum_design_flask/ —————————————————————————————————————————————————————————————————————————————————————————————————————…...

福田住房和建设局网站官网/网站功能优化

匿名用户的上传与写入 进入vi编辑器 用set nu 显示行号 16G到第16行 G跳到行尾 dw删除整个单词创建匿名用户的共享文件需要首先在etc/samba/smb.conf文件中设定并且要创建一个【share】的栏目&#xff0c;用于指示共享文件的目录和权限这时候回到根目录下创建刚才的共…...

上海营销型网站/平原县网站seo优化排名

2019独角兽企业重金招聘Python工程师标准>>> window下安装步骤如下&#xff1a; 1、在IDEA的plugins插件库中&#xff0c;找到mybatis plugin&#xff0c;然后点击安装&#xff0c;重启idea&#xff1b; 2、由于mybatis plugins 是收费的插件&#xff0c;我们需要通…...