自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(204)
  • 收藏
  • 关注

原创 闪存的组织结构

一个典型的flash芯片由 package die plane block page组成。package:也就是chip即flash芯片,也就是我们经常在M.2的SSD上看到的nand flash颗粒:Die:又称lun,一个nand颗粒由一颗或者多颗die封装在一起而成,这种封装可以是平排的,也可以是层叠的。die内部可以通过3D堆叠技术扩展容量,就像盖楼房一样:die是可以单独执行命令和返回状态的最小单位。plane:一个die可以包含几个planeblock

2022-05-24 10:27:59 1245

原创 【计算机专业】手把手教你毕业论文参考文献怎么弄

所需工具:NoteExpress软件,下文中简称“NE”dblp(dblp: computer science bibliography),是一个计算机类英文文献的集成数据库系统word软件==================分割线====================背景:写论文时,用NE管理参考文献,总是遇到更新失败的情况,这样的话,题录就只有一个文件名,没有其他信息,如下图中红色圈出的地方,都是空的,此时难道只能一个一个编辑题录补全作者、年份等各种信息再引用吗?这也太麻.

2022-03-11 17:26:34 4760

原创 linux 下模拟网络延迟和丢包的工具tc的简单用法

1.查看已经配置的网络条件:tc qdisc show dev eno12.删除网卡上面的相关配置:tc qdisc del dev eno1

2021-12-08 10:27:16 1270

原创 word中插入的表格中使用tab键

在word中的表格里,有时我们需要输入制表符(tab键),但是发现,在表格中按下tab键时不会出现制表符,而是跳到下一个单元格,那么怎样才能正确输入制表符(tab键)呢?答案是:ctrl+tab

2021-12-06 09:23:44 9042 9

原创 word中使用texlive和aurora插入伪代码

参考链接:通过下面的链接,可以将texlive安装好LaTeX学习:Texlive 2019和TeX studio的安装及使用通过下面的链接,可以将aurora安装好Aurora (Office中的LaTeX编辑器) 下载如何在word中写伪代码通过下面的链接,可以知道怎样在word中使用aurora使用Aurora在Word中插入算法伪代码教程!!!亲测有效!!!写论文必备!!!一定要注意的一点:之前看的教程说aurora安装好之后会直接在word选项卡中显示,..

2021-12-05 21:04:35 1298

原创 mount相关

fdisk -ldfmount 设备 路径

2021-11-26 15:36:48 601

原创 HTTP各版本的不同

http是什么?http是计算机世界里专门在两点之间传输文字、图片、音视频等超文本数据的约定和规范。http1.0简单,应用广泛无状态:好处和坏处-------cookie session明文传输:好处和坏处不安全http1.1长连接:减少tcp连接的重复建立和断开带来的开销,减轻了服务器端的负载管道网络传输:减少整体的响应时间,但是会导致队头阻塞瓶颈:请求/响应头部(header)未经压缩就发送,首部信息越多延迟越大。只能压缩body的部分 发送冗长的头部,每

2021-09-19 15:33:49 266

原创 力扣滑动窗口

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/yi-ge-mo-ban-miao-sha-10dao-zhong-deng-n-sb0x/

2021-08-30 19:32:44 73

原创 5/9---5/11二分搜索树的局限性及相关问题

1.二分搜索树可能退化为链表改进:平衡二叉树平衡二叉树的一种实现:红黑树平衡二叉树的其他实现:2-3树、AVL树、Splay 树2.其他相关结构平衡二叉树和堆的结合:TreapTrie3.各种各样的树...

2021-07-25 16:50:43 90

原创 5/2 二分搜索树

#include <iostream>#include <queue>#include <cassert>using namespace std;template <typename Key,typename Value>class BST{private: struct Node{ //定义节点 Key key; Value value; Node* left; ...

2021-07-25 16:11:44 109

原创 4-13排序算法总结

2021-07-25 11:27:41 92

原创 3-5---3-9快速排序相关

目录1.快速排序1.1 版本1:1.2 版本2:1.3 版本3:1.4 版本4:1.5 版本5:2 归并排序和快速排序的衍生问题2.1逆序对问题2.2 取数组中第n大的元素1.快速排序1.1 版本1:中间过程:最终:此时,只需将l和j位置的元素交换://对arr[left...right}部分进行partition操作//返回p,使得arr[left...p-1]<arr[p],arr[p+1...r]>arr[..

2021-07-24 18:09:51 172

原创 3-1/3-4归并排序相关

1递归(自顶向下)1.1版本1:void __merge(int arr[],int left,int mid,int right){ int helper[right-left+1]; for(int i=left;i<=right;i++) { helper[i-left]=arr[i]; } int i=left; int j=mid+1; int k; for(k=left;k<=right;..

2021-07-24 15:52:59 97

原创 补充:冒泡排序、希尔排序

冒泡排序版本1:void bubbleSort(int arr[],int n){ bool swapped; //标记每次是否有进行交换,如果没有进行交换,说明已经有序了 do{ swapped=false; for(int i=0;i<n-1;i++) { if(arr[i]>arr[i+1]) { swap(arr[i],arr[i..

2021-07-24 14:10:52 137

原创 2-5/2-6 插入排序法及改进

原理:将元素逐个插入到前面已经排好序的子数组中插入排序的一个重要性质是一旦找到了合适的位置,就可以提前终止内层循环,所以,对于近乎有序的数组,排序速度非常快版本1:#include <iostream>using namespace std;void insertionSort(int arr[],int n){ for(int i=1;i<n;i++) //为arr[i]找合适的位置 { for(int j=i;j>0;j-

2021-07-24 10:52:12 79

原创 剑指offer 03.数组中重复的数字

方法1:使用哈希表记录数组中的各个数字,当查到重复数字则直接返回class Solution {public: int findRepeatNumber(vector<int>& nums) { int n=nums.size(); //计算数组的长度 unordered_map<int,bool> um; //初始值为false for(int i=0;i<n;i++) {

2021-07-04 22:55:57 68

原创 7-1图论基础/7-2图的表示

7-1图论基础图由节点和边组成。图的分类: 有向图:边有方向 无向图:边没有方向 有权图:边有一个数值和其对应 无权图: 和上面相反 连通图:节点之间是否连通 简单图:是否存在自环边(自己到自己)或者平行边(两个节点之间有多条边)7-2图的表示邻接矩阵:邻接表:邻接表适合表示稀疏图(边比较少,图中边的个数远远少于当图是完全图时的个数)邻接矩...

2021-05-26 11:25:46 250

原创 fast2020《Hybrid Data Reliability for Emerging Key-Value Storage Devices 》

题目:新兴键值存储设备的混合数据可靠性摘要:数据存储技术的快速增长创造了现代数据驱动的世界。现代工作负载和应用影响了存储设备从简单的块设备到更智能的对象设备的演变。新兴的下一代 (KV)存储设备允许将可变长度的用户数据直接存储和检索到设备上,并且可以通过用户需要的可变长度键进行寻址。独立磁盘冗余阵列(RAID)等多个块存储设备的传统可靠性方案已经存在很长时间了,并且被大多数具有多个设备的系统所使用。现在,问题出现了,这些新兴的目标设备的等价物会是什么样子,它与传统的机制相比会是什么样子。本...

2021-05-08 10:01:00 308

原创 5-1 二分查找法

目录LeetCode704 easyLeetCode35 easyLeetCode34 中等LeetCode153 中等LeetCode33 中等LeetCode704 easy方法一:迭代class Solution{public: int search(vector<int>& nums, int target) { ////在nums[l...r]之间查找target int l=0;

2021-05-03 18:27:46 202

原创 2021FAST《Facebook‘s Tectonic Filesystem: Efficiency from Exascale》

题目:Facebook的构造文件系统:来自百亿亿次的效率

2021-04-23 15:50:35 366

原创 2021FAST《SpanDB: A Fast, Cost-Effective LSM-tree Based KV Store on Hybrid Storage》

题目:SpanDB:一种快速、低成本的基于lsm树的混合存储KV存储

2021-04-23 14:48:04 459

原创 C++ 生产者消费者 四种情况

生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源。本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模型,多生产者-单消费者模型,多生产者-多消费者模型,我会给出四种情况下的 C++11 并发解决方案。一、单生产者-单消费者模型顾名思义,单生产者-单消费者模型中只有一个生产者和一个消费者,生产者不停地往产品库中放入产品,消费者则从产品库中取走产品,产品库容积有限制,只能容纳一定数目的...

2021-04-09 22:17:46 1098

原创 C++ 生产者消费者

#include <unistd.h>#include <cstdlib>#include <condition_variable>#include <iostream>#include <mutex>#include <thread>static const int kItemRepositorySize = 10; // Item buffer size.static const int kItemsToPro.

2021-04-09 21:53:19 314

原创 valgrind内存检测

目录示例1:检测非法访问和内存泄漏示例2:检测未初始化的内存:示例3:内存读写越界:示例4:内存覆盖示例5:动态内存管理错误示例6:内存泄漏示例1:检测非法访问和内存泄漏test.cpp:#include <iostream>#include <stdlib.h>using namespace std;void func(){ int *x=(int *)malloc(sizeof(int)*10); x[10]=0;}

2021-04-05 13:33:38 221

原创 strace命令

strace是什么?strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

2021-04-05 10:37:47 442

原创 mysql修改密码

https://segmentfault.com/a/1190000023081074后面为要改成的密码参考链接:Ubuntu18.04安装MySQLERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your解决MySQL修改密码:ERROR 1290 (HY000): The MySQL server is runnin

2021-04-03 18:37:15 69

原创 数据结构和算法之美

06链表上:如何实现LRU缓存淘汰算法?1 链表vs数组:二者的区别首先在插入删除和随机访问的时间复杂度;数组简单易用,使用连续的空间,可以借助CPU的缓存机制,预读数组中的数据,访问效率高;而链表在内存中不是连续存储,对CPU缓存不友好,没办法有效预读。数组的缺点是大小固定,一经声明就要占用整块连续内存空间。如果过大,浪费内存,如果过小,可能不够用。这时只能再申请一个更大的空间,把原数组拷贝进去,非常费时;而链表天然支持动态扩容。07链表下1...

2021-04-01 23:38:37 93

原创 Reactor和Proactor模式

主线程只负责监听文件描述符上是否有事件发生,有的话就将可读可写事件放入请求队列,交给工作线程去处理。除此之外,主线程不做任何实质性的工作。读写数据、接受新的连接、以及处理客户请求均在工作线程中完成。Proactor模式将所有的I/O操作都交给主线程和内核来处理(进行读写),工作线程只负责业务逻辑。Proactor模式是异步I/O,读写是内核完成的,完成后通知应用程序(通知方法如信号)。使用同步I/O模拟Proactor模式,该方法中,主线程执行数据读取,读写完成后,通...

2021-03-31 19:50:52 264

原创 线程池

原理:主线程有了任务后,把任务放到工作队列中,线程池中的线程一直循环去工作队列中取任务。如果工作队列为空,就等待;如果工作队列不为空,就取任务,执行;类似于生产者消费者模型:线程池类的私有变量:线程池的构造函数:里面主要是线程创建出来后要执行的代码threadCount为线程池中线程的数量,用for循环创建threadCount个线程;每个线程创建好之后就死循环,从工作队列中取任务,执行;如果工作队列不为空,并且线程池没有关闭,就阻塞等待;向工作队列中添加任务

2021-03-31 16:22:44 135 1

原创 6/1-6/6并查集实现

用来解决连接问题版本1:查找O(1),union O(N) (只有一层)#include <iostream>#include <bits/stdc++.h>using namespace std;class unionfind{ int* id; //表示数据的组 int cnt;public: unionfind(int n) { id=new int[n]; for(int i=0...

2021-03-25 17:05:43 68

原创 4/1--4/7最大堆 C++实现

#include <iostream>#include <bits/stdc++.h>using namespace std;template<typename T>class maxHeap{private: T* data; //保存元素的数组指针 int sz; //最大堆里的元素个数 int cap; //容量 void shiftup(int k); //将第k个元素向上调整 void shif.

2021-03-25 15:53:25 81

原创 字符串函数实现

1.strlen函数int mystrlen1(char *str) //递归{ if(*str=='\0') return 0; return 1+mystrlen1(str+1);}int mystrlen2(char *str) //迭代{ int cnt=0; while(*str) { ++cnt; ++str; } return cnt;}2.strcmp函数

2021-03-25 10:56:31 308

原创 腾讯面试题 用拉链法实现hash,接口:插入、查找,删除

参考LRU算法

2021-03-24 15:55:44 224

原创 腾讯面试题 C++ 双向链表 模板类实现

c++中的双向链表写法,主要实现(增删查改,链表逆置,构造函数,运算符重载,等)c++实现双向链表,类模板双向链表

2021-03-24 10:35:51 320

原创 ip地址和数字互相转换

#include <bits/stdc++.h>using namespace std;unsigned int ipToInt(string &ip){ int l=ip.size(); //字符串的长度 vector<int> iplist; //存储分割的字段 for(int i=0;i<l;i++) { int j=i; while(j<l && ip[j.

2021-03-22 16:56:32 356

原创 字符串匹配算法

字符串匹配算法

2021-03-19 18:53:22 52

原创 LeetCode112和113.路径总和

LeetCode112方法1:递归class Solution {private: bool traversal(TreeNode* cur, int count) { if (!cur->left && !cur->right && count == 0) return true; // 遇到叶子节点,并且计数为0 if (!cur->left && !cur->right) ret

2021-03-15 14:27:28 80

原创 力扣110. 平衡二叉树

方法1:自顶向下,会重复计算定义一个求树的深度的函数/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(

2021-03-15 11:16:53 74

原创 剑指offer 54、二叉搜索树的第k大节点

方法1:中序反向遍历,找到后还会继续遍历class Solution {public: int kthLargest(TreeNode* root, int k) { int result = 0; dfs(root, result, k); return result; }private: void dfs(TreeNode *root, int &result, int &k) { if

2021-03-15 10:52:24 66

原创 树相关

目录LeetCode104.二叉树的最大深度方法1:递归方法2:层序遍历LeetCode 559.N叉树的最大深度方法1:递归方法2:层序遍历剑指offer 55-II 平衡二叉树方法1:递归LeetCode104.二叉树的最大深度二叉树的最大深度等于左子树和右子树深度的最大值+1方法1:递归采用类似后续遍历的方法,因为要先知道左子树和右子树的深度,才能知道总的高度。class Solution {public: int maxDepth(Tr

2021-03-11 20:31:19 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除