API接口安全—webservice、Swagger、WEBpack
API接口安全—webservice、Swagger、WEBpack
- 1. API接口介绍
- 1.1. 常用的API接口类
- 1.1.1. API接口分类
- 1.1.1.1. 类库型API
- 1.1.1.2. 操作系统型API
- 1.1.1.3. 远程应用型API
- 1.1.1.4. WEB应用型API
- 1.1.1.5. 总结
- 1.1.2. API接口类型
- 1.1.2.1. HTTP类接口
- 1.1.2.2. RPC类接口
- 1.1.2.3. web service类接口
- 1.1.2.4. http service与web service区别
- 1.2. API常见技术
- 1.2.1. SOAP
- 1.2.2. REST
- 1.2.3. WSDL
- 1.3. API常见的安全漏洞类型
- 1.4. OWASP API安全漏洞类型
- 1.5. 接口数据包中常见问题
- 2. WEB service类—wsdl测试
- 2.1. 寻找接口页面
- 2.1.1. 查看页面
- 2.1.2. 查看所有
- 2.2. 安全测试
- 2.2.1. 手动测试
- 2.2.1.1. 选在测试内容
- 2.2.1.2. 查看回显
- 2.2.2. SoapUI工具测试
- 2.2.2.1. 工具下载地址
- 2.2.2.2. 添加内容
- 2.2.2.3. 选在wsdl
- 2.2.2.4. 复制地址
- 2.2.2.5. 测试内容
- 2.2.3. Ready API 工具测试
- 2.2.3.1. 创建安全测试
- 2.2.3.2. 选择类型
- 2.2.3.3. 输入地址
- 2.2.3.4. 安全漏洞
- 2.2.3.5. 自动进行测试
- 2.2.3.6. 查看报告
- 3. SOAP 类—Swagger测试
- 3.1. 寻找页面
- 3.1.1. 寻找Swagger
- 3.1.2. FOFA搜索
- 3.2. 安全测试
- 3.2.1. 手动测试
- 3.2.1.1. 英文参考
- 3.2.1.2. 汉化参考
- 3.2.2. SoapUI工具测试
- 3.2.2.1. 获取josn地址
- 3.2.2.2. 导入josn地址
- 3.2.2.3. 输入josn地址
- 3.2.2.4. 添加成功
- 3.2.3. 自动化工具
- 3.2.3.1. 下载链接
- 3.2.3.2. swagger-hack操作
- 4. HTTP 类—Webpack测试
- 4.1. 寻找页面
- 4.2. 安全测试
- 4.2.1. 工具下载
- 4.2.2. Packer-Fuzzer操作
- 4.2.3. 导入地址
- 4.2.4. 查看报告
1. API接口介绍
API接口简单来说就是两个不同的APP或不同的平台对接会使用到的,例如一个网站为何能够使用QQ或微信一键登陆,这里就是采用了API接口对接,当你搭建一个网站后想要让网站能够使用QQ或微信一键登陆,那么就需要找对方申请一个API接口,然后网站利用对方给予的API接口信息实现一键登陆。
关于API接口安全方面的渗透测试,在网上资料是比较少的,所以如果有错误,还请提出。
节选《API安全技术与实战》书籍中,更详细的内容可以参考该书籍,网上有电子书能够查询到,这里不方便发出来
1.1. 常用的API接口类
这里关于理论方面我也无法解释的太清除,所以主要侧重的可能就是实战操作,至于理论方面可以参考API方面的书籍或文章,这里只提一下常见的API接口。
1.1.1. API接口分类
这里可能也是之前的分类,仅作参考。
1.1.1.1. 类库型API
类库型API通常是一个类库,它的使用依赖于特定的编程语言,开发者通过接口调用,访问API的内置行为,从而处理所需要的信息。例如,应用程序调用微软基础类库(MFC)。
1.1.1.2. 操作系统型API
操作系统型API通常是操作系统层对外部提供的接口,开发者通过接口调用,完成对操作系统行为的操作。例如,应用程序调用Windows APl或Linux标准库。
1.1.1.3. 远程应用型API
远程应用型API是开发者通过标准协议的方式,将不同的技术结合在一起,不用关心所涉及的编程语言或平台,来操纵远程资源。例如,Java通过JDBC连接操作不同类型的数据库。
1.1.1.4. WEB应用型API
Web应用型API通常使用HTTP协议,在企业与企业、企业内部不同的应用程序之间,通过Web开发过程中架构设计的方法,以一组服务的形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。例如,社交应用新浪微博的用户登录。
1.1.1.5. 总结
从上述介绍的4种API类型可以看出,API并非新生事物,很早就存在着,只是随着技术的发展,这个专有名词的含义已经从当初单一的类库型API或操作系统型API扩展到如今的Web应用型API接口,区是商业反展和业务多样化驱动技术不断改进的必然结果。
同时,API的存在对业务的意义也已经从单纯的应用程序接口所定义的用于构建和集成应用程序软件的一组定义和协议,变成了业务交互所在的双方之间的技术约定。
使用API技术的业务双方,其产品或服务与另一方产品和服务在通信过程中,不必知道对方是如何实现的就像在生活中需要使用电,只要按照要求接上电源就会有电流,而不必知道电流的产生原理自己来发电。不同的行业应用可以独立去构建自己的API能力再对外部提供服务,这样做的好处是大大地节约了社会化服务能力的成本,简化了应用程序开发的难度,节省了时间,为业务能力的快速迭代提供了可操作的机会。
1.1.2. API接口类型
这里就是介绍简单的一些常见的接口,可以扩展看书上的。
1.1.2.1. HTTP类接口
基于HTTP协议的开发接口,这个并不能排除没有使用其他的协议。
1.1.2.2. RPC类接口
Remote Procedure Calls 远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器。 RPC(远程过程调用)是一项广泛用于支持分布式应用程序(不同组件分布在不同计算机上的应用程序)的技术。RPC 的主要目的是为组件提供一种相互通信的方式,使这些组件之间能够相互发出请求并传递这些请求的结果。 没有语言限制。
1.1.2.3. web service类接口
Web service是系统对外的接口,比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
1.1.2.4. http service与web service区别
本质上其实http service与web service差不多,但是httpservice通过post和get得到你想要的东西,而webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型。
同时http协议传输的都是字符串了,webservice则是包装成了更复杂的对象。
1.2. API常见技术
这里只是指常见,同时侧重于实战教程中能够参考的,至于更多的技术可能需要参考其它文章结合,这里无法将所有内容都涉及到,还请谅解。
1.2.1. SOAP
SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于 XML(标准通用标记语言下的一个子集)的协议,它被设计成在 WEB 上交换结构化的和固化的信息。SOAP 不是 Web Service 的专有协议。
SOAP 使用 HTTP 来发送 XML 格式的数据,可以简单理解为:SOAP = HTTP +XML
1.2.2. REST
REST(Representational State Transfer)即表述性状态传递,在三种主流的Web 服务实现方案中,因为 REST 模式的 Web 服务与复杂的 SOAP 和 XML-RPC 对比来讲明显的更加简洁,越来越多的 Web 服务开始采用 REST 风格设计和实现。例如,Amazon.com 提供接近 REST 风格的 Web 服务进行图书查找;雅虎提供的 Web 服务也是REST 风格的。
1.2.3. WSDL
WSDL(Web Services Description Language)即网络服务描述语言,用于描述Web 服务的公共接口。这是一个基于 XML 的关于如何与 Web 服务通讯和使用的服务描述;也就是描述与目录中列出的 Web 服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
1.3. API常见的安全漏洞类型
根据安全漏洞发生的机理和原因,对API安全漏洞做归类分析,常见的类型如下。
- **未受保护API:**在现行的Open API开放平台中,一般需要对第三方厂商的API接入身份进行监管和审核,通过准入审核机制来保护API。当某个API因未受保护而被攻破后,会直接导致对内部应用程序或内部API的攻击。比如因REST、SOAP保护机制不全使攻击者透明地访问后端系统即属于此类。
- **弱身份鉴别:**当API暴露给公众调用时,为了保障用户的可信性,必须对调用用户进行身份认证。因设计缺陷导致对用户身份的鉴别和保护机制不全而被攻击,比如弱密码、硬编码、暴力破解等。
- **中间人劫持:**因API的通信链路安全机制不全,攻击者通过攻击手段将自己成为API链中的某个受信任链,从而拦截数据以进行数据篡改或加密卸载。此类攻击,通常发生在网络链路层。
- **传统Web攻击:**在这里主要是指传统Web攻击类型,通过攻击HTTP协议中不同的参数,来达到攻击目的,比如SQL注入、LDAP注入、XXE等。而攻击者在进一步攻击中,会利用权限控制缺失、CSRF进行横向移动,从而获取更大的战果。
- **弱会话控制:**有时API身份鉴别没有问题,但对会话过程安全保护不足,比如会话令牌(Cookie次性URL、SAML令牌和OAuth令牌)的保护。会话令牌是使API服务器知道谁在调用它的主要(通常是唯一的)方法,如果令牌遭到破坏、重放或被欺骗,API服务器很难区分是否是恶意攻击行为。
- **反向控制:**与传统的交互技术不同,API通常连接着两端。传统的应用中大多数安全协议都认为信任服务器端是可信的,而在API中,服务器端和客户端都不可信。如果服务器端被控制,则反向导致调用API的客户端出现安全问题,这是此类安全问题出现的原因。
- **框架攻击:**在API安全威胁中,有一些符殊行D在不同版本,导致攻击者攻击低版本API漏洞;同一题,这类威胁统称为框架攻击。最常见的比如同一API存在不同版本,导致攻击者攻击低版本API漏洞;同一API的不同客户端调用,可能PC端没有安全问题而移动端存在安全问题等。
1.4. OWASP API安全漏洞类型
在OWASP API安全Top 10中,OWASP延续了Web安全的传统,收集了公开的与API安全事件有关的数据和漏洞猎人赏金平台的数据,由安全专家组进行分类,最终挑选出了十大API安全漏洞的类型,以警示业界提高对API安全问题的关注。这十大API安全漏洞类型的含义分别如下。
- **API1-失效的对象级授权:**攻击者通过破坏对象级别授权的API,来获得未经授权的或敏感的数据,比如通过可预测订单ID值来查询所有订单信息。
- **API2-失效的用户认证:**开发者对API身份认证机制设计存在缺陷或无保护设计,导致身份认证机制无效,比如弱密码、无锁定机制而被暴露破解、Token未校验或Token泄露导致认证机制失效等。
- **API3-过度的数据暴露:**在API响应报文中,未对应答数据做适当的过滤,返回过多的、不必要的敏感信息。比如查询用户信息接口时却返回了身份证号、密码信息;查询订单信息时也返回了付款银行卡号、付款人地址信息等。
- **API4-缺乏资源和速率控制:**在API设计中,未对API做资源和速率限制或保护不足,导致被攻击。比如用户信息接口未做频次限制导致所有用户数据被盗;文本翻译接口没有速率限制导致大量文件上传耗尽翻译服务器资源。
- **API5-失效的功能级授权:**与API1类似,只不过此处主要指功能级的控制,比如修改HTTP方法,从GET改成DELETE便能访问一些非授权的API;普通用户可以访问api/userinfo的调用,直接修改为api/admininfo,即可调用管理类API。
- **API6-批量分配:**在API的业务对象或数据结构中,通常存在多个属性,攻击者通过篡改属性值的方式,达到攻击目的。比如通过设置user.is_admin和user.is_manager的值提升用户权限等级;假设某API的默认接口调用参数为{“user_name”:“user”, “is_admin”:0},而恶意攻击者修改请求参数,提交值为{“user_name”:“attacker”, “is_admin”:1},通过修改参数is_admin的值来提升为管理员权限。
- **API7-安全性配置错误:**系统配置错误导致API的不安全,比如传输层没有使用TLS导致中间人劫持;异常堆栈信息未处理直接抛给调用端导致敏感信息泄露。
- **API8-注入:**与OWASP Web安全注入类型相似,主要指SQL注入、NoSQL注入、命令行注入、XML注入等。
- **API9-资产管理不当:**对于API资产的管理不清,比如测试环境的、已过期的、低版本的、未升级补丁的、影子API等接口暴露,从管理上没有梳理清楚,导致被黑客攻击。
- **API10-日志记录和监控不足:**对API缺失有效的监控和日志审计手段,导致被黑客攻击时缺少告警、提醒,未能及时阻断。比如没有统一的API网关、没有SEIM平台、没有接入Web应用防火墙等。
1.5. 接口数据包中常见问题
Method:请求方法
攻击方式:OPTIONS,PUT,MOVE,DELETE
效果:上传恶意文件,修改页面等
URL:唯一资源定位符
攻击方式:猜测,遍历,跳转
效果:未授权访问等
Params:请求参数
攻击方式:构造参数,修改参数,遍历,重发
效果:爆破,越权,未授权访问,突破业务逻辑等
Authorization:认证方式
攻击方式:身份伪造,身份篡改
效果:越权,未授权访问等
Headers:请求消息头
攻击方式:拦截数据包,改Hosts,改Referer,改Content-Type等
效果:绕过身份认证,绕过Referer验证,绕过类型验证,DDOS等
Body:消息体
攻击方式:SQL注入,XML注入,反序列化等
效果:提权,突破业务逻辑,未授权访问等
2. WEB service类—wsdl测试
关于这个接口的测试,若不是很熟,不要轻易的测试,同时若全是英文的情况下,无法理解更不要随便的尝试,可能会导致数据删除等情况的发生。
同时由于这方面的环境不好搭建,只能在网上寻找相关的内容进行测试,不能保障测试过程中都会一定会遇到存在问题的接口,这里主要是了解测试手段即可。
2.1. 寻找接口页面
关于寻找这个接口页面,可以在前期对网站就是目录扫描等方式进行获取,例如这里使用Google查询,这里不一定能百分比搜寻到哦!
语法:edu.cn inurl: asmx?wsdl ##asmx是语言,但是我尝试切换了一下语言,我发现反而内容更少了。
2.1.1. 查看页面
一般来说看到这个界面,多数都是接口类的页面。
2.1.2. 查看所有
这里如果想要一次性查看所有内容,可以在后面输入?wsdl即可查看xml语言,就会显示所有内容。
?wsdl ##查看xml语言
2.2. 安全测试
这里可以使用手动测试,也可以使用工具测试,手动测试走效率上来说肯定是没有工具测试那么快的,当然我们也要先介绍一下如果使用手动测试。
2.2.1. 手动测试
所谓的手动测试就是在获取页面的信息后,点击进去,然后手动输入一些信息进行测试,这方面可能需要掌握一定的API接口技术能够,否则很多测试都是在盲猜或盲测,有时候可能测半天都测错了,自然就不会出现数据。
2.2.1.1. 选在测试内容
例如这里点击登陆账号验证,我们在界面中的输入框中输入admin来进行测试,然后点击下面的invoke,点击完会自动跳转出现相关的提示信息。
2.2.1.2. 查看回显
这里显示数据处理异常,那么就证明没有admin相关的数据,那么就是测试失败了,那这个整个手动测试流程就是这样的,admin不行可以换成其它的,或者进入其它的输入框中进行测试,均行。
2.2.2. SoapUI工具测试
这个工具下载需要输入联系方式,这里直接给安装包吧,如果确实需要下载最新的那么就去官网下载吧,安装教程我就不说了,别一个软件都不会安装…
这个工具确实本质上也是手动测试,只是相比较于在网页上测试,更为方便点。
2.2.2.1. 工具下载地址
SOapUI官网下载地址
SoapUI网盘下载地址提取码:eqq2
2.2.2.2. 添加内容
下载好工具后,点击工具栏empty,弹出的内容关闭即可,然后再左侧边栏会出现一个project1即可。
2.2.2.3. 选在wsdl
然后右击project1,选择add WSDL即可。
2.2.2.4. 复制地址
在弹出的窗口中,将刚刚的地址复制进行即可,但是要注意一定要复制的是xml的链接,也就是在地址后面添加?wsdl的xml状态的结果。
2.2.2.5. 测试内容
然后再看左侧边栏就会出现相关的内容了,然后双击点进去,修改相关的内容,即可看到相关的结果,这个就是工具测试,当然这个工具有点类似于手工测试
2.2.3. Ready API 工具测试
这个工具由于没找到新版的破解版,都是老版的,同时虽然可以试用,但是在时间操作中,发现需要发送邮箱,但是不知道为何一直发送失败。属于这里也就不提供了,我这里大概截图看一下如何使用吧,同时由于我这个找到的地址是国内了,也就不使用这个工具扫描了,毕竟有影响。
这个工具会自动去分析是否存在一些安全漏洞,属于全自动的,只需要将地址复制上去即可。
2.2.3.1. 创建安全测试
这里点击工具栏选择下方的创建安全测试。
2.2.3.2. 选择类型
这里我们再选择需要创建的类型,根据我们刚刚获取到的是wdsl,那么我们就选择左边这个。
2.2.3.3. 输入地址
将刚刚获取的地址输入进去即可。
2.2.3.4. 安全漏洞
这里就是选择你需要测试的安全漏洞,这里可以直接点击默认。
2.2.3.5. 自动进行测试
添加完毕后,就会进行自动测试,这里只需要工具测试完毕即可,该工具会自动生成一个报告。
2.2.3.6. 查看报告
报告会在当前了下生成。
3. SOAP 类—Swagger测试
关于Swagger,其实是java中经常使用到的第三方软件,类似于数据库管理系统phpMyadmin一样。
专业的解释就是Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器。
这个解释简单点来讲就是说,Swagger是一款可以根据resutful风格生成的生成的接口开发文档,并且支持做测试的一款中间软件。
3.1. 寻找页面
这里同样都是可以采取很多种方式进行查找。
3.1.1. 寻找Swagger
关于寻找Swagger其实可以使用目录扫描,JS资源探针,或者浏览器插件等,这里举例子就使用浏览器插件来演示。
3.1.2. FOFA搜索
"Swagger" && title=="Swagger UI"
3.2. 安全测试
同样这里也是分为手动测试与自动化测试,至于手动测试,这里就简单的演示一下吧,手动测试确实是比较麻烦的。
3.2.1. 手动测试
简单来说,手动测试就是在这些框内插入一下相关的数据进行测试,可以是sql注入语句、xss语句、xml语句以及一些执行代码或信息泄露等。
3.2.1.1. 英文参考
这里是找了一个其它国家的页面,可以看到全部都是英文,有时候确实无从下手,就算有翻译软件,也不一定能够翻译准确。
3.2.1.2. 汉化参考
比如上图都是英文,可能考翻译软件,也会出现不知道如何测试的情况,那么下面这个应该就能一目了然了,当然我不会去操作,仅仅的展示,由于都是国内网站。
这里都很明显告诉你是干嘛了,还能不知道怎么测试么,就是输入相关的内容进行测试,当然手动测试比较慢,也可以借助工具来进行测试。
3.2.2. SoapUI工具测试
这里需要获取josn地址,然后将地址导入。
3.2.2.1. 获取josn地址
在页面中都会存在一个这个蓝色链接,打开就是josn地址了。
3.2.2.2. 导入josn地址
这里将地址导入即可,可以看到下图,先选在Swagger,在弹出的对话框中输入josn地址。
3.2.2.3. 输入josn地址
这里输入josn地址后,点击ok,但是会出现一种情况就是无法获取到,主要原因就是由于有时工具无法访问国外地址,就会导致测试国外地址的时候会出现无法访问的情况。
3.2.2.4. 添加成功
这里费劲千辛万苦终于找到一个能够添加成功的,剩下的测试完全就是替换数据了,然后看内容。
3.2.3. 自动化工具
这里的自动化工具是源自于github上的工具。
3.2.3.1. 下载链接
swagger-exp
swagger-hack
3.2.3.2. swagger-hack操作
该脚本需要python3.0的环境,加上-h可以显示相关的参数,通常直接使用-u即可。
这里测试一定要加上josn的地址,而不是页面地址。
在当前目录下会生成一个结尾为csv的表格,在这里面重点关注响应200的一行,不过我这里翻了一下啥数据没有,我也懒得再去寻找有内容的数据了。
4. HTTP 类—Webpack测试
webpack是一个模块打包器(module bundler),webpack视HTML,JS,CSS,图片等文件都是一种资源 ,每个资源文件都是一个模块(module)文件,webpack就是根据每个模块文件之间的依赖关系将所有的模块打包(bundle)起来。
4.1. 寻找页面
这个寻找页面我就不介绍了采用的方式和SOAP类寻找页面的方式都是一样的。
4.2. 安全测试
这里最好是工具测试,使用手动测试的话比较麻烦。
4.2.1. 工具下载
这个工具需要安全的库挺多的,最好按照GitHub上描述进行操作。
Packer-Fuzzer
4.2.2. Packer-Fuzzer操作
这里需要提前测试是否成功,以免出现部分库不正确的情况。
4.2.3. 导入地址
这里把我们寻找到的地址使用-u添加地址进行扫描。
python PackerFuzzer.py -u 地址
4.2.4. 查看报告
在当前目录下的reports中能够看到的word版报告以及html版的报告,可以看到这里泄露了一个邮箱地址,以及手机号码。
相关文章:

API接口安全—webservice、Swagger、WEBpack
API接口安全—webservice、Swagger、WEBpack1. API接口介绍1.1. 常用的API接口类1.1.1. API接口分类1.1.1.1. 类库型API1.1.1.2. 操作系统型API1.1.1.3. 远程应用型API1.1.1.4. WEB应用型API1.1.1.5. 总结1.1.2. API接口类型1.1.2.1. HTTP类接口1.1.2.2. RPC类接口1.1.2.3. web…...
从前M个字母中取N个的无重复排列 [2*+]
目录 从前M个字母中取N个的无重复排列 [2*+] 程序设计 程序分析 从前M个字母中取N个的无重复排列 [2*+] 输出从前M个字母中取N个的无重复字母排列 Input 输入M N 1<=M=10, N<=M Output 按字典序输出排列 Sample Input 4 2 Sample Output A B A C A D B A B C B …...
ES forceMerge 强制段合并为什么会提升检索性能?
根据以前的测试,forceMerge段合并,将段的个数合并成一个。带来了将近一倍的性能提升,测试过程文档(请参考我的另外一篇文章):ES优化实战- forceMerge搜索提升测试报告_es forcemerge_水的精神的博客-CSDN博…...

macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像
本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.3.1 为 Mac 提供下…...

html+css+JavaScript+json+servlet的社区系统(手把手教学)
目录 课前导读: 一、系统前期准备 二、前端代码的编写 三、登陆页面简介 四、注册页面 五、社区列表页 六、社区详情页 七、社区发帖页 八、注销 九、访问链接 登陆页面http://175.178.20.77:8080/java106_blog_system/login.html 总结: 课前…...

UI Toolkit(1)
UI ToolkitUI Toolkit界面画布设置背景制作UI布局UI Toolkit界面 在Unity 2021LTS版本之后UI Toolkit也被内置在Unity中,Unity有意的想让UI Toolkit 成为UI的主要搭建方式,当然与UGUI相比还是有一定的差别。他们各有有点,这次我们就开始介绍…...

vLive带你走进虚拟直播世界
虚拟直播是什么? 虚拟直播是基于5G实时渲染技术,在绿幕环境下拍摄画面,通过实时抠像、渲染与合成,再推流到直播平台的一种直播技术。尽管这种技术早已被影视工业所采用,但在全民化进程中却是困难重重,面临…...

初谈 ChatGPT
引子 最近,小编发现互联网中的大 V 突然都在用 ChatGPT 做宣传:“ChatGPT不会淘汰你,能驾驭ChatGPT的人会淘汰你”、“带领一小部分人先驾驭ChatGPT”。 确实,ChatGPT这个新生事物,如今被视为蒸汽机、电脑、iPhone 般的…...
JAVA练习103-螺旋矩阵
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 4月9日练习内容 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目-螺…...

RecvByteBufAllocator内存分配计算
虽然了解了整个内存池管理的细节,包括它的内存分配的具体逻辑,但是每次从NioSocketChannel中读取数据时,应该分配多少内存去读呢? 例如,客户端发送的数据为1KB , 应该分配多少内存去读呢? 例如:…...

图数据结构与算法
什么是图数据的结构 图是由顶点和边组成的非线性数据结构。顶点有时也称为节点,边是连接图中任意两个节点的线或弧。更正式地说,图由一组顶点 ( V ) 和一组边 ( E ) 组成。该图由 G(E, V) 表示。 图的组成部分 顶点:顶点是图的基本单位。有时,顶点也称为顶点或节点。每个节…...
科普:c语言与C++的区别
C语言和C语言是两种广泛使用的编程语言,尽管它们非常相似,但它们在某些方面也存在不同之处。本文将详细介绍C语言和C语言的区别。 1. 编程范式 C语言是一种过程式编程语言,它的设计目标是为了编写操作系统和其他系统级编程。C语言是一种面向…...

流量整形(GTS和LR)
Generic Traffic Shaping通用流量整形 通用流量整形(简称GTS)可以对不规则或不符合预定流量特性的流量进行整形,以保证网络上下游之间的带宽匹配,避免拥塞发生。 GTS与CAR一样,都采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,…...
Java接口详细讲解
目录 Java接口概念 Java接口主要有以下特点 Java接口的具体作用 定义接口 实现接口 接口继承 默认方法 静态方法 Java接口概念 Java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 …...

元宇宙地产暴跌,林俊杰亏麻了
文/章鱼哥出品/陀螺财经随着元宇宙的兴起,元宇宙地产曾一度被寄予厚望,成为各大投资者追捧的对象。然而,最近的一次元宇宙地产价值暴跌再次提醒我们,高收益背后可能伴随着高风险。根据元宇宙分析平台WeMeta的数据显示,…...

什么是瀑布流布局?瀑布流式布局的优缺点
瀑布流又称瀑布流式布局,是一种多列等宽不等高的一种页面布局方式。 视觉表现为参差不齐的多栏布局。随着页面滚动条向下滚动,这种布局会不断加载数据并附加至当前的尾部。 是一种多列等宽不等高的一种页面布局方式,用于图片比较复杂&#…...

给您的 MongoDB 定期做个体检:MongoDB 诊断
新钛云服已累计为您分享739篇技术干货接下来的一些列文章会为大家介绍日常工作中常用的 NoSQL 产品 MongoDB。主要涉及到:MongoDB 的安装及基本使用 MongoDB 文档查询 MongoDB 复制集 MongoDB 分片集群的介绍及搭建 MongoDB 安全加密 MongoDB 诊断我们会用…...

【云原生进阶之容器】第五章容器运行时5.8--容器热迁移
《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述...
react框架的简单认识
React框架 众所周知,React与Vue,Angular被前端开发人员称为前端的三大框架。在如今,React和Vue相对于老牌的Angular,它们的表现更为出色,常常被各大公司使用。但其中React的技术难度要稍稍大于Vue,不过为了…...

IDEA的基本使用
IDEA的基本使用IDEA的基本使用1 IDEA概述2 IDEA的下载和安装2.1 下载2.2 安装3 IDEA中层级结构介绍3.1 结构分类3.2 结构介绍project(项目、工程)module(模块)package(包)class(类)3…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...