当前位置: 首页 > 编程日记 > 正文

Uber 前无人驾驶工程师告诉你,国内无人驾驶之路还要走多久?

受访者 | Graviti 创始人&CEO 崔运凯

记者 | Aholiab,编辑 | Carol

出品 | AI科技大本营(ID:rgznai100)

经过数年的发展,现在的人们谈到“AI”已经不再像过去一般感到遥不可及。但 AI 在国内发挥的作用仍然只是冰山一角,许多应用依旧没有落地,产业链等待完善,国内 AI生态的发展还需要一定的时间。

“2018 年我刚回国创业,想要做机器学习的模型,但找遍整个市场,都找不到一家满意的供应商。”AI 数据SaaS提供商 Graviti 创始人崔运凯告诉记者。

崔运凯毕业于上海交通大学与美国宾西法尼亚大学,曾是 Uber 无人驾驶部门的Tech Lead Manager ,属于该部门最早一批员工。2018 年,崔运凯从 Uber 离开,回国后却发现,国内不仅无人驾驶行业进度缓慢, AI 产业链也非常不完善,这给许多AI 创业公司带来非常大的挑战。

发现了行业在这部分的需求和空白后,2019 年,崔运凯正式创办了Graviti,致力于帮助人工智能开发者更好地管理和使用数据,通过涵盖数据全生命周期的一站式AI数据服务SaaS平台,加速数据在供需方之间的流通,为人工智能行业赋能。团队也吸引到了哈佛,UT Austin,密歇根大学以及国内上海交大、复旦、同济等一流高校的人才。

从 Uber 无人驾驶部门的Tech Lead Manager,到国内人工智能行业数据服务商,崔运凯见证了无人驾驶行业的崛起和发展,也对 AI 行业有着独到的见解。近日,CSDN记者采访了崔运凯,跟随着他的技术成长生涯,一起来听听他对无人驾驶与国内 AI 行业现状的理解。

Graviti创始人&CEO 崔运凯

因一个”秘密项目“,正式踏入无人驾驶的大门

CSDN:请简单介绍下你的个人经历? 

崔运凯:2012 年,我到了美国宾西法尼亚大学学习。2014 年毕业后留下来当了一年助理研究员,但发现这不是自己的兴趣所在,在一次机缘巧合的机会下,我后来在Uber的老板给我打来了一个电话,说他们在匹斯堡做一个秘密项目,我飞到了匹斯堡一看,原来是在做无人驾驶。

当时的老板是 CMU(卡耐基梅隆大学) 的一位教授,他离开 CMU 后加入的 Uber 。看完项目,临走前我问他为什么会加入 Uber ?他对我说了一句话让我至今为止都非常印象深刻:“ It's a once in a lifetime opportunity“。他认为这种改变世界的机会可能一生也遇不到一次,所以就加入了。我也深受他的感染和影响,所以在 2015 年就加入了 Uber 做无人驾驶的事情。

加入Uber 时,Uber 还算很早期的时候。50 多号人在一个废弃的工厂楼里办公,像一个创业公司一样,后来至少搬过 4 个办公点,见证了它的成长。2018 年 5 月我离开时,公司已经将近 1500 多人。

CSDN:在 Uber 时你主要负责的内容是哪些?

崔运凯:我是在 2017 年 2 月份时被提拔上了 Tech Lead的,带领一个小的工程师团队去做高精度地图的规模化生产,尤其是用 AI 算法来辅助人工实现规模化的生产。因为当时高精度地图是无人驾驶中比较重要的一部分。如何能快速升级和生产地图,是当时无人驾驶的厂商比较重要的需要攻克的难题,当时也有幸参与了整个过程

2018 年离开了美国,2019 年 4 月时创立了 Graviti。Graviti比较幸运的是,在 2019 年资本市场不是很热闹的情况下,获得了包括红杉资本、云启资本、真格基金、风和投资的投资,还是特别感激大家对我们的支持。

无人驾驶技术的发展

CSDN:很多人在刚开始职业生涯的时候会选择偏向互联网应用的大公司耕耘,你为何会选择自动驾驶领域来攻坚?有什么吸引你的地方?

崔运凯:关于谷歌和百度做无人驾驶的问题,我们可以回顾 2015 年初,那时候还没有Waymo这家公司,当时谷歌的无人驾驶叫 Google X,整个 X 部门都是做无人驾驶的研究员,人数大概不到100 人,所以只是谷歌内部的一个部门。而Waymo 成立到组建其实已经是 2016年、2017 年的事情,当时 Google 并没有严肃地将它作为一个主要的商业业务去思考。同理,百度也有很多战略业务,无人驾驶只是他们战略业务之一,百度有非常优秀的人才,但是更多的是把无人驾驶作为前沿的研究而非可以商业化的应用。

出行的基本原则满足的是人从 A 地点到 B 地点的诉求,实际上通过 Uber,打车、无人驾驶都可以满足,无人驾驶只是选项之一。而 Waymo这种纯粹的无人驾驶公司会面临一个问题:用户最初可能会因为新鲜感而选择尝试他们的服务,但长期看来,用户只是需要满足从 A 到 B 的需求,到后期追求的更多是便捷,所以还是会选择打车。但 Uber 的目标是:承认我的网络里包含了无人驾驶、有人驾驶这种混合的形态,永远以满足乘客从A到B的需求为优先。这样的商业模式在我看来才更可行。 

我之所以加入无人驾驶领域,是因为我发现无人驾驶实际上会涉及很多先进的技术,大大帮助知识层面的提升,需要学很多东西才能把无人驾驶做好,至少这部分是让我个人比较兴奋的,所以选择了无人驾驶这个方向。

CSDN:你认为无人驾驶的终极目标是「量产商用」,还是「应用普及」?中美技术的发展差异如何?

崔运凯:无人驾驶的形态有可能是长期的混合式的形态。因为在 2016 年 9 月时,Uber 为所有的匹斯堡的用户提供无人驾驶服务,每个人都有可能随机匹配到一辆无人驾驶车。我其实认为这已经是很好的无人驾驶商业化落地的方式了。

所以我认为,无人驾驶会以这种慢慢进入人们生活的方式,潜移默化地不断提高、迭代自己,通过与用户的交互体验来不断变得完美。是一个循序渐进的过程,不是一夜之间就被所有人接受。

从技术层面来说,我认为整体的无人驾驶技术还有挺长的一段路要走。美国的无人驾驶技术确实要比国内的领先很多,在市场应用、算法方面是差不多的,但实际上我们欠缺的是整个产业链上的提升,包括大量的人才积累、操作系统、硬件和芯片能力,也包括国家的一些政策等等,国内都有相对大的空白,有很大的空间可以去打开和探索。

让AI触手可及

CSDN:Graviti 诞生的经过是怎样的?

崔运凯:我在Uber从事无人驾驶研发的几年时间中,需要处理大量图像、点云等非结构化数据,并用这些数据训练算法。当时,Uber内部为了方便算法团队加快算法迭代效率,动用了很多资源开发了Michelangelo机器学习平台。很多有名的开源框架都诞生在这一过程中,包括Horovod。我碰巧作为最早的用户,看到了这个平台的成长,踩过的坑和积累的经验。而这样的投入对于一个初创的人工智能公司是不可想象的。而在获取真值方面,Uber不仅在印度有上千人的数据生产团队,还将部分数据的需求外包给位于西雅图的一家初创公司,除了要承受昂贵的价格,冗长的等待时间,还要面对海量数据的对接、跨境分发、检索、整理及增值数据的保存和使用等一系列难题。 

2018年离开Uber回国后,我加入了一家高精度地图初创公司担任合伙人,因高精度地图研发需要收集海量数据并训练大量模型,为了管理和使用这些数据,我们一直在寻找类似于Michelangelo的平台。我们找了各种各样的供应商,甚至包括多家国内头部云服务商,可是没有一家可以满足我们的需求,在那个瞬间感觉特别无助。 

当时我意识到无论是国内还是国外,人工智能研发的整个工具链都处于非常早期阶段而且不完善。如果我们再做一家人工智能公司,还会遇到同样的问题,还是要花很大代价把这些问题再解决一遍。后来我去找了很多在人工智能领域创业的朋友,发现他们也有同样的痛点。与其这样,不如专门做一家帮助开发者解决以图像、文字、视频为代表的非结构化数据管理和使用痛点的公司,让开发者从繁杂的数据管理中脱身,更好地将时间和精力集中在解决业务问题上。

我们希望所有的开发者都可以用到和大公司一样好用的工具,让人工智能不再遥远,我们创立Graviti就是肩负着这样的使命的。

CSDN:我们注意到Graviti的Slogan 是“让AI触手可及”,Graviti所面临的挑战是怎样的?难点在哪里?

崔运凯:这里我们先来区分一下结构化数据和非机构化数据。日常数据可以分为由程序生成的结构化数据与以视频、图像、文字为代表的非结构化数据。平日里大家接触到的数据处理大部分是针对结构化数据的处理,比如Excel表格,数据库等。而人工智能面对的更多是图像、文字、视频等非结构化数据。这些数据所占用的存储资源及处理难度是结构化数据的几百万倍甚至是几亿倍

举个例子,Excel表格中100条数据只有几KB大小,但是一个图片可能需要几MB的空间,而一个视频则需要几百MB的空间。这很直观的展现了结构化数据和非结构化数据在数量级上的对比。处理一个Excel表格和几张图片都是相对简单的任务,基本在个人电脑上都可以处理。但是AI要处理的任务可能是上百万个几百MB的视频,这里程序所面临的挑战和所需要耗费的存储和算力成本可想而知。全世界每天产生亿万量级的非结构化数据,是否能有效地处理好利用好这些数据,决定了人工智能的发展进程。

Graviti希望通过高效调度大量的算力及存储,利用大规模分布式并行化技术,打造一站式的创新解决方案,帮助解决非结构化数据从获取、管理、加工到使用的完整数据旅程中所面临的问题,这也是我们的价值所在。

CSDN:Graviti提供怎样的产品?又是如何解决开发者的痛点的?

崔运凯:大家猜猜支持一个10人算法团队高效运转需要多少资源?我们通过深度调查发现,至少要三个软件工程师提供工具开发和运维服务,需要配置百万元左右的深度学习训练机器,及百人左右的标注团队和上百TB到PB级的共享存储空间。这些加起来往往需要花掉企业千万级前置成本和百万级的维护费用。即使这些都具备,算法工程师还要将大量的时间花在找数据,清理数据,管理权限和可视化上,真正用于算法开发的时间屈指可数。

针对这个情况,Graviti提供了面向开发者的SaaS工具,集数据集管理,沙箱训练和模型评估于一体。打通数据在人工智能应用开发的各个环节中的流转。让企业0前置成本启动人工智能应用开发项目,后期费用跟随团队的扩张而增加、收缩而减少,让开发者真正专注在重要的事情上。

比如我们与淞泓智能的合作,就使用了我们的数据管理系统和模型评估系统,甚至包括模型管理系统,并为它搭建了一套在线测试平台,让它更好地去测试未来无人驾驶车辆的系统安全性;在伯克利(UC Berkeley)的合作中,也是通过我们的数据管理平台、评估系统,为其搭建了一个平台用来支持他们面向世界级的顶级学术人员和开发者发布的挑战赛,这样大家可以更好地促进相关技术的发展。

针对开发者对于真值数据的需求,Graviti提供了基于SaaS的标注服务。和其他标注公司不一样的是,我们的数据标注服务是一键式的。国内的标注公司通常是先联系BPO(商务流程外包Business Process Outsourcing),在线下的微信群里对接需求,发数据文档,他再去联系标注员,而很多标注员可能是第一次接触这样的任务,也没有特别适用的工具。但是在我们的体系里,所有对接都是在软件中交互完成,分发程序有一套算法,会自动找到最合适的标注员,通过发现任务、自主登录、接受培训考试去完成这样的工作。整个过程都是自动化的,效率和准确率都有很大的提升。我们会针对客户的业务情况做咨询,很多客户是做不到明确架构需求的,这时候就需要有人来从专业角度做梳理和设计,这也是我们服务的独特性所在。

我们也将在未来的一定时间点考虑开源我的软件或是去做开放平台,和更多合作伙伴做生态上的整合,协同解决更多AI问题,打造像Github一样被开发者喜爱的平台。

AI 只是个工具,不要太迷信 AI

CSDN:除了汽车领域之外,未来还会为其他行业或领域提供服务吗?

崔运凯:会的。汽车是目前的重点领域,毕竟在这个领域很多年了。而AI技术本身其实是通用的,我们做这套技术也是通用的,所以我们也在思考全球疫情蔓延的情况下,能否为医疗赋能,通过人工智能为人类健康做出自己力所能及的贡献。同时也希望能为互联网视频、新零售、智能制造、在线教育等领域智能化升级赋能。

CSDN:对于AI技术,你有什么想说的?

崔运凯:我认为,最重要的其实是「知其然也要知其所以然」。对于技术,开发者一定要不断向自己提问,不要满足于自己现有的知识,更多要问“为什么、可不可以做到更好”,发现一些新的方式加以创新,才能将 AI 这个技术用好。

另外,也希望所有的 AI 开发者不要太过于迷信 AI ,因为 AI 归根结底只是个工具,一个有价值的问题可能可以由多种不同的工具解决,AI 只是其中一种。所以用最好的工具解决它最应该解决的问题才是大家应该追求的。

推荐阅读
  • 追忆童年,教你用Python画出儿时卡通人物

  • 如何用NLP辅助投资分析?三大海外机构落地案例详解

  • Gary Marcus:因果熵理论的荒诞和认知科学带给AI的11个启示 | 文末赠书

  • AI 终极问题:我们的大脑是一台超级计算机吗?

  • 借助大数据进行社交媒体营销,企业们得这么玩!

  • 力挺比特币的世界第2交易员:仅次于索罗斯,连续25年无亏损

你点的每个“在看”,我都认真当成了AI

相关文章:

oracle服务

OracleOraDb11g_home1ClrAgent服务,在网上查找到了资料 http://download.oracle.com/docs/cd/B19306_01/win.102/b14306/install.htm Configuring Extproc Agent Using Windows Service As part of Oracle Database Extensions for .NET installation, a Windows se…

B00009 C语言分割字符串库函数strtok

切割字符串是常用的处理。 这里给出一个使用函数strtok切割字符串的例子。 使用C语言的库函数strtok来切割字符串的好处在于,可以指定任意字符作为分隔符来切割单词。使用该函数,切割字符串的分隔符可以同时指定多个,放在一个字符串数组中。 …

WEB打印大全

1、控制"纵打"、 横打”和“页面的边距。 &#xff08;1&#xff09;<script defer> function SetPrintSettings() { // -- advanced features factory.printing.SetMarginMeasure(2) // measure margins in inches factory.SetPageRange(false, 1, 3) // ne…

漫画 | 程序媛小姐姐带你一次了解什么是排序算法

来源 | 小齐本齐封图 | CSDN 付费下载自视觉中国插入排序借用《算法导论》里的例子&#xff0c;就是我们打牌的时候&#xff0c;每新拿一张牌都会把它按顺序插入&#xff0c;这&#xff0c;其实就是插入排序。齐姐声明&#xff1a;虽然我们用打牌的例子&#xff0c;但是可不能学…

POJ 1207 The 3n + 1 problem

题目链接&#xff1a;http://poj.org/problem?id1207 题目大意&#xff1a;给你一个数x&#xff0c;规定一个函数F(x)&#xff0c;如果x为1则F(x)1&#xff0c;否则如果x是偶数&#xff0c;F(x)F(x/2)&#xff0c;x为奇数F(x)F(3*x1)计算给定x到变换到1的步数。 注意点&#x…

PopupWindow响应返回键的问题

假设情景是这样的&#xff1a;在一个Activity中弹出一个PopupWindow&#xff0c;要求在按返回键时关闭该PopupWindow。 如果该PopupWindow是无焦点的&#xff08;默认情况&#xff09;&#xff0c;那么可以在Activity中响应返回键&#xff08;onBackPressed&#xff09;&#x…

Unix / Linux世界里的4-2-1

Unix / Linux世界里的4-2-1 在Unix / Linux世界里&#xff0c;4代表可读( r )&#xff0c;2代表可写入 ( w )&#xff0c;1代表可执行 ( x ) 如果拥有7 421 的权限&#xff0c;即代表这个人可以对档案完全控制。 以0777为例&#xff1a; 去掉0&#xff0c;第一个7代表着拥有者…

深度学习概述:NLP vs CNN

作者 | Manish Kuwar译者 | 苏本如&#xff0c;责编 | 郭芮头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;以下为译文&#xff1a;当今&#xff0c;人工智能已经不仅仅是一个技术术语了。这项技术在过去十年的时间内几乎将其影响扩展到…

oracle 求A中不存在于B的记录

oracle 求A中不存在于B的记录 select * from a minus select * from b 是求A中不存在于B的记录select * from a union select * from b 是求A和B的DISTINCT的并集select * from a union all select * from b 是求A和B的冗余并集那么A和B的交集是什么函数来的?交集是 INTERSE…

正则表达式grep、egrep--already

第一式 grep是什么 #man grepgrep&#xff08;global search regular expression&#xff08;RE&#xff09;是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。UNIX的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令…

万字长文综述目标检测领域,你要的都在这里

来源 | AI专栏&#xff08;ID: pursue-Y-future&#xff09;目标检测是计算机视觉中的一个重要问题&#xff0c;近年来传统检测方法已难以满足人们对目标检测效果的要求&#xff0c;随着深度学习在图像分类任务上取得巨大进展&#xff0c;基于深度学习的目标检测算法逐渐成为主…

ASP.net随机数应用实例

家可能都用过Chinaren的校友录&#xff0c;不久前它的留言簿上加了一个防止灌水的方法&#xff0c;就是系统每次产生一个由随机的数字和字母组成的图片&#xff0c;每次留言必须正确地输入这些随机产生的字符&#xff0c;否则不能添加留言。这是一个很好的防止恶意攻击的方法&a…

PreferenceActivity是什么?

我们看到Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理&#xff0c;那么它是怎么保存数据的呢&#xff0c;如何创建PrefenceActivity的呢?创建Android项目&#xff0c;并添加一个pref.xml文件(先建一个xml名的Folder)。注意&#xff0c;这次选择的…

坑系列 --- 时间和空间的平衡

这是坑系列的最后一弹了&#xff0c;这篇文章非常长&#xff0c;希望你能看完&#xff0c;要是看完有很酣畅的感觉就最好了。这一篇的坑主要来说说架构中时间和空间的平衡吧&#xff0c;这里的时间指代比较广&#xff0c;可能是开发时间&#xff0c;但大部分指的是执行时间&…

C#中调用Windows API的要点

在.Net Framework SDK文档中&#xff0c;关于调用Windows API的指示比较零散&#xff0c;并且其中稍全面一点的是针对Visual Basic .net讲述的。本文将C#中调用API的要点汇集如下&#xff0c;希望给未在C#中使用过API的朋友一点帮助。另外如果安装了Visual Studio .net的话&…

线上直播丨Hinton等6位图灵奖得主、百余位顶级学者邀你群聊AI

Geoffrey Hinton等6位图灵奖得主亲临&#xff0c;百余位顶级学者邀请你加入群聊「2020北京智源大会」&#xff0c;深入系统探讨「人工智能的下一个十年」。自2009年深度学习崛起以来&#xff0c;第三波人工智能浪潮席卷全球&#xff0c;推动了新一波技术革命。在这波澜壮阔的11…

ServerSocket

ServerScoket 这个类用于与 Socket 进行通信。 在实例化ServerSocket 的时候&#xff0c;服务器相当于已经开始了&#xff0c;但是还需要通过socket来accept &#xff08;socket serverSocket.accept()&#xff09;以使服务器选择性与某一Client进行连接。如果有指定了允许连接…

NDK开发 - C/C++ 访问 Java 变量和方法

上一篇有提到 JNI 访问引用数组&#xff0c;涉及了 C/C 访问 Java 实例的方法和变量。虽然在之前的开发中&#xff0c;并没有用到 C/C 范围 Java 层数据&#xff0c;但是这部分内容还是很有用的。传送门&#xff1a;NDK开发 - C/C 访问 Java 变量和方法 C/C 访问 Java 层的方法…

在C#中应用哈希表(Hashtable)

一,哈希表(Hashtable)简述 在.NET Framework中&#xff0c;Hashtable是System.Collections命名空间提供的一个容器&#xff0c;用于处理和表现类似key/value的键值对&#xff0c;其中key通常可用来快速查找&#xff0c;同时key是区分大小写&#xff1b;value用于存储对应于key的…

俄罗斯自研Elbrus CPU参数曝光,CEO年近九旬仍未退休

导语&#xff1a;俄罗斯自研 CPU 参数最近曝光&#xff0c;虽然比起主流产品仍存在较大差距&#xff0c;但是这也是俄罗斯在自研道路上的一大进展。虽说自研 CPU 并非易事&#xff0c;但为了避免被美国牵制&#xff0c;很多国家都在这方面投入了巨大的人力与资金。战斗民族俄罗…

停止Password Manager Agent服务导致应用程序启动缓慢

在一个实施环境中&#xff0c;部署了Password Manager用来实现单点登录功能&#xff0c;但是由于Password Manager的提示基本都是以英文为主&#xff0c;而且配置也比较麻烦&#xff0c;普通用户看见会比较影响用户体验&#xff0c;所以用户决定暂时关闭Password Manager功能&a…

web 前端常用组件【06】Upload 控件

因为有万恶的IE存在&#xff0c;所以当Web项目初始化并进入开发阶段时。 如果是项目经理&#xff0c;需要知道客户将会用什么浏览器来访问系统。 明确知道限定浏览器的情况下&#xff0c;你才能从容的让手下的封装必要的前端组件。 本篇文章试图从常见的上传方式和组件进行分析…

性能超越最新序列推荐模型,华为诺亚方舟提出记忆增强的图神经网络

作者 | Chen Ma, Liheng Ma等译者 | Rachel出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;用户-商品交互的时间顺序可以揭示出推荐系统中用户行为随时间演进的序列性特征。用户与之交互的商品可能受到用户曾经接触的商品的影响。但是&#xff0c;用户和商…

ASP.net 中的页面继承实现和通用页面的工厂模式的实现

最近用.Net做web项目的时候遇到了一些问题&#xff0c;就是很多的页面的处理一样的&#xff0c;不一样的就是我们写的存储过程不同&#xff0c;为了考虑代码的重复利用和可维护性和可 扩展性&#xff0c;于是写了一个对于单据页面的工厂模式&#xff0c;采用界面的继承技术&…

5502的时钟组

5502有四个时钟组&#xff0c;分别为&#xff1a; C55x Subsystem Clock GroupFast Peripherals Clock GroupSlow Peripherals Clock GroupExternal Memory Interface Clock Group1、C55x Subsystem Clock Group该时钟组包括C55X CPU core、内存&#xff08;DARAM和ROM&#xf…

遇到的浏览器兼容问题及应对方法

前言&#xff1a; 上周天的时候有个学长找我帮忙做三张页面&#xff0c;因为没有数据交换之类的&#xff0c;只是单纯的前端页面&#xff0c;想着好久没做东西&#xff0c; 看书都看烦了&#xff0c;所以就接了也当是练手。之前因为没有系统的看书&#xff0c;所以其实很多问题…

浅谈权限设计(来自深空老大)

2019独角兽企业重金招聘Python工程师标准>>> By 深空, 2009-09-13 21:45:07 PHPChina的专家版在谈权限设计&#xff0c;苦于没有权限回帖&#xff0c;特发此博文谈谈简单的权限设计。讨论在这里。 最简单的权限验证&#xff0c;应该是登录态的验证&#xff0c;如果登…

5年Python功力,总结了10个开发技巧

作者 | 写代码的明哥来源 |Python编程时光&#xff08;ID: Cool-Python&#xff09;如何在运行状态查看源代码&#xff1f;查看函数的源代码&#xff0c;我们通常会使用 IDE 来完成。比如在 PyCharm 中&#xff0c;你可以 Ctrl 鼠标点击 进入函数的源代码。那如果没有 IDE 呢&…

怎样给目录加权限0777

# chmod -R 0777 /var/www/html/子目录

php学习,一个简单的Calendar(2) 一个简单的活动页面

有了前面的基础&#xff0c;后面就是将页面展示出来。 预览图如下&#xff1a;1号和31号分别有活动&#xff0c;会一并显示出来 这里需要搞定几个问题&#xff0c;一个就是数据库的连接&#xff0c;我们用\sys\class\class.db_connect.inc.php <?php /* * 数据库操作&#…