自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang实现远程控制主机

代码非常简单,注意我们如果是第一次连接那么上述代码会执行失败,因为第一次连接,ssh server要返回自己的hostkey给客户端(我们执行代码的机器),客户端要在自己的know_host里面check,但是第一次连接know_host没有数据就会失败,所以可以将代码改成不安全的模式,也就是不check know_host,方法也很简单,就是将连接时候的config的。说到ssh原理个人觉得解释最全的一张图是这张华为画的。随后是user ssh key,这个东西是用户用。这一步就是建立tcp连接。

2023-09-18 23:03:50 1046

原创 C++ copy assignment operator is implicitly deleted

首先给出copy assignment operator隐式删除的规则的定义TTTTTTTT翻译一下如果下面任何一个条件为真,则触发copy assignment operator的隐式删除类T有用户定义的移动构造类T有用户定义的移动赋值操作如果下面任何一个条件为真,则将默认copy assignment operato定义为deleteclass T有一个数据成员是非static且为const的non-class typeclass T有一个数据成员是非静态的引用类型。

2023-08-24 15:15:51 638

原创 C++:lower class obj访问upper class obj

首先本篇文章讨论集成,而是一个class 包含另一个class obj,比如下面代码,base class里面包含了derive class的obj那么问题来了,如果class A包含2个class obj,分别是B和C,而C又包含一个class obj D,此时D obj想调用B obj的某个成员函数怎么办?如下图fill:#333;color:#333;color:#333;fill:none;

2023-07-18 16:00:11 308

原创 C++ const reference

指针变量和引用的区别,因为指针变量本身是一个变量,所以改变其值不会改变其指向内存区域的值,而引用可以看成"绑定"当一个引用指向一个内存区域(“绑定”)后,改变这个引用的值会顺带改变引用指向的对象的值,因此const和引用的组合要比const和指针的组合约束要大,导致const和引用的组合就只有const reference。

2023-05-28 17:41:29 1005

原创 C+中std::list如何存储不同类型的变量

首先我们有以下简单的C++代码然后我们给出的的memory layout我们可以看到class Y继承了class X所以class的Y的对象中也有class X的虚指针(X::_vptr),并且class Y重载了class X虚函数的部分,所以class Y中虚指针(X::_vptr)指向的是class Y重载之后的函数(Y::~Y()),那么class X的对象呢?class X的对象中的虚指针(X::_vptr)其实也指向了Y::~Y(),因为被派生类class Y重载。

2023-05-24 11:30:35 721

原创 图应用替换算法

首先我们要确定当前所处的epoch的id,如图上所示第二行代码,currDstID就是我们的D0,D1…T-TOP非常的简单,但是有一个严重的问题,就是我们在进行横向遍历的时候(比如上述例子第一行横向遍历找到S0在什么时候会被rereference),时间复杂度是O(n),假设顶点非常非常的多,我们T-TOP算法的效率也会随之急剧下降,T-TOP的理想情况是将这种遍历带来的时间成本给抹掉,当然这不可能,所以为了解决这个隐患,人们又开发了一个叫做P-OPT的算法,P-OPT是T-OPT的改进。

2023-05-06 17:08:29 894

原创 C++智能指针

也会随着消失,当智能指针小时其指向的内存区域也就是struct的内容也会消失,避免了我们忘记release class中的某些成员,假如这些成员占用内存很大,且是放于heap中,并且忘记在析构函数中remalloc或者delete,那么就会内存泄漏,如果用。当我们多个智能指针指向一块内存的时候,他们可以同时操作这块区域,和普通指针没什么两样,但是当我们的所有智能指针(指向同一块内存)超出生命周期(超过范围scope)后,那么这块内存会自动的被销毁,防止出现内存泄漏。)被销毁后,并没有触发析构函数,而是在。

2023-05-04 17:37:59 767

原创 C++: lambda vs std::function

lambda其实就是一个匿名函数,其语法格式如下params就是我们匿名函数的传参,body就是匿名函数的具体语句,但是capture就比较特别,他是用于捕获上一级变量在我们lambda中使用,比如最简单的一个no capture(不使用lambda之外的变量)lambda如下假设外部有一个变量var我们想在lambda中调用可以这样写此时我们将上一级的变量(包含var)给一份给lambda中用当然我们也可以不copy 变量var,而是reference变量var如下。

2023-05-04 14:53:30 584

原创 c++ atomic

首先锁的一些操作都是操作系统提供,比如win,linux,但是atomic是我们处理器提供的,锁机制其实是将被lock住的线程挂起,空出cpu资源给其他的线程,但是这有明显的inter pross的线程上下文切换(被锁住的线程在不断地尝试直到成功强到锁(也叫做busy wait))我们使用锁的时候还要考虑死锁等情况发生(当然c++中有。在C++标准中并没有说明他是lock-free的,有的平台他是lock-free,有的平台他是用mutex实现,所以C++提供了一个method去验证你的这个平台上。

2023-04-03 22:03:36 540 1

原创 cmake

首先什么是cmake,cmake和makefil的区别是啥,cmake是一个配置文件,其可以自动生成项目构建工具,比如makefile,ninja,wmake等,他支持跨平台(windows/unix-like)比如cmake generators根据我们指定的option可以生成unix 下的makefile,也可以生成visio studio XXX下的makefile等等。

2023-03-19 21:34:59 232 1

原创 自制os 1:bootloader

自制os1

2023-03-13 17:10:19 334 1

原创 c++分割std::string成多个string

std::string分割字符串

2023-03-06 19:30:40 1885 3

原创 C++ virtual destructor

virtual destructor

2022-11-25 15:14:53 510

原创 C++ 虚拟继承(virtual Inheritance)

虚拟继承

2022-11-23 10:46:24 520

原创 C++ constexpr && consteval && constinit

constexpr&&consteval&&constinit

2022-11-19 19:44:12 455

原创 c++ operator overloading

c++

2022-11-13 18:04:22 421

原创 GPGPU 架构

GPGPU architecture

2022-10-11 19:37:51 4126

原创 统计C++程序运行时间

统计C++运行时间

2022-09-16 10:36:45 803

原创 C++面对对象设计模式

设计模式

2022-09-04 18:45:18 392 1

原创 linux C/C++ socket编程

socket

2022-09-04 11:45:22 3899

原创 gdb and coredump && valgrind分析

gdb

2022-08-12 17:15:39 2405

原创 Analyzing and Leveraging Decoupled L1 Caches in GPUs

Analyzing and Leveraging Decoupled L1 Caches in GPUs

2022-08-08 20:26:01 518 3

原创 Locality-Driven Dynamic GPU Cache Bypassing

locality-Driven

2022-07-31 10:03:16 778

原创 计算机内存

计算机内存

2022-07-23 17:10:55 980

原创 使用char存int类型数字深究

使用char存int类型数字深究

2022-07-13 14:58:05 1559

原创 使用容器环境跑GDB的一些坑

GDB

2022-07-12 16:36:01 607

原创 C/C++ 位操作

C++打印数字二进制

2022-06-30 12:31:28 3468

原创 C/C++ extern和static的使用

Cpp

2022-06-24 19:17:10 971 1

原创 浅谈GPU:历史发展,架构

GPU

2022-06-24 16:46:35 686

原创 C/C++ 多线程编程

C/C++多线程编程

2022-06-21 21:33:00 1058

原创 可扩展哈希

Extendible Hashing

2022-06-20 12:50:24 2263 2

原创 An Empirical Evaluation of In-Memory Multi-Version Concurrency Control

MVCC

2022-06-14 17:53:48 500

原创 Cloud-Native Database Systems at Alibaba: Opportunities and Challenges

李飞飞老师关于阿里云数据库论文阅读

2022-06-04 16:40:08 335

原创 论文阅读技巧

前言文章来自于University of Waterloo的David R. Cheriton每年研究者会花费上千小时去阅读论文,学习有效阅读论文是一项关键但很少教授的技能,这篇文章教你一个"三步法"去阅读论文为了避免你拿到一篇文章直接苦哈哈的从头读到尾,这个三步法每一步都有一个目标,并且每一步都建立于前一步之上first pass第一步就是对这篇论文有一个大概的了解second pass第二部就是抓住文章的重点,而不是细节third pass第三步就是更加细致的去了

2022-05-24 20:54:14 106

原创 关于使用unordered_map.count()作为判断条件的一些坑

今天在写bustub的bufferpool代码时候有一个非常奇怪的bug让我百思不得其解,我有一个unordered_map叫做page_table,用于映射bufferpool中的pageid和bufferpool中真实位子也就是下标frameid的我在unpin后自然而然的删除了这个键值对page_table.erase(0),在接下来的判断中FetchPg的判断中page_table.count(0)应该返回0为假,然后我从磁盘中拿相应的page到内存中,奇怪的是我erase后page_table.c

2022-05-15 17:55:16 1022

原创 C++ 11 =delete

前言在写代码的时候发现一个bug,编译器报错,报/usr/include/c++/9/ext/new_allocator.h:145:20: error: use of deleted function最后发现了原因,是因为我们隐式的调用了copy构造函数,但是,copy构造函数被我们显示的删除了(=delete),由此我们探讨一下C++ 11的=delete特性代码先看一个正常的copy构造函数#include <iostream>#include <list>

2022-05-13 12:24:45 1226

原创 C++ 派生类赋值给基类指针

基类和派生类的关系基类和派生类不是2个独立的类型,派生类是一个基类的类型,它们2个不是分开的,当我们创建一个派生类的时候,派生类中的数据member应该如下BaseClass : [Base Data]DerivedClass : [Base Data][Derived Data]派生类的数据类型附加于基类之后当我们给一个基类类型指向派生类的时候,这个基类指针访问的是派生类继承基类的那部分数据,就算我们在派生类中重新更改继承而来的基类类型,基类指针访问的还是原来的数值,如下#include &

2022-05-09 16:01:12 708

原创 c++ rethink virtual

前言关于虚函数,原理都明白,分为纯虚函数和虚函数,其中纯虚函数需要在虚函数后面加上=0,而虚函数不用,虚函数和纯虚函数的区别是虚函数是基类创建class,并且在里面创建一个虚函数,子类继承虚函数并且使用,而纯虚函数除了继承还必须要覆盖他,如下#include <iostream>using namespace std;class Base{public: Base() = default; virtual void Print(){cout << "non

2022-05-08 19:09:47 179

原创 golang gob

前言golang的gob是干嘛的?首先我们有一串数据,我们想让这些数据序列化,但是怎么序列化,序列化的格式是什么?我们都可以通过encoder去定义,比如我们想让一大坨数据(比如非常复杂的结构)序列化成json格式,或者序列化成array等等,我们如何序列化呢?我们使用encoding/gob这个包进行序列化gob简介先贴上官网的简介Package gob manages streams of gobs - binary values exchanged between an Encoder (t

2022-04-30 17:20:58 287

原创 拷贝构造vs移动构造

拷贝构造The copy constructors in C++ work with the l-value references and copy semantics(copy semantics means copying the actual data of the object to another object rather than making another object to point the already existing object in the heap). While m

2022-04-28 17:39:52 2062

空空如也

空空如也

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

TA关注的人

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