讲真刚看到这题的时候,我是用这种眼神看面试官的:你TM逗我呢? 尊重一下我可行?没10年脑血栓问不出这玩意, 但看他一脸"贱笑",一副你一定答不出来的感觉,我觉得此事定不简单......别急,这其实是一个障眼法,只是取巧蒙蔽了我们的双眼,请看下图 真相大白:if的后面有个隐藏字符,本质上是声明了一个无论输入啥都返回true函数,而下面的代码块,更是和这个函数没半毛钱关系,怎么样都会执行...解法4:“with” MDN上映入眼帘的是一个警告,仿佛他的存在就是个错误,我也从来没有在实际工作中用过他,但他却可以用来解决这个题目。...比较的规则如下表(mdn) 从表中可以得到几点信息为了让(a == 1),a只有这几种: a类型为String,并且可转换为数字1('1' == 1 => true) a类型为Boolean,并且可转换为数字...1 (true == 1 => true) a类型为Object,通过转换机制后,可转换为数字1 (请看下文) 对象转原始类型的"转换机制" 规则1和2没有什么特殊的地方,我们来看看3: 对象转原始类型
枚举之间转换 首先我要说明的是在 C# 中不支持不同枚举数组之间的直接转换,所以如果想要实现不同枚举数组之间的转换我们可以利用 CLR 宽松的赋值兼容性这一特点来进行转换,需要转换的两个枚举必须具有相同的基础类型...同样,我们通过一个例子来看一下具体实现方法。 在使用这种方法时有可能会出现意外的错误或结果,并且相关开发规范中并没有说这种方式每次都起作用,因此我不建议这么使用,除非在一些极端场景中。...下面我简单来讲解一下这两个方法的使用。 枚举和数字之间转换 枚举转换为数字我们可以使用强转,例如 返回结果是 0 。...定义标志枚举的方法如下: 在上面的代码中你会发现一个规律,每个枚举值对应的整数值都是 2的n次方,这是为什么呢。...在标志枚举中要求多个枚举值相互组合后的结果不能包含在标志枚举中,并且基于按位运算的特性可以很方便的使用位运算符来计算一个枚举值是否包含了另外一个枚举值,这在权限系统中相当有用。
再然后,我们必须明确的找出性能瓶颈在哪里,而不能漫无目的的一通乱搞。 需求描述 这个项目是我在上家公司负责一个单独的模块。...对这个模块的拆分要求是,压力测试 QPS 不能低于 3 万,数据库负责不能超过 50%,服务器负载不能超过 70%,单次请求时长不能超过 70ms,错误率不能超过 5%。...所以,我们首先要做的就是将写库操作剥离开来。提升每一次请求响应速度,优化数据库连接。 整个系统的架构图如下: 将写库操作放到一个先进先出的消息队列中来做。...我猜测,TCP 连接数就是引发瓶颈的问题,但是因为什么原因所引发的暂时无法找出来。 这个时候猜测,既然是无法建立 TCP 连接,是否有可能是服务器限制了 socket 连接数。...net.ipv4.tcp_tw_reuse = 1 我们再次压测,结果显示: QPS 5万,服务器 CPU 70%; 数据库连接正常,TCP 连接正常; 响应时间平均为 60ms,错误率为 0%。
启动断点调试: 在快捷菜单区域打开 ,并选中待断点的请求后在右键菜单中勾选断点菜单项。...上图是预请求的截图,当到 POST 请求并手动触发执行发出请求后,响应会再次触发我们的调试窗口: 同样我们可以手工编辑响应的内容并再次触发执行将响应的内容交给页面去做显示。...本地资源代理: 在前面的文章中有提到一个浏览器插件,我们还做了一次简单的扩展,就是拦截我们开发中的请求,模拟一个固定的响应结果返回给页面,我们就可以暂时脱落服务器的响应数据来调试页面的特定数据下的问题,...: 我们需要在右侧上方的窗口配置需要允许跨域访问的地址规则,在右侧下方的窗口配置允许跨域的响应头字段: 请注意各个菜单的值,我们需要新增一个 header,并重写到响应中,替换我们给定的 header...,就比如说在网上找到的下面这份配置: 看似都通用的标识,那是不是应该可以满足我这次放开跨域的要求呢?
缺点是,我们又必须在 Python 的文档字符串使用 YAML 语法,细微的差别可能导致一些错误。...启发 FastAPI 地方 找到一个拥有极端性能表现的方法。 这就是为什么 FastAPI 基于 Starlette,因为它是目前性能最高的框架(由第三方测试基准)。...它被设计为具有接收两个参数的函数,一个“请求”和一个“响应”。然后,您从请求中“读取”部分,并将“部分”“写入”响应。由于这种设计,不可能用标准Python类型提示将请求参数和主体声明为函数参数。...我从未在完整的项目中使用过它,因为它没有安全性集成,因此,我无法用基于 Flask-apispec 的全栈生成器替换我拥有的所有功能。我在项目积压中创建了添加该功能的请求。...在长时间寻找相似的框架并测试了许多不同的替代方案之后,APIStar 是最佳的选择。然后,APIStar 不再作为服务器存在,然后 Starlette 出现了,并且为此类系统提供了新的更好的基础。
可以做分布式本地库存 + 单独服务器做库存均衡 大流量的处理方法:分而治之 怎么得到一个事务会消耗多少内存?...扩容或调优,让它达到 用压测来确定 优化环境 有一个50万PV的资料类网站(从磁盘提取文档到内存)原服务器32位,1.5G 的堆,用户反馈网站比较缓慢,因此公司决定升级,新的服务器为64位,16G 的堆内存...很多用户浏览数据,很多数据load到内存,内存不足,频繁GC,STW长,响应时间变慢 为什么会更卡顿? 内存越大,FGC时间越长 咋办?...搜索jstack dump的信息,找 ,看哪个线程持有这把锁RUNNABLE 作业:1:写一个死锁程序,用jstack观察 2 :写一个程序,一个线程持有锁不释放,其他线程等待 为什么阿里规范里规定...(不是很专业,因为多有监控,内存增长就会报警) 2:很多服务器备份(高可用),停掉这台服务器对其他服务器不影响 3:在线定位(一般小点儿公司用不到) 4:在测试环境中压测(产生类似内存增长问题,在堆还不是很大的时候进行转储
Marshmallow 一个由 API 系统所需的主要功能是数据的序列化,就是把数据从编程语言中的对象转称成可以在网络上传输的对象,比如数据库中的数据转换为 JSON 对象。...缺点是,我们又必须在 Python 的文档字符串使用 YAML 语法,细微的差别可能导致一些错误。...它被设计为具有接收两个参数的函数,一个“请求”和一个“响应”。然后,您从请求中“读取”部分,并将“部分”“写入”响应。由于这种设计,不可能用标准Python类型提示将请求参数和主体声明为函数参数。...在受 Falcon 设计启发的其他框架中,也是有一个请求对象和一个响应对象作为参数。 启发 FastAPI 地方 寻找获得出色性能的方法。...我从未在完整的项目中使用过它,因为它没有安全性集成,因此,我无法用基于 Flask-apispec 的全栈生成器替换我拥有的所有功能。我在项目积压中创建了添加该功能的请求。
因此,如果你在函数中使用sleep(),在多线程中,一个线程进入sleep状态,操作系统会切换到其它线程执行,整个程序仍然是可响应的(除了该线程,它必须等待睡眠状态结束);而对协程来说,同一loop中的其它协程都不会得到执行...假设你使用的底层通讯的API是发送和接收分离的(一般比较靠近底层的API都是这样设计的),那么你会面临这样的问题:当你通过异步请求(比如send)发出API request后,服务器的响应可能是通过on_message...键为外发请求的track_id,该track_id需要服务器在响应请求时传回。 # 值为另一个dict,储存着对应的asyncio.Event和网络请求的返回结果。这里也可以使用list。...当框架(或者你的网络例程)收到服务器返回结果时,根据track_id # 找到对应的event,触发之 await event.wait() # 获取结果,并做清理 response...这里唤醒在L1处等待执行的 ---- 所以,代码到底怎么写?!!! 我相信,看了这么久,还是没有几个人知道这玩意儿到底要怎么写代码。 说实话,换我看了这么多我也不知道啊。 协程可以做哪些事?
一个区域显示本地目录结构,包括硬盘驱动器上的所有文件。另一个区域显示服务器的内存,包括其中的文件和文件夹。该软件使用户可以在两个区域之间移动文件。如今,浏览器和操作系统的命令行也可以用于FTP。...您通常可以从服务器提供商那里获得。在FTP连接中,通常会打开两个通道。首先,客户端和服务器使用端口21建立命令通道。客户端使用此通道将命令发送到服务器,作为响应,服务器发送回状态代码。...发生这种情况时,协议会注意错误。如果在传输完成之前断开连接,则可以在重新建立连接后恢复该过程。客户端和服务器之间通过文件传输协议进行交换我们可以区分主动和被动 FTP。...在活动版本中,客户端如上所述使用端口21建立连接,并告诉服务器可以使用哪个端口来传递其答案。但是,如果客户端受防火墙保护,则服务器将无法发送任何答案,因为所有外部连接均被阻止。...从那时起,由于传输是完全未加密的,因此使用FTP已涉及许多安全风险。这就是为什么开发了另外两个安全版本的原因,这些版本目前正在相互竞争:FTPS和SFTP。第一个版本是使用SSL的FTP。
对网址进行DNS解析,得到对应的IP地址。 根据这个IP地址,找到对应的服务器,并发起TCP的三次握手。 建立TCP连接后会发起HTTP请求。 服务器响应HTTP请求。 浏览器解析得到html代码。...比如:小区的网络提供商。 本地区DNS域名服务器也不能解析,会去根域名服务器请求解析(.com.cn.org等根域名服务器)。 根域名服务器查询并返回域名对应的服务器的地址。...TCP(传输层)是一个端到端的可靠的面相连接的协议,HTTP基于传输层TCP协议不用担心数据传输的各种问题(当发生错误时,会重传) 问题5:说一下三次握手?...(我准备好了,你准备好了吗) 这个请求到达服务端后,服务端会给予前端确认收到的响应信息(报文)。...(我也准备好了,你确认下) 浏览器接收到来自服务器确认收到报文后,明确了从客户端到服务器的数据传输是正常的,并返回一段TCP报文。(确认成功) 问题6:聊一聊四次挥手?
1.3、建立连接为什么要三次握手? 假如让我和你来实现一次完整可靠的连接,会怎么做呢?...第一次握手,我告诉你我要和你建立连接 第二次握手,你告诉我你能收到我发送的消息 第三次握手,我告诉你我能收到你发送的消息 然后,你能收到我发送的,我能收到你发送的,咱俩下面就可以畅聊了 1.4、断开连接为什么要四次挥手...//客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权...//请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求...2.2.5、HTTPS完整过程大致如下两图 要点: 使用公钥对摘要加密得到签名,使用私钥解密签名得到公钥 为什么需要数字证书? 因为网络通信的双方都可能不认识,那么就需要第三方介绍,这就是数字证书。
我们可以设立一个标准,只要服务器程序支持这个标准,框架也支持这个标准,那么他们就可以配合使用。一旦标准确定,双方各自实现。这样,服务器可以支持更多支持标准的框架,框架也可以使用更多支持标准的服务器。...从这继续... 1、wsgiref 我们利用wsgiref模块来替换我们自己写的web框架的socket server部分: """ 根据URL中不同的路径返回不同的内容--函数进阶版 返回HTML页面...): start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ]) # 设置HTTP响应的状态码和头信息...httpd.serve_forever() 2、jinja2 上面的代码实现了一个简单的动态,我完全可以从数据库中查询数据,然后去替换我html中的对应内容,然后再发送给浏览器完成渲染。...我这里用的特殊符号是我定义的,其实模板渲染有个现成的工具: jinja2 下载jinja2: pip install jinja2 index2.html文件: <!
当然本篇文章会介绍得详细一点,不能写一篇水文,毕竟我给它命名为《你真的会用Retrofit2吗?Retrofit2完全教程》。...ResponseBody, 这也是什么我在前面的例子接口的返回值都是 Call, 但如果响应体只是支持转换为ResponseBody的话何必要引用泛型呢, 返回值直接用一个Call就行了嘛,既然支持泛型...其它类型的Converter,如果不能处理返回null // 主要用于对响应体的处理 public Converter<ResponseBody, ?...6、自定义CallAdapter 本节将介绍如何自定一个CallAdapter,并验证是否所有的String都会使用我们第5节中自定义的Converter。...7.5 关于源码 看到这儿可能有小伙伴要问为什么源码没有把类拆分到单独的文件,命名也不能体现其用途,这里主要是因为方便大家看源码,而不是将注意力放在反复跳转上,另一方面也是因为同一个例子中不可避免的使用其它小节要介绍的内容
等这一些问题,我今天写这篇文章的目的就是来告诉大家,我为什么要学爬虫,爬虫的本质是什么。 2.我为什么要学爬虫 先说我吧,我当初为什么要学爬虫呢?...;爬虫能帮我们省掉一系列繁琐的时间(比如我要下载我爱看图这个网站的图片,我不可能一张一张的点,我可以写一个爬虫帮我全部下载完) 3.爬虫的本质是什么 爬虫的本质我觉得就是一句话 模仿浏览器去打开网页 我们来看一个例子吧...status code 表示服务器返回的状态吗,这里是200,表示OK 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息--表示请求已接收,继续处理 2xx:...常见状态代码、状态描述、说明: 200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,...URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
为什么这件事情很重要?why?因为您无法保证自己学到的东西永远都用于工作,它会健忘掉。 提前说明:官方手册,man手册,帮助命令等都是用于辅佐,不存在谁比谁权威、全。请自己思考并取舍。...得到的主机存活响应包也回复了一个ICMP echo 响应包并且回复了一个TCP 80 RST响应包。所以,我们知道此主机确实是在的。 不妨思考一下,ICMP的type 8类型(以及其他协议字段值?...这就是为什么,会存在其他方式与参数来尝试性的看看响应,设备会不会出现意外的响应包?或者意外的情况?...想想与类比burpsutie的抓包与重放,都是一个道理与观察得到的。...我都匹配到了你SSH版本的信息了,还不能确认你是SSH服务吗? 您想给nmap做贡献吗?这绝对是一件有意义的事情。
大家好,我是Tom哥~ 今天主要给各位分享TCP网络的一些常见知识点,日常工作或面试会经常遇到。考虑内容篇幅不小,建议先收藏,慢慢咀嚼。...TCP每个请求都要有响应,如果一个请求没有收到响应,发送方就会认为这次发送出现了故障,会触发重发。为了提升吞吐量,一个TCP段再没有收到响应时,可以继续发送下一个段。...服务器推送:服务器主动将一些资源推送给浏览器并缓存起来。 HTTP 与 HTTPS 的区别?...端口 443 HTTP 协议为什么要设计成无状态? 答案:HTTP是一种无状态协议,每个请求都是独立执行,请求/响应。...客户端收到服务器的响应后会先验证证书的合法性(证书中包含的地址与正在访问的地址是否一致,证书是否过期) 如果证书验证通过,就会生成一个随机的对称密钥,用证书的公钥加密。
尽管有一些快速消除此错误的方法,但今天我们不要掉以轻心!相反,让我们看看 CORS 到底在做什么,以及为什么它实际上是我们的朋友 ❗️ 在本博文中,我不会解释 HTTP 基础知识。...我们发送了完全相同的请求,但这次浏览器显示了一个奇怪的错误? 我们刚刚看到了 CORS 的作用! 让我们看看为什么会发生这个错误,以及它到底意味着什么。...同源策略阻止了这种情况发生,并确保邪恶网站的开发人员不能随意访问我们的银行数据 好的,那么... 这与 CORS 有什么关系呢?...服务器收到这个预检请求,并以服务器的 CORS 头部为空的 HTTP 响应进行响应!浏览器接收到预检响应,其中除了 CORS 头部之外不包含任何数据,并检查是否应该允许 HTTP 请求!...我们现在可以在跨源请求中包含凭据了 虽然我认为我们都可以一致同意,CORS 错误有时可能让人沮丧,但它确实使我们能够在浏览器中安全地进行跨源请求(它应该得到更多的关注 lol) ✨ 显然,同源策略和
我做了一份详细的自我介绍,通过三段开发经历来总结出了我的一些优点和开发经验,用讲故事的形式说明情况,最后点明故事中表现了自己具有哪些素质,点明自己为什么可以做前端的工作。...:代表请求已成功被服务器接收、理解、并接受。...304状态码:自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。...对于需要登录的网页,服务器可能返回此响应。 403状态码:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。...404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。 5xx系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
每次代码审查时我都问自己:「他们为什么这样做?「。每当我找不到合适的答案时,我就会去和他们谈谈。 在第一个月后,我开始在同事的代码中找到错误(就像他们对我代码做的一样)。...仅仅编写这些测试并不能提高我代码的质量,而编写代码却可以。但是我从阅读测试代码中获得了写更好代码的直觉。 但是,并不只有这一种测试,这就是为什么有部署环境测试的原因。...这里的想法是尝试捕获单元和系统测试无法捕获的错误。例如,请求系统和响应系统之间的 API 不匹配。个人项目与小公司的情况大不一样。不是每个人都有资源来搭建自己的设备。...你不能将这些信息存到代码中,因为这样任何人都能看得到。 把它们作为环境变量?这是一个好主意。但你怎么把它们放在那里?...如果我不知道 bug 在哪我就不能修改错误。其中一种最糟糕的感觉是从客户那里知道有 bug。 「我做了什么?!我甚至不知道我的系统出了什么问题?」
这减少了服务器和客户端之间发送的数据量,甚至比 GraphQL 更少,因为你没有发送查询负载,如果响应仍然有效,则服务器发回一个 304 响应(未修改)。...GraphQL 服务器可以自由地使用它期望的任何类型进行响应。如果你发送一个查询,则服务器的响应可以不符合自省响应中的 GraphQL 模式。以 Apollo Federation 为例。...当我们讨论 GraphQL 中的类型安全时,其实我们的意思是,我们相信 GraphQL 服务器的行为会与自省查询响应保持一致。为什么我们不能同样信任接口定义规范呢?我想我们可以。...无论使用哪种,你最终都会得到一个 GraphQL 模式,它描述了所有的类型和字段,并允许你对它们进行注释。 那么,有什么区别呢?OAS 设置开销更大。...8 错误处理更好 关于错误处理,作者描述了这样一个场景:与使用部分数据响应的单个 GraphQL 查询相比,客户端将不得不进行 3 次连续的 REST API 调用。
领取专属 10元无门槛券
手把手带您无忧上云