摘要:

mysql列存储引擎,此前的索引逻辑功能不完备.去除对索引逻辑的使用后,引发crash.

本文分析其原因。

去除索引逻辑的做法:

    case JT_EQ_REF:{TABLE* table = join_tab->table();if (table->s->db_type()->db_type == DB_TYPE_TIANMU){read_first_record = join_read_const;read_record.read_record = join_no_more_records;read_record.unlock_row = join_const_unlock_row;}else{read_first_record = join_read_key;read_record.read_record = join_no_more_records;read_record.unlock_row = join_read_key_unlock_row;}}break;

崩溃逻辑追踪:

到达列引擎时的语法树:

T:-1 = TABLE_ALIAS(T:0,"STSSALESVOUCHERTAB")T:-2 = TMP_TABLE(T:-1,T:-3,T:-4,T:-5,T:-6,T:-7,T:4294967288)T:-3 = TABLE_ALIAS(T:1,"STSSALESVOUCHERDETAILSTAB")T:-4 = TABLE_ALIAS(T:2,"CUSTOM")T:-5 = TABLE_ALIAS(T:2,"CUSTOM")VC:-2.0 = CREATE_VC(T:-2,PHYS_COL(T:-5,A:0))VC:-2.1 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:13))C:0 = CREATE_CONDS(T:-2,VC:-2.0,=,VC:-2.1,<null>)T:-2.LEFT_JOIN_ON({T:-1,T:-3,T:-4},{T:-5},C:0)T:-6 = TABLE_ALIAS(T:3,"EDMTICKETTYPETAB")T:-7 = TABLE_ALIAS(T:4,"EDMCROWDKINDPRICETAB")T:-8 = TABLE_ALIAS(T:5,"STSSALESSETTLEMENTTAB")VC:-2.2 = CREATE_VC(T:-2,PHYS_COL(T:-1,A:17))A:-1 = T:-2.ADD_COLUMN(VC:-2.2,GROUP_BY,"usid","ALL")VC:-2.3 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:14))A:-2 = T:-2.ADD_COLUMN(VC:-2.3,GROUP_BY,"corpname","ALL")VC:-2.4 = CREATE_VC(T:-2,PHYS_COL(T:-1,A:2))A:-3 = T:-2.ADD_COLUMN(VC:-2.4,GROUP_BY,"iscenicid","ALL")VC:-2.5 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:4))A:-4 = T:-2.ADD_COLUMN(VC:-2.5,GROUP_BY,"itickettypeid","ALL")VC:-2.6 = CREATE_VC(T:-2,PHYS_COL(T:-7,A:3))A:-5 = T:-2.ADD_COLUMN(VC:-2.6,GROUP_BY,"icrowdkindid","ALL")VC:-2.7 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:21))A:-6 = T:-2.ADD_COLUMN(VC:-2.7,GROUP_BY,"mactualsaleprice","ALL")VC:-2.8 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:16))A:-7 = T:-2.ADD_COLUMN(VC:-2.8,SUM,"numb","ALL")VC:-2.9 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:22))A:-8 = T:-2.ADD_COLUMN(VC:-2.9,SUM,"mont","ALL")VC:-2.10 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:23))A:-9 = T:-2.ADD_COLUMN(VC:-2.10,SUM,"null","ALL")VC:-2.11 = CREATE_VC(T:-2,EXPR("coalesce"))A:-10 = T:-2.ADD_COLUMN(VC:-2.11,DELAYED,"mderatemoney","ALL")VC:-2.12 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:18))A:-11 = T:-2.ADD_COLUMN(VC:-2.12,SUM,"null","ALL")VC:-2.13 = CREATE_VC(T:-2,EXPR("coalesce"))A:-12 = T:-2.ADD_COLUMN(VC:-2.13,DELAYED,"ideratenums","ALL")VC:-2.14 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:27))A:-13 = T:-2.ADD_COLUMN(VC:-2.14,SUM,"null","ALL")VC:-2.15 = CREATE_VC(T:-2,EXPR("coalesce"))A:-14 = T:-2.ADD_COLUMN(VC:-2.15,DELAYED,"mhandcharge","ALL")VC:-2.16 = CREATE_VC(T:-2,PHYS_COL(T:-8,A:5))A:-15 = T:-2.ADD_COLUMN(VC:-2.16,GROUP_BY,"isettlementid","ALL")VC:-2.17 = CREATE_VC(T:-2,PHYS_COL(T:-1,A:10))A:-16 = T:-2.ADD_COLUMN(VC:-2.17,GROUP_BY,"bysalesvouchertype","ALL")VC:-2.18 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:65))VC:-2.19 = CREATE_VC(T:-2,EXPR("2"))C:1 = CREATE_CONDS(T:-2,VC:-2.18,=,VC:-2.19,<null>)VC:-2.20 = CREATE_VC(T:-2,EXPR("1"))C:1.AND(VC:-2.4,=,VC:-2.20,<null>)VC:-2.21 = CREATE_VC(T:-2,PHYS_COL(T:-6,A:0))C:1.AND(VC:-2.21,=,VC:-2.5,<null>)VC:-2.22 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:0))C:1.AND(VC:-2.2,=,VC:-2.22,<null>)VC:-2.23 = CREATE_VC(T:-2,PHYS_COL(T:-7,A:0))VC:-2.24 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:3))C:1.AND(VC:-2.23,=,VC:-2.24,<null>)VC:-2.25 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:2))VC:-2.26 = CREATE_VC(T:-2,PHYS_COL(T:-1,A:1))C:1.AND(VC:-2.25,=,VC:-2.26,<null>)VC:-2.27 = CREATE_VC(T:-2,PHYS_COL(T:-8,A:2))C:1.AND(VC:-2.27,=,VC:-2.26,<null>)VC:-2.28 = CREATE_VC(T:-2,PHYS_COL(T:-3,A:1))VC:-2.29 = CREATE_VC(T:-2,PHYS_COL(T:-1,A:0))C:1.AND(VC:-2.28,=,VC:-2.29,<null>)VC:-2.30 = CREATE_VC(T:-2,PHYS_COL(T:-8,A:1))C:1.AND(VC:-2.30,=,VC:-2.29,<null>)VC:-2.31 = CREATE_VC(T:-2,EXPR("substr"))VC:-2.32 = CREATE_VC(T:-2,EXPR("2022-08-18"))C:1.AND(VC:-2.31,>=,VC:-2.32,<null>)C:1.AND(VC:-2.31,<=,VC:-2.32,<null>)C:1.AND(VC:-2.18,<>,VC:-2.20,<null>)VC:-2.33 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:2))VC:-2.34 = CREATE_VC(T:-2,EXPR("02"))C:1.AND(VC:-2.33,=,VC:-2.34,<null>)VC:-2.35 = CREATE_VC(T:-2,PHYS_COL(T:-4,A:3))VC:-2.36 = CREATE_VC(T:-2,EXPR("01"))C:1.AND(VC:-2.35,=,VC:-2.36,<null>)T:-2.ADD_CONDS(C:1,WHERE)T:-2.APPLY_CONDS()RESULT(T:-2)

崩溃时的堆栈:

(gdb) bt
#0  0x00007f27fe230387 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007f27fe231a78 in __GI_abort () at abort.c:90
#2  0x0000000002f87ba5 in __gnu_cxx::__verbose_terminate_handler() ()
#3  0x0000000002ef63a6 in __cxxabiv1::__terminate(void (*)()) ()
#4  0x0000000002ef63f1 in std::terminate() ()
#5  0x0000000002ee9cc3 in __cxa_throw ()
#6  0x0000000002f7db1f in std::__throw_length_error(char const*) ()
#7  0x00000000029eb342 in std::vector<bool, std::allocator<bool> >::_M_check_len (this=0x7f2404cd94d0, __n=18446603336221196289, __s=0x315388d "vector<bool>::_M_fill_insert")at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_bvector.h:1251
#8  0x00000000029eada5 in std::vector<bool, std::allocator<bool> >::_M_fill_insert (this=0x7f2404cd94d0, __position=..., __n=18446603336221196289, __x=false)at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/vector.tcc:741
#9  0x00000000029ea695 in std::vector<bool, std::allocator<bool> >::insert (this=0x7f2404cd94d0, __position=..., __n=18446603336221196289, __x=@0x7f27b5dfe51c: false)at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_bvector.h:995
#10 0x00000000029ea25f in std::vector<bool, std::allocator<bool> >::resize (this=0x7f2404cd94d0, __new_size=18446603336221196289, __x=false)at /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/stl_bvector.h:1036
#11 0x00000000029e52dc in Tianmu::core::Filter::Filter (this=0x7f2404cd9460, no_obj=-9223372036854775807, power=16, all_ones=false, shallow=false)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/filter.cpp:48
#12 0x0000000002d15417 in Tianmu::core::MIUpdatingIterator::MIUpdatingIterator (this=0x7f27b5dfe660, _mind=0x7f2404cd7bb0, dimensions=...)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/mi_updating_iterator.cpp:31
#13 0x0000000002d3c6ed in Tianmu::core::ParameterizedFilter::FilterDeletedByTable (this=0x7f2404cd7a40, rcTable=0x7f2404c34e40, no_dims=0)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/parameterized_filter.cpp:1470
#14 0x0000000002d39bb3 in Tianmu::core::ParameterizedFilter::UpdateMultiIndex (this=0x7f2404cd7a40, count_only=false, limit=-1)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/parameterized_filter.cpp:991
#15 0x0000000002a05157 in Tianmu::core::Query::Preexecute (this=0x7f27b5dff900, qu=..., sender=0x7f2404cd7790, display_now=true)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/query.cpp:777
#16 0x00000000029d7153 in Tianmu::core::Engine::Execute (this=0x5984890, thd=0x7f240403ff50, lex=0x7f24040420c8, result_output=0x7f2404c74d38, unit_for_union=0x0)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/engine_execute.cpp:421
#17 0x00000000029d634c in Tianmu::core::Engine::HandleSelect (this=0x5984890, thd=0x7f240403ff50, lex=0x7f24040420c8, result=@0x7f27b5dffdf8: 0x7f2404c74d38, setup_tables_done_option=0, res=@0x7f27b5dffdf4: 0, optimize_after_tianmu=@0x7f27b5dffdec: 1, tianmu_free_join=@0x7f27b5dffdf0: 1, with_insert=0)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/engine_execute.cpp:232
#18 0x0000000002abb93d in Tianmu::dbhandler::TIANMU_HandleSelect (thd=0x7f240403ff50, lex=0x7f24040420c8, result=@0x7f27b5dffdf8: 0x7f2404c74d38, setup_tables_done_option=0, res=@0x7f27b5dffdf4: 0, optimize_after_tianmu=@0x7f27b5dffdec: 1, tianmu_free_join=@0x7f27b5dffdf0: 1, with_insert=0)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/handler/ha_rcengine.cpp:82
#19 0x00000000022ffe85 in execute_sqlcom_select (thd=0x7f240403ff50, all_tables=0x7f24040512c8) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/sql_parse.cc:5182
#20 0x00000000022f9cad in mysql_execute_command (thd=0x7f240403ff50, first_level=true) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/sql_parse.cc:2831
#21 0x0000000002300b8c in mysql_parse (thd=0x7f240403ff50, parser_state=0x7f27b5e00f00) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/sql_parse.cc:5621
#22 0x00000000022f6fd6 in dispatch_command (thd=0x7f240403ff50, com_data=0x7f27b5e01660, command=COM_QUERY) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/sql_parse.cc:1495
#23 0x00000000022f6179 in do_command (thd=0x7f240403ff50) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/sql_parse.cc:1034
#24 0x00000000023fa0bb in handle_connection (arg=0x739e780) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/sql/conn_handler/connection_handler_per_thread.cc:313
#25 0x0000000002915cf1 in pfs_spawn_thread (arg=0x7a2ca60) at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/perfschema/pfs.cc:2197
#26 0x00007f2800dafea5 in start_thread (arg=0x7f27b5e02700) at pthread_create.c:307
#27 0x00007f27fe2f8b0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) f 11
#11 0x00000000029e52dc in Tianmu::core::Filter::Filter (this=0x7f2404cd9460, no_obj=-9223372036854775807, power=16, all_ones=false, shallow=false)at /data2/jenkins/workspace/stonedb5.7-zsl-centos7.9-30-238/storage/tianmu/core/filter.cpp:48
48    block_changed.resize(no_blocks);
(gdb) p no_blocks
$1 = 18446603336221196289
(gdb) p no_obj
$2 = -9223372036854775807

crash原因分析;

读取元数据的no_obj和pack_power数据不符合预期,需要定位为何

一. 多表关联时, 将所有表元组数相乘, 总的元组数超过uint64可能容纳的范围

[2022-09-21 16:03:12.342030] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 1000 no_tuples: 0
[2022-09-21 16:03:12.342201] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 1000 no_tuples: 1000
[2022-09-21 16:03:12.342304] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 1000 no_tuples: 1000000
[2022-09-21 16:03:12.342359] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 1000 no_tuples: 1000000000
[2022-09-21 16:03:12.342555] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 243 no_tuples: 1000000000000
[2022-09-21 16:03:12.342626] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 697 no_tuples: 243000000000000
[2022-09-21 16:03:12.342697] [10533] [INFO] [multi_index.cpp:198] MSG: MultiIndex::AddDimension_cross size: 1000 no_tuples: 169371000000000000
[2022-09-21 16:03:12.403332] [10533] [WARN] [exception.cpp:41] MSG: Exception: Too many tuples.    (48).STACK TRACE BEGIN/stonedb57/install/bin/mysqld(Tianmu::common::OutOfMemoryException::OutOfMemoryException(std::string const&)+0x23) [0x29e4a4b]/stonedb57/install/bin/mysqld(Tianmu::core::Filter::Filter(long, unsigned int, bool, bool)+0x188) [0x29e51ec]/stonedb57/install/bin/mysqld(Tianmu::core::MIUpdatingIterator::MIUpdatingIterator(Tianmu::core::MultiIndex*, Tianmu::core::DimensionVector&)+0x187) [0x2d15439]/stonedb57/install/bin/mysqld(Tianmu::core::ParameterizedFilter::FilterDeletedByTable(Tianmu::core::JustATable*, int)+0xe5) [0x2d3c743]/stonedb57/install/bin/mysqld(Tianmu::core::ParameterizedFilter::UpdateMultiIndex(bool, long)+0x28f) [0x2d39c09]/stonedb57/install/bin/mysqld(Tianmu::core::Query::Preexecute(Tianmu::core::CompiledQuery&, Tianmu::core::ResultSender*, bool)+0x1bc3) [0x2a05157]/stonedb57/install/bin/mysqld(Tianmu::core::Engine::Execute(THD*, LEX*, Query_result*, st_select_lex_unit*)+0x5e1) [0x29d7153]/stonedb57/install/bin/mysqld(Tianmu::core::Engine::HandleSelect(THD*, LEX*, Query_result*&, unsigned long, int&, int&, int&, int)+0x8d8) [0x29d634c]/stonedb57/install/bin/mysqld(Tianmu::dbhandler::TIANMU_HandleSelect(THD*, LEX*, Query_result*&, unsigned long, int&, int&, int&, int)+0x5b) [0x2abb93d]/stonedb57/install/bin/mysqld() [0x22ffe85]/stonedb57/install/bin/mysqld(mysql_execute_command(THD*, bool)+0x9de) [0x22f9cad]/stonedb57/install/bin/mysqld(mysql_parse(THD*, Parser_state*)+0x557) [0x2300b8c]/stonedb57/install/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0xadc) [0x22f6fd6]/stonedb57/install/bin/mysqld(do_command(THD*)+0x23c) [0x22f6179]/stonedb57/install/bin/mysqld(handle_connection+0x1ee) [0x23fa0bb]/stonedb57/install/bin/mysqld(pfs_spawn_thread+0x173) [0x2915cf1]/lib64/libpthread.so.0(+0x7ea5) [0x7f2d5d1b8ea5]/lib64/libc.so.6(clone+0x6d) [0x7f2d5a701b0d]
STACK TRACE END

缩小数据量后重新测试,可以正常查询:

mysql>     SELECT->         sale.usid AS usid,->         cus.corpname AS corpname,->         sale.iscenicid AS iscenicid,->         salde.itickettypeid AS itickettypeid,->         price.icrowdkindid AS icrowdkindid,->         salde.mactualsaleprice AS mactualsaleprice,->         saletype.isettlementid AS isettlementid,->         sale.bysalesvouchertype AS bysalesvouchertype->     FROM->         STSSALESVOUCHERTAB sale,->         STSSALESVOUCHERDETAILSTAB salde,->         (->             SELECT FIND_TOP_USID(C.USID) AS SUSID,->             C2.CORPNAME AS SCORPNAME,->             C2.BNAME,->             C.USID,->             C.CORPNAME,->             C.IBUSINESSID,->             C.TTLB->         FROM->             CUSTOM C->         LEFT JOIN CUSTOM C2 ON->             C2.USID = C.SUSID) cus,->         EDMTICKETTYPETAB ti,->         EDMCROWDKINDPRICETAB price,->         STSSALESSETTLEMENTTAB saletype->         limit 10;
+-------+----------+-----------+---------------+--------------+------------------+---------------+--------------------+
| usid  | corpname | iscenicid | itickettypeid | icrowdkindid | mactualsaleprice | isettlementid | bysalesvouchertype |
+-------+----------+-----------+---------------+--------------+------------------+---------------+--------------------+
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
| guest |          |         1 |            49 |           10 |             0.00 | 00            | 01                 |
+-------+----------+-----------+---------------+--------------+------------------+---------------+--------------------+
10 rows in set (0.02 sec)

2022-09-20 mysql列存储引擎-问题定位-去除索引逻辑后引发crash相关推荐

  1. 2022-12-16 mysql列存储引擎-YP-上下文记录

    摘要: mysql列存储引擎-一铺-上下文记录 DDL: 表结构: create table tunit(id int not null,unitsn varchar(20) not null );c ...

  2. 2022-09-15 mysql列存储引擎-语法树转换

    摘要: 列存储引擎有一套自己的执行处理规则, 在进行处理前,是将mysql经过词法分析和语法分析后的语法树,经过了一些符合自己逻辑的处理. 本文记录mysql的语法树在列存储引擎中的转换过程. 逻辑建 ...

  3. 2022-10-09 mysql列存储引擎-exists结果错误-问题分析

    摘要: TPCH的Q4使用了exists子查询, 但是结果与innodb有出入, 本文分析原因. DDL: selecto_orderpriority,count(*) as order_countf ...

  4. 2022-12-08 mysql列存储引擎-POC-CQ慢SQL4-上下文记录

    摘要: mysql列存储引擎-CQ慢SQL4-上下文记录 关联: https://stoneatom.yuque.com/staff-ft8n1u/qfqtnb/cy57cc0ecm81fyp1 关联 ...

  5. MySQL InnoDB 存储引擎索引那些事儿

    InnoDB 存储引擎中,表是根据主键顺序组织存放的,称为索引组织表.每个表都有一个主键,如果没有显示定义主键,则会选择第一个创建的非空唯一索引作为主键,如果没有非空唯一索引,InnoDB引擎则自动创 ...

  6. openGauss存储技术(三)——列存储引擎

    上一篇内容我们介绍了openGauss存储技术--行存储引擎,本文重点介绍openGauss列存储引擎. openGauss列存储引擎 传统行存储数据压缩率低,必须按行读取,即使读取一列也必须读取整行 ...

  7. Mysql数据库存储引擎--转

    原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...

  8. MySql 扩展存储引擎

    MySql 扩展存储引擎 下面介绍几个列式存储引擎(都有两个版本:社区版.商业版): 一:TokuDB TokuDB 是一个高性能.支持事务处理的 MySQL 和 MariaDB 的存储引擎.Toku ...

  9. MySQL的存储引擎InnoDB选择了B+ 树

    我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引 ...

最新文章

  1. 一款vue编写的功能强大的swagger-ui,有点秀(附开源地址)
  2. sublime text3中文文件名显示为框框,怎么解决
  3. 初次使用CxImage类库、VC6配置UNICODE的方法
  4. Keras版Sequence2Sequence对对联实战——自然语言处理技术
  5. 2022版全球及中国消防设备市场营销策略分析与竞争趋势展望报告
  6. oracle指令df,怎么使用df命令查看Linux磁盘空间?
  7. PAT_B_1015_C++(25分)
  8. 用空代理实现account(lua程序设计21.7练习21.4题)
  9. 用计算机打出二分之一,win10手机计算器怎么输入二分之一?
  10. php模块出现警告,PHP警告:模块已在第0行的Unknown中加载
  11. cnsul linux环境后台启动_Linux环境下批量启动、停止或重启jar服务的shell脚本
  12. QXDM5 中 Qt5WebKit.dll 丢失问题解决办法
  13. 边做边记中航信酒店接口开发
  14. 碳化硅纳米线,SiC纳米线(SiC nanowires),SiC短纤维(SiC fiber),SiC晶须(SiC whiskers)的主要应用方向,检测XRD图谱
  15. BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
  16. iOS 11种键盘布局总结
  17. unzip 分包_劳务派遣第二讲一一劳务派遣和劳务分包有啥区别?
  18. 人只剩一个大脑还能活吗
  19. IOS应用内及应用之间跳转URL
  20. java 设计模式 路由器_java设计模式2————工厂模式

热门文章

  1. 多类别不平衡分类-解决方案:概述【集成学习、数据重采样、深度学习(元学习)、异常检测】
  2. Linux Ubuntu 卸载 mysql
  3. Unreal : 读取json 文件
  4. [err] [Dtf] 2006 mysql server has gone away
  5. ZeroTier的planet文件格式分析
  6. 小程序---wxParse解决图片大小不适应小程序页面问题
  7. 23岁IT男子与女友分手,扔下200万元分手费走了
  8. B/S模式网站发布到本地及阿里云服务器 操作流程总结记录——结语
  9. 在中国,咨询公司为啥不值钱?
  10. 如何高效的管理1000台Windows服务器