首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
底层专题
【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述
Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。
阅读更多...
哈希表的底层实现(1)---C++版
目录 哈希表的基本原理 哈希表的优点 哈希表的缺点 应用场景 闭散列法 开散列法 开放定值法Open Addressing——线性探测的模拟实现 超大重点部分评析 链地址法Separate Chaining——哈希桶的模拟实现 哈希表(Hash Table)是一种数据结构,它通过将键(Key)映射到值(Value)的方式来实现快速的数据存储与查找。哈希表的核心概念是哈希
阅读更多...
TL-Tomcat中长连接的底层源码原理实现
长连接:浏览器告诉tomcat不要将请求关掉。 如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。 tomcat中有一个缓冲区 如果发送大批量数据后 又不处理 那么会堆积缓冲区 后面的请求会越来越慢。
阅读更多...
Linux 云计算底层技术之一文读懂 Qemu 架构
Qemu 架构概览 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成
阅读更多...
【编程底层原理】方法区、永久代和元空间之间的关系
Java虚拟机(JVM)中的内存布局经历了几个版本的变更,其中方法区、永久代和元空间是这些变更中的关键概念。以下是它们之间的关系: 一、方法区: 1、方法区是JVM规范中定义的一个概念,它用于存储类信息、常量、静态变量、即时编译器编译后的代码等数据。 3、它是JVM运行时数据区的一部分,与堆内存一样,是所有线程共享的内存区域。 二、永久代(PermGen): 1、在Java SE 7之前,
阅读更多...
ElasticSearch底层原理简析
1.ElasticSearch简述 ElastiaSearch(以下简称ES)是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,支持RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ES设计用于云计算中,能够进行实时搜索,支持PB级搜索,具有稳定,可靠,快速,安装使用方便等
阅读更多...
【编程底层思考】详解Java的JUC多线程并发编程底层组件AQS的作用及原理
Java中的AbstractQueuedSynchronizer(简称AQS)是位于java.util.concurrent.locks包中的一个核心组件,用于构建锁和其他同步器。AQS为实现依赖于FIFO(先进先出)等待队列的阻塞锁和相关同步器提供了一套高效、可扩展的框架。 一、AQS的作用 统一同步状态管理:AQS提供了一个int类型的成员变量state,用于表示同步状态。子类可以根据自己
阅读更多...
了解elementUI的底层源码, 进行二次开发
Element UI 是一个基于 Vue.js 的桌面端组件库,广泛用于构建美观、交互友好的用户界面。要深入理解 Element UI 的底层源码并进行二次开发,你需要掌握以下几个关键点: Vue.js 原理 Element UI 是基于 Vue.js 构建的,因此首先需要熟悉 Vue.js 的核心概念和机制,包括: ● 组件系统:Vue.js 的组件化思想,如何定义组件、使用组件、传递属性和事
阅读更多...
一文详解go底层原理之垃圾回收
1 前置知识 1.1 三色回收法 三色回收法在gov1.5版本时是主流的gc方式 简单介绍一下流程: 暂停程序执行流程(开启STW)将新创建的对象全部标记为白色从根节点开始遍历,把遍历到的第一层全部改为灰色遍历一次灰色集合,将灰色集合引用对象变为黑色重复上述步骤,知道没有灰色对象清除白色对象结束STW 1.2 STW 上述1.1所说的STW就是指的stop the world,简单的说
阅读更多...
C++学习笔记----6、内存管理(三)---- 底层内存操作
C++相对于C的一个非常大的优势就是你不必太担心内存。如果你的代用到了对象,只需要确信每个类可以好好管理自己的内存。通过构造与析构函数,编译器通过告诉你什么时候去做来帮助你管理内存。在类内隐藏了对内存的管理在使用上带来了很大的不同,就像标准库类展示的那样。然而,对于一些应用或者遗留代码,你可能也会碰到需要在底层处理内存。不管是遗留代码、效率、排错或者是好奇,懂得一些对于原始字节的操
阅读更多...
容器第六课,自定义Map的功能,底层源码
package com.pkushutong.Collection;/*** 自定义实现Map的功能* Map:存放键值对,根据键对象找对应的值对象,键不能重复*/public class Test05 {SxtEntry[] arr = new SxtEntry[100];int size;public void put(Object Key, Object value){SxtEntry e
阅读更多...
Redis进阶(三)--Redis高性能底层原理
文章目录 第三章、Redis高性能底层原理一、持久化1、RDB(1)给哪些内存数据做快照?(2)RDB文件的生成是否会阻塞主线程(3)bgsave执的行流程(4)RDB文件(5)RDB的优缺点RDB的优点RDB的缺点 (6)Redis中RDB导致的数据丢失问题 2、AOF(1)使用AOF(2)AOF的工作流程命令写入重写机制重启加载文件校验 3、RDB-AOF混合持久化4、Redis持久化
阅读更多...
【C++】C++ STL探索:Vector使用与背后底层逻辑
C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现 在string类文章中提及了STL容器间的接口是大差不差的,本篇将直接通过模拟实现Vector来讲解底层实现与使用。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔
阅读更多...
【编程底层思考】如何检测和避免线程死锁
一、什么是线程死锁? 线程死锁发生在多个线程因为争夺资源而相互阻塞,导致程序无法正常结束的情况。例如,线程A持有资源2并等待资源1,线程B持有资源1并等待资源2,这样就形成了死锁。 二、如何检测死锁? 使用jmap、jstack等命令行工具查看JVM的线程栈和堆内存情况,jstack可以显示死锁信息。使用VisualVM、JConsole等图形化工具进行排查。例如,JConsole可以连接到
阅读更多...
【免费分享】嵌入式Linux开发板【入门+项目,应用+底层】资料包一网打尽,附教程/视频/源码...
想要深入学习嵌入式Linux开发吗?现在机会来了!我们为初学者们准备了一份全面的资料包,包括原理图、教程、课件、视频、项目、源码等,所有资料全部免费领取,课程视频可试看(购买后看完整版),让你从零开始,快速掌握嵌入式Linux开发技能。 后台私信小雯老师,回复“嵌入式Linux”即可获取开发板完整资料包。 一、资料内容 开发教程:9大教程,覆盖应用层+底层开发 《Linux基础
阅读更多...
【编程底层思考】详解Java内存模型(JMM)原理及其作用
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一个核心概念,它定义了Java程序中各种变量(线程共享变量)的访问规则,以及在并发环境下,为了确保数据的可见性、原子性和有序性,线程之间如何协作。 作用 确保数据的可见性:在多线程环境中,一个线程修改了共享变量的值,其他线程能够看到这个修改。保证数据的原子性:复合操作(例如自增操作 i++)在多线程环境
阅读更多...
map和set的使用和底层实现
嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,c++进阶——map和set的使用和底层实现,下面让我们开始今天的学习吧! map和set的使用和底层实现 1.set和multiset的使用 2.map和multimap的使用 3.底层结构 1.set和multiset的使用 set中的find和algorithm库中find的区别 删除一段区间的值,如删除[30,60]之
阅读更多...
Dubbo架构与底层实现
一、Dubbo的设计角色 (1)系统角色 Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。1 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: 服务运行容器。 (2)调用关系 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的
阅读更多...
【编程底层思考】什么是JVM对象内存分配的空间分配担保,咋担保的?
JVM对象内存分配的空间分配担保是一种确保在进行垃圾收集GC时,有足够空间处理对象晋升和分配的策略。 该机制主要用于新生代垃圾收集MinorGC和老年代垃圾收集MajorGC或FullGC之间的协调,以避免出现内存不足的情况。 具体来说,空间分配担保机制的工作原理如下 估算新生代存活对象的大小:在每次Minor GC前,JVM会估算新生代中存活对象的大小。这个估算值可以基于之前几次Minor G
阅读更多...
C++相关概念和易错语法(31)(特殊类的设计、new和delete底层调用分析)
特殊类的设计 在实践过程中,我们难免会接触到一些需要实现特定功能的类。像之前提过的unique_ptr就是直接delete拷贝构造和赋值函数。下面会分享一些常见的特殊类的实现 1、防拷贝和防赋值 通过封死拷贝构造和赋值函数来保护对象里面内容不被复制。如果对象里面的内容是指针,对析构次数有严格要求的话(如unique_ptr)就通常采用这种处理方法。 注意拷贝构造和移动拷贝为一体,赋值重
阅读更多...
vector底层原理(二)
一、vector中reserve和resize的区别: 共同点: 不会改变原有元素vector的大小只增不减,所以,使得vector空间缩小的操作无效 不同点: reserve会增加vector的容量resize在增加容量的同时,将空闲位置填入默认值 用途: reserve用于避免多次内存分配(用reserve一次多分配些空间)resize用于确保操作符[]不会越界访问,因为resize
阅读更多...
锁的底层原理是什么?
目录 前言 1. 锁的基本概念 2. CAS(Compare-And-Swap)操作 3. Atomic(原子操作) 4. 锁的实现原理 5. 锁的优化技术 前言 锁的底层原理主要依赖于 CAS 操作和原子操作来保证多线程环境下的安全访问。CAS 通过原子性地比较和交换内存值来实现无锁同步,而原子操作则提供了基本的线程安全操作。阻塞锁通过操作系统的线程调度来管理锁的争用,而非
阅读更多...
Mysql锁、事务隔离级别、MVCC底层原理机制
锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。 锁分类 1、从性能上分类:乐观锁和悲观锁 乐观锁: version字段(比较跟上一次的版本号,如果一样则
阅读更多...
glClearColor函数,glClear函数的底层解析
今天学了两个函数,分别为 void glClearColor(GLclampf red,GLclampf green,Glclampf blue,GLclampf alpha);功能是:为颜色缓存区指定确定的值 和 void glClear(GLbitfield mask);功能是,清除缓存,将缓存清除为预先的设置值。 这是我在网上找的函数解释,但是一直都感觉缺少点什么,对这两个的理解也并
阅读更多...
C语法总结 底层设计和声明
位运算符 使用底层技术进行一些位操作,可以编写加密,视频程序,以及需要高速执行或高效利用空间的程序非常有用。但是过度依赖底层操作会导致程序丧失可移植性。如果一定要使用尽量将操作限定在特定的模块中而不要分散在各处。 符号含义<<左移位>>右移位~按位求反&按位与^按位异或|按位或 为了可移植性,最好仅对无符号数进行移位运算 优先级来说,依次是 ~ ,&, ^, | //这些操作符不会改变原有变
阅读更多...
REDIS系列之底层数据结构
Redis是一款优秀的key-value数据库,其中存储的键值对都是有对象(Object)组成,可以存储字符串对象、哈希对象、列表对象、集合对象、有序集合对象;由于C语言中没有相关对象的实现,Redis自身扩种底层的数据结构实现上述对象的存储,本文将对REDIS数据库底层的数据结构进行介绍。 1. SDS字符串 Redis并没有直接采用C语言中字符串表示(以空字符结尾的字符数据,一下简称C
阅读更多...