内存相关讲座大纲

应聘客户端主程需做哪些准备 上一篇博客给读者介绍了关于应聘引擎程序或者资深引擎需要做的准备工作,本篇博客给哪些想应聘客户端主程的开发者提供一些建议。客户端主程市场需求也是非常大的,我本人以前也应聘过客户端主程,也招聘过客户端主程,下面将一些心得分享给读者,以供参考。 项目要求 客户端主程就是要对整个项目负责,对主程的要求就比较多,比较杂了,因为他关乎整个项目的成功与失败,所以必须要谨慎对待。项目也分很多种类,比如MMOR... 阅读详情

Redis数据库部分

              数据结构部分

                               SDS       struct len free  char []

                               list          struct     prev    next

                                              struct head tail len  dup   free  match

                               dict        struct    dicth   dictentry ** table size mask used

struct  dicentry   void *key     next   void *val

struct   dict type   private     dicth[2] ;

 

                              skiplist   OK

                              intest     struct    type    leghth   []

 

               存储方式

                     压缩列表     编码格式    键值对象

              单机数据库实现

                             结构图         对键的操作(增,删,改,查)       时间戳

                    AOF  && RDB

             多机数据库原理

                   主从复制,设置地址,SOCK ,PING.LOGIN,SEND_PORT,同步,命令传播

                   心跳包

                   sentinel  系统  一主多从,主下线,从选主,上线

简单内存管理

内存管理三种层次

用户管理层           运行时库管理         操作系统层(结构图)

操作系统层:

SMP(UMA)      NUMA

SMP受制内存扩展           NUMA 受制与远端访问

虚拟地址空间的两种结构

Old && new  32    64 新

mmap   && brk

do_mmap_pgoff           do_brk  类似

brk : 线性的增加

运行时库:  OOM系统

几种主流内存分配方法

C      pool       引用计数          垃圾回收

C    :通用性强,问题明显

pool  :  优:

分配回收飞快,基本不会主动OOM,符合标准

劣:

明确可知的分配模式,第三方库兼容性差,通用性差

引用计数:优:

实现简单,易于使用

劣:

循环数据结构难已处理,减缓分配,额外处理引用。占用数据结构比较靠前的位置,这个地方价值非常高

垃圾收集:

优:永远不必担心双重释放之类的问题

劣:比其他形式的内存分配更慢

另:TCmalloc   小内存  8 整数倍     大内存4K对齐   线程友好   每个线程缓存一些存储块

      引出CSAPP上的一个例子blblblblblblblblblblbbl

      进入malloc 原理解析

1.首先数据结构

使用块 和  空闲块

2.整个容器的组织形式,画结构图

bins   fast_bins  unsorted_bin   top_chunk   mmaped_chunk

3.分配响应的具体步骤

@首先获取锁,其中一个分配区,默认先主

@对齐处理用户的需求

@如果小于64 从small bins 中获取,否则先找fast bins

@合并fast 中能合并的,进unsorted, 然后整合到small | large

@然后在large 中按照“smallest-first,best-bins",最好有合适的不然就切割,边角料回炉

@如果翻遍了所有的bin都没有找到,那就结束bin的想法,直接从top chunk 想办法。

@最终直接使用mmap

4.回收内存的基本流程

@首先获取分配区的锁

@判断空指针与否,空:直接返回

@是否是mumap 的结果,是则直接释放,判断下动态机制是否需要调整

@小与64B放到fast bins 中去,如果与top 相邻,则还有后文,否则直接返回

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@判断前一个chunk 的大小,和使用情况,合并之

@判断后一个是否top chunk 否,则判断使用情况合并之,如果大与64KB则触发fast bin 的合并机制,开始合并。放进unsorted bins 然后判断top chunk 是否可以合并。

@如果后一个直接是top chunk 就合并,然后企图收缩大小。收缩阀值128KB

5.使用mmap  的一些好与不好之处。

好:独立从系统中分配和释放。对与常生命周期的东西就很好用,不会被锁

不好:内存不可回收再利用,默认清0,页对齐很低效

6.使用注意事项

@top chunk 之前的块可能被卡死,然后内存暴增

@最好不要管理长生命周期的对象

@不要关闭分配阀值动态调整机制,不然多线程,各种缺页机制,被玩死

@多线程其实是不适合ptmalloc 的

@尽量减少程序的线程数量,避免频繁释放内存(锁,分配区)

@内存泄漏是一个非常非常可怕的问题

@调整虚拟存储子系统,防OOM

源码赏析:

结构体:1121

分配区实例:1684

一些宏定义:

获取块的大小:1310

设置标志位:1326

bins 数组分配: 1454 1477

 

 

分布式基础

                存储引擎

                                  哈希存储     key -> val  id  size crc time ...

                                 B树存储   LRU LISR  硬盘预读 B树 ,范围,替换策略,InnoDB 二级5/3/8

                                 LSM树存储  double B -tree

                事务与并发

ACID    SQL   NOSQL

ACID :原子  一致   隔离  持久

                分布式系统基础概念

异常类型:

服务器宕机,网络异常,磁盘故障,超时问题,通过ACK等一些问题解决等

性能分析:

一般通过系统的吞吐能力,系统响应的时间,常用每秒的操作次数来评测性能。

可用性:99.99   52.56

一致性:越强的一致性。用起来往往稳定,

可扩展性: 可以方便,遍历的增加容量

 

数据分布:

哈希分布:一致性哈希环

顺序分布:类似B树,复杂度增加

 

数据的复制与迁移:

多个副本的存在,切换副本,读写分离。

CAP :

一致性,可用性:最大保护模式,强同步;最大性能模式,有危险;最大可用性模式,根据网络;

分区可容忍性

容错机制的设计

故障检测:

心跳方式,租约方式

故障恢复:切换副本

 

可扩展性

查看原文:http://zmrlinux.com/2016/03/13/%e5%86%85%e5%ad%98%e7%9b%b8%e5%85%b3%e8%ae%b2%e5%ba%a7%e5%a4%a7%e7%ba%b2/

利用 ‘Custom Allocators’ (自定义分配器):如何为 `std::list` 编写一个基于内存池(Pool)的分配方案? 在C++编程中,我们频繁地与动态内存打交道,new和delete是最常见的操作。然而,标准库提供的默认内存分配器 (和的底层实现) 并非在所有场景下都表现最佳。我们的需要实现接口,并通过来进行实际的内存分配和释放。// 确保 PoolManager 已被定义// #include "PoolManager.h" // 假设 PoolManager 在单独的文件中/*** @brief 基于内存池的自定义分配器。 阅读详情

相关推荐

STM32硬件SPI调试ADS1256的3个致命坑,CubeMX配置避坑指南

本文深入解析STM32硬件SPI调试ADS1256高精度ADC芯片时常见的3大配置陷阱,包括SPI时钟频率、时钟极性与相位、数据字节序等关键问题。通过CubeMX实战配置指南和实测数据对比,提供稳定可靠的解决方案,帮助开发者避免常见错误,提升采样精度和系统稳定性。

weixin_42550597的博客 346

【学习笔记】Java面试准备讲座笔记

介绍 本文内容是基于cyc2018在牛客网上的讲座做的笔记整理。 cyc2018毕业于交大,硕士,最后拿到了字节的ssp。 GitHub:https://github.com/CyC2018/CS-Notes 学习规划 复习方法:结合面经看书,并通过面试及时查漏补缺 面试一线大厂需要重点准备:数据结构与算法、计算机网络、操作系统 面试小公司需要重点准备:语言和框架(去了就直接干活) 简...

YanqiangWang的专栏 279

京东礼品卡绑定技术解析与安全验证实践

电商系统开发中,卡券绑定是常见的业务场景,其核心在于安全验证机制的设计与实现。从技术原理来看,现代验证系统通常采用多层防护,包括前端数据加密、行为验证(如滑块验证)和风控校验等关键技术。这些机制通过设备指纹采集、请求签名验证等方式,有效防范自动化攻击。在实际工程实践中,开发者需要特别关注接口鉴权流程,正确处理安全令牌(如st/vt令牌)和请求签名。京东礼品卡绑定作为典型案例,展示了如何平衡用户体验与系统安全,其验证系统会持续升级,需要开发者跟踪接口变化。对于企业级应用,建议采用混合模式技术方案,结合浏览器自

weixin_28607671的博客 235

c语言开发教学大纲,C语言的教学大纲.doc

C语言的教学大纲实践学期《 C语言项目训练 ?》教学大纲一、适用专业和层次本课程适用于四年制本科一年级计算机科学与技术专业、软件工程专业、网络工程专业全体学生。二、教学目的和任务通过学习本课程,学生能够较全面地掌握C语言的基础知识,并对数组、函数、指针、结构体、文件等C语言的较深入知识有进一步理解,能够熟练地应用这些知识,结合结构化软件工程的思想和程序设计思想,实现一个模拟的实际项目,初步具备一个...

weixin_29809927的博客 243

Ollama+FAISS+Embedding+Rerank+LLM 详细部署指南

下载安装Ollama 双击运行安装程序 安装完成后会自动启动服务 修改默认安装路径(避免C盘爆满) 或使用PowerShell: 验证安装 Linux系统部署: (二)准备模型 1. 拉取Embedding模型 2. 拉取LLM模型 注意:原文中提到的可能需要从自定义仓库拉取: 3. 下载Rerank模型 (三)安装依赖库 创建项目目录和虚拟环境: 二、主要功能实现 项目结构 (一)配置文件(config/config.yaml) (二)文本分块策略实现 创建 : (三)文档读取

AI技术改变世界 1583

3D视觉-结构光测量-线结构光测量

线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵CCD作为接受器件,因此只要通过增加垂直于面阵探测器的第三维度方向,就可以实现对三维物体的测量。

qq_20660115的博客 3136

UW CSE 351: The Hardware/Software Interface 目的及大纲

课程目的本课程旨在培养学生对于当软件运行时到底“发生了什么”的感知能力,这个问题其实有多种层次抽象的答案,包括硬件构架水平的,汇编水平的,c程序水平的以及Java程序水平的。

蟋蟀的博客 2075

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3165

字节跳动大神讲座:独家!阿里云大师深入拆解Java虚拟机

前言 JVM对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,其实我个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的Java开发来说,这是Java的基石。 其次,从各大招聘平台来看,一线互联网企业招聘需求(尤其是阿里巴巴),第一条就明确了要掌握JVM原理,因为JVM是中高级程序员必须要掌握的技术,学JVM也是为了更深入地理解Java以及更好的解决线上排查问题。 网上

m0_60567796的博客 165

光储微电网混合储能系统的控制策略

随着社会生产力的不断提高,对不可再生资源的大量消耗,人们已经意识到发展可再生能源的重要性,因此微电网技术作为再生能源利用的有效形式被快速发展。蓄电池容量无限大是传统光储微电网混合储能系统控制策略一种理想形式,但实际上蓄电池的容量是有限度的,传统控制策略在蓄电池剩余电量达到阖值时将无法正常使用,由此提出了光储微电网混合储能系统的新型控制策略,又结合实际情况,对开关进行了改进,利用开关与二极管并联,使其拥有四种工作状态,当储能元件剩余电量达到阈值时,可自动恢复电量降低成本,提高并输出电池电能质量。

nhkg888的博客 1748

如何在SpringBoot中实现AI 流式输出?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1484

华中科技大学 教学大纲 计算机,教学大纲-华中科技大学计算机学院

安全前沿技术专题讲座安全前沿技术专题讲座 教学大纲教学大纲 1 课程概要 安全前沿技术专题讲座 课程名称 The Cutting edge Technology Topics for System Security 适用专业信息安全 总学时32学分2理论课学时32实验学时0 课程类型 专业基础课 专业核心课 专业实践课 专业选修课 先修课程信息系统应用安全 认证与访问控制技术 操作系统 后续课程 ...

weixin_27102543的博客 367

R语言Rstudio突然无法启动且报错:ERROR system error 42 [str: 一, len: 3, from: UTF-8, to: ISO8859-1]...如何解决

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2848

BiliTools AI视频总结:3分钟搞定1小时视频的智能学习神器

你是否经常在B站收藏了大量有价值的技术教程、学术讲座,却因为视频太长而迟迟没有时间观看?或者好不容易看完一个60分钟的视频,却发现真正重要的知识点只集中在短短十几分钟内?今天我要向大家介绍一个能够彻底改变你B站学习体验的神器——BiliTools的**AI视频总结功能**。 作为一款跨平台哔哩哔哩工具箱,BiliTools不仅支持视频下载、弹幕提取等基础功能,其最强大的亮点在于能够将冗长的视频内

gitblog_00469的博客 952

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

国防科技大学操作系统课程精讲:进程管理、内存管理、文件系统与I/O设备

操作系统是计算机系统的核心软件,负责管理硬件资源、提供用户接口并确保程序高效运行。其核心原理包括进程调度、内存分配、文件存储和设备驱动等关键技术。理解操作系统原理对于提升系统性能、优化资源利用和保障程序稳定性具有重要价值,尤其在服务器管理、嵌入式开发和系统优化等场景中不可或缺。本文聚焦于国防科技大学权威课程,系统讲解进程管理中的调度算法与同步机制、内存管理中的分页与虚拟内存技术,以及文件系统和I/O设备管理的核心实现,帮助学习者构建完整的操作系统知识体系。

weixin_30940783的博客 339

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何快速入门生物信息学 Live讲座----听课笔记

主讲人:孟浩巍 北京大学生物信息学博士 研究方向:RNA表观转录组;高通量测序方法 内容大纲: 生物信息学的定义 生物信息学是一个动态的定义(2006~2010 高通量测序技术的蓬勃发展;2016~ 更新的测序及技术推动的学科发展) 生物信息学的学科内涵:以信息技术及其相关的手段对生物问题进行探索研究的学科。 生物信息学常见的分类及目前发展现状 狭义的生物信息学主要包括(组学):开发...

wxw060709的专栏 1620

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

5分钟掌握BiliTools智能视频解析:高效提取B站内容精华的终极指南

你是否经常面对收藏夹里堆积如山的B站视频却无从下手?作为内容创作者或学习者,如何快速从海量视频中提取核心价值?BiliTools的智能内容摘要功能正是解决这一痛点的利器。通过视频解析和智能提取技术,它能够将冗长的视频内容转化为精炼的结构化大纲,让你在极短时间内掌握视频精髓。 ## 为什么你需要视频智能解析功能? 在信息过载的时代,传统观看方式已经无法满足高效学习的需求。让我们看看几个典型场景:

gitblog_00997的博客 580

2024年最新离高薪测试你可能只差这个理解:python 内存管理机制!(2),2024年最新了解软件测试架构组件后构建APP超简单

因此,getrefcount()所得到的结果,会比期望的多 1;当运行 python 程序时,Python 自动将-5~256 的整数进行了缓存,放在一个‘池’(小整数池)中,无论程序中那些变量指向这些范围内的整数或者字符串当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。的优点是,在创建新的字符串对象时(如果字符串只包含数字、字母、下划线),会先在字符串驻留池里面找是否有已经存在的值相同的对象,如果有,则直接拿过来用(引用),避免频繁的创建和销毁内存,提升效率。

2401_84561461的博客 888

直播预告 | Linux内核page到folio的变迁

Once upon a time,Netscape的大拿 Phil Karlton曾经说过:“There are only two hard things in Computer Science: cache invalidation and naming things”,成为程序界流传甚广的名言,可见取名是计算机科学中最难的两件事之一。取名,要用名字恰到好处地描述其想描述的事物,要体现代码注释的...

内核工匠 548

51CTO学院 oracle相关视频地址

转载自:http://bbs.51cto.com/thread-1087415-1.html 51CTO学院致力于让专家分享技术并让技术变现,让广大技术爱好者便捷、实惠的获取优质学习资源。 讲师视频: 恩墨学院: 简介:恩墨学院专注于培训与oracle数据库领域的相关知识,拥有业内最强大的师资力量,汇聚业界一批对技术狂热的技术专家(囊括了国内IT服务商中绝大部分的Oracle AC

Inkbamboo专栏 1462

计算机考研的调查和改进建议

几星期前, 我在微博上讨论考研的事, 有专家建议不如把意见整理出来, 说不定可以转告给相关方面。 我没有考过研, 问了公司的同事们, 绝大多数都是保研的, 也没考过。 我从网上下了一份模拟题, 好像还挺难,有一种要翻书的冲动。 全国有多少学生为了考研而奋斗? 据说考计算机专业的研究生每年有七千到一万左右。 我以前接触到清华软件学院的一个研究生, 他为了考研, 在北京漂了...

depx7366的博客 349

CTF学习路线(非常详细)零基础入门到精通,收藏这一篇就够了

CTF概述:CTF(夺旗赛)是一种网络安全竞赛,通过解决一系列安全问题来测试参赛者的技能和经验。对于网络安全爱好者和从业者来说,学习CTF是一个不错的选择。要开始学习CTF,首先需要掌握一些基础知识:编程语言:CTF题目中大多涉及编程语言,例如C、Python、Ruby等。因此需要学习一种或多种编程语言。计算机网络:CTF题目中有很多与网络相关的问题,例如协议、端口、IP地址等。因此需要学习计算机网络的基本概念和知识。

kjuhfkicf154的博客 1031

国防科大操作系统公开课:进程管理、内存管理、文件系统与I/O设备系统学习指南

操作系统是计算机系统的核心,负责管理硬件资源并为应用程序提供运行环境。其核心原理包括进程调度、内存分配、文件存储和设备驱动,这些技术共同决定了系统的性能、稳定性和安全性。理解操作系统原理对于解决并发编程、内存泄漏、文件I/O瓶颈等工程实践问题具有根本性价值,广泛应用于后端开发、系统编程和性能调优等场景。本文聚焦于国防科技大学出品的操作系统公开课,该课程体系化地覆盖了进程管理、内存管理、文件系统和I/O设备管理四大核心模块,为计算机专业学习、408考研备考及程序员夯实底层基础提供了权威的学习路径与实践指南。

weixin_30846347的博客 337

8年经验之谈 —— 记一次接口压力测试与性能调优!(1),软件测试编程基础

我们根据上述指标监控的情况可以看出,目前CPU占用率很高,每个CPU上的业务线程都占用了90%以上的CPU时间,年轻代GC次数频繁,平均每秒钟有8次左右,但TPS目前只有400左右。根据上述指标监控的情况可以看出,这次JVM参数调整后,随着堆内存扩大,年轻代GC次数降低了,平均每秒有2次左右,TPS提高到600左右。完成项目部署后,我们开始编辑jemeter测试脚本,设置压力测试的标准为200个并发线程,在10秒内全部启动,持续压测时间15分钟,接着开始启动jemeter脚本进行测试。

2401_84254451的博客 1108

BiliTools AI视频总结:智能解锁B站内容新维度

你是否曾为B站海量视频内容而困扰?想要快速掌握视频精华却苦于时间有限?BiliTools的AI视频总结功能正是为你量身打造的智能内容助手,通过深度集成哔哩哔哩官方AI服务,将冗长视频转化为精炼的结构化摘要,让你在信息洪流中游刃有余。 ## 智能内容分析的革命性突破 **传统视频观看 vs AI智能总结** 传统方式下,观看一个30分钟的视频需要完整投入时间,而BiliTools的AI总结功能

gitblog_00721的博客 547

2024年最全8年经验之谈 —— 记一次接口压力测试与性能调优!(1),2024年最新软件测试开发面试技能介绍

接着我们把接口代码中其他逻辑代码屏蔽,只留下xml解析代码,发现CPU占用率依然在90%以上,而一旦把xml解析代码屏蔽,留下其他业务代码,CPU占用率马上降低到了70%,TPS上升,GC次数下降并保持稳定。我们根据上述指标监控的情况可以看出,目前CPU占用率很高,每个CPU上的业务线程都占用了90%以上的CPU时间,年轻代GC次数频繁,平均每秒钟有8次左右,但TPS目前只有400左右。一开始看到这个情况,我们以为是JVM堆内存分配的不足,导致GC频繁,从而引起CPU的高占用率。

2301_82242351的博客 758
上一篇: Linux 网络编程 IP协议
下一篇: 汇编学习(一)8086汇编拾遗(1)
zmrlinux
博客等级 码龄12年 409粉丝 327原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值