粉丝1.4万获赞8.0万

为什么 import 是 进口,而 important 是 重要的?一分钟后你将会记住这些单词准备好了吗?首先,它们都有一个共同的词根, port, 它也是一个独立的单词,它作为一个词根的含义是拿 运作为单词的意思是港口端口。 am 这个前缀有进入的意思。 import 就 是从别的地方来的,进入了港口就是进口的意思。隐身出来,输入引进的意思。那既然是引进的,说明对我比较重要,所以还隐身出重要性的意思。再加一个形容词后缀 aunt。 important 就是重要的意思,如果再给它加上表示否定的前缀。 on unimportant 就是 不重要的意思。 ex 前缀表示向外。 export 就是 出口的意思。 d e 前缀表示去掉。 depart 就是 把谁从港口去掉的意思,也就是驱逐。 d r 后缀表示人。 potter 就是 运的人,也就是搬运工。 age 是 名词,后缀又表示结果和费用的意思。 portage 就是运输运费。 trans 前缀有转移的意思,把东西运到别的地方。 transport 就是 运输的意思。 able 表示有什么性质的。 portable 表示可以运走的,也就是可携带的。引申出便携式的意思,学会了吗?

今天我们来教大家编程入门,首先我们来教 paint 语句, paint 语句可以理解成把一个东西放在输出区,如 printhead, 有 一些语法,这个符号是单引号,单引号里面是文字。 然后我们教大家 import 语句, import 可以 理解成导入一个模块,比如 import ipunderscore i, 导入这个模块可以有这个模块的功能,然后导入的模块有模块的功能,我们刚刚导入的 ipunderscore i, underscore i 有 很多功能,今天我们只教入门的是 speak 语句,要学 speak 语句,首先得在前面加一个 itunderscore i, 也就是我们刚刚导入的模块,然后后面加 speak 语句,要注意好,这个和 print 是 一样的, 比如 e b underscore i 点 speak i am a student i am a student 听到了吗?没听到在评论区打一。然后我们教大家 input 语句, input 语句就是在输出区输入一个东西,然后你再回答, 可是要先设置一个变量,变量就等于定一种东西以后会用到个变量是在它前面的,就等于把这个东西给定义成一个变量,变量以后会定义一种东西的哟, 比如 i 等于 input what are they, 然后的话你就可以回答了,是现在还没有任何效果,所以需要加上 if 语句,这个语句就需要我们刚刚设置的变量 继续讲解,比如 f a 等于等于 z r a cat。 然后我们要讲解,这个可不是一个等于号,是两个等于号,然后的话后面的跟 pink 的是一样的,要单引号,不是双引号, 还有一个漏掉了,那就是后面还有加加一个冒号, 然后有冒号它会自动给我们空出四格,比如在后面添 input yes, 刚刚我剪掉了,然后开始运行 教学,完成下课。

先来 r s build, 点 config, 点 ts, 再来一个就是 module 管 federation, 点 config, 点 ts, 两个啊,这两个配置文件好,这两个配置文件分别怎样去定义呢?在这儿我们来直接导入啊,直接导入 import 从谁呢? 大家从这儿可以看到,里面是不是有一个叫 define config 啊?其实大家用完之后你会发现跟 vt 一 样哎,对吧? vt 是 怎么怎么导入的? 是不是直接 from weight, 然后呢? define config? 你 看 api 高度一致化啊,就不要去做一些标新立异的事情啊,就是你既然想让这个生态足够繁荣的话,那你创造出来的新的东西最好跟老的差不多, 这个就是 define config 好, 定义好 define config 之后,我们就直接把内容呢导出去,这个导出其实也是一样的啊,就直接 export default define config 里面呢去定义一些内容,我们如果用 with 的 话,这个里面就会定义一些什么 plugin, 对 吧?那我们这里也是一样, plugins 定义进来,我们要什么 plugin 呢?这个 plugin 呢?我们其实就直接引入 刚才定义好的那个 module federation, 把这个呢命名叫 plug in module federation, 好, 再在这儿来 plug in module federation 放进去,然后呢,它整个模块化定义的内容里面不是缺了个物这个参数吗?就是你从哪里去导入这个配置, 哎,这个配置我们这是不是有个配置?这个 module federation 的 配置就是我们这里需要去指定的配置,那它又是怎么样来去指定呢?我们直接可以 import from 从 module federation 的 里面导入,导入的这个内容叫什么呢?叫做 create module federation config。 啊,这些 api 设计的太优雅了。好,然后呢,我们直接 export default create module federation config, 导出出去,导出出去。接下来的内容就是我们在最前面给大家看 webpack 的 这个内容, 为什么这个字节系的相关的工具链,它还是依照于 webpack 呢?因为大家都知道 webpack 已经根深蒂固了, 对吧?很多人都知道 ypack, 但是你不一定知道 rsp, 你 不一定知道 wait, 所以 我们需要在这个有,就是已有的这个环境下,或者说已经在的这个土壤里面来去发掘,来去,在这个基础上去。 呃,给开发者带来一些新的东西,所以的话它的配置也是一样的,你看 ypack 的 配置,它什么 name? file name, 什么 expose, 我 告诉大家这边是一样的。啊,什么呢?它的名称,命名,命名,那我们命名呢,就直接叫做 mf app 一, 可以吧,就,就是我这个名字嘛, mf app 一 好,这个就定义好了,这个呢是属于提供者。注意啊,我现在只关注提供者,对吧?只关注提供者,那我们假设它就是一个 provider, 它是一个 provider 的 话,我们就要把什么东西提供给外面去用,这个是一个关键。好,那什么东西提供给外面去用呢?我这儿来定一个 s r c s r c 里面我定义一个文件啊,比如说就叫 sum 函数, sum 函数点 t s 定义好,那我们往外部呢去暴露一个 export function sum a 加 b 这个函数,那接下来我是不是就可以直接在这来给它导出。导出什么呢?我把这个 sum 导进来,同学们看,好啊,我把这呢就直接给它定义一个叫做 expose, exposes 啊, 准确的说应该叫 exposes。 exposes 什么呢?我给它导出一个方法,这个内容叫做 sum, 接下来它的文件来自于什么地方呢?就来自于 sum, 那 个 s r c 下面的 sum 看,好啊, s r c 下面的 sum。 好, 这样我就可以把这个 sum 方法导出给外部去使用。 导出给外部去使用啊,它整个构建的文件 file name, 我 也可以给它取个名称叫 remote entry。 remote entry 好, 保存一下。这个呢就是我们整个 module foundation 远程产物给外部去暴露的内容,我们就定义好了,接下来在这边来导入 import 什么呢? module foundation config 导进去,放进去, module foundation config 你 看是不是好了? ok 了, 好,这样定义好之后,同学们来看,好,接下来你什么都不用去做了,直接来到 package 下面的 m f a p p 里面去执行刚才我们说的构建的工作。构建工作我们定那个定义好了吗?定义好了,在这儿 dv 就 可以去启动。好,我们来试一下,偏偏我先 build 一下,看它能不能生成产物。 这里呢,报了一个错误,他说,呃,这个构建的过程中什么什么 course, 什么什么之类的,对吧?这一步呢,其实是大家需要去呃,这个 刚才说明的,我们把我们把这呢稍微改一下啊, p m d v 吧。从这呢其实可以看得出来就是文件报了错误,那不管是从这个 s r c 还是什么什么来看,你一定要有个 index 文件,这也比较合理啊,你就必须要有一个 s r c, 下面必须要有一个 index 文件才合理。按理说,那我们再来一个 index 文件,然后在这个 index 文件里面呢,我们可以去调用一下其他的这个方法,或者你什么都不做, ctrl 点 log 一个一二三啊,好,保存一下,我们再来构建一下偏偏 build 回车 是不是成功了?同学们看到没有?看到同学在评论区扣个一,看到的同时,同学们来注意了,它会在 diss 的 目录下面去生成这么一堆的产物,对吧?这一堆的产物都是它生成的 啊,这一堆,这一堆生产的产物,其实我们现在不重要,可以不关注他啊,那么我们来启动一下试试 pmpv 回车,你看这是不是启动了,在三零零二端口启动了。好,但是我们说了,他既然是一个提供者的话,他启动的东西呢?我其实可以不管他啊,就不管他启动的什么东西,我不,我不重要, 那你其实从这也可以看得出来,他是不是打印了一二三,对吧?打印了这个一二三,哎,这也就是我们这边打印的这个一二三,说明他已经启动成功了啊,启动成功了,好,这个启动成功之后,接下来呢,我们 能够将这个 sum 方法提供给外部去用了,然后我们来第二个产品。

面试官问你 agent 和 workflow 的 区别,如果你脱口而出说只要系统调用了外部 a p i, 或者用了搜索工具,就是 agent。 恭喜你,这场面试基本凉了。 如果这层底层的核心逻辑没理清,哪怕你后面的思路全对,也会被当场刷掉。嗨,大家好,我是小哲,关注、点赞加收藏,我们马上开始今天的讲解。很多同学在做大模型项目的时候,脑子里的第一反应就是写个程序,先去调个搜索接口拿数据,然后再把这些数据丢给大模型去声称回答。 大家往往觉得,既然大模型都用上工具了,那这恰恰是被面试官嫌弃的致命死穴。大家想想为什么? 因为你写的这个系统本质上还是个按部就班的流水线。虽然他干了活,但第一步干啥,第二步干啥,全是你提前在代码里定死的,只要碰到一丁点超出预设的意外情况,他直接就报错崩溃了。 那咱们的破局点到底在哪里呢?其实你只需要向面试官抛出一个超级惊艳的核心概念,就能瞬间拿捏全场,那就是到底是谁在握着方向盘。 workflow 就是 程序员提前画好的死板导航路线,而 agent 则是给了大模型一个终极目的地,让他自己当老司机,边开边看动态决策。 那咱们在脑海里跑一个极其简单的例子,假设现在咱们要设计一个系统,去帮老板买杯咖啡。 如果是 workflow 工作流模式,系统的脑子里就是一张死板的任务表。大家想,第一步走到楼下咖啡店,第二步,点一杯冰美式,第三步,付钱拿走。 听起来非常丝滑对不对?但如果今天这家咖啡店突然关门了呢? workflow 就 傻眼了,直接报错,卡死在那,因为它的预设步骤里没有应对关门的方法。那如果是 agent 模式呢?大模型接到的只有一个目标,也就是老板必须喝到咖啡。 第一步,他跑到楼下,发现店关门了。这时候大模型开始自己动脑子了,他观察到当前的状态是原定计划行不通。第二步,他自主决定,掏出手机打开外卖软件。第三步,他开始搜索附近其他的咖啡店,还对比了一下送达时间,最后挑了一家半小时内能送到的店,直接下单。 大家看画面出来了没有?在这个过程中,没有任何人提前教大模型遇到关门该怎么处理它,完全是根据当下的环境,反馈自己,一步步想出的破局对策。 所以咱们一句话总结这道题,判断一个系统是不是 agent, 根本不是看它有没有用工具,而是看大模型有没有对下一步行动的绝对决策权。 在真正的大厂工程实践里,最成熟的做法从来不是二选一,而是混合双打,用 workflow 去管住主流程的底线,保证可控和安全。然后在那些需要灵活探索的局部节点放手,让 agent 去尽情发挥。只要你能把这个核心思想拔高出来,这道题你绝对能拿满分。 最后留一个简单的课后思考题给大家,你们觉得咱们平时在网上购物遇到的那些自动回复机器人,他们到底是 workflow 还是 agent 呢?欢迎在评论区打出你的答案,一起互动交流。今天的视频就到这里,我们下期见,拜了个拜。

openai 这次更新 codex, 我 觉得最关键的一点是,它终于进 chrome 浏览器了。以前我们让 ai 帮忙,大多是让它写代码给建议,告诉你怎么操作。但现在不一样了,它可以直接在浏览器里帮你干活。比如你已经登录好的后台表格、 crm 网页工具,它都可以在里面处理任务。 而且他不是抢你的鼠标,你还能继续正常用电脑,他自己在后台开环境,自己执行。简单说, codex 不 只是会写代码了,他开始进入真实工作场景了。 codex 不是 只能打开一个网页,慢慢点,他可以自己开一组标签页,同时处理多个任务。比如你让他整理用户反馈,他可以打开多个页面看内容,走流程,找问题。这种感觉就很像你旁边多了一个实习生, 你把任务交代清楚,他自己去跑,最后把结果拿回来给你看。 codex 不是 简单模拟人类点鼠标, 他背后是会写代码跑代码的。这意味着他处理网页任务时,不一定要像人一样,一个按钮一个按钮慢慢点, 像批量填表、提取页面信息、检查多个页面测试流程这些重复活,他可以用更快更稳定的方式完成。 这次升级的核心不是 ai 又变聪明了,而是 codex 真的 开始从写代码助手变成能在浏览器里干活的 ai 代理了。浏览器里的重复工作可能要正式交给 ai 了。

拍放,每日学一个小知识,今日学习 os and link 函数。 os and link 函数的作用是删除指定路径的文件是 os remove 的 别名,功能完全一致,仅名称不同,无法删除目录 使用语法固定写法, os and link path 参数 path 未要删除文件的路径字符串,支持相对或绝对路径。 注意要点是,一、需导入 os 模块。二、删除不存在的文件会报错。三、删除前需确保有文件操作权限。下面将十秒案例展示,稍后提问。 提问, os link 和 os remove 的 核心功能是否完全相同?知道答案的小伙伴把答案打在评论区。

大家好,今天教你们 multi processing, multi processing 你 可以将它理解为软件的帮助的一个库,不是这种软件帮助,而是帮助软件有更高的效率。今天教你们最基础的创建两个进程并行工作, 这个代码的意思是创建两个进程并工作,然后再教你们进程池,这行代码的意思是创建进程池铺,还有这个库里最核心的内容如何跨平台,跨平台的意思是一个平台跨另一个平台,而软件能正常运行,可是 windows 不 支持 fok, 所以 我们要重新导入一遍,输这串代码就解决了跨平台的干扰。然后我再教你们如何进城通信,这里它提供了两种方式,这是第一种方式很难,第二种相当渐变。 这两行代码的意思是进城间通信,然后再教你们锁,假如进城互相打扰,就得阻止一个进城,我们就得用到锁,这个就是锁好了,这就是本期教程里的内容,你学废了吗?

薯条老师的 python 小 班课,跟薯条老师系统学 python 数据分析与数据科学、机器学习与深度学习算法线上线下小班课,我们这节课来学习字母串的锁影操作。 python 中的锁影有两种,分别是正锁影以及负锁影。正锁影从左到右,从零开始编号,零表示第一个,亦表示第二个,以此类推。 复锁影从右到左,负一表示倒数第一个,负二表示倒数第二个,以此类推。 我们接下来看代码实力,通过代码来掌握锁影操作,同学们需要注意,得使用中括号来访问字母,访问第一个字母,就在中括号里面写上锁影零, 我们接着调用 print 函数来输出程序执行后可以发现访问到的的确是第一个字母, 我们也可以访问第二个字母,缩影就得改成一, 我们再来试试。访问倒数第一个字母,同学们需要注意,负一表示倒数第一个。 以上讲解的就是缩影访问的相关知识,非常简单,今天这节课就上到这里,跟薯条老师系统学 python 数据分析与量化交易。线上线下小班课,周末也可以过来学习。

的小伙伴们大家好,欢迎来到今天的技术小课堂。今天我们来聊一个非常重要但又有点神秘的话题, python 的 访问控制 听起来是不是有点高大上?别担心,其实它就像我们给代码装了一套门禁系统。想象一下,你的家就是一个 python 类, 客厅里的东西,比如沙发、电视,朋友来了都能随便用,这就是公共属性。但你的卧室藏着你的日记本和私房钱,肯定不希望别人随便进,这就是私有属性。访问控制就是决定哪些代码能进卧室,哪些只能待在客厅。 在 python 里,实现这套门禁系统主要靠两种,下划线,单下划线和双下划线。它们就像是两种不同级别的门锁。单下划线是软警告,双下划线是硬保护。 先说这个,单下划线,下划线 v 二,你可以把它理解成一个君子协定,它就像在门上贴了张纸条,内有恶犬,请勿入内。 他告诉你的队友,哥们,这是我内部用的东西,你最好别碰。但实际上呢?这扇门其实没锁,你硬要进去,派送也不会拦着你。他更多是一种编程规范和道德约束。 单下滑线的实际意义主要有三点,第一,他可以避免在导入新号时被导入,这是语言层面的一个隔离机制。第二,现代 i d e, 比如拍叉 会自动识别,并对他进行警告提示,从工具层面帮你规避风险。第三,也是最重要的,他是团队合作中的一种有效沟通方式,告诉队友,这是内部实现,不要依赖,从而维护代码的健壮性。 接下来是双下划线。双下划线 v 二,这个可就不一样了,这是一把硬核锁。当你在变量名前加了两个下划线拍缝,解释器就会启动一个叫名称修饰的魔法。 你看,当我试图直接访问双下划线 a 值时,程序直接报错了,说找不到这个属性, 那他去哪了呢?其实解释器把他偷偷改了个名字,变成了类似下划线类名双下划线属性名的格式。虽然这种机制依然能通过变形后的名字访问,但他已经足够在开发中起到警告和防篡改的作用了。 原来 python 偷偷把双下划线 age 改了个名字,变成了下划线 person。 双下划线 age, 他把类名也加了进去,这样就很难被外部代码猜到了,这就实现了真正意义上的私有化。 不过派送的哲学是,我们都是成年人了,要为自己的行为负责。所以虽然双下划线锁的很死,但你依然可以通过那个被修改过的名字强行访问。 当然,这是非常不推荐的做法,除非你真的知道自己在做什么。好了,我们来总结一下,单下划线是约定,双下划线是机制,单下划线提示你别碰双下划线,让你碰不到。 在实际开发中,我建议大家默认使用单下划线就足够了,它既友好又实用。只有在极少数情况下,比如你要防止子类不小心覆盖了副类的属性,才考虑使用双下划线。 当然,更好的做法是为需要暴露的属性提供专门的访问方法,比如用属性装饰器,这样既能控制读写,又显得专业。

今天带你了解现代 type script 开发中最重要的概念, es module。 es 模块。简单来说,它就是一种把代码零件化的机制,让你能把程序拆分到不同的文件,按需调用, 用法非常直观。在生产端,也就是定义功能的文件里,给想要公开的函数加上 export, 在 使用端,通过 import 关键字指明你想从哪个文件获取哪个功能。 和以前的 name space 不 同, esmod 是 以文件为单位独立的,也是目前前端开发的主流标准,它能让代码的附庸性更高,管理起来也更清晰。想要开发大型项目,这个知识点绝对不能错过,赶快动手试试吧!

知道 typescript 其实可以做多现成吗? typescript 基本上是单现成的,这意味着它一次只能处理一个任务。但是如果因为繁重的计算导致整个应用卡死,那该怎么办呢?这时候 worker threads 就 派上用场了。 请看这段示意代码。我们通过一次 main thread 来判断当前是在主现成还是在后台的 worker 现成。重点在于执行顺序。 当我们将复杂的任务交给 worker 处理时,主线程并不会停止等待,而是直接进入下一步。任务完成后, worker 会通过消息机制把结果传回来,这是开发高性能应用必不可少的技巧。

下来呢,给大家讲解一下来自于腾讯的一道面试题啊,说是呃,咱们 input 的 注解的一个三种用法,可以给我简单聊一聊吗?而这道题其实考察的是你对于 spring boot 的 一个源码的理解,因为如果你对于 spring boot 的 有一定的了解,你就会发现在 spring boot 的 源码当中 其实也有用到 input 的 注解的两种方式。那么这个时候呢,我们就开始正式来进行一个学习。首先咱们的一个 input 的 注解呢? 它在哪里出现了呢?给大家看一下啊,它是在咱们的 enable auto configuration 注解,也就是说我从这个什么我从这个启动器,对吧?走进来 之后我就会发现 enable auto configuration 注解,再点进去就会有这样的一个 input 的 注解啊,而这个 input 的 注解大家可以看到里面是一个 auto configuration input select 这样的一个类, 那么很很明显就是我的一个 input 的 注解,它去就是说导入不同的类是会有不同的一个区分的。首先最简单的方式是什么呢?最简单的方式就是相当于比如说我想要去注入某一个类啊, 那么这个时候我直接就 catch 对 吧?那么 catch 点 class, 或者说我想注入 person, person 点 class ok, 或者说咱们还需要去注入多个 person user, 好 吧, 电脑大小写没开吗? user ok, user 点 class。 那 么通过这样的方式了之后呢,我就不需要再用并注解去进行一个注入,那么这个时候我可以把这个并注解给稍微的注掉啊,我可以把它给注掉, 那么这个时候我们直接去运行, 很明显大家看到了结果,对不对?这是我们去使用 input 注解的第一种方式啊,这种方式叫做静态注入, 这种方式呢,相对来说灵活性会比较差一些,所以呢,一般来说是不会推荐这样的一个方式的,包括如果我们要注入的对象很多,比如说我要注入十几个这样的对象,那么这个时候我是不是后面会跟着很长的一卦, 所以这样会有局限性,所以我们的 input 的 注解还有第二种使用方式。第二种使用方式是怎么样子的呢?第二种使用方式,首先我们要去创建这样的一个加号配置类啊, 而创建了 java 配置类之后呢,我们需要去创建一个自己写的类,而我们在自己写的类当中会去实现 import select 这样的一个接口, 此时它会让我们去实现一个 select import 的 一个方法,而在这个方法当中我们需要去干嘛呢?去将自己的一个需要加载类的名字给返回,其实此时我们在 java config 当中去导入当前我自己去写的这样的一个类,比如说 my import select, 此时我们就会去发现一件事情啊,什么事情呢?就是我们此时其实会干嘛呢?会注入的是当前这个类的他的一个类型的返回值啊, ok, 而我当前返回的是我们的名字的权限联名,对吧?所以它在这里就显示了我们的权限联名。而通过这样的方式,我们可以很简单的在我们的 select 的 input 当中去添加进入一些,比如说我们自定义的一些方法,对吧?比如说添加一个判断逻辑 else ok, 那 么除此之外呢?这是我们的第二种方式啊,第二种方式,那么我们写一下啊,第二种方式是添加了,嗯嗯,实现了我们的什么?嗯,看一下 import select 接口, 并且,呃,实现了 select import 方法, ok, 那 么我们的返回值就是 select import 的 方法的返回类型, ok, 这第二种方式啊,那么第三种方式呢?实际上是我们需要去干嘛呢?我们需要去实现 import bin definition 啊,这样的一个就是说呃接口,那么这个 import bin definition registry 啊,它很明显是一个注册器,对吧? 所以说我们需要去实现的方法是 rejection bin definition, 它会有一个注册器的存在,而这个注册器是用来干什么呢?注册器我可以在里面去做任何的一些操作,就相当于它跟第二种方法的区别是什么?它跟第二种方法的区别就是当我如果去实现的方法, 他可以去实现这样的一个注册器的话,那么我可以手动的去干嘛?手动的去进行一个注册操作,所以他就相当于你去银行取钱,这个是自动取款机,而这个呢是手动的方式啊,手动的方式,所以这就是他们两个之间的一个区别,所以这里是实现了 input bing definition registration 接口,并且实现了什么方法呢?实现了咱们的一个 registration bing definition 方法, ok, 那 么这个时候我们可以自行封装 bing definition, 同样也可以达到我们的一个效果啊,这是我们的一个 in part 注解的一个三种方法啊,三种使用方法, ok, 写的完全一点,三种使用方法,那么在这三种使用方法的情况下面,很明显咱们的原码当中会使用到这三种方法,对吧?那么这个时候通过它不同的一个体现,我可以把灵活度去进行灵活的一个调整, 包括我们的一个使用权限,有注册器的跟没注册器的我都能够去进行一个实现,对吧?所以它相对来说会比较灵活一些啊? ok。 而它呢? input 注解,它实际不是业务开发所需要使用到的一个注解,而是你在写组建或者写原码当中你会去使用到的这样的一个注解啊? ok。