摘要: 我们知道在使用线程池的时候一般不用系统创建的,系统创建的可能会存在风险。那么如果我们自己创建,到底应该如何创建才能充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能呢? 事实上,在实际工作中,我们需要根据任务类型的不同选择对应的策略。 核心线程数如何选择? 其实在实际的业务中,我们 阅读全文
posted @ 2024-11-21 18:44 daligh 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 前言 首先,Redis作为一个优秀开源的内存数据结构存储系统,可以用作数据库、缓存和消息中介。它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。当我们谈论Redis中的“哈希表”时,我们通常是指Redis用作数据结构之一的哈希数据类型,而不是Redis内部用于存储所有键值对的全局哈希表 阅读全文
posted @ 2024-11-21 10:25 daligh 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 在 Linux 内核中,双向链表是一种非常重要的数据结构,广泛用于各种场景,尤其是在进程管理和调度中。本文将详细介绍 list_head 数据结构的实现及其在进程链表和运行队列中的应用。 1. 双向链表的实现 list_head 数据结构 Linux 内核定义了一个简单的 list_head 结构来 阅读全文
posted @ 2024-11-12 15:28 daligh 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 进程标识 在操作系统中,为了实现对进程的有效管理和调度,每个进程都需要有一个唯一的标识。在 Linux 系统中,这种标识主要通过进程描述符(task_struct)和进程标识符(Process ID, PID)来实现。 进程描述符 进程描述符是 Linux 内核用于管理和调度进程的核心数据结构,每个 阅读全文
posted @ 2024-11-12 14:52 daligh 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 什么是 Panic? 当 panic 异常发生时,Go 程序会立即中断当前的执行,并运行该 goroutine 中所有已延迟的(defer)函数。之后,程序会崩溃,输出包含 panic 值和调用堆栈跟踪的日志信息。这些信息详细记录了程序崩溃时的状态和 panic 触发的调用路径,通常已足够帮助开发者 阅读全文
posted @ 2024-10-26 15:21 daligh 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 在Go语言中,错误处理是一门艺术。不同于许多其他编程语言,Go对错误的处理非常重视,将其视为程序设计中不可或缺的一部分。这篇文章将带你深入理解Go中的错误处理哲学,以及常用的五种错误处理策略。 Go中的错误类型 Go中的错误大致可分为三类: 总是成功的函数:某些函数不会发生错误,像 strings. 阅读全文
posted @ 2024-10-26 14:23 daligh 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 在C/C++编程中,调用约定(Calling Convention)是函数调用过程中参数传递、栈清理、返回值处理等规则的集合。不同的调用约定决定了函数参数如何传递(通过寄存器或栈)、函数返回时由谁清理栈、以及如何处理返回值。 本文将详细讨论两种常见的调用约定:__cdecl 和 __stdcall, 阅读全文
posted @ 2024-10-18 10:37 daligh 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 一、选择题 CRUSH算法最初是为哪个分布式存储系统设计的? 正确答案:C. Ceph 解释: CRUSH(Controlled Replication Under Scalable Hashing)算法最初是为 Ceph 分布式存储系统设计的,用于高效地分布和复制数据。 CRUSH算法的主要作用是 阅读全文
posted @ 2024-10-14 14:40 daligh 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 虚函数 概念:虚函数,是指被virtual关键字修饰的成员函数。 作用:函数作为多态的实现方式,重要性毋庸置疑。多态意指相同的消息给予不同的对象会引发不同的动作(一个接口,多种方法) 虚函数的内存模型:虚函数(Virtual Function)是通过虚函数表(Virtual Table,简称为V-T 阅读全文
posted @ 2024-10-08 15:45 daligh 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在前后端分离的现代 Web 应用开发中,跨域请求 是一个经常遇到的问题。如果不加以解决,跨域请求会导致前端无法正常访问后端服务。本文将详细介绍跨域请求的概念、CORS 机制的工作原理,并通过代码展示如何在 Gin 框架中解决跨域问题。 什么是跨域请求? 跨域请求,顾名思义,是指从一个域名向另一个不同 阅读全文
posted @ 2024-10-05 15:23 daligh 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 文件上传功能简介 文件上传是 Web 应用中常见的功能之一,它允许用户通过浏览器将本地文件上传到服务器。Gin 框架通过其对 multipart/form-data 的支持,使得处理文件上传变得十分简单。我们将从一个简单的示例代码出发,逐步讲解 Gin 框架的关键机制。 文件上传示例代码 首先,我们 阅读全文
posted @ 2024-10-05 15:10 daligh 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 在现代编程语言中,垃圾回收器(Garbage Collector, GC)是内存管理的重要工具,它帮助开发者自动回收不再使用的内存对象。然而,随着并发编程的广泛应用,程序在运行过程中会不断修改对象的引用关系,这对垃圾回收器提出了新的挑战。为了解决这一问题,写屏障(Write Barrier)应运而生 阅读全文
posted @ 2024-10-03 16:57 daligh 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 摘要 本文将深入探讨垃圾回收机制在现代软件开发中所扮演的角色,包括它为开发者带来的便利以及伴随而来的挑战。通过分析 GC 的优缺点,我们将帮助读者理解何时何地使用 GC 可以最大化其益处,并减少潜在的负面影响。 正文 (1) 垃圾回收的优势 屏蔽内存回收的细节 拥有 GC 能力的语言能够自动处理内存 阅读全文
posted @ 2024-10-03 00:03 daligh 阅读(12) 评论(0) 推荐(0) 编辑
摘要: “威尔逊区间”通过调整置信区间来防止投票人数过少导致的排名不可信。然而,这一方法的一个显著问题是:排行榜前列往往被投票数最多的项目占据,而新项目或冷门项目难以脱颖而出。以IMDB为例,假设一部好莱坞大片有10,000名观众投票,而一部小成本文艺片只有100名观众投票。使用“威尔逊区间”时,后者的评分 阅读全文
posted @ 2024-09-26 20:16 daligh 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 理解基于牛顿冷却定律的排名算法:温度与时间的衰减模型 在许多内容平台上,例如新闻网站或社交媒体,用户通过投票来表达对文章的支持或反对,这决定了内容的热度。然而,随着时间的推移,内容逐渐失去关注。为了有效衡量“热度”并自动衰减旧内容的排名,牛顿冷却定律提供了一个优雅的解决方案。 1. 什么是牛顿冷却定 阅读全文
posted @ 2024-09-22 10:57 daligh 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 一、Delicious的排名算法 Delicious 是一个基于用户书签的内容分享平台,它使用的排名算法非常直观——通过单位时间内用户的投票(收藏)数来确定排名。具体来说,Delicious 会统计过去60分钟内被收藏的次数,得票最多的条目排名靠前。每60分钟,系统更新一次热门内容的榜单。 优点: 阅读全文
posted @ 2024-09-21 22:36 daligh 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 随着互联网的发展,RESTful API已经成为开发和集成现代网络应用的主要方式。它以简单、灵活和高度扩展性为特点,在Web、移动应用、微服务等领域广泛应用。本篇博客将从REST的基本理念、设计原则到实际应用,详细介绍RESTful API,并提供最佳实践建议。 一、什么是RESTful API? 阅读全文
posted @ 2024-09-11 14:40 daligh 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 在互联网业务中,限流(流量控制)是确保系统稳定性的重要手段,特别是在电商秒杀、热点新闻推送、双十一购物节等场景中。本文将详细介绍两种常见的限流算法——漏桶算法和令牌桶算法,并结合Golang语言进行实现说明。 什么是限流? 限流是指在高并发环境下,控制请求的速率或并发数量,避免系统因负载过大而崩溃。 阅读全文
posted @ 2024-09-11 14:36 daligh 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 一、Redis中的数据结构与适用场景 在设计点赞功能时,Redis的多种数据结构能够帮助我们实现不同的需求: ZSet(有序集合):ZSet允许为每个成员指定一个分数,支持按分数排序。我们可以用它来按时间、评分存储和排序帖子。 Set(集合):用于存储不重复的数据,如帖子所属的社区或投票的用户ID。 阅读全文
posted @ 2024-09-09 14:05 daligh 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 为了限制一个账号在同一时间只能登录一个设备,常用的方法是使用 token(令牌) 机制结合服务器端的存储与验证。基本思路是,当用户登录时,生成一个 token,并将其与用户的登录状态绑定存储在服务器上。接下来,在用户每次请求时都会携带这个 token,服务器端则验证 token 是否有效、唯一,确保 阅读全文
posted @ 2024-09-09 10:06 daligh 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 服务器的性能和稳定性对于任何网站或应用的成功至关重要。无论是应对日常流量还是突发的高并发访问,了解服务器在各种负载下的表现都至关重要。因此,进行合理的压力测试(Stress Testing)不仅可以帮助识别潜在的性能瓶颈,还可以确保系统在高峰期依然能够稳定运行。本文将详细介绍如何合理地对服务器进行压 阅读全文
posted @ 2024-09-03 15:10 daligh 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 在Linux开发过程中,程序崩溃时生成核心转储文件(core dump)是调试的重要手段。然而,有时候我们会遇到看不到核心转储文件的情况,或者即使有了核心转储文件,也难以快速找到问题的根源。本文将详细记录一次使用核心转储文件排查问题的过程,希望能为大家提供一些参考。 一、看不到核心转储文件时的处理步 阅读全文
posted @ 2024-09-02 22:18 daligh 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 边下边播技术在视频播放中具有显著的优势,特别是在节省流量、提高播放速度和稳定资源使用方面。以下是对该技术的一些详细解释和可能遇到的难点。 边下边播的优势 省流量,二次打开快: 视频播放过程中,下载的数据可以存储在本地,这样下次观看同一视频时,可以直接读取本地缓存数据,而不需要再次请求网络,节省流量并 阅读全文
posted @ 2024-08-25 09:15 daligh 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 采样率的基本概念 要理解倍速播放与采样率的关系,首先需要了解采样率的基本概念。采样率(Sampling Rate)指的是每秒钟对模拟音频信号进行采样的次数,通常以赫兹(Hz)为单位。采样率越高,每秒钟采样的次数越多,音频质量也越高。常见的采样率有: 44.1 kHz:这是CD音质的标准采样率,每秒采 阅读全文
posted @ 2024-08-22 11:23 daligh 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 引言 在设计文件传输系统时,选择合适的分块大小对于确保高效的数据传输至关重要。我尽量影响分块大小的因素,并通过一个具体的测试案例来分析最佳分块大小的选择。此外,我参考了FTP协议如何处理文件传输,并讨论其优点。 1. 影响分块大小的因素 在选择分块大小时,需要考虑以下几个关键因素: 网络带宽:了解网 阅读全文
posted @ 2024-08-16 10:13 daligh 阅读(23) 评论(0) 推荐(0) 编辑