-
亲爱的伙伴们,经过一个月的激烈角逐,八月份月度贡献奖、推广奖和参与奖获奖名单已经出炉。究竟花落谁家?让我们来看一下8月份的获奖名单:8月份获奖名单月度贡献奖奖项Gitee用户名八月积分一等奖ShawnYan57二等奖企鹅肚皮白白的55changyz55三等奖锁钥50wangwei33刘贵宾30四等奖李雨晴30YvanTan30推广奖推广奖获奖人员名单ShawnYan企鹅肚皮白白的changyz锁钥参与奖参与奖获奖人员名单BubuMumuwangwei孙剑涛磊磊changyzShawnYan一米阳光天影onion_535kewei.shenzhangqnYvanTancftang秋秋molicoderyvan191锁钥企鹅肚皮白白的李雨晴田卫平杨讴YvanTanHashubYC刘贵宾zoneliwt领奖方式1、联系“Gauss松鼠会小助手”(ID:Gauss_Asst666),核对Gitee用户名并进行奖品确认。2、请以上获奖人员提供鲲鹏社区实名认证截图、姓名、联系方式、邮寄地址等信息,以便实物奖的邮寄。3、奖品发放时间:获奖名单公布后的五个工作日内进行奖品发放或邮寄。9月份奖项设置推广奖每邀请2个openGauss社区新用户,且受邀请人成功提交1个有效的Issue和1个有效的PR,邀请人即可获赠以下奖品之一。同一邀请人最多可获得5份礼品。月度贡献奖根据每月新增积分进行排名,定期在Gauss松鼠会公众号公布月度积分排行。贡献奖需要达到30分以上才能获奖。如果月度参与人数大于50人,则一、二、三等奖品各增加1个,四等奖增加2个。优秀贡献奖根据累积积分进行排名,活动结束后(10月31日),根据总积分情况公布获奖名单。注:1.推广奖与月度贡献奖、优秀贡献奖相互独立,每位参与活动者获奖可叠加。 2.奖品种类数量有限,先到先得。参与活动规则点击链接查看:第二届【openGauss资料捉虫】活动等你来报名~不会提PR的小伙伴注意咯,手把手教你提PR教程已发布(点击文末阅读原文)!轻松简单、快速上手的WEB端提交PR教程可供参考,只需花10分钟,便可成功完成提交PR,获得一份参与奖:https://www.bilibili.com/video/BV1kY4y1u7gd/
-
执行引擎一般负责查询的执行,执行引擎在SQL执行栈中起到接收优化器生成的执行计划Plan、并对通过存储引擎提供的数据读写接口,实现对数据进行计算得到查询的结果集。在典型的OLTP场景中,简单查询占了很大一部分比例。这种查询的特征是只涉及单表和简单表达式的查询,因此为了加速这类查询,openGauss提出了SQL by pass框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加速简单查询的执行速度。SQL by passenable_opfusion用于控制是否对简单增删改查进行优化,简单insert语句在开启enable_opfusion时的执行计划如下由于开启SQL BY PASS,从exec_simple_query过来的语句,会判断可以走SQL BY PASS,否则进入CreatePortal走经典执行流程。static void exec_simple_query(const char* query_string, MessageType messageType, StringInfo msg = NULL) { … /* SQL bypass */ if (runOpfusionCheck) { // 进入SQL by pass (void)MemoryContextSwitchTo(oldcontext); void* opFusionObj = OpFusion::FusionFactory( OpFusion::getFusionType(NULL, NULL, plantree_list), oldcontext, NULL, plantree_list, NULL); if (opFusionObj != NULL) { ((OpFusion*)opFusionObj)->setCurrentOpFusionObj((OpFusion*)opFusionObj); if (OpFusion::process(FUSION_EXECUTE, NULL, completionTag, isTopLevel, NULL)) { CommandCounterIncrement(); finish_xact_command(); EndCommand(completionTag, dest); MemoryContextReset(OptimizerContext); break; } Assert(0); } (void)MemoryContextSwitchTo(t_thrd.mem_cxt.msg_mem_cxt); } /* * Create unnamed portal to run the query or queries in. If there * already is one, silently drop it. */ portal = CreatePortal("", true, true); // 经典执行流程 … }进入InsertFusion::execute完成数据插入操作。#0 InsertFusion::execute (this=0x7fd93a4104f8, max_rows=9223372036854775807, completionTag=0x7fd933e67020 "@p\346\063\331\177") at opfusion_insert.cpp:297 #1 0x0000000001ac00d9 in OpFusion::fusionExecute (this=0x7fd93a4104f8, msg=0x0, completionTag=0x7fd933e67020 "@p\346\063\331\177", isTopLevel=true, isQueryCompleted=0x0) at opfusion.cpp:453 #2 0x0000000001ac0389 in OpFusion::process (op=0, msg=0x0, completionTag=0x7fd933e67020 "@p\346\063\331\177", isTopLevel=true, isQueryCompleted=0x0) at opfusion.cpp:491 #3 0x000000000193a910 in exec_simple_query (query_string=0x7fd966ad2060 "insert into t1 values(1,200);", messageType=QUERY_MESSAGE, msg=0x7fd933e67210) at postgres.cpp:2624SQL by pass适应的场景有:只支持indexscan和indexonlyscan,且全部WHERE语句的过滤条件都在索引上。只支持单表增删改查,不支持join、using。只支持行存表,不支持分区表,表不支持有触发器。不支持active sql、QPS等信息统计特性。不支持正在扩容和缩容的表。不支持查询或者修改系统列。只支持简单SELECT语句,例如SELECT c3 FROM t1 WHERE c1 = ? and c2 =10;仅可以查询目标表的列,c1和c2列为索引列,后边可以是常量或者参数,可以使用 for update。只支持简单INSERT语句,例如:INSERT INTO t1 VALUES (?,10,?);仅支持一个VALUES,VALUES里面的类型可以是常量和参数,不支持returning。只支持简单DELETE语句,例如:DELETE FROM t1 WHERE c1 = ? and c2 = 10; c1和c2列为索引列,后边可以是常量或者参数。只支持简单UPDATE语句,例如:UPDATE t1 SET c3 = c3+? WHERE c1 = ? and c2 = 10;c3列修改的值可以是常量和参数,也可以是一个简单的表达式,c1和c2列为索引列,后边可以是常量或者参数。经典的执行器关闭enable_opfusion,简单insert的执行计划是这样的在这种执行流程中Portal是执行SQL语句的载体,每一条SQL对应唯一的Portal,不同的查询类型对应的Portal类型也有区别。typedef enum PortalStrategy { PORTAL_ONE_SELECT, // SQL语句包含单一的SELECT查询 PORTAL_ONE_RETURNING, // INSERT/UPDATE/DELETE语句包含Returning PORTAL_ONE_MOD_WITH, // 查询语句包含With PORTAL_UTIL_SELECT, // 工具类型查询语句,如explain PORTAL_MULTI_QUERY // 所有其他类型查询语句 } PortalStrategy;Portal的生命周期管理在exec_simple_query函数中实现,该函数负责Portal创建、执行和清理。Portal执行的主要执行流程包括PortalStart函数、PortalRun函数、PortalDrop函数几个部分。其中PortalStart函数负责进行Portal结构体初始化工作,包括执行算子初始化、内存上下文分配等;PortalRun函数负责真正的执行和运算,它是执行器的核心;PortalDrop函数负责最后的清理工作,主要是数据结构、缓存的清理。PortalRun函数根据查询类型进入不同的处理函数bool PortalRun( Portal portal, long count, bool isTopLevel, DestReceiver* dest, DestReceiver* altdest, char* completionTag) { … switch (portal->strategy) { case PORTAL_ONE_SELECT: … case PORTAL_MULTI_QUERY: // insert从这里进入 PortalRunMulti(portal, isTopLevel, dest, altdest, completionTag); /* Prevent portal's commands from being re-executed */ MarkPortalDone(portal); /* Always complete at end of RunMulti */ result = true; break; … }最终执行ExecInsertT完成数据插入。#0 ExecInsertT (state=0x7fdbf1836060, slot=0x7fdbf0c86460, planSlot=0x7fdbf0c86460, estate=0x7fdbf0c74060, canSetTag=true, options=0, partitionList=0x7fdbf3125860) at nodeModifyTable.cpp:800 #1 0x0000000001a684cd in ExecModifyTable (node=0x7fdbf1836060) at nodeModifyTable.cpp:3043 #2 0x00000000019f3f93 in ExecModifyTableWrap (node=0x7fdbf1836060) at execProcnode.cpp:785 #3 0x00000000019f43b5 in ExecProcNode (node=0x7fdbf1836060) at execProcnode.cpp:1038 #4 0x00000000019ed9d5 in ExecutePlan (estate=0x7fdbf0c74060, planstate=0x7fdbf1836060, operation=CMD_INSERT, sendTuples=false, numberTuples=0, direction=ForwardScanDirection, dest=0x7fdbf13bb9c8, motJitContext=0x0) at execMain.cpp:2163 #5 0x00000000019ea25a in standard_ExecutorRun (queryDesc=0x7fdbf1558060, direction=ForwardScanDirection, count=0) at execMain.cpp:608 #6 0x000000000181d6ef in explain_ExecutorRun (queryDesc=0x7fdbf1558060, direction=ForwardScanDirection, count=0) at auto_explain.cpp:121 #7 0x00000000019e9dee in ExecutorRun (queryDesc=0x7fdbf1558060, direction=ForwardScanDirection, count=0) at execMain.cpp:486 #8 0x000000000194fed6 in ProcessQuery (plan=0x7fdbf0b7b2e0, sourceText=0x7fdbf13ba060 "insert into t1 values(1,200);", params=0x0, isMOTTable=false, motJitContext=0x0, dest=0x7fdbf13bb9c8, completionTag=0x7fdbf3126020 "") at pquery.cpp:292 #9 0x0000000001953fa1 in PortalRunMulti (portal=0x7fdbf0c7a060, isTopLevel=true, dest=0x7fdbf13bb9c8, altdest=0x7fdbf13bb9c8, completionTag=0x7fdbf3126020 "") at pquery.cpp:1889 #10 0x00000000019525e0 in PortalRun (portal=0x7fdbf0c7a060, count=9223372036854775807, isTopLevel=true, dest=0x7fdbf13bb9c8, altdest=0x7fdbf13bb9c8, completionTag=0x7fdbf3126020 "") at pquery.cpp:1191 #11 0x000000000193ac65 in exec_simple_query (query_string=0x7fdbf13ba060 "insert into t1 values(1,200);", messageType=QUERY_MESSAGE, msg=0x7fdbf3126210) at postgres.cpp:2720以上分析了简单insert语句的两种执行流程,对于delete,update,select基本工作流程一致。
-
为让更多的朋友了解、参与到openGauss开源社区建设中,并持续提升openGauss资料质量,Gauss松鼠会联合openGauss社区、鲲鹏社区、墨天轮共同开展第二届openGauss资料捉虫活动!报名参与openGauss资料捉虫活动,发现或解决资料中的待改进点,或者推荐他人参与活动,均有机会获奖。参与活动的伙伴不仅每月有机会获得华为无线耳机、华为手环等月度贡献奖,持续输出还有机会获得华为平板、机械键盘等优秀贡献奖。快来参与,让我们看到你的实力!【参与方式】01 活动报名活动时间:即日起至10月31日报名方式:添加“Gauss松鼠会小助手(ID:Gauss_Asst666)”为好友,发送“报名资料捉虫活动” 以及Gitee用户名,即完成报名。02 参与活动方式一:直接参与社区贡献提交有效问题(Issue):在openGauss社区资料中寻找待改进的点,在docs仓库提交Issue反馈资料改进意见并在标题前加【openGauss资料捉虫活动】标签。操作指导请参见资料捉虫活动指导。提交有效修改方法(PR,Pull Request):在openGauss社区资料中寻找待改进的点或对于已存在未解决的Issue问题,在docs仓库按照提交PR修改资料并在标题前加【openGauss资料捉虫活动】标签。操作指导请参见5分钟教会你如何提交PR:方式二:推荐他人参与社区贡献受邀者完成“openGauss资料捉虫活动”报名并发送邀请者微信昵称给Gauss松鼠会小助手。受邀者在openGauss社区提交有效问题(Issue)和修改方法(PR,Pull Request)。【奖品设置】参与奖提交1个有效的Issue和1个有效的PR,即可获赠华为官方出版的《openGauss数据库核心技术》、《openGauss数据库实战指南》或《openGauss数据库源码解析》书籍一本。推广奖每邀请2个openGauss社区新用户,且受邀请人成功提交1个有效的Issue和1个有效的PR,邀请人即可获赠以下奖品之一。同一邀请人最多可获得5份礼品。贡献奖(月度)根据每月新增积分进行排名,定期在Gauss松鼠会公众号公布月度积分排行。贡献奖需要达到30分以上才能获奖。如果月度参与人数大于50人,则一、二、三等奖品各增加1个,四等奖增加2个。优秀贡献奖根据累积积分进行排名,活动结束后(10月31日),根据总积分情况公布获奖名单。注:推广奖与月度贡献奖、优秀贡献奖相互独立,每位参与活动者获奖可叠加。奖品种类数量有限,先到先得。所有获奖者需在鲲鹏社区完成实名认证后方可领取奖品。【活动规则】本次捉虫活动采用积分制,包含如下2部分积分:邀请好友参与活动,获得相应的积分:每成功邀请一个openGauss社区新用户(未参与过openGauss社区贡献),且受邀人提交1个有效Issue和1个有效的PR,邀请人即可获得20积分,积分依次累加。对有效的 issue 和 PR 进行积分:项目积分规则Issue提交第一个Issue积3分,后续每提交一个Issue积1分。PR提交第一个PR积6分,后续每提交一个PR积2分。附录有效的Issue或PR的评定:Issue或PR已添加“openGauss资料捉虫活动”标签。如果是低错类问题,每个Issue/PR中至少需要包含3处以上错误:问题类型包含但不限于以下规范问题或低错错别字或拼写错误;标点符号使用错误链接错误、空单元格、格式错误英文中包含中文字符表述不通顺,但不影响理解版本号不匹配:如软件包名称、界面版本号上下文描述不一致易用性问题关键步骤错误或缺失,无法指导用户完成任务缺少必要的前提条件、注意事项等描述存在歧义正确性问题技术原理、功能、规格等描述和软件不一致,存在错误原理图、架构图等存在错误命令、命令参数等错误命令无法完成对应功能活动主办方回复为“恭喜您!此Issue有效,感谢您的反馈”或PR经审核后合入到社区表示该Issue或PR有效。活动针对latest版本(当前最新版本),其他版本不参与积分。 重复问题以时间靠前的为准。常见问题:Q1:自己提的Issue被别人提了PR,算违规吗?A1:在开源社区,大家可以自由的提交Issue和PR,都是在为开源社区做贡献,没有违规一说。由于本次是在举办活动,有其特殊性,原则上鼓励并提倡大家针对自己的Issue自己提交PR解决。如果Issue提交超过12小时后仍未解决,则其他人针对此Issue提交的PR有效。Q2:如果我和其他人提交了相同的Issue或PR,我提交的时间早,但是先合入了另一个人的PR导致冲突,积分怎么算?A2:理论上来说先提交Issue和PR的会先合入。但如果后提交的人的PR和Issue先合入了,也会是先提交的Issue和PR积分有效。Q3:同一个文件中的相同问题,拆成多个Issue和PR,这个积分怎么算呢?A3:本次活动旨在让大家在开源社区上贡献,重在发现问题,建议大家同一个页面的问题提交一个Issue。Q4:如果出现相同积分,如何进行排名?A4:积分相同的情况下,以个人最后一个提交早者排名靠前。
-
Gauss松鼠会对外公开招募数据库讲师啦!如果您有一颗乐于分享、专注数据库技术的心,如果您愿意贡献您的一份力量,与我们一同贡献数据库技术交流圈,欢迎您加入Gauss松鼠会讲师团。讲师权益成为Gauss松鼠会讲师,您将获得:评优评先提名Gauss松鼠会年度奖项评选/Gauss松鼠会优化会员评选openGauss举办的各种会议的门票物质报酬华为手机/平板/手表/………讲师需要做什么?Gauss松鼠会目前运营的直播课程主要分为以下几个栏目,您可以自主选择担任任意栏目中的一场或多场直播讲师:高校课堂,讲解内容包含:openGauss应用开发系列课程,包括但不限于:概述,安装部署,基本管理,工具介绍以及备份恢复等。openGauss内核开发系列课程,包括但不限于:内核架构,SQL引擎原理,如何进行内核开发等。大咖讲堂,讲解内容包含:分享数据库前沿技术,可以是本人或所在团队的研究成果,也可以是对数据库发展趋势的洞察。论文分享,讲解内容包含:分析某篇或某个方向的多篇数据库论文,在分享会上进行解读。可以是自己参与写作的论文,也可以是他人的论文。作为直播讲师,您需要:准备直播课件并进行线上直播解答直播间小伙伴的问答讲师申请资格拥有3年以上的数据库从业经验,熟悉数据库技术拥有一颗乐于分享的心,愿意在互联网上分享数据库相关的技术普通话标准,逻辑清晰如何申请微信添加“Gauss松鼠会小助手(ID:Gauss_Asst666)”为好友,发送“讲师报名”。后续我们会和所有报名者联系并确定讲师人选。
-
通过 PG_TABLESPACE_SIZE 查询表空间的当前使用情况,得到的是表空间在所有DN上占用空间的总和么?那每个DN上的占用情况要怎么获取?谢谢!!!
-
SQL语句解析完成后被解析成Query结构,在进行优化时是以Query为单位进行的,Query的优化分为基于规则的逻辑优化(查询重写)和基于代价的物理优化(计划生成),主入口函数为subquery_planner。subquery_planner函数接收Query(查询树),返回一个Plan(计划树)。Plan* subquery_planner(PlannerGlobal* glob, Query* parse, PlannerInfo* parent_root, bool hasRecursion, double tuple_fraction, PlannerInfo** subroot, int options, ItstDisKey* diskeys, List* subqueryRestrictInfo){ PlannerInfo* root = NULL;Plan* plan = NULL; //返回结果…preprocess_const_params(root, (Node*)parse->jointree); // 常数替换等式… if (parse->hasSubLinks) { pull_up_sublinks(root); //提升子链接 DEBUG_QRW("After sublink pullup"); } /* Reduce orderby clause in subquery for join */ reduce_orderby(parse, false); //减少orderby DEBUG_QRW("After order by reduce"); if (u_sess->attr.attr_sql.enable_constraint_optimization) { removeNotNullTest(root); //删除NotNullTest DEBUG_QRW("After soft constraint removal"); }… if ((LAZY_AGG & u_sess->attr.attr_sql.rewrite_rule) && permit_from_rewrite_hint(root, LAZY_AGG)) { lazyagg_main(parse); // lazyagg重写 DEBUG_QRW("After lazyagg");}…parse->jointree = (FromExpr*)pull_up_subqueries(root, (Node*)parse->jointree); //提升子查询… if (parse->setOperations) { flatten_simple_union_all(root); //UNIONALL优化 DEBUG_QRW("After simple union all flatten");}…expand_inherited_tables(root); //展开继承表…parse->targetList = (List*)preprocess_expression(root, (Node*)parse->targetList, EXPRKIND_TARGET); //预处理表达式…parse->havingQual = (Node *) newHaving; //处理HAVING子句… reduce_outer_joins(root); //外连接消除… reduce_inequality_fulljoins(root); //全连接重写 …plan = grouping_planner(root, tuple_fraction); //主要的计划过程…return plan;}subquery_planner函数由函数standard_planner调用,standard_planner函数由exec_simple_query->pg_plan_queries->pg_plan_query->planner函数调用。standard_planner将Query(查询树)生成规划好的语句,可用于执行器实际执行。PlannedStmt* standard_planner(Query* parse, int cursorOptions, ParamListInfo boundParams){ PlannedStmt* result = NULL; //返回结果PlannerGlobal* glob = NULL; double tuple_fraction; PlannerInfo* root = NULL;Plan* top_plan = NULL;… glob = makeNode(PlannerGlobal); /* primary planning entry point (may recurse for subqueries) */top_plan = subquery_planner(glob, parse, NULL, false, tuple_fraction, &root); //主规划过程入口… /* build the PlannedStmt result */result = makeNode(PlannedStmt); //构造PlannedStmtresult->commandType = parse->commandType;result->queryId = parse->queryId;result->uniqueSQLId = parse->uniqueSQLId;result->hasReturning = (parse->returningList != NIL);result->hasModifyingCTE = parse->hasModifyingCTE;result->canSetTag = parse->canSetTag;result->transientPlan = glob->transientPlan;result->dependsOnRole = glob->dependsOnRole;result->planTree = top_plan; //执行计划result->rtable = glob->finalrtable;result->resultRelations = glob->resultRelations;… return result;}仍然以前文的join列子来说明SELECT * FROM t1 inner JOIN t2 ON t1.c1 = t2.c1;在planner函数打断点,用gdb查看standard_planner返回的PlannedStmt(gdb) bt#0 planner (parse=0x7fd93a410288, cursorOptions=0, boundParams=0x0) at planner.cpp:389#1 0x0000000001936fbd in pg_plan_query (querytree=0x7fd93a410288, cursorOptions=0, boundParams=0x0, underExplain=false) at postgres.cpp:1197#2 0x0000000001937381 in pg_plan_queries (querytrees=0x7fd939b81090, cursorOptions=0, boundParams=0x0) at postgres.cpp:1315#3 0x000000000193a6b8 in exec_simple_query (query_string=0x7fd966ad2060 "SELECT * FROM t1 inner JOIN t2 ON t1.c1 = t2.c1;", messageType=QUERY_MESSAGE, msg=0x7fd931056210) at postgres.cpp:2560#4 0x0000000001947104 in PostgresMain (argc=1, argv=0x7fd93a2cf1c0, dbname=0x7fd93a2ce1f8 "postgres", username=0x7fd93a2ce1b0 "test") at postgres.cpp:8403#5 0x0000000001890740 in BackendRun (port=0x7fd931056720) at postmaster.cpp:8053#6 0x00000000018a00b1 in GaussDbThreadMain<(knl_thread_role)1> (arg=0x7fd97c55c5f0) at postmaster.cpp:12181#7 0x000000000189c0de in InternalThreadFunc (args=0x7fd97c55c5f0) at postmaster.cpp:12755#8 0x00000000024bf7d8 in ThreadStarterFunc (arg=0x7fd97c55c5e0) at gs_thread.cpp:382#9 0x00007fd9a60cfdd5 in start_thread () from /lib64/libpthread.so.0#10 0x00007fd9a5df8ead in clone () from /lib64/libc.so.6(gdb) p *result$14 = {type = T_PlannedStmt, commandType = CMD_SELECT, queryId = 0, hasReturning = false, hasModifyingCTE = false, canSetTag = true, transientPlan = false, dependsOnRole = false, planTree = 0x7fd93a409d58, rtable = 0x7fd939b81660, …}(gdb) p *result->planTree->lefttree$46 = {type = T_SeqScan, plan_node_id = 2, parent_node_id = 1, exec_type = EXEC_ON_DATANODES, startup_cost = 0, total_cost = 1.03, plan_rows = 3, multiple = 1, plan_width = 8,…}将Query规划后得到PlannedStmt可以看到,Plannedstmt 与explain执行计划是一致的
-
Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。操作步骤步骤 1 下载客户端GaussDB驱动程序并进行安装: 下载地址:cid:link_0 在本地(例如D:/download)下载ZIP文件后进行解压缩,解压缩后文件如下。由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:点击psqlodbc_x86.msi进行安装:默认设置,直到安装完毕。步骤 2 打开驱动管理器。 在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其他盘符,请对路径做相应修改): 64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:C:\Windows\System32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > ODBC 数据源(64 位)。步骤 3 配置数据源。 在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode(x64)”,然后进行配置:Data Source:openGauss (数据源名称,可以自定义)。Database:postgres (需要连接的Datebase名称)。Server:openGauss数据库服务器的公网IP,请根据实际情况填写。Pot:26000 (端口号)。User Name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)Password:dbuser用户的密码,请根据实际情况填写。步骤 4 验证并保存设置。点击Test,显示 Connection successful 表示设置成功:点击保存:配置成功!
-
Gauss松鼠会2021年度盘点 时光似箭,岁月荏苒,转眼,已告别2021年进入了2022年。在过去的一年中,Gauss松鼠会举办了很多活动,非常感谢大家一直以来的支持与鼓励。打开2021年的记忆,让我们一起回顾过往,砥砺前行!2021年,Gauss松鼠会联合合作伙伴(openGauss社区、CCF数据库专委会、云和恩墨、海量数据等)、技术专家、热心会员,发展关注者2.1万人,通过大咖讲堂、论文分享、高校课堂、技术群英会、走进高校、走进企业、活动竞赛、技术宣传等栏目的运作,全年开展直播60余期,观看总人气值340000+。开展openGauss知识问答、技术文章征集、实训打卡、训练营等活动,贡献openGauss相关技术文章/学习心得3300+篇。Gauss松鼠会与openGauss社区、墨天轮社区、其他多家企业合作,培训openGauss/GaussDB DBA 2600+。2021年,Gauss松鼠会在微信公众号、B站两个运营平台的基础上,先后在CSDN、开源中国、墨天轮、知乎、微博、头条、贴吧等开设Gauss松鼠会专栏,全年各平台总阅读/播放量143万次。作为智能基座数据库课程的支撑平台,Gauss松鼠会在2021年为复旦、人大、西交大、哈工大等50余所高校分别建立Gauss数据库课程微信交流群,并持续进行群内答疑,答疑总数3500+。走进高校21次,面向高校线上线下授课32次,支撑openGauss/GaussDB课程在全国66所高校开课,覆盖学生2.1万余人。此外,Gauss松鼠会也活跃在各种技术顶会中。2021年4月Gauss松鼠会携手多位专家大咖亮相华为开发者大会2021(Cloud),并吸引了800+数据库爱好者加入到Gauss松鼠会技术圈。6月,Gauss松鼠会作为华为公司参加SIGMOD大会的协作机构,全程投入到华为参会的支撑工作中,6月21日的SIGMOD“企业数据库技术和生态发展”研讨会通过线上10个平台进行直播,合计观看人气值达到125000+。HDC、NDBC等大会,Gauss松鼠会均进行相关直播和跟踪报道。· Gauss松鼠会运营团队还推出了酷哥说库相关系列科普资料,包括酷哥说库微动画系列、玩转openGauss系列等,并以酷哥角色在知乎、CSDN等平台发表技术文章、答疑。2021年底,Gauss松鼠会开始推出技术之声栏目,帮助数据库爱好者快速了解每周数据库资讯。接下来,让我们一起走进Gauss松鼠会2021年的精彩回顾~栏目&平台运营——多元化渠道建设,全方位推广宣传Gauss松鼠会栏目建设大咖讲堂Gauss松鼠会邀请各高校教授或者企业数据库专家分享数据库前沿技术,全年开展6期大咖讲堂活动。论文分享由高校教授、企业工程师、在校学生对数据库论文进行解读和交流。全年开展12期论文分享活动。高校课堂面向高校学生,推出线上系列课程,组织专家走进高校现场授课。全年开展高校课堂21期。技术群英会Gauss松鼠会携手CCF数据库专委会,共同打造中国数据库战略研讨系列主题论坛。全年开展研讨论坛8次。走进高校Gauss松鼠会携手技术专家走进高校,面对面与师生交流,分享数据库前沿知识、组织开展沙箱实验等实践活动。全年开展走进高校活动21次。走进企业为满足合作伙伴对Gauss数据库深度学习的需求,Gauss松鼠会特邀华为数据库专家,在线为大家带来系列直播课程。全年开展走进企业活动7次。行业大会宣传推广数据库相关会议,并对各大会进行线上直播及现场支撑等。SIGMOD、HDC、HC、NDBC上均能看到Gauss松鼠会的身影。活动竞赛Gauss松鼠会联合合作伙伴(openGauss社区、CCF、华为云、云和恩墨等)共同组织开发者大赛、知识问答、技术文章征集、资料捉虫、线上实训GaussDB挑战赛等活动,让参与者在实践中掌握数据库技能。技术宣传Gauss松鼠会持续推出openGauss数据库核心技术、源码解析及openGauss特性、功能介绍等技术文章,为openGauss使用者提供借鉴和参考。Gauss松鼠会平台运营Gauss松鼠会公众号于2020年10月份注册,2021年发布数据库技术及相关文章/活动宣传 327篇,粉丝8000+。 CSDN Gauss松鼠会专栏自2021年4月份开通,截止日前,发表文章/视频 225篇,粉丝12000+,累计访问量290000+。CSDN Gauss松鼠会社区发表文章333篇。Gauss松鼠会B站2021年全年直播60余场,剪辑上传视频162个,粉丝4000+。Gauss松鼠会知乎平台于2021年4月开通,发表文章/问答/视频 368篇/个,累计阅读/播放量 270000+。 此外,Gauss松鼠会在openGauss官网、墨天轮、开源中国、微博、头条、百度贴吧等平台发布文章/视频/活动宣传1000+篇/次。数据库技术传播——分享数据库前沿知识,共建数据库技术圈分享数据库前沿知识,共建数据库技术交流圈,是Gauss松鼠会成立的一个重要使命。为此,Gauss松鼠会先后开设大咖讲堂、论文分享、技术群英会等栏目,邀请大学教授、企业专家、CCF数据库专委会大咖等为大家带来线上直播分享。2021年,Gauss松鼠会共举办【大咖讲堂】6期,【论文分享】12期,【技术群英会】8期,推出【技术之声】4期。 Gauss松鼠会【大咖讲堂】天津大学王鑫教授:知识图谱数据管理在openGauss上的设计与实现复旦大学汪卫教授:工业大数据分析和管理技术应用西安电子科技大学李辉教授:密态数据查询处理的若干进展与思考中南大学奎晓燕教授:数据库前沿技术及展望东北大学杨晓春教授:高维数据的近似最近邻搜索及其在跨模态检索中的应用清华大学李国良教授:数据库发展趋势与挑战【大咖讲堂】栏目由Gauss松鼠会邀请各高校专家大咖围绕“数据库”进行前沿知识分享。Gauss松鼠会【论文分享】华为高级工程师潇潇雨歇:引领未来图查询语言的发展方向华为高级工程师鬼蓝:图数据库模型的历史及演进华为高级工程师南淮:OpenCypher Graph Query在关系代数中的映射华为高级工程师海舟:PGQL:A Property Graph Query Language新加坡国立大学计算机学院的硕士研究生葛泽睿:FoundationDB : A Distributed Unbundled Transactional Key Value Store华为工程师陈陈陈:SALSA : Self-Adjusting Lean Streaming **ytics华为工程师晗轩:DyCuckoo : Dynamic Hash Table on GPUs清华大学博士山水:Paxos算法及相关论文分享华为工程师木木:并发系统的形式化验证华为工程师小机灵:A Critique of ANSI SQL lsolation Levels华为工程师YHR:Main Memory Database Systems华为工程师木子:Rethink the Scan in MVCC Databases【论文分享】栏目由Gauss松鼠会邀请企业专家、在校学生等对专业论文进行在线解读。12期论文分享分别在Gauss松鼠会B站及Gauss松鼠会 CSDN直播间同步直播。Gauss松鼠会【技术群英会】CCF中国数据库战略研讨主题论坛—图数据管理和知识图谱前沿进展CCF中国数据库战略研讨主题论坛—数据库系统前沿进展CCF中国数据库战略研讨主题论坛—大数据分析CCF-数据库前沿战略研讨会议CCF中国数据库战略研讨主题论坛—云数据库中国数据库战略研讨系列主题论坛—数据科学中国数据库战略研讨系列主题论坛—时空大数据中国数据库战略研讨系列主题论坛—数据库系统【技术群英会】栏目由Gauss松鼠会携手CCF中国数据库专委会共同打造。8期主题报告,分别在腾讯会议、Gauss松鼠会B站及Gauss松鼠会 CSDN直播平台进行直播。累计人气值33000,平均人气值4100+。【技术之声】 是Gauss松鼠会公众号与2021年底新增开设的栏目,此栏目面向数据库技术圈,由酷哥主导,通过收集、整理数据库及数据库相关行业咨讯,从而帮助读者快速获取最新前沿资讯。2021年12月20号,第1期正式发布。本栏目将陆续同步到“CSDN-社区、知乎-酷哥、开源中国、百度贴吧、鲲鹏社区、hi3数据库社区”等平台。截止目前已经顺利推出4期。【技术之声】第一期(20211220)一周精选【技术之声】第二期(20211227)一周精选【技术之声】第三期(20220103)一周精选【技术之声】第四期(20220110)一周精选数据库系列微动画 2021年,Gauss松鼠会团队制作并输出openGauss系列微动画4期,分别为:什么是NUMA? 什么是自适应压缩?AGC 云数据库及数据库的AI能力。四期视频分别在Gauss松鼠会B站、酷哥知乎平台、CSDN Gauss松鼠会博客及Gauss松鼠会视频号、西瓜号等多个平台发布。Gauss松鼠会知乎平台Gauss松鼠会知乎平台自2021年4月份开通,发表文章/问答/视频 368篇/个,累计阅读/播放量 270000+。其中知乎-酷哥账号发布了数据库相关原创问答100篇,原创视频12个,技术文章42篇,累计阅读/观看 90000+次。吸引数据库技术相关粉丝3200+。行业大会 2021年4月,Gauss松鼠会携手多位专家大咖亮相华为开发者大会2021(Cloud),并吸引了800+数据库爱好者加入到Gauss松鼠会技术圈。大会期间,华南师范大学&Gauss松鼠会联合出品并举办了线下openGauss高校训练营,华为云数据库和Gauss松鼠会联合承办的“第三届华为云GaussDB数据库挑战赛”盛大启动。开发者大会2021(Cloud)依托智能基座高校、产业云基地、鲲鹏创新中心、昇腾创新中心等联合举办多个线下分会场,其中,由Gauss松鼠会携手各openGauss布道师参与的有六个分会场。分别为北京理工大学分会场、电子科技大学分会场、南开大学分会场、威海分会场、杭州电子科技大学分会场、武汉理工大学分会场。2021年6月,Gauss松鼠会作为华为公司参加SIGMOD大会的协作机构,全程投入到华为参会的支撑工作中,6月21日的SIGMOD“企业数据库技术和生态发展”研讨会通过线上10个平台进行直播,合计观看人气值达到125000+。现场与会者包括来自国内学术界及产业界的专家在内约170人。SIGMOD大会结束后,Gauss松鼠会联合华为西安研究所举办了SIGMOD高校师生走进华为活动。30余名高校师生(分别来自中国人民大学、哈尔滨工业大学、北京交通大学、武汉大学、天津大学、西北工业大学、西安电子科技大学、湖南大学、华东师范大学等高校)应邀参观了华为西研所OpenLab,并进行座谈交流。 2021年9月,华为全联接2021大会在线上盛大举行。大会期间,Gauss松鼠会各平台进行了宣传报道并总结了大会期间Gauss数据库参会的8大亮点:智能基座教辅教材及慕课发布、openGauss内核特性重大升级、openGauss社区理事会正式成立、GaussDB推出重大内核新特性、openGauss联动五大高校分会场、openGauss助力企业高效管控数据资产、GaussDB助力金融行业数字化转型、openGauss/GaussDB线上展厅。 2021年12月,NDBC 2021圆满召开,华为携手数据库领域专家亮相大会,为广大与会者带来深度分享,主要包括CCF-华为数据库创新研究计划论坛、数据库产业论坛、数据库系统人才培养论坛等。Gauss松鼠会对本次大会进行线上直播及线下活动支撑。Gauss数据库推广——举办各类线上活动,助力Gauss数据库生态建设 openGauss知识问答活动Gauss松鼠会分别于2021.5.11—2021.6.8、2021.11.18—2021.12.8两个时间段,成功举办第二届和第三届【openGauss知识问答活动】。两次活动共吸引2300+高校师生及数据库爱好者积极参与。此活动推广宣传了openGauss数据库,扩大了openGauss在高校及数据库技术圈的影响力。openGauss技术文章征集活动在2021.6.9—2021.7.10、2021.11.11—2021.12.24两个时间段,Gauss松鼠会联合墨天轮社区及openGauss社区举办了第二届、第三届【openGauss技术文章征集活动】。两次活动共征集openGauss相关技术稿件374篇。为openGauss从业者及爱好者提供了施展才华的平台。openGauss资料捉虫活动2021.8.4—2021.10.31,Gauss松鼠会举办了为期三个月的【openGauss资料捉虫活动】本次活动旨在提高大家参与openGauss开源社区贡献的积极性,主动提交有效的问题(Issue)或修改方法(PR,Pull Request)。本次活动共计105人参与,同时提交Issue和PR人数为89人,合计提交Issue 1283个,PR 1064个。openGauss在线实训课程2021.12.1—2.21.12.31,Gauss松鼠会联合墨天轮社区、openGauss社区共同推出《每日一练:openGauss在线实训课程》。本次活动共吸引357位openGauss数据库关注者及爱好者积极参与,其中123位参与者通过结业考试,并获得由openGauss颁发的结业证书。一个月的时间,共收到来自参与者发布的2593篇作业文章。本次活动满足众多开发者对系统化实操课程的浓厚兴趣,同时进一步扩大了openGauss的影响力。 GaussDB挑战赛2021年8月—9月,华为云数据库和Gauss松鼠会联合承办“第三届华为云GaussDB数据库挑战赛”顺利举行。本次比赛以GaussDB分布式数据库相关特性为重点课题,比赛共吸引11860位选手热情参与,组成1123个参赛团队披荆斩棘,1036支团队晋级复赛,最终10支团队在这场激烈的角逐中脱颖而出,斩获终极大奖。Gauss松鼠会2021年度奖项评选2021年12月,为感谢一年来各位技术专家、Gauss数据库关注者的积极奉献、推广,Gauss松鼠会启动2021年度奖项评选活动。此次活动通过自荐提名与推荐共90余人参与评选。其中,【金牌讲师】评选增加了大众投票环节,中南大学奎晓燕教授以1480票直接入选,另一位金牌讲师获得者为东北大学杨晓春教授。除金牌讲师外,经过自荐提名与推荐、专家组评审,最终评出【热心专家】3人,【推广大使】2人,【优秀会员】10人。玩转openGauss系列视频 玩转openGauss系列视频是一个实际操作录屏系列课程。通过在真实数据库环境上各种数据库功能的具体操作,引导用户把学习到的理论知识和具体操作结合起来,帮助用户在数据库中进行实践,真正掌握各项能力。 2021年先后推出数据类型、连接数据库、用户和权限管理及事务管理四期视频,在B站和Gauss松鼠会公众号两个平台进行推广的。2021年11月11日,云和恩墨创始人盖国强老师,和openGauss总架构师李国良教授,为大家带来了在线研讨《Oracle Database 21c vs openGauss 2.0新特性解读和架构演进》,并对数据库技术演进和生态发展进行深入探讨。两位老师一共围绕10个特性作了深入、独到的解读,强强联手、共创了一场精彩的技术盛宴。当天的直播间吸引了2600余人次观看。 2021年11月5日,华为数据库技术专家 李士福老师受邀参加数据技术嘉年华·ON LINE (第二期)活动,与云和恩墨SQL优化专家 师庆栋、腾讯云数据库专家 雷尚顺、人大金仓解决方案专家 宋昊及京东科技智能运维算法负责人 张静等众多行业知名专家一起进行线上分享。2021年12月30日,由华为数据库技术专家、openGauss社区技术委员会(TC )成员周平高老师、华为高斯实验室AI模块负责人、openGauss布道师王天庆老师、云和恩墨PG技术顾问彭冲老师、云和恩墨北区服务总监高云龙老师,共同为大家带来线上主题分享《openGauss与PostgreSQL核心技术解读及优势对比》。当天的直播间吸引了2200余人次观看。openGauss Meetup 2021年,5月、6月、7月,由openGauss社区主办,各合作伙伴和Gauss松鼠会联合举办的【北京】【西安】【长沙】openGauss Meetup”活动先后举行。三场活动吸引110余家企业专家和开发者踊跃参加,在线观看累计17000+次。 其中openGauss Meetup【北京站】吸引了来自北京地区各个行业的42+家企业的近百名专家和开发者踊跃参与,在线观看超过5000人次,并正式成立openGauss北京用户组。openGauss Meetup【西安站】吸引了西安地区各个行业的40+家企业的近百名专家和开发者踊跃参与,在线观看超过6000人次,并在会上正式成立openGauss西安用户组。openGauss Meetup【长沙站】吸引了长沙地区各个行业的35家企业相关专家和开发者踊跃参与,在线观看超过6000人次,并邀请湖南大学、中南大学等数据库领域教研先锋、普元信息等企业成员加入长沙用户组。12月28日,主题为”汇聚数据库创新力量,逐梦数字时代星辰大海“的openGauss Summit 2021圆满举办,Gauss松鼠会双平台直播,线上直播观看人气值4800+。openGauss 技术宣传2021年,Gauss松鼠会公众号共推出openGauss数据库核心技术、openGauss数据库源码解析、openGauss相关技术文章100余篇,下面仅列举部分技术文章。如何使用pgloader迁移MySQL数据库至openGauss如何使用pg_chameleon迁移MySQL数据库至openGauss解密openGauss DB4AI框架的内部机理DB4AI:使能数据库原生AI计算,助力数据湖场景业务成功深度干货!openGauss日志共识框架大揭秘openGauss 2.1.0 正式发布!持续构建企业级四大特性Ustore在openGauss闪亮登场,重构openGauss数据存储的灵魂全密态黑科技再升级,无感知加解密原理剖析一文汇总全密态数据库的基本使用方法解决文件存储难题 openGauss隆重推出段页式特性一键部署openGauss2.1.0[CentOS 7.6]openGauss升级脚本撰写高校教学支撑——助力产教融合,夯实数据库产业人才基座为更好的支撑openGauss/GaussDB数据库在各高校的落地实施,让高校师生对Gauss数据库能够快速入门,进而深入学习,Gauss松鼠会特开设【高校课堂】专栏。Gauss松鼠会【高校课堂】2021年,openGauss社区技术委员会主席田文罡老师为大家带来openGauss内核开发课程之openGauss 体系结构介绍、openGauss 关键技术实现。两期内核开发课程直播人气总值22000+,平均人气值11000+。 华为数据库高级讲师贾军锋老师为大家带来【轻松上手openGauss系列课程】21期:分别为 轻松上手openGauss[大学生篇] 7期、轻松上手openGauss[DBA篇] 7期、轻松上手openGauss[程序员篇] 7期。Gauss松鼠会【走进高校】在教育部-华为“智能基座”产教融合、协同育人项目的背景下,华为拟在数据库、操作系统、智能计算、移动应用开发等方向,支持高校人才培养和专业综合改革,为构建基于国产“鲲鹏”、“昇腾”芯片基础的全球新计算产业链生态体系培养人才。 为此,2021年,Gauss松鼠会先后走进华南师范大学、西安工业大学、中山大学、宁夏大学、宁波大学、合肥工业大学、南京航空航天大学、安徽大学、山东大学、华南理工大学、江南大学、昆明理工大学、深圳大学、南方科技大学等21所高校。吸引线下参与师生累计4500+。 其中,2021年6月,由华为技术有限公司主办,由合肥工业大学计算机与信息学院(人工智能学院)及Gauss松鼠会协办的走进高校活动,吸引该校570多位师生现场参与。2021年6月,Gauss松鼠会面向华南理工大学及其他高校推出openGauss内核开发课程,B站Gauss松鼠会直播间人气值高达1.2万。作为智能基座数据库课程的支撑平台,Gauss松鼠会在2021年共为复旦、人大、西交大、哈工大等50余所高校分别建立Gauss数据库课程微信交流群,并持续进行群内答疑,答疑总数3500+。openGauss 微认证面向对openGauss数据库感兴趣的高校师生,为了让大家掌握在金融场景下,数据库的设计思路以及openGauss数据库的基本使用,openGauss微认证--《openGauss数据库在金融领域的使用实践》应运而生。该认证自7月底正式上线华为云,高校师生可申请全额代金券。截止2021年12月,各高校师生领取代金券1737张,已有1438人进行了微认证考试。openGauss 创新实践课2021年,openGauss创新实践课先后走进兰州大学、北京理工大学、广东工业大学、电子科技大学,将openGauss带进课堂。在两天的课程中,各专家以理论和实践相结合的方式,让在校学生循序渐进地了解、掌握、熟练使用 openGauss 开源数据库,掌握openGauss的使用及特性。CCF走进高校CCF走进高校系列活动由CCF中国数据库专委会主办,各高校承办,Gauss松鼠会协办。分别于2021年5月、10月、12月,走进宁夏大学、南京航空航天大学、昆明理工大学,进行线下技术分享。Gauss松鼠会B站和CSDN直播间全程直播,三场走进高校活动直播人气值累计10000+,平均单场直播人气值3300+。CCF数据库专委会走进高校—宁夏大学站CCF数据库专委会走进高校—南京航空航天大学站CCF数据库专委走进高校—昆明理工大学站用户培训——多次举办线上培训,助力Gauss数据库人才培养8小时玩转openGauss训练营2021年 3月27—28日、9月11-12日,由Gauss松鼠会联合openGauss社区、云和恩墨共同推出的第一期、第二期【8小时玩转openGauss训练营】,通过线上直播的方式顺利举行。两次报名总人数1642人,在线观看2858人,顺利结营167人,活动总浏览量10000+。 两期活动分别由openGauss社区技术委员会主席、openGauss首席架构师田文罡老师及openGauss布道师朱金伟老师领衔。各位专家讲授了各自领域高质量的技术干货,内容十分丰富,并结合实践作了细致讲解,获得了学员们的一致好评。走进企业系列直播课程2021年8月—10月,应合作伙伴的邀请,为满足大家对Gauss数据库深度学习的需求,Gauss松鼠会特邀华为数据库专家,在线为大家带来【走进企业】系列直播课程。此次线上培训课程共计五期,在线直播观看总人气值10000+,平均每期人气值2000+,五期的主题分别是:华为数据库专家大胖锅老师:Gauss数据库的vacuum机制华为数据库专家周平高老师:GaussDB线程探究华为数据库专家壹佰老师:openGauss日志复制组件-DCF介绍华为数据库专家李强老师:Gauss数据库In-place Update 储存引擎(Ustore)华为数据库专家云梦泽老师:Gauss数据库段页式机制探究|GaussDB精品课本课程是由华为云数据库联合Gauss松鼠会推出的GaussDB系列技术视频,该视频每期围绕1个主题内容,详解1个业务难题。通过这些视频的学习, 将获得新一代金融级分布式数据库GaussDB的前沿架构原理和先进功能特性。课程自2021年8月份推出以来,至今共推出23期,发布在GaussDB及Gauss松鼠会公众号、B站、知乎及西瓜号等平台,总播放量60000+次,平均单个视频播放2600+。【第1期】GaussDB数据库,打造自研世界级产品【第2期】GaussDB数据存储与访问【第3期】GaussDB配套工具介绍【第4期】数据导入导出介绍【第5期】数据复制服务DRS【第6期】数据库和应用迁移UGO服务【第8期】数据库设计之SQL介绍【第9期】数据库设计之SQL优化【第10期】性能指标和性能调优【第11期】GaussDB数据库实例运维监控【第12期】GaussDB备份与恢复【第13期】GaussDB升级介绍【第14期】GaussDB在线扩容【第15期】GaussDB数据字典【第16期】GaussDB分布式执行引擎【第17期】GaussDB分布式事务【第18期】GaussDB热补丁【第19期】GaussDB安全管理(上)【第20期】GaussDB安全管理(下)【第21期】GaussDB异地双活【第22期】GaussDB基于JDBC开发【第23期】GaussDB基于ODBC开发2021年,是耕耘的一年,是收获的一年,Gauss松鼠会各活动的顺利举办离不开各位专家的技术支持、讲师的无私分享,更离不开关注者的积极推广和广大会员的参与,在此向所有Gauss松鼠会技术圈的伙伴们表示诚挚的感谢! 2022年,Gauss松鼠会将再接再厉,继续为大家提供更精彩的内容,更丰富多样的活动~2022年,Gauss松鼠会将和大家一起成长,学习、探索、分享数据库前沿知识,共建数据库技术交流圈!
上滑加载中
推荐直播
-
空中宣讲会 2025年华为软件精英挑战赛
2025/03/10 周一 18:00-19:00
宸睿 华为云存储技术专家、ACM-ICPC WorldFinal经验 晖哥
2025华为软挑赛空中宣讲会重磅来袭!完整赛程首曝+命题天团硬核拆题+三轮幸运抽奖赢参赛助力礼包,与全国优秀高校开发者同台竞技,直通顶尖赛事起跑线!
即将直播
热门标签