- 博客(1136)
- 资源 (5)
- 收藏
- 关注

原创 Google Perf Tools安装以及使用
Google Performance Tools安装以及使用这边文章都记录在github:https://github.com/NIGHTFIGHTING/gperftools-tutorial一个优化的内存管理算法—tcmalloc性能优于malloc。一个用于CPU profile的工具,用于检测程序的性能热点,这个功能和gprof类似。一个用于堆检查工具,用于检测程序在是够有内存泄露...
2020-03-09 00:40:47
2324
原创 字符串转成double类型
要求:任意字符串,考虑非法情况,不用考虑double溢出情况,不调用系统库(pow/atoi等)把一个字符串转成double类型。
2024-07-31 10:03:40
496
原创 brpc中http2 grpc协议解析
这个是固定长度的9字节帧头部,length是,3*8bit(3字节),type8bit,flags8bit,streamid(最高32位置,应该是个0,所以&0x8000000是0)解析完9字节帧头部,按照帧头中的type去解析,playload中的内容,假设type类型是header帧类型。playload是Header类型的帧,是hpack编码的。具体解析是Decode函数,按照hpack规则解析。先看下前4个bit为header类型帧哪种编码格式,如果是。解析frame header信息。
2024-05-03 21:26:30
412
原创 grpc stream发送
在这个示例中,客户端创建了一个类,并在GetNumbers方法中发送了一个消息,要求服务器端返回 5 个消息。客户端使用接收服务器端返回的流式消息,并在循环中打印出每个结果。最后,客户端调用Finish方法来完成整个 RPC 调用。这个示例展示了如何在 gRPC C++ 中实现服务器端流式 RPC,客户端可以根据需要修改请求的参数和处理返回结果的逻辑。
2024-05-03 16:07:13
408
原创 数据库不用mmap
但是当操作系统检索页面的时候,他会意识到内存中没有关联的物理页面,所以它需要触发一个页面错误才能从磁盘上获取它,然后OS向页面添加物理地址映射到虚拟地址的条目,映射也将被存储在称为转译后备缓冲区或TLB的特殊cpu缓存中,这将有助于加速未来的重复访问,所以我们不总是在页表中进行查找内容。其次是同步页表的开销,以及高竞争下关联的数据结构(本例中100个并发线程),TLB shootdowns(TLB缓存存储的是CPU中的页表条目),当页边被逐出时,这些条目需要删除,这需要昂贵的处理器间中断。
2024-04-06 15:18:46
345
原创 boost::intrusive_ptr的用法
链接:https://www.jianshu.com/p/dd9701219b27。商业转载请联系作者获得授权,非商业转载请注明出处。作者:JasonLiThirty。
2024-01-30 23:29:48
601
原创 brpc负载均衡load balance和服务发现name servicing
2.2.3nsthread->Start,bthread_start_urgent创建一个协程RunThis->Run->_ns->RunNamingService。3.Channel:包含LoadBalancerWithNaming的指针_lb,new LoadBalancerWithNaming,lb->Init。1.SharedLoadBalancer(load_balancer.h):包含LoadBalancer指针_lb。
2024-01-21 22:28:08
1021
原创 内存-虚拟地址到物理内存地址转换
512个2MB是1GB,第二层,每一项是512GB。512个4KB是2MB,第一层,每一项是1GB。512个526GB是256TB,第三层,每一项。第零层,每一项是4KB。
2023-10-27 20:07:46
533
原创 阻塞、非阻塞、异步、同步
但当IO并发度愈发提高时,blocking IO阻塞一个线程的弊端便显露出来:内核得不停地在线程间切换才能完成有效的工作,一个cpu core上可能只做了一点点事情,就马上又换成了另一个线程,cpu cache没得到充分利用,另外大量的线程会使得依赖thread-local加速的代码性能明显下降,如tcmalloc,一旦malloc变慢,程序整体性能往往也会随之下降。内核把数据准备好了之后,它也是通过read返回的,read一返回,其实也就意味着数据是否准备好。
2023-10-07 21:04:10
270
原创 面试题 17.24. 最大子矩阵
链接:https://leetcode.cn/problems/max-submatrix-lcci/solutions/137568/zhe-yao-cong-zui-da-zi-xu-he-shuo-qi-you-jian-dao-/我们以第i行为第一行,向下延申,设最后一行为第j行,我们就i在这么一个范围内,将二维问题转化为一维问题,再求解最大子序列和。这样我们就将二维问题转化为了一维问题,现在另一个问题就是怎么把所有情况都遍历到呢?作者:bugsmaker。
2023-10-05 15:41:19
146
原创 540. 有序数组中的单一元素
如果 mid\textit{mid}mid 是奇数,则比较 nums[mid−1]\textit{nums}[\textit{mid} - 1]nums[mid−1] 和 nums[mid]\textit{nums}[\textit{mid}]nums[mid] 是否相等。因此在二分查找的过程中,不需要判断 mid\textit{mid}mid 的奇偶性,mid\textit{mid}mid 和 mid⊕1\textit{mid} \oplus 1mid⊕1 即为每次需要比较元素的两个下标。
2023-10-04 23:38:32
932
原创 tcp拥塞控制原理
我们在向对端发送数据时,并不是一股脑子任意发送,因为TCP建立连接后,就是建立了一根管道,这跟管道上,实际上有很多的工作设备,比如路由器和交换机等等,他们都会对接收到的TCP包进行缓存,以便实现排序,然后发送,但是这些设备并不是只为一个TCP连接中转数据包,大量的网络包也许会耗尽存储空间,从而导致TCP连接的吞吐量急剧下降。
2023-10-03 16:02:00
579
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人