Windows下Linkis1.5DSS1.1.2本地调试

news2024/11/19 9:35:12

1 Linkis:

参考:

  • 单机部署 | Apache Linkis
  • 技术分享 | 在本地开发调试Linkis的源码 (qq.com)
  • DataSphere Studio1.0本地调试开发指南 - 掘金 (juejin.cn)

1.1 后端编译

参考【后端编译 | Apache Linkis】】

  1. 修改linkis模块下pom.xml,将mysql.connetor.scope修改为compile,修改后如下:
<mysql.connector.scope>compile</mysql.connector.scope>
<!--<mysql.connector.scope>test</mysql.connector.scope>-->
  1. 修改linkis-engineplugin-io_file模块下IoEngineConnExecutorTest测试类包名,将scala改成java。
    在这里插入图片描述

如果您是本地第一次使用,必须在最外层工程pom.xml所在目录先执行以下命令:

mvn -N install

在最外层工程pom.xml所在目录执行以下命令

mvn clean install -DskipTests

1.2 管理台编译

参考【管理台编译 | Apache Linkis】

1.3 调整配置文件

1.3.1 拷贝配置文件

在 Linkis 源码文件夹下,子目录 linkis-dist/package/conf 中,是 Linkis 的一些默认配置文件,将配置文件复制到自己的配置文件目录,如D:\linkis\linkis-package\conf
在这里插入图片描述
在这里插入图片描述

1.3.2 修改log4j2.xml

增加日志输出到控制台的配置,修改后内容如下:

<configuration status="error" monitorInterval="30">
    <properties>
        <property name="LOG_PATH">logs</property>
        <property name="LOG_FILE">linkis</property>
    </properties>
    <appenders>
        <RollingFile name="RollingFile" append="true" fileName="${LOG_PATH}/${LOG_FILE}.log"
                     filePattern="${LOG_PATH}/$${date:yyyy-MM}/${LOG_FILE}/linkis-log-%d{yyyy-MM-dd-hh}-%i.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%-40t] %c{1.} (%L) [%M] [JobId-%X{jobId}] - %msg%xEx%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
         <console name="Console-Plain" target="SYSTEM_OUT">
            <!--输出日志的格式-->
            <PatternLayout pattern="%m%n"/>
        </console>
    </appenders>
    <loggers>
        <root level="INFO">
            <appender-ref ref="Console-Plain"/>
        </root>
        <logger name="com.netflix.loadbalancer.DynamicServerListLoadBalancer" level="warn" additivity="true">
            <appender-ref ref="Console-Plain"/>
        </logger>
    </loggers>
</configuration>
1.3.3 数据库配置

创建数据库,并执行linkis数据库脚本,修改linkis.properties配置文件。

在这里插入图片描述

1.4 服务配置和启动

所有微服务名称如下:

├── linkis-cg-engineconnmanager 引擎管理服务  
├── linkis-cg-engineplugin 引擎插件管理服务  
├── linkis-cg-entrance 计算治理入口服务  
├── linkis-cg-linkismanager 计算治理管理服务  
├── linkis-mg-eureka 微服务注册中心服务  
├── linkis-mg-gateway Linkis网关服务  
├── linkis-ps-publicservice 公共服务 

1.4.1 linkis-mg-eureka( 微服务注册中心服务)

Linkis 和 DSS 的服务都依赖 Eureka,所以我们需要首先启动 Eureka 服务,Eureka 服务可以在本地启动,也可以使用远程启动的服务。保证各个服务都能访问到 Eureka 的 IP 和端口之后,就可以开始着手启动其他微服务了。

在 Linkis 内部是通过-DserviceName 参数设置应用名以及使用配置文件,所以-DserviceName 是必须要指定的 VM 启动参数。

可以通过 “-Xbootclasspath/a:配置文件路径”命令,将配置文件追加到引导程序类的路径末尾,即将依赖的配置文件加到 classpath 中。

通过勾选 Include dependencies with “Provided” scope ,可以在调试时,引入 provided 级别的依赖包。
在这里插入图片描述

服务名:

linkis-mg-eureka

启动类:

org.apache.linkis.eureka.SpringCloudEurekaApplication

VM参数:

-DserviceName=linkis-mg-eureka -Xbootclasspath/a\:D:\\linkis\\linkis-package\\conf

program参数:

--spring.profiles.active=eureka --eureka.instance.preferIpAddress=true

直接运行此Application,成功启动后可以通过http://localhost:20303/ 查看 eureka 服务列表。
在这里插入图片描述

附:如果服务器已有linkis-mg-eureka服务,可以使用nginx作为代理访问(端口不能直接访问)。修改nginx.conf,配置如下

       upstream eureka-host {
           server eurake服务器IP:20303;
       }

       location /eureka {
            proxy_pass  http://eurake服务器IP:20303;
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  REMOTE-HOST $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }


        location /eureka/js/wro.js {
            proxy_pass http://eureka-host/eureka/js/wro.js;
        }

        location /eureka/css/wro.css {
            proxy_pass http://eureka-host/eureka/css/wro.css;
        }

        location /eureka/images/spring-logo-eureka.png {
            proxy_pass http://eureka-host/eureka/images/spring-logo-eureka.png;
        }

        location /eureka/fonts/montserrat-webfont.woff {
            proxy_pass http://eureka-host/eureka/fonts/montserrat-webfont.woff;
        }

        location /eureka/fonts/varela_round-webfont.woff {
            proxy_pass http://eureka-host/eureka/fonts/varela_round-webfont.woff;
        }

        location /eureka/fonts/montserrat-webfont.ttf {
            proxy_pass http://eureka-host/eureka/fonts/montserrat-webfont.ttf;
        }

        location /eureka/fonts/varela_round-webfont.ttf {
            proxy_pass http://eureka-host/eureka/fonts/varela_round-webfont.ttf;
        }

        location ^~/eureka-state {
            proxy_pass http://eureka-host/;
        }

可通过http://代理IP:代理端口/eureka-state 访问eurake web

其他服务访问eurake,修改application-linkis.yml中eurake配置

defaultZone: http://代理IP:代理端口/eureka

1.4.2 linkis-mg-gateway (网关服务)

linkis-mg-gateway 是 Linkis 的服务网关,所有的请求都会经由 gateway 来转发到对应的服务上。

启动服务器前,首先需要编辑 conf/linkis-mg-gateway.properties 配置文件,增加管理员用户名和密码,【用户名需要与你当前登录的机器用户名保持一致?待验证】。我配置为如下,用于dss登录。

wds.linkis.admin.user=hadoop
wds.linkis.admin.password=123456

设置 linkis-mg-gateway的启动Application:
在这里插入图片描述

服务名:

linkis-mg-gateway

启动类:

org.apache.linkis.gateway.springcloud.LinkisGatewayApplication

VM参数:

-DserviceName=linkis-mg-gateway -Xbootclasspath/a\:D:\\linkis\\linkis-package\\conf

启动服务,可正常启动,不过,在服务调用时,会报gatewayParsers空异常?
在这里插入图片描述

参考【关于linkis-spring-cloud-gateway 服务的空指针以及gatewayProperties无法赋值问题 · Issue #1086 · apache/linkis (github.com)】,做如下调整:

1.修改linkis-spring-cloud-gateway模块下的pom.xml。添加如下内容,并修改reactor-netty包版本,重新import。(不先import,下面修改Project Structure的修改会丢失)。

<!-- only for debug -->
<dependency>
  <groupId>io.projectreactor.netty</groupId>
  <artifactId>reactor-netty</artifactId>
  <!-- <version>0.9.7.RELEASE</version>-->
  <version>0.9.20.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-pes-common</artifactId>
  <version>${project.version}</version>
</dependency>

<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-jobhistory</artifactId>
  <version>${project.version}</version>
</dependency>

<!-- instance label -->
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-instance-label-server</artifactId>
  <version>${project.version}</version>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
</dependency>
<!-- only for debug -->

2.打开Project Structrue,删除linkis-engineplugin-openlookeng、linkis-eureka、linkis-metadata模块下重复的Source Folders和Resource Folders。【没有重复则跳过此步骤】。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.linkis-spring-cloud-gateway模块添加linkis-gateway-server-support-1.5.0-SNAPSHOT.jar到classpath。
在这里插入图片描述
在这里插入图片描述
4.修改linkis-mg-gateway.properties文件,在mybatis包扫描配置中添加jobhistory模块bean和entity包扫描。

5.保存设置,重新启动linkis-mg-gateway服务。调试gatewayParsers不为null。
在这里插入图片描述

1.4.3 linkis-ps-publicservice (公共服务)

publicservice 是 Linkis 的公共增强服务,为其他微服务模块提供统一配置管理、上下文服务、物料库、数据源管理、微服务管理和历史任务查询等功能的模块。

设置linkis-ps-publicservice的启动Application:
在这里插入图片描述

服务名:

linkis-ps-publicservice

启动类:

org.apache.linkis.filesystem.LinkisPublicServiceApp

VM参数:

-DserviceName=linkis-ps-publicservice -Xbootclasspath/a\:D:\\linkis\\linkis-package\\conf

如果需要物料上传需求,做以下调整

  1. 添加linkis-bmlserver到classpath

在这里插入图片描述

  1. 修改linkis.properties文件wds.linkis.bml.local.prefix参数,指定物料上传到本地的路径。
wds.linkis.bml.local.prefix=D:/data/dss/bml

如需其他服务,如linkis-instance-label-server,linkis-cs-server,linkis-udf-service等,可按上面添加linkis-bmlserver的方法添加到classpath,但稍微麻烦,开发调试直接修改linkis-ps-publicservice下的pom.xml,将需要添加的服务添加进来,例如:

<!-- only for debug -->
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-datasource-manager-server</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-bmlserver</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-metadata</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-cs-server</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-instance-label-server</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-udf-service</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-jobhistory</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-configuration</artifactId>
  <version>${project.version}</version>
</dependency>
<!-- only for debug -->

1.4.4 linkis-cg-linkismanager (计算治理管理服务)

在这里插入图片描述

服务名:

linkis-cg-linkismanager

启动类:

org.apache.linkis.manager.LinkisManagerApplication

VM参数:

-DserviceName=linkis-cg-linkismanager -Xbootclasspath/a:D:\\linkis\\linkis-package\\conf

修改linkis-cg-linkismanager.properties,配置wds.linkis.engineconn.home参数【需解压linkis安装包到指定目录】

#wds.linkis.engineconn.home=/appcom/Install/LinkisInstall/lib/linkis-engineconn-plugins
#wds.linkis.engineconn.plugin.loader.store.path=/appcom/Install/LinkisInstall/lib/linkis-engineconn-plugins
wds.linkis.engineconn.home=D:\\linkis\\linkis-package\\lib\\linkis-engineconn-plugins

1.4.5 linkis-cg-entrance( 计算治理入口服务)

在这里插入图片描述

服务名:

linkis-cg-entrance

启动类:

org.apache.linkis.entrance.LinkisEntranceApplication

VM参数:

-DserviceName=linkis-cg-entrance -Xbootclasspath/a:D:\\linkis\\linkis-package\\conf

1.4.6 linkis-cg-engineconnmanager (引擎管理服务 )

服务名:

linkis-cg-engineconnmanager

启动类:

org.apache.linkis.ecm.server.LinkisECMApplication

VM参数:

-DserviceName=linkis-cg-engineconnmanager -Xbootclasspath/a:D:\\linkis\\linkis-package\\conf

linkis-cg-engineconnmanager模块调试暂只支持Mac OS 和 Linux系统。【可参考官方文档调试 Debug 指引 | Apache Linkis进行远程调试】

启动控制台可以看到如下异常:

    start register ecm
    RPC-Sender-Asyn-Thread-ListenerBus add a new listener => class org.apache.linkis.rpc.BaseRPCSender$$anon$1
    Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
    Shutdown hook installed for: NFLoadBalancer-PingTimer-linkis-cg-linkismanager
    Client: linkis-cg-linkismanager instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=linkis-cg-linkismanager,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
    Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
    Start to linkis-ec-clear shell
    Shell linkis-ec-clear.sh execution failed, msg:Cannot run program "sh": CreateProcess error=2, 系统找不到指定的文件。
    End to linkis-ec-clear shell
    Flipping property: linkis-cg-linkismanager.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
    org.apache.linkis.ecm.server.service.impl.DefaultECMHealthService@251b3e8a changed status Starting => Running.
    ECM:ServiceInstance(linkis-cg-engineconnmanager, DIGITAL-MAYANJ:9102, 0) is ready
    SpringCloudInstanceLabelClient app state ACCEPTING_TRAFFIC
    SpringCloudInstanceLabelClient init

至此,查看eureka界面,查看服务列表:

在这里插入图片描述


2 DSS:

2.1 数据库准备

新建数据库dss,前后执行db目录下的dss_ddl.sql、dss_dml.sql脚本文件

2.2 后端编译

如果您是本地第一次使用,必须在最外层工程pom.xml所在目录先执行以下命令:

mvn -N install

在最外层工程pom.xml所在目录执行以下命令

mvn clean install -DskipTests

2.3 调整配置文件

2.3.1 拷贝配置文件

在 DSS 源码文件夹下,子目录conf 中,是 dss 的一些默认配置文件,将配置文件复制到自己的配置文件目录,如D:\dss\dss-1.1.2\conf

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

2.3.2 修改log4j2.xml

增加日志输出到控制台的配置,修改内容如下:

<configuration status="error" monitorInterval="30">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36} %L %M - %msg%xEx%n"/>
        </Console>
    </appenders>
    <loggers>
        <root level="INFO">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

2.3.3 修改dss.properties数据库配置

在这里插入图片描述

2.4 服务配置及启动

2.4.1 dss-server

在这里插入图片描述

服务名:

dss-server

启动类:

com.webank.wedatasphere.dss.DSSServerApplication

VM参数:

-DserviceName=dss-framework-orchestrator-server -DDSS\_HOME=D:\\\dss\\\dss-1.1.2 -Xbootclasspath/a\:D:\\\dss\\\dss-1.1.2\\\conf

修改dss-server模块下的pom.xml,添加如下内容:

<!-- only for debug -->
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-rpc</artifactId>
  <version>${linkis.version}</version>
</dependency>
<dependency>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  <groupId>org.springframework.cloud</groupId>
  <version>${spring.cloud.version}</version>
</dependency>
<dependency>
  <groupId>com.webank.wedatasphere.dss</groupId>
  <artifactId>dss-sender-service</artifactId>
  <version>${dss.version}</version>
</dependency>
<dependency>
  <groupId>com.squareup.okio</groupId>
  <artifactId>okio</artifactId>
  <version>2.2.2</version>
  <scope>compile</scope>
</dependency>
<!-- only for debug -->

由于dss-server启动,com.webank.wedatasphere.dss.common.utils.ZipHelper会使用到zip命令,需要安装zip和unzip命令【下载地址zip and unzip for the windows command line (stahlworks.com)】,直接下载安装即可。

在这里插入图片描述

修改com.webank.wedatasphere.dss.common.utils.ZipHelper 源码。将源码中String[] strArr = dirPath.split(File.separator);修改为如下代码:

 String[] strArr = null;
 if (FsPath.WINDOWS) {
     strArr = dirPath.split("\\" + File.separator);
  } else {
     strArr = dirPath.split(File.separator);
  }

修改linkis项目中org.apache.linkis.storage.fs.impl.LocalFileSystem源码:

  @Override
  public boolean create(String dest) throws IOException {
    LOG.info("try to create file with path:" + dest);
    File file = new File(dest);
    if (!FsPath.WINDOWS && !isOwner(file.getParent())) {
      throw new IOException("you have no permission to create file " + dest);
    }

    try {
      boolean created = file.createNewFile();
      if (created && !FsPath.WINDOWS) {
        setPermission(new FsPath(dest), this.getDefaultFilePerm());
        if (!user.equals(getOwner(dest))) {
          setOwner(new FsPath(dest), user, null);
        }
      }
      return created;
    } catch (Throwable e) {
      file.delete();
      if (e instanceof IOException) {
        throw (IOException) e;
      } else {
        throw new IOException(e);
      }
    }
  }

在这里插入图片描述

2.4.2 dss-apps-server

在这里插入图片描述

服务名:


dss-apps-server

启动类:

com.webank.wedatasphere.dss.apps.DSSAppsServerApplication

VM参数:

-DserviceName=dss-apps-server -DDSS\_HOME=D:\\\dss\\\dss-1.1.2 -Xbootclasspath/a\:D:\\\dss\\\dss-1.1.2\\\conf

修改dss-server模块下的pom.xml,添加如下内容:

<!-- only for debug -->
<dependency>
  <groupId>org.apache.linkis</groupId>
  <artifactId>linkis-rpc</artifactId>
  <version>${linkis.version}</version>
</dependency>
<dependency>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  <groupId>org.springframework.cloud</groupId>
  <version>${spring.cloud.version}</version>
</dependency>
<dependency>
  <groupId>com.webank.wedatasphere.dss</groupId>
  <artifactId>dss-sender-service</artifactId>
  <version>${dss.version}</version>
</dependency>
<dependency>
  <groupId>com.squareup.okio</groupId>
  <artifactId>okio</artifactId>
  <version>2.2.2</version>
  <scope>compile</scope>
</dependency>
<!-- only for debug -->

至此,查看eurake服务列表:

在这里插入图片描述

2.5 前端编译

参考【DataSphereStudio-Doc/zh_CN/开发文档/前端编译文档.md at main · WeDataSphere/DataSphereStudio-Doc (github.com)】

本地编译node版本为16.15.1 ,learna版本为 6.4.0

编译启动,浏览器打开http://localhost:8080。使用1.4.2中配置的用户名和密码登录。

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

3 备注

本文中调试过程基于linkis和DSS的master分支,由于社区活跃,代码变化频繁,部分内容会有一些出入,可按需和调试日志做适当调整。还有很多功能没有进行调试,如任务创建、执行等,各种appcon集成等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1263991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode Hot100 84.柱状图中最大的矩形

题目&#xff1a; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 方法&#xff1a; 代码&#xff1a; class Solution {public int largestRectang…

vue项目中通过vuex管理数据

目录 1.前言&#xff1a; 2.vuex的基础用法&#xff1a; 1.构建与挂载vue 基础模板渲染 构建仓库 2.mutations的使用 1.介绍 ​编辑 2.案列&#xff1a; 3.传参 4.辅助函数mapMutations&#xff1a; 3.module分对象的写法 介绍 建立模块&#xff1a; 访问数据的方…

SPSS生存分析:寿命表分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

PostgreSQL | EXTRACT | 获取时间的年月日字串

EXTRACT EXTRACT 函数是 PostgreSQL 中用于从日期和时间类型中提取特定部分&#xff08;如年、月、日、小时等&#xff09;的函数。 格式 EXTRACT(field FROM source) -- field 参数是要提取的部分&#xff0c;例如 YEAR、MONTH、DAY、HOUR 等。 -- source 参数是包含日期或…

计算机网络高频面试八股文

目录&#xff1a; 网络分层结构三次握手两次握手可以吗&#xff1f;四次挥手第四次挥手为什么要等待2MSL&#xff1f;为什么是四次挥手&#xff1f;TCP有哪些特点&#xff1f;说说TCP报文首部有哪些字段&#xff0c;其作用又分别是什么&#xff1f;TCP和UDP的区别&#xff1f;…

Unity 关于生命周期函数的一些认识

Unity 生命周期函数主要有以下一些&#xff1a; Awake(): 在脚本被加载时调用。用于初始化对象的状态和引用。 OnEnable(): 在脚本组件被启用时调用。在脚本组件被激活时执行一次&#xff0c;以及在脚本组件被重新激活时执行。 Reset(): 在脚本组件被重置时调用。用于重置脚本…

11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)

如果left<right&#xff0c;就表明其之间还有元素&#xff0c;即左右指针重合&#xff0c;区间只有一个元素也被包含其中&#xff1b; left<right,就表明递归过程中&#xff0c;只允许区间有两个及以上的元素&#xff0c;不允许区间只有一个元素&#xff0c;那么对应地&…

Python数据预处理详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 数据预处理是数据科学中至关重要的步骤&#xff0c;它包括清洗、转换、归一化等操作&#xff0c;以使数据适合于机器学习模型的使用。Python提供了多种强大的库和工具&#xff0c;能够帮助进行数据预处理。本文将…

中间件安全:JBoss 反序列化命令执行漏洞.(CVE-2017-7504)

中间件安全&#xff1a;JBoss 反序列化命令执行漏洞.&#xff08;CVE-2017-7504&#xff09; JBoss 反序列化漏洞&#xff0c;该漏洞位于 JBoss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中&#xff0c;其 doFilter 方法在没有进行任何安全检查和限制的情况下尝试…

小程序如何进行一键修复

在使用小程序过程中&#xff0c;难免会遇到一些问题&#xff0c;比如程序崩溃、功能异常等等。这时&#xff0c;版本一键修复就显得尤为重要了。下面&#xff0c;我们就来介绍一下小程序如何进行版本一键修复。 一、什么是版本一键修复&#xff1f; 版本一键修复是指在小程序…

YOLOv5算法进阶改进(5)— 主干网络中引入SCConv | 即插即用的空间和通道维度重构卷积

前言:Hello大家好,我是小哥谈。SCConv是一种用于减少特征冗余的卷积神经网络模块。相对于其他流行的SOTA方法,SCConv可以以更低的计算成本获得更高的准确率。它通过在空间和通道维度上进行重构,从而减少了特征图中的冗余信息。这种模块的设计可以提高卷积神经网络的性能。�…

从三个角度分析共享办公对工作效率的影响

在现代社会&#xff0c;共享办公的概念越来越受到人们的关注和欢迎。共享办公&#xff0c;顾名思义&#xff0c;就是多个公司或个体在同一办公空间内进行工作。那么&#xff0c;共享办公是否能提高工作效率呢&#xff1f;这个问题并没有一个确定的答案&#xff0c;因为它取决于…

全新付费进群系统源码 完整版教程

首先准备域名和服务器 安装环境&#xff1a;Nginx1.18 MySQL 5.6 php7.2 安装扩展sg11 伪静态thikphp 后台域名/admin账号admin密码123456 代理域名/daili账号admin密码123456 一、环境配置 二、建站上传源代码解压 上传数据库配置数据库信息 三、登入管理后台 后台域名/ad…

C++数据结构:图

目录 一. 图的基本概念 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三. 图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四. 最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五. 最短路径问题 5.1 Dijkstra算法 5.2 Bellman-Ford算法 5.3 Floyd-…

leetcode:用队列实现栈(后进先出)

题目描述 题目链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 题目分析 我们先把之前写的队列实现代码搬过来 用队列实现栈最主要的是实现栈后进先出的特点&#xff0c;而队列的特点是先进先出&#xff0c;那么我们可以用两个队列来实现 一个队…

「我在淘天做技术」迈步从头越 - 阿里妈妈广告智能决策技术的演进之路

作者&#xff1a;妙临、霁光、玺羽 一、前言 在线广告对于大多数同学来说是一个既熟悉又陌生的技术领域。「搜广推」、「搜推广」等各种组合耳熟能详&#xff0c;但广告和搜索推荐有本质区别&#xff1a;广告解决的是“媒体-广告平台-广告主”等多方优化问题&#xff0c;其中媒…

multiplicity连接出现灰色解决方法(一套键鼠控制多台电脑)

如果你有多台电脑&#xff0c;鼠标在不同电脑之间切换会很麻烦&#xff0c;需要手动不停地插拔键盘&#xff0c;如果多台设备能够共用一套键盘鼠标&#xff0c;能够大大提高效率&#xff0c;避免不必要的负担&#xff0c;解决方法有两个&#xff1a; 购买 对拷线使用软件实现多…

0006Java程序设计-ssm基于微信小程序的学生公寓生活管理系统

文章目录 **摘** **要****目** **录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;学生公寓生活管理也不例外&#xff0c;但…

Zotero | 取消翻译后自动添加笔记

目录 Step1&#xff1a;点击 “编辑” << “首选项” Step2&#xff1a;“翻译” << 取消勾选 “自动翻译批注” 在 Zetoro 中&#xff0c;选择颜色标记勾画的内容&#xff0c;将会自动生成一条笔记&#xff0c;如下图所示&#xff1a; 本人觉得很鸡肋&#xff0…

tcpdump使用心得

参考原文 https://danielmiessler.com/p/tcpdump/ 几个用例 tcpdump -i eth0 显示eth0网卡当前所有的抓包情况eth0是网卡名&#xff0c;可以通过ifconfig获得&#xff0c;也可以通过 tcpdump -D 显示当前可以监听的网卡 -i 参数表示接口&#xff0c;后跟要监听的网卡 tcpdu…