自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何定位内存泄漏

关注公众号【高性能架构探索】,回复【pdf】,免费获取计算机经典资料在发现程序存在内存泄漏后,往往需要定位泄漏点,而定位这一步往往是最困难的,所以经常为了定位泄漏点,采取各种各样的方案,甭管方案优雅与否,毕竟管他白猫黑猫,抓住老鼠才是好猫,所以在本节,简单说下笔者这么多年定位泄漏点的方案,有些比较邪门歪道,您就随便看看就行????。日志这种方案的核心思想,就是在每次分配内存的时候,打印指针地址,在释放内存的时候,打印内存地址,这样在程序结束的时候,通过分配和释放的差,如果分配的条数大于释放的条数,那

2022-02-09 12:12:52 6044 18

原创 常见的【内存泄漏】姿势

关注公众号【高性能架构探索】,第一时间获取干货;回复【pdf】,免费获取计算机经典书籍本文节选自文章:内存泄漏-原因、避免以及定位本文总结常见内存泄漏的几种方式,留意到这几点,可以避免95+%以上的内存泄漏未释放这种是很常见的,比如下面的代码:int fun() { char * pBuffer = malloc(sizeof(char)); /* Do some work */ return 0;}上面代码是非常常见的内存泄漏场景(也可以使用new来.

2022-01-17 12:07:06 7058 13

原创 记一次线上故障的排查过程

记录了某次线上进程崩溃的整个排查过程

2021-12-21 12:25:05 1366 15

原创 技术十年-记录十年技术经历

记录从本科到研究生的学习经历;记录从传统行业到互联网的转型记录

2021-12-20 09:35:23 467 19

原创 性能优化-高效内存池的设计与实现

原文地址:高效内存池的设计与实现关注公众号【高性能架构探索】,也可以后台回复【pdf】,获取计算机必备经典书籍大家好,我是雨乐!在之前的文章中,我们分析了glibc内存管理相关的内容,里面的是不是逻辑复杂????,毕竟咱们用几十行代码完成的功能,glibc要用上百乃至上千行代码来实现,毕竟它的受众太多了,需要考虑跨平台,各种边界条件等。其实,glibc的内存分配库ptmalloc也可以看做是一个内存池,出于性能考虑,每次内存申请都是先从ptmalloc中进行分配,如果没有合适的则通过系统分配函

2021-12-07 22:00:25 2751 7

原创 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致了上千万损失)

前言大家好,我是雨乐。5年前,在上家公司的时候,因为进程OOM造成了上千万的损失,当时用了一个月的时间来分析glibc源码,最终将问题彻底解决。最近在逛知乎的时候,发现不少人有对malloc/free有类似的疑惑,恰好自己有阅读过这方面的源码,所以将之前的源码阅读笔记整理了下,用了大概3周的时间写了这篇文章,分析glibc的内存管理精髓,相信对c/c++从业者都会有用。提纲1 写在前面源码分析本身就很枯燥乏味,尤其是要将其写成通俗易...

2021-11-06 10:54:19 1128 5

原创 迄今为止吐槽最多的标准库函数

你好,我是雨乐!对正则的使用,基本用于日志分析,比如awk、grep等操作。自C++11起,也将正则表达式纳入新标准的一部分,因为项目需求中需求场景并不是很多。记得在去年群里聊天的时候,群里有人提到了std::regex,有不少人进行了吐槽:当时,没有对这块做更多的发言,毕竟没有调查也就没有发言权,直至前段时间的一个bug,才知道原来大家对std::regex的吐槽不无道理。

2024-04-30 14:02:05 778

原创 性能大杀器:智能指针的资源管理

函数指针有状态/无状态的仿函数或者lambda因为自定义删除器在std::shared_ptr和std::unique_ptr上使用方式不同,因此单独针对这两种指针进行示例分析。

2024-04-30 13:55:24 941

原创 聊聊内存模型和内存序

深入浅出内存模型和内存序

2022-06-17 15:37:46 4202 9

原创 深入理解指针

关注公众号【高性能架构探索】,回复【pdf】,免费获取计算机经典资料起源之前在知乎上看了一句话,指针是C的精髓,也是初学者的一个坎。换句话说,内存管理是C的精髓,C/C++可以直接跟OS打交道,从性能角度出发,开发者可以根据自己的实际使用场景灵活进行内存分配和释放。虽然在C++中自C++11引入了smart pointer,虽然很大程度上能够避免使用裸指针,但仍然不能完全避免,最重要的一个原因是你不能保证组内其他人不适用指针,更不能保证合作部门不使用指针。那么为什么C/C++中会存在指针呢?这就.

2022-01-13 06:17:43 1007 23

原创 GDB调试-从入门实践到原理

关注公众号【高性能架构探索】,回复【pdf】,免费获取计算机经典资料在上篇文章中,我们分析了线上coredump产生的原因,其中用到了coredump分析工具gdb,这几天一直有读者在问,能不能写一篇关于gdb调试方面的文章,今天借助此文,分享一些工作中的调试经验,希望能够帮到大家。写在前面在我的工作经历中,前几年在Windows上进行开发,使用Visual Studio进行调试,简直是利器,各种断点等用鼠标点点点就能设置;大概从12年开始转Linux开发了,所以调试都是基于GDB的。本来这篇文章.

2022-01-05 14:12:49 25096 15

原创 服务注册与发现-全搞懂

本文从原理和实现角度详细介绍服务发现

2021-12-23 10:10:19 8427 12

原创 【线上问题】P1级公司故障,年终奖不保

对本文有疑问的,可以公众号【高性能架构探索】留言、私信,也可以加笔者微信直接交流;另外还有批量免费计算机电子书,后台回复[pdf]免费获取。大家好,我是雨乐!前段时间,某个同事找我倾诉,说是因为strict weak ordering导致程序coredump,给公司造成数百万损失,最终评级故障为P0级,年终奖都有点不保了,听完不禁一阵唏嘘。在之前的文章中,我们分析了std::sort的源码实现_,在数据量大时候,采用快排,分段递归排序。一旦分段后的数据量小于某个阈值,为了避免快排的递归调用引起的额.

2021-12-16 15:16:43 926 14

原创 吃透负载均衡

关注公众号【高性能架构探索】,后台回复【pdf】,免费获取大家好,我是雨乐。首先告诉大家一件事,在十一国庆期间,引擎的机器又又。。。又扛不住了流量。经过监控分析,发现某个服务的一个实例所在的虚拟机扛不住了,所以采取临时措施流量控制之后,问题解决了,但还是造成了不小的损失。1 写在前面写本文的目的:对负载均衡的理解零零散散,不成体系。阅读这篇文章需要的条件:对OSI模型有些许了解有耐心。本文涉及大量的知识点,且只能用文字才能讲清楚,所以文字比较多。收获:读完此篇文章,从宏.

2021-12-13 09:54:15 546 7

原创 流量控制-从原理到实现

本文来自公众号【高性能架构探索】流量控制还能这么搞在上一篇文章聊聊服务注册与发现中,我们讲了微服务架构中核心功能之一服务注册与发现。在本文中,我们将着重讲下微服务的另外一个核心功能点:流量控制。在微服务系统中,整个系统是以一系列固有功能的微服务组成,如果某一个服务,因为流量异常或者其他原因,导致响应异常,那么同样的也会影响到调用该服务的其他服务,从而引起了一系列连锁反应,最终导致整个系统崩溃。针对此种问题,我们在之前的文章微服务架构之雪崩效应有讲解过解决方案,今天我们针对方案中的限流控制来进.

2021-10-25 11:54:28 594

原创 亿级流量实验平台设计与实践

本文来自公众号【高性能架构探索】亿级流量实验平台设计与实践https://mp.weixin.qq.com/s/SqFQmHSBqoWGnGbYubLKrg大家好,我是虫爸。今天给大家分享一款亿级流量实验平台。 在互联网行业,要上线一个策略(CTR预估、CVR预估等),或者一个功能,如果贸然全量上线,那么如果新策略效果不佳,可能会造成不小的损失,要么丢失用户,要么损失收入。那么怎样才能避免此问题发生呢?这就引入了实验平台,通过对流量打标签,然后分析实验效果,从而再决定是否实验推全还是下线。.

2021-10-22 22:39:50 440 1

原创 一文弄懂二叉树的三种遍历方式

关注公众号:高性能架构探索。后台回复【资料】,可以免费领取俗话说:学如逆水行舟,不进则退;心似平原走马,易放难收。这句话对程序员而言,体会更深。这行已经越来越卷了,时刻准备着,????。 二叉树,在面试中,已是必备的开胃菜。而在二叉树相关的面试题目中,遍历更是常考题目。本文将从二叉树的遍历角度入手,从递归和非递归角度来分析和讲解二叉树的遍历。遍历二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有节点,使每个节点被且仅被访问一次。二叉树的遍历,有先序遍历、中序遍历以

2021-08-31 08:51:30 25603 1

原创 TCP之send & recv

接触过网络开发的人,大抵都知道,上层应用使用send函数发送数据,使用recv来接收数据,而send和recv的实现原理又是怎样的呢?在前面的几篇文章中,我们有提过,TCP是个可靠的、全双工协议。其流量控制或者拥塞控制依赖于滑动窗口和拥塞窗口的滑动来实现,而这两个窗口的滑动实现则是依赖于TCP中的两个buffer,这两个buffer则是TCP socket在内核中的发送缓冲区(send buffer)和接收缓冲区(recv buffer)。在本文中,我们首先会简单介绍下TCP中发送缓冲区和接收缓..

2021-08-16 16:00:12 3750

原创 权重随机分配器

假如有一个数组,需要随机从该数组中选择一个元素输出。只需生成一个介于 0 和集合长度减 1 之间的随机数,并将其用作集合中的索引(如果它是数组)以获取随机条目。选择条目的机会对于集合中的每个条目都是相同的。这称为均匀分布或均匀分布。但是如果我们不希望每个条目都像其他条目一样出现呢?假设我们正在创建一个问答游戏,并且我们希望用户之前做错的问题比他或她做对的问题出现得更频繁?这称为加权随机分布,有时也称为加权随机选择,并且有多种实现方法,例如随机选择器。现实中,很多类似的需求,比如,在nginx中,..

2021-07-28 09:31:31 485

原创 蓄水池抽样

问题1、给定一个数据流,数据流长度N很大,且N直到处理完所有数据之前都不可知,请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出m个不重复的数据2、在不知道文件行数的情况下,如何在只遍历一遍文件的情况下,随机选取出m行分析看到此种问题,我们的第一想法是,把数据流中的数据保存起来,然后通过把数据流中的数据存储起来,然后进行随机获取,我们以leetcode中的某个题目为例,代码如下:classSolution{public:/**@paramheadTh...

2021-07-28 09:28:28 966

原创 c++对象内存布局

了解你所使用的编程语言究竟是如何实现的,对于C++程序员可能特别有意义。首先,它可以去除我们对于所使用语言的神秘感,使我们不至于对于编译器干的活感到完全不可思议;尤其重要的是,它使我们在Debug和使用语言高级特性的时候,有更多的把握。当需要提高代码效率的时候,这些知识也能够很好地帮助我们。简单非多态的内存布局classX{intx;floatxx;public:X(){}~X(){}voidprintInt()...

2021-04-09 17:34:42 483 1

原创 I/O多路复用之epoll

epoll是一种事件轮询,是Linux特有的。它允许一个进程监视多个文件描述符,并在对它们进行I/O操作时获取通知。它允许边缘触发和级别触发通知。在我们研究epoll的内部之前,首先让我们研究一下语法。语义与poll不同,epoll本身不是系统调用。它是一种内核数据结构,允许进程在多个文件描述符上复用I/O。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1eqsFTzC-1616657187134)(http://www.studyinfo.top/usr/upload

2021-03-25 15:28:13 2035 1

原创 漫谈悲观锁乐观锁

概念悲观锁(PessimisticLock)总是假设最坏的情况,每次拿数据的时候,都认为别人也会修改,所以每次都会加锁。当要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。这种借助数据库锁机制,在修改数据之前先锁定,再修改的方式被称之为悲观并发控制【PessimisticConcurrencyControl,缩写“PCC”,又名“悲观锁”】。悲观锁,正如其名,具有强烈的独占和排他特性。它指的是对数据被外界(包括...

2021-03-25 15:27:27 2481

原创 浅谈I/O模型

作为程序员,在日常工作中,都或多或少的接触过网络I/O这个概念,接触过网络编程,听说过socket等等,但是对于更深层次的理解,多少还是有点欠缺,通过本文,可以了解网络中最重要的模块I/O,以及对几种网络模型的介绍,在我们日常工作开发过程中,可以针对特定需求,选择特定的网络模型,达到事半功倍的效果。0 什么是I/O通常指数据,在内部存储器和外部存储器或其他周边设备之间的输入和输出。是信息处理系统(例如计算器)与外部世界(可能是人类或另一信息处理系统)之间的通信。输入是系统接收的信号或数据,..

2021-03-17 09:07:45 1263

原创 高并发HTTP请求实践

![1.jpg](http://www.studyinfo.top/usr/uploads/2021/03/2230504706.jpg)> 当今,正处于互联网高速发展的时代,每个人的生活都离不开互联网,互联网已经影响了每个人生活的方方面面。我们使用淘宝、京东进行购物,使用微信进行沟通,使用美图秀秀进行拍照美化等等。而这些每一步的操作下面,都离不开一个技术概念HTTP(Hypertext Transfer Protocol,超文本传输协议)。> 举个????,当我们打开京东APP的时候,首

2021-03-12 14:47:23 2556

effective c++ 简体中文版

effective c++ 简体中文版,为chm格式,比网上所流传的pdf格式更加清晰

2009-10-26

空空如也

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

TA关注的人

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