自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

learner_pu的博客

keep learning

  • 博客(63)
  • 资源 (1)
  • 问答 (5)
  • 收藏
  • 关注

原创 struct、类的字节数怎么算

有的时候我们需要算一个结构体的字节数,算的时候是根据它里面的成员来算的,但并不是这些成员字节数的简单加和。首先我们要清楚结构体在内存中是按单元来存储的,单元的字节数是按数据中占最大字节数的成员为基准的。比如有double,有int,有char,按double的8来开辟。1.牛刀小试struct Data{ double value; char val; int a;};int main(){ std::cout << sizeof(Data) << std::

2021-05-27 17:33:29 685

原创 fatal:io.h:没有那个文件或目录

问题:在引入头文件的时候#include<io.h>然后编译的时候,出现了如下的问题: fatal:io.h:没有那个文件或目录。解决:#include<sys/io.h>. 加个sys, 不要去find. io.h然后cp。

2022-01-12 21:22:52 3083 1

原创 你能看懂的cow和row快照原理

快照方式cow和row的原理,保证你能看懂

2021-12-30 17:14:02 3332

原创 和女神打电话理解三次握手、四次分手

三次握手基础知识ACK、SYN、FIN这些大写的单词表示标志位,其值只能是0或者1。seq和ack这些小写单词代表序号。其中seq代表序列号,ack代表应答。假设客户端是你女神,服务器是你,然后通过拨通电话和挂断电话的两个过程来说明三次握手和四次分手的过程。理解在一个平常的夜晚,你如往常一样走在回家的路上。突然你收到了你女神打来的电话。你欣喜的接起了电话。这个时候,她先讲话了,喂, 她说你能听到我说话吗?这个时候,你没有忘记学过的计算机知识,你说老师说过,这是第一次握手。你兴高采烈地回答说我能听

2021-11-18 23:25:18 773

原创 select、 poll、epoll

I/O多路复用作者:知乎用户链接:https://www.zhihu.com/question/28594409/answer/52835876来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。下面举一个例子,模拟一个tcp服务器处理30个客户socket。假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择:第一种选择:按顺序逐个检查,先检查A,然后是B,之后是C、D。。。这中间如果有一个学生卡主,全班都会被耽误。这种模式

2021-10-09 10:16:54 221

原创 虚拟机xml文件使用

基本概念 镜像(mirror):是把很多文件打包放在一起,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本就称为镜像。它是一种文件存储形式。使用GHOST等软件来进行构成镜像和拆镜像的功能。 映像(image) :将资料和程序结合的文件,是数据的物理结构,现在基本上特指VIM格式(主要用在系统封装和引导盘上)。可以用来做还原。这都是按接口分 ide磁盘:把控制器和盘体集成在一起的磁盘驱动器,IDE接口硬盘多用于家用产品中,也部分应用于服务器。 sata磁盘:SATA

2021-08-18 14:33:52 2479

原创 libvirt的常用api详使用方法

虚拟化的方式1.全虚拟化,Hypervisor(即vmm虚拟机管理程序)会抽象出虚拟机所用的全部硬件资源(如CPU、磁盘、网卡) kvm和qemu的使用方法kvm是内核的一部分(内核代码的一部分),它使得Linux在用户模式和内核模式的基础上增加了客户模式,虚拟机就是运行在客户模式下的。它同样具有内核模式和用户模式。kvm负责虚拟机的创建,虚拟内存的分配,VCPU寄存器的读写和VCPU的运行(模拟内存和CPU).qemu是一套独立的模拟计算机的软件,它是用户模式下的一个进程。通过qemu,用户

2021-08-18 14:28:47 2023

原创 函数只有参数从const转到非const构不构成重载?

1.值传递作为参数,加const构不构成重载int te(const int a){ return a;}int te(int a) { return a;}int main(){ int value = 1; std::cout << te(value) << std::endl;}answer:不构成,而且还会报重定义的错,因为这是值传递,value只是把值传进去了,并不是把自己传进去。那么修改也是对a的修改,就是在te函数的作用空间的一个值

2021-06-24 18:12:01 264

原创 gdb调试

默认情况下,gcc在编译时不会将调试符号加到生成的二进制代码中,因为这样会增加可执行文件的大小。如果需要在编译时生成调试信息,需要使用gcc的-g或者-ggdb选项gcc的调试信息同样采用分级(跟优化一样)的思想,分为g1、g2、g3,默认是g2g1:只能够用于回溯跟踪和堆栈转储g2:除了g1,还有拓展的符号表、行表、局部或外部变量信息g3:除了g2, 还有源代码中定义的宏生成调试信息gcc efficient.c -g -o efficient可以对比带不带调试信息的文件大小用 ls

2021-06-23 17:09:32 185

原创 gcc代码优化

gcc通过-On来控制优化代码的生成,其中n代表优化级别的整数,n一般在0-2或3-O的意思就是-O1。一般包括线程跳转和延迟退栈两种优化-O2还会处理处理器指定调度-O3还会处理循环展开和其他一些与处理器特性相关的优化工作一般使用O2,它作为一个平衡点(优化长度、编译时间、代码大小之间)inefficient codes#include<stdio.h>int main(){ unsigned long int counter; unsigned long i

2021-06-23 11:33:39 546

原创 gcc编译器编译各阶段

gcc编译器gcc编译器是GNU开源组织发布的UNIX/Linux下的多平台的编译器。它可以将c、c++等多种语言编写的源文件编译、链接成可执行文件。 gdb是GNU下的调试器。gcc可以编译c、c++、object c、java等多种语言,而且又是跨平台的,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件。很适合嵌入式。编译四过程1.预处理2.编译3.汇编4.链接gcc提供30多条警告信息和三个警告级别。gcc通过文件后缀名区别文件的类别。.c

2021-06-23 11:33:03 475

原创 数组传递的几种方式

普通数组传递#include <iostream>using namespace std;void get_size(int a[5]){ std::cout << sizeof(a) << std::endl; for(int i = 0; i < 5; i++) std::cout<<a[i]<<std::endl;}int main(){ int a[5] = { 1, 2, 3, 4, 5}; get_s

2021-06-19 10:58:45 4955

原创 how breakpoints work

There are two types of breakpoints, one is hardware breakpoint. the other is software breakpoint.Hardware BreakpointHardware breakpoints are implemented by the chipset being used. When the instruction matchs an instruction configured in peripheral regist

2021-06-17 14:43:44 107

原创 member initialization list

Member InitializationFoo(int num) : bar(num) {};understand like thisint bar = num;equivalentFoo(int num) : bar() {bar = num;}the object will be constructed and initialized in one operation. like copy constructor.Member AssignmentFoo(int num){

2021-06-17 14:42:33 145

原创 STL里map的第三个参数

首先看看STL里对map的定义template<class _Kty, class _Ty, class _Pr = less<_Kty>, class _Alloc = allocator<pair<const _Kty, _Ty>>> class map : public _Tree<_Tmap_traits<_Kty, _Ty, _Pr, _Alloc, false>>第一个是key,第二个是value,第三个是

2021-06-02 18:41:44 1245 1

原创 vector删掉多个数值相同的元素

#include<iostream>#include <vector>int main(){ std::vector<int> v = { 8, 10, -5, 8, 3, 8}; if (v.size() == 0) return -1; for (int i = int(v.size()) - 1; i >= 0; i--) { if (*(v.begin() + i) == 8) v.erase(v.begin() + i);

2021-05-26 16:05:30 444

原创 std:sort()的第三个参数--匿名函数

我们知道algorithm的std::sort()函数可以实现一个vector的排序,只需要传进去要排序范围的起始和终止迭代器就可以了。但是它其实是可以接受第三个参数的,就是一个匿名函数,这里面就是std::vector里的数据成员的一个比较规则的函数。然后它的返回值是一个bool值。你可以指定按照什么方式进行排序。比如说最基本的一个类里有两个成员,然后以其中的m_a作为基准从小到大排序#include <vector>#include <iostream>#includ

2021-05-26 15:29:03 2801

原创 error LNK2005: “int __cdecl test(void)“ (?test@@YAHXZ) already defined in test.obj

相信大家编程的过程中都遇到过这个报错的问题,但为什么会报这个错,我们来探究一下。问题复现a.h#pragma once#ifndef _TEST_#define _TEST_int test(){ return 1;}#endifa.cpp#include "a.h"main.cpp#include "a.h"int main(){ return 0;}就这样就报错了,根本没做什么啊。首先我们要知道一个东西,头文件其实是不存在的,它会在预编译阶段把整个

2021-05-09 10:41:03 827 1

原创 拷贝构造函数必须写引用吗?

拷贝构造函数必须写引用吗?是的,因为如果不写成引用,就会有一个很尬尴的情况,就是因为是值传递,所以传进来的参数会被拷贝一次,但这个拷贝,只能使用拷贝构造函数来拷贝,而使用这个,就得又拷贝一次,然后会这样陷入死循环。所以只能用引用。而const倒是无所谓,有const最好。...

2021-04-24 21:16:08 657 1

原创 using namespace std到底发生了什么???(猜想)

之前一直觉得using namespace std;之后,会把命名空间的函数拷贝到全局空间。答案是否定的证明1.分别查看加了这句话和不加这句话obj文件的大小,结果发现,大小是一样的。2.查看引用namespace前和后同一个文件的地址。namespace name{ void hello() { int a = 1;}int main(){ std::cout << name::hello ; using namespace name; std::cout &

2021-04-23 18:37:56 95

原创 为什么析构函数要写成虚函数

子类构造函数调用顺序:先父类,再子类(先建立基础,再大楼)子类析构函数调用顺序:先子类,再父类(先拆大楼,再拆基础)为什么析构函数要写成虚函数因为如果一个父类指针装了一个子类对象,在析构的时候如果不是虚函数,它会调父类的析构函数,这样的话,如果子类有新的成员变量,就会出现内存泄漏的情况,没有被释放。...

2021-04-23 17:10:20 107

原创 为什么构构函数不能是虚函数

子类构造函数调用顺序:先父类,再子类(先建立基础,再大楼)子类析构函数调用顺序:先子类,再父类(先拆大楼,再拆基础)为什么构构函数不能是虚函数1、因为它作用在刚刚被创建的时候,调本身的构造函数完了。2、析构函数写成虚函数是因为父类指针装子类对象的情况,构造的时候不会出现这种情况啊,对象都没有呢,咋虚函数。而且虚函数表也是对象创建以后才有的。所以构造函数根本不具备成为虚函数的条件。总结:为什么析构函数不能是虚函数,是不必,是不能。...

2021-04-23 17:09:47 64

原创 C++ 加const能不能构成重载的几种情况

1.值传递作为参数,加const构不构成重载int te(const int a){ return a;}int te(int a) { return a;}int main(){ int value = 1; std::cout << te(value) << std::endl;}answer:不构成,而且还会报重定义的错,因为这是值传递,value只是把值传进去了,并不是把自己传进去。那么修改也是对a的修改,就是在te函数的作用空间的一个值

2021-04-23 16:32:27 3335 2

原创 理解#define定义宏

深入理解#define X(宏)在写这种东西的时候,是否有困惑,它到底是什么东西?#ifndef __TEST_H__#define __TEST_H__首先回到#define的定义 #define A B : 将标识符A定义B的别名。那么根据这个定义我们来看这个宏,它其实是说把定义的东西赋值成空,因为后面啥也没有,如果它的意思是定成空,就是一个宏,它存在在代码中也跟不存在一样。下面的语句是可以编译的,因为它就是int a = 200;int __FACILITYOBJ_PM_H__

2021-04-18 07:40:05 717

原创 osg键盘事件

OSG中键盘事件不响应的解决办法,按下键盘后鼠标事件也不响应了1、换输入法为英文状态2、(若1不行)换键盘为美式键盘

2021-03-20 19:41:05 646

原创 c++错误合集

错误1:abort() has benn called很可能是数组越界了

2020-08-25 10:16:35 140

原创 opencv

sobel算子

2020-08-21 07:34:05 83 1

原创 为什么使用size_t而不用int

size_t代表unsigned int,主要用于vector的下标索引,它可以达到足够大的索引值。

2020-07-27 10:21:45 404

原创 break;和return;的区别

return;不返回任何值,作用跟break;差不多,但break只能退出一层,但return;有多少层就能退出多少层,使函数结束。

2020-07-24 13:46:52 132

原创 堆栈

1、堆内存是程序员手动分配和释放的,c:malloc和free c++:new和delete,(delete的时候会调用析构函数)2、栈内存是系统自动分配和释放的。

2020-07-21 10:09:07 59

原创 如何让dll项目运行结果的值打印到output

1、先在dll项目文件中,trace6要显示的值。2、打断点3、到test项目文件中调用要显示内容的函数。4、debug,即可显示要打印的内容到output

2020-07-13 09:48:47 515

原创 调用公司的函数库

1、把库文件放到一个文件夹下。2、打开vs项目文件保存到这个文件夹下3、再把dll项目文件和test代码放到一个文件夹下4、General设置5、c/c++ General添加这么一行6、Linker上面的选项保持默认,下面的改成框里的东西7、引入头文件,记得加上命名空间,前面8、在pch.h里加入你需要在你的预编译文件里添加些代码#include “targetver.h”#define _ATL_CSTRING_EXPLICIT_CONSTRUCTOR

2020-06-28 07:51:51 253

原创 上面是dll导出设置_FOOTPOINT需要定义到项目设置的C++的预定义里 下面这部分是头文件的写法,__ARCH__H宏是为了防止重复定义错误的

上面是dll导出设置_FOOTPOINT需要定义到项目设置的C++的预定义里下面这部分是头文件的写法,__ARCH__H宏是为了防止重复定义错误的

2020-06-18 10:48:22 97

原创 vs2017 dll项目和test做单元测试

一、创建dll项目1.新建项目2.创建文件pch.h是预编译的文件,所以不要把自己写的代码直接放到下面二、测试项目1.这是dll项目文件夹下的文件2.

2020-05-18 15:17:22 721

原创 undefined reference to `__imp_GetStockObject'

问题:dev cpp 窗口界面显示不出来解决:在工具中选编译选项,在编辑器中的编译时加入以下命令输入( -mwindows)确定即可

2020-05-01 10:52:23 2486 1

原创 git

远程仓库两种使用方式1.基于http协议a、创建一各空目录cd … (返回到根目录)mkdir shop(shop是文件夹名)b、使用clone指令克隆线上仓库到本地cd ./shopgit clone 线上仓库地址(shift + insert是粘贴, 报错了就自己手动输入)c、在仓库上做相应的操作,(提交暂存区、提交到本地仓库、提交线上仓库、拉取线上仓库)cd shop...

2020-04-19 15:47:53 83

原创 Pandas

pandas读取表格类型的数据根据索引查询数据查询冒号再第一个位置表示所有的行,冒号在第二个位置表示所有的列实用函数skiprows = 2,不要前两个空行,表格里有两个空行setingwithcopywarning...

2020-04-12 11:13:41 58

原创 django

创建虚拟环境1、安装virtualenvpip install virtualenv2、创建虚拟环境virtualenv + 虚拟环境名字3、进入虚拟环境windowscd 虚拟环境名dir 显示文件目录cd Scriptsactivate进入了以后最前面显示虚拟环境的名字mac/linuxsource/path/to/virtualenv/bin/activat...

2020-04-01 00:00:40 78

原创 django天天生鲜项目

项目开发流程需求分析:模块页面图功能图部署图项目架构数据库表用户表和地址表是一对多,在SKU放图片是以空间换时间,比如在搜索结果下面显示商品的信息,直接提取,不用再到另一个表提取,index是实现显示顺序,状态是上架与否...

2020-03-31 10:39:43 259

原创 pip安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名使用镜像安装

2020-03-14 23:29:47 111

MyPlane.rar

这里有飞机大战的全部代码、用python编写的,素材包括音乐、图片都在文件夹里,运行只需要打开main.py,然后点击运行就可以了,欢迎下载

2020-02-16

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

TA关注的人

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