09 2023 档案
摘要:1、bthread基本原理 https://cloud.tencent.com/developer/article/1915033 https://cloud.tencent.com/developer/article/1915031 https://cloud.tencent.com/develo
阅读全文
摘要:零拷贝 零拷贝是网络编程的关键, 很多性能优化都离不开。像kafka、nginx、tomcat中都使用了零拷贝技术。 一般来说从数据角度分析: 在零拷贝机制中, 整个数据在内存中只有一份数据;非零拷贝机制中 , 内核缓冲区 , 用户缓冲区 , Socket 缓冲区 , 各有一份数据; 零拷贝是什么:
阅读全文
摘要:Hive简介 Hive 是一种大数据处理工具,使用类SQL 的HiveQL 语言实现数据查询,它底层封装了Hadoop ,所有Hive 的数据都存储在Hadoop 兼容的HDFS中。 更官方的描述: Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和
阅读全文
摘要:Hadoop 首先大数据时代有两个问题? 1、数据怎么存? 2、数据怎么算? 单机时代 数据存储和计算都是在本地。 以2U服务器为例:硬盘20T、cpu128 core、内存256G,可以满足单表10亿条数据。 随着数据越来越多,单机无法满足要求,因此需要管理多台服务器。 Hadoop HDFS:负
阅读全文
摘要:内存池的实现: 在堆内存中申请一大块内存当作内存模块,为了避免内存块的使用浪费,将内存模块根据所装载的内存块大小,分为不同的内存池。 定义一个结构体用来表示内存块信息,定义节点指针,方便内存块使用与归还,定义内存池标记表示是否属于内存池中的内存单元(当内存池中的内存单元使用完毕后,向系统申请的标记)
阅读全文
摘要:#include <iostream> #include <thread> #include <queue> #include <vector> #include <mutex> #include <condition_variable> using namespace std; using cal
阅读全文
摘要:一、malloc申请内存过程 malloc() 并不是系统调用,也不是运算符,而是 C 库里的函数,用于动态分配内存。 malloc申请内存的时候,会有两种方式向操作系统申请堆内存: 方式一:通过brk()系统调用从堆分配内存。 方式二:通过mmap()系统调用在文件映射区域分配内存。 二、brk(
阅读全文
摘要:brpc官方文档:https://brpc.incubator.apache.org/zh/docs/getting_started/ 其他资料: https://zhuanlan.zhihu.com/p/594587069 https://zhuanlan.zhihu.com/p/60962729
阅读全文
摘要:一、进程 1.1 进程可看做是正在执行的程序 进程需要一定的资源(如 CPU、时间、内存、文件和 I/O 设备)来完成其任务。 这些资源在创建进程或者执行进程时被分配。 1.2 进程的组成有:PCB、程序段、数据段。 PCB(进程控制块,process control block): 保存进程运行期
阅读全文
摘要:动态规划 背包问题 背包问题是一类经典的动态规划问题,它非常灵活,需要仔细琢磨体会,本文先对背包问题的几种常见类型作一个总结,期望可以用一套框架解决背包问题。 常见背包问题可分为: 01 背包问题: 最基本的背包问题就是 01 背包问题:一共有 N 件物品,第 i(i 从 1 开始)件物品的重量为
阅读全文
摘要:#include <iostream> #include <vector> using namespace std; /// 合并 void merge(vector<int>& nums, int l1, int r1, int l2, int r2, vector<int>& tmp) { in
阅读全文
摘要:## 题目 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 ### 示例 1: 输入:n = 12 输出:3 解释:12 = 4
阅读全文
摘要:堆排序主要分为两个函数: 1、构建堆 2、元素调整 ``` #include using namespace std; void maxHeap(int tree[], int n, int i) { if (i >= n) return; int lchild = i*2 + 1; int rch
阅读全文
摘要:queue为单端队列 deque为双端队列 priority_queue为优先队列 #include <iostream> #include <queue> #include <vector> using namespace std; //priority_queue<int, vector<int
阅读全文