自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Moksha的博客

分享一些所学知识

  • 博客(24)
  • 收藏
  • 关注

原创 《MySQL技术内幕InnoDB存储引擎》笔记(在更)

MySQL体系结构和存储引擎1.数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件看可以frm、MYD、MYI、ibd结尾的文件。实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程共享。另外,数据库实例才是真正用于操作数据库文件的。在MySQL数据中实例与数据库的关系是一一对应的。而在集群情况下可能出现一个数据库被多个数据实例使用的情况。MySQL被设计为单进程多线程架构的数据库,MySQL数据库实例在系统上表现就是一个

2021-07-11 11:34:22 203

原创 Git版本控制基础(在更)

获取Git项目仓库以下两种方式都会在本地机器上得到一个工作就绪的Git仓库将尚未进行版本控制的本地目录转换为Git仓库cd到项目目录内执行git init,该命令将创建一个名为,git的子目录,这个子目录含有你初始化的Git仓库中所有的必须文件通过git add [文件],来指定所需文件进行追踪执行git commit -m [分支提交说明]从其他服务器克隆一个已经存在的Git仓库git clone <url>,默认配置下远程Git仓库中的每一个文件的每一个版本都将被

2021-07-08 13:02:44 219

原创 Google C++代码规范 一万字笔记超详细

命名约定通用命名规则函数命名, 变量命名, 文件命名要有描述性; 少用缩写尽可能使用描述性的命名, 别心疼空间, 毕竟相比之下让代码易于新读者理解更重要. 不要用只有项目开发者能理解的缩写, 也不要通过砍掉几个字母来缩写单词int price_count_reader; // 无缩写int num_errors; // "num" 是一个常见的写法int num_dns_connections; // 人人都知道 "DNS" 是什么int n;

2021-07-07 23:05:41 287 2

原创 虚拟内存深度剖析

物理和虚拟寻址物理寻址CPU访问内存最自然的方式就是使用物理寻址早期的PC使用物理寻址虚拟寻址CPU通过生成一个虚拟地址(VA)来访问主存内存管理单元MMU利用存放在主存中的查询表来动态将虚拟地址翻译成物理地址地址空间地址空间是非负整数地址的有序集合地址空间的大小是由表示最大地址所需要的位数来描述的,2的幂次虚拟内存作为缓存的工具虚拟内存被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组VM通过将虚拟内存分割为虚拟页(VP

2021-07-07 20:41:27 99

原创 《图解HTTP》读书笔记

HTTP方法GET:获取资源GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果是像 CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行后的输出结果POST:传输实体主体虽然用 GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST 的功能与 GET 很相似,但POST 的主要目的并不是获取响应的

2021-07-07 20:12:53 78

原创 C++内存模型之虚函数表

概述实现多态,C++使用了一种动态绑定的技术,这个技术的核心是“虚函数表”类的虚函数表每个包含虚函数的类都包含一个虚函数表虚函数表是一个指针数组,其元素是虚函数的指针,每个元素对应一个虚函数的函数指针虚函数表内的元素,即虚函数指针的赋值发生在编译器的编译阶段,虚函数表就可以构造出来了虚函数表指针虚函数表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚函数表即可,同一个类的所有对象都使用同一个虚函数表对象内部包含一个虚函数表的指针,来指向自己所使用的虚函数表(*

2021-07-07 19:32:29 140

原创 Go语言笔记

一、包每个Go程序都是由包构成的分组导入import ( "fmt" "math/rand") // 通过导入路径"fmt"和"math/rand"来使用这个包也可以编写多个导入语句import "fmt"import "math"4.包名与导入路径的最后一个元素一致二、导出名如果一个名字以"大写字母"开头,那么它就是“已导出”的任何“未导出”的名字在该包外均无法访问三、函数类型在变量名之后(*)func add(x

2021-07-07 19:04:48 84

原创 C++实现半同步半异步线程池

一、介绍线程池技术通过在系统中预先创建一定数量的线程,当任务请求到来时从线程池中分配一个预先粗航舰的线程去处理任务,线程在处理完任务之后还可以重用,不会销毁,而是等待下次任务的到来 优势1.避免大量的线程创建和销毁动作2.对于多个CPU,提高并行处理的效率3.每个线程独立阻塞,可以防止主线程被阻塞而使主流程被阻塞 架构同步服务层: 处理来自上层的任务请求,上层的请求可能是并发的,这些请求不是马上就会被处理排队层: 上层的任务请求都会加到排队层中等待处理异步服务层: 会有多个线程同时处理

2021-07-07 17:14:50 117

原创 leetcode 451.根据字符出现频率排序

一、题目给定一个字符串,请将字符串里的字符按照出现的频率降序排列输入:"tree"输出:"eert"二、解法2.1 桶排序解题思路:本题也可用其他思路,诸如优先队列和大根堆来对频率进行合适的排序。相比较桶排序时间复杂度更优。统计每个字符出现的频率,建立以频率大小为索引的桶,存放相对应的字符。最后由出现频率大到小的桶进行遍历输出 ,得到最终结果。class Solution {public: string frequencySort(string s) { un

2021-07-03 20:39:27 94

原创 leetcode 76. 最小覆盖子串

一、题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"二、解法2.1 滑动窗口解题思路:本题使用滑动窗口求解,即两个指针 l 和 r 都是从最左端向最右端移动,且 l 的位置一定在r 的左边或重合。注意本题虽然在 for 循环里出现了一个 while 循环,但是因为 while 循环负责移动 l 指针,

2021-05-17 14:34:50 102

原创 剑指 Offer 47. 礼物的最大价值

一、题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?输入:[ [1,3,1], [1,5,1], [4,2,1]]输出:12解释:路径 1→3→5→2→1 可以拿到最多价值的礼物二、解法2.1 动态规划解题思路:利用动态规划可以减少重复计算,dp[i][j]表示到达位置i

2021-05-17 11:56:02 75

原创 leetcode 42. 接雨水

一、题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)二、解法2.1 单调栈解题思路:维护一个单调递减栈,如果出现比栈顶元素大的元素,则进行雨水单位计算class Solution {public:

2021-05-13 13:48:46 67

原创 leetcode 739. 每日温度

一、题目给定每天的温度,求对于每一天需要等几天才可以等到更暖和的一天。如果该天之后不存在更暖和的天气,则记为 0输入:temperatures = [73, 74, 75, 71, 69, 72, 76, 73]输出:[1, 1, 4, 2, 1, 1, 0, 0]二、解法解题思路:本题为单调栈经典题型,我们可以维持一个单调递减的栈,表示每天的温度;为了方便计算天数差,我们这里存放位置(即日期)而非温度本身。我们从左向右遍历温度数组,对于每个日期 p,如果 p 的温度比栈顶存储位置 q 的

2021-05-13 13:00:43 131

原创 《CSAPP》读书笔记

操作数格式类型格式操作数值名称立即数$ImmImm立即数寻址寄存器raR[a]寄存器寻址存储器ImmM[Imm]绝对寻址存储器(ra)M[R[ra]]间接寻址存储器Imm(rb)M[Imm + R[rb]]基址+偏移寻址存储器(rb, ri)M[R[rb] + R[ri]]变址寻址存储器Imm(rb, ri)M[Imm + R[rb] + R[ri]]变址寻址存储器(, ri, s)M[R[ri

2021-04-29 21:49:15 77

转载 两万字深度介绍分布式系统原理,一文入魂

1 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。异常 机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工介入重启机器。 网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了...

2021-04-29 18:34:00 102 1

原创 leetcode 403. 青蛙过河

一、题目给定石子位置的列表stones(升序),青蛙可以跳上石子,但不能跳入水中。如果青蛙一步跳跃了k个单位,那么它接下来跳跃的距离只能为k-1、k或k+1个单位。青蛙只能向前方跳跃。输入:stones = [0,1,3,5,6,8,12,17]输出:true解释:青蛙可以成功过河,按照如下方案跳跃:跳 1 个单位到第 2 块石子, 然后跳 2 个单位到第 3 块石子, 接着 跳 2 个单位到第 4 块石子, 然后跳 3 个单位到第 6 块石子, 跳 4 个单位到第 7 块石子,

2021-04-29 13:14:41 97

原创 《TCP/IP详解》读书笔记

TCP/IP详解TCP超时与重传引言计时器超时称为重传超时(RTO)若TCP累计确认无法返回新的ACK,或者当ACK包含的选择确认信息(SACK)表明出现失序报文段时,快速重传会推断出现丢包由下层网络(IP)可能出现丢失重复或失序包,TCP重传其认为已经丢失的包简单的超时与重传举例二进制指数退避每次重传间隔时间加倍TCP拥有两个阈值来决定如何重传同一个报文段R1表示TCP在向IP层传递“消极建议”(如重新评估当前路径)前,愿意尝试重传的次数R2(大于R1)指示TCP应放弃

2021-04-28 23:11:02 224

原创 C++11高级语法糖笔记

C++11std::function和bind绑定器可调用对象是一个函数指针是一个具有operator()成员函数的类对象(仿函数)是一个可被转换为函数指针的类对象是一个类成员(函数)指针可调用对象包装器std::funtion头文件<functional>可以容纳除了类成员(函数)指针之外的所有可调用对象可以用统一的方式处理函数、函数对象、函数指针,并允许保存和延迟执行它们function比普通函数指针更灵活和便利std::bind绑定器头文件<fun

2021-04-28 22:54:50 105

原创 剑指 Offer 34. 二叉树中和为某一值的路径

一、题目打印出二叉树中节点值的和为输入整数的所有路径(从根节点一直到叶子节点的路径)输入:给定如下二叉树,以及目标和 target = 22 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1输出:[ [5,4,11,2], [5,8,4,5]]二、解法由根节点出发

2021-04-28 15:52:44 73

原创 C#语言笔记(在更)

新特性表达式主体方法=>操作符引用构成方法主体的表达式,而且没有return语句。表达式的值自动作为返回值;如果表达式不返回值,则方法自动为void方法private void showResult(int answer) => Console.WriteLine($"The answer is {answer}");差值表达式$符号表明这是个差值字符串,{和}之间的任何表达式都需求值并置换,字符串差值比+操作符高效得多$"The answer is {answer}"

2021-04-28 15:19:54 71

原创 Lua语言笔记(在更)

Lua语言入门交互模式lua -i,-i参数用于在运行完其他命令行参数后进入交互模式不在交互模式下必须把表达式包在函数print的调用中如果不想输出结果,可以在行末加上一个;词法规范标识符由任意字母、数字和下划线组成的字符串(不能以数字开头)_+大写字母(特殊用途)_+小写字母(哑变量)注释单行注释--多行注释--[[ 多行注释 ]]分隔符;增加可读性,不是必须的表达式之间的换行不起任何作用全局变量无须声明即可使用使用未经初始化的

2021-04-28 14:58:42 79

原创 leetcode 684. 冗余连接

一、题目找出无向图中的冗余连接,即将无向图还原成二叉树输入: [[1,2], [1,3], [2,3]]输出: [2,3]解释: 给定的无向图为: 1 / \2 - 3二、解法2.1 并查集思路:通过并查集寻找附加的边,初始时每个节点都属于不同的连通分量,遍历每一条边,判断这条边连接的两个顶点是否属于相同的连通分量如果两个顶点属于不同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间不连通,因此当前的边不会导致环出现,合并这两个顶点的连通分量。如果两个顶点属于相同的连通分量

2021-04-28 13:48:10 99

原创 SQL语言笔记(在更)

【Mysql】学习笔记表名是唯一的表中的数据是按行存储的行(别名 记录)主键:一列,其值能够区分表中每个行每个行都必须有一个主键值(不允许为NULL)任意两行都不具有相同的主键值不更新主键列中的值不在主键列中使用可能会更改的值命令用分号;结束连接到mysql需要以下信息主机名:本地服务器为localhost端口:默认为3036一个合法的用户名用户口令(如果需要的话)use<数据库名字>来选择数据库show databases返回可用数据库的一个列表

2021-04-28 13:26:20 68

原创 C++作业学生信息管理系统(链表)

学生信息管理系统(链表)#include <iostream>#include <iomanip>#include <string.h>using namespace std;struct Student // 建立学生信息结构体 { char number[20]; char name[10]; float english; float math; float chinese; float average; Student *next; //

2020-06-18 08:54:51 3748 1

空空如也

空空如也

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

TA关注的人

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