摘要:
秒杀系统 [!NOTE] 在今年的秋招面试中,“秒杀系统”也是本人遇到的一个相对高频考点,所以在秋招结束后,我学习了极客时间的《如何设计一个秒杀系统》课程,并总结了一些要点,面试可从这几点来阐述。 目标 原则 1. 高性能。数据动静分离、热点发现和隔离、请求的削峰和分层过滤、服务端的性能优化。 2. 阅读全文
摘要:
虽然平时开发都是用的c++11标准,但打算看一下wsl ubuntu里面的gcc默认支持什么标准~ 打印__cplusplus宏 #include <cstdio> int main() { printf("%ld\n", __cplusplus); } ➜ test g++ test_cpp_ve 阅读全文
摘要:
面试中经常被问到,在多线程/加锁环境下使用sleep可能出现的问题,首先总结一下这些问题基本都出自sleep不会释放锁这一点(与wait()截然相反)。 1 sleep可能会引发的问题 线程持有锁时休眠: 当一个线程在持有锁的情况下调用 sleep() 时,它会在睡眠时仍保持锁的状态,此时其他线程将 阅读全文
摘要:
1 功能描述 实现一个权限检查机制,以确保用户根据其权限级别进行相应的操作。定义四级权限:Operator, Maintenance, Supervisor, Administrator,每一级权限都有其特定的操作范围。能够根据用户的权限级别判断用户是否有权执行特定的操作。 2 设计分析 如果实现为 阅读全文
摘要:
C++11的thread pool实现 相关特性: thread,mutex,condition_variable,functional,atomic,template,lambda #include <vector> #include <queue> #include <memory> #incl 阅读全文
摘要:
饿汉模式;懒汉模式;线程安全优化;内存泄漏优化 阅读全文
摘要:
平时所使用的new和delete操作,称之为表达式,一般由好几个步骤组成。 如上图所示,new表达式会被编译器转化为三个步骤。 new表达式不能重载,但其中operator new是可以重载的。 ➡️全局::operator new的重载 why 不能放在namespace内?因为全局operato 阅读全文
摘要:
关键词:虚函数表,动态绑定,多态 每个对象都维护自己的虚表指针,指向类的虚函数表。 (所以对象的size比其包含的所有数据size多4,即虚指针大小) ➡️动态绑定:(多态的实现原理) 通过指针p找到对象c的vptr 通过vptr找到class C的vtbl 在vtbl中找到第n个虚函数并调用 ➡️ 阅读全文
摘要:
关键词:类模板,函数模板,成员模板,模板特化 “泛化”和“特化” Tip Demo 类模板定义时需要显式地指定类型名。 函数模板定义时编译器自动进行实参推导类型(但不提供隐式转换)。 成员模板:模板中还包含模板 模板(全)特化格式:template<>尖括号内为空 模板偏特化(partial spe 阅读全文
摘要:
关键词:仿函数 pointer-like:将一个类设计得像指针一样,通常通过重载*和->操作符实现。 function-like:将类的成员设计得能像函数一样使用,通过重载()操作符实现。 Tip Demo 应用:智能指针注意:->符号在作用一次后,会继续作用下去(不同于*号)Foo f(*sp): 阅读全文