自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 带有omitempty json tag的结构体序列化

json tag的,因此我们在序列化结构体时,如果某个字段的值是零值,则会导致序列化后的字符串不存在这个字段,而这个时候如果下游服务对反序列化要求比较严格,则会出现字段缺失的问题。不知道大家在使用go实现rpc服务的时候有没有这样的困惑,因为pb文件生成的桩代码中,是自动附带。可以看到符合预期,所有的字段都序列化出来了。为空时,序列化后的字符串不会含有字段。json tag,导致当。

2024-07-26 19:19:56 284

原创 fastapi 如何控制并发——其三

随后我们改用多进程的方式去测试,在客户端并发数为4,服务端进程数为8的情况下,平均耗时也有347ms,并且成功率只有22%,这里的347s存在水分,很多失败的请求只有1~2ms,存在摊还的情况。那可能真的是在并发数上来的情况下确实是耗时增大了,我们猜测是并发多了后,CPU成为了瓶颈,我们在使用多进程方案时,观察CPU利用率,发现确实已经占满了。上面我们使用的是多线程编程,正如我们之前所说的,对于计算密集型服务,python的多进程就是个笑话,这是由于。因此我们有必要测试在多核机器上,多线程方案的表现。

2024-07-26 11:53:25 217

原创 fastapi 如何控制并发——其二

是基于 ASGI 协议的服务框架,因此在接收请求时,不必等待worker 空闲,默认worker能够异步处理多个请求。我们通过非阻塞的方式获取线程锁,然后判断是否能够拿到锁,如果不能则立刻返回503错误。而且如果模型可以支持异步流式,我们甚至可以控制worker的并发度。gunicorn` 是用于处理同步请求的,使用的是 WSGI 标准,例如 Flask,Django等,两种协议之间差异参考。,后续我又接到了模型服务化的需求,简单搭个demo服务支持业务验证和对比实验,后续我觉得使用。

2024-07-17 17:11:11 403

原创 fastapi 如何控制并发——其一

先说结论,单独靠这里的业务场景是:单机只启动一个进程,也就是,同时只能只处理一个请求,其他的请求全部拒绝,而不进行排队。我们使用了fastapi。

2024-05-27 19:57:30 722

原创 更符合gopher的条件变量

在 go 中我们不必仿照 c++ 使用基于互斥量实现的条件变量,我们可以选择更加符合 go 哲学的方式,即通过通信来共享内存,尤其是在实现广播操作时。

2024-01-15 07:30:00 917

原创 Context源码分析——链路控制篇

本文将对Golang中的context.go源码进行深入剖析,从实际项目应用到整体设计和源码细节,力求让读者对于Context有更加清晰全面的认识。

2023-08-28 19:18:57 111

原创 golang的HTTP流式客户端实现方法与对比

介绍了几种Go的HTTP流式客户端的实现方式以及优缺点对比

2023-07-29 13:05:44 1380

原创 看似合理的io.Reader 接口

中初始化长度的 512 相关,后面使用 171 个相同的汉字组成的字符串,作为输入,字节总长度为 513。的字节切片,相当于实现流式的效果。的长度只有 2 ,因此一个 3 字节的汉字被截断成乱码了。的实现并不长,并且会在一开始初始化一个长度为 512 的字节切片。方法是符合预期的,但是,当我使用非流式的方法,也就是。并且返回的长度为 512,从日志可以看出来,至此,我们就解决了这个看似合理的。在项目中,需要实现了一个流式的。来存储被截断的字符,并且在。个字节,这么看来,确实是。,并将被截断的剩余字节放入。

2023-07-14 18:54:42 155

原创 服务压测的心路历程——解决数据竞争与空闲连接问题

记录一次服务压测过程中解决数据竞争和连接数过多的心路历程。

2023-06-22 18:00:45 73

原创 流式输出场景下的字符串替换——一次颇具挑战性的需求

在这篇文章里,分析了流式输出场景下字符串替换的难题。分享了基于字符维护和字符串维护的两种巧妙方法,经过对比和分析,揭示了各自的优缺点。同时,考虑到多字节字符截断问题,我们引入了另一个缓冲队列以增强解决方案的实用性。

2023-06-18 17:48:24 140

原创 一次模块优化——基于Go chan的流水线模式

一次模块优化——基于Go chan的流水线模式

2023-03-04 18:01:11 176

原创 练习时长半年的Git命令小结

就两方面来简单说一下常用的Git命令吧,一是正常的开发流程(不出意外)、二是错误处理(出了意外怎么办)。

2023-02-25 21:12:13 67

原创 接口与结构体指针之间的转换引发的一次思考

接口与结构体指针之间的转换引发的一次思考

2023-02-25 10:54:49 68

原创 秋招的披荆斩棘之路

这篇文章记录了秋招的准备过程中记录的一些东西,大多数都是以Q&A的方式记录,我觉得这是一个比较好的思考和学习方式,通过自问自答的方式来查漏补缺。内容主要分为:计算机网络、操作系统、数据库(可以忽略不计,秋招的时候时间不够,果断选择弃车保帅)、设计模式、C/C++语言基础、算法与数据结构、面经。主要可以给准备找工作的同学提供一个参考,这里附上了PDF的下载地址。

2023-02-18 17:35:10 429

原创 入职腾讯半年的总结

我作为去年的应届毕业生来鹅厂有半年多了,从学生到打工仔的身份转变也让自身的一些心态发生了变化,在这里做点总结。

2023-02-18 17:01:41 105

原创 ubuntu系统离线搭建深度学习环境

前言为什么写下这篇文章?因为很多情况下,机器机密级别较高不能联网以及通过U盘来进行文件传输,只能通过光驱刻盘的方式来进行文件传输。离线安装ubuntu系统系统安装环节参见我之前的一片博客离线搭建深度学习环境安装NVIDIA驱动这部分参考这篇博客创建创建 blacklist-nouveau.conf 文件...

2021-01-29 10:27:34 910 6

原创 通过光盘安装Ubuntu18.04教程

首先通过 UltraISO 制作Ubuntu的启动盘,官网上下载下来的ISO文件就能支持UEFI引导UltraISO下载地址 Ubuntu18.04下载地址 (这里推荐使用磁力工具来载,例如比特彗星)点击文件 -> 打开 -> 选择下好的ISO文件然后点击 工具 -> 刻录光盘映像在 BIOS 中恢复出厂设置, 点击load optimized defaults,这里默认应该是UEFI引导的,可以检查一下,然后按 F9 保存,并按 F10 重启然后按 F12 ..

2021-01-22 19:06:26 5134

原创 练习时长一年半,算法蒟蒻的成长记录

练习时长一年半,算法蒟蒻的成长记录写在文章前:这篇博客主要是记录一下这一年半来升级打怪的记录,一直想做这件事情,但还是太懒,由于学习环境的变动给我带来了一段较长的空闲时间,每天就是啃入门经典、刷算法题,持续了两周,下午想换点心情,于是写下了这篇博客。开始征程我是大学毕业前夕才开始接触算法的,那时候刚考完研,在做毕设阶段准备找一下暑假实习工作,开始跟基友一起刷算法题准备抓住春招的尾巴在暑假找点事干,于是战斗场地从考研自习室搬进了图书馆,《高数十八讲》也换成了《算法与数据结构》。其实大二的时候也啃过一

2020-12-04 18:37:47 1542 6

原创 牛客编程巅峰赛S1第9场 - 青铜&白银详解

牛客编程巅峰赛S1第9场 - 青铜&白银A.牛牛的字符反转[原题链接]题意:求最少对字符串进行几次区间反转操作能实现循环右移 k 位。反转操作指字符串某一区间 [L,R] 内的字符反转,例如 “123456” ,区间 [3,5] 进行反转字符串变为 “125436” 。假设字符串每一位都不同。给定一个字符串长度 n 和循环右移次数 k ,求最少反转次数。数据范围:1 <= n,k <= 1e9思路:首先应该把 k 对 n 取模,因为循环右移 n 次后还是变成原字符串,k =

2020-08-08 00:28:56 300

原创 LeetCode第 200 场周赛详解

LeetCode第 200 场周赛详解1.统计好三元组[原题链接]题意:给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。0 <= i < j < k < arr.length|arr[i] - arr[j]| <= a|arr[j] - arr[k]| <= b|arr[i] - arr[k]| <= c

2020-08-07 17:56:46 343

原创 LeetCode 第 199 场周赛详解

LeetCode 第 199 场周赛1.重新排列字符串[原题链接]题意:给你一个字符串 s 和一个长度相同的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。数据范围:s.length == indices.length == n1 <= n <= 1000 <= indices[i] < nindices 的所有的值都是唯一的思路:简单的枚举即可代码:class

2020-07-26 21:56:58 274

原创 LeetCode第 31 场双周赛详解

LeetCode第 31 场双周赛1.在区间范围内统计奇数数目[原题链接]题意:给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。数据范围:0 <= low <= high <= 10^9思路:首先我们分析[low, high]总共有几对数(连续的两个数),那么每一对数有且只有一个奇数,再考虑只有奇数个数的情况下,最后一个数是否是奇数即可。代码:class Solution {public: int count

2020-07-26 14:31:09 211

原创 Codeforces Round #658 (Div. 2)详解

Codeforces Round #658 (Div. 2)题目链接A. Common Subsequence题意:输入两个整数数组a,b,找到两个数组的最短公共子序列c。子序列的概念:如果c是a的子序列,则满足a通过删除若干(也可以是0)个元素可以得到c。数据范围:length(a), length(b) <= 1000; case <= 1000, 1 <= a[i], b[i] <= 1000思路:既然是找到最短的公共子序列,那么只要找到在一个a, b中都出现过

2020-07-25 22:07:12 312

原创 程序员的算法趣题--入门篇(c++描述)日期的二进制转换

问题描述:  把年月日表示为 YYYYMMDD 这样的 8 位整数,然后把这个整数转换成 二进制数并且逆序排列,再把得到的二进制数转换成十进制数,求与原日期一 致的日期。求得的日期要在上一次东京奥运会(1964 年 10 月 10 日)到下一 次东京奥运会(预定举办日期为 2020 年 7 月 24 日)之间。例)日期为1966年7月13日时 ① YYYYMMDD格式→ 19660713 ② ...

2019-04-17 12:39:44 1683

原创 程序员的算法趣题--入门篇(Q5)(c++描述)

目录题目描述:思路:代码实现:题目描述: 当下,坐公交或者地铁时大部分人都是刷卡的。不过,时至今日还 在用现金支付的人还是比想象的多。本题我们以安置在公交上的零钱兑 换机为背景。 这个机器可以用纸币兑换到10 日元、50 日元、100 日元和500 日 元硬币的组合,且每种硬币的数量都足够多(因为公交接受的最小额度 为 10 日元,所以不提供 1 日元和 5...

2019-04-12 19:06:49 315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除