粉丝31获赞133

异常机智 pikarm 的调试模式, 好,接下来我们讲一下这个 picham 它的开发环境的一个调试模式,关于异常呢,我们基本语法就讲完了,这个调试模式呢是一个补充内容, 因为在我们工作中呢,也非常常用,在我们遇到一些错误的时候呢,通过这个调试模式详细的观察程序的运行的一个过程,帮助我们解决错误。那今天我们简单说一说,在这个调试器里边呢,它的一个核心是什么呢?就是断点, 我们知道我们这个程序去运行的时候呢,对吧?就有有有这样一行一行的程序啊, 我这样一行一行程序,对吧?程序不就是这样组成的吗?那么当某我们在这所谓的断点是什么意思呢?我就可以在比如这啊,这个地方我设有断点,什么意思呢?就程序执行到这的时候,这个点,这个点,这个这个位置这一行的时候呢,我就让他停下来, 然后呢把这个现场环境给你保存好,哎,变量什么值,对吧?都打开了,哪些方法 让你看,你停下来,你就可以详细的去看一看,好吧,就跟你看电影一样,哎,电影一直在放咔,嗯,暂停好,可以清晰的观察这个画面到底是什么样的, 大家懂我意思吗?所以这是一个断点,就是我们调试里的断点核心,那么整个过程中呢,我们可以设置很多的断点,是吧? 只要你想哪都可以设,好不好?哪都可以设啊,当执行到断点的时候呢,暂时挂起停止执行,我们在此处呢进行观察, 那么设置断点特别特别简单,我们只要在这个编辑区里边行号后面单击一下就可以了,这个位置卡一点好,垂直断点, 在这个点上面单击,再单击一下取消,好吧,所以设断点,设设断点特别简单,那么设了断点之后呢?我们要干嘛呢?我们在这个里边呢,继续学习一下怎么去, 我暂停录制一下,重新进,重新进这个掌柜 ps, ok, 继续啊,那我们看一下,所以射断点特特简单啊,关键是我们还要了解一下, 设了断点之后呢,我们怎么样进入调试模式啊?怎么样进入这个调试视图,然后呢?以及呢,他出来的这些信息都有什么什么意思啊?以及呢,还有什么呢?还有一个操作区,我们该怎么操作对吧?怎么去断点设置以后呢?怎么去操作?这是几个几个核心要点。 好,那么为了方便我们去那个去测试,那么 ok, 咱们在这呢创建一个新的新的案例,创建一个新的案例, 我们叫 my 十一,好,然后 叫 tf 更罢。测试调试好,大家看啊,我在这儿呢,定一个, 定一个简单的方法吧,就叫 a a, 没有什么内容呃,里边呢,就随便写写这样几行几行字, run in a as touch, 然后呢?嗯,再打印一下, 然后呢?随便定一个变量 number 一等于三,再定一个变量 number 二等于什么呢? 两百一乘以四,再定一个电量两百三,两百二乘以。 随便写几遍啊,然后呢? print 一下 char 对吧?然后呢? print 一下是吧? e a andy 对吧?结束了 and 看到了没有?这个这么一个简单的方法没什么意思啊,就是一些呃内容,然后这呢我们就可以干嘛呢?测试, 然后做测试, wint mate, 动用我的 a a right mate, 好,没什么特别的意思,特点程序特简单啊,搞起来,对吧?答案已经内容, 那么在这呢我们,呃,当然了,我们是要学什么呢?学断点对不对?学断点好,我们看一下啊,首先看一下,我们看怎么样设置断点,比如大家看啊,我在这这十五行这这个位置单击一下 左键,单击好了,就形成一个断点,然后呢我站在这个地方七行这再单击一下,又又是个断点, 大家看到没有?那么我程序开始执行的时候呢,当碰到这个断点的时候就会干嘛?就会停下来,明白了吗?就会停下来啊,那我们看一看,首 首先怎么进入我们这个视图,就这个调试的视图看,你可以单击右键有一个 dbuck, 看到没有? dbud, dbug 呢?就是什么?一个一个一个虫子,看到没有? 你可以去这儿,这儿呢相当于是通过 debug 的模式呢,去运行我们的程序啊,那么我们把这个调试错误啊,找错,我们称之为什么呢?叫找 bug, 对吧?大家经常知道这样的词叫 bug, 找 bug, bug 什么意思啊?就是虫子嘛,臭虫啊。有人说为什么呢?在写程序的时候呢,说是叫找 bug 呀,不是要找错误呀,这个 bug 呢来源于最早的时候,大家都知道在很久很久以前的时候,那个计计算机是很大的啊,在比如说上世纪五六十年代的时候,计算机计划很大,而且计算机也很大, 那么很大以后呢,计算机运行起来以后呢,就会产很热嘛,对不对?那个,那个,那个,呃,环境里面特别热,机机箱里呀?对,特别热, 那么这个时候呢,我们,我们让这是大家注意这是个机箱啊,里边特别特别热,散热,然后呢就特别,咱们觉得热,对,对于虫子来说就就很爽了,对吧?然后就会产生什么很多的,这个是真的臭虫啊,真的臭虫在这个打击器里边,机箱里边, 你要想明白以前的五上世纪五十年代的时候呢,机箱一个机器是特别特别大的呀,一个房子那么大,所以需就需要干嘛?需要人进来去干嘛?把这些储物的嘛找出来,明白了吧?然后呢消灭掉 啊,就是这个意思叫 bug, 当然后来目前呢,我们机器都很小啊,对吧?都特别特别小,不存在 机箱里还有什么,还有这些虫子,但是呢这个这个术语就这么延,一直延续下来,叫什么叫找 bug 哈, 所以大家可以看到这的这个他这个图标也是一个,也是一个,什么也是一个小虫子,看到没有?小虫子啊,基本上你在开发环境里面碰到这个小虫子的时候啊,意思就是什么啊?就是 tbuck 识图, 咱们可以点这进入第八个视图啊,然后呢你也可在这也可以停止啊,点这个方块是停止的意思啊,停止也可以什么呢?通过点这这个小虫子啊,这个小虫子进来, 明白了吗?效果是一样好,大家可以看到点了之后呢,进来以后在这个地方呢,大家看这个地方是蓝色的,这一条表示的什么意思呢?是当前即将要执行的这一行,然后大家看他停下来, 看到没有?停下来了,在这个断点这停下来,然后大家可以看到这这个位置,最下面就是我们的什么第八个视图,那么通常是位于位于右下方啊,这个下面,当然了,如果你说 看一下啊,然后呢?看这里边,呃,有两块主要区域,这个 debug, 这呢是是一个,下面是关于 debug 的一些这个,呃,我们叫 free, 对吧?这里边呢? 看一下啊,它会列出什么呢?这是表示它的线程啊,目前我们因为还没有学线程,它这插这呢只有一个叫 mates right, 对吧?这个线程里面呢?打开了,打开了多少个方法? 目前正在运行的什么方法?一个方法会有一个什么?一个方法会有在站里面会有一个什么 stack frame 啊?对,那里边对 stack frame 要站身啊,一个方法都有这么一个 brain, 明白了吗?这里边我们可以看到有这样几个 forum 啊,然后,呃右侧是什么呢?左 rib, 大家可以看到没有?左 rib 变量的意思,也就是说我们正在 目前来看啊,在这呢运行的什么运行是我们的主方法啊?我们我们的卖卖卖主模块模块的方法。然后呢,当前有哪些变量? 看到没有啊?比如我们这个变量, name 变量, file 变量,看到没有?还有这些相关的变量在这放, 我就可以去干嘛?去观察吗?大家看,在这个地方停下来了,我就可以观察,哎?有什么变量啊?看一看都有什么值啊,对不对?然后呢?有哪些方法?这个站里边哪些有哪?有哪些方法? 两边又打开了几个,一二三四五个,是不是?好?然后呢?接下来可以干嘛呢?就是大家先把这个熟悉一下啊,就这个,这个,他这个两个区域熟悉一下, 然后在这呢,我们可以通过什么呢?可以通过这的这几个按钮来进行操作。这几个按钮,这几个按钮呢,不需要你都掌握啊,掌握就掌握三四个,三个就行了。呃,这个看这个叫 stack over 啊, stack over 啊,什么意思?看我们这儿 step over over 啊,什么意思呢?就跳过这个函数啊,如果当前执行的是一个函数,则会把函数呢当做整体一步来执行,直接跳过,然后呢还有个叫什么呢?叫 step into 啊,跳到里边去, 当前执行的这个函数会跳到这个函数内部,还有什么呢? check out 是吧?跳出啊,从这个此函数呢跳出。有这样三个,是我们经常经常用的,来我们看一下啊,到这大家看啊,我在这看这控制台,大家可以点这控制台,大家看,这是不是只执行这一句啊? 下面还没执行呢,如果我在这呢点这点,这个 step over, 就 f 八,或者你用 f 八也行一点。大家看, 不好意思啊,这里边还有断点呢,他执行了很多步,直接到这个断点这结束了,我们重来一下,重来一下,当我只设一个断点的时候, 来,好,来,再来啊,到这一步的时候,大家看我这进行这个 step over 啊,点一下,大家看是不是 aa 这全部执行了一遍, a 方法全部执行完了,他会把它当做整体的一步,直接执行了,好不好?然后呢?执行到这一步了,然后呢?你再干嘛到这个时候呢?对吧?继续下一步,下一步执行结束, 那这是叫 step over, 会把这个函,我们这个 a a 函数呢,作为整体的一步调过,那还有一个叫什么呢?还有一个叫 叫 step in two 啊, step in two, 看到这了,来看这啊,点大家看见了没有?我进到这个里边来了, 他没有把它当做整体一步进来。 step in two, 什么? step in two? 发个写进到这里边了,然后在这个里边呢?我干嘛?我再一步步的执行,看懂了没有? 看一个 step 一啊,一步步的执行啊,然后执行,大家看旁边是不是给你标出这个,这个,这个这个变量的值了?看这个这个很方便啊, number 二的值, number 三的值,当然了,我们也可以。什么呢?来我们看啊, number 四的值, 大家看啊,没有 number 四啊, number 一, number 四, number 三,然后你也可以在这第八个,大家看第八个视图里边看,目前我们是不是处于这个 a 这个方法,方法里边啊?看到没有? a 方法里边有几个变量, number 一二三,他都给你标了,他们的值, 看到没有?然后呢?谁叫了我们的 a a 啊?是不是在我们那个主方号里边啊?在这看到没有?这就叫了,哎,主方号仍然没关闭啊,因为你得他执行完,他才能执行完,对吧? 先进后出,后进先出嘛,是不是?好,这里边呢?我们看一看啊,然后呢,我们再继续下一步,大家可以看到这个变量,这呢都可以通过这个 vlog 呢,观察我们这个方法下面的什么变量,哎,局部变量的值,看懂了没有?然后呢?来 再下一步好了,到这呢,因为这已经最后一步 a 什么执行完了,对不对?然后你再下,往下,再往下下一步,对吧?执行完成, 看到了没有?这是我们刚刚什么刚刚叫这个 step, 因图和 step over 的这两个区别。好,咱们再走啊, 再加断点啊,再加断点,再走,还有一个叫什么呢? stephouse, 好,然后在这来,我们仍然跳进来,嗯,进来了,看到没有啊?然后出现一个 step 一吧, 看到没有?到我们这一波了啊,到 number, 马上马上给他复制了,还没复。然后呢,大家看啊,我可以点这个按钮,这两单就不用先不用管啊,用的很少啊,这两用的很少。看这个 set up, 什么 out, 跳出,它的意思是什么呢? 点好,大家看是不是把剩下的这些步骤全部执行完了,把函数剩下的部分全部执行完,然后跳出, 跳出这个函数,回到我们的上一层,看懂了没有?就是这样。什么叫 step up, 对吧?跳出来,接下来呢?继续呢? 可以干嘛?继续往下啊,继续往下就行,这是他们三个的这个区别啊。 step in, step over, step in to step up 的内容。当然了, 那我们再看啊,如果你有,如果你有断点的时候,比如说我点了这个,呃, style over, 正常应该是把 aa 跳过,是不是?但是 aa 里面有断点,对吧?你一点看一看,他实际干嘛到下一个段子,这是不是停,停住了, 看到没?如果没断点的话,他直接跳过,直接作为整体就下去了,但这里边如果有断点,产生任何障碍,执行到我们的断点。这,好吧, 好,这是他的一些基本的操作啊,还有一个基本的操作我们也了解一下,嗯,就是观察器,这 watch, 拆开这,我们可以创建一个观察器,比如你要观察咱们整个 过程 number 二的一个值的变化,好吧,你说我设有 number 二这个变量,你直接把名字输进去就可以了。好,大家看啊,来,我们再再运行一下,大家看,观察一下啊,好,跑起来。 然后呢? 刚刚的 more 下一个大家看,开始用的时候大家看,我在这写了 number, 看到没有?目前他写的什么是没有定义,看到了吗?然后呢?我们再来往下啊, 呃,好,进这然后呢?一步看见没? number 现在还没定义,再走一步 number 是不是有神了?好吧,就这个地方呢,他一直会显示这个,你刚刚设了观察系的那个,那个这个变量一直会让你看。 好吧,一会就让你看看这个值的变化,然后下面这是什么?是显示的是我们当前这个按正常的模式显示的当前方法里面有哪些变量,看到了吗?这有刮痧系的问题啊,当然了,通常的话你在这也可以看得到,在这 我是我是经常习惯的时候在这看,但是两边都可以啊,这是关于这个咱们这个调试系列调试模式的一个简单的介绍,大家呢?呃,简单熟悉一下啊。好,还有一个小问题我给大家说一下。 好啊,还有一个小问题啊,还有一个就是一个小点,最后一个小点,关于它执行到公标处啊,叫 run to cut 这样的内容,然后我们看一下啊, 这儿来把饭店取消了, 然后叫 mai 十二 hold it, 这个运行到光标处,这个其实用的也不太多,但是有时候会用到,大家看,我这有一个这样的案例啊,我这有个电量叫 a 等于十,通常是在这个循环调试的时候用到比较方便, y o 处随便写,就这样, b 等于三, a 等于 a 加 b, 然后呢,我认他 range, one, tab, printer, eight, picture 二, 就这些吧,就这些啊,我们看一下 runtook 的什么意思呢?大家注意啊,调试模式核心永远都是断点,他只不过是把这个光标呢,也当做一个断点。 i don't want this one。 把这个光标也当做一个断点。来,我们看一下,在这儿运行它的时候, 好来,我们在假设啊,这儿加个断点好不好?变成三,这儿加个断点啊,然后 to bug, 好,然后大家看啊,我把我的光标,呃,假设我们把这个到这呢,相当于是什么都没有呢,大家看到没有,他这个变量就是个 a 等于十, b 还没出来呢,看到没有?然后呢,我把这个光标呢,放到, 放到这,表示这行啊,看一下啊,大家看相当于干嘛?这行是不是断点了,点一下打印了, step 一看到没有, a 还没打印呢,看到没有,相当于什么呢?刚刚是断,刚刚在这个位置停下来了,现在,咔,直接跳到这了,跳到你光标停的位置, 好吧,跳到你光标光标挺的位置,然后我还可以干嘛呢?还可以再挺啊,比如我在这放到,放到这来,再来,哎,大家看,又到这,就是把这个光标呢作为一个什么,作为一个断点, 看懂了吗?然后下一个啊,然后呢?这个放光标啊,再放这把 a 打出来啊,光标点看到没有? 所以呢,这个大家了解一下啊。呃, 可以,可以帮助我们,有时候呢,去做循环调试的时候呢,方便的,在这呢,可以随时可以看到你这个,你想看哪个哪个地方我们要处理这个信息,对吧?呃。然后呢就可以干嘛运行到这个地方 很有意思吧?呃。这个用的不多,呃,也了解一下好了。那主要是用的主要大家以后用到的话,主要是就是前面三个,呃, step over, step in, two, step up, 主要这三个, 好吧,主要是想了隐形的这个区啊,这个工作区就在这啊,就这个有两针啊。左边呢是我们的对战,对战信息,对吧?方法战啊,我们这个战争右边是什么边战观察区,可以通过他来看我们 这个变量的值。好吧,这就是一基本的一个信息。那么其他的开发环境这个用起来类似啊,基本上一模一样。 只不过呢显示的方式有可能有差别啊,大同小异啊。那个 i d l e 那个,呃,开发环节我就不讲了。为什么呢?第一很显露啊,第二呢本质内容还是这些 啊。这个大家如果想一定想学那个 i d l e 那个开发行的话,大家自己去琢磨一下。呃目前呢?呃主要用的还是那些。呃公共用的话,主要还是拍摄 以及一些其他的一些功能比较强大的 id。 好了咱们就讲到这里。


然后就是上面这一行的菜单栏,首先第一个菜单栏是使光标回到代代码暂停的地方,比如我现在光标我点到了第八行这里,我要返回到代码暂停的地方,就可以点一下,他就回来了。然后这个 step over 呢,就是一步一步往下执行, 是你下面没打断点第六行,第七行我没打断点,他也会执行的,这是 stabover。 然后这还有一个 stab 音吐, stab 音吐什么意思呢?比如我在这个执行的过程中,我 调用了一些函数,那么我用 stap 音吐,他就会进一步跳进到那个函数里面去,但是 stap over 他不会。比如我在第七行调用了函数的话, stap over 往下执行,他不会跳到函数里面,他会直接反馈结果,但是 stap 音吐,他会跑到那个函数里面去,把函数里面的代码一步一步执行下去。然后 step in to my code 呢?是指我只会跳进我自己写的函数,而 step in to 呢,会跳进原代码里面去,而 step in to my code 是不会的。然后再来就是 step out, 就是 是跳出当前函数体,我已经跳到我自己的函数里面去了,我不想继续往上直线,我就可以点 style, 他就会退出来。然后再一个 run to cursor 呢,就是我的光标点在哪个地方,他就会把代码运行到哪个地方。然后最后这有个计算器的样子,点击这个按钮呢,你可以对当前的所有变量,或者说不对变量可以进行任何代码的操作, 我现在就想扑你个一是可以的,你可以随意执行。但是还需要注意的一点是,并不是说现在代码暂停在了第七行,我往下写代码,这个代码是不生效的,因为一旦你点击了这个第八个按钮之后,他只会加载那一刻的代码的样子,你后面添加的是无效的。如果你想这样做的话,就得用那个君拍的那个工具了。


哈喽,各位亲爱的投资者朋友们大家好啊,我们今天晚上又见面了,呃,我们上个视频是昨天晚上刚录制的,是不是?这 可能是我做头条号以来,连续两个晚上连续录制视频的一个这么经历。然后因为是最近吗我们的那个持餐因为快过年吗,然后也基本都平餐了,所以要比较有时间 来跟大家嗯,来录制视频,然后我们今天晚上呢,也是继续跟大家讲解我们的这个量化投资决策系统的一个使用的方法 啊,然后我前阵子嘛,就在看我们的那个头条号的这个后台的一些数据,然后我发现啊,就是观看我们呃课程视频的朋友呢,是不在少数 啊,肯定呃,很挺多朋友都对呃电话投资这块还是挺感兴趣的。但是有个问题就是我们的视频的有效播放时长都是很短的啊,我的视频呢,基本的录制时间都是控制在十五分钟左右,但是我们的有效时长可能就在三四分钟 啊,我这两天也反思了一下,可能跟我们的呃视频的长度是有关系的呃, 然后以后所以我们又就精简一下我们的视频,每次我们的视频就控制在十分钟左右吧,尽量就是缩短大家的一些时间,然后 然后把我们的课程有效的浓缩,因为浓缩才是精华嘛,对吧?然后还有可能另外一个原因就是可能我的讲课内容可能的大家都觉得不够精彩,因为我们的呃整个课程基本都是 天线实践的,然后基本都是一直在敲代码,对吧?然后我也是按照我的逻辑思路呢,就是现场敲代码的,所以说很多呃,就在录制视频的过程中,脑脑袋就要不断的去思考我们接下来代码的逻辑是什么样的,所以就 在录制视频的过程中,所以就比较少说话,那以后我们可能会采取其他的多种方式的这种教学的结合,那来嗯向大家呈现一些更精彩的一些啊课堂的内容。好吧 好,那么我们废话就不多说了,我们今天继续来看一下我们的这款系统怎么样来使用。那我们上节课跟大家讲的呃就是我们的这个两个内容吗?一个就是我们的这个 ese 客户端怎么用啊?这个很简单,想必大家 应该就是直接下载安装就可以了,大家应该一看就会,对吧?这个,呃应该这个应该是应该是没什么难度的,然后重点就是在我们的呃这个开发环境的安装,因为我们毕竟呃要 这块的,很多朋友都是想自己亲手写策略吗?对吧?所以我们还是必须要完成我们的这个开发环境的搭建。那整个开发策略的环境搭建呢?在我们昨天的视频已经很详细的跟大家介绍了,大家如果啊没看懂的同学呢,建议多看几遍,然后 实在是有困难的同学呢,比如说你在安装过程中呢,有报什么我们昨天没有遇到的一些错误的一些情况出现呢?你可以关注我们的公众号,大抄手电话投资,然后给我们留言,因为为什么要推荐这个公众号呢?因为我们 在上面吗,就是不止我一个人在看,然后可能也有我的朋友他们也会去关注,如果我没有看到的话,他们会帮我解答嗯,你们的疑问,对吧?那这样处理问题的效率就会比较高,好吧,所以大家有需要的话可以去关注一下, 那么我们就接着呃昨天的内容继续跟大家讲。我们昨天呢已经是把我们的这个开发板的环境已经给搭建起来了,那我们的环境安装成功呢,并不代表我们的呃这个量化开发板的安装就已经完成了,我们只是 完成的最基本的环境搭建,然后我们要进行开发呢,我们还需要把整个系统呢导到我们的一个开发的一个呃工具里面,那我们开发的工具是用拍唱来的,拍唱也是我们之前课程跟大家一直讲的, 是我们教学的一个使用工具,那么我们今天呢安装完成之后呢,我们就直接把我们的策略导到我们的开发工具来。那呃我接下来的步骤呢?大家 仔细看,因为我们接下来步骤操作呢,可能跟你们之前的环境呃安装会有点不同,所以我们要看一下我们的拍唱怎么来配置。好吧,那如果你打开拍唱之后呢?如果像我们昨天 你有把那个拍摄卸载掉,然后今天打开之后呢?如果你的拍摄安装录音不一样的话呢,拍上就会提示一个,就是说你 这个呃工具呢,找不到你的拍摄的环境了,对吧?那我们就要进行一个设置。好吧,那如果你这边没有提示这个东西呢,也不要紧,我们也可以进行设置。那怎么设置?我们先点开我们的 这个 flow, 然后选择选择我们的消停,消停选择完了之后呢,这有个 projat, projat 后面就是你的项目的一个名称,那我们现在接下来就要选择这个,呃,樱桃 proutit 这个就是你的选择你的拍摄的环境,那么我们这边,我们这边呢会有一个最上面的这个下拉框,里面呢,我们先不管,我们先点开收二,先看一下 标红的,然后前面有注视一个隐蔽的就是失效了无效的一个环境,那么如果出现这个东西呢,我们就可以把它都删掉了,因为他并他都是无效的,所以我们都把他删了。 好,那么我们删了之后呢,接下来我们添加我们的环境这步是非常重要的,因为这步关系到你们昨天那个环境呢?有没有正确的 导到我们的这个拍摄里面来,我们导到我们这个拍唱拍唱的这个环境来。好,那么我们现在直接点爱的添加 好,点击完成之后呢,我们这边左侧菜单呢好几个选项,有一个虚拟环境的一个空打的,就是如果你采用空打的安装的拍选的方式,你可以选择这个,那我们现在直接选择 cct 选择系统,就第三个这个,然后我们这边他会有直接给你提示出我们昨天安装那个环境在哪里,如果没有的话,你可以自己手动去选择, 手动选择到你昨天的那个拍摄的那个环境也可以。好吧,选择完成之后呢,我们接下就很简单,点 ok, 点 ok 之后呢,这边就会加载我们拍摄安装完成之后的那 依赖,就昨天,包括我们昨天安装的所有的依赖都会在这里面了,那我们直接就点拍, 把他点完成之后就点。 ok, 好,那么我们现在打开这个 loveyce, 我们就可以看到我们的这个拍摄的环境呢,就是已经呃把它 给倒进来了,然后我们接下来就要把我们的这个项目给倒进来,那我们昨天的那个项目呢?呃,我们是放在我们的地盘, 然后放在可爱的里面的一个一点八,然后这个是解压之后了,就是我们昨天开发板安装的那个地方,就解压之后那个里面。好,那么我们现在就把这个文件夹打开,我们直接 oppo, 然后选择,否则选择我们的。呃,昨天倒的那个地方,我们是在放在那个 clat cline, 然后一点八 ds cont。 好,那么我们选择但我们解压之后这个文件目录,然后选择, ok, 倒进来, 那么我们这边呢,就可以看到我们这边直接打开我们的装饰贴进去。好,我们这边就能够看到我们的这边的呃代码了,这个就是我们的项目的一些原码,我们的原码其实 算半开源吧,也不能叫开源,也不能说没开源,因为我们毕竟已经是把 excee 的去掉了,这个是去掉 excee 的外壳了,然后 大家就可以自己在这边写圆满,然后所以说我们将就他半开圆吧,因为也没有输业绩, 不知道有没有这个术语,反正我们就自己定义好,那么我们现在就可以成功看到我们这边啊,好,好多爆红,对不对?好多爆红,这是为什么呢?因为我们的呃依赖是打成 pyd 的,我们是打 pyd 的,因为毕竟有些 逻辑我们是加密的,加密处理的,所以我们就会爆红,但是这个不影响使用,其实这只是 id 的这个 id 他显示的一些问题,我们这个可以先不管。好,那么我们现在就来尝试一下说我们能不能把我们的这个色策略跑起来。 首先我们一样跟以前我们运行的那个,呃,拍摄的一些方法是一样的,我们一样 是右击,然后点开原始拆的句 好,这边已经成功的报错了,他说提示说偷啃教人失败,让我们输正确的偷啃,对吧?好,那么我们 就现在就根据提示来说正确偷啃。怎么说呢?我们先看这边先偷啃,然后这边是有偷啃的,这有偷啃就是要让你写你的偷啃,你的偷啃从哪里来呢?就是从我们的个人中心的后台, 就昨天我跟大家讲如何登录了,那大家去注册一个登录,然后直接点复制,复制完成之后呢,直接往里面贴, 然后我们再直接给半个运行 好,我们这边可以看到他这边就一直在直行了, 是吧?这个执行的话呢?嗯,如果你的硬盘呢?是 ssd 的,他执行的速度还是比较快的, 我们总共是回测了有七百八十条数据,然后差不多用时可能在十几秒吧,可能在十几秒, 其实我们现在的这个回测速度啊,还是有待优化的,我们后续会把它直接优化成时间更短,因为我们毕竟有三四千只股票要去扫描吗?所以我们后续肯定这个时间还是有点长的,我们后续会不断的进行改进。好吧? 因为对于我们的股票池来说,对于我们自己的团队股票池来说,我们可能就是只有那么一两千只,因为可能肯定要剃掉一些没用的股票池,但是对于你们来说可不一定,因为 因为有些朋友他们整个市场三千多只股票都是你们的股票池,对吧?所以你们可能会用到很多只,所以我们这个也是我们需要考虑的 好,那么我们这边就可以看到执行完成之后呢?执行完成之后,我们就可以看到一些回撤的一些结果都在这里了啊,我们这边就不分析这个结果了,我们只来看一下有两个地方要跟大家讲。首先第一个地方呢,就是说 我们的这个回测吗?我们现在这个回测的时候呢,他调用的这个代码呢?我们是可以调试的,怎么调试呢?首先我们 直接打断点,我们在这个前面点一下,打断点之后呢,我们重新运行起来。好,大家可以看到我们的断点已经进来了, 对吧?我们断点已经进来了,所以说证明他是可以被断注的,是可以被打断点的。好,那么我们继续继续之后呢,这边已经提示说初始化完成的好,那么接下来他就是要去执行我们的策略,对吧?我们策略在哪里呢?就在猜的举 文件目录底下的一个一个文件,对吧?那这个文件是什么呢?文件就是我们指定的这个策略,那这个策略我们的名字叫开平仓测试,对吧?那开平仓测试是哪里来呢?就是我们的这个测试文件底下的一个内幕, 对吧?比如说我们现在就要指定测试我们的这个策略,好,那么我们就直接把这个内写了,我们的开平仓测试,那么我们就可以直接针对我们的这个策略进行测试。好,那么我们这个策略很简单,我们这个策略里面呢,我们就是 只写了一个开餐的一个呃命令,对吧?我们只执行这个开餐,那我们就可以我们继续把这个断点继续放过,放过断点的话很简单,你只需要按你键盘上的 f 九或者是点这边这个小箭头,看到没有?就左侧这个小箭头。好,我们 f 九继续。好,那么他现在呢?就会进到我们的这个策略里面来了,看到没有?就是我们的这个圈的局里面来。好,那么我们进到这个策略里面来呢,他就会一直在这边去执行我们的策略, 对吧?一直去执行,因为我们的策略就只有一个命令,所以他就会执行这个命令,不是我们这个命令,就是买一只股票价格多少,然后数量多少,对吧?都在这里,这是我们的参数,这个策略具体 会跟大家讲,我们只是跟大家讲这个策略的这个框架,好吧?那这个就是我们的一个调试的这个过程,这个是第一点, 对吧?然后第二点呢?跟大家讲的是我们这个回测的这个调试嘛,他是呃,进行跟八圈的一样的,是进行一个吞吐式的,一个逐条吞吐的一个呃数据的 吞住过程,还有吐出过程,这个什么意思呢?就是以前我跟大家讲,就是那个缺点的话,他是回去的时候,他是一条数据,一条数据往数据库往这个数据的对列里面去加的,因为我们的呃数据对列也是一天天往里面加的,我们数据 k 线数据呀,这种都是一天天生成的,对不对?所以说你今天有三条,明天就有四条,后天就五条,对吧?那我们回测也是模拟他 原生的这种数据产生的这种条件和环境,那我们也是一样的。比如说我们可以看一下我们的这个数据,我们调,我们看一下就知道了,比如说我们现在就呃来获取一下这个数据, 好,我们现在有三条,对吧?这个数据就是我们调试的这个点,他现在是有三条数据的,有四条数据,那么我们用这数据数四条数据去调试,然后我们继续接下来这个点, 我们再看一下是不是我们这个点就是有四条。所以他这样就是每次每次进来这个超点,他就会多一条数据,每次进来就会多一条数据。这个就跟我们实际上的实盘的操盘是一样的,就是我们实盘的这种 呃量化投资系统呢,就是根据我们的,比如说我们做分中线也好,做这个线也好,他都是 进到策略去计算的时候呢的这个点的这个数据呢,肯定要比你之前的呃进创计策略的这种数据是多一条的,对吧?这个逻辑大家可以自己再去好好的呃理一下,好吧? 然后这个就是我们的吞吐式的这种回测的这种数据的出现,那你在实盘运行的时候也是一样的,实盘运行的话,他进来,比如说你, 你是,你是分钟,你是小时限的,好,那两点就会出发进来一条数据,然后接下来那条数据就是三点的时候进来的三点的 k 线数据,这样 大家能明白吗?好,那么我们把它放过,然后他测试的时候就是会一条一条的不断往里面去吐,然后就是不断执行我们这个策略, 然后最终执行到我们的所有的数据呢,都被执行完,那么我们的回测呢,他就结束了,他就会输出结果,这个是我们当前的一个呃回测的功能, 然后回册的话呢,有朋友留言说我们这个手续费啊,还有这个什么数据是怎么展示的数据?我跟大家讲过了,然后手续费的设置呢? 嗯,跟大家讲就手续费设置,我们目前的回册是没有设置手续费的,也没有这功能,那我们只是目前只是提供给大家一个呃框架,一个策略框架,然后真实的这种回册的这种数据呀,更贴近于真实的,比如说我们后面 就对这种呃股票加上回翘,加上他的一个手续费的一个位置,我们后续会把这功能给加上去。好吧,我们后续就是会不断的进行优化,把我们的功能做的更丰富和更完整。 好,那么我们今天的课程差不多也要也到这里了,主要是跟大家延续了我们的策略,如何来进行一个调试,还有这个回秤我们是 有什么特点?好,那么我们今天的课程呢,就先到这里吧,如果觉得我们的呃这工具或视频到时候对你会有帮助的话呢?欢迎留言点赞评论转发。如果呢,你已经把这个环境啊,把这我们的整个这个开发的环境能搭建起来了,你可以留言跟我们说一下,我们就是会 根据我们大家学习这个进度呢,来调整一下我们这个录视频的一个进度,好吧?好,那么我们今天就到这里了,拜拜。

小伙伴问我用 py 叉五打个项目,右上角选择框里有个叉号,问我这是怎么回事啊?这很可能是因为没有配置虚拟环境,下面手把手教你如何解决。首先选择不着这个的,点击拍森解释器,看到确实没有 点击这里我们选择爱的,选择左侧康的引娃入门的上级已经创建一个呆萌学习环境,所以我们选择当前已存在的学习环境, 在安能康达安装目录,选择 envs 文件夹,找到呆萌文件夹,按照卢图进行配置,我们再回去看,就已经配置上了啊,这个问题就解决了。

ptmd 设置及新建项目,如果我们第一次打开拍插幕,那么这里的话呢,会拿出来拍插幕这个启动界面,那么在启动界面这里呢,第一个是不就是 crater new project, 是不是就是创建新的?那第二个是 open, open 是不是就是打开的意思?那么第三个是干什么用的啊?这是版本控制,我要创建一个新项目,那么在这里选择一二三的哪一个呀?是不是要选择 crater new project? 那么当单击了 crate 之后啊,这里是不是有供我们去选择 location, 就是将来你存放代码是不是要找位置去存 你?就像我们比如说实际电脑操作当中,我们要存视频,你是不是得找一个位置?要下载软件是不是也要找一个位置去存储才可以?那么现在呢,这个拍场啊,去问我们说,那你要存你的代码,存你的项目往哪存啊?那么工作场景下,一般比如说我们在自己店 任意一个自己能找得到的位置,你先新建一个项目的跟目录,就是后期本项目当中的所有代码,所有文件都放在这同一个文件夹里边,是不是方便后期维护啊?哎,那我们新建一个文件夹去存储,那比如说呢,老师这里啊,就叫他为扣的呢? 朋友们注意啊,这个项目文件夹的名字我们尽可能的用英文去命名,因为将来啊都要上传到服务器,那服务器他是不认识中文的,那这样的话呢,我们是不是点文件夹去浏览到当前的这个位置,那我们选择到黑马程序员啊, 桌面上是不是就有一个扣的文件角,我们点一个, ok, 下边是不是还有一个小三角供我们去展开?那么这个三角是什么啊?拍散文件要想运行看结果,那这个时候我们要依赖于水 才能运行,看结果来着,不是节食器对不对?那么这里啊,也就是说,你想想,你还记不记得,那老师说这里你要选一个项目文件夹,那我们回到讲义中来看一下啊, 除了选择项目的跟目录以外,是不是还要选择解释器啊?对不对?好,那么这样回到咱们刚才的排场当中来,你们注意啊,那这里我们选择一个解释器,呃,我们尽量选择第二个,因为第一个的话呢,他是虚拟的,我们现在不需要虚拟啊,那我们选择第二个, 选择到第二个之后呢?这样的话,我们点后边的这个浏览,我们去浏览一个就可以了,比如说我们浏览一个系统的老师,这里啊,是不是有一个什么 cps 二七,什么什么拍森,点 ese, 对不对? 那这个是不是不是我们安装的那个?咱们去浏览到那个拍散三,那拍散三装在哪了呢?如果你没有更改那个目录,你可能就跟老师的一样了,在你 uzer 你自己的账户名下,他会有一个叫做 a 呃, app date 他的,但 同学们注意啊,不是他,不是这个,你要点这个显示,因为他默认是一个隐藏文件啊,我们点显示在我们黑马程序员之下,是不是有一个 app data, 你把这个文件夹展开,然后展开 local, 找一个叫做 programs 到文件夹, 那我们选择到拍摄三点一 x 一之后点一个, ok, 然后这个时候解释器是不是也选完了呀?哎,注意点, ok 一下我们的解释器是不是就已经加载出来了,那同学们在这里啊,你稍微注意一下,如果 你安装解释器的时候跟老师一样都是默认路径安装的,那么应该也在你自己电脑 c 盘当前用户名跟目录下, app deta local 文件件下, programs 文件夹下,拍摄文件夹下的某某个拍摄三七就是他的版本。找到这个拍摄三点一 x e 之后,全部注意啊, 根部漏选择好了,解释器选择好了,是不是点可以它,那么这样的话我们一个项目就创建完成了,与此同时呢,就打开了我们的拍场,是不是来了一个欢迎界面?那我们直接点可乐死跳过就行了。那点完可乐死之后啊,朋友们来看一下,那上边是不是菜单, 左边是项目的跟目录,那中间这个区域是什么呢?就是将来我们写代码的位置, 但是现在能携带码了吗?肯定不能,因为刚刚咱们是不是只是创建了一个项目呀?项目创建完成之后,你会发现左边老师说这是咱们的项目的一个文件的展示位置,对不对?但是现在你会发现,怎么这么多文件呢?在这里是 选择的是 project, 他会把内置的一些配置文件也给加载进来了,咱们要改配置文件吗?说不需要,那么这个时候也不需要看了,那咱们怎么办呢?你单击 project, 这里是不是有一个下三角? 把这个倒单点一点,我们要看的是谁? project fails 就是你的项目文件就可以了。

大家好,呃,这次课开始我们来讲解拍桑这个程序开发,我经过调查,然后我发现有些同学可能对拍桑编程基础并不是很了解,有些同学可能开过以前开过这些课,但是掌握的不太好, 从这次课开始,用几节课的时间给大家就是复习或者是巩固一下拍嗓程序开发的一些基础。 那么在做这个之前,学这个拍散开发之前,我们要安装一个比较好用的,全球比较领先的一个开发的工具, 那么打开浏览器,在浏览器上面输入这样一个地址, 这一 t b r a n s 点 com 真的不让死,点 com, 然后进入到他的首页以后会看到这个是一个开呃公司,他开发了很多很多的开发工具, 能够支持很多种编程语言,大家看到这些语言都是目前比较流行的,那么我们主要是来下载一个,呃,支持拍丧程序运行,还有编写的一个开发工具,在首页的顶部,鼠标放在这里边一个 tooth 工具, 然后找到这个 p y 叉吗?点击了以后就会进入到这样一个界面,这个界面我们看到是当漏的下载界面,这个工具就叫 p y 叉,那么他有两个版本,一个版本是 poss no 专业, 当然这个是收费的。这个第二个版本是 come in the tea, 是社区版,这个是免费的,功能相对来说少一些,但是对我们基本上的程序开发是足够使用的。 那么我们首先在上边确认好我们使用的操作系统是温度死,然后点击这个当漏的以后就会开始下载,是浏览器开始下载, 呃,这个工工具的话安装包是两百多兆,也不是特别大,大家找一个网速比较快的时候来去下载, 点击了以后,然后这个页面会自动跳转到这里边,这个是三 q, 他就是做一个感谢。 如果说你们的流量期下载还是比较慢的话,这有一个直接的一个链接,然后用鼠标右键把这个 链接地址复制一下,然后再用迅雷去下载,这样话就比较快一些。下载好以后我们就进入到这个安装的过程,安装的过程的话我会换一台机器,换一台干净的这个电脑来全新的安装 好,这里边我换了一台全新的电脑,这个电脑的话操作系统是重新安装的,比较干净,没有装什么别的过多的软件。然后下载好以后就是这样一个文件, 这个是点 ex 可以直行的,然后是社区版二零一九点三点三版本,然后大家看到 他的大小就是两百多兆,好双击运行, 这个当然是试了, 这是欢迎见面。下一步这是安装路径,大家可以改一下,或者是不需要改也可以。呃,默认可以放在 d 盘,因为我这台电脑的话只有 c 盘一个盘符,所以说我这个路径就不改了,你们可以自己改一下,或者是用它那个默认的路径。 好,下一步这里边建议大家把这些都勾选上,都勾选上,这样的话对我们日后的开发比较方便 点。下一步这个没有什么过多的说的,然后下一步安装好,现在就是等待啊,他会把很多 这个插件呀、包呀什么的都安装在我们那个计算机里边,这个时候大家可以稍微等待一下,不要做过多的操作。 好的,安装完成以后,嗯,这里边有一个提示,就是第一个是瑞布特闹,就是马上重启, 第二个是 i want to 啊, menu la reboot later, 就是想手动重启,其实用选择第二个就可以了,不要再重启了,直接可以使用了。好, finish。 安装好以后,我们会看到桌面上多了这样一个快捷方式,就是这个 pc 啊, pc 就是 py 差母的缩写。好,现在我们来就是创建一个项目,来演示一下 这个工具,这个软件怎么来使用。在做之前的话,建议大家在这个磁盘里边新建一个单独的独立的一个文件夹,比如说我在 c 盘新建一个文件夹,叫做, 不是这次啊,我的项目好,进入到里边以后,先把它放这空白的打开我们这个 pyx, 这个时候因为你是第一次去运行它,它有一个提示,这个不用管它就是默认的选项 do nothing pots x ok, 这个是法律条文,这个是一定要 确认,确认好以后,然后是 ctrling can you 继续,这个大家可以不用管他 do not send don't send 啊, 好,这个是选两个颜色的主题,那么为了省眼睛,选第一个黑的,然后点下一步 next, 这个不用管, start using 啊,好 好,进入到这里边以后,我们首先要对他做一个设置,怎么设置在这啊?康飞哥,下拉菜单就选第一项赛挺斯,设置 这个设置的话是,其实是为了让我们日后编程起来比较方便一些,首先这就是个任,就是主题, 有黑的有白的啊,这个不用管他,不用改,他就是这个默认的黑的,这是第一项,第二项的话是快捷键。 呃,学同学可能就用过那个一个历史,学扎瓦克的时候用一个历史,一个一个历史的快捷键是比较经典的,所以说这里边我们也把它改成一个历史的快捷键, 这有一个一个历史好,然后在这把它拉开,艾迪特拉开,这有个 general, 这个的话可以不用去改他。呃,有一个情况就是有个放他啊,这个是文字,那么看到他默认的字是十三号字,非常小,而且字比较细,字体比较细,所以说还是把它改成 稍微大一些,比如说二十毫字,看到这个字就变大。字体的话还是这个字体,这个字体的话相对笔画比较粗一些,大家看着比较舒服。好, 把这些基本的做完以后,我们就可以去确定好,然后保存,点击这个右下方的 ok 就可以了。然后马上你可以新建一个项目, crater new project, 创建新项目, 这个时候他会问你,你把这个项目放在哪里?那么我们之前在 c 盘有一个空文件夹,然后把它放那里边, 好,就在这 projects projects, ok, 好,下边这个也要 打开看一下。呃,这里边的话他必须要加载拍丧的一个开发环境,那么在之前的课程的话,我已经装了这个 itoden code, 所以说用现有的就行了,好点。第二个现有的这里边你还没有选择, 需要选择一下, 用这个 code environment, 它会自动识别你在 c 盘用的这这这这个这么长途径里边装的这个 选项好,如果说他找不见的话,你也可以像之前那样子, 像之前的样子,他会给你新建一个新的啊,在这点这个 new environment using 好,这个他是 自动识别到这个拍散点 exe, 用这个环境就比较方便一些,大家做的时候灵活一些。有些东西可能不太好去操作,因为你们是第一次来使用,那么就用它默认的哪些东西,哪些地方能够顺利通过,你们就用 哪种方式好。这个整个都创建完以后,然后我们点击这个 kit, 他会帮我们开始创建一些开发环境。呃,这个窗口的话,他是广告啊,不用管他, 前面这个窗口他会加载,然后扣在里边,跟拍送有关系的一些包,还有做一些初始化的操作,这个大家需要等待一段时间。好,创建完以后会看到左 左边就帮我们出石化了一个项目,那么这个窗口我们可以点击这个,把这个收 types on stop, 把这勾选掉,这样话他下次再运行的时候,再启动的时候,这个窗口就再不会去跳出来了啊。 设置完以后,然后点击 close。 好,我们看到这个 partx 就是我们之前新建那个文件夹,把它拉开看一下,下边有一个 v e n v 啊, v e n v。 这个是我们这个环境里边的一些包,大家 就是初学者的话,尽量不要去动他,不要去动他,因为下次可能还要再去使用。如果说你做一个改变的话,下次再启动的时候可能会出问题,那么先新建一个拍拍上的文件,那么你选 则上边这个根目录 plus 好,选择了以后,点鼠标右键 有一个 new, 然后 fell 下边有一个拍丧, fell 直接创建成拍丧的文件。好,这里边让你输入文件名字,这只输入文件名字就可以了,比如说我的这个 叫哈喽,好,不用输入点 py 啊,不用输入点 py, 直接输入文件名字本身就可以了。输入完以后回车确定, 这个时候他就会在这个根部录下新建了一个哈喽点 py 文件,这个文件跟这个 vnv 是同级的,同级的也会自动帮我们打开,打开这 文件这个时候就可以开始去编写程序了。在编写程序之前,大家可以先看一下这个窗口的最下方,他正在扫描这个文件,去帮我们引入一些第三方的包,然后帮我们出使化。我们可以把这个进度条 点一下,我们会看到他正在做一些初始化的处理。呃,让他这个初始化的处理进行完以后,我们再正常的去编写程序,这样以后程序运行会比较顺畅一些。好,这个时候大家可以再等待一段时间。 好了,等待一段时间以后,我们继续再查看这个进度条。他有些地方是其实在更新, 更新他的一个包啊,那扩大里边的包比较多一些,他在更新去 断的服务器就下载新的版本。好,更新完以后,我们看到下边那个进度条就自动消失了,消失了以后我们现在就可以去正式的去编写程序了。那么首先这样子,呃,可以去写一道程序 print, 我看到我们写 print 的话,不一定把它全部写出来,我们只要去输入他前几个字母,这个 pyx 母会帮我们自动的去识别,然后出来一个小的这个菜单,然后我们选择他, 他会自动帮我们把剩下的代码补齐,这个就比较方便一些。还有我们以前输入支付串的时候, 要把这个字符串啊包在这个单引号或者双引号里边才行, 跟扎瓦这个语法是一样的,那么用这个 pix 也比较方便,我们只只要输入一个单一号,那么自动的会把后边的单一号也补齐,然后把光标放在中间,让我们去输入里边的文字, hello, word 好,输入完以后,然后要把它运行一下,在任何一个空地方点击鼠标 右键有一个 ran hello, 我们这个文件名字就叫 hello, 点 py, 然后这有个 ran hello, 它也是自动识别的,也是比较方便。当然大家看到后边有快捷键啊, ctrl 加 shift 和 f 十,好, 这样话一运行没有任何语法问题以后,就就会在下边他自动弹出一个子窗口,这个就是我们上边这第一行程序运行的结果。哈喽,我 这个就是,呃,整个 id 一啊,这个就是集成开发环境 pixm 的安装过程,那么我们把它关闭以后,比如说我们这个工作完成了,把它关闭以后,点右上方这个关闭。 好,他问你是不是关闭,那你选这个退出就行了。呃,下次如果说不想让这个窗口在显示,在提问你的话,我们选这个不是打上钩都挠他,阿斯密尔根,不要再问我了。好,退出这个工具比较方便,他会自动 保存,所以说我们不需要去强制的去呃,去点菜单保存,或者是 ctrl s 保存,那么在下次第二次打开的时候,我们再运行一遍,他打开还是会 还是会把之前上一次关闭的时候那个项目打开, 看到把之前那个项目又打开了,然后如果说大家想新创建一个新项目的话,在这这里边有一个 fire, 然后是 no project, 新项目,新项目。 好,这就可以去选择,这跟我们刚才之前是一样的。呃,比如说我们在 c 盘就是写一个昂 抬头的啊,他帮我们去做好路径就不用改了,因为这只是测试好用这个线,有的这个也没有,没有话就用上边这个还是一样,在这里边 c 盘下边有个昂抬头的文件夹,好,点击 crate。 这问你是不是在当前窗口打开新项目,还是用一个新窗口打开新项目?我们选择妞温度, 他会打开两个,就是第二个窗口,看到打开第二个新窗口 过程还是一样,他还是会扫描检索创建一个环境。 好,在这里边就有一个昂抬头,他就出现了,我们可以看一下我们的磁盘 c 盘,这就有一个昂抬头的啊,昂抬头的里边就是这个 pyx 五帮我们自动生成了一些文件夹,里边有一些文件,这些自动生成的文件夹大家最好就不要去动它了, 继续。 好,昂抬头的,这里边是这个,右下方有个提示,是我们 windows 这个,呃,防病毒软件,他有个提示,我们选择这个 fix 啊,他有个警告,我们选择 fix, 然后把它修理一下。好,他问你是不是这样子,你就点这个咖啡哥,奥特曼特雷自动的去配置,点完以后他就再不出现了,这问你是啊,好, 这就跟刚才一样,在这个根部录下新建一个拍散文件,比如说哎哎哎, ok, 在这你可以自己去写些程序,然后去运行这个 a a 文件。因为我这里边什么都没写,所以说下边什么都没有输出, 这个就是 pf 差木的一个基本操作,大家可以去尝试一下安装,然后去配置, 然后去新建项目,随便写一些程序运行一下,把它熟练掌握起来。后边我们去做拍嗓程序开发的时候,用这个 pix 是比较方便的,因为他把很多工具啊都给我们集成在一起,而且很智能化。呃,谢谢大家。