- 博客(55)
- 资源 (1)
- 收藏
- 关注
原创 盘点ECMAScript 2024的新提案
在前端框架、数据流处理以及复杂的业务逻辑实现中,都可能成为重要的工具。前面我们了解了ECMAScript 2024 (ES15)的5个新特性,现在我们继续学习一下其他令人耳目一新的提案吧。你将对你的数组有更多的控制力,像一个厨师🍳仔细制作一个完美组织的菜肴!集合不再是 JavaScript 集合中的“被遗忘的孩子”👶。把异步上下文想象成你的承诺和异步函数的 GPS 🛰️。😁 它让你能够写出更干净、更易读的代码,将函数串联起来就像一个超酷的传送带。🍕 好吧,ES15 添加了一些美味的新方法,如。
2024-12-31 20:34:32
312
原创 代码精进:工作中学到的12个代码风格
在生产级别的代码中,可能会有更多的缩进级别,如果缩进太多,我们的代码就会变得烦人且难以阅读。这样,如果我们想更新共同代码(try-except 和日志记录代码),我们就不再需要在 3 个地方更新 —— 我们只需要更新包含共同功能的装饰器代码。在生产级别的代码中,条件变得更长,可能有更多的条件。这样的变量名 —— 我们的变量通常是更长且描述性的,以至于我们不能将整个列表推导式放在一行代码中。实际上,功能上没有区别。在生产级别的代码中,方法名通常更长,我们通常会有更多的方法链式调用在一起。
2024-12-27 09:49:18
872
原创 盘点2024年最令人惊叹的5项JavaScript新功能
让我们来回顾一下ES15带来的全新的特性和有前景的提案。在JavaScript中,Atomics对象提供了一组静态方法,用于在多线程环境中以原子方式执行操作,比如共享内存的操作。Atomics.waitAsync()方法允许开发者在异步环境中等待某个条件变量达到特定值,这在并发编程中非常有用,因为它可以避免阻塞主线程,同时等待某个事件的发生。主线程在1秒后更新这个值为1,这将触发工作线程中的等待,工作线程随后继续执行。有了它,也就不在需要Lodash了,现在看Lodash基本大部分功能都有了原生的支持。
2024-12-23 10:51:09
970
原创 gRPC为什么比基于JSON的REST API快
JSON采用了文本格式,包含大量描述性的标签(如 "id"、"name" 等)以及符号(如引号、逗号等),如果有json字符串的嵌套可能还有一堆的斜杠。解析 JSON 数据时,必须将文本解析为原始数据类型,并且每次解析时需要处理字符串键名、符号(如括号、逗号等),这比直接解析二进制数据慢得多。像JSON一样,Protobuf是一种用于交换数据的结构化消息格式,但最大的不同是Protobuf是基于二进制的。如果你需要性能提升,或者你的环境能够处理gRPC带来的复杂性,那么gRPC是一个很好的方法。
2024-12-17 09:55:51
690
原创 Python编程精进:深入理解核心概念
然而,由于GIL(全局解释器锁,看下一点),一次只能有一个线程执行Python字节码,这限制了真正的并行性。的引入,Python现在对异步编程有了强大的支持。尽管Python不像Java那样是一个严格的基于类的编程语言,但你确实需要了解良好的OOP概念和最佳实践,才能在现实世界项目中做出贡献。但是,你在编程旅程中越是高级,你就越想要控制权,这就是为什么学习Python中的内存管理概念是必要的。有不同的方式可以做到这一点,不同的并发风味有细微的差别,只有当你深入了解它们的内部工作时才会变得清晰。
2024-12-15 07:25:33
783
原创 Nuqs:解锁URL状态管理
的实用函数,允许您为特定搜索参数(例如字符串、整数)定义解析器,并在服务器组件中安全访问它们。您可以将useQueryState与React的useTransition中的startTransition函数相结合,在服务器重新渲染组件时通过显示加载状态来提供更流畅的用户体验。默认情况下,搜索参数是字符串,但管理URL中存在更复杂的类型(例如数字、布尔值、日期),这时候就需要类型安全的解析器。安装完成后,您可以通过根据您的框架选择适当的适配器,将Nuqs集成到您的React应用程序中。
2024-12-11 09:52:12
880
原创 作为前端你应该知道的TC39会议
它是 ECMA国际组织 的一个技术委员会,负责 ECMAScript 标准的制定和维护,也就是我们熟知的 JavaScript 语言的标准化工作。从下面的介绍,我们还会看到stage2.7,它并不是 TC39 官方标准提案流程中的一个正式阶段,但通常用于内部讨论或作为阶段性标记,帮助开发者和参与者了解提案的进展。例如,某个提案在 Stage 2 阶段时,可能会经历多个版本的草案(例如 2.0、2.1、2.7 等),每个小版本表示细节上的逐步完善,直到准备好进入 Stage 3。
2024-12-10 21:00:56
382
原创 NPM的问题与未来
npm作为Nodejs的包管理工具,它们共同构成了一个强大的生态系统,使得JavaScript开发者能够在服务器端开发复杂的应用程序,并且能够轻松地管理和共享代码。为应对这些挑战,npm 的创始团队推出了全新的工具 vlt 和 vsr,试图彻底革新软件包管理和分发方式。vlt 专注于提高开发效率,从快速依赖安装到智能依赖查询,结合强大的可视化功能和友好的图形界面,全面优化了开发者的日常体验。这种不一致允许攻击者隐藏脚本或依赖项,例如,一个包可能显示没有依赖项,实际上却有,或者显示的包名或版本与。
2024-12-07 18:19:08
1056
原创 基于isSpring的PPT转换
打开 ispring SDK 编辑器,编辑器文件目录默认为 C:\Program Files\iSpring\Platform Ultimate 8\PPT Conversion SDK\CodeBuilder\CodeBuilder.exe,在编辑器最后一个 Tab Activation 中输入工程目录中 ispring/key.txt 中的 key 进行激活即可。虽然有一些坑,但整体使用效果还是不错的,新版本的坑会少一些,建议使用新版本。本身是付费的,有需要Pojieban用以学习研究的可以联系我。
2024-11-17 00:21:36
1136
原创 Javascirpt时区——脱坑指南
但需要注意的是,一些较新的特性(如 Intl.RelativeTimeFormat, Intl.ListFormat, 和 Intl.PluralRules)是在 ECMAScript 2018 及之后的版本中引入的,因此它们的兼容性在早期浏览器和旧设备上可能不如基本功能。然而,直到20世纪初,随着工业化的发展,夏令时才得到了广泛的实施。前面的例子中提到了Inel对象,Intl 对象是 JavaScript 的国际化 API,提供了一系列工具,用于处理语言敏感的字符串、数字、日期、货币等内容的格式化。
2024-11-15 09:24:53
755
原创 Docker入门系列——常见问题
这些问题虽不复杂,但却常常让人头疼,存在隐患,这里我们列举一些常见的问题处理方式。在 Dockerfile 中硬编码 API 密钥或数据库凭据等密钥,会暴露敏感数据,如果镜像被公开分享,可能会带来灾难性后果。这样的轻量级镜像,或者如果它们满足您的需求,选择无发行版镜像。以 root 用户运行容器,如果攻击者设法访问容器,会暴露宿主系统给漏洞。这降低了容器的权限,最小化潜在的安全风险。在镜像中留下不必要的文件,如构建依赖项,会增加大小并引入安全风险。)会授予它们广泛的宿主权限,这是危险的,且很少必要。
2024-11-13 12:46:05
866
原创 Docker入门系列——Docker-Compose
这段配置文件定义了一个名为web的服务,它将使用nginx:alpine镜像,并连接到一个名为webnet的网络。这个网络也是在同一个配置文件中定义的。Docker Compose 的设计目标是简化多容器应用程序的部署和管理,让用户能够通过一个简单的 YAML 文件来定义和管理整个应用程序。这意味着Docker Compose将启动3个相同的web服务实例,它们将作为一个集群运行,以提供高可用性和负载均衡。Docker Compose 是一个强大的工具,用于定义和运行多容器 Docker 应用程序。
2024-11-12 08:57:22
1268
原创 Docker入门系列——DockerCli
Docker CLI 提供了强大的命令,可以显著提高生产力,简化工作流程,并使容器管理更加高效。这有助于诊断性能问题,并可视化每个容器的资源利用情况。通过限制每个容器的内存和 CPU 使用量,防止资源占用过多。在不重新下载的情况下,在机器之间导出和导入镜像。,Docker 将暴露的容器端口映射到随机可用的主机端口。访问有关容器、镜像和卷的详细信息,包括 IP 地址和挂载卷。随着时间的推移,未使用的容器、镜像和卷会累积并占用磁盘空间。在运行中的容器内执行一次性命令,无需启动新容器。指定特定的主机端口(例如,
2024-11-11 19:00:21
559
原创 Docker入门系列——DockerFile的使用
通过遵循编写 Dockerfile 的最佳实践,您可以显著提高容器的性能、安全性和管理性。记住,优化是一个持续的过程,总有改进的空间。文件允许您排除构建上下文中的文件和目录,减少发送到 Docker 守护进程的数据量,并保护敏感信息。基础镜像是您的 Docker 镜像的基础。等工具可以自动分析和优化您的 Docker 镜像,通过移除不必要的组件和减小大小而不改变功能。指令的顺序影响缓存效率。多阶段构建允许您使用中间镜像,并将仅必要的构件复制到最终镜像中。:使用基础镜像和包的特定版本以确保构建的可重现性。
2024-11-10 01:14:15
2062
原创 Docker入门系列——镜像原理
想象一下,镜像就像是一个系统的备份,一旦构建完成,它就可以用来启动一个容器,而容器是镜像的运行实例。Docker 镜像是容器的模板,容器是镜像的运行实例。从 Docker 的官方文档来看,Docker 容器的定义和 Docker 镜像的定义几乎是相同,Docker 容器和 Docker 镜像的区别主要在于 docker 容器多出了一个可写层。这种机制显著提高了构建速度。简单说来,我们可以将 Docker 镜像看成是 Docker 容器的静态时,也可将 Docker 容器看成是 Docker 镜像的运行时。
2024-11-04 13:34:58
1147
1
原创 Docker入门系列——网络
默认情况下,每个容器都是隔离的,这意味着除非连接到共享网络,否则它们不会自动与其他容器通信。Docker 支持使用 --network-opt 设置自定义网络的带宽上限,帮助控制容器的网络带宽。但使用主机网络时容器会共享主机的网络命名空间,因此隔离性会降低,适用于信任容器的场景。桥接网络:适合单主机、多容器之间的通信,典型的使用场景是开发环境的微服务。使用 docker network ls 可以列出当前主机上的所有网络类型,从中选择合适的网络配置。在主机网络中,容器共享主机的网络命名空间。
2024-11-02 17:47:36
1269
原创 新程序员必备的5个VS Code插件
这些插件对于新手来说,就像是新手村的神器,能帮你快速上手,避免很多不必要的麻烦。从第一天起就在你的工具包中拥有Thunder Client,不仅可以节省时间,还可以帮助你更好地理解API如何融入你的项目流程。这听起来可能是小问题,但对于初学者来说,这是一个容易犯的错误——它可能导致难以追踪的错误。——你可以开始用更少的挫折构建更好的项目。这些工具简化了你的工作流程,保持你的代码干净,并让你专注于。保持你的标签同步可能只是一个小细节,但它确保你的HTML保持干净和功能,这样你就可以专注于大局。
2024-10-20 22:41:43
1163
原创 TS中如何正确处理window类型
这是 TypeScript 中的一个规则,同一作用域中同名的接口会合并。因此,通过在同一作用域中重新声明。接口位于 TypeScript 的全局作用域中。的类型,你更准确地描述了你的代码执行的环境。它还允许你将全局定义放在一个单独的文件中,这比试图弄清楚要放在哪个。告诉 TypeScript,其中的内容应该添加到全局作用域中。的全局定义,以包含 TypeScript 不知道的新属性。,这个解决方案会有点烦人,因为你需要在每个文件中添加。的文件中全局定义的。它是代码行数最少的,也最容易放在项目中。
2024-10-15 09:40:30
1373
原创 Egg考古系列-EggCore的生命周期
egg的生命周期除了应用自身使用之外,还要给它的插件和框架开发使用的。而在事件衔接方面,则利用了计数标识的增加,满足条件后触发回调的方式,通过ready-callback模块衔接不同的事件,即便于开发者定义一系列需要完成的任务(通过readyCallback方法),并在所有任务都完成后触发一个就绪事件。在设计上,它坚持了开闭原则、最小知识原则,暴露了mixin去提供拓展,二次包装的可能,同时对修改关闭,只有一个ready方法去控制注册和触发,让使用者无需关心过多的接口,无需考虑过多的使用依赖问题。
2024-10-13 15:51:47
926
原创 如何在Node.js里实现依赖注入
在IoC中,对程序流的控制是颠倒的:依赖项不是控制其依赖项的创建和管理的组件,而是从外部源提供给组件。易于维护:由于组件之间的依赖关系是由外部控制的,因此修改一个组件的依赖项时,不需要修改组件本身的代码,只需要调整外部的配置或代码。在传统的编程模式中,一个组件可能会直接创建并管理它所依赖的其他组件,这会导致组件之间的耦合度较高,难以维护和测试。解耦:组件不再直接依赖于具体的依赖项实现,而是依赖于抽象的接口或抽象类,这样可以降低组件之间的耦合度。这些库提供了更高级的功能,如依赖的自动解析、生命周期管理等。
2024-10-11 20:20:06
929
原创 Vue3中Watch的同步和异步
不过,在实际操作中,当维护别人的代码(尤其是复杂的代码)时,我们一般不喜欢修改现有的代码,而是在上面添加自己的代码。当新的团队成员收到迭代 dataList 相关业务的产品需求时,由于我们的整个业务逻辑现在已经变成了一个线性序列,因此新的团队成员可以快速理清业务逻辑。: 通过将同步逻辑集中在 computed 中,新成员可以快速定位需要修改的业务逻辑,提高开发效率和代码的可维护性。: 代码逻辑应该像一个线程一样,从而使得业务逻辑的流向清晰明了,避免复杂的逻辑分叉和嵌套,这有助于代码的长期维护。
2024-10-08 18:16:17
835
原创 Vue3 中Ref的最佳实践
在点击了Header.vue里面的Menu 后发送一个emit给上层的component,透过上层接收到的toggle事件去修改我们isOpen的value,然后isOpen再透过props 传入Nav.vue里面去控制侧边选单的开起,然后透过侧边选单的close按钮,在发送一个 toggle事件往上去更改 isOpen,然后props 的isOpen也会同步知道被更改,这样就完成了整个的流程!最后,无论我们选择哪种方式来管理状态,重要的是要确保我们的应用遵循清晰的数据流和一致的设计模式。
2024-10-05 15:40:47
1745
1
原创 JavaScript 中最快的循环是什么?
另外该测试仅针对一项特定任务进行的,不同测试用例可能会有不同的结果,不同的内存或者CPU也会有不一样的表现。从本次测试的结果,我们可以看到Map 和 For Loop 的性能是最好的。令人失望的是For-Of,相对于For Loop,作为新出的一个API竟然效率这么拉跨。虽然 For-In 的语法与 For-Of 类似,但它不是为数组设计的,因此不在测试之中。For-In 更适合迭代具有多个属性的对象,因为它迭代的是属性名称(或键)而不是值本身,而与数组一起使用会导致性能问题和意外行为。
2024-10-04 23:39:50
1207
原创 接口隔离原则在前端的应用
换句话说,接口应该尽可能地小,只包含一个类需要的方法,而不是一个庞大的接口,其中包含许多类不需要的方法。使用ISP,你可以为每个任务(例如,打印、扫描)创建单独的接口,这样每个设备只实现它需要的功能。这样,每个人的体验都被简化了,允许每个顾客专注于他们实际想要的东西,没有任何不必要的选项。在这个例子中,UserProfile组件遵循接口隔离原则,专注于用户信息的展示,而不负责处理用户的操作逻辑,这些逻辑被移到UserActions组件中。这样,每个类可以实现它需要的方法,而不需要实现其他的。
2024-10-03 17:02:11
1158
原创 简洁之道 - React Hook Form
在传统的表单处理中,验证通常需要手动编写验证函数,并在表单提交时检查每个字段的合法性。对象来管理表单的输入、值和验证。通过这种字段级别的订阅机制,React Hook Form 能够追踪到特定字段的变化,并且仅在相关字段更新时触发渲染,而不是整个表单。React Hook Form 的验证机制仅在字段值发生变化时才触发,且只会更新发生错误的字段的状态,从而减少整个表单重新渲染的可能。React Hook Form 通过智能的依赖跟踪和渲染优化,避免了不必要的组件重新渲染,从而提高了应用的性能和用户体验。
2024-10-02 06:18:39
1264
原创 你应该知道的Node.js内存管理
Node.js 内存管理和性能优化涉及多个层面,从理解 V8 引擎的垃圾回收机制,到掌握不同的内存监控工具,再到实际的基准测试和生产环境中的调优,每一步都至关重要。这里的目标是避免机器冒烟。在实践中,定期检查内存使用情况、使用合适的调试工具、设定合理的内存阈值,将帮助开发者避免内存泄漏和堆内存溢出问题,确保应用在高负载下依然稳定可靠。借助 Prometheus 和 Grafana 等工具,我们可以设置内存使用的报警阈值,当应用的内存使用达到指定阈值时,系统会发出警报,从而及时发现并处理内存问题。
2024-09-30 09:26:25
1062
原创 React表单:formik、final-form和react-hook-form
当你将react-hook-form与react-select等其他表单输入库一起使用时,也非常简单,你可以使用setValue函数将该组件的值传递给react-hook-form。在我看来,使用final-form的方式与formik类似,但在渲染Form组件后,你必须使用Field组件来传递final-form的props到你的输入元素。根据react-hook-form的官网,由于它限制了不必要的组件重新渲染次数,并且具有最低的挂载时间,因此它具有最佳的性能。表单无处不在,它是每个网站的必备部分。
2024-09-27 19:18:18
1573
原创 zustand源码解读
Zustand 是一个轻量级的状态管理库,由 pmndrs 团队开发,旨在简化 React 应用中的状态管理。它的主要优势包括简单的 API、支持中间件、以及良好的性能。Zustand 是一个强大而灵活的状态管理库,适用于各种规模的 React 应用。其简洁的 API、优秀的性能和扩展性使其成为许多开发者的首选。。
2024-09-25 09:01:44
1096
原创 Egg-Sequelize食用指南
Egg-Sequelize 作为 Egg.js 和 Sequelize 的结合体,为开发者提供了强大的数据库操作能力。在实际项目中,注意性能优化、安全性和数据库设计等方面,可以更好地发挥 Egg-Sequelize 的优势,为项目保驾护航。通过了解和避免这些常见的坑,可以大大提高 Sequelize 在实际项目中的使用效果,确保应用程序的稳定性和性能。Sequelize 提供了丰富的查询选项,支持复杂的查询条件和关联查询。通过 Sequelize 的迁移工具,可以方便地管理数据库的变更。
2024-09-25 08:59:44
873
原创 实用主义的 TypeScript 技巧
TypeScript 作为一种静态类型检查的语言,不仅提高了代码的安全性,还大大增强了开发者的编程体验。有时候,我们需要从某个复杂类型中提取出某个部分的类型,TypeScript 提供了工具类型来帮助我们实现这一点。有时候,我们希望在编写代码时保留联合类型的提示,这样在开发过程中可以更方便地知道哪些类型是可能的。类型表示所有可能的颜色和大小的组合,极大地增强了类型系统的表达能力。在处理联合类型时,使用互斥类型可以让类型系统更清晰,避免意外情况。语句、使用互斥类型替代联合类型、保留联合类型的提示、
2024-09-25 08:58:35
534
原创 请不要在TS中使用Function类型
可以是任何函数,这样的声明没有提供足够的类型约束,导致类型检查变得不那么严格。它明确表示函数的参数是一个任意长度的数组,并且返回值的类型也是任意的,这样既保留了灵活性,也提供了足够的类型信息。代表的是“任意类型的函数”,这会带来类型安全问题。这个签名意味着函数可以接收任意数量的参数,并且可以返回任意类型的值。如果你确实想表达一个可以接收任意数量参数并返回任意类型的函数,可以使用。这样的具体类型签名,你可以在获得类型安全的同时保留代码的灵活性。作为约束,表示可以接收任意参数并返回任意类型的函数。
2024-09-24 20:12:11
823
原创 Typescript进阶:解锁Infer类型的使用
P:如果条件 T extends (...args: infer P) => any 为真,即 T 确实是一个函数,那么类型为 P,也就是函数的参数类型列表。简单来说,它就像是一种“类型占位符”,可以自动帮你在复杂的类型表达式中找到你想要的类型,然后把它提取出来。与这个类似的,TS还有一个内置的通用的工具方法,从函数类型中提取参数类型,并将它们作为一个元组类型。从类型中推断:infer 的作用是从符合条件的类型中“提取”出具体的类型,类似于函数的参数解构。是一个函数类型,这个函数可以接收任意数量的参数(
2024-09-23 20:44:33
1104
原创 从Yargs源码学习中间件的设计
简化复杂逻辑:对于复杂的流程,我们可以拆解成多个简单的步骤,既增加了每个步骤的控制性,又简化了流程操作。例如,在一个请求处理的生命周期中,添加一个新的功能只需要添加一个中间件。我们也可以将中间件的思维迁移到我们的业务开发中,对于复杂的流程,做好模块拆分,就可以增加一个Middlewares来管理对应模块的处理函数,并在流程需要的时候调用他们。除了Yargs之外,Express、Koa等同样也拥有中间件,其实我们可以从他们身上总结出一套通用的中间件实现,在我们需要的时候,可以迁移到其它场景。
2024-09-22 07:28:14
1078
原创 Yargs里的Levenshtein距离算法
编辑距离的概念最初源于信息论中的编码纠错,Levenshtein 的目标是找到一种方法来衡量两个字符串之间的差异,以此用于分析不同数据序列的相似性和错误修复策略。在提出 Levenshtein 算法的年代,计算机科学刚刚起步,信息理论和编码理论等领域的研究对数据传输中的错误检测和纠正有着重要影响。yargs 是一个用于解析命令行参数的流行库,周下载量达到了惊人的93154k,它能帮助开发者轻松地定义 CLI(命令行接口),并提供参数处理、命令组织、help文本自动生成等功能。看完你还会觉得算法没用么?
2024-09-18 20:32:20
1181
原创 TS中除了这些情况请禁用any
我们为函数的返回类型添加了一个条件类型,它反映了我们的运行时逻辑。类型是一个非常强大的类型。丧失类型安全性:使用 any 会导致 TypeScript 不再检查你的代码是否存在潜在的错误,这与引入 TypeScript 的初衷背道而驰。: 这个约束指定T必须是一个函数类型,这个函数接受一个参数列表(每个参数都是unknown类型),并返回一个unknown类型的值。我们需要创建一个泛型类型,这个泛型类型接受一个函数类型作为其类型参数。的工具方法,该方法接受一个函数类型,并返回它的返回值类型。
2024-09-15 17:51:06
677
原创 process.env在TS里的最佳打开方式
例如,可以编写一个专门的配置模块,读取并验证所有需要的环境变量。这种方法主要是通过通用的条件判断消除undefined的情况,不仅提供了环境变量的类型安全性,还能在项目启动时进行严格的环境变量校验。它还为你的环境变量提供了单一的真实来源-env。现在,在项目中的每个文件中,你将获得MY_ENV_VARIABLE的自动完成,它将以字符串的形式键入。如果你的项目很小,并且你不想添加额外的依赖项,则增强全局类型是一个很好的解决方案。枚举类型:z.enum() 可以限制一个环境变量的值必须在一组选定的值之内。
2024-09-14 10:17:53
528
原创 Langchain.js如何实现RAG
有的模型擅长处理文本,有的模型适合图像,如果你的项目需要同时处理多个类型的数据(比如文字和图片),你得确保模型能够稳定、准确地处理这些不同类型的数据。基于大语言模型(LLM)的应用已经随处可见,工作生活都去大模型问一问,对于很多人已经成为一种习惯,细心的你或许会发现LLM 存在的一个显著问题:它们的回答往往过于依赖训练数据,无法访问实时信息,导致出现“幻想问题”(即生成不符合实际情况的回答)。大模型的上下文长度是有限的,因此我们需要将长文档分成合理的小块,保证每个小块能够独立表达一定的语义。
2024-09-12 17:06:21
623
原创 Nodejs-child_process模块解读
这些进程可以执行系统命令、运行各种语言的脚本,甚至可以创建新的 Node.js 实例。启动一个新进程,给定一个命令,并提供流 i.e stdout, stderr 用于直接处理进程的输出和错误。进程可以优雅地关闭,释放资源并执行任何必要的清理工作。技术专门用于需要生成工作进程的情况,这些工作进程是同一应用程序的一部分,但同时运行。这将执行 df -h 命令,解析其输出,并显示总的、已用的和可用的磁盘空间以及使用百分比。方法可以启动任何进程,包括 Node.js 应用程序,并不提供相同级别的隔离。
2024-09-11 09:21:07
1172
原创 如何实现深拷贝?structuredClone
它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。例如,如果一个对象用属性描述符标记为 read-only,它将会被复制为 read-write,因为这是默认的情况下。它是一个强大的工具,用于创建真正的深度克隆,保持嵌套对象和循环引用的完整性,无需额外的逻辑或变通方法。是在 2022 年引入的一个全局函数,它使得 JavaScript 对象的深度克隆变得可能。主要是考核对对象操作方法的熟悉程度。是一个可转移对象的数组,里面的 值 并没有被克隆,而是被转移到被拷贝对象上。
2024-09-10 08:55:22
508
原创 Langchain.js你应该知多点
更具体地说,它是论文《ReAct: Synergizing Reasoning and Acting in Language Models》的实现:该论文展示了一种提示技术,允许模型「推理」(通过思维链)和「行动」(通过能够使用预定义工具集中的工具,例如能够搜索互联网)。通过调用链,开发者可以定义明确的数据流,确保每个步骤的输入、处理和输出都被合理处理。SimpleChain 是最基本的调用链类型,它将输入传递给链中的第一个模块,并依次将每个模块的输出作为下一个模块的输入,直到返回最终结果。
2024-09-08 07:07:51
1029
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人