Apache Seatunnel本地源码构建编译运行调试
Apache Seatunnel本地源码构建编译运行调试
文章目录
- 1. 环境准备
- 1.1 Java环境
- 1.2 Maven
- 1.3 IDEA
- 1.4 Docker环境
- 1.5 Mysql8.0.28
- 1.6 其它环境准备
- 2. 源码包下载
- 3. idea项目配置
- 3.1 项目导入
- 3.2 maven配置
- 3.3 项目JDK配置
- 3.4 项目启动参数配置
- 3.4.1 seatunnel项目启动参数配置
- 3.4.2 seatunnel-web项目启动参数配置
- 4. 源码编译运行
- 4.1 sql脚本执行
- 4.2 编译构建
- 4.2.1 seatunnel编译构建
- 4.2.3 seatunnel-web编译构建
- 4.3 编译打包命令
- 4.4 启动运行
- 4.5 访问首页
- 5. mysql-jdbc 到mysql-jdbc的单表数据同步
- 5.1 添加数据源
- 5.2 同步任务定义
- 5.3 同步任务执行
- 5.4 同步任务执行遇到的问题
- 5.5 同步任务执行的结果
- 6. 总结
- 7.资料分享
1. 环境准备
本文使用的是windows10-64位专业版的电脑,需要安装环境如下
1.1 Java环境
jdk>=1.8 - 64 位的jdk、
1.2 Maven
使用的是idea自带的maven,最好是安装一个方便源码编译构建,使用idea自带的maven无法执行mvnw,但是可以复制mvnw后面的在idea的maven中的run maven中的new goal里面执行即可。
1.3 IDEA
代码编辑调试运行器
1.4 Docker环境
mysql8.0.28的安装是使用docker安装部署
1.5 Mysql8.0.28
Docker部署Mysql5.7x和Myslq8.x
https://mp.weixin.qq.com/s/5PC_VXtNc8689ag8b8cYLA
以上那几个步骤省略
1.6 其它环境准备
还需要如下的如下环境:
Windows10安装Node.js环境
https://mp.weixin.qq.com/s/qHHcbl6AMmdEbZLKnhz_tA
Windows10安装Hadoop3.1.3环境
https://mp.weixin.qq.com/s/BaXK0dMu4whOrnKQbb6G-A
Windows10之wsl-Linux子系统安装JDK、Maven环境
https://mp.weixin.qq.com/s/Lq30469wZgikM72s8tv1ZA
在阅读本文需要对Apache SeaTunne有一点了解
Apache SeaTunne简介
https://mp.weixin.qq.com/s/uHZ-29OF-NawOL4oZW6z2A
2. 源码包下载
https://seatunnel.apache.org/download
https://github.com/apache/seatunnel
https://github.com/apache/seatunnel-web
seatunnel可以在官方的download下载源码包或者在github上下载tag2.3.3包,不要下载2.3.3-release,不要下载xxx-release的分支,就拿2.3.3-release分支来说,里面的项目版本有2.3.3、又有2.3.4的版本,项目模块之前的版本不统一,就会导致编译版本冲突,下载tag中的2.3.3或者是download源码Source Code包,本文使用的tag2.3.3的包来本地编译构建运行的,使用2.3.3-release分支版本不统一导致冲突,我怀疑这个2.3.3-release分支估计是他们的开发分支,所以这里是需要注意的,不然很难在本地搞起来,seatunnel-web项目拉取的是1.0.0-release分支的代码。
3. idea项目配置
3.1 项目导入
seatunnel解压路径如下:
seatunnel-web路径如下:
git clone https://github.com/apache/seatunnel-web.git
git checkout 1.0.0-release
或者使用git拉取,git环境可要可不要
3.2 maven配置
setting.xml配置
配置成阿里的maven仓库方便编译构建是下载拉取项目所需的依赖包
<localRepository>D:\developer\repository</localRepository> <!--改为自己的本地maven仓库的路径即可-->
<mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>aliyunmaven2</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库2</name><url>https://maven.aliyun.com/repository/apache-snapshots</url></mirror><mirror><id>aliyunmaven3</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库3</name><url>https://maven.aliyun.com/repository/central</url></mirror></mirrors>
idaea的maven配置
两个项目都是这种配置,这里选择一个演示即可。
3.3 项目JDK配置
在project和SDKs选项中选择配置下jdk,两个项目都是这种配置,这里选择一个演示即可。
3.4 项目启动参数配置
3.4.1 seatunnel项目启动参数配置
jvm参数如下:编译的压缩包的解压路径
-DSEATUNNEL_HOME=D:\developer\other-code\other\seatunnel\seatunnel-dist\target\apache-seatunnel-2.3.3
项目编译后会输出到seatunnel-dist的target下
3.4.2 seatunnel-web项目启动参数配置
jvm参数和环境变量如下:
jvm参数
-DSEATUNNEL_HOME=D:\developer\other-code\other\seatunnel\seatunnel-dist\target\apache-sea
环境变量
ST_WEB_BASEDIR_PATH=D:\developer\other-code\other\seatunnel-web\seatunnel-web-dist\target\apache-seatunnel-web-1.0.1-SNAPSHOT\apache-seatunnel-web-1.0.1-SNAPSHOT
项目编译后会输出到seatunnel-web-dist的target下
4. 源码编译运行
4.1 sql脚本执行
脚本如下,复制出来执行即可:
数据库执行如下:
4.2 编译构建
4.2.1 seatunnel编译构建
jindodata先关的jar需要自行下载导入,在seatunnel-connectors-v2–>connector-file–>connector-file-jindo-oss的pom文件修改依赖如下:
<dependency><groupId>com.aliyun.jindodata</groupId><artifactId>jindo-core</artifactId><version>${jindo-sdk.version}</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/jindo-core-4.6.1.jar</systemPath></dependency><dependency><groupId>com.aliyun.jindodata</groupId><artifactId>jindosdk</artifactId><version>${jindo-sdk.version}</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/jindo-sdk-4.6.1.jar</systemPath></dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.2</version><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin></plugins></build>
引入jindodata相关的本地依赖和打包插件,jindodata相关包会在文末分享给大家
修改seatunnel-hadoop3-3.1.4-uber的maven如下:
该包如果不修改直接引入会导致下面的类死活依赖不到,后面将改包放入到taget的解压路径下的lib里面不生效导致报错如下:
加入mysql8.x的连接驱动包,这里不加的话,可以在解压的target目录下的lib中把这个jar包放进去,因为本文要进行的是mysql-jdbc—>mysql-jdbc的单表数据同步,所以需要这个jar包
seatunnel.yaml配置,这个基本默认即可
如果下载的是release支付的包或代码,需要在整个项目的pom中加入如下的配置:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>3.0.1</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions><configuration><skip>true</skip></configuration></plugin>
该插件配置是或略打包时候的gpg签名校验,不然会编译不通过,好多开源正规的项目都有这种签名校验的,所以需要加入这个插件才可以编译通过
4.2.3 seatunnel-web编译构建
seatunnel-server–>seatunnel-app–>pom加入mysql8.x的连接驱动包,可以使用8.0.28的包
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>
修改seatunnel-app下的application.yml
将seatunnel项目里面编译到seatunnel-dist下target里面的解压文件里面的的hazelcast-client.yaml文件和connectors文件下的plugin-mapping.properties(这个文件已经包含了,可以修改,注释里面的一些插件,放入自己需要的插件即可)文件拷贝到seatunnel-app的rusources里面,如上图所示.
plugin-mapping.properties配置文件修改只包含如下两个插件:
seatunnel.source.Jdbc = connector-jdbc
seatunnel.sink.Jdbc = connector-jdbc
4.3 编译打包命令
seatunnel项目运行这个:
mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true
seatunnel打包插件命令实例如下:
mvn clean package -pl seatunnel-connectors-v2/connector-jdbc -am -DskipTests -T 1Cseatunnel-web项目运行这个:
mvn clean package -pl seatunnel-web-dist -am -Dmaven.test.skip=true
或者可以直接点击右侧maven的package打包即可
关于这个编译构建的官方也有讲,下面两个连接打开就有,需要仔细的阅读
https://seatunnel.apache.org/docs/2.3.3/contribution/setup
https://github.com/apache/seatunnel-web
4.4 启动运行
在启动前需要先启动本地的mysql8.x、hadoop3.1.3
在启动之前将如下的jar包放入到seatunnel和seatunnel-web编译构建的target的lib目录下,以免启动由于缺少jar依赖而报错
或者是把项目中编译好的插件或数据源jar复制到这个两个项目的target的lib目录下也是可以的,上面的是我去阿里云maven仓库下载的
然后先启动seatunnel在启动seatunnel-web
前端ui编译启动
ui源码构建发布前需要修改访问后端的端口号:
cmd进入到seatunnel-web—>seatunnel-ui
路径执行如下命令:
npm install
npm run dev
4.5 访问首页
访问地址:
http://localhost:5173/
用户名/密码都是admin
5. mysql-jdbc 到mysql-jdbc的单表数据同步
5.1 添加数据源
如果创建不可以选择说明是对应的lib下面没有放入对应的数据源的插件jar包
5.2 同步任务定义
这里我们添加的是两个mysql-jdbc的数据源,这里采用任务类型是“数据集成”,mysql的单表同步到mysql的单表
将seatunnel库中的表role表同步到seatunnel_copy数据库中的role表中,seatunnel_copy数据库中的role表的结构和seatunnel库中的表role表结构一模一样
任务的source和sink的数据源如果不可以选,说明是lib下没有数据源相关的jar,需要放入指定的jar重启项目才可以选数据源
source配置如下:
sink配置如下:
5.3 同步任务执行
保存选择任务的类型使用的流式任务:(保存可以选择流式任务也可以选择批任务)
配置好任务之后,就可以点击运行按钮,执行完之后在“同步任务实例”列表中就可以看到之前的任务,状态是已完成
5.4 同步任务执行遇到的问题
如果状态执行不是已完成就会是一个以失败的状态,原因可能是缺少jar包或者是本地缺少hadoop3.1.3的环境,hadoop的环境官方的大佬说不是必须的,但是我在本地做这个案例的时候没有hadoop会执行报错的,所以上面seatunnel引擎的公共模块中的seatunnel.yaml配置里面配置了hdfs相关存储的信息,所以还需要去hdfs上新建一个目录如下:
这个目录不建立没有试过会不会报错,反正是有总比没有好,本地没有hapood会报如下错误:
大致上是任务在执行的时候需要做一些任务的检查点或保存点的数据状态的存储,上面那个报错感觉是执行了两次或者是多个线程执行过导致数据本来第一次是已经同步过去了,后面有搞了一次就主键冲突导致任务状态变成失败了,有了hdfs就不会有这个报错的,也是很神奇。
5.5 同步任务执行的结果
可以看到seatunnel库中role表数据同步到seatunnel_copy数据库中的role表中了
6. 总结
本地源码编译运行已经分享完了,这样做是为了更好的理解这个项目,你可以跑起来在idea中本地两边的项目打上断点,使用debug调试跟踪源码,可以开发一个插件或者是为这个项目贡献源码,或者是用于学习,通过欣赏项目的源码来学习项目中的一些好的设计思路,我个人觉得这个项目的亮点有一下几点:
第一:使用hazelcast(底层基于netty和socket)实现了内核集群,同时也可以使用hazelcast的代client向hazelcast引擎服务提交一个任务,然后该任务由web端或者是linux的控制台提交到引擎服务上(提交的任务是一个json的文件,里面定义好了input、transform和sink这三个阶段的信息),引擎服务又有master和work,主节点负责管理work节点的状态和任务调度(任务需要下发到那个work节点上执行,利用多机分布式来跑任务),并且会对任务做保存点or检查点(有点像fink的保存点和检查点的概念)。
第二是插件机制:一个插件就是一个jar包,把公共的流程步骤高度抽象封装到上层的api中,差异化的实现各种场景下的数据同步需求,数据源和插件是很丰富的
第三是类加载器:实现了自己的类加载器,项目启动就通过自己实现的类加载器加载指定路径下的插件jar包,就是通过这种插件的加载机制来完成按需加载,插件的机制就是上一个插件的输出作为下一个插件的输入,数据在一个插件链条上滚动传递,有点像设计模式中的责任链模式。
第四是三套引擎:默认使用的是自研的SeaTunnelEngine,还支持flink和spark两大引擎。
上面只是我个人看到的一些优点,也没有细细的看,就随便看了下,或许还有我不晓得的新东西,上面的hazelcast可以研究学下下,插件机制和自定义类加载机制是可以应用于我们平时的业务代码开发中。
有优点同样也存在缺点,她是一个闪亮的星星还处于发展阶段,相对来说还不是那么成熟,所以选型得慎重考虑,官方的文档虽然是比较全的,但是基本是英文的并且篇幅比较短,字少事多,赶脚写的不是那么详细,有的影藏的细节的东西,需要查看官方的公众号的文章或者是看源码中才能找到答案的,在遇到问题的时候最好的方法是找官方,寻求官方的帮助,加入官方的群聊,可以直接和大佬沟通,或者是你自己改源码解决,感觉不太靠谱还是不要使用以免背锅,本地构建编译如果你实在是编译运行不起来的话,多花一点时间是可以搞出来的,这个玩意我搞了有一个星期了吧,实在是有点蛋疼遇到各种奇葩的问题,在搞不出来,都有点想不搞了,放弃吧,但是一想在试一试结果还是被我搞出来了,坚持向下凿水源距离你可能就差一步之遥了,其实也是可以不编译构建,欣赏下源码也是不错的选择,然后不用把时间浪费在这个构建编译上,其实是为了打断点好调试一点,光看代码的话,也是只能浏览下看个大概,在学习研究这种开源的项目,也在只能是看他的官方文档和其他的一些博客资料,边搞边猜,边猜边搞,慢慢的也基本上能搞通,需要参看好多的文章或信息,然后从中实践出真知,所以我就写了这篇文章总结了下,下一篇文章分享在centOs上的安装部署实践mysql-jdbc==>mysql-jdbc同步例子中遇到的坑,敬请期待下一篇文章,希望我的分享对你有所帮助,请一键三连,么么么哒!
7.资料分享
链接:https://pan.baidu.com/s/1DWKpX2j5nyvDT3UucVc1Sg
提取码:ip7p
seatunnel-2.3.3.zip是tag的源码包, apache-seatunnel-2.3.3-src.tar.gz这个是官网的download下载的sourceCode包。
相关文章:
Apache Seatunnel本地源码构建编译运行调试
Apache Seatunnel本地源码构建编译运行调试 文章目录 1. 环境准备1.1 Java环境1.2 Maven1.3 IDEA1.4 Docker环境1.5 Mysql8.0.281.6 其它环境准备 2. 源码包下载3. idea项目配置3.1 项目导入3.2 maven配置3.3 项目JDK配置3.4 项目启动参数配置3.4.1 seatunnel项目启动参数配置3…...
构建高效持久层:深度解析 MyBatis-Plus(02)
目录 引言1. 逻辑删除1.1 概述1.2 逻辑删除的优势1.3.为什么使用逻辑删除1.4 综合案例 2. 乐观锁和悲观锁2.1.什么是乐观锁和悲观锁2.2.乐观锁和悲观锁的区别2.3.综合案例 3. 分页插件总结 引言 在现代软件开发中,数据库操作是不可或缺的一环。为了提高系统的性能、…...
Gitlab仓库推送到Gitee仓库的一种思路
文章目录 Gitlab仓库推送到Gitee仓库的一种思路1、创建Gitee的ssh公钥(默认已有Gitlab的ssh公钥)2、添加Gitlab远程仓库地址3、添加Gitee远程仓库地址4、拉取Gitlab远程仓库指定分支到本地仓库指定分支(以test分支为例)5、推送本地…...
快速能访问服务器的文件
1、背景 访问ubuntu上的文件 2、方法 python3 -m http.server 8081 --directory /home/ NAS 共享访问协议 — NFS、SMB、FTP、WebDAV 各有何优势?http://1 Ubuntu 搭建文件服务器(Nginx)...
Diary26-Vue综合案例1-书籍购物车
Vue综合案例1-书籍购物车 案例要求: 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…...
【EasyExcel实践】万能导出,一个接口导出多张表以及任意字段(可指定字段顺序)-简化升级版
文章目录 前言正文一、项目简介二、核心代码2.1 pom.xml 依赖配置2.2 ExcelHeadMapFactory2.3 ExcelDataLinkedHashMap2.4 自定义注解 ExcelExportBean2.5 自定义注解 ExcelColumnTitle2.6 建造器接口 Builder2.7 表格工具类 ExcelUtils2.8 GsonUtil2.9 模版类 ExportDynamicCo…...
解决 Hive 外部表分隔符问题的实用指南
简介: 在使用 Hive 外部表时,分隔符设置不当可能导致数据导入和查询过程中的问题。本文将详细介绍如何解决在 Hive 外部表中正确设置分隔符的步骤。 问题描述: 在使用Hive外部表时,可能会遇到分隔符问题。这主要是因为Hive在读…...
一文学会 Apache Zeppelin
Zeppelin资料 Zeppelin项目信息 Zeppelin官网 http://zeppelin.apache.org/Zeppelin源码地址 https://github.com/apache/zeppelinZeppelin JIRA: https://issues.apache.org/jira/projects/ZEPPELIN/summaryZeppelin文档 Flink on Zeppelin 文档集中地 https://www.yuque.co…...
ROS学习笔记(七)---参数服务器
ROS学习笔记文章目录 01. ROS学习笔记(一)—Linux安装VScode 02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序(简例) 03. ROS学习笔记(三)—好用的终端Terminator 04. ROS学习笔记(四)—使用 VScode 启动launch文件运行多个节点 05. ROS学习笔…...
【RTOS学习】源码分析(信号量和互斥量 事件组 任务通知)
🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 目录 🍓信号量和互斥量🍅创建🍅Take🍅Give &#x…...
1316:【例4.6】数的计数(Noip2001) 代码+解析
1316:【例4.6】数的计数(Noip2001) 【题目描述】 我们要求找出具有下列性质数的个数(包括输入的自然数n )。先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:不作任何处理;在它的左边加上一…...
征集倒计时 | 2023年卓越影响力榜单-第四届中国产业创新奖报名即将截止
第四届「ISIG中国产业智能大会」将于2024年3月16日在上海举办。2024 ISIG 以“与科技共赢,与产业共进”为主题,共设立RPA超自动化、 低代码、AIGC大模型、流程挖掘四大主题峰会。届时,大会组委会将颁发2023年度卓越影响力榜单—第四届中国产业…...
vue的语法模板与数据绑定的说明
vue的两大模板语法: 1.插值语法 2.指定语法 插值语法:{{}} 功能:用于解析标签体的内容 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性 指定语法: 功能:用于解析标签(包括:标签属性、标…...
VueCron使用方法
1)什么是vueCron Vue Cron 是基于 Vue.js 的定时任务管理组件,它提供了一种简单易用的方式来设定和管理定时任务。Vue Cron 提供了一个类似于 Linux crontab 的界面,用户可以通过它来创建、编辑和删除定时任务。 2)安装依赖及应…...
SpringBlade export-user SQL 注入漏洞复现
0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpringBoot 单体式微服务架构并存的综合型项目。 0x02 漏洞概述 SpringBlade v3.2.0 及之前版本框架后台 export-user 路径存在安全漏洞,攻击者利用该漏洞可通过组件customSqlS…...
结构体的一些补充知识
1、结构体后面分号前面的名字是什么意思。 在C中,结构体的定义格式为: struct <结构体名> {// 成员变量和成员函数 };在这个定义中,<结构体名>就是结构体的名称,而这个名称位于结构体定义的末尾,分号之前…...
20V升26V 600mA升压型LED驱动芯片,PWM调光芯片-AH1160
AH1160是一个功能强大的升压型LED驱动芯片,专为需要精确控制LED亮度的PWM调光应用而设计。它可将20V输入电压升压至26V,同时提供稳定的600mA电流输出,适用于各种LED照明设备。 芯片特点: 1. 输入电压范围:AH1160可在…...
如何在Go中制作HTTP服务器
引言 许多开发人员至少会花一些时间创建服务器,以便在互联网上分发内容。HTTP (Hypertext Transfer Protocol,超文本传输协议)提供了大部分这些内容,无论是请求一张猫的图片还是请求加载你正在阅读的教程。Go标准库为创建HTTP服务器以提供web内容或向这些服务器发出HTTP请求…...
Linux笔记---系统信息
🍎个人博客:个人主页 🏆个人专栏:Linux学习 ⛳️ 功不唐捐,玉汝于成 目录 前言 命令 1. uname - 显示系统信息 2. hostname - 显示或设置系统主机名 3. top - 显示系统资源使用情况 4. df - 显示磁盘空间使用情…...
最新版android stuido加上namespace
每个 Android 模块都有一个命名空间,此命名空间用作其生成的 命名空间由模块的 build.gradle 文件中的 namespace 属性定义,如以下代码段所示。namespace 最初会设为您在创建项目时选择的软件包名称。 Kotlin Groovy android {namespace "com.ex…...
Wireshark基础及捕获技巧
第一章:Wireshark基础及捕获技巧 1.1 Wireshark基础知识回顾 1.2 高级捕获技巧:过滤器和捕获选项 1.3 Wireshark与其他抓包工具的比较 第二章:网络协议分析 2.1 网络协议分析:TCP、UDP、ICMP等 2.2 高级协议分析:HTTP…...
Windows下Navicat15.0连接Oracle11g报ORA-28547解决
目录 背景 一、相关环境 1、操作系统 2、Navicat版本 3、ORACLE连接 4、默认连接 二、问题分析 1、默认dll配置 三、修改配置 1、下载匹配的client 2、替换相应目录 总结 背景 最近在项目中需要使用Oracle数据库,当前很多应用系统的数据都存储在MySQL或者Pos…...
21 Vue3中使用v-for遍历对象数组
概述 使用v-for遍历对象数组在真实的开发中也属于非常常见的用法,需要重点掌握。 因为目前流行的是前后端分离开发,在前后端分离开发中,最常需要处理的就是对象数组类型的数据了。 比如,将员工信息渲染到表格中。 这节课我们就…...
深入理解Java自定义异常与全局异常处理 @RestControllerAdvice
异常主要是包括编译时的异常和运行时的异常。编译时的异常可以通过捕获异常获取,运行时候的异常主要是通过代码规范,或者测试。 Spring Boot提供了两种异常处理方式来统一处理和维护异常信息。 第一种方式是使用RestControllerAdvice注解与ExceptionHand…...
h5页面跳转微信小程序(最简单的方法|URL Scheme)
文章目录 导文实现获取 URL Scheme加密 URL Scheme获取方式拼接参数 明文 URL Scheme获取方式 实际项目展示:频率限制注意事项开放范围示例代码包 导文 H5页面跳转微信小程序的需求是普遍存在的。由于微信小程序是一种只能在微信内部访问的应用程序,而H5…...
智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…...
持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建
目录 一、实验 1. GitLab修改项目文件与Harbor环境确认 2.Jenkins使用GitLab共享库实现前端项目镜像构建 3.优化CI流水线封装Harbor账户密码 4.Jenkins再次使用GitLab共享库实现前端项目镜像构建 一、实验 1. GitLab修改项目文件与Harbor环境确认 (1…...
SQL server 数据库 SQL语句高级用法
1、表的高级查询 use student select * from stuinfo1 -- 使用 in 的子查询 select * from stuinfo where stu_age in ( select stu_age from stuinfo where cla_id 12345 ) select * from stuinfo where stu_age in ( 19 , 20 , 21 , 25 , 23 , 1…...
wavlink 路由器 多处前台RCE漏洞复现
0x01 产品简介 WAVLINK是中国睿因科技(WAVLINK)公司开发的一款路由器。 0x02 漏洞概述 WAVLINK路由器mesh.cgi、nightled.cgi、live-api.cgi等接口处存在命令执行漏洞,攻击者可通过该漏洞获取服务器权限。包含型号WN530HG4、WN531G3、WN572HG3、WN535G3、WN575A4等。 0x…...
互联网中的商品超卖问题及其解决方案:Java中Redis结合UUID的应用
前言 在设计商品下单和库存扣减,你一定遇到过这样的问题,库存扣减为0了,可是消费者还能下单,并将订单信息保存到了数据库里,针对商品超卖问题,作此篇以解决。 随着互联网商业的飞速发展,商品超…...
网页制作处理中的三剑客/谷歌seo服务
下面列出IE和非IE中常见的一些js兼容性问题。 //window.event IE:有window.event对象 非IE:没有window.event对象。可以通过给函数的参数传递event对象。如οnmοusemοvedoMouseMove(event) 解除冒泡的方法不同 IE:window.event.cancelBubbletr…...
柳市做网站的公司/谷歌浏览器下载安装
Introduction 引言 The JDK is a development environment for building applications and components using the Java programming language. JDK 是使用 Java 编程语言构建应用程序和组件的开发环境。 The JDK includes tools useful for developing, testing, and monitor…...
wordpress 重复点赞/专业整站优化
经过两个小时的奋战,终于将博客园服务器抢救过来。问题的原因已经找到。等会我会写文章描述这次抢救过程。 这两天博客园服务器的不稳定,给大家带来了很大的麻烦,在这里博客园向大家表示深深的歉意!希望得到你的谅解!...
网站空间期限查询/友情链接qq群
文章目录一、配置数据源-mysql二、下载安装1.1 下载包安装(已验证)1.2 Github 上下载源码(未验证)1.3 docker安装(已验证)三、springCloud pom主要配置3.1 pom3.2 bootstrap.yaml部分配置3.3 nacos设置对应一、配置数据源-mysql a:配置数据库 /*Navicat Premium Data Transfe…...
go语言做的网站/北京出大大事了
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html .focus() 命令 聚焦 DOM 元素 语法格式 .focus() .focus(options) 正确写法 cy.get(input).first().focus() 重点 必须是 DOM 元素才能调用 .focus() 方法&am…...
上海建筑建材业网招标/廊坊百度关键词优化怎么做
Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下: push()pop()shift()unshift()splice()sort()reverse() 都有什么功能?动手试验了一下: <body><div id"app"><div>push方…...