自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode系列54—螺旋矩阵

【代码】LeetCode系列54—螺旋矩阵。

2022-09-18 17:24:37 468 1

原创 LeetCode系列(总)

LeetCode系列

2022-07-10 16:00:41 647

原创 LeetCode系列8—字符串转换整数

题意字符串转换整数 (atoi)题解class Automaton { string state = "start"; unordered_map<string, vector<string>> table = { {"start", {"start", "signed", "in_number", "end"}}, {"signed", {"end", "end", "in_number", "end"}}, {

2022-04-23 12:25:12 480

原创 leveldb源码解析系列—版本控制

文章目录VersionVersion

2022-03-29 09:43:04 189

原创 CMU15-445:Database Systems Fall 2021

Just to keep track of the course for myself

2022-03-23 01:48:12 1859 1

原创 leveldb源码解析系列—SSTable

文章目录概述SSTable文件格式概述SSTable是一种文件的组织格式,存储了有序的key-value,并且持久化在磁盘等稳定存储中。当内存中的Memtable达到阈值后,会转为Immutable Memtable,LevelDB的后台线程执行Minor Compaction会将Immutable Memtable转储到磁盘上的SSTable中。SSTable文件格式SSTable的文件格式可以参考doc/table_format.md...

2022-03-17 21:44:40 523

原创 leveldb源码解析系列—Memtable

文章目录Memtable介绍Memtable数据结构Memtable比较器Memtable实现SkipListMemtable介绍Memtable是内存中管理key-value的数据结构,一条数据插入到WAL后,会插入到Memtable中,当Memtable达到一定大小时,会变成Immutable Memtable,从而转储到磁盘上的SSTable,进行持久化。涉及代码:db/memtable.h、db/memtable.cc、db/skiplist.h、db/skiplist.cc、db/dbfor

2022-03-17 11:25:59 754

原创 leveldb源码解析系列—基本数据结构

Key

2022-03-17 10:54:46 533

原创 LeetCode系列1114—按序打印

题意题解方法三:条件变量class Foo {public: Foo() {} void first(function<void()> printFirst) { // printFirst() outputs "first". Do not change or remove this line. printFirst(); index = 1; cv.notify_all(); } vo

2022-03-09 00:03:28 88

原创 深入理解事务隔离级别

事务概念并发事务可能出现的异常情况事务隔离级别

2022-03-08 17:24:18 495

原创 paper reading list

分布式事务数据库

2022-03-01 16:19:54 346

原创 LeetCode系列297—二叉树的序列化与反序列化

题意297. 二叉树的序列化与反序列化题解BFS/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */static std::vector<std::stri

2022-02-23 00:19:24 94

原创 leveldb源码解析系列—主要流程

GetWriteCompaction

2022-02-11 14:56:16 190

原创 leveldb源码解析系列—Log

Log文件组织方式前文《leveldb源码解析系列—整体架构》中提到了Log文件,本篇对Log文件的组织方式进行解析leveldb/doc/log_format.md中介绍了Log文件的组织方式The log file contents are a sequence of 32KB blocks. The only exception is that the tail of the file may contain a partial block.Each block consists of

2022-02-08 16:32:28 660

原创 leveldb源码解析系列1—基本数据结构

本篇介绍leveldb中基本的数据结构Sliceclass Slice { public: ... private: const char* data_; size_t size_;}封装了C语言风格的字符串,将data和size包装成Slice使用,直接操作指针避免不必要的数据拷贝,但是同样也增加了风险,需要使用者严格控制Slice内容的申请和释放Option...

2022-02-08 15:35:10 557

原创 leveldb源码解析系列0—准备工作

前言:闭门造车是不可取的,一股脑的写代码并不能带来质的提高,只有向更优秀的代码学习才能提高自己,最近一直想读一个质量高且符合我未来想从事方向的源码,但是我深知读源码的困难,害怕不能坚持下去最后也没有收获,所以迟迟没有开始。未来,我可能会从事分布式系统、数据库、存储相关领域,因此leveldb成为一个极佳的选择,再加上阅读leveldb的人数不少,可参考的资料必然不少,这也会降低我读源码的难度。废话不多说,以此博客系列来记录一下我学习的过程吧!收集到的参考资料:...

2022-01-10 18:18:04 390

原创 KVM+OVS+Ryu实践

OVS安装apt-get install openvswitch-switchhttps://docs.openvswitch.org/en/latest/intro/install/general/

2022-01-05 10:53:59 278

原创 读书笔记:《Designing Data-Intensive Applications》

文章目录第一部分第1章 可靠、可扩展与可维护的应用系统第2章 数据模型与查询语言关系模型与文档模型第一部分第1章 可靠、可扩展与可维护的应用系统第2章 数据模型与查询语言关系模型与文档模型文档数据模型:模式灵活、局部性关系模型:联结、多对一和多对多语义...

2022-01-01 16:39:13 1520

原创 LeetCode系列148—排序链表

题意148.排序链表题解方法一:自顶向下归并排序class Solution {public: ListNode* sortList(ListNode* head) { return sortList(head, nullptr); } ListNode* sortList(ListNode* head, ListNode* tail) { if (head == nullptr) { return head;

2021-12-29 00:06:33 78

原创 LeetCode系列147—对链表进行插入排序

题意147.对链表进行插入排序题解/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next)

2021-12-28 23:58:51 486

原创 LeetCode系列62—不同路径

题意62.不同路径题意方法一:动态规划class Solution {public: int uniquePaths(int m, int n) { int dp[m][n]; for (int i = 0; i < m; i++) dp[i][0] = 1; for (int j = 0; j < n; j++) dp[0][j] = 1; for (int i =

2021-12-26 19:41:55 343

原创 LeetCode系列4—寻找两个正序数组的中位数

题意4. 寻找两个正序数组的中位数题解方法一:归并排序class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<int> merged; int i = 0, j = 0; while(i < nums1.size() &&

2021-12-26 10:03:06 102

原创 LeetCode系列279—完全平方数

题意279. 完全平方数题解方法一:动态规划class Solution {public: int numSquares(int n) { vector<int> f(n + 1); for (int i = 1; i <= n; i++) { int minn = INT_MAX; for (int j = 1; j * j <= i; j++) { m

2021-12-23 12:27:09 274

原创 LeetCode系列322—零钱兑换

题意322. 零钱兑换题解方法一:记忆化搜索class Solution { vector<int>count; int dp(vector<int>& coins, int rem) { if (rem < 0) return -1; if (rem == 0) return 0; if (count[rem - 1] != 0) return count[rem - 1]; in

2021-12-23 12:14:52 630

原创 LeetCode系列337—打家劫舍 III

题意337. 打家劫舍 III题解方法一:动态规划class Solution {public: unordered_map <TreeNode*, int> f, g; void dfs(TreeNode* node) { if (!node) { return; } dfs(node->left); dfs(node->right); f[node]

2021-12-22 23:24:08 132

原创 LeetCode系列338—比特位计数

题意338. 比特位计数题解方法一:Brian Kernighan算法class Solution {public: int countOnes(int x) { int ones = 0; while (x > 0) { x &= (x - 1); ones++; } return ones; } vector<int> countB

2021-12-22 22:35:22 321

原创 LeetCode系列347—前K个高频元素

题意347. 前 K 个高频元素题解参考前 K 个高频元素

2021-12-22 21:33:23 69

原创 LeetCode系列394—字符串解码

题意394. 字符串解码题解class Solution {public: string decodeString(string s) { string res; int n = s.size(); int i = 0; while(i < n) { if (isalnum(s[i]) && !isdigit(s[i])) { res.push_back(s[i]); i++; co

2021-12-22 20:56:08 521

原创 LeetCode系列406—根据身高重建队列

题意406.根据身高重建队列题解方法一:从低到高考虑class Solution {public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { sort(people.begin(), people.end(), cmp); int n = people.size(); vector<vec

2021-12-22 17:44:38 106

原创 LeetCode系列416—分割等和子集

题意416.分割等和子集题解方法一:动态规划dp[i][j]表示选取前i个元素,是否class Solution {public: bool canPartition(vector<int>& nums) { int sum = 0; int n = nums.size(); for(int i = 0; i < nums.size(); i++) sum += nums[i];

2021-12-22 16:59:27 104

原创 LeetCode系列437—路径总和 III

题意437. 路径总和 III题解方法一:深度优先搜索每一个节点都执行rootSum函数,rootSum不同于pathSum的地方在于,路径必须连续class Solution {public: int rootSum(TreeNode* root, int targetSum) { if (root == nullptr) return 0; int ret = 0; if (root->val == targetSum) ret+

2021-12-22 16:09:02 148

原创 LeetCode系列438—找到字符串中所有字母异位词

题意438.找到字符串中所有字母异位词题解方法一:滑动窗口维护一个定长的窗口,记录窗口内的状态class Solution {public: vector<int> findAnagrams(string s, string p) { vector<int> ans; vector<int> count1(26); vector<int> count2(26); int s_l

2021-12-22 15:18:56 83

原创 LeetCode系列448—找到所有数组中消失的数字

题意448. 找到所有数组中消失的数字题解方法一:标志数组class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { vector<int> res; int n = nums.size(); int flags[n]; memset(flags, 0, sizeof(int) * n

2021-12-19 20:22:02 57

原创 LeetCode系列461—汉明距离

题意461. 汉明距离题解方法一:内置位计数功能class Solution {public: int hammingDistance(int x, int y) { return __builtin_popcount(x ^ y); }};作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/hamming-distance/solution/yi-ming-ju-chi-by-leetcode-so

2021-12-19 19:54:53 73

原创 LeetCode系列494—目标和

题意494.目标和题解方法一:暴力搜索class Solution {public: int findTargetSumWays(vector<int>& nums, int target) { int ans = 0; int n = nums.size(); for (int i = 0; i < pow(2, n); i++) { int sum = 0; for

2021-12-04 00:33:58 117

原创 LeetCode系列538—把二叉搜索树转换为累加树

题意538. 把二叉搜索树转换为累加树题解方法一:反序中序遍历class Solution {private: int sum = 0;public: TreeNode* convertBST(TreeNode* root) { if (root == nullptr) return nullptr; TreeNode *right = convertBST(root->right); sum += root->val;

2021-12-02 19:38:58 449

原创 LeetCode系列543—二叉树的直径

题意543.二叉树的直径题解方法一:深度优先搜索class Solution { int ans; int depth(TreeNode* rt){ if (rt == NULL) { return 0; // 访问到空节点了,返回0 } int L = depth(rt->left); // 左儿子为根的子树的深度 int R = depth(rt->right); // 右儿子为根

2021-11-29 04:50:50 94

原创 LeetCode系列560—和为K的子数组

题意560.和为 K 的子数组题解方法一:枚举class Solution {public: int subarraySum(vector<int>& nums, int k) { int ans = 0; for (int i = 0; i < nums.size(); i++) { int sum = 0; for (int j = i; j >= 0; j--) {

2021-11-29 04:27:24 367

原创 LeetCode系列581—最短无序连续子数组

题意581. 最短无序连续子数组题解方法一:辅助数组class Solution {public: int findUnsortedSubarray(vector<int>& nums) { vector<int> nums_min(nums.size()); vector<int> nums_max(nums.size()); int min = 100001, max = -100001;

2021-11-29 02:59:37 188

原创 LeetCode系列617—合并二叉树

题意617.合并二叉树题解方法一:深度优先遍历class Solution {public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if (!root1) return root2; if (!root2) return root1; TreeNode* node = new TreeNode(root1->val + root2->val);

2021-11-29 01:56:25 242

空空如也

空空如也

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

TA关注的人

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