首页
学习
活动
专区
圈层
工具
发布

Rust 不适合开发 Web API

如果我正在编写一个地理编码器、一个路由引擎、一个实时消息平台、一个数据库或一个 CLI 工具,Rust 最合适。 但去年,我试图用 Rust 写一个传统网站的纯 API 服务,Rust 就不合适了。...但是 Rust 的内存规则并不比 Node.js 或 Python 更安全,用 Rust 编写的 Web 应用程序在系统上不会比 Python 或 Ruby 应用程序安全。...如果你正在写一个视频游戏,暂停执行垃圾收集是不好的。如果你在编写微控制器代码,任何内存“开销”或浪费都是非常糟糕的。但是大多数 Web 应用程序可以节省一点内存开销来换取生产性能。...4Rust 生态系统不是以 Web 为中心的 很多人正在学 Rust,用 Rust 编写 CLI 应用程序或底层代码,并且玩得非常开心。使用 Rust 编写普通 Web 应用程序的人明显少很多。...Juniper 是一个用于 Rust 应用程序的 GraphQL 服务。GraphQL 基本上都是由前端应用程序定义查询,而不是后端。

2.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    AI开启软件2.0时代

    你坐下来写一些Python或C++代码,然后确定程序空间中的一块区域,编写一个算法,这个算法不能太复杂,因为它必须在我们有限的能力范围内。...你指定了一个要搜索的程序子集,例如卷积神经网络架构,你基本上确定了程序空间中的一块区域,你愿意在其中搜索解决方案,然后优化算法会根据你的数据或问题找到该程序空间中效果很好的部分。...你可以继续编写C++和Python代码,以及复杂的代码库,这就像Stockfish的做法,或者你可以退一步,说:“我不知道如何编写一个围棋程序,所以我只是在程序空间中搜索。”...大约一年前我刚到特斯拉的时候,我们基本上有这样一个软件栈。...现在就成了我的问题了。所以现在的问题是,我们有一个挡风玻璃,我们用摄像头向外看,我们试图检测那里是否有雨滴。你可能认为这很简单,我们收集一些数据,训练一个模型,然后尝试部署它,但它完全失效了。

    19510

    《吊打面试官》系列-数据库基础知识

    show processlist,下图就是我在自己的数据库表执行命令的结果,其中的Command列显示为Sleep的这一行,就表示现在系统里面有一个空闲连接。 ?...这个有个我看过的书本的案例: 一个在政府里的朋友说,他们的系统很奇怪,每天早上都得重启一下应用程序,否则就提示连接数据库失败,他们都不知道该怎么办。...按照这个错误提示,应该就是连接时间过长了,断开了连接。...我一般会定期断开长连接,使用一段时间后,或者程序里面判断执行过一个占用内存比较大的查询后就断开连接,需要的时候重连就好了。 还有别的方法么?你这种感觉不优雅呀小老弟。...select SQL_NO_CACHE * from B 缓存在MySQL8.0之后就取消了,所以大家现在应该不需要太关注这个问题,主要是我之前用的版本都不高,所以缓存一直有,在《高性能MySQL》书中也看到了一些关于缓存的介绍

    74920

    在CDP平台上安全的使用Kafka Connect

    通常,您会遇到四种类型的错误: 一般配置错误与特定属性无关的错误出现在错误部分的表单上方。...缺少属性有关缺少配置的错误也出现在错误部分,带有实用程序按钮添加缺少的配置,这正是这样做的:将缺少的配置添加到表单的开头。 特定于属性的错误特定于属性的错误(显示在相应的属性下)。...现在这篇文章的目的是展示 Kafka Connect 是如何集成到 Cloudera 生态系统中的,所以我不会深入介绍如何设置这些连接器,但是如果你想跟随你可以在这些文章中找到详细的指导: MySQL...在连接器页面上有连接器的摘要以及一些整体统计信息,例如有多少连接器正在运行和/或失败;这有助于一目了然地确定是否有任何错误。...现在,在以mmichelle身份登录并导航到连接器页面后,我可以看到名为sales.*的连接器已经消失,并且如果我尝试部署一个名称以监视以外的名称开头的连接器。部署步骤将失败,并显示错误消息。

    1.9K10

    2018年伊始,系统编程语言Rust为何令程序员感到兴奋?

    所以谈谈为什么现在喜欢使用Rust语言,以及几个关于Rust语言明年发展趋势的想法! 我和Rust 我是一个中级Rust程序员(绝对不是高级程序员!)。...现在正在写一个Rust的剖析器,这是一个迄今为止大约有1300行Rust代码的软件。2013年,我用Rust语言写了一个很小的400行的“操作系统”(基本上是一个小键盘驱动程序)。...就像:我正在用Rust语言编写一个Ruby分析器,它只通过访问其PID、内存映射以及从进程读取内存的能力,可以从任意Ruby程序中提取Ruby堆栈跟踪。它已经可以工作了!...只是遵循指令:把ref x代替x ,完全编译程序!现在这种情况经常发生—只是做了编译器告诉我要做的事情,而且很有效! 下面是另一个简单的错误信息的例子:不小心把Err()参数省略掉了。...基本上每一次有这样恼人问题的时候,我问Kamal(写Rust比我更多的一个人),他说:“噢,那会有一个RFC(Request For Comment),或者至少人们正在积极地讨论如何解决那!”。

    4.7K100

    07 Confluent_Kafka权威指南 第七章: 构建数据管道

    他们关注的问题是,我如何从kafka弹性得到数据,这事一个值得有效提出的问题,特别是如果你需要数据保持弹性,而且它目前正在kafka中。我们将寻找方法来解决这一点。...但是我们将通过一个更大的背景下看kafka的使用来开始讨论。这个背景包括至少两个不是kafka本身的终点。...如配置管理、偏移存储,并行化、错误处理,对不同数据类型支持以及标准的管理REST API。 编写一个连接的小的应用程序将kafka用于数据存储听起来很简单。...在这个例子中,我们只启动一个: bin/connect-distributed.sh config/connect-distributed.properties & 现在启动文件源,做为示例,我们将配置它来读取...我们仍然有一个file属性,但是现在它引用的是目标文件而不是记录的源。并且指定的topic而不是指定的主题。

    3.9K30

    代码调试的最佳指南

    像往常一样,我得到了很多有帮助的回答,现在我对如何教授代码调试技巧/描述调试过程有了些想法。 ?...重现你的bug(但是要怎么做?) 接下来在这篇文章里,我将尝试整理大家针对我的关于代码调试的推文发来的各种不同的观点和看法。...检查你的假设 很多调试工作都基于一个假设:你确定的事情是真的(比如说:“等一下,这个请求是要发送到新服务器,对吧,不是旧服务器????)。但是实际上……不是真的。我试图列出一些常见的错误假设。...这里我想重点强调一下:信息是最重要的,你需要做任何必要的事情来获取信息。 ? 编写代码使其更易于调试 一些人提到的另外一个观点是:我们可以改进程序,使其更加易于调试。...这是一个nginx错误,在本例中基本上是因为“程序在响应一个请求而发送任何内容之前崩溃了”。

    1.3K40

    代码调试最佳实践

    我在Twitter上发了一条推文说,我从来没有见过任何好的调试代码的指南。像往常一样,我得到了很多有帮助的回答,现在我对如何教授代码调试技巧/描述调试过程有了些想法。...重现你的bug(但是要怎么做?) 接下来在这篇文章里,我将尝试整理大家针对我的关于代码调试的推文发来的各种不同的观点和看法。...这里我想重点强调一下:信息是最重要的,你需要做任何必要的事情来获取信息。 编写代码使其更易于调试 一些人提到的另外一个观点是:我们可以改进程序,使其更加易于调试。...这是一个nginx错误,在本例中基本上是因为“程序在响应一个请求而发送任何内容之前崩溃了”。...我在学习Rust的时候经常碰到这样的问题,Rust编译器会提示我“你有一个奇怪的lifetime错误”,而我就会想“呃,好吧,Rust,我知道了,现在我就去搞清楚lifetime是如何工作的!”

    1.2K10

    dnspeep:监控 DNS 查询的工具

    在过去的几天中,我编写了一个叫作 dnspeep 的小工具,它能让你看到你电脑中正进行的 DNS 查询,并且还能看得到其响应。它现在只有 250 行 Rust 代码。...我会讨论如何去尝试它、能做什么、为什么我要编写它,以及当我在开发时所遇到的问题。 如何尝试 我构建了一些二进制文件,因此你可以快速尝试一下。...因此,我决定编写一个小程序(dnspeep)来进行匹配,并排除一些我认为多余的信息。...我在编写时所遇到的问题 在撰写本文时,我遇到了一些问题: 我必须给 pcap 包打上补丁,使其能在 Mac 操作系统上和 Tokio 配合工作(这个更改)。...该程序没有做的一件事就是告诉你哪个进程进行了 DNS 查询,我发现有一个名为 dnssnoop 的工具可以做到这一点。它使用 eBPF,看上去很酷,但我还没有尝试过。

    3.3K10

    Y2K——百年一遇的BUG

    好久不水文章了,今天来水一小篇 大家不要小瞧这一篇文章,这个bug真的是百年才能一遇呢,所以还是耐心的看完本篇文章吧!...今天了解到了一个新名词:MillenniumBug 他的简称是Y2K Millennium翻译如下 Bug我想大家都知道他的意思,就是虫子,或者是电脑中的漏洞。...所以这个单词翻译过来就是千年虫 但是千万别想偏,这不是山海经中的怪物,这是真正发生过的bug 据记载,2000年1月发生的千年虫bug事件。...程序员正在使用COBOL(通用面向业务的语言)和RPG(报表编程生成器)编写业务应用程序代码,在大型机上运行。程序员以yymmdd的形式存储日期,共涉及六个字符,按升序自动排序。...在计算机界,它开始成为一个需要纠正的问题。然后,在1997年,这种情况已成为公众所知。 必须作出决定,要么从头开始重新编写程序,从头到尾重写程序,要么修复先前存在的程序和存储的日期。

    1.5K20

    学习Android之前,如何学习Java

    如果你是没有编程基础,但是想要开发所遇自己的Android应用,那么这篇文章可能对你有帮助,如果你已经是以为具有丰富经验的Android开发者,我们更希望你去研究更值得你看得内容,因为这里太基础了...但是,这里我们抛开JavaWeb不讲,以一个Android零基础的初学者角度,探讨怎样快速入门成为Android入门开发者,并有能力编写自定义的Android APP。...(3)学习产看Java开发文档:查看开发文档是一个专业程序员必备的技能,作为初学者,你需要尝试了解它,开发文档就像一本大词典,你可以不去通读它,但是你必须会使用它,当你在编写代码时遇到不懂得知识你可以通过查看开发文档解决...但是Java开发文档设计的专业术语比较多,我相信大多看了这片文章的同学可能都和小编一样是普普通通的人,因此我更建议你先看别人录制的视频或者别人写的书籍,这样我们能从通俗易懂的语言中慢慢了解Java,等掌握了一定基础之后再看...只有不断学习与动手练习才能掌握Java基础,这个过程你可能会遇到很多头疼的Bug,但是不要灰心,大多数人都要经历这样的过程。但是相比最后得到的,现在的付出是值得的。

    41330

    The Tomcat connector configured to listen on port 18081 failed to start. The port may already be in

    解决端口冲突的3种办法 前言: 在应用程序开发过程中,启动失败是比较常见的问题。其中一个常见的原因就是端口被占用或者连接器配置有误。...在开发的过程当中,软件直接崩掉了;我重新打开之后启动服务的时候就报下面的错误; *************************** APPLICATION FAILED TO START *****...这是一个应用程序启动失败的错误提示。提示信息显示 Tomcat 连接器配置监听端口 18081 失败,可能是端口已经被占用或者连接器配置有误。...您可以尝试使用 netstat 命令查看当前系统中哪些进程正在监听 18081 端口,然后根据情况进行调整。...windows 程序命令输入框 在dos窗口中输入指令:netstat -ano | findstr 18081,其中1808118081是指你被占用的端口号,然后会显示出现在占用该端口号的pid。

    31210

    【十问十答】对话Go语言开发团队

    你们在Go语言中看到了哪些反模式,正确的做法是什么? Dave Cheney:我觉得是包,现在的包实在是太多了。...接下来,人们会不会尝试使用Go来进行桌面和嵌入式应用的编写? Dave Cheney:我乐于看到Go能在小的ARM处理器上有所表现。我们需要让编译器能针对不同的ARM生成相应的代码,这还比较简单。...Google纽约办公室的David Crawshaw正在做这方面工作。...我们已尝试重构dl.google.com,产生更少的垃圾,延迟非常小。现在Google内部只剩一个客户的实时需求Go垃圾回收器还无法满足。 Q6:类似dlopen的动态载入代码有什么新进展吗?...Brad Fitzpatrick:我想在连接器用Go重写之前都没时间做。

    1.4K60

    Apollo:GraphQL现在可以轻松连接到REST API

    但是,尽管组织长期以来一直寻求将 REST API 与 GraphQL 集成,但单独集成每个 API 的过程仍然是一个普遍且持续存在的痛点。...“我们上周宣布的 REST 连接器的动机是,现在行业中存在一个巨大的痛点,我们每家公司都有 20 多年的‘80 只眼睛’。” 要管理的大多数 API 都是 REST,但也有其他的。...“当你看到所有采用 Apollo 的公司时,他们正在解决的问题是一个编排问题:如何将所有这些 API 连接到我们想要编写的软件?这关系到如何以正确的顺序调用这些 API。如何将它们链接在一起?...“你知道,我猜开发人员花费的总时间中有很大一部分用于编排代码,这太疯狂了——我的意思是,如果你看看云原生堆栈的其余部分,它们都已转向这种声明式方法,我们无需编写代码即可将软件部署到云主机上,”DeBergalis...“编写代码是有风险的:它速度慢,会增加性能开销,并会损害安全足迹。” 标准的标准 GraphQL 是一个开放标准。

    23200

    劝退背后。

    我就是这样走过来的,用了10年时间,尝试了 N 多个项目,才慢慢找到了适合自己的事情。 从职场的社畜996脱离出来,副业超过主业、自由职业、到现在已经创业2年了。 但是我真的不建议大家像我这样了。...第一,时代不一样了,我当时能够遇到的机遇(运气),其他人未必遇得到。 第二,真的是太难了,当初跟我一起做的小伙伴,没有几个现在还在这条赛道上的。...到现在,基本上能用钱解决的,我都不会自己瞎琢磨。 比如,网站速度太慢了,直接上 CDN ;各大视频网站VIP全买;不太会搞运营直接找请高手来帮忙;对哪个项目感兴趣直接加入某个社群。...有时候问他们一句话,就顶我瞎琢磨一个月。 到现在我每年付费大几万,加入各种社群或者学习的圈子,给自己充电扩展可能性。 不然创业公司吃老本,不出几年必死。...3 聊一聊 最后还是简单聊一聊,这个【就聊挣钱】的星球都是干啥的。 大家不要对它期望太多,但是我觉得这个星球,真的会对很多人的观念、想法产生影响,推着他们往前走一步。 仅此而已。

    50310

    大语言模型如何帮助网站改版

    经过探索各种 Python 库,包括 spaCy (最终放弃了命名实体识别的尝试),我们终于蹒跚前行,找到了 90% 的解决方案。然后,感觉到收益递减,我用手工完成了剩下的工作。...如果有什么改变的话,我希望 LLM 可以帮助普及编程——同样面临验证结果是否容易、快速和自信的约束。 现在让我们快进到完成练习后我编写的一个更有趣的提示。...我的经历与 AI 专家 Simon Willison 在这个播客中的描述一致: [01:32:42] 事实上,当它编写代码时,我看到它犯了我也会犯的同样错误,像出现偏差之类的。...所以它基本上是以我会编写的完全相同方式编写了代码,只是它的速度非常快,我只需坐回来看它工作就可以了。 下面是 GPT-4 编写的 sentence-case 函数的中间迭代版本。...我们看到 LLM 注意到了我最初也曾犯过的各种错误。它正在使用自行构建的测试(从我提供的测试数据)来发现这些错误。过去我也试过将测试输出反馈到循环中,但效果不佳。

    29810

    连接时代的定位与思考

    但是在移动互联网,我们有了人,有了联络人,知道他的社交网络之后,其实有很多底层的工作可以做。于是我们产生了新的一个重新的定位,就是做连接器。...,下一步正在尝试做连接的硬件,我们看一些例子。       ...,腾讯的市值这么大,基本上可以说我们算是再造了一个当时的腾讯。      ...Facebook是不做游戏,他是做连接,是卖广告给开发商,但是腾讯有点不同,腾讯走了一半,它有大量的外部的开发者,但是自己也尝试研发,自研游戏,因为只有这样才大概了解这个产业、这个生态应该做什么事情才更适合开发者...因为我知道张朝阳是一直坚定的在鼓励这个行业要走向知识产权,要重视,不管从视频、音乐,我们都并肩作战,虽然说现在还没有完全解决问题,但是已经很明显在改善。

    1.1K90

    我将 20 年前开发的操作系统迁移到 .NET 6,竟然成功了!

    作者 | Scott Hanselman 译者 | 弯月 早在2001年,我用C#为学校的一门300系列的操作系统课程编写了一个微型虚拟操作系统,后来在2002年将其移植到了VB.NET。...在本文中,我想尝试一下能否利用.NET升级助手,将这个已有20年历史的项目搬到.NET 6上运行。 下面,我们开始: $ upgrade-assistant upgrade ....ILLink.Tasks的引用,这是当年Mono的连接器的一个预览功能,目的是压缩应用程序的最终大小,并裁剪掉无用的代码。...我只需要改一个数字,看看能否恢复并构建,但也可以尝试一下dotnetoutdated工具,这个工具非常好用: 这个“outdated”工具妙就妙在它会调用NuGet来查看某个包是否有新版本。...当年为学校编写的 .NET 1.1 现在都移植到了 .NET 6.0上,而且还能跨平台,自带运行时,而且只包含一个仅有11MB的EXE文件。

    69820

    【译】下一个大型编程语言是英语(自然语言)

    为了更加简单,它用普通英语进行了说明: 此外,你可以编辑这个过程的每一步,如果你愿意的话,用自然语言添加自己的想法。基本上,你可以给 CW 提供你自己的成功测试标准,以便它在编写代码时进行检查。...我尝试使用 CW、ChatGPT 和 Claude 对我们内部的 Spiral 应用程序进行相同的更新(使用相同的初始提示),以便我可以将它们并排进行比较。...这个任务产生了更多的混合结果,但原因可能会让您感到意外。 为了开始,我写了一个简短的段落,说明了我认为共享功能应该如何工作,CW 为此建立了一个规范: 但是当我看着规范时,我的眼睛模糊了。...CW 接受了这一点,并创建了它认为我想要的具体模型。但是尝试将 CW 的设计映射到我头脑中的模型是令人费解的。任务太大了;我觉得我需要以某种方式将其可视化。...我们正在一步一步地共同建立功能的共享模型 - 因此我们都清楚最终它应该是什么样子。 第二,我经常在 ChatGPT,我的代码编辑器和我正在构建的任何应用程序的本地版本之间进行快速反馈循环。

    17610
    领券