配置phoenix连接hbase_Phoenix视图映射

点击关注上方“知了小巷”,

设为“置顶或星标”,第一时间送达干货。

Phoenix定位为OLTP和操作型分析(operational analytics),大多用于在线业务,稳定性要求第一位。Phoenix的功能很强大,也很灵活,Phoenix SQL基于SQL-92标准,但是还是有很多方言,使用时需要特别注意。

DataX是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

这里主要用到oraclereaderhbase11xwriter

基础软件版本:

Apache Hadoop:hadoop-2.8.5

Apache HBase:hbase-1.4.10

Apache Phoenix:phoenix-4.14.3-HBase-1.4-bin

Phoenix版本支持:

Phoenix Current release 4.15.0 can run on Apache HBase 1.3, 1.4 and 1.5. CDH HBase 5.11, 5.12, 5.13 and 5.14 is supported by 4.14.0. Apache HBase 2.0 is supported by 5.0.0.

hbase客户端

hbase shell

phoenix客户端

phoenix-4.14.3-HBase-1.4-bin/bin/sqlline.py

# 进入hbase shell客户端

$ hbase shellSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/home/admin/hbase-1.4.10/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/home/admin/hadoop-2.8.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]HBase ShellUse "help" to get list of supported commands.Use "exit" to quit this interactive shell.Version 1.4.10, r76ab087819fe82ccf6f531096e18ad1bed079651, Wed Jun  5 16:48:11 PDT 2019

# 创建命名空间ZLXX

hbase(main):006:0> create_namespace 'ZLXX'0 row(s) in 1.1150 seconds

# 创建hbase表,使用命名空间

hbase(main):001:0> create 'ZLXX:WT_TRADE_REFUND', 'INFO'0 row(s) in 1.7510 seconds => Hbase::Table - ZLXX:WT_TRADE_REFUND

查看表描述信息(desc)

hbase(main):009:0> desc 'ZLXX:WT_TRADE_REFUND'Table ZLXX:WT_TRADE_REFUND is ENABLED                                                                                                                                                      ZLXX:WT_TRADE_REFUND                                                                                                                                                                       COLUMN FAMILIES DESCRIPTION                                                                                                                                                                {NAME => 'INFO', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                                                                       1 row(s) in 0.0730 seconds

# 使用DataX往hbase表里面添加测试数据(存量批量数据采集)

数据源来自Oracle,数据目标系统是HBase原生创建的表。

使用oraclereader和hbase11xwriter。

具体配置zlxx_test.json

$ vi zlxx_test.json{  "job": {    "content": [      {        "reader": {          "name": "oraclereader",          "parameter": {            "column": [],            "connection": [              {                "fetchSize": "1024",                "jdbcUrl": [                  "$DW_ORCL_ZLXX_JDBCURL"                ],                "querySql": [                  "select id, trade_id, amount, status, TO_CHAR(modify_time,'YYYYMMDDhh24miss') AS modify_time from zlxx.trade_refund"                ]              }            ],            "password": "$DW_ORCL_ZLXX_PASSWORD",            "username": "$DW_ORCL_ZLXX_USERNAME"          }        },        "writer": {          "name": "hbase11xwriter",          "parameter": {            "hbaseConfig": {              "hbase.zookeeper.quorum": "192.168.10.211:12181,192.168.10.212:12181,192.168.10.213:12181"            },            "table": "ZLXX:WT_TRADE_REFUND",            "mode": "normal",            "nullMode": "empty",            "rowkeyColumn": [              {                "index":0,                "type":"string"              }            ],            "column": [              {                "index":1,                "name": "INFO:TRADE_ID",                "type": "string"              },              {                "index":2,                "name": "INFO:AMOUNT",                "type": "string"              },              {                "index":3,                "name": "INFO:STATUS",                "type": "string"              },              {                "index":4,                "name": "INFO:MODIFY_TIME",                "type": "string"              }            ],            "encoding": "utf-8"          }        }      }    ],    "setting": {      "speed": {        "channel": "10"      }    }  }}

执行DataX的shell脚本

数据库连接和用户名密码等配置在服务器的环境变量中

$ vi zlxx_test.shsource ~/.bash_profilepython datax/bin/datax.py -j "-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=datax/log" -p"-DDW_ORCL_ZLXX_JDBCURL=$DW_ORCL_ZLXX_JDBCURL -DDW_ORCL_ZLXX_PASSWORD=$DW_ORCL_ZLXX_PASSWORD -DDW_ORCL_ZLXX_USERNAME=$DW_ORCL_ZLXX_USERNAME"

执行shell脚本

$ sh zlxx_test.sh......任务总计耗时                    :                 10s任务平均流量                    :            1.77KB/s记录写入速度                    :             52rec/s读出记录总数                    :                 528读写失败总数                    :                   0

查看一下数据

hbase(main):012:0* scan 'ZLXX:WT_TRADE_REFUND', {LIMIT=>1}ROW                                             COLUMN+CELL                                                                                                                                 1005528                                        column=INFO:AMOUNT, timestamp=1594783514554, value=100                                                                                      1005528                                        column=INFO:MODIFY_TIME, timestamp=1594783514554, value=20200228185803                                                                      1005528                                        column=INFO:STATUS, timestamp=1594783514554, value=01                                                                                       1005528                                        column=INFO:TRADE_ID, timestamp=1594783514554, value=T12059592                                                                             1 row(s) in 0.1220 seconds

Tips:Phoenix不管你输入的是大写还是小写都默认把它转成大写的,如果要小写的话必须加上引号;所以上面从hbase shell创建的表和列均使用了大写,便于Phoenix自然映射。

# Phoenix使用as select创建视图映射到HBase表

先创建Phoenix schema:

0: jdbc:phoenix:> create schema ZLXX;No rows affected (0.012 seconds)

创建视图,由于Phoenix大小写最终都是大写,所以这里可以使用小写

create view ZLXX.WT_TRADE_REFUND (    id varchar primary key,    info.trade_id varchar,    info.amount  varchar,    info.status varchar,    info.modify_time varchar) as select * from zlxx.wt_trade_refund;

视图创建效果:

0: jdbc:phoenix:> create view ZLXX.WT_TRADE_REFUND (. . . . . . . . >     id varchar primary key,. . . . . . . . >     info.trade_id varchar,. . . . . . . . >     info.amount  varchar,. . . . . . . . >     info.status varchar,. . . . . . . . >     info.modify_time varchar. . . . . . . . > ) as select * from zlxx.wt_trade_refund;No rows affected (5.956 seconds)

# 走一个查询试试看(完美)

0: jdbc:phoenix:> select * from zlxx.wt_trade_refund limit 5;+----------+------------+---------+---------+-----------------+|    ID    |  TRADE_ID  | AMOUNT  | STATUS  |   MODIFY_TIME   |+----------+------------+---------+---------+-----------------+| 1005528  | T12059592  | 100     | 01      | 20200228185803  || 1005529  | T12059591  | 10      | 03      | 20200228185846  || 1005530  | T12059606  | 10      | 01      | 20200228195442  || 1005531  | T12059605  | 10      | 01      | 20200228195442  || 1005532  | noTradeId  | 100     | 03      | 20200229224015  |+----------+------------+---------+---------+-----------------+5 rows selected (0.062 seconds)

# Phoenix使用column_encoded_bytes=0

创建视图映射到HBase表(测试下多视图)

由于需要名字相同,先把上面的view ZLXX.WT_TRADE_REFUND删除,稍后再使用as select创建不同名称的视图。

删除视图:

drop view ZLXX.WT_TRADE_REFUND;

创建视图:

create view ZLXX.WT_TRADE_REFUND (    id varchar primary key,    info.trade_id varchar,    info.amount  varchar,    info.status varchar,    info.modify_time varchar) column_encoded_bytes=0;

也是正常的,能够看到有数据查询出来

0: jdbc:phoenix:> drop view ZLXX.WT_TRADE_REFUND;No rows affected (0.046 seconds)0: jdbc:phoenix:> create view ZLXX.WT_TRADE_REFUND (. . . . . . . . >     id varchar primary key,. . . . . . . . >     info.trade_id varchar,. . . . . . . . >     info.amount  varchar,. . . . . . . . >     info.status varchar,. . . . . . . . >     info.modify_time varchar. . . . . . . . > ) column_encoded_bytes=0;No rows affected (0.041 seconds)

limit查询数据:

0: jdbc:phoenix:> select * from zlxx.wt_trade_refund limit 5;+----------+------------+---------+---------+-----------------+|    ID    |  TRADE_ID  | AMOUNT  | STATUS  |   MODIFY_TIME   |+----------+------------+---------+---------+-----------------+| 1005528  | T12059592  | 100     | 01      | 20200228185803  || 1005529  | T12059591  | 10      | 03      | 20200228185846  || 1005530  | T12059606  | 10      | 01      | 20200228195442  || 1005531  | T12059605  | 10      | 01      | 20200228195442  || 1005532  | noTradeId  | 100     | 03      | 20200229224015  |+----------+------------+---------+---------+-----------------+5 rows selected (0.056 seconds)

下面使用as select创建名称不同的视图,假设不需要status字段

create view ZLXX.WT_TRADE_REFUND2 (    id varchar primary key,    info.trade_id varchar,    info.amount  varchar,    info.modify_time varchar) as select INFO.TRADE_ID, INFO.AMOUNT, INFO.MODIFY_TIME from zlxx.wt_trade_refund;

会报错

0: jdbc:phoenix:> create view ZLXX.WT_TRADE_REFUND2 (. . . . . . . . >     id varchar primary key,. . . . . . . . >     info.trade_id varchar,. . . . . . . . >     info.amount  varchar,. . . . . . . . >     info.modify_time varchar. . . . . . . . > ) as select INFO.TRADE_ID, INFO.AMOUNT, INFO.MODIFY_TIME from zlxx.wt_trade_refund;Error: ERROR 604 (42P00): Syntax error. Mismatched input. Expecting "ASTERISK", got "INFO" at line 6, column 13. (state=42P00,code=604)org.apache.phoenix.exception.PhoenixParserException: ERROR 604 (42P00): Syntax error. Mismatched input. Expecting "ASTERISK", got "INFO" at line 6, column 13.

同一张表创建名称不同的视图: 

create view ZLXX.WT_TRADE_REFUND2 (    id varchar primary key,    info.trade_id varchar,    info.amount  varchar,    info.status varchar,    info.modify_time varchar) as select * from zlxx.wt_trade_refund; 

则是可以的

0: jdbc:phoenix:> select * from zlxx.wt_trade_refund2 limit 5;+----------+------------+---------+---------+-----------------+|    ID    |  TRADE_ID  | AMOUNT  | STATUS  |   MODIFY_TIME   |+----------+------------+---------+---------+-----------------+| 1005528  | T12059592  | 100     | 01      | 20200228185803  || 1005529  | T12059591  | 10      | 03      | 20200228185846  || 1005530  | T12059606  | 10      | 01      | 20200228195442  || 1005531  | T12059605  | 10      | 01      | 20200228195442  || 1005532  | noTradeId  | 100     | 03      | 20200229224015  |+----------+------------+---------+---------+-----------------+5 rows selected (0.093 seconds)

简单查看一下Phoenix视图的描述信息(列信息)

0: jdbc:phoenix:> !describe zlxx.wt_trade_refund+------------+--------------+------------------+--------------+------------+------------+--------------+----------------+-----------------+-----------------+-----------+----------+------+| TABLE_CAT  | TABLE_SCHEM  |    TABLE_NAME    | COLUMN_NAME  | DATA_TYPE  | TYPE_NAME  | COLUMN_SIZE  | BUFFER_LENGTH  | DECIMAL_DIGITS  | NUM_PREC_RADIX  | NULLABLE  | REMARKS  | COLU |+------------+--------------+------------------+--------------+------------+------------+--------------+----------------+-----------------+-----------------+-----------+----------+------+|            | ZLXX         | WT_TRADE_REFUND  | ID           | 12         | VARCHAR    | null         | null           | null            | null            | 0         |          |      ||            | ZLXX         | WT_TRADE_REFUND  | TRADE_ID     | 12         | VARCHAR    | null         | null           | null            | null            | 1         |          |      ||            | ZLXX         | WT_TRADE_REFUND  | AMOUNT       | 12         | VARCHAR    | null         | null           | null            | null            | 1         |          |      ||            | ZLXX         | WT_TRADE_REFUND  | STATUS       | 12         | VARCHAR    | null         | null           | null            | null            | 1         |          |      ||            | ZLXX         | WT_TRADE_REFUND  | MODIFY_TIME  | 12         | VARCHAR    | null         | null           | null            | null            | 1         |          |      |+------------+--------------+------------------+--------------+------------+------------+--------------+----------------+-----------------+-----------------+-----------+----------+------+

简单查看一下Phoenix表元数据信息(TABLE_TYPE为VIEW)

0: jdbc:phoenix:> !tables+------------+--------------+-------------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+| TABLE_CAT  | TABLE_SCHEM  |    TABLE_NAME     |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | INDEX_STATE  | IMMUTABLE_ROWS  | SALT_BUCKETS  | |+------------+--------------+-------------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+|            | SYSTEM       | CATALOG           | SYSTEM TABLE  |          |            |                            |                 |              | false           | null          | ||            | SYSTEM       | FUNCTION          | SYSTEM TABLE  |          |            |                            |                 |              | false           | null          | ||            | SYSTEM       | LOG               | SYSTEM TABLE  |          |            |                            |                 |              | true            | 32            | ||            | SYSTEM       | SEQUENCE          | SYSTEM TABLE  |          |            |                            |                 |              | false           | null          | ||            | SYSTEM       | STATS             | SYSTEM TABLE  |          |            |                            |                 |              | false           | null          | ||            | ZLXX         | WT_TRADE_REFUND   | VIEW          |          |            |                            |                 |              | false           | null          | ||            | ZLXX         | WT_TRADE_REFUND2  | VIEW          |          |            |                            |                 |              | false           | null          | |+------------+--------------+-------------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+---------------+-+

# 在HBase里插入点数据看看Phoenix的视图能否实时更新?答案是YES!

put 'ZLXX:WT_TRADE_REFUND', '2009999', 'INFO:TRADE_ID', 'ZXR3099999'put 'ZLXX:WT_TRADE_REFUND', '2009999', 'INFO:AMOUNT', '100'put 'ZLXX:WT_TRADE_REFUND', '2009999', 'INFO:STATUS', '00'put 'ZLXX:WT_TRADE_REFUND', '2009999', 'INFO:MODIFY_TIME', '20200715124015'

hbase shell端put数据

92baa53a2eddb966b1e0f46a945ef861.png

Phoenix端查询数据

da4b9f8b800a09da5e8076db6771a71f.png

总结:

1.hbase shell这边创建表时,命名空间namespace和表名称都要大写,这样方便Phoenix这边小写。

2.在hbase shell这边,命名空间与表名称之间需要注意是双引号,DataX里的全表名称也是如此。

3.Phoenix这边创建相同命名空间名称的schema。

4.Phoenix这边创建view视图映射有两种方式:as select和column_encoded_bytes=0。

附录hbase整合Phoenix的基本配置:

hbase-site.xml<property>  <name>phoenix.schema.isNamespaceMappingEnabledname>  <value>truevalue>property><property>  <name>phoenix.schema.mapSystemTablesToNamespacename>  <value>truevalue>property>

【Phoenix视图映射和DataX数据同步到HBase、END】

往期推荐:

Kafka消息送达语义说明

Kafka基础知识总结

Hadoop YARN:ApplicationMaster向ResourceManager注册AM源码调试

Apache Hadoop YARN:ClientResourceManager源码解析

Apache Hadoop YARN:ClientResourceManager源码DEBUG

Hadoop YARN:ApplicationMaster与ResourceManager交互源码解析

Hive企业级调优

HiveQL查询连续三天有销售记录的店铺

HiveQL实战蚂蚁森林低碳用户排名分析:解法一

HiveQL实战蚂蚁森林低碳用户排名分析:解法二

HiveQL实战蚂蚁森林植物申领统计分析

Hive-函数

Hive-查询

Hive-DML(Data Manipulation Language)数据操作语言

Hive-DDL(Data Definition Language)数据定义

Hive优化(整理版)

Spark Core之Shuffle解析

数据仓库开发规范

31002d2fadd66ad65f19b5c96a50150d.png

ca4d589a6842f7a1b352fe90b7c1ac10.gif

分享-点赞-在看,谢谢~~ 

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

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

相关文章

消防 直径性质

题目大意 先放直径性质(转自刀与玫瑰) 1.直径两端点一定是叶子节点。 2.距任意点最远点一定是直径的端点&#xff0c;据所有点最大值最小的点一定是直径的中点。 3.两棵树相连&#xff0c;新直径的两端点一定是原四个端点中的两个 4.两棵树相连&#xff0c;新直径长度最小为max…

java安全级别过高_Java应该是更高级别还是更低级别?

java安全级别过高总览 Java 8带来了许多简化的功能&#xff0c;例如Lambda表达式&#xff0c; 类型注释和虚拟扩展 。 尽管此功能很重要&#xff1a;a&#xff09;有价值&#xff0c;b&#xff09;赶上较凉的语言&#xff0c;但是这些更丰富&#xff0c;更高级的功能是Java应当…

python分析数据差异的方法_用Python的两种方法进行方差分析

在进行数据分析时&#xff0c;我们往往会遇到要对某个变量的影响因素进行分析的情况&#xff0c;而影响一事物的因素往往是很多的。比如在化工生产中&#xff0c;有温度、压力、剂量、反应时间等因素。每一因素的改变都有可能影响产品的数量和质量。我们往往要找出对产品质量有…

澄清字符串的格式!

用户友好的介绍 如果您不熟悉String格式或只想快速解决问题&#xff0c;那么String格式的Java文档不是最容易阅读和理解的。 尽管它很完整&#xff0c;但它不是非常用户友好的&#xff0c;所以我想我会尝试编写一个更清晰的版本。 这篇文章不仅对您有帮助&#xff0c;而且对我本…

5 图片 渐变_AI教程!5分钟教你绘制超酷炫的字体效果

图一所示的图片就是我们今天要学的AI教程啦。为什么想起来要做这个呢&#xff1f;因为前两天有两个粉丝私信我问这种效果的字体怎么做。觉得大家应该对这类字体比较感兴趣的&#xff0c;所以今天就给大家出个教程啦。第一眼看上去是不是感觉很酷炫&#xff1f;其实步骤也不多&a…

管理任务执行-如何制定有效的机制

背景 之前做工程师的时候&#xff0c;自己负责数据开发&#xff0c;现在做管理了&#xff0c;数据开发这一块工作分给了团队成员&#xff0c;管理沟通占据了大量的时间&#xff0c;项目的质量没有很好的把控。问题出在哪&#xff1f; 想让团队成员分担我们手头的工作&#xff0…

python和sql_Python和SQL 2017的强大功能

Python和SQL Server 2017的强大功能 原文来自&#xff1a;https://www.red-gate.com/simple-talk/sql/sql-development/power-python-sql-server-2017/ Python是SQL Server 2017的新版本。它的主要目的是允许在SQL Server中使用基于Python的机器学习&#xff0c;但它可以使用的…

xmlrpc与jsonrpc

RPC是Remote Procedure Call的缩写&#xff0c;翻译成中文就是远程过程调用&#xff0c;是一种在本地的机器上调用远端机器上的一个过程&#xff08;方法&#xff09;的技术&#xff0c;这个过程也被大家称为“分布式计算”&#xff0c;是为了提高各个分立机器的“互操作性”而…

6的变换_电源学报 | 2020年第3期:quot;高性能双向直流变换技术及其应用quot;专辑征稿启事...

往期精选&#xff1a;【电源学报•热点论文】贝尔福-蒙贝利亚技术大学(UTBM)高非教授-多物理域质子交换膜燃料电池建模仿真及实验测试专辑主编&#xff1a;张云 研究员(天津大学)吴红飞 教授(南京航空航天大学)专辑刊期&#xff1a; 2020年第3期(2020年5月)专辑介绍双向直流变换…

0基础怎么学python10010基础怎么学python_0基础学python全套python教程

C语言要写1000行代码&#xff0c;Java只需要写100行&#xff0c;而Python可能只要20行&#xff0c;所以Python是一种相当高级的语言&#xff0c;如今是Python的世界&#xff0c;花时间学习Python编程语言将是你对未来最好的投资&#xff0c;这就是要学习python的理由。 如何学习…

.Net Core3 新特性整理

.net core 3实现了.net 标准2.1。 1、生成可执行文件 以前版本需要dotnet run运行项目&#xff0c;.net core 3支持直接生成目标平台的可执行文件。比如windows就是exe了&#xff0c;linux就x了。 2、生成依赖项的副本 以前版本在build时不会把NuGet的工具复制到目标目录&#…

flash大作业一分钟源文件_「百树云课堂」一写作业就像被雷劈,是什么“病”?...

一写作业就闹心&#xff0c;大部分都是因为在培养习惯的时候基础没打好。比如&#xff1a;对时间不敏感、对效率不敏感、专注力低下等等&#xff01;今天咱就系统说下“习惯培养”的重点。1大部分娃写不完作业&#xff0c;最主要的一点就是对时间不敏感。写一个字&#xff0c;喝…

bzoj5147bzoj2121loj6701 字符串游戏

做不出来杂题,到处找题做 看到$loj$上新出了一道题,觉得很神仙不错, 还记得Censoring吗(一个AC自动机的题) 这个题求最优解,数据范围$150$ 题解 数据范围非常小,首先贪心肯定不行,考虑AC自动机上$dp$? 好吧其实是区间$dp$ 一个直接的想法是维护$f[l][r]0/1$表示是否可以清空$l…

7个相同小球4个不同盒子_【计算启蒙】4个游戏陪娃玩懂“数拆分”,加减法都不用愁!...

前几天我们整理了能锻炼孩子“数-量匹配”知识的家庭生活小游戏&#xff1a;7个家庭数-量匹配小游戏&#xff0c;让孩子摆脱“机械数数”&#xff01;​mp.weixin.qq.com所以今天&#xff0c;助教就来分享一些借助实物的“数拆分”小游戏吧&#xff01;已经学会数量对应&#x…

python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式

我就废话不多说了&#xff0c;大家还是直接看代码吧&#xff01; import keras import numpy as np from keras.applications import vgg16, inception_v3, resnet50, mobilenet #Load the VGG model vgg_model vgg16.VGG16(weightsimagenet) #Load the Inception_V3 model in…

NOIP模拟测试49·50「养花·折射·画作·施工·蔬菜·联盟」

一套题 养花 题解 分块\主席树 这里我用的是主席树 查询分段$1-(k-1)$找最大的,能向右找就向右找 for(ll nowl1,nowrk-1;nowl<maxx;nowlk,nowrk,nowrmin(nowr,maxx)){if(ansmod-1) break;chose(rt[r],rt[l-1],nowl,nowr,1,maxx);} 复杂度分析,调和级数$√n*log(n)$ 代码 #in…

宏任务和微任务执行顺序_确保任务的执行顺序

宏任务和微任务执行顺序有时有必要对线程池中的任务施加一定的顺序。 JavaSpecialists通讯的第206期提出了一种这样的情况&#xff1a;我们使用NIO从多个连接中读取数据。 我们需要确保来自给定连接的事件按顺序执行&#xff0c;但是不同连接之间的事件可以自由混合。 我想提出…

c语言中aver是什么意思_Linux系统top命令中的io使用率,到底是什么意思?

最近在做连续数据流的缓冲系统&#xff0c;C语言代码实现后&#xff0c;粗略测试了下&#xff0c;功能上应该没有问题。那么&#xff0c;接下来就该测试性能了。输入 top 命令&#xff0c;的确可以看到一系列 cpu 使用率&#xff0c;其中一个值得注意的子项就是 io 使用率了&am…

wireshark捕获选项不能用_wireshark的一些基础用法,欢迎收藏

About WiresharkWireshark是世界上最重要和使用最广泛的网络协议分析器。它让您在微观层次上看到网络上正在发生的事情&#xff0c;并且是许多商业和非营利性企业、政府机构和教育机构事实上(通常也是法律上)的标准。Wireshark的发展得益于全球网络专家的志愿贡献&#xff0c;并…

管理沟通-沟通框架

背景 管理三明治的承托&#xff0c;管理沟通。离开了沟通&#xff0c;所有的工作都将搁浅而无法前进。 常见话题&#xff1a; 向上沟通员工激励团队凝聚力提升向下沟通工作特点 工作职责说明技术开发计算机&#xff0c;编程语言&#xff0c;设计算法&#xff0c;开发功能&#…