自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

或许没有的博客

技术菜鸡,努力学习!

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

原创 基于平均值为枢轴的快速排序算法

题目来源这是我在2019年研究生入学考试中遇到的一道题目,之前我们所认识的快速排序无外乎是以第一个元素或中位数作为枢轴。但是使用的第一个元素作为枢轴存在一个问题,我在接下来的分析中将进行阐述。但是各种博客以及论文中对于基于平均值的快速排序的具体都闭口不谈,后来我用了大概两三个小时通过修改现有的快速排序代码得到了基于平均值的快速排序代码。这也是我的第一篇博客,希望大家支持,这也是我继续写下去的动力...

2019-09-08 10:41:34 3171 15

原创 Go解密之路——GPM

Go调度过程解密——GPM模型

2022-11-05 23:50:24 509 1

原创 阿里巴巴时序数据库——Timon

背景能见度延迟:新数据在流系统中聚合时,会有一定延迟;读-修改-写:需要一个 ReadModifyWrite 操作来读取和更新外部存储上以前聚合的值。大规模长期事件分析:场景为大规模海量数据接入通道。![jpg](https://img-blog.csdnimg.cn/img_convert/44c761b39adccfddd6881e7cdfdd0343.png#clientId=ufec597a7-0703-4&from=paste&height=493&id=u0.

2021-12-09 15:54:15 904

原创 LSM树介绍

LSM树**(Log-Structured-Merge-Tree)**的核心是利用顺序写来提高写性能,但是分层结构设计会稍微降低读性能。LSM树会将所有的数据插入、修改、删除等操作记录(注意是操作记录)保存在内存之中,当此类操作达到一定的数据量后,再批量地顺序写入到磁盘当中。????存储结构Active MemTableMemTable是在内存中的数据结构,用于保存最近更新的数据,会按照Key有序地组织这些数据,LSM树对于具体如何组织有序地组织数据并没有明确的数据结构定义,例如Hbase使

2021-12-09 15:49:55 1880

原创 4.6——80 删除有序数组中的重复项2

目录题目描述分析答案题目描述给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝i

2021-04-06 19:26:29 120

原创 4.5——300 最长递增子序列

前言本来今天的题目是一个88. 合并两个有序数组,但是这是一个简单题。但是我的flag是如果遇到简单题,就另做一道中等难度的题目。那就是这一道了哦!题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列

2021-04-05 22:54:08 116

原创 4.4——781 森林中的兔子

前言虽然春招可能已经落下帷幕了,结果也不怎么满意。但是实习还是找到了,但是在这过程中还是看到了一些问题。现在是4月份,到秋招大概还有四个月左右的时间,现在我的LeetCode已经刷了234道,立个flag吧,六月底之前刷到300道,秋招之前刷到330道,基本上也是每日一题的节奏。我也每日更新我的刷题感悟和答案,遇到简单题我会额外再加一道中等难度的题目,如果遇到很难的困难题,我就换一道中等题目。希望我们一起进步,变得更强!题目描述森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔

2021-04-04 11:06:14 111

原创 muduo如何从0到1

muduo入门文章目录muduo入门如何使用muduoecho 服务器总结如何使用muduomuduo作为是木铎的拼音。木铎是铎的一种。中国古代用以警众的响器。从GitHub下载muduo源码:地址安装依赖库:cmake,Boostsudo apt-get install cmakesudo apt-get install libboost-dev libboost-test-dev进入muduo根文件夹,编译muduo./build.sh -j2./build.sh in

2020-12-14 20:02:59 190

原创 C++多线程之旅实战-线程池的理解

前言在很多公司小组都需要使用会议室进行讨论,但是每个小组都配备一个会议室又会很浪费。所以就将所有的会议室都拿出来放到一起,那个小组需要就像行政部门申请即可,根据申请的先后顺序使用会议室。使用完成以后自动归还,无需派专人进行管理。基于这一思路,我们也可以把线程资源放到一个区域,然后根据每个用户的需求分配线程资源。并且还可以实现自动化的线程资源分配。设计线程池有几个关键的问题:第一,线程中应该创建几个工作线程;第二,是否应该等待线程执行结束…第一个线程#include <thread>#

2020-07-23 20:50:43 295

原创 C++多线程之旅实战-无锁数据结构

目录前言实例无锁数据结构的原则总结前言前面的自旋锁可以实现非阻塞数据结构,自旋锁的优点就是在于线程一直处于执行状态,而且线程不需要唤醒,执行效率较高。但是会一直占用CPU资源,导致资源的浪费。但是还有一种无锁数据结构是,是可以实现多于一个线程的并发地访问此数据结构。无锁数据结构的优点与缺点可以实现最大程度的并发,有可能一个线程必须阻塞,并可以继续前等待另一个线程完成其操作;强健壮性,当一个线程在持有锁的时候终止,那么这个数据结构将会被永久破坏,但是无锁数据结构终止时,就不会丢失任何数据。实例

2020-07-10 20:27:37 600

原创 C++多线程之旅实战-自旋锁那点事

目录前言实现优缺点缺点优点适用场景Ticket LockCLH LockMCS Lock总结前言前一篇文章讲的是带锁的并发数据结构,而且讲到了如果不带锁将会面临什么样的问题。这一部分我将为大家带来一个全新的数据结构-自旋锁。这是一种不使用阻塞库的数据结构,我们将不使用阻塞库的结构称为非阻塞,但是不是所有的非阻塞数据结构都是无锁的。阻塞函数就是当这个函数不执行完,函数所在线程就一直停止在这里不动。比如最常见的在多线程里面的thread库基本上都是阻塞函数。实现自旋锁(spinlock):是指当一个

2020-07-07 21:10:47 817

原创 C++多线程之旅实战-带锁的并发数据结构

目录前言最小化锁粒度确保锁的正确性线程启动时间总结前言前面几部分都是讲的并发编程的一些理论知识,包括线程概念、互斥元的使用、异步线程的使用、原子类型等等。但是这都是纸面上的知识,还没有应用到实战上,而且关于并发还有一些设计技巧,比如 程序段1 // 无需独占 程序段2 // 访问内存空间 程序段3 // 打印到屏幕有两种加锁方式 方式一: 方式二: lock(); 程序段1 程序段1 lock(); 程序段2 程序

2020-07-05 20:32:18 572 3

原创 C++多线程之旅-内存模式和内存屏障

目录前言synchronizes-with和happens-before内存顺序顺序一致模式宽松模式获得/释放模式消费/释放模式内存屏障总结前言前面的线程都是随机进行的,但是在内存中应该是有一个先后顺序的。至于先后顺序如何规定那就要取决于内存模型。下面看一个例子:vector<int> data;atomic<bool> data_ready(false);void reader(){ while (!data_ready.load()) this_

2020-07-01 19:43:34 1751 1

原创 C++多线程之旅-atomic原子类型

目录前言atomic前言多线程的一个重要问题就是并发,但是这个并发不是简单的一个线程访问A段内存,一个线程访问B段线程,这样显然不会出现任何问题。但是一旦两个线程同时访问同一段内存就会出现未知的错误。在前面讲过了使用互斥元的方法,可以保证只有一个线程能访问易发生冲突的内存区域。另外一种方法就是使用原子变量同步。atomic原子类型在头文件<atomic>中,使用atomic有两套命名模式:一种是使用替代名称,一种是使用atomic的特化。原子类型对应特化atomic

2020-06-27 20:40:13 3336 7

原创 C++多线程之旅-future等待事件

目录前言future总结前言前一篇文章讲到了关于condition_variable的使用,但是这种方法太过于底层了,不是很方面,而且需要对调用方进行操作。这样对于程序员来说太过于麻烦,引入一个全新的接口,让被调用的线程自动进行,调用线程直接调用结果就行。这就是C++引入的future()类,而且这种方式可以在不同线程之间传递数据。我们首先假设情况现在有两个线程,线程A等待线程B执行结果,线程B执行完成之后将结果返回给线程A。之前在condition_variable里面是在线程外定义一个全局变量,但

2020-06-26 17:40:14 3656

原创 C++多线程之旅-条件变量condition variables

目录前言传统方法条件变量notify_all()¬ify_one()wait_for()&wait_until()伪唤醒总结前言前一篇文章讲到了线程同步问题 ,但是有一种情况需要考虑:线程B需要线程A结束之后才能继续进行,但是如何来得知线程A已经结束了呢?没有学过线程之前可以使用标识符flag标识线程A是否结束,但是此时线程B需要一直去检查标识符flag。虽然空循环不会对线程有很大的影响,但是还有会一直占用线程。有没有一种机制,在线程A完成以后自动通知线程B然后线程B才载入运行。今天我们就来讲一

2020-06-23 21:53:46 416

原创 C++多线程之旅-线程同步问题

目录前言互斥元保护数据互斥元死锁互斥元所有权总结前言在前一篇文章中可以实现简单的线程创建,但是会出现一个问题就是,在cout打印输出的时候会出现莫名其妙的乱序。void fun(){ cout << "this_thread::id = " << this_thread::get_id() << endl;}int main() { vector<thread> vec; for (int i = 0; i < 100;

2020-06-22 21:08:55 376 1

原创 C++多线程之旅-初入C++多线程

目录走进线程多进程编程和多线程编程从hello world开始走进线程最近狂喊的 AMD YES,就是一个极强的线程撕裂者。推出的移动端CPU都已经达到了8核16线程,但是很多应用对多线程优化不好,导致多核性能更强的AMD在有的方面还不如牙膏厂-Intel。如何提升多线程编程能力,就需要大量积累。尤其是在服务器编程方面,我们实验室购置的服务器都是48核了,如果还是依靠单线程那就显得太low了。多进程编程和多线程编程多进程编程和多钱程编程,都可以使用并行机制来提升系统的运行效率。二者的区别在于运行时所

2020-06-21 16:24:55 1006 3

原创 美团后端工程师面试

前言美团由于其技术栈的方向为Java所以他问的问题都是Java,但是由于我的方向是C++所以他并没有怎么问Java的问题。并且美团的招聘小哥态度很好,我遇到不会回答的问题的时候,他都会给我说没事的,虽然这句话没多大的作用。但是对我而言也有很好的缓解紧张的作用,经过这次面试我愈发向往这种新型互联网公司的工作氛围,也希望这次面试能有一个好结果。下面我就来复现一下面试过程中的一些问题。算法题目题目一给出一个数组,实现最终分组功能。例[1,1,1,2,2,3,3]分组为[1,1,1],[2,2],[3,3]

2020-05-12 22:57:54 1563

原创 08-敲开泛型编程的大门

目录前言泛型编程C++模版模版定义实例化模版特化模版动态多态和静态多态总结前言C++原来的名字叫做C with classes(即带有类的C语言)。而类具有的一大特点就是存在运行期多态,那么我们就会考虑一个问题,在C++的编译期可不可以实现多态呢? 其实是可以的,在前面讲过的auto中就运用了编译期的多态的特性。比如这个例子:auto i = 5;在这个例子里面,i的类型在编译期就已经确定了,...

2020-05-08 15:52:57 123

原创 07-困惑多年的难题,是否返回对象

目录前言旧式解决办法返回对象总结前言写了这么十来篇博客,我发现我的写作风格都极其相似。好像还停留在高考那种应试要求的“八股文”一样。前言,提出问题,解决问题,发散思维,总结 可能这种方式更加符合的我思考方式吧,如果有什么更好的推荐方式,可以评论区留言。谢谢大家!!在《effective C++》的条款20中,推荐使用const-by-reference-to-const替代pass-by-va...

2020-05-06 15:16:41 161

原创 06-现代C++有哪些新特性

目录前言高级for类型推导autodecltypedecltype(auto)大括号妙用列表初始化统一初始化类成员默认初始化静态断言特种成员函数override和final总结前言C++在1978年就由Bjame Sgoustrup在Bell实验室发明出来,但是第一次标准化已经是十多年后的1994年了。发布了第一个国际通用标准C++,C++98。此后十多年里没有更新,直到2011年发布了C++...

2020-05-05 15:32:39 384

原创 05-令人头大的异常

目录前言没有异常的世界安全机制异常使用异常的弊病完美使用异常例子Q&A总结前言要正确了解异常,必须知道异常到底是什么东西,这个东西在编程实践中起到什么作用。异常情形是指阻止当前方法或作用域继续执行的问题。你所能做的就是从当前环境跳出,并且把问题提交给上一级环境,这就是抛出异常时所发生的事情。而且很多程序需要长期执行,比如服务器。不能因为一个网络连接失败就将这个程序当掉。应该交给上级环境...

2020-04-27 23:07:52 160

原创 04-众多C++容器如何挑选?

目录前言无规律容器vectordequelist&forward_listqueue&stack有规律容器priority_queue有序关联容器无序关联容器array选择方法总结前言相信大家在学习C++过程中都会学习STL容器,至于容器实现的原理可以去看侯捷老师《STL源码剖析》。网上也有很多资源,为了支持正版这里就不放出来了,有需要可以评论区留言。STL容器的实现很复杂但是...

2020-04-21 20:18:00 424

原创 03-左值右值傻傻分不清

目录前言分类右值作为函数形参生命周期引用坍缩Q&A总结前言C++11比起C++98一个重要的提升就是引入了移动语义。这一个重要的提升为后面很多容器的优化都奠定了基础。但是引入移动语义,也带来了另外一个左值右值的概念。从字面上可以理解为在等号左边的就是左值,在等号右边的就是右值。但是至于这个左值和右值各自又有什么性质,有哪些特点这都不得而知。今天我们就来掰扯掰扯这个左值和右值的问题。分...

2020-04-20 22:42:59 243 2

原创 02-实现C++智能指针

目录前言unique_ptr实现模板化重载操作符swap函数引用计数前言在第一部分内容中,可以看到如何管理资源。C++祭出的方法是RAII,用资源类来进行管理。但是如何实现这个资源类,却又摆在了面前。在C++原生的库里面支持智能指针auto_ptr,但是这个类在C++17被删除了,取而代之的是shared_ptr和unique_ptr这两个从名字上就可以看出来,一个是和原来auto_ptr类似...

2020-04-19 16:35:32 147

原创 01-C++如何管理资源

目录内存分类栈(heap)栈区(stack)RAIIQ&A总结内存分类在这里面我们通常会处理到地方是栈区和堆区。栈(heap)是指动态分配内存的区域,这里的内存分配后需要手工释放。这就是栈区存在的一个隐患。而对于这部分内存的分配也有两种方式,new和delete以及malloc和free。通常我们在C语言中采用malloc和free。但是这二者在分配的内存上区分为:new和d...

2020-04-17 18:03:26 143

原创 C++2048

目录前言原理移动消除细节讲解总体结构GameStartGame实现总结前言大家都应该玩过这个风靡一时的游戏吧。至于这个游戏的一些技巧就不在给大家讲解了,我也是一个菜鸡的。但是这个游戏后面所包含的算法可以通过C++来进行实现。原理移动这个原理就是向一个方向移动,遇到相同的元素就翻倍。首先我们看一下怎么实现非零元素的移动(以向上移动为例):上面这一个我们可以检查:每一列第一个元素...

2020-03-09 20:15:53 751

原创 C++扫雷

目录前言原理细节讲解数字层操作层显示层实现结果演示总结前言之前写过一个C++的贪吃蛇,今天写一个扫雷。可能网上已经有很多相关的源代码了,但是我这个是通过自己的思考,不是简单的扒别人成功的代码进行小修改得到的结果。希望我的分享能够对你的项目有启示。原理每一个数字表示的意思就是在这个数字的周围的8个位置中有几个炸弹。我们可以把这个所谓的棋盘看成三层。数字层:最下面被覆盖的部分,生成炸弹...

2020-03-07 22:44:19 1114

原创 华为见习面试

目录前言正文总结前言在大四毕业的时候在华为的招聘网站上填写了自己的简历,但是一直没有什么结果。在上个月20号华为招聘发来了一个华为实习的邀请函,然后我就填写了相应的资料。23号的时候华为又发来了一个“勤工俭学”实习生项目,这个项目相较于实习项目来说不能转正这个是最大的一个区别。我正好也只是想找一个实习,离找工作还早所以就选择了这个实习面试。后面就把自己的简历发送给了HR小姐姐。由于是在疫情期间...

2020-03-06 18:25:21 2082 3

原创 二叉排序树

目录前言原理结构函数实现测试程序后记前言每一次写博客都有一个前言,这个前言虽然没有介绍什么具体的知识内容。但是可以记录我当前面临的困境和事情,也可以作为自己的一个心路历程来记录吧。最近在看STL,看到红黑树这一部分的时候,突然想起来之前数据结构里面的二叉排序树还没有实现,就突发奇想将这一部分写出来。另外也是对自己的数据结构的一个复习,为后面的实习找工作做准备吧。原理这里面的原理很简答,如果...

2020-03-04 21:55:32 278

原创 哈希表(链式)

目录前言概念具体方法源代码后记前言对于哈希表这个结构或许大家都很熟悉,但是很多人都是学完数据机构知道哈希表是怎么个情况,但是没有实际上手去试一下。我就是这样一个人!!今天我看到STL里侯捷老师讲到hash_table的有关知识的时候,我就突然想把这个来实现一下。如果是考研数据结构对于这部分不是很了解也可以看一下,我会把这部分的一个难点讲清楚。概念其实哈希表的概念有很多,基本上都是书上现成的...

2020-02-19 21:11:03 1288

原创 C++ STL list容器深究

文章目录前言list有什么特点list有些什么功能list的结构结点Node迭代器iteratorlist函数构造函数析构函数empty()&size()front()back()push_back()push_front()pop_front()pop_back()存储图示源代码后记前言不知不觉已经二月中旬了,但是这个疫情依然没有结束。这一个月我的感受十分强烈,原来自由是那么珍贵,以...

2020-02-15 21:20:02 280

原创 C++贪吃蛇

C++贪吃蛇基本概念前言采用的平台贪吃蛇移动食物的产生判断游戏结束吃到食物代码实现效果后记基本概念前言最近疫情比较严重没有带书回家,所以就突发奇想来实现之前一直想做的一个游戏,或许这个游戏比较粗糙但是也是自己进步的一小步。希望能够对大家有帮助。采用的平台windows+visual studio+C++贪吃蛇移动贪吃蛇使用链表实现,每一次移动,蛇尾摘下来,接到蛇头方向。rear...

2020-02-07 20:18:51 2618 4

原创 C++ primer读书笔记(五)

前言不知不觉七天长假已经结束了,回望我自己这十年也是感慨颇多。十年前的我刚上初中,从一个小山沟第一次到了县城里读书,这个时候发现自己多么微不足道。第一次期中考试就来了一个全年级730名(一共1200人),然后在三年里的努力就不再多说,三年后中考的结果是200名升入国重的实验班。刚去高中也是和初中差不多,很多从乡村中学考上来的实力都很强。200起步,最后在高三的时候巅峰达到年纪19名全市51名。但...

2019-10-08 21:55:07 157

原创 C++ primer读书笔记(四)

前言不知不觉都已经9月30号了,现在实验室里面也就3个人了,大家都回家去给祖国母亲庆生了。来学校已经一个月了,感受还是很多的,确实效率比起在本科的时候还是要高很多。今年元旦买的一本书看了8个月也才看一半,到学校一周就把剩下的一把半看完了,还看完了《MySQL必知必会》。确实这个效率就感觉高很多。之前买的那一本C++primer是一本盗版书,导致看书的时候很不爽,有很大一股味道。很多人会说盗版书也...

2019-09-30 20:22:40 143

原创 C++ primer读书笔记(三)

前言不知不觉都要国庆节了,这也是我的看C++primer的第三天。在这里立一个flag在12月底之前啃完这本800多页的厚书。今天看的这一章内容都比较简单,主要就是一些比较常见的知识点,所以看得也比较快。接下来我将把我的笔记分为四个部分:string,vector,迭代器,数组。但是在这之前还有一个小小的知识点就是头文件中不应该包含命名空间的using说明。string在C++中存在一些标...

2019-09-26 22:03:00 105

原创 C++ primer读书笔记(二)

前言经过一下午的艰苦奋斗,终于把这个书的第二章看完了。看完之后的感受就是明明这些东西都很简单就是非要弄一个const进来,完全就是一个搅屎棍啊。但是这里也开始逐步引入面向对象编程的思想了,其实在C语言也有一部分面向对象的思想在里面,就是结构体。只不过在C语言中的结构体里面只包含了数据,没有包含方法。其它的废话也不多说,前面比较简答的2.1,2.2也就忽略了,可以自己下去看一下很简单。我想在这里写...

2019-09-25 20:48:42 125

原创 C++ primer读书笔记(一)

C++ primer读书笔记之第1章前言研究生开学也已经大半个月了,导师的方向是做C++开发。我这个苦逼的研究僧也只有跟着老师的项目学习C++。我之前也只有C语言和一小部分Java的基础,和大家一样对于C++的学习都是从零开始的。而且我的本科还不是计算机专业,是隔壁的通信专业,对于C++的学习仅限于24个学时的大学计算机基础。所以我们一起学习,共勉!对于C++的初步认识因为之前学过一段时间...

2019-09-24 20:27:38 296

空空如也

空空如也

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

TA关注的人

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