最新发布
浅谈IoC——C++怎么实现IoC?-能不能吃完饭再说

浅谈IoC——C++怎么实现IoC?

有系统学习过Spring框架的同学都知道,Spring的一个很重要也是很有设计美感的一个特性——IoC (Inversion of Control),即控制反转。所谓控制反转,就是把传统上由程序代码直接操控的对象的调用...
信号量+令牌桶算法实现的简单限流组件-能不能吃完饭再说

信号量+令牌桶算法实现的简单限流组件

基于条件变量的信号量简单实现class Semaphore { public: Semaphore(int max_count) : max_count_(max_count), current_count_(max_count) {} Semaphore() : max_count_(1), current_count_(1) ...
Andromeda的头像-能不能吃完饭再说Andromeda4个月前
016829
Protobuf简单使用-能不能吃完饭再说

Protobuf简单使用

C++ 生成代码指南 | 协议缓冲区文档 - ProtoBuf 中文 namespace 如果 .proto 文件包含 package 声明,则该文件的所有内容都将放置在相应的 C++ 命名空间中。例如,给定 package 声明 package fo...
万字长文解读经典并发模型—多进程、多线程、IO多路复用-能不能吃完饭再说

万字长文解读经典并发模型—多进程、多线程、IO多路复用

理解并发如果给CPU一系列任务,CPU按照事件顺序逐一完成这些任务,在这种情况下后续任务必须等待前面的任务完全完成之后才能占用CPU资源,对于简单的任务,计算机使用这种模型就足够了。但是为...
leetcode刷题记录——2024年2月-能不能吃完饭再说

leetcode刷题记录——2024年2月

2641、二叉树的堂兄弟节点 Ⅱ——哈希表、层序遍历使用队列进行层序遍历,sameparent记录每个节点的兄弟节点的值,同时sum用于存储当前遍历层的下一层节点总和。当遍历到下一层时,每个节点的va...
Redis 内部编码与优化方式-能不能吃完饭再说

Redis 内部编码与优化方式

前言 redis 为每种数据类型都提供了多种内部编码方式,以散列类型为例,通过散列表实现散列类型,此时查找和赋值操作时间复杂度为 O(1),但是当键中元素很少时,O(1)的性能并不会比 O(n)有明显...
Andromeda的头像-能不能吃完饭再说Andromeda10个月前
014719
CMU 15445 2023fall Project1 Buffer Pool Manager-能不能吃完饭再说

CMU 15445 2023fall Project1 Buffer Pool Manager

前言实验要求通过本地测试大概花了三天,第一次提交线上测试只有45分😭😭😭。后来又陆陆续续修改,又花了两天时间终于过了。不过这个实现基本毫无性能可言,bpm的每个函数都是简单粗暴地直接上s...
浅谈RVO与NRVO-能不能吃完饭再说

浅谈RVO与NRVO

RVO 和 NRVORVO(Return Value Optimization,返回值优化)和 NRVO(Named Return Value Optimization,命名返回值优化)是编译器进行的优化技术,旨在减少函数返回值的拷贝或移动操作。它们是 ...
Andromeda的头像-能不能吃完饭再说Andromeda4个月前
014224
leetcode刷题记录——2024年1月-能不能吃完饭再说

leetcode刷题记录——2024年1月

2487、从链表中移除节点——递归、单调栈整个过程可以理解为维护一个递减的栈,栈中的节点是按照从大到小的顺序排列的。每遇到一个新节点时,如果栈顶节点的值大于当前节点的值,则将栈顶节点替...
CMU 15445 2023fall Project0 实现一个简单的k-v存储引擎-能不能吃完饭再说

CMU 15445 2023fall Project0 实现一个简单的k-v存储引擎

CMU 15445 2023fall #Project0 实现一个简单的k-v存储引擎前言实验要求网站太吓人了,这甚至只是个课程入门实验,但是前两部分主要的内容差不多花了我一整天🥲🥲🥲(可能是我的C++基础太差了😥...
GoF 23种经典的设计模式——装饰器模式-能不能吃完饭再说

GoF 23种经典的设计模式——装饰器模式

装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 引入装饰器主要是为了...
LeetCode 热题 100-能不能吃完饭再说

LeetCode 热题 100

49、字母异位词分组——哈希表、排序将异位词进行排序后可以得到相同字符串。遍历字符串数组,对每个字符串排序之后存入哈希表,最后将哈希表转化成数组即可。class Solution { public: vector&...
GoF 23种经典的设计模式——适配器模式-能不能吃完饭再说

GoF 23种经典的设计模式——适配器模式

适配器模式(Adapter Pattern)是一种结构性设计模式,它允许接口不兼容的类之间进行协同工作。适配器模式充当两个不兼容接口之间的桥梁,使得它们能够协同工作而无需修改其源代码。 简而言之,...
GoF 23种经典的设计模式——桥接模式-能不能吃完饭再说

GoF 23种经典的设计模式——桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为...
GoF 23种经典的设计模式——原型模式-能不能吃完饭再说

GoF 23种经典的设计模式——原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,其主要思想是通过复制(克隆)现有对象来创建新的对象,而不是通过构造函数创建。这样可以避免重复创建相似对象时的性能损耗,同时也更灵...
GoF 23种经典的设计模式——创建者模式-能不能吃完饭再说

GoF 23种经典的设计模式——创建者模式

Builder 模式是一种创建对象的设计模式,它将对象的构建过程与其表示分离,允许按照步骤构建复杂对象。它提供了一种可读性强、灵活性高的方式来构建对象。使用 Builder 模式时,通常会有以下几...
GoF 23种经典的设计模式——工厂模式-能不能吃完饭再说

GoF 23种经典的设计模式——工厂模式

工厂模式是一种创建型设计模式,它提供了一种封装对象创建过程的方式。在工厂模式中,我们将对象的实例化过程移到一个独立的工厂类中,客户端通过调用工厂类的方法来创建对象,而不是直接使用 n...
GoF 23种经典的设计模式——抽象工厂模式-能不能吃完饭再说

GoF 23种经典的设计模式——抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式来创建一系列相关或依赖对象的家族,而无需指定具体的类。在抽象工厂模式中,我们定义一个抽象工厂接口,该接...
GoF 23种经典的设计模式——单例模式-能不能吃完饭再说

GoF 23种经典的设计模式——单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。它确保一个类只有一个实...
Redis主从复制的集群模式-能不能吃完饭再说

Redis主从复制的集群模式

主从复制主从复制,指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台 ...
Redis 持久化-能不能吃完饭再说

Redis 持久化

Redis 提供了两种持久化方式,即 RDB(Redis Database)和 AOF(Append-Only File)。RDBRDB 持久化是 Redis 的默认持久化方式。它将 Redis 的数据集以二进制格式保存到磁盘上的一个文件中。RDB...
Andromeda的头像-能不能吃完饭再说Andromeda10个月前
123223
Redis常用数据类型与基本命令指北-能不能吃完饭再说

Redis常用数据类型与基本命令指北

字符串优点:简单、灵活,可以存储任意类型的数据,支持丰富的字符串操作命令。应用场景:缓存、计数器、分布式锁、消息队列等。底层数据结构:简单动态字符串(SDS)。SET:设置指定键的字符串...
Andromeda的头像-能不能吃完饭再说Andromeda10个月前
014918
Redis事务与乐观锁-能不能吃完饭再说

Redis事务与乐观锁

概述 Redis 事务是一种将多个命令打包在一起执行的机制。通过使用事务,可以确保一系列命令在一次执行中依次执行,而不会被其他客户端的命令请求打断。 Redis 事务的执行分为以下几个步骤: 开...
Andromeda的头像-能不能吃完饭再说Andromeda10个月前
015521
SeedLab——Spectre Attack Lab-能不能吃完饭再说

SeedLab——Spectre Attack Lab

IntroductionSpectre AttackSpectre攻击是一种基于侧信道漏洞的攻击方法,它于2018年首次公开披露。该攻击利用了现代处理器中存在的一种设计缺陷,使得恶意程序可以访问其本不应该具备权限的内...
leetcode刷题记录——动态规划-能不能吃完饭再说

leetcode刷题记录——动态规划

509、斐波那契数 和爬楼梯一样,最基础的动态规划,没什么好说的。 class Solution { public: int fib(int n) { if (n == 0) { return 0; } vector<int> dp(3, 0); dp[1] = 1; dp[2] = 1;...
实现 Linux 系统防火墙(包过滤、状态防火墙、NAT)-能不能吃完饭再说

实现 Linux 系统防火墙(包过滤、状态防火墙、NAT)

GitHub仓库地址https://github.com/cSuk1/myFireWall前言最大的难点在于内核驱动的编写,在此之前我也没有做过Linux内核模块的代码编写,所以刚开始做起来非常吃力,这要求代码编写者有非常好的...
SeedLab——Cross-Site Scripting (XSS) Attack Lab-能不能吃完饭再说

SeedLab——Cross-Site Scripting (XSS) Attack Lab

Lab Environment SetupDNS Setup在/etc/hosts文件中,添加域名和IP地址的映射# For XSS Lab 10.9.0.5 www.seed-server.com 10.9.0.5 www.example32a.com 10.9.0.5 www.example32b.com 10.9.0.5 ...
SeedLab——Shellcode Development Lab-能不能吃完饭再说

SeedLab——Shellcode Development Lab

Task-1 Writing ShellcodeA: The Entire Process下面这段代码使用汇编语言编写实现一个Linux系统调用程序,用于执行/bin/sh命令。section .text ; 定义代码段开始 global _start ; 声明_start标...
leetcode刷题记录——2023年12月-能不能吃完饭再说

leetcode刷题记录——2023年12月

2661、找出叠涂元素——哈希表超时方法首先,通过使用unordered_map来构建矩阵mat中元素与其索引的映射关系。遍历矩阵中的每个元素,将元素作为键,将其索引{i, j, 0}作为值,存储在matrix中。...
STL 常用容器-能不能吃完饭再说

STL 常用容器

vector:动态数组向量(vector):向量是一个可变大小的数组,支持快速的随机访问和在末尾进行元素的插入和删除。适用于需要高效的随机访问和动态调整大小的情况,例如存储大量元素且需要频繁地...
leetcode刷题记录——2023年10月-能不能吃完饭再说

leetcode刷题记录——2023年10月

2、两数相加注意的点:同位相加大于10的情况注意进位可能是极大的数字,转成整数直接相加不可行class Solution { public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *re...
智能指针详解-能不能吃完饭再说

智能指针详解

为什么引入智能指针?内存泄漏问题C++在堆上申请内存后,需要手动对内存进行释放。随着代码日趋复杂和协作者的增多,很难保证内存都被正确释放,因此很容易导致内存泄漏。在上述代码中,Functio...
Andromeda的头像-能不能吃完饭再说Andromeda1年前
014322