摘要: 简单内存池的实现? 阅读全文
posted @ 2021-04-10 11:03 爱简单的Paul 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 对象池 比较类似内存池 设计实现思路: 构造函数中申请一批对象 析构函数中释放对象 提供获取和回收对象的接口 Get() 和 Recycle() 池子空了的时候支持扩容 参考链接: https://zhuanlan.zhihu.com/p/73066435 阅读全文
posted @ 2021-04-09 10:10 爱简单的Paul 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 模拟实现简单计数的智能指针的实现 阅读全文
posted @ 2021-04-07 14:42 爱简单的Paul 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-04-03 22:38 爱简单的Paul 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 单调栈主要回答这样的几种问题 比当前元素更大的下一个元素 比当前元素更大的前一个元素 比当前元素更小的下一个元素 比当前元素更小的前一个元素 问题解决模板: stack<int> st; for(int i = 0; i < nums.size(); i++) { while(!st.empty() 阅读全文
posted @ 2021-04-02 22:31 爱简单的Paul 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 最近学习redis, 发现使用的reactor 模式比较经典,深入了解下 https://zhuanlan.zhihu.com/p/87443227 阅读全文
posted @ 2021-02-09 14:44 爱简单的Paul 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 一、基本存储类型 二、常见的一些类型操作 bimap 操作(时间数据打卡,统计日活) list: 操作命令: lpush, ltrim (使用较多,类似朋友圈的 有时间线的数据) 底层实现:有序(按加入的时序排序)的数据结构,redis 采用quicklist (双端链表)和 ziplist作为li 阅读全文
posted @ 2021-01-30 16:07 爱简单的Paul 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 一、编程语言 c++ 虚函数: 在有继承关系的父子类中,构建和析构一个子类对象时,父子构造函数和析构函数的执行顺序分别是怎样的? 在有继承关系的类体系中,父类的构造函数和析构函数一定要申明为 virtual 吗?如果不申明为 virtual 会怎样? 什么是 C++ 多态?C++ 多态的实现原理是什 阅读全文
posted @ 2021-01-10 21:45 爱简单的Paul 阅读(364) 评论(0) 推荐(0) 编辑
摘要: std::equal的使用https://www.inf.pucrs.br/~flash/lapro2ec/cppreference/w/cpp/algorithm/equal.html 阅读全文
posted @ 2020-12-16 23:03 爱简单的Paul 阅读(836) 评论(0) 推荐(0) 编辑
摘要: 1、stricmp 功能: 比较字符串s1和s2,但不区分字母的大小写。 2、 阅读全文
posted @ 2020-11-23 13:58 爱简单的Paul 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 问题: 迁移重构时新站点的时候,压测过程中发现一个问题。cpu 随着url 的不断打入,cpu 使用率不断上涨,甚至 一直到 100%。发现这个现象后,首先第一个反应是,肯定是 某处代码发生了死循环,导致大量线程block住。 排查过程(过程走了很多弯路): 1. 首先找到服务进程,pstack 看 阅读全文
posted @ 2020-10-18 10:31 爱简单的Paul 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1、进程 1)操作系统资源分配的基本单位。 2)进程状态:阻塞、就绪和运行。 3)每个进程都有自己独立的进程地址空间。 4)一个进程崩溃了,不影响其他进程。 5)进程创建、切换和销毁等开销大。 6)进程间通信,效率低。 2、线程 1)操作系统调度的基本单位。 2)线程独有的资源,主要为了线程切换时, 阅读全文
posted @ 2020-09-13 23:02 爱简单的Paul 阅读(196) 评论(0) 推荐(0) 编辑
摘要: brpc开源框架 阅读全文
posted @ 2020-09-12 22:21 爱简单的Paul 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 在分布式存储的场景下,数据一致性的保证是一个需要去解决的一个问题 https://www.zhihu.com/question/36648084 raft 和paxos 是经常会被提及的一个问题 阅读全文
posted @ 2020-09-12 22:15 爱简单的Paul 阅读(230) 评论(0) 推荐(0) 编辑
摘要: class Solution { public: void preorderTraversal(TreeNode* root) { //1.先逐个访问左路结点,并将其入栈 //2.再访问栈顶元素的右子树 stack<TreeNode*> helper; TreeNode* cur=root; //只 阅读全文
posted @ 2020-05-21 23:21 爱简单的Paul 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 回溯算法就是个多叉树的遍历问题,关键就是在前序遍历和后序遍历的位置做一些操作,算法框架如下: result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 阅读全文
posted @ 2020-05-12 23:56 爱简单的Paul 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 在c++ 中,当我们定义一个类时,我们显式或隐式地定义了此类型的对象在拷贝、赋值和销毁时做什么? 一个类通过定义三种特殊成员成员函数来控制这些操作:拷贝构造函数、拷贝赋值函数、析构函数。 什么是三法则 C++三法则:如果需要析构函数,则一定需要拷贝构造函数和拷贝赋值操作符。 如何理解这句话,通常,若 阅读全文
posted @ 2020-05-07 23:55 爱简单的Paul 阅读(2086) 评论(0) 推荐(1) 编辑
摘要: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 class Solution { public: int lengthOfLongestSubstring(string s) { // 双指针问题,或者 dp 思维, 双指针 维护一个子串,实时计算长度, 注意特殊的情况,以及 // 阅读全文
posted @ 2020-05-02 17:48 爱简单的Paul 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 常用的一种写法: static Single* get_instance() { static Single; return &Single; } 这种写法的好处就是不调用的时候不构造,用完程序结束自己销毁, 比较简洁. 详细参考:https://www.cnblogs.com/ccdev/arch 阅读全文
posted @ 2020-04-25 16:58 爱简单的Paul 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 网格dfs遍历思路, 递归: void dfs(int[][] grid, int r, int c) { // 判断 界限 // 如果当前坐标 (r, c) 超出了网格范围,直接返回 if (!InGrid(grid, r, c)) { return; } // 将当前点置为已经访问过 grid[ 阅读全文
posted @ 2020-04-20 23:23 爱简单的Paul 阅读(353) 评论(0) 推荐(0) 编辑