自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (11)
  • 收藏
  • 关注

原创 epoll详解

epoll是linux特有的IO复用函数。epoll的优点:相对于select和poll来说,epoll更加灵活,没有文件描述符的限制。epoll使用一个文件描述符管理多个需要处理的文件描述符,将用户关心的文件描述符事件放到内核的一个事件表中。这样在用户空间和内核空间的数据拷贝只需一次。epoll的接口:(1)头文件  #include <sys/epoll.h>(2)创建函数  int epoll_create(int size);创建一个epoll的文件描述符,size

2021-03-19 16:50:49 648

原创 C++ 中重载、重写(覆盖)、重定义(隐藏)的区别

(1)重载重载是指在同一个作用域内,两个函数的函数名可以相同,但是参数不能完全相同可以是参数类型不同,也可以是参数个数不同,返回值不影响重载,即不同返回值的函数,其他都相同则不能重载重载的实现原理:编译器在编译函数时,会根据函数名以及参数类型和个数对函数重命名int fun(int a) { return a;}void fun(int a, int b) { // 函数重载 cout << a*b << endl;}(2)重写,也叫覆盖重写是指在继

2021-03-18 22:04:12 374

原创 gdb调试工具使用

gdb是gcc的调试工具,主要用于C和C++语言编写的程序。通过gdb调试工具,我们可以设置断点、查看变量、动态改变程序的运行环境等,可以很好的帮助我们查找程序的bug。1. 编译想要使用gdb工具,编译时必须使用**-g**,如果没有**-g**,将看不到程序的变量名、函数名信息,只能看到运行时的内存地址。编译方式如下:gcc -g test.c -o testg++ -g test.cpp -o test2. gdb常用命令命令解释gdb program gdb pro

2021-01-30 17:10:11 261

原创 TCP-网络编程-实现一个TCP Server

1. socket网络层中的IP地址可以唯一确定一台主机,而传输层的 协议+端口 可以唯一表示主机中的应用程序(进程),因此利用三元组(Ip 地址,协议,端口)就可以表示网络中的进程。进程间的通信是通过socket来完成的,socket类似于文件操作,封装了一组接口,利用这些接口完成**“打开、读/写、关闭操作”**以TCP协议通信的socket为例,下图是TCP的交互过程:具体过程如下:(1)服务器根据地址类型( ipv4, ipv6 )、 socket 类型、协议创建 socket(2)b

2021-01-29 20:47:57 5349

原创 C++ 中基类成员函数的隐藏机制

在C++类的继承中,声明在内层作用域(派生类)的函数并不会重载声明在外层作用域(基类)的函数。因此,定义在派生类中的函数也不会重载基类中的成员。如果派生类和基类中的某个成员重名,则派生类将在其作用域内隐藏该基类成员。即使派生类成员列表和基类成员列表不一致,基类成员也依然被隐藏。struct Base { int f1();};struct Child : Base { int f1(int a); // 隐藏基类的f1()};// 调用Base b; Child c;b.f1();

2021-01-13 15:45:20 1325

原创 C++类中的访问控制权限(public、protected、private)

C++中每个类控制着自己的成员初始化过程,同时还分别控制着其成员对于派生类来时是否可访问。C++中继承中的访问权限如下表所示:publicprotectedprivate公有继承(public)publicprotected不可见保护继承(protected)protectedprotected不可见私有继承(private)privateprivate不可见1. 公有继承派生类公有继承自基类,则基类中的public和protected在派生类

2021-01-13 15:16:37 1810

原创 C++ 中纯虚函数与抽象基类

1. 纯虚函数定义纯虚函数是在基类中声明的一个虚函数,它在基类中没有定义,但要求所有继承该基类的派生类都要实现该方法。声明方式:虚函数后面加上 “=0”class A{ virtual void f1() = 0; // 纯虚函数,无需定义,只需声明};2. 纯虚函数与虚函数的不同点基类中的虚函数,在派生类中不一定要重写该方法;纯虚函数要求在派生类中必须实现各自的方法纯虚函数不能在基类中定义含有纯虚函数的类为抽象类,抽象类不能创建自己的对象,只能创建它的派生类的对象3. 为什么

2021-01-13 14:35:47 973

原创 C++ 虚函数讲解

虚函数表示使用virtual关键字修饰的函数,一般使用在类中的成员函数上。那么我们为何要使用虚函数呢?针对这个问题,我们可以先跟大家介绍一下多态。多态多态是面向对象的三大特征之一,所谓多态,就是指“多种形态”,即对同一接口的不同表现形式。比如动物这个类别,可能表现为狗,也可能表现为猫等等。多态分为:静态多态和动态多态静态多态静态多态也叫早绑定,是编译时多态,在编译的后就已经确定了需要调用的函数,如果不存在,则出现编译错误。静态多态主要有两种实现方式:函数重载(普通函数的重载和成员函数重载)、函数

2021-01-12 19:12:20 665 3

原创 C++ explicit关键字用法详解

隐式类类型转换:在C++语言中,类中的构造函数如果只含有一个参数,默认情况下存在一种隐式转换,即定义了转换为此类类型的隐式转换机制。然而,这种机制并非总是合理的,甚至容易产生错误,因此,新标准增加了explicit关键字,用来限制隐式转换。下面的示例是隐式转换的机制class Test {public: Test(); // 空构造函数 Test(double a); // 含一个参数的构造函数 Test(int a, int b); // 含两个参数的构造函数 T

2021-01-08 17:25:36 4542

原创 C++智能指针的使用-unique_ptr详解

介绍:unique_ptr拥有他所指向的对象某个时刻只能有一个unique_ptr指向一个给定的对象当unique_ptr被销毁时,它所指向的对象也被销毁定义一个unique_ptr时,需要将其绑定到一个new返回的指针上unique_ptr不支持普通的拷贝和赋值操作,但可以通过release()和reset()方法将指针的所有权转移给另一个unique_ptr1. unique_ptr操作操作说明unique_ptr< T> u1创建一个空的uniqu

2021-01-06 21:06:04 5528

原创 C++智能指针的使用-shared_ptr详解

介绍:shared_ptr允许多个指针指向同一个对象,对象内存的释放交由智能指针自动释放。shared_ptr维护者一个关联计数器,称为引用计数当对一个shared_ptr进行拷贝时,引用计数会加1;当对一个shared_ptr赋予一个新值或shared_ptr被销毁(局部的智能指针变量被销毁)时,引用计数减1当引用计数为0时,会自动调用delete或自定义内存释放函数释放内存引入头文件:#include< memory>1. 默认构造方式shared_ptr< T&g

2020-12-23 19:16:27 3728

原创 C++智能指针的使用

动态内存:c++中,动态内存的管理是通过一对操作符来完成的:new- 用来为对象分配空间,并返回一个指向该对象的指针delete- 接受一个动态对象的指针,销毁该对象,并释放与之关联的内存(指针本身的地址并没有改变)动态内存管理容易出问题,需要程序员手动释放内存。为了更容易使用动态内存,c++11新标准提出了两种智能指针:shared_ptr 和 unique_ptr。智能指针的操作类似于普通指针,最主要的区别是它还负责自动释放所其指向的对象两种智能指针:shared_ptr: 允许多个指

2020-12-23 18:57:23 335

原创 c++ set和multiset的使用

c++ 中set的使用和multiset的使用

2020-12-22 11:56:13 291

原创 c++ 关联容器-map和multimap容器

1. 介绍#includemap存储的是关键字-值对(key-value);提供基于key的快速检测能力。map中key是唯一的,集合根据key值进行排序(< 的比较方式)map中存储的key值的类型,默认使用 小于的比较方式(升序);如果是保存自定义的类型,需要传入自定义的比较规则函数map是由红黑树变体的平衡二叉树的数据结构实现的可以使用 [] 操作符访问key对应的valuemap的key是const类型的,不能对其修改multimap与map的区别:map的key是唯一

2020-12-21 21:23:10 360

原创 c++ pair类型详解

1. 介绍pair是标准库类型,它定义在utility头文件中,一个pair保存两个数据成员。创建一个pair类型数据时,必须提供两个类型名,表示数据成员对应的类型。pair的数据成员是public的,两个成员分别命名为first 和second2. pair的操作操作解释pair<T1, T2> p;p是pair类型,采用默认初始化的方式,其中T1和T2表示两个数据成员的类型pair<T1, T2> p(v1, v2);p是pair类

2020-12-21 20:00:25 2873

原创 c++ 关联容器-map、set、multimap、multiset、unordered_map、unordered_set

标准库提供了8个关联容器,其中有序容器有:map、set、multimap、multiset; 无序容器有:unordered_map、unordered_set、unordered_multimap、unordered_multiset

2020-12-21 17:51:12 344

原创 C++ list容器详解

c++中的lsit容器适一个双向链表容器,插入、删除高效,但是不能随机存取元素。

2020-12-18 11:49:01 539

原创 C++11 参数绑定-bind函数用法

使用bind()对参数进行绑定,功能类似于lambda表达式

2020-12-12 16:03:58 1715

原创 C++ lambda表达式详细讲解2-隐式捕获与显式捕获

lambda表达式的隐式捕获、显式捕获、值捕获、引用捕获

2020-12-10 11:40:34 3369

原创 C++ lambda表达式详细讲解1

lambda表达式的隐式捕获与显示捕获:https://blog.csdn.net/readyone/article/details/1109487701. lambda表达式介绍一个lambda表达式表示一个可以调用的代码单元,可以将其理解为一个未命名的内联函数。lambda表示式的形式如下:  [capture list] (parameter list) -> return type {function body}  参数说明:capture list:捕获列表,由于lamb.

2020-12-08 16:12:17 468

原创 C++顺序容器-deque双端队列容器

c++中deque容器的基本操作:插入、删除、赋值、初始化、存取

2020-12-07 15:42:06 335

原创 C++顺序容器与容器适配器

顺序容器介绍,包含:vector、string、deque双端数组、list、array、forward_list;容器适配器介绍:queue、stack、priority_queue

2020-12-07 11:36:31 315

原创 C++ 顺序容器-string容器的基本操作

本文介绍了string容器的常用操作,包括初始化、字符串赋值、string拼接、string比较、string求子串、string查找与替换、string删除与插入、string字符串比较

2020-12-07 11:31:44 349

原创 C++顺序容器-vector基本操作(遍历、迭代器)

C++中vector的基本操作,empty()、size()、push_back()、bengin()、end()、cbegin()、cend()

2020-12-05 19:01:01 1921

原创 Linux文件压缩、解压缩与打包-(gzip、bzip2、compress、zip、tar)

linux系统中常用的文件压缩和文件解压缩命令主要有gzip、bzip2、compress和zip命令,常用的是gzip和bzip2文件压缩命令。常用的文件打包命令是:tar命令

2020-12-03 22:00:26 833

原创 Linux磁盘分区(fdisk、gdisk)、格式化(mkfs)、检验与磁盘挂载(mount)

1. 查看磁盘分区状态主要的磁盘分区格式有MBR和GPT磁盘(disk)和分区(partition)是两回事只能对磁盘分区,不能对分区进行分区命令命令说明lsblk [-dfimpt] [device]list block device 列出所有存储装置lsblk列出本系统下的所有磁盘与磁盘内的分区信息lsblk -ip /dev/vda包含完整路径blkid列出装置的UUIDparted /dev/vda print列出磁盘的具体信息

2020-12-02 22:00:28 2075

原创 Linux文件系统简单操作-查看磁盘容量(df、du命令)、软链接和硬链接

1、查看磁盘与目录的容量df命令命令说明df列出所有文件系统,查看大小df -h以人们便于阅读的方式显示,大小显示为G,M,Kdf -h /etc将 /etc 底下的可用的磁盘容量以易读的容量格式显示df -ih将目前各个 部分当中可用的 inode 数量列出**du命令**命令说明du [-ahskm] 文件或目录名称列出目录下所有文件的大小du统计所有文件的总容量,并显示各个目录容量,不显示文件容量du -

2020-12-02 17:01:14 1118

原创 Linux磁盘与Ext文件系统管理-inode、block、super block、block bitmap

Linux磁盘与文件系统管理1 文件系统1.1 Linux 的 EXT2 文件系统(inode)(1)结构(2)说明1 文件系统1.1 Linux 的 EXT2 文件系统(inode)(1)结构(2)说明data block (资料区块)用来存放文件内容在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及4K 三种block 都有编号,以方便 inode 的记录每个 block 内最多只能够放置一个文件的数据如果文件大于 block 的大小,则一个文件会占用多个

2020-12-02 11:22:58 832

原创 Linux-用户管理命令-创建用户(useradd)、删除用户(userdel)、usermod

这里写目录标题用户管理、多用户管理添加用户用户切换用户删除用户组管理Linux中ID查看用户信息修改用户信息(usermod)(某些需要重新登录生效)用户管理、多用户管理添加用户符号作用sudo useradd username添加用户名sudo useradd -m username添加用户名,并为其创建home目录sudo useradd -g usergroup username添加用户名到某个用户组sudo passwd username为用户设置

2020-12-01 22:04:48 843

原创 Linux 文件命令-文件创建(mkdir)、文件权限(chmod)、查找文件(find、grep)、查看内容(cat、more)

文件操作目录文件相关文件相关的命令查看可执行未见路径的变量查看文件内容命令搜索文件内容命令搜索文件命令写入文件命令(可以用在写入日志上)管道(把一个命令的输出通过管道作为另一个命令的输入)软连接其他命令文件相关文件相关的命令命令作用touch a.txt创建文化部mkdir创建文件夹mkdir -p test/test1自动创建多级目录mkdir -m 711 test2创建目录并分配权限rm移除文件rm -d dir移除空文件夹rm

2020-12-01 21:58:36 1040

开发帮助文档

该资源是开发所需的各种开发文档,包括Android、CSS、Apache、DHTML、Java、JQuery、JEasyUI的开发文档,有些开发文档有两个版本,在此提供给大家下载使用。

2017-03-22

W3School离线手册(新版)

W3School离线手册,chm文件,可直接打开查看

2017-01-05

Myeclipse背景插件

1.该资源是Myeclipse黑色背景插件,该插件舒适护眼。 2.安装方式:打开Myeclipse,选择file->Import->General->Preferences,选择该epf文件即可

2017-01-04

Android开发界面的滑动

1.Android开发 2.使用Fragment达到界面切换效果 3.汽车销售系统

2016-08-09

Android开发连连看游戏

连连看游戏的开发

2016-08-09

Android开发滑动界面效果

界面滑动效果

2016-08-09

Java开发的交通管理系统

交通管理系统

2016-08-09

Java Web开发学生管理系统

JavaWeb开发的一个学生管理系统软件

2016-08-09

二维码开发JAR包

Java开发二维码所使用的JAR包

2016-08-09

Java生成二维码

利用Java语言开发的二维码生成小程序

2016-08-09

java图形绘制

java图形绘制源码,包含所有包类,魔方旋转

2015-11-19

空空如也

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

TA关注的人

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