粉丝38获赞141


啊,说一个被很多前端同学都忽略的一个基本问题哈,就在 t s 里边呢,很多同学遇到一个困扰,要说啥意思呢?比方说我们现在呢,有个接口,能够拿到一篇文章,于是呢,我们去定义了这么一个接口的类型啊,就服务器响应的一个文章对象,然后这个对象呢,很多同学呢,把它用到了一些错误的地方, 比方说在界面上啊,界面上展示文章的时候,很多朋友看上去呢,这个展示这个东西呢,应该跟那个服务器响应那个东西呢,差不多是一样的,像这种情况,两者完全一样,于是呢,他就去重用这个 article 来进行展示, 当时呢,肯定是没问题的,但是随着项目的不断迭代,维护升级,然后一些界面展示的逻辑呢,就会慢慢的发生变化, 于是呢,逐渐的就会发现各种问题层出不穷了,你会发现这个展示的对象啊,跟原本的对象之间呢,就会产生各种各样的差异。比方说有一天他要展示这个对象里边呢,他 user 呢,不是 user id 了,他把它变成 user 一个对象,但是接口是没变的啊,接口还是给你返回的是一个 user id, 然后 case grade id 呢,它也不是 case grade id 了,也是一个 case grade 对 象,然后可能还会加上这篇文章,用户自己有没有点赞过,以及呢,用户自己有没有收藏过,你看这逐渐的发生了,然后很多同学呢,就在纠结这个事儿, 那你说怎么搞呢?你看有一部分在重复,有一部分产生差异,于是呢,使用各种各样的类型预算,然后基于原本的类型呢,然后算出一个新类型,然后给它加上一些字段,或者是改动一些字段,这里边还包含很多种情况呢, 比方说可读性啊,比方说是否只读啊,比方说是否可选啊,也就是一旦这两者发生差异过后呢,就导致这个 t s 代码越来越不好写。其实这种情况呢,还不仅仅发生在这里,还发生在参数。比如说一个函数要创建一篇文章,那么我可能会有一个参数啊, 创建文章的参数,那个参数对象呢?好像又跟这一块差不多,但是呢,又好像有一点区别,比方说有些东西可以不填啊, publister 可以 不填, uzi id 呢,就不能填,对吧?因为它肯定要使用当前的用户 id, 然后这个玩意呢,好像也可以不填,那么就是默认分类。你看这三者之间都在发生差异,这个类型越来越不好写。其实我告诉你啊,这个类型特别特别好写, 只是因为呢,你有一个心结一直没解开,就是始终认为这三者之间存在着一个强烈的关联关系。那么现在呢,我明确的告诉你,停止你的精神内耗,这三个东西不是一个东西,他们之间没有必然关系,也就意味着啥呢?你要把这三个东西当成完全不一样的东西,重复书写就重复书写,那个东西不叫重复, 只是碰巧了,你这里名字叫开头,我这里名字也叫开头,你这里是字母串,这里也是字母串。碰巧了,实际上你看这两个,如果说你之前搞过后端的话,应该知道它们在叫法上都不同。这个玩意叫啥呢?叫 dto, 叫做 data transfer object。 dto 叫做数据传输对象,它主要是用来做网络通信来传输的。但是数据传输对象就一定意味着界面上的对象吗?那可不一样啊,数据传输是数据传输,界面是界面。 我举个例子,后端懂不懂数据传输?他懂吧,因为他要给你传东西过来,他肯定懂数据传输吧。那他知不知道你的界面长啥样子?他完全不知道,他也不 care 你 的界面长啥样子。你是 app 啊,还是网页啊?你是列表啊还是卡片啊?他完全不 care。 但是不同的展示逻辑,他需要的对象就是不一样的。 而下边这个东西呢,是用来做界面展示的,它叫做 v o view object, 这两者天生就不一样,那更不要说刚才的参数对象了。然后创建篇文章的参数,它表示什么意思?它从逻辑上来讲,它也是一种 d t o, 它表示请求传过去的 d t o。 那 么这里的 d t o 呢?表示响应过来的 d t o。 那 请求传过去的 d t o 跟响应过来的 d t o 呢?能是一个东西吗?它也不是一个东西。 所以呢,学习知识呢,在最开始的时候就应该学习最正统的知识。正统的知识哪里有?来看我的大师课,这课程是完全免费的啊,来领取。完事了,大师课里边我把前端最核心最重要,最能够影响你薪资高低和职业发展东西精挑细选的拿出来, 花了一周的时间给你录制成课,目的就是让你在前端的根源上不要走歪了,走歪了过后,后边很不好调整。而且你以后学习各种东西呢,都会出各种各样的问题,所以说无论你是在哪个阶段啊,大师课一定是你最应该先着手学习的课程,这个课程一旦学完了,那之后再学习任何其他的知识都不成问题了,你就会亲身的感觉到头上天花板突然之间就没了,空间就打开了。 无论你是想高薪就业还是想在职提薪,大师课都是你的必修课。这个课呢,目前是免费领啊,怎么领?在咱们账号的主页,点击头像进入账号主页,根据提示领取就完事了。所以说说回来啊,要处理办法非常简单,就是你把他们三个呢当成不同的东西就行了,然后分开定义。再次重申,这里面看上去有重复代码,实际上他不叫重复代码, 本来就应该分开维护的,新制度就降下来了吧,就不纠结了。那如果说一开始是完全一样的怎么办呢?那你这样处理,比方说一开始的时候啊, 呃,界面上的逻辑呢,比较简单,跟那个数据传输对象呢,是完全一样的。那么你可以这样处理,就少写点代码吗?你可以先来个类型别名吗?就来一个 r t 口对吧?但是也要分开定义啊,你不能使用同一个东西,要分开定义,将来如果说有变化的话,把这个玩意一删,重新来就行了,特别是在大项目里边啊,千万不要去纠结代码,该重用的地方呢重用,不该重用的地方呢,一定要分开维护哈。

想在家里做本地 ai 漫画,是不是还不知道本地 ai 服务器怎么搭建?来来来,今天教你用极限压缩的成本把密娟里搬回家!首先准备好这些配件, b 八五主板 i 三四一七零处理器 十六 g 内存 p 一 零六显卡 cpu 搞上去内存条搞上去,显卡搞上去接好电源 组装好,开机后按照教程安装 focus, 这是最适合新手本地部署的深途 ai 工具。一直点下一步不用自己搭建 ai 环境,直到你看见这个窗口,现在你就能指挥 ai 工作了! 懒人包都给你整理好了,小可爱们别忘了一键三连哦!我是大圣罗,秋天带你摸鱼一天天!

这是一台全新的 ts 八零 s 服务器,我们今天来给这台服务器安装 no 二零一六系统, 每天开机 and i d e 进入到 重新启动,停车加按音乐的设置,选择稳要做的任意一 选择 y 保存设置完成, eic 提出重新启动。按按十二进入定向启动,选择我们的定向文件,进入系统。按 安装,选择安装盘,选择安装,等待安装完毕,设置密码,然后进入系统。 那我们系统就安装完毕了,是不是非常简单,同学们学会了吗?

一分钟带你了解一下什么是 m s t p。 协议。 m s t p 即多生成述协议,它是 i e e e。 八零二点一 s 标准中定义的一种二层网络协议,用于解决大型复杂网络中因链路涌于而可能产生的环路问题,并在此基础上实现流量的负债分担。 之所以需要 m s t p, 是 因为 r s t p 和 st p。 存在的缺陷。由于局域网内所有的 v l a n。 共享一棵生成树,因此无法在 v l a n。 间实现数据流量的负债均衡。 链路被堵塞后,将不存在任何流量,造成贷款浪费,还有可能造成部分 v l a n。 的 豹纹无法转发。简单来说, m s t p 是 st p r s t p。 的 增强和扩展版本。 它允许在同一个交换网络内运行多个生成数十粒,从而将不同的 v i n。 流量映射到不同的无环拓扑路径上。 m s t p。 的 核心理念是多实力,一语多述。 m s t p。 网络中包含一个或多个 m s t。 每个 m s t。 region 中包含一个或多个 m s t i。 俗称 m s t i。 的是运行 st p r s t p m s t p。 的 设备。 m s t i。 是 所有运行 st p r s t p m s t p。 的 设备经 m s t p。 协议计算后形成的树状网络。由于其稳定性、兼容性和广泛的设备支持, m s t p 在 相当长的时间内仍是中型到大型企业网络中部署最为广泛的生成术协议。但随着网络规模进一步扩大,特别是数据中心的发展, m s t p。 仍存在拓扑灵活度有限收敛时间等挑战。

哎,你是不是也觉得天天在那个黑乎乎的终端里跟 ai 一 句一句的聊天,有点太原始了? 那如果我告诉你,你的整个应用都能变成一个指挥 ai 的 大脑,让它自动干活,这听起来怎么样?咱们今天就来看看怎么做到这一点。 没错,就是这个意思,别再满足于当一个只能敲命令的传令兵了,咱们的目标是成为运筹帷幄的总指挥。 你想想看,手动输入一次就只能干一件事,对吧?但是,一旦你用代码来控制,哇,那简直就是解锁了自动化和集成的超能力,这就是我们今天要搞定的事。 所以,问题来了,怎么才能从手动操作跳到自动化控制呢?其实啊,答案特别简单,就靠我们今天的主角 open code sdk。 简单点儿说啊,这个 open code sdk 呢,就是专门给咱们 javascript 和 type script 开发者准备的一个超级工具箱。 最赞的一点是,它是个类型安全的客户端,这是什么意思呢?就是说,你一边写代码,它一边就在旁边帮你盯着,发现有错就会提醒你,嘿,是不是特别贴心? 它就像一座桥梁,让你的代码可以直接跟 opencode 的 首服务器对话。这样一来,不管你是想自己做个集成小工具,还是想让 ai 帮你处理一些复杂的任务,都变得超级轻松。 好了,理论咱们聊得差不多了,事后卷起袖子直接上手了,你马上就会发现开始用它有多简单。 整个过程啊,就两步,第一步,从 npm 安装 sdk, 第二步,创建一个客户端。实力,对,你没听错,就这么简单。好,咱们一步一步来, 第一步,打开你的终端,然后把屏幕上这条命令敲进去, npm install at opencode ai 斜杠 sdk 好 了之后直接回车,剩下的事儿 npm 就 全帮你搞定了。 行,安装搞定。接下来就是初步刻虎端了。最常见最方便的方法就是用这个 create open code 函数。你看屏幕上的代码就两行,从 sdk 里导入 create open code, 然后调用它,就能拿到一个 client 刻虎端的实力。 这个函数最牛的地方就在于它一步到位,帮你把上我服务器和客户端都给启动了。如果你是新开一个项目,或者写个独立的小脚本,用它简直再合适不过了。 不过呢,这里有个特别关键的地方,你一定要注意区分一下刚刚那个 crate open code 啊,它就像个全家桶,服务器,客户端一次性全给你,但万一你已经有一个跑着的服务器了呢?总不能再开一个吧? 这时候, create open code client 就 派上用场了,它的作用很专一,就是只创建一个客户端,然后精准地连上你那个已经存在的服务。 你看代码就明白了,用 create open cold client 其实更直接,你只要传进去一个对象,里面写上 base url, 告诉他你的服务器在哪,比如说就是默认的 http w local host, 四零九六,就这么简单,你的代码就能无缝地接入到任何已经跑起来的环境里了, 是不是特别灵活?好了,现在我们的客户端已经准备就绪了,那么拿到这个客户端之后,我们能做的最核心、最强大的事情是什么呢?没错,就是管理绘画。可以说啊,你跟 ai 之间所有的程序化互动都得从这里开始。 我们来快速地扫一眼 session api 都提供了哪些核心功能。你看,这个表格里列出来的 create, 用来创建新绘画 list, 列出所有已有的绘画。 prompt 这个最常用就是发消息给 ai, 还有 messages, 用来查看聊天记录, 这几样基本上就是你跟 ai 进行自动化对话的全套装备了。行,咱们来看一个最经典的流程是怎么走的。 第一步肯定是要先创建一个新的绘画嘛。你看这代码儿啊,特别简单,就是调用 client 点 session 点 create, 你 还可以在 body 里面给这个绘画起个名字,比如说叫 my session。 这一行代码儿一跑,你就得到了一个全新的绘画对象,可以开始聊天儿了。 有了绘画儿,下一步干嘛?那时候儿就要用到 client 点 session 点 prompt 这个方法了, 这里要注意一下哦,你需要通过 pass 这个参数告诉他你要往哪个绘画里发消息,也就是传入绘画的 id。 然后呢,在 body 里面放上你真正想说的内容。那这个 body 对 象里具体要放什么呢?有几个关键的东西,首先是 model, 你 得告诉他你想用哪个 ai 模型。然后是 parts, 它是一个数组,你发的消息内容都放这里面。 最后,我得重点跟你说一个特别有用的参数,叫 no reply。 把它设成处之后,你就可以神不知鬼不觉地往绘画里塞一些上下文信息,但 ai 不 会马上回复你。这招在做一些复杂应用的时候,简直是神器。 当然啦, s d k 的 能耐啊,可不止绘画管理这么简单。接下来,咱们快速看看它还有哪些同样强大的 api, 保证能让你大开眼界,解锁更多新玩法。 首先来看看 fires api, 这个 api 能让你用代码直接在你的项目里进行搜索,不管是搜文本、搜文件名,还是搜代码里的某个函数名都行, 还能直接读取任何文件的内容。想象一下,你可以写个脚本,让它自动帮你扫描整个代码库,把所有过时的函数都找出来,然后提醒你去重构,是不是超酷? 接下来这个 t u i api, 我 个人觉得真的太酷了,它能让你干嘛呢?用代码直接控制那个端端的用户界面,比如说自动在输入框里填上一段文字,或者弹出一个通知,甚至直接帮你点击发送按钮,提交一个问题, 这简直就是打通了你后台代码和前台操作的任督二脉啊!最后要说的是 events api, 简单说,它能让你监听服务器上发生的所有事情,形成一个实时的数据流。 这就意味着,只要 opencode 的 服务器那边有任何风吹草动,你的应用程序都能在零点几秒内立刻知道,并且马上做出反应。要想构建那种实时的响应超快的应用,就全靠它了。 好了,从安装初始化到核心的绘画馆里,再到后面这些强大的 api, 我 们都快速的走了一遍。那么现在真正有意思的部分来了,轮到你了。有了这些工具,你准备用它来打造点什么呢? 其实官方文档里有一句话我觉得总结得特别好,就是屏幕上的这句,用它来构建集成,并以编程方式控制 open code。 你 看多直接,这句话就把 sdk 的 全部价值说透了,它把控制权彻彻底底地交到了我们开发者自己手里。 所以你看,通往自动化、程序化控制 ai 的 大门现在已经为你敞开了。那么最后我也想问你一问题,你的第一个项目会是什么样子的? 是一个能帮你处理日常琐事的自动化脚板?还是一个你一直想做但以前觉得太难的开发工具?又或者是一个能跟你先游工业流深度融合的 ai 助手? 别再犹豫了,这里的可能性真的是无穷无尽的,那么就从今天开始动手试试吧!

今天呢,我就挑战一分钟,教会你如何将时间的精度同步到腊秒级别。首先我们需要提出一个概念, p t p 协议,也就是 a e e 幺五八八协议,中文名称,精确时间协议。下面我们来了解一下腊秒级的一个时间精度,这就需要我们通过软硬件设备来实现它,比如说呢,我面前这一款 s r e 二四零七 k p p 时钟模块儿, 它呢可以切换为 p d p 专属的一个主时钟模式,或者说是一个从时钟模式。它主要是用于在我们工业领域进行一个集成化设计,做到一个时间同步的典型值。在五十万秒的一个高精度级别, 整个 p d p 的 一个授时流程就需要我们通过这张图来进行一个连接。我们首先需要一个 p d p 的 主时钟,通过接收卫星天线来获取到标准的 utc 时间,然后我们通过主时钟输出一个 p d p 数据包,再通过交换机给多个从时钟设备进行一个 时间传输,每个从时钟设备通过将数据包解码之后来获得到一个时间精度,这样整个一个完整的 p d p 流程就结束了。

给大家看一下他这边的机房啊,然后机房设备的话就是这样子,他现在全部都是用的这种皮线嘛,皮线接头子的, 然后设备像这个的话就是他的那个专线的光猫一个机专线光猫这个是服务器,然后这个是路由器,这边是一个小交换机,十二口的,看到没? 这边接了十二个,上面是一个四十八口的交换机,他总共是五十六台电脑嘛,然后加起来是刚好刚好够的。 然后这边所有的光纤啊,给大家看一下皮线是什么样的,看到没?这种就跟你平时家里面那种光猫用的皮线是一样的,这边就可以直接融,然后这边融尾线,融尾线的之后直接延长过来插在这里用的这个模块直接插上去就就可以了。 然后大家看一下客户机那边,看大家那东西还没搞完,已经搞完了,是已经可以正常使用了。然后这边大厅有一些是呃,这些电脑还是已经开始用了了,没啥问题的啊,有一些没开起来,或者有一些是光线有问题的。 他这个客户机下面就这样子啊,全部用的风道桌,然后看到没有,他是加了一个那个万兆网卡的这个东西,这个城市的万兆网卡就比较好用一些,直接插上去就能用了,更稳定一点啊。然后下面这个光纤线看到没有 方向走过来,然后光纤直接光纤用模块,用模块插在这个网卡上面,这就是他是专门买的这种大版的,大版的话就是显卡不会挡着那个插槽, 然后专门一个插头插这个如果他是用 m 二的那个网卡了,就更麻烦一点,下面就这样子,然后这台电脑的话是没有问题的,刚刚已经测过的。

大家好,我是老哥,这期我们讲一下炼入巨合,我们九二零系列啊,包括群会的其他系列啊,都是有双网口的,我们可以利用这个两个双千的网口来实现啊炼入巨合,从而达到 增加贷款的目的。下面讲一下天路集合的一个作用,首先第一点,他当然是可以提高我们练路的一个贷款, 理论上呢,这样的话可以使这个贷款扩大到两个啊,贷款的一个之和。第二个点呢就是可以提高网络的可靠性, 配备了练陆巨合的端口呢,如果有一个网口出现问题,那么他会切换到另外一个网口上去,从而保证了网络传输的可靠性啊。第三点,练陆巨合呢可以实现 流量的负载平衡,可以把流量平均分配到所有的链路中去,使得每个成员的链路最低限度的产生流量阻塞的一个情况啊,两根千兆网,家人们看如何插在我们纳西库房的两个千兆网口, 然后另外两端呢,就插在我们路由器的啊,第一端口和第二个端口, 把两个网线插在我们 nasa 上面,之后另外两个网线插到我们的路由器上,这个时候呢分两种情况,一种呢就是路由器支持列入聚合,还有一种就是路由器不支持,我们看一下如何设置。 网线插好之后呢,我们打开空间面板,我们打开网络,网络界面 可以看到我们两个局网都已经通了,说明我们这两个网络已经插好了, ok 了,也有了自己的网络。我们现在看创建一个电流聚合点,新增创建 选第一个好,这里面有两个方式,如果说我们的路由器不支持这个炼入剂和功能的话,那么就选择第一个,他就是一个平衡的方式,就是说他不需要依靠啊,路由器有这个炼入剂和功能, 他通过两个网线来实现这个数据的一个平衡,或者贷款一个平衡。 然后如果说我们的路由器支持这个功能的话呢,我们就会选择第二个,这个怎么看支不支持呢?我们要在路由器里面去看, 我们以划数的路由器为例啊,我们找到内部网络,内部网络这里面有一个最后一个交换机控制 啊。第三项就是绑定链路巨合,这个就是我们刚才说的那个东西, 你要么答,把它启用的时候,这里就会写到启用列入聚合八零二点三 ad, 对吧?支持您的有限客户端,并将连接路由器的烂一和烂二接口把它作为一个列入集合。 所以说这个时候就是为什么我那个路由器要插在路由器的烂一和烂二的原因,然后因为我这个路由器是支持这个功能的,所以说呢,这时候我们就需要选择选项二,如果你的路由器不支持的话,就选择第一个 啊啊,这样的话我们点第二个,之后我们点下一步,然后这时候让你选择哪两网络,我们就勾选这两网络啊,点下一步, 然后让你设置 ip 地址,我们给他设设一个地址,然后把它设置成默认网关啊,其他东西可以不用设,你点完成点式, 那路由器这边我们要把这六结合打开点音用, 这是路由器应该会重启,所以需要时间稍微长一点 好,整理好路由器之后,这已经启动了,我们再重新打开一下这个地址,好,打开档次,我们去看一下 网络,网络界面这时候就可以看到我们这个亮度聚合已经组好了,而且是以连击状态。这里地址的话 他属于两千兆的一个贷款了,这时我们就可以看到他的贷款已经变成了两千兆了,通过这种方式呢,就可以把我们的这个嗯,纳斯的两个王口都充分利用起来,来扩展扩展我们的一个贷款啊,相对于零点五亿呢。 嗯,我其实这种方式是更为更为稳定,因为我用了两点五 g 的那个 usb 的内容,嗯,我发现就是只要重启这个这个网络就反应不了,必须把它上来改一个 ip 再改回来就好了, 所以这个蛮困扰的。两点五 g 和两 g 其实速度差不多,其实完全足够了,其实我们九二零这样玩一下就可以了。 嗯,这样的话,这样的话就非常简单的就把这个炼油机盒就设置完成了, 这样的话就相当于我们的纳斯就变成了一个两 gp 贷款的一个啊网络设备了。 佩奇就到这里,再见。

动态分配依赖 dhcp 协议,由网关自动为局域网设备分配 ip 地址、子网、掩码、网关等参数,适用于普通终端。静态配置需手动设置。 ip 参数适用于服务器、网络设备等需固定地址的场景。 同一网络内 ip 地址具有唯一性,重复配置会导致 ip 冲突,引发通信故障。二、 mac 地址数据链路层的物理身份标识 mac 地址是以太网设备数据链路层的物理地址,固化于网卡 n i c 的 r o m 中,是设备的全球唯一硬件身份证,解决数据要发往局域网内哪个具体设备的问题。 mac 地址采用四十八位二禁制编码,以十六禁制形式表示,分为六个字节,字节间用冒号或连字符分隔,其中前三个字节为组织唯一标识符,由 i e e e 分 配给网卡厂商。 后三个字节为厂商自行分配的设备系列号,确保全球无重复。下面具体讲一下 mac 地址的作用。 mac 地址仅在局域网内部有效, 是交换机转发数据的核心依据。交换机通过维护 mac 地址表记录端口与 mac 地址的应设关系,将数据精准转发至目标设备,而非广播至整个局域网。 mac 地址不具备跨网通信能力,数据离开局域网后,路由器会剥离数据链路层的 mac 地址头部,重新封装新的 mac 地址,因此 mac 地址仅用于局域网内的设备直连通信。 三、 arp 协议 ip 与 mac 的 地址解析核心 arp 是 衔接网络层与数据链路层的关键协议,核心功能是将已知的目标 ip 地址解析为对应的 mac 地址, 解决知道目标 ip 却不知道目标设备物理地址的通信瓶颈。接下来给大家介绍 arp 协议工作机制与流程。 以局域网内终端访问网关为例, arp 协议的工作流程分为三步, arp 广播请求终端需向网关发送数据,但本地无网关。 mac 地址虽向局域网内所有设备发送 arp 广播包,内容为,谁的 ip 是 幺九二点幺六八点幺点幺, 请回复你的 mac 地址。 arp 单播应答,局域网内所有设备均接收广播包,但仅 ip 匹配的网关会解析请求向终端发送单播应答包内容为,我的 ip 是 幺九二点幺六八点幺点幺点幺点幺。 nic 地址为, a a b c d e f f a r p。 缓存更新,终端接收应答后,将 ip 杠 mac 映设关系存入本地 a r p。 缓存表,后续向该 ip 发送数据时,直接从缓存表读取 mac 地址,无需重复广播。
