- 博客(22)
- 收藏
- 关注
原创 golang深度学习-内存管理
TCMalloc(Thread-Caching Malloc)是由Google开发的一种内存分配器,用于替代标准C库中的malloc和free函数。它主要用于提高多线程环境下程序的内存分配和释放性能,特别是在高并发情况下。使用TCMalloc能够有效地提升程序的性能,特别是在多线程并发环境下,减少锁竞争和内存碎片对性能造成的影响。
2025-03-02 16:13:03
951
1
原创 golang深度学习-并发控制
在大多数情况下,线程是进程的组成部分。一个进程中可以存在多个线程,这些线程并发执行并共享进程的内存(例如全局变量)等资源。而进程之间相对独立,不同进程具有不同的内存地址空间、代表程序运行的机器码、进程状态、操作系统资源描述符等。线程是CPU执行的最小单元,而进程是程序运行的实例。虽然多核处理器可以保证并行计算,但是实际中程序的数量以及实际运行的线程数量会比CPU核心数多得多。
2025-02-26 16:43:17
297
4
原创 golang深度学习-协程与GMP模型
在现今流行的操作系统中,线程是进程的组成部分。一个进程中可以存在多个线程,这些线程并发执行并共享进程的内存(例如全局变量)等资源。而进程之间相对独立,不同进程具有不同的内存地址空间、代表程序运行的机器码、进程状态、操作系统资源描述符等。线程是CPU执行的最小单元,而进程是程序运行的实例。虽然多核处理器可以保证并行计算,但是实际中程序的数量以及实际运行的线程数量会比CPU核心数多得多。
2025-02-24 00:49:55
671
2
原创 Golang深度学习
在2009年,Google公司发布了一种新的编程语言,名为Go(或称为Golang),旨在提高编程效率、简化并发编程,并提供强大的标准库支持。Go语言的设计者们希望通过Go语言能够解决软件开发中的一些长期存在的问题,比如并发编程的复杂性、垃圾回收机制的效率以及跨平台的兼容性等。自从2009年发布以来,Go语言已经经历了多个版本的迭代和改进,持续吸引着全球开发者的兴趣和使用。其简洁性、高效性以及强大的并发处理能力使其成为构建高性能网络服务的首选语言之一。
2025-02-19 23:55:09
1500
原创 日常故障排查 - Java程序故障排查
程序在运行过程中可能需要创建某些资源用于完成特定的功能,而这些资源的频繁创建或销毁会消耗CPU或内存资源。为提高程序的性能,可以在程序提前创建好这类资源,在使用的时候直接使用,使用完成之后放回原位,从而避免频繁的创建于销毁,而这种技术就叫做池化技术。常见的资源池有:线程池、内存缓冲池、HTTP连接池、Redis连接池、数据库连接池等。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。内存区域的唯一目的就是存放对象实例,“几乎”所有的对象实例都分配在堆中(除了栈上分配、标量替换情况)。
2025-02-15 20:00:18
756
原创 日常故障排查 - Linux常用命令
使用top命令可以查看正在运行的系统中的动态实时视图信息,显示系统摘要信息,以及Linux内核当前正在管理的任务列表。其支持静态输出,也支持交互式输出,还可以在启动之前读取响应的配置文件来决定如何显示进程的状态信息。
2025-02-14 21:11:46
779
原创 消息中间件 - 9.消息中间件RocketMQ生产者端
RocketMQ支持多种消息发送方式:同步(sync)、异步(async)、单向(oneway)、延迟、批量。
2025-02-12 21:49:40
823
1
原创 消息中间件 - 8.消息中间件RocketMQ—路由中心Nameserver
NameServer是一个功能完整的命名服务组件,提供轻量级的服务发现及完整路由信息记录能力。
2025-02-06 17:02:23
655
原创 消息中间件 - 7.消息中间件RocketMQ架构简介
RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,承载了阿里“双11”大部分业务,可以说是一名久经战场的“精英”、值得信任的“伙伴”。同时它的开发语言为Java,自然而然地得到了广大Java开发者的青睐。RocketMQ作为一款高性能消息中间件,其核心优势是可靠的消息存储、消息发送的高性能与低延迟、强大的消息堆积能力与消息处理能力、严格的顺序消息模式等。
2025-01-24 11:35:00
699
原创 消息中间件 - 6.消息中间件Kafka消费者端
消费者(Consumer)负责订阅Kafka中的主题(Topic),并且从订阅的主题上拉取消息。消费者组(Consumer Group):Kafka消费者组是一个由一组消费者实例组成的逻辑概念,它可以订阅并消费Kafka集群中一个或多个主题中的消息。每个消费者组内的消费者实例协调工作,以便每个分区中的消息只被组内的一个消费者实例消费。如果消费者组内有多个消费者实例,则分区中的消息将在组内的这些实例之间进行负载均衡。
2025-01-14 13:59:50
914
原创 消息中间件 - 5.消息中间件Kafka生产者端
RecordAccumulator 主要用来缓存消息以便 Sender 线程可以批量发送,进而减少网络传输的资源消耗以提升性能。RecordAccumulator 缓存的大小可以通过生产者客户端参数buffer.memory 配置,默认值为 32MB。如果消息缓冲区满了,使用KafkaProducer发送消息的时候就会被阻塞或者抛出异常,阻塞时间取决于配置的值,默认是60秒。在 RecordAccumulator 的内部为每个分区都维护了一个双端队列,队列中的内容就是ProducerBatch,即。
2025-01-07 19:50:35
775
原创 消息中间件 - 4.消息中间件Kafka服务端运行机制
当新的控制器被选举之后,原故障的节点已经恢复,此时集群中存在两个控制器,一个是新选举出来的控制器,一个是从故障中恢复的控制器,这就是所谓的脑裂。尤其是在可靠性这一方面是需要去认真研究的点。参数配置为大于1的值,那么就会出现错序的现象:如果第一批次消息写入失败,而第二批次消息写入成功,那么生产者会重试发送第一批次的消息,此时如果第一批次的消息写入成功,那么这两个批次的消息就出现了错序。对于收到的每一条消息,只有当它的序列号的值(seq_new)比broker端中维护的对应的序列号的值(seq_old)大1(
2025-01-05 21:28:14
992
原创 消息中间件 - 3.消息中间件Kafka服务端—主题分区及消息存储机制
主题和分区是Kafka 的两个核心概念。分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。分区可以有一至多个副本,每个副本对应一个日志文件,每个日志文件对应一至多个日志分段(LogSegment),每个日志分段还可以细分为索引文件、日志存储文件和快照文件等。
2024-12-30 11:55:27
1053
原创 消息中间件 - 2.消息中间件Kafka架构简介
Apache Kafka 是一款开源的消息引擎系统,同时也是一个分布式流处理平台(Distributed Streaming Platform)。
2024-12-26 09:15:00
1241
原创 消息中间件 - 1.消息中间件的简介
目前开源的消息中间极其丰富的,比如 ActiveMQ、RabbitMQ、Kafka、RocketMQ、ZeroMQ 等。但是业务场景不一样,受限于系统的规模,业务的取舍(如功能需求、延迟容忍度、消息回溯、可持久化需求),就需要从不同的角度去衡量为业务选择更适合的消息队列。目前比较主流MQ有:RabbitMQ、RocketMQ、Kafka。RabbitMQ采用 Erlang 语言实现的 AMQP 协议的消息中间件,起源于金融系统,广泛应用在分布式系统中,承担消息转发的职责。
2024-12-24 17:15:00
1109
原创 浅浅聊下网络编程
Linux 网络编程是一个广泛而深入的领域,Socket 编程是基础,IO 多路复用是提高效率的关键技术,而理解Linux网络协议栈则有助于更好地优化和调试网络应用。
2024-11-16 16:12:46
1800
原创 重温计算机网络基础
玩互联网技术的都应该知道计算机网络的重要性。起初在大学的时候也认真学习过,但是工作多年以后发现对网络的概念已经越来越模糊了,就好像是理所当然一样。所以这次打算重温下计算机网络相关的基础知识,并结合工作中常遇到的技术去挖掘拓宽技术认知。
2024-11-09 21:00:18
1529
原创 浅浅聊下零拷贝
所谓零拷贝就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术。要聊零拷贝就需要先了解一些技术,如:内核态与用户态、DMA技术、传统拷贝。
2024-11-06 00:12:14
1549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人