自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux--深入解析HTTP协议

什么是HTTP协议,HTTP协议有什么作用?首先HTTP协议属于应用层协议,应用层的协议就是我们 程序员自己定的,但是,如果每次都要我们程序员自己定协议,又麻烦而且容易出错(自己什么水平自己应该有点数( ̄_ ̄|||)),最重要的是有大佬已经定义了一些现成的(HTTP,DNS等),所以大多时候我们都是直接拿来用,而应用层的作用就是双方达成某种约定,一端按照约定的协议发送数据,另一端按照约定来解...

2018-06-27 16:41:41 1575

原创 【c++学习笔记】深入解析浅拷贝与深拷贝

什么是浅拷贝也称位拷贝,编译器只是将对象中的值拷贝过来,如果对象中管理资源,最后就会导致多个对象共享同一份资源,当一个对象销毁时就会将该资源释放掉,而此时另一些对象不知道该资源已经被释放,以为还有效,所以当继续对资源进行操作时,就会发生发生了访问违规。先看下面的代码有问题吗...

2018-06-25 18:07:20 150

原创 【c++学习笔记】宏函数与内联函数的区别

什么是宏?宏定义又称为宏代换、宏替换,简称“宏”。是C提供的三种预处理功能的其中一种。宏定义分类1. 不带参数的宏定义:格式: #define 标识符 字符串其中的标识符就是所谓的符号常量,也称为“宏名”。预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。 例:   #define PI 3.1415926   把程序中出现的PI全部换成3.14159262...

2018-06-24 17:58:01 234

原创 【c++学习笔记】深度解析new/delete以及new[]/delete[]

在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…new 和 delet...

2018-06-23 16:45:58 338 2

原创 【c++学习笔记】c语言中的const和c++中const的区别

区别一:C语言的const是定义了一个const变量,该变量只具备读的功能,而不具备写的功能。 C++的const是定义了一个常量。int main(){ const int a = 10; int arr[a];//在c++中,因为a已经是常量,但在c中仍是变量,会报错}再看下面的代码#include <stdio.h>//c...

2018-06-23 14:35:02 225

原创 【c++学习笔记】类的六个默认的成员函数

一:构造函数1.基本概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内只调用一次,保证每个数据成员都有一个合适的初始值。class Date{public: Date(int year, int month, int day) :_year(year)//初始化列表,可以不用 , ...

2018-06-20 18:40:54 202

原创 使用gdb调试多进程多线程代码

gdb简介GDB是GUN开源组织发布的一个强大的UNIX下的程序调试工具。或许,平时大家更加习惯图形界面的调试,比如VS上的IDE调试;但是如果我们在UNIX或Linux下做软件,我们呢就更加需要熟练GDB这个调试工具。GDB调试使用的是DEBUG版本的,而使用gcc或者g++默认生成的可执行文件为release版本,所以在生成可执行文件时,我们需要在命令的尾部加上 -g,这样就可以生成的...

2018-06-19 18:31:55 345

原创 Linux--多进程与多线程版TCP服务器

一:多进程版#include <string.h>#include <unistd.h>#include <netinet/in.h>#include <arpa/inet.h>#include

2018-06-19 09:50:45 233

原创 【c++学习笔记】this指针

一:this指针是什么?在上一篇博客当中介绍了c++中类的概念,类中可以定义成员函数,但是在类的对象模型中,并不是按照我们想的那样,类的实例对象中包含成员变量和成员函数,或者指向成员函数的指针,而是只保存非静态成员变量,那么不妨想想下面的代码:#include <iostream>using namespace std;class Date{public: ...

2018-06-15 16:32:16 142

转载 带你玩转Visual Studio——调用约定__cdecl、__stdcall和__fastcall

有一定C++开发经验的人一定对”__cdecl、__stdcall、__fastcall”肯定不陌生吧!但你真正理解了吗?是的,我曾在这采了无数个坑,栽了无数个跟头,终于忍无可忍要把它总结一下(虽然我已经有能力解决大部分这种问题了)!什么是调用约定 函数的调用约定,顾名思义就是对函数调用的一个约束和规定...

2018-06-15 15:39:39 213

原创 简单版UDP服务器和TCP服务器

UDP服务器代码如下:#include <arpa/inet.h> #include <netine...

2018-06-14 23:04:37 827 1

原创 Linux--网络编程套接字

一:IP地址1.基本概念:IP地址是在IP协议中,用来标识网络中不同主机的地址IP协议有两个版本,IPv4和IPv6,对于IPv4,IP地址是一个4字节,32位的整数(能表示2^32个主机);对于IPv6,IP地址是一个16字节,128位的整数。像192.168.0.1这种IP地址的表示方法,叫做点分十进制字符串风格。注: IP地址可以标识网络上所有主机中的唯一一个主机。 ...

2018-06-14 18:26:19 189

原创 Linux--网络基础(一)

一:计算机网络背景1.局域网在局域网内,所有的主机之间交互的信息都是可以被监听的。(网卡可以被设置为混杂模式,这时它可以“抓到”局域网所有的数据)在局域网内,两台主机是可以直接通信的(网卡序列号MAC地址,全球唯一)局域网中,两台或两台以上的主机同时向网线发送数据,就会发生数据干扰的问题,把这种问题叫局域网内的数据发生了碰撞,该网线叫局域网的碰撞域。交换机:交换机是工作在数据链...

2018-06-13 12:51:36 180

原创 【c++学习笔记】类

类一.基本概念在c语言中,结构体就是将相同或不同属性的类型数据放在一起,而里面并不能定义函数,但是在c++当中,结构体里面不仅可以定义不同类型的数据,还可以定义用来操作这些数据的方法(函数),在c++当中更喜欢用class来代替struct定义结构体。 **注:**class定义的结构体,成员默认是private;struct定义的结构体,成员默认是publicstruct ...

2018-06-13 09:48:40 208

原创 【c++学习笔记】命名空间

命名空间1.基本概念:在c++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进程本地化,以避免命名冲突或名字污染,namespace关键字就是为了解决这种问题。一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。没有名称的命名空间,他的成员只能在声明该命名空间的文件中可以...

2018-06-12 16:54:44 151

原创 【c++学习笔记】引用

引用1.基本概念引用不是定义一个变量,而是给已经存在的变量取了一个别名(就像我的名字叫J,别人给我起了一个外号“二狗”,当别人叫“J”或者“二狗”我都知道是在叫我),编译器不会为引用变量开辟内存空间他和他引用的变量共用一块内存空间。类型& 引用变量名(对象名) = 引用实体; 定义引用int main(){ int a = 10; int& ...

2018-06-12 16:10:09 167

原创 【c++学习笔记】缺省参数与函数重载

缺省参数1.c语言与c++在对函数参数检测时的区别首先可以创建一个c工程,测试以下代码:void func(){ return;}int main(){ func(); func(10); func(10, 20); func('c');}可以发现在c语言中,函数没有指定参数列表时,默认可以接收任意多个参数,但在c++当...

2018-06-12 12:11:09 182

原创 【c++学习笔记】输入输出

输入输出在c++当中,也可以使用c语言中的输入输出接口,向printf、scanf等,但更多的是使用c++专有的接口。#include <iostream> using namespace std; int main(){ int a = 10; char b = 'c'; char arr[] = "abcdef"; cout &...

2018-06-12 11:35:02 113

原创 Linux--进程间关系与守护进程

一:进程间关系:1.进程组:组就是一个或多个进程的集合,进程组中会有一个组长进程,每个进程组有唯一的进程组ID,进程组ID与组长进程ID相同。 注:某个进程组只要有一个进程存在,该进程组就存在,与其组长进程是否存在没有关系。 这里的PGID就是进程组ID, ./a.out &可以将其放在后台运行2.作业作业也是一个或者多个进程的集合,但是它与进程组的概念...

2018-06-12 10:28:35 154

原创 Linux--POSIX信号量与读写锁

一:POSIX信号量:1.基本概念POSIX信号量和SystemV信号量作用相同,都是来实现同步或者互斥机制,本质也是计数器,通常用它来表示他所保护的临界资源的资源数目。2.相关接口初始化信号量:int sem_init(sem_t *sem, int pshared, unsigned int value);//第二个参数0表示线程间共享,非零表示进程间共享。...

2018-06-11 18:38:53 847

原创 Linux--线程互斥量与条件变量

一:.互斥量(mutex)1.基本概念在线程之间,因为线程组内所有线程共享进程的地址空间,所以对于每个线程来说,它的绝大多数资源都是与其他线程共享的 ,所以在多线程程序中,极有可能因为多个线程同时访问临界资源,而造成数据的“二义”性(不一致)问题,所以这里就引入了同步与互斥机制用来保护临界资源。 造成这种原因可能因为以下几点:if语句半段条件为真后,代码可能并发切换...

2018-06-10 21:01:12 228

原创 Linux--线程

一:线程1.线程的相关概念:线程是比进程粒度更细的执行流 **理解:**a.每一个线程的数据代码都是目标进程的子集 b.线程于线程数据和代码大部分都共享 c.线程的创建和释放成本非常低 d.线程的调度成本很低 (2)线程是在进程内部运行的执行流 (3)Linux下没有真正的线程,是用进程模拟线程(操作系统没有专门为线程创建对应的结构体) (4)Linux下的线程叫轻量级进程...

2018-06-09 20:56:11 136

转载 Linux中结构体task_struct字段分析

task_struct:是Linux内核的一种数据结构。它放在RAM(运行内存)里并包含着进程的信息。每个进程都把自己的信息放在task_struct数据结构里。task_struct字段分析如下:task_struct  //进程描述符Struct  task_struct{1、支持对称多处理...

2018-06-08 17:41:59 155

原创 数据结构--排序

排序相关概念1.排序算法的稳定性 如果在元素序列中有两个元素R[i]和R[j],它们的排序码K[i] == k[j],且在排序之前,元素R[i]在R[j]的前面。如果在排序之后,元素R[i]仍在R[j]之前,则称这个排序算法是稳定的,否则称这个排序算法是不稳定的。 2.内部排序和外部排序 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过...

2018-06-04 21:21:03 340

空空如也

空空如也

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

TA关注的人

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