-
创建文件夹接口、上传文件都报这个错,java的:Caused by: java.lang.NoSuchMethodError: okhttp3.internal.http.RetryAndFollowUpInterceptor.<init>(Lokhttp3/OkHttpClient;Z)V at okhttp3.RealCall.<init>(RealCall.java:51) at okhttp3.OkHttpClient.newCall(OkHttpClient.java:419) at com.obs.services.internal.RestStorageService.tryRequest(RestStorageService.java:408) at com.obs.services.internal.RestStorageService.performRequest(RestStorageService.java:368)
-
安装一个密码加密的工具:yum install httpd-tools –yhtpasswd -nBC 12 '' | tr -d ':\n'提示输入密码,再次确认密码。生成密码的加密数据。将其复制写入config.yml文件:[root@k8s-node2 ~]# vi /usr/local/node-exporter/config.ymlbasic_auth_users: prometheus: $2y$12$4q80hK9.qxZymNxpPR56wuUDs7mG6j2MA2IiBBnEp.GbQnOjhPL/a写入exporter的启动配置文件:[root@k8s-node2 node-exporter]# vi /usr/lib/systemd/system/node_exporter.service[Unit]Description=node_exporter[Service]ExecStart=/usr/local/node-exporter/node_exporter --web.config=/usr/local/node-exporter/config.ymlExecReload=/bin/kill -HUP $MAINPIDKillMode=process Restart=on-failure[Install]WantedBy=multi-user.target重启进程使之生效:# systemctl daemon-reload# systemctl start node_exporter用浏览器测试:输入用户名和密码:修改prometheus的配置文件: - job_name: "webserver" static_configs: - targets: ["eip:9100"] basic_auth: username: prometheus password: 123456重启prometheus进程:systemctl daemon-reloadsystemctl start prometheus
-
我想实现访问时间api,读取网站的字符串。如何实现?求个方向
-
问题求助] 【AICC 8.14.0】接口鉴权调用时跳转到登录页面【问题来源】【必填】 贵州119 【问题简要】【必填】在测试接口鉴权时鉴权失败【问题类别】【必填】 CC-CMS 【AICC解决方案版本】【必填】 AICC 8.14.0【期望解决时间】【选填】尽快【问题现象描述】【必填】运行8.14.0版本的cc-cms文档的接口鉴权。和鉴权demo里的代码比对生成的鉴权信息是一致的期望http响应码为200实际http响应码为401 【日志或错误截图】【可选】
-
【问题来源】【必填】 贵州119 【问题简要】【必填】在测试CMS接口时http响应码为404【问题类别】【必填】 CC-CMS 【AICC解决方案版本】【必填】 AICC 8.14.0【期望解决时间】【选填】尽快【问题现象描述】【必填】运行8.14.0版本的cc-cms文档的接口鉴权demo代码期望返回http响应码为200或401实际返回的是404 【日志或错误截图】【可选】
-
登录华为云后,不能显示云速建站网页,出现 HTTP STATUS: 403
-
在测试任务的用例中创建检查点后进行调试,提示调试失败,http code is invalid1)正常http请求成功返回报文:{ "code": "200", "message": "操作成功", "data": true, "successful": true}2)根据返回的body内容,我设置的检查点信息如下
-
1 调优概述华为鲲鹏性能优化工具是一款针对鲲鹏平台的性能调优工具,包含系统性能优化工具和Java性能优化工具。本文使用Java性能优化工具对运行中的Java程序进行在线分析和采样分析,找到程序问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。2 环境要求项目说明服务器TaiShan 200 服务器(型号2280)CPU鲲鹏920 4826处理器OSCentOS 7.6调优工具华为鲲鹏性能优化工具 V2.3.T103 前提条件服务器和操作系统正常运行。PC端已经安装SSH远程登录工具。需要优化的Java程序且程序开启GC日志打印。4 调优思路 使用Java性能优化工具对Java进程GC日志进行在线采集或离线上传,解析获取的GC日志。 针对解析后得到的优化建议项进行调优。 观察优化后的Java程序日志,判断对应问题是否改善。 5 调优过程5.1 获取GC日志5.1.1 对程序进行在线分析,在GC页签下GC日志页面点击执行GC日志采集,获取日志并进行解析。5.2 查看优化建议项当前GC日志共有五项优化建议:依次查看对应优化建议,并根据建议项进行信息修改。5.2.1 元空间扩容导致的GC优化jdk8以后移除永久区,使用本地内存来存储类元数据信息并称之为元空间(Metaspace)。持续的元空间垃圾回收说明:可能存在类、类加载器导致的内存泄漏或是大小设置不合适。根据优化建议对代码进行排查,发现代码中存在每次调用循环动态创建并加载类。针对本例:可减循环次数,减少类的加载;将classes对象设为单例模式避免重复调用。对于无法进行代码优化的案例结合成因分析,查看因元数据产生的GC次数及时间占比是否偏高,若想降低可调高-XX:MetaspaceSize,少因扩容造成的GC。5.2.2 疏散失败当给出疏散失败时,表示存在GC幸存区或Old区空间不足,可增大响应空间避免出现疏散失败。当空间无法增加时可尝试调整如下选项:1、调大-XX:G1ReservePercent(默认值10),设置堆老年代预留内存晋升,以降低提升失败的可能性;降低-XX:InitiatingHeapOccupancyPercent阈值(默认45);3、增加并行标记线程的数目,调大-XX:ParallelGCThreads参数(默认值随运行平台不同而不同)。可在优化后重新执行GC日志采集,查看疏散失败优化建议是否触发。或在日志中统计单位时间内疏散失败的比例。5.2.3 发生巨型对象导致的GC当发生巨型对象分配时(大于region size的50%),G1会找出一个连续的可用分区集合,这样就能汇总出足够的内存来容纳巨型对象。如果没有足够的连续可用空间,G1就会启动一次Full GC 来压缩Java堆空间。巨对象分配后对应region不再存储其它对象造成了一定的空间浪费。通过调大-XX:G1HeapRegionSize可减少因巨对象空间不足导致的Full GC且能提升内存利用率。可通过GC成因分析查看G1 Humongous Allocation触发的GC占比统计看巨对象触发的GC是否由改善。5.2.4 发生Full GC当空间即将耗尽或分配速度无法追上回收速度时就会触发Full GC,当有Full GC发生代表性能可能不足。除关注程序本身是否可优化或提升机器性能(增加内存,提升cpu性能)外,还可以尝试调整相关参数提高GC效率来降低Full GC发生的可能性:1、增加堆内存(Xmx)大小,让G1有更多的时间去完成 Concurrent Marking。2、适当加大 -XX:ConcGCThreads 选项的值,增加并发标记的线程数。3、通过增加 -XX:G1ReservePercent(默认10%)的选项值,增加 G1 在 IHOP 分析过程中所需要的内存空间。4、通过设置 -XX:-G1UseAdaptiveIHOP 的选项值禁用自适应 IHOP 分析机制,通过调小 -XX:InitiatingHeapOccupancyPercent 的选项(默认值为 45)值达到提前触发GC标记周期的目的。可对比优化前与优化后的GC活动细化分析数据下的Full GC统计数据,通过对Full GC平均间隔时间对比可确定Full GC频率是否降低。5.2.5 发生System.GC()导致的GC程序中不建议显示调用System.GC()强制触发Full GC。建议排查代码将相关代码移除。或使用-XX:+DisableExplicitGC忽略System.GC()调用。若为系统级别或框架级别的调用无法禁用,可开启-XX:+ExplicitGCInvokesConcurrent,Full GC 会变成 initial-mark。检验优化效果可对优化后程序进行日志采集查看优化建议中是否还有system.GC()的优化建议。或查看GC日志看system.GC()触发日志是否存在,若存在看是否为initial-mark阶段6 实践总结Java中通过查看GC日志较难直接定位问题,故平台提供的GC日志解析后优化建议,通过优化建议可较为便捷的对代码进行排查或修改启动参数。重启进程并在运作一段时间后再次采集解析GC日志,通过对比前后日志吞吐量、GC平均暂停时间、活动细化分析-平均间隔时间等数据的变化,从而确定GC效率是否已经改善。针对GC日志的调优不建议作为优先使用方案,可作为在程序自身调优已达瓶且无更多调优手段时的尝试。据GC优化建议对程序进行优化后无明显改善的,建议:升级机器配置以适应业务需求!
-
【功能模块】刚开始物联网方面的学习,处处踩坑,希望各路大神帮助BC26模块通过COAP协议连接华为云,上传二进制数据到华为云,之后通过华为云服务器向Node-red转发数据【操作步骤&问题现象】1、BC26连接华为云数据上传成功,华为云也正常接收到了数据,通过图像化编解码后正常显示2、设置转发规则为数据来源:设备属性,触发事件:设备属性上报,Node-red端响应码为2003、但是转发过程非常不顺利,消息追踪里报下行数据编码失败,以及http响应问题【截图信息】1.图像化插件开发2.华为云接收到了编码后的二进制数据3.设置转发规则4.设置转发目标5.Node-red设置http6.node-red响应码设置2007.转发失败在这一步卡了两天了,基础比较差,到现在也没有解决这个问题,跪求大佬帮助
-
1.1 VPN的简单分类首先说以下VPN的分类,VPN的分类有许多种方式。我们一般常接触的分类方式是按照运营模式进行分类: 1)、CPE-Based VPN: 设备放置在用户侧(Custom Premise Equipment)由用户管理或委托运营商进行管理; 2)、Network-Based VPN: 设备放置在运营商网络侧用户设备不需要感知VPN由运营商管理,又称为Provider Provide VPN。本文所讨论的三种L2VPN都是属于Network Base VPN。图1、 VPN技术的分类1.2 VLL、PWE3、VPLS三种L2VPN区别1.2.1 三种L2VPN的简介VLL( Virtual Leased Line,虚拟租用线,也被称为VPWS)是对传统租用线业务的仿真VLL技术是一种点到点的虚拟专线技术,能够支持几乎所有的链路层协议。VLL简单的理解就好比在客户之间拉了一条网线。分为Kompella和Martini两种实现方式,但Kompella工作组已经解散,Martini也更新为PWE3技术。PWE3(Pseudo-Wire Emulation Edge to Edge)是端到端仿真业务,PWE3是VLL的一种实现方式,是对Martini协议的扩展。PWE3扩展了新的信令,减少了信令的开销,规定了多跳的协商方式,使得组网方式更加灵活。在IPRAN网络大量使用PWE3来承载TDM等二层业务。VPLS(Virtual Private LAN Service)是一种基于MPLS和以太网技术的二层VPN技术。具体分为Juniper主导的Kompella方式和Cisco主导的Martini方式,是将公网模拟为二层交换机。适合于点到多点的业务,简单的说VPLS就是一个超级交换机。1.2.2 VLL、PWE3、VPLS实现方式的对比下面这张表是总结的VLL、PWE3、VPLS三种L2VPN的实现方式对比。分类实现方式信令协议备注VLLCCC手动配置支持本地连接MartiniLDP不支持本地连接,配置ldp remote-peerSVC内层标签手动配置,外层LDP看成是Martini方式的静版KompellaBGP使用vpn-target进行vpn路由的收发控制,支持本地和远程连接。PWE3VLL的Martini形式扩展LDP信令的扩展1、 增加了Notification方式2、 增加了多跳PW扩展3、 TDM接口扩展VPLSKompellaBGPPE端口绑定VSI(虚交换实例)进行VPLS转发MartiniLDP1.3 举例三种L2VPN实际配置对比只说这三种L2VPN不能很好的理解,下面就以一个Martini和Kompella两种方式实现VPN跨域Option C为例子,说说VLL和VPLS的区别(PWE3只是是VLL Maritni形式的一种扩展和演进,在这种场景下实现和VLL完全相同,后面会对PWE3进行单独的介绍)。Martini和Kompella的最主要区别是:1、使用Martini方式时,采用LDP信令分发标签,PE之间要建立mpls ldp remote-peer;2、采用Kompella方式时,采用BGP信令分发标签,PE之间建立MP-EBGP关系。1.3.1 Martini方式的VLL和VPLSMrtini形式的Option C实现时,典型组网如下图所示。首先在骨干网上运行IGP协议,使同一个AS域内的各设备能互通。在骨干网上节点使能MPLS,在PE与ASBR之间建立动态LSP隧道。同一AS的PE和ASBR之间建立IBGP,在各ASBR之间配置EBGP。在ASBR上需配置路由策略,使能标签路由功能。在PE1和PE2之间建立MPLS LDP远端对等体关系。图2、Martini方式实现跨域Option C的典型组网上图2中,PE1、ASBR1、ASBR2、PE2的loopback0 地址分别为1.1.1.1/32,2.2.2.2/32,3.3.3.3/32,4.4.4.4/32。1、 VLL形式在完成前面的基础配置后,检查PE1和PE2之间的remote-ldp peer建立起来,需要在mpls l2vpn试图下面配置动态VC的信令行为是非Notification方式,也就是Martini方式。如果不配置这条命令,默认是PWE3方式。这也是PWE3和VLL Martini的最主要区别。 mpls l2vpn mpls l2vpn default martini在PE上面创建动态VLL链接mpls l2vc ip-address vc-id其中ip-address为PW对端设备的IP地址2、 VPLS形式VPLS形式的首先创建一个VSI,然后在连接CE的端口上绑定该vsi实例,这和L3VPN中绑定VPN-instance有点类似。 Martini方式的两种L2VPN配置实现差异如下表所示。Msrtini形式配置差异PE上的命令差异VLL1、 在mpls l2vpn试图下面配置动态VC的信令行为是Martini方式2、 在PE上面创建动态VLL链接mpls l2vpn mpls l2vpn default martini#interface Serial0/0/1 link-protocol ppp undo shutdown mpls l2vc 4.4.4.4 100VPLS1、 建立一个VSI,PW信令设置为LDP;2、 在端口下绑定该VSI。mpls l2vpn#vsi a1 staticpwsignal ldp vsi-id 2 peer 4.4.4.4#interface GigabitEthernet0/0/1.1undo shutdownvlan-type dot1q 10l2 binding vsi v11.3.2 Kompella方式VLL和VPLSMrtini形式的Option C实现时,典型组网如下图所示。协议部署和Martini方式的基本一致,区别在于PE1和PE2之间建立的是MP-EBGP远端对等体关系。图3、 Kompella方式实现跨域Option C的典型组网图3中,PE1、ASBR1、ASBR2、PE2的loopback0 地址分别为1.1.1.1/32,2.2.2.2/32,3.3.3.3/32,4.4.4.4/32。Kompella方式的VLL和VPLS差异如下表Kompella方式配置差异PE上的命令差异VLL 创建l2vpn实例,创建CE连接mpls l2vpn#mpls l2vpn vpn1 encapsulation ppproute-distinguisher 100:1vpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunityce ce1 id 1 range 10 default-offset 0connection ce-offset 2 interface Serial0/0/1VPLS1、 创建VSI虚交换实例,pw信令协议为bgp2、 在端口下绑定VSI实例mpls l2vpn#vsi v1 autopwsignal bgproute-distinguisher 100:1vpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunitysite 1 range 5 default-offset 0#interface GigabitEthernet1/0/0.1undo shutdownvlan-type dot1q 10l2 binding vsi v11.3.3 PWE3形式的L2VPNPWE3相对VLL的Martini方式在以下几点进行了扩展。1、 信令扩展,LDP信令增加了Notification方式,只通告状态,不拆除信令,除非配置删除或者信令协议中断。这样能够减少控制报文的交互,降低信令开销,兼容原来的LDP和Martini方式。2、 多跳扩展,增加PW多跳功能,这点在IPRAN网络中应用十分广泛,对于TDM和ATM业务的承载都可以采用多条PW方式。在IPRAN中典型组网如下图所示:CSG和RSG之间部署多条PW,CSG、ASG、RSG之间建立MPLS LDP PEER,在CSG、RSG上配置业务PW,在主备ASG上配置交换PW,在主备RSG之间部署Bypass PW。图4、多条PW在IPRAN中的应用3、 TDM接口扩展支持更多的电信低速TDM接口。通过控制字CW(Control Word)及转发平面RTP(Real-time Transport Protocol)协议,引入对TDM的报文排序、时钟提取和同步的功能。1.4 总结这三种L2VPN理解起来容易搞混,简单的理解,VLL是点到点的业务,可以将整个网络看成一条网线;VPLS是点到多点业务,可将整个网络看成是一个交换机;PWE3是端到端的仿真,其实就是VLL的Martini形式扩展。理解这几点,再去看这三种L2VPN就容易很多了。
-
docker 版本要求在1.18.0以上。首先安装docker-compose,按照github上文档:首先下载安装包sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose设置其为可执行权限,并增加一个软连接sudo chmod +x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose3.验证安装完成:docker-compose version下载harbor的离线安装包:harbor-offline-installer-v1.10.1.tgz 解压包:tar zxvf harbor-offline-installer-v1.10.1.tgz cd harbor cp harbor.yml harbor.yml.bakvi harbor.yml修改hostname: EIP注释掉下面https相关的行修改harbor的密码. /prepare. /install.sh浏览器输入EIP
-
概述做前端开发的同学都知道,一个网页的基本组成部分是 HTML,JavaScript 和 CSS。开发人员通常更关注 JavaScript 和 CSS ,实践着各种语言规范和设计模式。对于 HTML 的关注度则明显偏少,只要能做出设计师画的界面就万事大吉了,不怎么去关心 HTML 是不是规范合理。于是下面的情况随处可见:按钮用的是可点击的<div>而不是<button> 元素标题用的是 <div>而不是标题元素 (<h1>,<h2> 等等)<input>相应的文本标签用的是<div> 而不是<label>输入框也用绑定了键盘事件的<div>,而不是<input>看到没?一招<div> 走天下!这样有没有问题?好像也没什么大问题,毕竟页面看起来符合设计,也能正常交互。但是你想过没有,如果<div>能解决一切,为什么还需要其余几十上百种标签呢?这就要说到 HTML 的语义化了。什么是语义化语义化就是说,HTML 元素具有相应的含义。它用于描述元素的内容或者跟其他元素的关系。在 HTML 里,除了<div>和<span>,基本上都是语义化的元素。标签名的表义程度也是不一样的,比如<section>比<article>对内容的描述就更模糊。<section>也是语义化的,因为它表明内容应该从属于一个组。而<article>不仅表示它的内容从属于一个组,还是一篇文章。为了进一步说明语义化的重要性,下面用标题和按钮元素来举例。标题元素<h1>是页面的标题,加上下方的<h2> 就形成了页面的层级结构。<!-- h1, 一级标题 --> <h1>当你的 HTML 里全是 div,那你就要小心了</h1> <!-- h2,二级标题 --> <h2>什么是语义化</h2> <!-- h3,三级标题--> <h3>标题元素</h3>在很多富文本编辑器中,使用合适的标题结构,可以自动生成内容目录。比如本文的目录结构就是这样:可以看到,HTML 本身就传达了整篇文章的结构信息。相反,如果全部都用<div>,就变成这样了:<div>: 当你的 HTML 里全是 div,那你就要小心了<div>: 什么是语义化<div>: 标题元素<div>: 按钮<div>: 非语义化元素<div>: 总结由于<div>不附带任何含义,因此它就是扁平的结构。只要使用正确的 HTML,DOM 就会变得清晰和结构化。按钮按钮的作用是提交表单或者改变某个元素的状态。从定义上看,按钮具备以下特征:可获得焦点可通过敲击空格键或者回车键激活可通过鼠标点击激活当你用<div>绑定点击事件来模拟按钮时,你就没办法用上<button>天然自带的那些语义化的交互特征。你还需要手动实现这些功能:focus 状态键盘交互鼠标交互不止如此,当屏幕阅读器碰到<button>提交</button>这个元素,它会识别出语义,告诉用户这是个提交按钮。如果只是个<div>,阅读器就不会认为它是个按钮。当我们使用语义化的 HTML 元素后,就给内容赋予了含义,内容也就有了生命。非语义化元素前面提到过,<div>和<span>是非语义化元素。<div>没有给内容附加任何含义,它只是个<div>。当然,这么说也不完全准确,因为<div>和<span>之间还是有一点点区别的:<div>是块级元素<span>是行内元素,应该放在其他元素里面,比如<p><span>I</span>nline elements</p>如果实在找不到对应的 HTML 元素来表示内容,那就可以用<div>或者<span>。既然设计了<div>和<span>,自然有它们的用武之地。毕竟,并不是每一个 HTML 元素都需要额外的语义。总体原则是,尽量优先使用对应的语义化元素表示内容。退而求其次,使用含义没那么明确的标签。最后才考虑用<div>和<span>。总结虽然使用语义化的 HTML 元素并不会给你的项目带来明显的收益,但我还是建议你这么做。至少,语义化的 HTML 页面能带来更好的 SEO 排名、对屏幕阅读器更友好、代码可读性更高。如果你是个有追求的 Coder,相信你会认同我的看法。
-
详解Http请求中Content-Type讲解以及在Spring MVC中的应用引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在spring MVC中如何使用它们来映射请求信息。1. Content-Type MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。1234类型格式:type/subtype(;parameter)? type 主类型,任意的字符串,如text,如果是*号代表所有; subtype 子类型,任意的字符串,如html,如果是*号代表所有; parameter 可选,一些参数,如Accept请求头的q参数, Content-Type的 charset参数。 例如: Content-Type: text/html;charset:utf-8; 常见的媒体格式类型如下: text/html : HTML格式 text/plain :纯文本格式 text/xml : XML格式 image/gif :gif图片格式 image/jpeg :jpg图片格式 image/png:png图片格式 以application开头的媒体格式类型: application/xhtml+xml :XHTML格式 application/xml : XML数据格式 application/atom+xml :Atom XML聚合格式 application/json : JSON数据格式 application/pdf :pdf格式 application/msword : Word文档格式 application/octet-stream : 二进制流数据(如常见的文件下载) application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) 另外一种常见的媒体格式是上传文件之时使用的: multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式 以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。2. Spring MVC中关于关于Content-Type类型信息的使用 首先我们来看看RequestMapping中的Class定义:123456789101112@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented@Mappingpublic @interface RequestMapping { String[] value() default {}; RequestMethod[] method() default {}; String[] params() default {}; String[] headers() default {}; String[] consumes() default {}; String[] produces() default {}; } value: 指定请求的实际地址, 比如 /action/info之类。method: 指定请求的method类型, GET、POST、PUT、DELETE等consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回params: 指定request中必须包含某些参数值是,才让该方法处理headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求其中,consumes, produces使用content-typ信息进行过滤信息;headers中可以使用content-type进行过滤和判断。3. 使用示例 3.1 headers1234@RequestMapping(value = "/test", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/") public void testHeaders(@PathVariable String ownerId, @PathVariable String petId) { // implementation omitted } 这里的Headers里面可以匹配所有Header里面可以出现的信息,不局限在Referer信息。 示例212345678@RequestMapping(value = "/response/ContentType", headers = "Accept=application/json") public void response2(HttpServletResponse response) throws IOException { //表示响应的内容区数据的媒体类型为json格式,且编码为utf-8(客户端应该以utf-8解码) response.setContentType("application/json;charset=utf-8"); //写出响应体内容 String jsonData = "{\"username\":\"zhang\", \"password\":\"123\"}"; response.getWriter().write(jsonData); } 服务器根据请求头“Accept=application/json”生产json数据。当你有如下Accept头,将遵守如下规则进行应用:①Accept:text/html,application/xml,application/json 将按照如下顺序进行produces的匹配 ①text/html ②application/xml ③application/json②Accept:application/xml;q=0.5,application/json;q=0.9,text/html 将按照如下顺序进行produces的匹配 ①text/html ②application/json ③application/xml 参数为媒体类型的质量因子,越大则优先权越高(从0到1)③Accept:*/*,text/*,text/html 将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*即匹配规则为:最明确的优先匹配。3.2 params的示例1234@RequestMapping(value = "/test/{userId}", method = RequestMethod.GET, params="myParam=myValue") public void findUser(@PathVariable String userId) { // implementation omitted } 仅处理请求中包含了名为“myParam”,值为“myValue”的请求,起到了一个过滤的作用。3.3 consumes/produces1234567@Controller @RequestMapping(value = "/users", method = RequestMethod.POST, consumes="application/json", produces="application/json") @ResponseBodypublic List<User> addUser(@RequestBody User userl) { // implementation omitted return List<User> users; } 方法仅处理request Content-Type为“application/json”类型的请求. produces标识==>处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;4. 总结 在本文中,首先介绍了Content-Type主要支持的格式内容,然后基于@RequestMapping标注的内容介绍了主要的使用方法,其中,headers, consumes,produces,都是使用Content-Type中使用的各种媒体格式内容,可以基于这个格式内容来进行访问的控制和过滤。
-
1、NPS简介nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。2、NPS实现功能1、做微信公众号开发、小程序开发等---- 域名代理模式2、想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射----tcp代理模式(本实验搭建,实现此功能)3、在非内网环境下使用内网dns,或者需要通过udp访问内网机器等---- udp代理模式4、在外网使用HTTP代理访问内网站点---- http代理模式5、搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备---- socks5代理模式3、nps特点全面的协议支持,与几乎所有常用协议兼容,例如tcp,udp,http(s),socks5,p2p,http代理等;全面的平台兼容性(Linux,Windows,MacOS,群晖等),仅支持作为系统服务进行安装。 全面控制,允许客户端和服务器控制;Https集成,支持将后端代理和Web服务转换为https,并支持多个证书。 只需在Web ui上进行简单配置即可完成大多数要求;完整的信息显示,例如流量,系统信息,实时带宽,客户端版本等。 强大的扩展功能,一切可用(缓存,压缩,加密,流量限制,带宽限制,端口重用等);域名解析具有诸如自定义标题,404页面配置,主机修改,站点保护,URL路由和全景解析之类的功能。 服务器上的多用户和用户注册支持。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签