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

Flink CDC系列之:学习理解核心概念——Transform

Flink CDC系列之:学习理解核心概念——Transform

  • Transform
  • 参数
  • 元数据字段
  • 函数
    • 比较函数
    • 逻辑函数
    • 字符串函数
    • 时间函数
    • 条件函数
  • 示例
    • 添加计算列
    • 参考元数据列
    • 使用通配符投影所有字段
    • 添加过滤规则
    • 重新分配主键
    • 重新分配分区键
    • 指定表创建配置
    • 分类映射
    • 用户定义函数
    • 已知限制

Transform

Transform模块帮助用户根据表中的数据列进行数据列的删除和扩展。
此外,它还可以帮助用户在同步过程中过滤一些不必要的数据。

参数

为了描述转换规则,可以使用以下参数:

参数含义可选/必需
source-table源表id,支持正则表达式必需
projection投影规则,支持类似SQL中select子句的语法可选
filter过滤规则,支持类似SQL中where子句的语法可选
primary-keysSink 表主键,以逗号分隔可选
partition-keys接收表分区键,以逗号分隔可选
table-options用于自动创建表时配置表创建语句可选
description变换规则说明可选

可以在一个管道 YAML 文件中声明多个规则。

元数据字段

字段定义

有一些隐藏列用于访问元数据信息。它们仅在转换规则中明确引用时才会生效。

字段数据类型描述
namespace_nameString包含该行的命名空间的名称。
schema_nameString包含该行的架构的名称。
table_nameString包含该行的表的名称。
data_event_typeString数据改变事件的操作类型。

元数据关系

在这里插入图片描述

函数

Flink CDC 使用 Calcite 解析表达式,并使用 Janino 脚本通过函数调用来评估表达式。

比较函数

FunctionJanino Code描述
value1 = value2valueEquals(value1, value2)如果 value1 等于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value1 <> value2!valueEquals(value1, value2)如果 value1 不等于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value1 > value2value1 > value2如果 value1 大于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value1 >= value2value1 >= value2如果 value1 大于或等于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value1 < value2value1 < value2如果 value1 小于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value1 <= value2value1 <= value2如果 value1 小于或等于 value2,则返回 TRUE;如果 value1 或 value2 为 NULL,则返回 FALSE。
value IS NULLnull == value如果值为 NULL,则返回 TRUE。
value IS NOT NULLnull != value如果值不为 NULL,则返回 TRUE。
value1 BETWEEN value2 AND value3betweenAsymmetric(value1, value2, value3)如果 value1 大于或等于 value2 且小于或等于 value3,则返回 TRUE。
value1 NOT BETWEEN value2 AND value3notBetweenAsymmetric(value1, value2, value3)如果 value1 小于 value2 或大于 value3,则返回 TRUE。
string1 LIKE string2like(string1, string2)如果 string1 与模式 string2 匹配,则返回 TRUE。
string1 NOT LIKE string2notLike(string1, string2)如果 string1 与模式 string2 不匹配,则返回 TRUE。
value1 IN (value2 [, value3]* )in(value1, value2 [, value3]*)如果 value1 存在于给定列表 (value2, value3, …) 中,则返回 TRUE。
value1 NOT IN (value2 [, value3]* )notIn(value1, value2 [, value3]*)如果 value1 不存在于给定列表 (value2, value3, …) 中,则返回 TRUE。

逻辑函数

FunctionJanino Code描述
boolean1 OR boolean2boolean1
boolean1 AND boolean2boolean1 && boolean2如果 BOOLEAN1 和 BOOLEAN2 都为 TRUE,则返回 TRUE。
NOT boolean!boolean如果布尔值为 FALSE,则返回 TRUE;如果布尔值为 TRUE,则返回 FALSE。
boolean IS FALSEfalse == boolean如果布尔值为 FALSE,则返回 TRUE;如果布尔值为 TRUE,则返回 FALSE。
boolean IS NOT FALSEtrue == boolean如果 BOOLEAN 为 TRUE,则返回 TRUE;如果 BOOLEAN 为 FALSE,则返回 FALSE。
boolean IS TRUEtrue == boolean如果 BOOLEAN 为 TRUE,则返回 TRUE;如果 BOOLEAN 为 FALSE,则返回 FALSE。
boolean IS NOT TRUEfalse == boolean如果布尔值为 FALSE,则返回 TRUE;如果布尔值为 TRUE,则返回 FALSE。

字符串函数

FunctionJanino Code描述
string1string2
CHAR_LENGTH(string)charLength(string)返回 STRING 中的字符数。
UPPER(string)upper(string)返回大写的字符串。
LOWER(string)lower(string)返回小写的字符串。
TRIM(string1)trim(‘BOTH’,string1)返回删除两侧空格的字符串。
REGEXP_REPLACE(string1, string2, string3)regexpReplace(string1, string2, string3)返回 STRING1 中的字符串,其中所有与正则表达式 STRING2 匹配的子字符串均被 STRING3 连续替换。例如,‘foobar’.regexpReplace(‘oo
SUBSTRING(string FROM integer1 [ FOR integer2 ])substring(string,integer1,integer2)返回从位置 INT1 开始、长度为 INT2(默认到末尾)的 STRING 子字符串。
CONCAT(string1, string2,…)concat(string1, string2,…)返回连接 string1、string2、… 的字符串。例如,CONCAT(‘AA’, ‘BB’, ‘CC’) 返回 ‘AABBCC’。

时间函数

FunctionJanino Code描述
LOCALTIMElocaltime()返回本地时区的当前SQL时间,返回类型为TIME(0)。
LOCALTIMESTAMPlocaltimestamp()返回当前SQL本地时区的时间戳,返回类型为TIMESTAMP(3)。
CURRENT_TIMEcurrentTime()返回本地时区的当前 SQL 时间,这是 LOCAL_TIME 的同义词。
CURRENT_DATEcurrentDate()返回本地时区的当前 SQL 日期。
CURRENT_TIMESTAMPcurrentTimestamp()返回当前SQL本地时区的时间戳,返回类型为TIMESTAMP_LTZ(3)。
NOW()now()返回本地时区的当前 SQL 时间戳,这是 CURRENT_TIMESTAMP 的同义词。
DATE_FORMAT(timestamp, string)dateFormat(timestamp, string)将时间戳转换为日期格式字符串指定格式的字符串值。格式字符串与 Java 的 SimpleDateFormat 兼容。
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2)timestampDiff(timepointunit, timepoint1, timepoint2)返回时间点 1 和时间点 2 之间的时间点单位的(有符号)数。间隔的单位由第一个参数指定,该参数应为以下值之一:SECOND、MINUTE、HOUR、DAY、MONTH 或 YEAR。
TO_DATE(string1[, string2])toDate(string1[, string2])将格式为 string2 的日期字符串 string1(默认为“yyyy-MM-dd”)转换为日期。
TO_TIMESTAMP(string1[, string2])toTimestamp(string1[, string2])将格式为 string2 的日期时间字符串 string1(默认情况下为:“yyyy-MM-dd HH:mm:ss”)转换为不带时区的时间戳。

条件函数

FunctionJanino Code描述
CASE value WHEN value1_1 [, value1_2]* THEN RESULT1 (WHEN value2_1 [, value2_2 ]* THEN result_2)* (ELSE result_z) END嵌套三元表达式当值第一次包含在(值 X_1、值 X_2、…)中时,返回 resultX。当没有值匹配时,如果提供了 result_z,则返回 result_z,否则返回 NULL。
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END嵌套三元表达式第一个条件满足时返回resultX,不满足条件时,若有条件则返回结果,否则返回NULL。
COALESCE(value1 [, value2]*)coalesce(Object… objects)返回第一个不为 NULL 的参数。如果所有参数均为 NULL,则也返回 NULL。返回类型是其所有参数中限制最少的通用类型。如果所有参数也均为可空,则返回类型为可空。
IF(condition, true_value, false_value)condition ? true_value : false_value如果条件满足,则返回 true_value,否则返回 false_value。例如,IF(5 > 3, 5, 3) 返回 5。

示例

添加计算列

求值表达式可用于生成新列。例如,如果我们想基于数据库 mydb 中的表 web_order 附加两个计算列,我们可以定义一个转换规则,如下所示:

transform:- source-table: mydb.web_orderprojection: id, order_id, UPPER(product_name) as product_name, localtimestamp as new_timestampdescription: append calculated columns based on source table

参考元数据列

我们可以在投影表达式中引用元数据列。例如,给定数据库 mydb 中的表 web_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: id, order_id, __namespace_name__ || '.' || __schema_name__ || '.' || __table_name__ identifier_namedescription: access metadata columns from source table

使用通配符投影所有字段

通配符 (*) 可用于引用表中的所有字段。例如,给定数据库 mydb 中的两个表 web_order 和 app_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: \*, UPPER(product_name) as product_namedescription: project fields with wildcard character from source table- source-table: mydb.app_orderprojection: UPPER(product_name) as product_name, *description: project fields with wildcard character from source table

注意:当表达式开头出现 * 字符时,需要使用转义反斜杠。

添加过滤规则

使用引用列在数据库mydb中的表web_order中添加过滤规则时,我们可以定义一个转换规则如下:

transform:- source-table: mydb.web_orderfilter: id > 10 AND order_id > 100description: filtering rows from source table

计算列也可以用于过滤条件。例如,给定数据库 mydb 中的表 web_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: id, order_id, UPPER(province) as new_province filter: new_province = 'SHANGHAI'description: filtering rows based on computed columns

重新分配主键

我们可以在转换规则中重新分配主键。例如,给定数据库 mydb 中的表 web_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: id, order_idprimary-keys: order_iddescription: reassign primary key example

还支持复合主键:

transform:- source-table: mydb.web_orderprojection: id, order_id, UPPER(product_name) as product_nameprimary-keys: order_id, product_namedescription: reassign composite primary keys example

重新分配分区键

我们可以在转换规则中重新分配分区键。例如,给定数据库 mydb 中的表 web_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: id, order_id, UPPER(product_name) as product_namepartition-keys: product_namedescription: reassign partition key example

指定表创建配置

可以在转换规则中定义额外选项,这些选项将在创建下游表时应用。给定数据库 mydb 中的表 web_order,我们可以定义转换规则如下:

transform:- source-table: mydb.web_orderprojection: id, order_id, UPPER(product_name) as product_nametable-options: comment=web orderdescription: auto creating table options example

提示:table-options的格式为key1=value1,key2=value2。

分类映射

可以定义多个转换规则来对输入数据行进行分类并应用不同的处理。只有第一个匹配的转换规则才会应用。例如,我们可以定义如下转换规则:

transform:- source-table: mydb.web_orderprojection: id, order_idfilter: UPPER(province) = 'SHANGHAI'description: classification mapping example- source-table: mydb.web_orderprojection: order_id as id, id as order_idfilter: UPPER(province) = 'BEIJING'description: classification mapping example

用户定义函数

用户定义函数 (UDF) 可用于转换规则。

如果满足以下条件,类可用作 UDF:

  • 实现 org.apache.flink.cdc.common.udf.UserDefinedFunction 接口
  • 具有无参数的公共构造函数
  • 至少有一个名为 eval 的公共方法

它还可以:

  • 覆盖 getReturnType 方法以指示其返回 CDC 类型
  • 覆盖 open 和 close 方法以执行一些初始化和清理工作

例如,这是一个有效的 UDF 类:

public class AddOneFunctionClass implements UserDefinedFunction {public Object eval(Integer num) {return num + 1;}@Overridepublic DataType getReturnType() {return DataTypes.INT();}@Overridepublic void open() throws Exception {// ...}@Overridepublic void close() throws Exception {// ...}
}

为了简化从 Flink SQL 到 Flink CDC 的迁移,Flink ScalarFunction 也可以用作转换 UDF,但有一些限制:

  • 不支持具有带参数的构造函数的 ScalarFunction。
  • ScalarFunction 中的 Flink 样式类型提示将被忽略。
  • 不会调用打开/关闭生命周期钩子。

可以通过添加用户定义函数块来注册 UDF 类:

pipeline:user-defined-function:- name: addoneclasspath: org.apache.flink.cdc.udf.examples.java.AddOneFunctionClass- name: formatclasspath: org.apache.flink.cdc.udf.examples.java.FormatFunctionClass

请注意,给定的类路径必须是完全限定的,并且相应的 jar 文件必须包含在 Flink /lib 文件夹中,或者使用 flink-cdc.sh --jar 选项传递。

正确注册后,UDF 可以在投影和过滤表达式中使用,就像内置函数一样:

transform:- source-table: db.\.*projection: "*, inc(inc(inc(id))) as inc_id, format(id, 'id -> %d') as formatted_id"filter: inc(id) < 100

已知限制

  • 目前,转换不适用于路由规则。它将在未来版本中得到支持。
  • 计算列不能引用最终投影结果中不存在的修剪列。这将在未来版本中修复。
  • 不支持具有不同架构的表的常规匹配。如有必要,需要编写多个规则。

相关文章:

Flink CDC系列之:学习理解核心概念——Transform

Flink CDC系列之&#xff1a;学习理解核心概念——Transform Transform参数元数据字段函数比较函数逻辑函数字符串函数时间函数条件函数 示例添加计算列参考元数据列使用通配符投影所有字段添加过滤规则重新分配主键重新分配分区键指定表创建配置分类映射用户定义函数已知限制 …...

MyBatis-Plus:简化 CRUD 操作的艺术

一、关于MyBatis-Plus 1.1 简介 MyBatis-Plus 是一个基于 MyBatis 的增强工具&#xff0c;它旨在简化 MyBatis 的使用&#xff0c;提高开发效率。 ​ ‍ ‍ ‍ ​ ‍ 关于Mybatis 简介 MyBatis 是一款流行的 Java 持久层框架&#xff0c;旨在简化 Java 应用程序与数…...

Windows on ARM编译安装openBLAS

Windows on ARM编译安装openBLAS 要求下载源码OpenBLAS可以使用LLVM工具链(clang-cl和flang)从源代码为Windows on ARM(WoA)进行构建。v0.3.24版本(预构建包)的构建和测试已通过。 要求 LLVM:版本需大于等于17.0.4 LLVM版本16及以下会生成冲突的符号(如_QQ*等)。 LL…...

FPGA编程语言VHDL与Verilog的比较分析!!!

VHDL&#xff08;VHSIC硬件描述语言&#xff09;和Verilog都是用于硬件描述和FPGA编程的工业标准语言。它们在语法和设计理念上存在一些差异&#xff0c;以下是两者的比较分析&#xff1a; 1. 历史背景 VHDL&#xff1a; 开发于1980年代初期&#xff0c;最初用于美国国防部的…...

C语言——八股文(笔试面试题)

1、 什么是数组指针&#xff0c;什么是指针数组&#xff1f; 数组指针&#xff1a;指向数组的指针 指针数组&#xff1a;数组中的元素都是指针 2、 什么是位段&#xff0c;什么是联合体 位段&#xff08;Bit Field&#xff09;&#xff1a;在C语言中&#xff0c;允许在一个整数…...

解决 Oracle 数据库错误 ORA-12516:监听器无法找到匹配协议栈的处理程序

在使用 Oracle 数据库时&#xff0c;有时会遇到错误 ORA-12516&#xff0c;这个错误表明 Oracle 数据库的监听器无法为新的连接请求找到一个可用的处理程序&#xff0c;这通常是因为达到了连接数上限、配置问题或资源限制。本文将详细介绍如何解决这个问题。 一、错误描述 当…...

Flarum:简洁而强大的开源论坛软件

Flarum简介 Flarum是一款开源论坛软件&#xff0c;以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统&#xff0c;旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于&#xff1a; 快速、简单&#xff1a; Flarum使用PHP构建&#xff0c;易于部署&…...

方法+数组

1. 方法 1. 什么是方法 方法定义&#xff1a; // []表示可写可不写[public] [static] type name ( [type formal , type formal , ...]){方法体&#xff1b;[return value ;] }[修饰符] 返回值类型 方法名称([参数类型 形参 , 参数类型 形参 ...]){方法体代码;[return 返回值…...

驱动-----adc

在key1.c的基础上进行对adc1.c进行编写 首先将文件里面的key全部改为adc 再修改一下设备号 按键和adc的区别是什么,按键只需要按一下就触发了,并且不需要返回一个值出来, adc要初始化,启动,返回值 以下是裸机adc的代码: #include <s3c2440.h> #include "ad…...

js实现点击图片,使图片跟随鼠标移动(把注释打开是图片随机位置)

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>&l…...

MacOS的powermetrics命令查看macbook笔记本的耗能情况,附带查看ANE的工作情况

什么是 powermetrics&#xff1f; powermetrics 是 macOS 系统自带的一个命令行工具&#xff0c;用于收集和分析系统能源消耗数据。通过它&#xff0c;我们可以深入了解 Mac 的硬件性能、软件行为以及能源使用情况&#xff0c;从而优化系统配置&#xff0c;提高电池续航时间。…...

字符串函数

大家好&#xff0c;今天我们来了解几个字符串函数 1.strcpy函数 这个函数是一个字符串复制函数&#xff0c;其全称为string copy&#xff0c;它可以将一个源字符数组的内容复制到目标字符数组中&#xff0c;我们需要关注几个问题&#xff0c;首先源字符串必须以&#xff3c;0…...

Java数组的地址和元素访问 C语言空指针与野指针

1. public static void main(String[] args) {int []arr{1,2,3,4,5};int numarr[0];System.out.println(num);System.out.println(arr[1]);System.out.println(arr);//[I610f87f48//[表示地址 I表示数据类型 表示间隔符号&#xff08;固定格式&#xff09;//10f87f48表示地址…...

如何在Linux系统中使用SSH进行安全连接

如何在Linux系统中使用SSH进行安全连接 SSH简介 安装SSH 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动SSH服务 验证SSH是否安装成功 SSH配置 配置监听端口 配置登录方式 SSH客户端 安装SSH客户端 使用SSH客户端 SSH密钥认证 生成SSH密钥对 复制公钥到远程服务器…...

Pandas 数据可视化指南:从散点图到面积图的全面展示

Pandas 数据可视化指南&#xff1a;从散点图到面积图的全面展示 本文介绍了使用 Pandas 进行数据可视化的多种方法&#xff0c;包括散点图、折线图、条形图、直方图、饼图和面积图等&#xff0c;涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例&#xff0c;展示了如…...

Flink + Kafka 实现通用流式数据处理详解

Flink Kafka 实现通用流式数据处理详解 在大数据时代&#xff0c;实时数据处理和分析成为企业快速响应市场变化、提高业务效率和优化决策的关键技术。Apache Flink和Apache Kafka作为两个重要的开源项目&#xff0c;在数据流处理领域具有广泛的应用。本文将深入探讨Flink和Ka…...

Docker常用命令汇总

一、Docker基础命令 启动docker&#xff1a;systemctl start docker关闭docker&#xff1a;systemctl stop docker重启docker&#xff1a;systemctl restart dockerdocker设置随服务启动而自启动&#xff1a;systemctl enable docker查看docker 运行状态&#xff1a;systemctl…...

【Java笔记】0-为什么学习Java

呃&#xff0c;当然是为了找个Java的开发工作 当然是由于Java使用的人多和它天生自带的优点了~ 主要优点有以下几点&#xff1a; 简单性 C语法纯净版&#xff0c;没有头文件、指针运算、不用分配内存 面向对象 重点放在对象与其接口上&#xff0c;接近人的逻辑 可移植性 …...

海外云手机是什么?对外贸电商有什么帮助?

在外贸电商领域&#xff0c;流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机&#xff0c;通过TikTok等社交平台吸引流量&#xff0c;以推动商品在海外市场的销售。那么&#xff0c;海外云手机到底是什么&#xff1f;它又能为外贸电商卖家提供哪些支持呢…...

【找到了】有人知道怎么在本地用记事本方式打开Linux文本文件吗?

就类似这种&#xff0c;我输入一个什么命令打开文件&#xff0c;就能在命令窗口上弹出一个编辑器来编辑文件。只记得好像有参数-e啥的。 命令行里面如何打开文本编辑器&#xff1f; &#xff08;&#xff09; 在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在…...

docker 安装postgresql

前提&#xff1a;准备好postgresql镜像&#xff0c;如&#xff1a;镜像地址/postgres:15.8 使用docker安装posgresql&#xff1a; 1.docker pull 镜像地址/postgres:15.8 2.docker run -d --namepostgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e PO…...

2004至2023中国分省统计面板数据-最新出炉_附下载链接

中国各省绿色税收相关数据&#xff08;2007-2022年&#xff09;概述 下载链接-点它&#x1f449;&#x1f449;&#x1f449;&#xff1a;中国分省统计面板数据&#xff08;2004-2023&#xff09;-最新出炉.zip 资源介绍 绿色税收主要是指以保护环境、合理开发利用自然资源、…...

【算法】排序算法总结

文章目录 内排序一、插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序 二、选择排序2.1 简单选择排序2.2 堆排序 三、交换排序3.1 冒泡排序3.2 快速排序Hoare版挖坑法快速排序前后指针法快速排序的非递归 四、归并排序递归版本非递归版本 五、基数排序六、计数排序内排序…...

双11来了,云计算优惠大集合

京东云 2C2G强烈推荐 连接直达...

13. MapReduce自定义OutputFormat

一. OutputFormat简介 OutputFormat是MapReduce输出的基类&#xff0c;所有MapReduce输出都实现了OutputFormat接口&#xff0c;它接收ReduceTask产生的数据&#xff0c;然后将结果按照指定格式输出。 在MapReduce中&#xff0c;如果不指定&#xff0c;默认使用的是TextOutpu…...

Javase——正则表达式

正则表达式的相关使用 public static void main(String[] args) {//校验QQ号 System.out.println("3602222222".matches("[1-9][0-9]{4,}"));// 校验18位身份证号 System.out.println("11050220240830901X".matches("^([0-9]){7,18}…...

云原生文件系统之JuiceFS

JuiceFS 是一个分布式文件系统&#xff0c;专门为云原生环境设计&#xff0c;支持大规模数据存储和处理&#xff0c;特别适用于处理对象存储和大数据应用。JuiceFS 将元数据和数据分离&#xff0c;元数据保存在数据库中&#xff0c;而文件数据则存储在对象存储中&#xff0c;提…...

C++:输入和输出

一 . DEV C的下载和安装 二 . 第一个C程序 三 . 输出流 四 . 初始的数据类型 3.1、整型变量 3.2、双精度浮点数变量 3.3、字符型变量 3.4、字符串变量 3.5、无符号整型变量 五、输入流...

vue的路由的两种模式 hash与history 详细讲解

文章目录 1. Hash 模式工作原理优点缺点使用示例 2. History 模式工作原理优点缺点服务器配置示例使用示例 总结 Vue Router 是 Vue.js 的官方路由管理器&#xff0c;它支持多种路由模式&#xff0c;其中最常用的两种是 hash 模式和 history 模式。下面我们详细讲解这两种模式的…...

【Linux操作系统】进程间通信之匿名管道与命名管道

目录 一、进程间通信的目的&#xff1a;二、进程间通信的种类三、什么是管道四、匿名管道&#xff08;共同祖先的进程之间&#xff09;1.匿名管道的使用2.匿名管道举例3.匿名管道的原理4.管道特点5.管道的读写规则1. 当管道内没有数据可读时2.当管道满的时候3.管道端被关闭4.数…...

wordpress 迁移 域名/网站不收录怎么解决

来自&#xff1a;开源最前线&#xff08;ID&#xff1a;OpenSourceTop&#xff09; 【文末有送书福利&#xff01;】之前猿妹已经和大家分享过一个开源后台管理系统Base Admin&#xff0c;今天再和大家分享另一个后台管理系统——eladmin。eladmin是一个基于Spring Boot 2.1.0 …...

景安网络网站建设/免费网站推广网站破解版

2019独角兽企业重金招聘Python工程师标准>>> 一、 基本介绍 Celery是一个专注于实时处理和任务调度的分布式任务队列。所谓任务就是消息&#xff0c;消息中的有效载荷中包含要执行任务需要的全部数据。 使用Celery常见场景&#xff1a; Web应用。当用户触发的一个操…...

网站后台需要ie6修改/南宁网站seo优化公司

后台写了个方法&#xff0c;接收前台插件 bootstrap-table 的queryParams的参数&#xff0c;但是不能拿到。 解决办法&#xff0c;添加配置项&#xff1a;contentType:"application/x-www-form-urlencoded; charsetUTF-8", 这样取得了。 参数传递过去了&#xff0c;但…...

基本建设工程兵网站/关键词seo公司真实推荐

...

深圳网络营销网站建设/沈阳seo

项目在framework层中自定义增加了jni&#xff0c;步奏如下&#xff1a;1、在frameworks/base下创建自己的文件framework_jni目录2、在framework_jni目录增加c代码和java代码android.mk 代码如下&#xff1a;LOCAL_PATH: $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES: \…...

网站图片怎么做优化/竞价推广套户渠道商

在平时工作中&#xff0c;你是不是经常需要用到Word工具&#xff0c;本期Word妹与大家分享3个Word的小技巧。1、如何将横向文字更改为纵向&#xff1f;选中文本&#xff0c;点击布局——文字方向——选择垂直即可。如下图所示&#xff0c;如何将更改英文方向&#xff1f;直接选…...