DolphinScheduler3.0.1(数据质量)

2023-10-27

Refer

  • 遵循历史,依然要感谢各位在网上的输出!

dolphinscheduler3.0.1HIVE数据源
dolphinscheduler3.0.1数据质量

1.data-quality-jar包修改

1.配置文件修改

  • 想要执行数据质量相关的任务,首先需要对配置文件进行修改
  • 文件位置:/dolphinscheduler/tools/conf/common.properties
  • 修改内容:将data-quality.jar.name变更为work-server下libs中的对应data-quality的jar包名称(/dolphinscheduler/worker-server/libs/dolphinscheduler-data-quality-3.0.1.jar)
  • 其次是自己打包的data-quality文件夹中一定要注意修改mysql8的连接器scope为compile,需要在对应pom的位置添加一下scope,否则会报错ClassNotFoundException
  • 源码中关于spark的scope不需要修改!!!
[INFO] 2023-05-16 14:30:08.590 +0800 -  -> Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
		at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
		at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
		at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
		at org.apache.spark.sql.execution.datasources.jdbc.DriverRegistry$.register(DriverRegistry.scala:46)
		at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$1(JDBCOptions.scala:101)
		at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.$anonfun$driverClass$1$adapted(JDBCOptions.scala:101)
		at scala.Option.foreach(Option.scala:407)
		at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:101)
		at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions.<init>(JDBCOptions.scala:39)
		at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:33)
		at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:350)
		at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:274)
		at org.apache.spark.sql.DataFrameReader.$anonfun$load$3(DataFrameReader.scala:245)
		at scala.Option.getOrElse(Option.scala:189)
		at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:245)
		at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:174)
		at org.apache.dolphinscheduler.data.quality.flow.batch.reader.JdbcReader.read(JdbcReader.java:72)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.registerInputTempView(SparkBatchExecution.java:77)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.lambda$execute$0(SparkBatchExecution.java:48)
		at java.util.ArrayList.forEach(ArrayList.java:1259)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.execute(SparkBatchExecution.java:48)
		at org.apache.dolphinscheduler.data.quality.context.DataQualityContext.execute(DataQualityContext.java:62)
		at org.apache.dolphinscheduler.data.quality.DataQualityApplication.main(DataQualityApplication.java:70)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
		at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955)
		at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
		at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
		at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
		at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
		at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
		at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
[INFO] 2023-05-16 14:30:08.854 +0800 - process has exited, execute path:/opt/software/dolphinscheduler/data/exec/process/8741536538048/8741552919232_24/16267/77676, processId:713393 ,exitStatusCode:1 ,processWaitForStatus:true ,processExitValue:1

在这里插入图片描述

在这里插入图片描述

  • 不进行修改肯定报错
    在这里插入图片描述

2.依赖不明确问题

Multiple sources found for csv (org.apache.spark.sql.execution.datasources.v2.csv.CSVDataSourceV2, org.apache.spark.sql.execution.datasources.csv.CSVFileFormat),
	 please specify the fully qualified class name.
	       
		at org.apache.spark.sql.errors.QueryCompilationErrors$.findMultipleDataSourceError(QueryCompilationErrors.scala:1045)
		at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:697)
		at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSourceV2(DataSource.scala:720)
		at org.apache.spark.sql.DataFrameWriter.lookupV2Provider(DataFrameWriter.scala:852)
		at org.apache.spark.sql.DataFrameWriter.saveInternal(DataFrameWriter.scala:256)
		at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:239)
		at org.apache.spark.sql.DataFrameWriter.csv(DataFrameWriter.scala:839)
		at org.apache.dolphinscheduler.data.quality.flow.batch.writer.file.BaseFileWriter.outputImpl(BaseFileWriter.java:113)
		at org.apache.dolphinscheduler.data.quality.flow.batch.writer.file.HdfsFileWriter.write(HdfsFileWriter.java:40)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.executeWriter(SparkBatchExecution.java:130)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.execute(SparkBatchExecution.java:58)
		at org.apache.dolphinscheduler.data.quality.context.DataQualityContext.execute(DataQualityContext.java:62)
		at org.apache.dolphinscheduler.data.quality.DataQualityApplication.main(DataQualityApplication.java:70)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
		at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955)
		at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
		at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
		at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
		at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
		at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
		at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

3.scope多修改问题

  • 源码中关于spark的scope不需要修改!!!,修改了的话则会跟原始集群里的版本冲突,这个我整了好久才明白。。。避坑避坑!
[INFO] 2023-05-16 12:08:24.026 +0800 -  -> Exception in thread "main" org.apache.spark.sql.AnalysisException: 
	Multiple sources found for csv (org.apache.spark.sql.execution.datasources.v2.csv.CSVDataSourceV2, org.apache.spark.sql.execution.datasources.csv.CSVFileFormat),
	 please specify the fully qualified class name.
	       
		at org.apache.spark.sql.errors.QueryCompilationErrors$.findMultipleDataSourceError(QueryCompilationErrors.scala:1045)
		at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:697)
		at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSourceV2(DataSource.scala:720)
		at org.apache.spark.sql.DataFrameWriter.lookupV2Provider(DataFrameWriter.scala:852)
		at org.apache.spark.sql.DataFrameWriter.saveInternal(DataFrameWriter.scala:256)
		at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:239)
		at org.apache.spark.sql.DataFrameWriter.csv(DataFrameWriter.scala:839)
		at org.apache.dolphinscheduler.data.quality.flow.batch.writer.file.BaseFileWriter.outputImpl(BaseFileWriter.java:113)
		at org.apache.dolphinscheduler.data.quality.flow.batch.writer.file.HdfsFileWriter.write(HdfsFileWriter.java:40)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.executeWriter(SparkBatchExecution.java:130)
		at org.apache.dolphinscheduler.data.quality.execution.SparkBatchExecution.execute(SparkBatchExecution.java:58)
		at org.apache.dolphinscheduler.data.quality.context.DataQualityContext.execute(DataQualityContext.java:62)
		at org.apache.dolphinscheduler.data.quality.DataQualityApplication.main(DataQualityApplication.java:70)
		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
		at java.lang.reflect.Method.invoke(Method.java:498)
		at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
		at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:955)
		at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
		at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
		at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
		at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1043)
		at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1052)
		at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

2.实现方式

1.Spark提交

  • DolphinScheduler这边是按照安装的spark,按照自定义资源配置,使用data-quality的jar包提交匹配的内容语句来实现质量实现规则和数据拉取等流程
    在这里插入图片描述

2.结构解析

{
	// 源工程:dolphinscheduler_dml.sql
	// 数据表:t_ds_dq_rule
	// 该表中配置了基础规则的基础功能,下图1
    "name":"$t(uniqueness_check)",
    "env":{
        "type":"batch",
        "config":null
    },
    "readers":[
        {
            "type":"HIVE",
            "config":{
                "database":"${hive_database_name}",
                "password":"${password}",
                "driver":"org.apache.hive.jdbc.HiveDriver",
                "user":"root",
                "output_table":"${hive_database_name}_${hive_table_name}",
                "table":"${hive_table_name}",
                "url":"jdbc:hive2://${ip}:${port}/${hive_database_name}"
            }
        },
        {
            "type":"JDBC",
            "config":{
                "database":"${mysql_database_name}",
                "password":"${password}",
                "driver":"com.mysql.cj.jdbc.Driver",
                "user":"root",
                "output_table":"t_ds_dq_task_statistics_value",
                "table":"t_ds_dq_task_statistics_value",
                "url":"jdbc:mysql://${ip}:${port}/${mysql_database_name}?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;allowLoadLocalInfile=false&amp;autoDeserialize=false&amp;allowLocalInfile=false&amp;allowUrlInLocalInfile=false"
            }
        }
    ],
    "transformers":[
        {
        	// 源工程:dolphinscheduler_dml.sql
			// 数据表:t_ds_dq_comparison_type
			// 该表中配置了基础规则的基础功能,下图2
            "type":"sql",
            "config":{
                "index":1,
                "output_table":"day_range",
                "sql":"select round(avg(statistics_value),2) as day_avg from t_ds_dq_task_statistics_value where data_time &gt;=date_trunc('DAY', '2023-05-15 17:28:53') and data_time &lt; date_add(date_trunc('day', '2023-05-15 17:28:53'),1) and unique_code = 'JRS5R5DSESMCYT3LQ5JQ6GV2I/R7J/KYV2/KTF1N9V4=' and statistics_name = 'cnt'"
            }
        },
        {
            "type":"sql",
            "config":{
                "index":2,
                "output_table":"duplicate_items",
                "sql":"SELECT type FROM ${hive_database_name}_${hive_table_name} group by type having count(*) &gt; 1"
            }
        },
        {
        	// 源工程:dolphinscheduler_dml.sql
			// 数据表:t_ds_dq_rule_execute_sql
			// 该表中配置了基础规则的基础功能,下图3
            "type":"sql",
            "config":{
                "index":3,
                "output_table":"duplicate_count",
                "sql":"SELECT COUNT(*) AS duplicates FROM duplicate_items"
            }
        }
    ],
    "writers":[
        {
            "type":"JDBC",
            "config":{
                "database":"${mysql_database_name}",
                "password":"${password}",
                "driver":"com.mysql.cj.jdbc.Driver",
                "user":"root",
                "table":"t_ds_dq_execute_result",
                "url":"jdbc:mysql://${ip}:${port}/${mysql_database_name}?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;allowLoadLocalInfile=false&amp;autoDeserialize=false&amp;allowLocalInfile=false&amp;allowUrlInLocalInfile=false",
                "sql":"select 0 as rule_type,'$t(uniqueness_check)' as rule_name,0 as process_definition_id,16235 as process_instance_id,77488 as task_instance_id,cnt AS statistics_value,day_range.day_avg AS comparison_value,2 AS comparison_type,0 as check_type,0 as threshold,0 as operator,0 as failure_strategy,'hdfs://${HDFS_NAME}/data_quality_error_data/0_16235_data_quality_test' as error_output_path,'2023-05-15 17:28:53' as create_time,'2023-05-15 17:28:53' as update_time from duplicate_count full join day_range"
            }
        },
        {
            "type":"JDBC",
            "config":{
                "database":"${mysql_database_name}",
                "password":"${password}",
                "driver":"com.mysql.cj.jdbc.Driver",
                "user":"root",
                "table":"t_ds_dq_task_statistics_value",
                "url":"jdbc:mysql://${ip}:${port}/${mysql_database_name}?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true&amp;allowLoadLocalInfile=false&amp;autoDeserialize=false&amp;allowLocalInfile=false&amp;allowUrlInLocalInfile=false",
                "sql":"select 0 as process_definition_id,77488 as task_instance_id,6 as rule_id,'JRS5R5DSESMCYT3LQ5JQ6GV2I/R7J/KYV2/KTF1N9V4=' as unique_code,'cnt'AS statistics_name,cnt AS statistics_value,'2023-05-15 17:28:53' as data_time,'2023-05-15 17:28:53' as create_time,'2023-05-15 17:28:53' as update_time from duplicate_count"
            }
        },
        {
            "type":"hdfs_file",
            "config":{
                "path":"hdfs://${HDFS_NAME}/data_quality_error_data/0_16235_data_quality_test",
                "input_table":"duplicate_items"
            }
        }
    ]
}

1.图1

在这里插入图片描述

2.图2

在这里插入图片描述

3.图3及问题

在这里插入图片描述

1.未知cnt字段

  • 由于在图3中可见SQL语句实际上如下
    • 原始SQL语句:SELECT COUNT(*) AS duplicates FROM duplicate_items
  • 但是下游使用上述语句的输出表的时候实际上是duplicate_count.cnt
  • 这就导致了下述的问题
    • 所以需要在t_ds_dq_rule_execute_sql表中将原始SQL语句变更为
    • 变更SQL语句:SELECT COUNT(*) AS cnt FROM duplicate_items
[INFO] 2023-05-15 17:29:04.335 +0800 -  -> Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'cnt' given input columns: [day_range.day_avg, duplicate_count.duplicates]; line 1 pos 138;
	'Project [0 AS rule_type#69, (uniqueness_check) AS rule_name#70, 0 AS process_definition_id#71, 16235 AS process_instance_id#72, 77488 AS task_instance_id#73, 'cnt AS statistics_value#74, day_avg#60 AS comparison_value#75, 2 AS comparison_type#76, 0 AS check_type#77, 0 AS threshold#78, 0 AS operator#79, 0 AS failure_strategy#80, hdfs://HDFS8001702/user/yarn/data_quality_error_data/0_16235_data_quality_test AS error_output_path#81, 2023-05-15 17:28:53 AS create_time#82, 2023-05-15 17:28:53 AS update_time#83]
	+- Join FullOuter
	……………………

3.创建数据源

  • 监控数据质量的前提是要有想要监控的源数据,所以首先需要在DolphinScheduler的数据源中心创建想要监控的目标数据源
  • DolphinScheduler支持的数据源类型包括:MYSQL,POSTGRESQL,HIVE/IMPALA,SPARK,CLICKHOUSE,ORACLE,SQLSERVER,DB2,PRESTO,REDSHIFT。感觉常用的数据库连接都是支持的
  • 创建过程也比较简单,选好对应的数据库类型,填写对应的IP和端口即可,HIVE的端口我这里因为是用腾讯云测试的,所以端口是7001,正常访问默认应该是10000,其实就是HiveServer提供Thrift服务的端口,密码看个人有没有配置,因为直接连接的是HiveServer所以数据库地址不用写HDFS的前缀,建好以后测试连接通过即可
    在这里插入图片描述

4.数据质量检测节点

一开始我在数据质量的模块里找了半天如何创建监控任务,直到我在工作类型中看到DATA_QUALITY,我……
根据官方文档中的失败策略可预料的数据质量场景:
在这里插入图片描述

  1. 单独有一个模块去做所有核心数据的质量监控报警等等
  2. 监控上游任务数据,保障下游任务不空跑或及时发现问题避免资源浪费

核心配置项如下,不同的监控规则可以在数据质量的规则管理界面查看
在这里插入图片描述

  • 数据质量任务默认是用spark任务在跑的,文档中也提到了“数据质量任务的运行环境为Spark2.4.0,其他版本尚未进行过验证,用户可自行验证”,目前我这边使用的Spark版本是3.2.2,暂时妥协了,重新配置了一个spark2.4,目前是可以使用了
    在这里插入图片描述

5.数据质量结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DolphinScheduler3.0.1(数据质量) 的相关文章

  • AI大模型应用入门实战与进阶:如何训练自己的AI模型

    1 背景介绍 人工智能 Artificial Intelligence AI 是计算机科学的一个分支 旨在模拟人类智能的能力 包括学习 理解自然语言 识别图像和视频 进行决策等 随着数据量的增加和计算能力的提升 人工智能技术的发展得到了巨大
  • 流程管理的未来:人工智能如何改变业务运行

    1 背景介绍 流程管理是企业在实现业务目标时所采取的一系列有序 连贯的活动 它涉及到许多领域 如生产 销售 研发 财务等 随着企业规模的扩大和市场竞争的激烈 流程管理的复杂性也不断增加 人工智能 AI 技术的发展为流程管理提供了新的机遇 有
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】校园体育赛事管理系统

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】网上拍卖系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本网上拍卖系统就是在这样的大环境下诞生 其可以帮助使用者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人员
  • 图解python | 字符串及操作

    1 Python元组 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 tup1 ByteDance ShowMeAI 1997 202
  • 大数据毕业设计:python微博舆情分析系统+可视化+情感分析+爬虫+机器学习(源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 基于java的学生宿舍管理系统设计与实现

    基于java的学生宿舍管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的学生宿舍管理系统设计与实现的研究背景和动机 在数字化时代的推动下 学生宿舍管理系统已经成为了管理学生宿舍的重要工具 学生宿舍管理系统能够帮助管理者更好地管
  • 这个很少人知道的零售技巧,却是我最想安利的!

    在当今数字化浪潮的推动下 零售业正在迎来一场革命性的变革 新零售模式的崛起正引领着消费者与商品之间的互动方式发生深刻的变化 在这个变革的前沿 自动售货机作为新零售的一种关键形式 通过智能技术和自动化系统 重新定义了购物体验的边界 客户案例
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】微信小程序反诈科普平台

    相比于以前的传统手工管理方式 智能化的管理方式可以大幅降低反诈科普平台的运营人员成本 实现了反诈科普平台的标准化 制度化 程序化的管理 有效地防止了反诈科普平台的随意管理 提高了信息的处理速度和精确度 能够及时 准确地查询和修正反诈科普 一
  • 渗透测试常用工具汇总_渗透测试实战

    1 Wireshark Wireshark 前称Ethereal 是一个网络分包分析软件 是世界上使用最多的网络协议分析器 Wireshark 兼容所有主要的操作系统 如 Windows Linux macOS 和 Solaris kali
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升

随机推荐

  • Elasticsearch CCR源码分析(补充)

    接上篇TODO Elasticsearch CCR源码分析 上篇TODO http请求 ccr follow 接收到后 follow集群节点开始全量同步 是以snapshot的模式去拉leader集群数据的 那么是在什么时候将leader集
  • 初识CSS

    下面将学习CSS基础知识 如选择器类型 盒子模型 CSS定位 布局 伪类 伪元素 还有导航栏等 文章目录 一 何为CSS 二 CSS语法 三 CSS id和Class选择器 1 id 选择器 2 class选择器 四 CSS创建 1 如何插
  • VS2015 LINK : warning LNK4068: 未指定 /MACHINE;默认设置为 X86

    修改方法 在工程属性中 选择 配置属性 库管理器 命令行 在下面的其他选项中输入 MACHINE X64
  • 解决微信小程序报错request:fail url not in domain list

    问题 微信开发者工具能正常发送请求 在真机调试的时候发送请求报错 request fail url not in domain list 1 检查微信后台域名信息是否配置了request合法域名 2 检查微信本地设置 将不校验合法域名勾选上
  • 运动目标检测--光流法

    一 概述 运动目标检测是指当监控场景中有活动目标时 采用图像分割的方法从背景图像中提取出目标的运动区域 运动目标检测技术是智能视频分析的基础 因为目标跟踪 行为理解等视频分析算法都是针对目标区域的像素点进行的 目标检测的结果直接决定着智能视
  • maven私服搭建

    文章目录 前言 一 Nexus 二 安装nexus 2 1在Mac终端输入 如果提示没有brew命令 请先安装brew 2 2启动nexus 2 3访问web管理系统 三 nexus的配置 3 1登录后开始设置操作 3 1 1设置新密码 3
  • 笔记/Linux运维面试常见问题

    linux基础 linux的特点 免费 开源 单根目录树 多用户多任务 区分大小写 一切皆文件 不以扩展名区分文件类型 Linux的必须分区有哪些 根分区 swap分区 swap分区的作用 物理内存不足时 未使用的进程可以临时保存到swap
  • 浅谈EL表达式

    目录 EL表达式 什么是EL表达式 EL表达式的语法 EL表达式中的查找并输出 EL运算符 EL算数运算符 EL比较运算符 EL逻辑运算符 EL其他运算符 EL表达式 什么是EL表达式 EL 提供了更为简洁 方便的形式来访问变量和参数 不仅
  • 黑盒测试-等价类划分法与边界值分析法-三角形问题

    等价类划分法 等价类划分可以把全部输人数据合理划分为若干等价类 在每一个等价类中取个数据作为测试的输人条件 就可以用少量代表性的测试数据取得较好的测试效果 有效等价类 指对于程序规格说明来说 由合理的 有意义的输入数据构成的集合 利用它 可
  • 对于傅里叶变换的小结

    原本写在word中 含有一些公式不容易搬移 因此输出长图发布在博客中 个人理解有限 如有错误欢迎交流指出 关于参数化谱估计可以参考我以前的几篇博客 Yule Walker方程法参数化谱估计 Python实现版 Levinson Durbin
  • Ceres与colmap安装

    已在ubuntu18 04上成功安装ceres1 14 0和colmap ceres1 14 0基本没错 找tag里的1 14 0压缩包 因为复制的git链接都指定了下载最新版本 colmap 安装cmakelist 添加set CMAKE
  • 深入了解C/C++开发就业前景如何?

    C C 编程语言 作为编程行业里出现较早的编程语言 几十年来 因为语言灵活 数据结构丰富 具有结构化 平台移植力强 程序执行效率高等特点 广受关注与应用 深入了解C C 开发就业前景如何 即使新编程语言不断涌出 智能化水平越来越高 也无法挑
  • 牧师与恶魔过河游戏——智能提示

    前言 这次实现一个含提示功能的牧师与恶魔过河小游戏 主要在上一个版本的牧师与恶魔小游戏上进行更改 通过增加一个状态计算和改版了得寻路算法 实现向玩家提示如何胜利完成游戏 游戏主体实现思路见上一篇博客 牧师与恶魔小游戏 动作分离版 游戏效果图
  • 考研英语二大作文模板/图表作文,英语图表作文这一篇就够了

    常见图表类型 表格 它表示多种事物的相互关系 曲线 它常表示事物的变化趋势 柱状 它用来表示几种事物的变化情况及相互关系 饼状 表示各事物在总体中所占的比例及相互关系 其中 柱形图和饼形图出现的频率比较高 图表作文结构 Para 1 描述图
  • 电动车结构及其工作原理

    电动车结构及其工作原理 文章目录 电动车结构及其工作原理 电动车定义 电动车结构 电源系统 电力驱动系统 整车控制器 辅助系统 电动车可能存在的结构形式 电动车定义 纯电动汽车是完全由可充电电池 如铅酸电池 镍镉电池 镍氢电池或锂电子电池
  • Ubuntu更改下载源

    Ubuntu更改下载源 今天美滋滋的打开ubuntu准备下载一个语言包 对于英语不好的我来说 看全英文版的ubuntu系统太吃力了 感觉系统极其不友好 哈哈 然后准备下在一个语言包 但是下载速度及其的慢 只有十几kb每秒 如果按照这样的速度
  • FastAPI利用装饰器实现定时任务

    因为 FastAPI 本身就是高性能异步框架 所以在不使用任何第三方定时任务模块的情况下 FastAPI 也可以很方便的实现定时任务 创建一个 tasks py 文件 复制下面的装饰器代码 import asyncio from logur
  • MyBatis详细执行流程

    目录 MyBatis详细的执行流程 1 创建加载核心配置文件的inputStream流 1 1 Recourse getResourceAsStream String resource 方法 1 2 getResourceAsStream
  • React中使用CSS样式的五种方法,主流推荐CSS Modules和Styled Components

    前言 由于 React的JSX语法 能在React中使用样式的方式有很多 本文主要介绍在React中经常使用CSS样式的五种方法 1行内样式 2声明样式 3引入样式 4 CSS Modules模块化 5 Styled component 1
  • DolphinScheduler3.0.1(数据质量)

    DolphinScheduler3 0 1 数据质量 Refer 1 data quality jar包修改 1 配置文件修改 2 依赖不明确问题 3 scope多修改问题 2 实现方式 1 Spark提交 2 结构解析 1 图1 2 图2