自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP和UDP可以用同一个端口吗

TCP和UDP同一个端口

2022-10-25 10:11:50 1332 2

原创 TCP和UDP的区别

TCP和UDP的区别

2022-10-25 10:04:47 873

原创 HTTP和TCP的区别

HTTP和TCP的区别

2022-10-25 09:46:52 1064

原创 聚簇索引和非聚簇索引

聚簇索引和非聚簇索引

2022-10-17 23:08:06 173

原创 sizeof结构体的大小

sizeof求得的结构体(及其对象)的大小并不等于各个数据成员对象的大小之和!\n结构体的大小跟结构体成员对齐有密切关系,而并非简单地等于各个成员的大小之和!比如对如下结构体两个结构体A、B使用sizeof的结果分别是:16,24。可以看出sizeof(B)并不等于sizeof(int)+sizeof(double)+sizeof(int)=16。\n\nstruct A{\n         int num1;\n\n    &nbsp

2022-10-17 17:59:53 291

原创 百度实习两个月小结~

简略总结前一个月总结来说 就是熟悉公司环境、团队业务、代码提交流程及规范以及熟悉代码。第二个月就是参与小项目的开发。目前情况前几天已经完成了第一个小项目,目前是属于测试阶段,测试流程已经过去50%,目前只出现一个小bug,有点小忐忑,也有点小心安,忐忑的是因为在大公司里,即便是小项目也会被很多人体验到,心安的是自己写的代码质量 似乎 也还可以(手动狗头)。从刚开始的迷茫到现在的能大致看懂代码,,其中历程比较艰难也不知从何说起,也还好是大公司,代码的命名比较规范易懂,不然现在能否完成小项目也是个未知数

2021-12-28 21:01:09 292

原创 软件测试知识点集锦-期末考试复习总结

相关思维导图如上,相关详细内容如下:单元测试也叫组件测试,技术形式包括黑盒测试与白盒测试;单元测试需要编码,编码的形式有驱动器、桩模块、模拟器,可发现的缺陷包括功能性缺陷、运行时缺陷、性能缺陷和健壮性问题。驱动器:通过接口与测试对象通讯的辅助工具。用于调用被测试的组件或系统替代性程序。桩模块:桩用于替代或模拟那些还没有完成的组件(模块),用于模拟输入和输出(针对不完整的功能)。模拟器:用一个系统来描述另一个要测试的抽象系统的行为特征。黑盒测试与白盒测试黑盒与白盒的区别是:黑盒不知道程序的.

2021-12-28 20:42:44 1064 1

原创 【Linux】设置虚拟内存

设置步骤su rootcd /etcswapoff /etc/swapfiledd if=/dev/zero of=/etc/swapfile bs=1M count=2048mkswap /etc/swapfileswapon /etc/swapfile最后,修改/etc/fstab,添加一行/var/swapfile none swap sw 0 0如果要删除交换分区和交换文件,逆着上面的顺序操作:先删除/etc/fstab文件中添加的交换文件行停用交换文件swapoff /e

2021-11-19 17:48:21 493

原创 双非本-大三-已拿百度日常实习offer-C++方向

今天收到百度录用通知书。前几天还在担心拒接了深信服的口头offer,会不会最后百度的offer没批下来,一直忐忑不安,不过结果还好。大学以来的努力没有白费,有了大厂经历背书,估计春招、秋招会舒服一些了。最近在做CSAPP的实验,其实是填大一暑假留下来的坑(当时就在啃CSAPP,但是没做实验只是单纯看书)。以后再接再励。...

2021-11-02 20:15:43 386 1

原创 CSAPP-shlab

附上代码:/* * tsh - A tiny shell program with job control * * <Put your name and login ID here> */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <ctype.h>#include <signal.

2021-11-02 11:41:28 178

原创 union判断大小端

union { char a; int b;}c;int main(){ c.b = 1; printf("%d",c.a == 1); return 0;}如果是小端则结果是1大端结果是0

2021-10-27 15:44:14 364

原创 CSAPP-cachelab

CSAPP的缓存实验分为partA和partBpartA就是模拟一个缓存难的不是处理缓存的思路,而是处理参数的思路,如何将参数、内容抽象成数据结构。#include "cachelab.h"#include <getopt.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#define IDX(m,n,E) m * E + n#define MAXSIZE 30char i

2021-10-27 15:26:09 349

原创 CSAPP-Architecture lab

archlab这个实验要做的是将c语言转化成Y86-64汇编指令。gcc -c examples.c objdump -d examples.c > examples.d 5 Disassembly of section .text: 6 7 0000000000000000 <sum_list>: 8 0: 55 push %rbp 9 1: 48 89 e5 m

2021-10-24 15:52:43 706

原创 CSAPP-Attack lab

此实验有五个任务第一个任务是让你跳转到touch1函数void test(){ int val; val = getbuf(); printf("No exploit. Getbuf returned 0x%x\n", val);}unsigned getbuf() { char buf[BUFFER_SIZE]; Gets(buf); return 1;}void touch1() { vlevel = 1; printf("Touch1!: You called tou

2021-10-23 14:03:11 184

原创 C++11新特性简略速览

1.引入nullptr改进NULL,隐式推导返回类型(专门用来区分空指针和0)2.自动类型推导auto和decltypeauto x = 1;auto y = 2;decltype(x + y) z;3.基于范围的for循环vector<int>ar({1,2,3,4,5,6});for(auto i : ar) { cout<<i;}或for(auto &i : ar) { i = 10; cout<<i;}4.智能指针sh

2021-10-20 20:32:16 118

原创 编译型语言和解释型语言

计算机能识别的语言只有机器语言,编译型和解释型语言都是将源代码转化成机器语言。编译型语言使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。解释性语言使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。...

2021-10-20 16:35:29 71

原创 Linux下使用C++连接MySQL8.0(即Connector/C++ 8.0)

正确安装MySQL8.0参考这篇成功安装MySQL8.0安装boost库sudo apt-get install libboost-all-dev安装 C++Connector 库https://dev.mysql.com/downloads/connector/cpp/我用的是上面的前三个包,dpkg -i 文件名.deb注意-dev包最后一个安装MakefileMYSQL_CONCPP_DIR= /usrCPPFLAGS = -I $(MYSQL_CONCPP_DIR)/i

2021-10-09 19:20:32 1791

原创 Ubuntu16.04删除MySQL5.7安装MySQL8.0

sudo apt-get cleansudo apt-get purge 'mysql*'sudo apt-get updatesudo apt-get install -f去http://dev.mysql.com/downloads/repo/apt/.下载一个mysql-apt-config_0..***_all.deb,使用,我下载的是这样:dpkg -i mysql-apt-config_0.8.13-1_all.debsudo apt-get updatesudo apt in

2021-10-09 15:54:38 242

原创 linux忘记MySQL密码怎么办

直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:按如下修改mysql -u debian-sys-maint -penter password: <输入[client]节的密码>mysql> update user set authentication_string=password("newpassword") where user=‘root’;mysql> flush privileges;mysql> quit

2021-10-07 10:03:32 137

原创 链路层提供的服务

链路层提供的服务组帧封装成数据帧,加首部和尾部帧同步链路接入共享介质和MAC地址相邻节点间的可靠交付根据线路特征采用不同操作流量控制协调发送节点和接受节点差错检测应对信号衰减、噪声检测到:重传或丢弃差错纠正接收端直接纠正全双工和半双工差错编码R:冗余比特不能100%可靠。减少R的比特。差错编码分为检错码和纠错码:校验和发送端:接收端:得到checksum为全0或全1.循环冗余校验码(CRC)...

2021-10-05 19:51:33 394

原创 计算机网络的网络层相关

网络层中的网络设备有 转发和路由 或者 建立连接(ATM)的功能。网络层服务模型无连接服务数据报网络特点:不事先确定路径每个分组独立确定传输路径不同分组可能传输路径不同连接服务虚电路网络特点:实现确定路径(建立连接)沿该路径传输系列分组系列分组传输路径相同传输结束要拆除连接虚电路介绍特点:1.源主机到目的主机,类似电路的路径(逻辑连接)2.路径中的路由器参与建立连接(建立和维护一个虚电路转发表)3.分组交换(利用全部带宽)4.结合分组交换和电路交换的优点过程:呼叫

2021-09-26 21:24:24 79

原创 数据库事务四大隔离级别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录读未提交读已提交可重复读可串行化读未提交读未提交是指,一个事务在对数据修改,即便未提交,其他事务也可以看见此修改。(这个也叫做脏读)读已提交一个事务从开始直到提交之前,只能“看见”已经提交的事务所作的修改。可重复读在同一事务中多次读取相同的记录,结果是一样的。解决了脏读,但是避免不了幻读(假如一个事务在查询一个范围,另一个事务在此范围插入了一行, 则前一个事务读到的结果会出现幻行(多一行))。可串行化强制事务串行执

2021-09-25 20:17:41 65

原创 链表实现大整数 加减法 一个节点保存四位数字(C++实现)

可用来熟悉数据结构与C++语言内容。#include<iostream>#include<vector>#include<algorithm>using namespace std;class node {public: node() { ch = ""; next = nullptr; } node(string a) { ch = a; next = nullptr;

2021-09-16 19:54:44 368

原创 C++内存池实现

class Airplane{private: struct AirpRef { unsigned long miles; char type; };private: union { AirpRef rep; Airplane *next; };public: static void *operator new(size_t sizes) { if(sizes != sizeof(A

2021-09-15 16:34:06 123

原创 C++小型内存池实现

class Foo {public: Foo(int x) : id(x) {} int getId() {return id;} ~Foo() {} void *operator new(size_t sizes) { Foo *p; if(!freeStore) { //linkList is empty size_t num = FooNum * sizes; f

2021-09-15 15:51:26 94

原创 我的C++not1

template<typename Predicate>class my_unary_negate : public unary_function<typename Predicate::argument_type,typename Predicate::result_type> {protected: Predicate pred;public: my_unary_negate(const Predicate &x) : pred(x) {}

2021-09-14 10:17:53 87

原创 C++unary_function和binary_funtion

unary_funtionunary_funtion的结构如下:template<typename Arg,typename Result>class unary_funtion{ typedef Arg argument_type; typedef Result result_type;};一般单元操作符都应该继承此类。binary_funtionbinary_funtion结构如下:template<typename Arg1,typename Arg2,type

2021-09-14 08:28:25 190

原创 我的C++bind2nd

原版C++bind2nd我的C++bind2nd主要是为了理解C++的仿函数:template<typename Operation>class mybinder2nd : public unary_function<typename Operation::first_argument_type,typename Operation::result_type> {protected: Operation op; typename Operation::sec

2021-09-13 23:22:59 193

原创 设计模式----AbstructFactory模式(简单C++实现)

Abstruct PatternAbstructProduct.h#ifndef _ABSTRUCTPRODUCT_H_#define _ABSTRUCTPRODUCT_H_class abstructproductA {public: virtual ~abstructproductA();protected: abstructproductA();private:};class abstructproductB {public: virtual ~a

2021-09-13 09:41:04 155

原创 设计模式----factory模式(简单C++实现)

factory模式的两个功能定义创建对象的接口,封装对象的创建使得具体化类的工作延迟到子类中上图的意思是product是基类,concreteProduct1和concreteProduct2是派生类,我们在使用时一般会以基类指针指向实际对象来初始化,但是当派生类过多时会记不住派生类的名字(即一般会需要new xxx,难记xxx)所以需要工厂模式,用concreteFactory来产生相应的product。以下的代码主要实现上图,product#ifndef _PRODUCT_H_#def

2021-09-13 00:05:04 278

原创 linux段页管理

linux的x86架构初始是用的段基址+段内偏移来实现物理寻址,接着发展出分页管理,分页管理的基址是对进程的线性地址进行分解。假设是32位地址,则将32位地址分为10.10.12,分别以变量a,b,c来表示。寻找物理页的方式:先从cr3寄存器找到页目录项的基地址A,A的地址又分为20.12,分别以C,D表示,C+a找到页表项的基地址,C+a找到页表项,然后也是以相同的方式找到物理页。...

2021-09-10 09:58:09 121

原创 TIME_WAIT和CLOSE_WAIT的区别

TIME_WAIT四次挥手时,先发送FIN报文就会处于TIME_WAIT状态,这个是为了处理第三次挥手时,对方没有收到第四次挥手,从而多次发送第三次挥手(FIN报文)的情况,经过2MSL之后这个状态就会结束。一般的话,是客户端先向服务器发送FIN报文,则就是客户端处于TIME_wait状态。如果是服务器先发送FIN报文,会出现问题,先发送的就会处于那个TIME_WAIT的状态。服务器断开连接后,重启,会有一段时间重启不上,也就是那个bind()函数出错,得隔一段时间才能恢复,这个情况也可以设置一个TCP的

2021-09-08 09:47:11 789

原创 进程、线程、协程的区别

进程、线程和协程的区别和联系空白进程线程协程定义进程是资源分配的单位线程是CPU调度的基本单位协程是用户态的轻量级线程,线程内部调度的基本单位切换情况进程CPU环境(栈、寄存器、页表和文件句柄等)的保存以及新调度的进程CPU环境的设置线程保存寄存器和栈的内容,程序计数器协程先将寄存器上下文和栈保存,等切换回来再进行恢复切换者操作系统操作系统用户切换过程用户态-》内核态-》用户态用户态-》内核态-》用户态协程只有用户态调用栈内核栈内

2021-09-08 09:32:05 94

原创 ADRS是什么

ARDS全称:Address Range Descriptor Structure地址范围描述符

2021-09-06 19:49:46 393

原创 Redis五种数据结构整理

这里写目录标题简单动态字符串(SDS)优点:链表特点字典特点哈希冲突的解决方式跳跃表特点压缩列表特点简单动态字符串(SDS)struct sdshdr { // 记录buf数组中已使用字节的数量 int len; // 记录buf数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];};优点:获取字符串长度时间复杂度O(1)杜绝了缓冲区溢出减少修改字符串长度所需要的内存重分配次数二进制安全兼容部分C字符串函数链表//节点数据

2021-09-06 11:09:42 104

原创 linux中进程和线程的区别(fork和pthread_create的区别)

linux中进程和线程的区别在linux中两者区别不大,底层都是通过clone函数来创建,只是参数不同,先上一个clone()参数标志:pthread_create使用的clone是:clone(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,0)fork使用的clone是:clone(SIGCHLD,0)vfork使用的clone是:clone(CLONE_VFORK | CLONE_VM | SIGCHLD,0)区别只是在于clone参数

2021-09-02 23:17:00 2392

原创 C++中多态-面试回答

谈谈你了解的多态多态就是:同样的调用语句有不同的表现形态。即一般根据基类指针指向的实际对象,调用相应的同名函数。多态的条件1.必须有继承2.基类中必须用virtual关键字声明函数,即重写虚函数3.用基类指针指向对象虚函数相关基类中,在函数名前用virtual关键字声明,在派生类中再次实现同名函数(函数参数类型、个数,返回值类型必须一样)。在编译时,编译器遇到virtual关键字会在常量区创建一个虚函数表(存的是相应函数的指针),每一个类都有一个虚函数表,每一个对象都有一个指向虚函数表的

2021-09-01 21:38:13 202

原创 eflags寄存器有什么作用

eflags寄存器有什么作用eflags寄存器是标志寄存器,记录着运算结果,在我们的高级语言比如c中有if、switch等判断词,那些结果会存在内存变量里,但是在汇编语言里,这些判断的结果就是放在eflags里面。...

2021-08-31 16:21:51 345

原创 C++中左值引用和右值引用详解

C++中左值引用和右值引用C++通过引入右值引用来优化性能,具体来说是通过移动语义来避免无谓的拷贝问题,通过move语义来将临时生成的左值中的资源无代价地转移到另外一个对象去。1.C++中所有值必然属于左值或者右值,在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值。举个例子:int u = a + b,其中u就是左值,其变量名是u,可以通过&u来获取变量的地址;表达式a + b的返回值是右值,在其被赋值给某一变量前,我们不能通过变量名找到它,&(a

2021-08-30 22:32:18 1552

原创 静态库和动态库的区别

静态库和动态库的区别区别在于:该库是否被编译进目标(程序)内部。分别介绍静态函数库这类库在编译的时候会直接整合到目标代码中,所以形成的文件比较大,优点是编译成功之后的可执行文件可以独立运行,不需要向外部读取函数库。动态函数库动态函数库在编译时,只有一个 指向 的位置,也就是说可执行文件需要用到函数库的机制时,才会去读取函数库的内容来使用,也就是说可执行文件无法单独执行。优点是便于升级,需要时只要替换相应的动态库即可,不必编译整个文件。...

2021-08-30 20:49:05 227

空空如也

空空如也

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

TA关注的人

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