- 博客(1114)
- 资源 (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 2070
原创 boost::intrusive_ptr的用法
链接:https://www.jianshu.com/p/dd9701219b27。商业转载请联系作者获得授权,非商业转载请注明出处。作者:JasonLiThirty。
2024-01-30 23:29:48 374
原创 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 656
原创 内存-虚拟地址到物理内存地址转换
512个2MB是1GB,第二层,每一项是512GB。512个4KB是2MB,第一层,每一项是1GB。512个526GB是256TB,第三层,每一项。第零层,每一项是4KB。
2023-10-27 20:07:46 292
原创 阻塞、非阻塞、异步、同步
但当IO并发度愈发提高时,blocking IO阻塞一个线程的弊端便显露出来:内核得不停地在线程间切换才能完成有效的工作,一个cpu core上可能只做了一点点事情,就马上又换成了另一个线程,cpu cache没得到充分利用,另外大量的线程会使得依赖thread-local加速的代码性能明显下降,如tcmalloc,一旦malloc变慢,程序整体性能往往也会随之下降。内核把数据准备好了之后,它也是通过read返回的,read一返回,其实也就意味着数据是否准备好。
2023-10-07 21:04:10 196
原创 面试题 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 85
原创 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 890
原创 tcp拥塞控制原理
我们在向对端发送数据时,并不是一股脑子任意发送,因为TCP建立连接后,就是建立了一根管道,这跟管道上,实际上有很多的工作设备,比如路由器和交换机等等,他们都会对接收到的TCP包进行缓存,以便实现排序,然后发送,但是这些设备并不是只为一个TCP连接中转数据包,大量的网络包也许会耗尽存储空间,从而导致TCP连接的吞吐量急剧下降。
2023-10-03 16:02:00 387 1
原创 tcp滑动窗口原理
另外,你需要知道网络上有个MTU,对于以太网来说,MTU是1500字节,除去TCP+IP头的40个字节,真正的数据传输可以有1460,这就是所谓的MSS(Max Segment Size)注意,TCP的RFC定义这个MSS的默认值是536,这是因为 RFC 791里说了任何一个IP设备都得最少接收576尺寸的大小(实际上来说576是拨号的网络的MTU,而576减去IP头的20个字节就是536)。要知道,我们的TCP+IP头有40个字节,为了几个字节,要达上这么大的开销,这太不经济了。
2023-10-03 15:38:02 144
原创 index倒排拉链的查询和merge
2.2.1找到不小于doc_id的doc_id后,判断下找到的doc_id和token[0]的doc_id是否匹配,如果不匹配则将该doc_id设置为next_doc_id。2.2.2如果next_doc_id存在则将token[0]的doc_id调整到不小于next_doc_id的位置。2.2如果所有的token的都存在和token[0]相等的doc_id,则该doc_id符合求交接。2.按照token[0]的倒排拉链进行便利,先使用第一个token[0]的第一个doc_id,
2023-09-13 17:56:05 116
原创 06-数据库检索:如何使用B-树对海量磁盘数据建立索引?
你好,我是陈东。在基础篇中,我们学习了许多和检索相关的数据结构和技术。但是在大规模的数据环境下,这些技术的应用往往会遇到一些问题,比如说,无法将数据全部加载进内存。再比如说,无法支持索引的高效实时更新。而且,对于复杂的系统和业务场景,我们往往需要对基础的检索技术进行组合和升级。这就需要我们对实际的业务问题和解决方案十分了解。所以,从这一讲开始,我会和你一起探讨实际工作中的系统和业务问题,分享给你一些工业界中常见的解决方案,帮助你积累对应的行业经验,让你能够解决工作中的检索难题。
2023-09-13 13:07:56 318
原创 复习leetcode
460. LFU 缓存31. 下一个排列322. 零钱兑换力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
2023-08-27 16:05:00 405
原创 malloc Memory Allocators 101 - Write a simple memory allocator
【代码】Memory Allocators 101 - Write a simple memory allocator。
2023-08-15 23:51:55 141
原创 cpu和net和disk命令查询
w可以查看上下文切换(主动切换,不主动切换:上下文切换:进程间切换[包括内核栈,寄存器,虚拟内存的保存和恢复],线程间切换,影响:频繁切换影响,cpu的TLB缓存被更新,CPU缓存命中率变低)。vmstat 1 1,可以查看系统上下文切换情况(查看cpu,内存(剩余内存,系统缓存磁盘/文件,swap换入/唤出速度),cpu的idl,以及等待io使用率iowait)mpstat 1 1或者mpstat -P ALL查看每个cpu使用状态,(用户态cpu是用来,内核态cpu使用率,等待IO使用率)
2023-08-12 19:24:45 211
原创 内存池/对象池设计与实现
2.栈,使用最近归还的对象,进行对象池对象分配。1.new 重载placement new。3.静态对象需要在类外进行初始化。
2023-08-07 16:10:43 134
原创 包装器function
模板函数是一个通用的函数适配器(绑定器),它用一个可调用对象及其参数,生成一个新的可调用对象,以适应模板。:需要绑定的可调用对象(可以是前两节课介绍的那六种,也可以是。:绑定参数列表,可以是左值、右值和参数占位符。,如果参数不是占位符,缺省为值传递,
2023-08-06 09:11:08 102
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人