东风草堂blog

公众号:来风说


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

python记录

发表于 2022-03-21 | 更新于: 2023-04-02 |
在 Python 中,yield 是一个关键字,用于定义生成器函数。生成器函数可以像正常的函数一样定义,带有参数和代码块,在调用时返回一个迭代器。但与普通函数不同的是,当函数遇到 yield 关键字时,它会暂停执行并返回一个值给外部的调用者。然后,当下一次调用 .next() 或者 next() 方法时,函数会从上次暂停的位置继续执行。 以下是一个简单的例子:123456789101112131415def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b# 调用生成器函数f = fibonacci()# 使用 next() 函数获取下一个值print(next(f)) # 输出:0print(next(f)) # 输出:1print(next(f)) # 输出:1print(next(f)) # 输出:2print(next(f)) # 输出:3 在上面的例子中,我们定义了一个名为 fibonacci 的生成器函数,它用来生成斐波那契数列。每次调用 next(f) 时,它都 ...
阅读全文 »

etcd分布式注册服务中心

发表于 2022-03-19 | 更新于: 2023-04-06 |
说明etc在linux系统中是配置文件目录名;etcd就是配置服务。诞生于CoreOS公司,最初用于解决集群管理系统中os升级时的分布式并发控制、配置文件的存储与分发等问题,基于此,etcd设计为提供高可用、强一致性的小型kv数据存储服务。etcd基于go语言实现,主要用于共享配置、服务发现、集群监控、leader选举、分布式锁等场景,用于存储少量重要的数据。当客户端需要调用某个服务时,它可以向服务注册中心发送查询请求,以获取特定服务的可用节点列表。然后,客户端可以选择其中一个节点进行调用。 架构12345etcdctl get key -w json{"header": {"cluster_id":1481639068965178418, "member_id":10276657743932975437, "revision": 47, "raft_term":8}, ...}etcdctl get key --rev=47etcdctl lease grant 30etcdctl put key test --lease=33435 raft ...
阅读全文 »

golang开发

发表于 2022-03-15 | 更新于: 2023-04-27 |
工具安装https://studygolang.com/dl下载最新版本。123456789101112yum install epel-releaseyum updateyum install golangsudo tar -C /usr/local -xzf go1.13.linux-amd64.tar.gzls /usr/local/bin/ etc/ games/ go/ include/ lib/ man@ sbin/ share/ src/sudo vim /etc/profile# 末尾添加export PATH=$PATH:/usr/local/go/binsource /etc/profilego version 项目实战jupiterhttps://jupiter.douyu.com/jupiter/ chathttps://github.com/tinode/chat123456789101112# The steps above install Tinode binaries at $GOPATH/bin/, sorces and suppor ...
阅读全文 »

nodejs开发

发表于 2022-03-15 | 更新于: 2023-04-02 |
基础npx的全称是Node Package Runner,是一个命令行工具,它可以在不安装包的情况下直接运行Node.js包中的命令。npx的作用类似于npm全局安装包,然后在命令行中执行安装包里的命令,但npx不需要提前安装,它会自动下载所需的包并执行命令。因此,npx被称为“npm 5.2.0+附带的一个功能”。在 npx 命令后加上 ts-node 命令 tsx,表示使用 ts-node 解析并运行 TypeScript 文件。这种方式可以避免在本地全局安装 ts-node,而且方便在多个项目中使用不同版本的 ts-node。 在 TypeScript 中,?. 表示可选链操作符,它用于访问可能不存在的属性或方法。在旧版的 JavaScript 中,当试图访问一个不存在的属性或方法时,程序会抛出一个类型为“undefined”的错误。在 TypeScript 中,可以使用可选链操作符?. 来避免这种错误,当访问的对象或属性不存在时,表达式会直接返回 undefined,而不会抛出错误。 异步jsXHR 有 5 种状态:XMLHttpRequest.readyState|Value ...
阅读全文 »

epoll服务器反应堆模型

发表于 2022-03-09 | 更新于: 2023-03-19 |
怎么处理epoll的事件?基于reactor反应堆模型,基于事件进行处理,不要基于fd去做判断,基于事件处理的代码逻辑更加清晰!做到百万并发并没有那么难!
阅读全文 »

epoll服务器开发一

发表于 2022-03-06 | 更新于: 2024-05-18 | 分类于 linux |
tcp和udp怎么用来进行服务器开发?kill的过程发生了什么?io多路复用的内核源码剖析!
阅读全文 »

内核参数调优

发表于 2022-03-02 | 更新于: 2023-12-18 |
/proc/sys/net/ipv4/tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(注意,其单位是内存页而不是字节)。 tcp_mem(3个INTEGER变量):low, pressure, high low:当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。理想情况下,这个值应与指定给tcp_wmem的第2个值相匹配,这第2个值表明,最大页面大小乘以最大并发请求数除以页大小,如131072*300/4096。 pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。理想情况下这个值应该是TCP可以使用的总缓冲区大小的最大值,如204800*300/4096。 high:允许所有tcp sockets用于排队缓冲数据报的页面量。如果超过这个值 ...
阅读全文 »

upnp原理

发表于 2022-02-23 | 更新于: 2024-05-18 |
WANIPConnection参考:http://upnp.org/specs/gw/UPnP-gw-WANIPConnection-v2-Service.pdf AddPortMapping() NAT upnp流程最多进行4层映射,第一层路由通过/proc/net/route获取本地网关,也就是route -n的功能,第一层映射成功后,可以根据GetExternalIPAddress获得该层路由出口ip,如果出口ip为内网ip,说明还有多层路由,traceroute可以跟踪路由信息,如traceroute -m 4 -w 1 -q 2 www.baidu.com,设置为各层路由的网关,使用出口ip作为NewInternalClient,发送upnp映射请求给各层路由的网关,尝试多层映射。 12341. 设备 A 向多播地址发送信息(例如,发送到组播地址 X.X.X.X)。2. 其他监听同一组播地址的设备 B、C、D 等可能会收到这个信息。3. 设备 B 在收到信息后,如果需要回复,会使用单播(Unicast)向设备 A 发送回复。4. 回复消息中的来源 IP 地址是设备 ...
阅读全文 »

http2知识点

发表于 2022-02-22 | 更新于: 2024-05-18 |
http1.x的缺点安全不足和性能不高。HTTP/2 借用了哈夫曼编码对于Header进行高效压缩,提高传输效率。HTTP1.X中最大的问题是队头阻塞,HTTP1.X中浏览器对于同一域名的并发连接访问此时是有限的,所以常常会导致只有个位数的连接可以正常工作,后续的连接都会被阻塞。HTTP1.1支持请求管道化(pipelining)。基于HTTP1.1的长连接,使得请求管线化成为可能。管线化使得请求能够“并行”传输。注意:这里的“并行”并不是真正意义上的并行传输,需要注意的是,服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。也就是说,HTTP管道化可以让我们把先进先出队列从客户端(请求队列)迁移到服务端(响应队列)。HTTP/2 解决队头阻塞是以 HTTP1.X 管道化的为基础拓展,它使用了二进制流和帧概念解决应用层队头阻塞。应用层的阻塞被解决便是实现流并发传输。为了控制资源的资源的获取顺序,HTTP在并发传输的基础上实现请求优先级以及流量控制,流的流量控制是考虑接收方是否具备接收能力。 二进制帧二进制帧保留Header+Body传输结构, ...
阅读全文 »

费曼学习法

发表于 2022-02-22 | 更新于: 2022-04-14 | 分类于 感悟 |
费曼学习法有四个关键词:concept「概念」、teach「教授」、review「回顾」、simplify「简化」。如果你不能用简洁的语言把一个概念说明白,说明你没有真正的掌握它。
阅读全文 »
1…678…18
nephen

nephen

173 日志
16 分类
64 标签
GitHub E-Mail
友情链接
  • 新建留言板
  • 订阅号留言板(旧)
  • 订阅号留言板(新)
  • 山楂岛秘密花园
  • 代发短信
© 2016 — 2024 nephen
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备2022125614号-1
本站访客数 人次 本站总访问量 次