自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 问答 (7)
  • 收藏
  • 关注

原创 网络协议(三)--HTTP超文本传输协议(一)

学习过传输层协议,并且使用网络层协议进行 socket 网络编程的练习。HTTP协议是常用的应用层协议,主要约定应用之间双方传送数据的格式和解析方式。序列化反序列化。

2018-06-30 21:59:15 494

原创 HTTP状态码表分类及总结--常用系列

状态码分类表: 状态码 类别 原因短语 1XX Informational(信息性状态码) 接收到请求正在处理 2XX Success(成功状态吗) 请求正常处理完毕 3XX Redirection(重定向状态码) 需要进行附加操作以完成请求 4XX Client Error(客户端状态错误码) 服务器无法处理请...

2018-06-30 21:59:06 382

原创 for test

测试post请求

2018-06-30 17:29:22 304

原创 简单TCP网络程序---多线程版本

在之前写的TCP网络程序中,我们用多进程的方式实现了一个服务器为多个用户提供服务。今天来实现一个服务器可以为多个用户提供服务。

2018-06-27 21:59:26 412

原创 简单TCP网络程序---多进程版本

在之前写的TCP网络程序中,我们只是简单实现了的客户端和服务器进行通信 只能处理一个客户的请求 今天来实现一个服务器可以为多个用户提供服务。...

2018-06-27 21:59:08 273

原创 简单TCP网络程序---listen函数的第二个参数、accept()函数的返回值的意义

在上一篇发布的是简单UDP网络程序 链接://TODO

2018-06-26 21:59:23 3161

原创 C++中异常处理的使用

对错误的处理最普遍的是采用返回错误码的形式,但是由于对错误信息的报告不是很明显,或者是只能在本层进行处理这个错误。iclude include include using namespace std;int main(){ FILE * fd=fopen(“test.txt”,”r”); if(fd==NULL) { cou...

2018-06-26 21:59:03 798

原创 简单UDP网络程序 --网络编程套接字

在之前几篇中,都是关于系统编程的笔记整理,今天开始整理网络编程部分 预备知识:

2018-06-25 21:59:07 571

原创 inet_aton函数、inet_ptop函数、inet_addr函数、inet_ntoa函数

上一篇讲了一个简单的网络程序,其中用到了几个地址转换函数,今天这一篇来说说这几个函数的一些用法, #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h&gt

2018-06-25 21:58:21 1320

原创 STL六大组建-----初始

在前面两篇中介绍了线程的基本概念和线程控制 今天来看一下线程之间的同步和互斥关系互斥关系线程之间的互斥关系 对于一块临界资源,同一时间只能有一个线程进行访问,对于之前学习的进程间通信中讲的管道和消息队列,均内置的互斥同步机制。大部分情况下,线程使用的函数都是全局的,如果这样的话,就可能发生当一个线程正在访问一资源时,另外一个线程也来访问该资源,此时就可能发生逻辑错误。经典场...

2018-06-21 21:59:10 550

原创 线程的基本概念:同步与互斥关系、什么是死锁

在前面两篇中介绍了线程的基本概念和线程控制 今天来看一下线程之间的同步和互斥关系互斥关系线程之间的互斥关系 对于一块临界资源,同一时间只能有一个线程进行访问,对于之前学习的进程间通信中讲的管道和消息队列,均内置的互斥同步机制。大部分情况下,线程使用的函数都是全局的,如果这样的话,就可能发生当一个线程正在访问一资源时,另外一个线程也来访问该资源,此时就可能发生逻辑错误。经典场...

2018-06-21 08:04:34 630

原创 迭代器失效问题

在前面我们实现了vector和list 不管是库里面的使用 还是我们自己模拟实现的版本 今天来看一个关于容器,容易出现的问题,迭代器失效问题 如果我们有如下要求,在一个list中,我们要求只将节点内容为偶数的节点删除掉。 我们就实现如下代码:void test_iterator_invalid(){ list<int> L; L.push_back(1);...

2018-06-20 21:59:06 1311 1

原创 单例模式--含义是某一个类,在一个进程中只有唯一的一个对象

单例模式表示的含义是在某一个类,在一个进程中只有唯一的一个对象 并且在语法角度上进行制约 单例模式是一种设计模式,设计模式可以理解为经典问题场景下的经典解决方案。(方案一)简易版本 对象定义后数据立即加载到内存 (饿汉模式)(方案二)对象定义出来 先不着急加载到内存,等到第一次使用的时候,再将数据加载到内存 (懒汉模式)饿汉模式#include <st

2018-06-19 21:59:32 2666 5

原创 线程的基本概念(二)

上一篇讲了如何组织线程线程控制线程的创建#include<pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);参数:第一个...

2018-06-18 21:59:51 630 1

原创 list之进阶篇

自己模拟实现的listmy_list.cpp#include <stdio.h>#include <assert.h>#include <iostream>using namespace std;//模拟实现list(双向带头节点链表)//定义一个List节点template<class T>struct

2018-06-18 21:59:19 564

原创 模拟实现vector之进阶篇

在我们了使用了库里面的vector后,我们来模拟实现MyVector 之前有关库里面的vector是如何使用的:

2018-06-18 21:59:11 676 1

原创 为什么C++中的模板不支持分离编译

C++中的模板不支持分离编译按照我们之前的习惯,写出的代码是这样的// Template.h#pragma once#include <stdio.h>#include <iostream>using namespace std;int Add(int a,int b);//对普通函数的声明template<class T>T S...

2018-06-18 13:02:28 619

原创 模拟实现vector和list 并用list适配出栈,用vector适配出队列

您要的代码已经备好,请准备查收,——————-MyVector的实现#pragma once#include <stdio.h>#include <string>#include <string.h>#include <stdlib.h>#include <assert.h&

2018-06-18 12:41:33 395 1

原创 读者写者之模型--同步问题

再上一篇中,介绍了生产者消费者模型[https://blog.csdn.net/Misszhoudandan/article/details/80715426] 今天介绍读者写者模型(读多写少的场景)场景描述:写者负责再资源池中写读者负责从资源池中读数据同一时间内不允许多个写者进行写,但允许多个读者进行读当写者和读者都准备占用资源池时,写者优先占用资源池(此问题描述的时写者优...

2018-06-17 21:59:50 558

原创 网络基础(1)TCP/IP协议 网络传输过程中的封装和分用

初识协议: 协议理解为一种约定 在计算机之间进行数据传输时,对于不同的数据格式,对应不同的传输和接收方式,这就需要约定数据格式。网络协议分层:TCP/IP五层协议模型: 下面来解释各层的含义即功能: 结合网上淘宝购物来举例理解:应用层:负责应用进程之间沟通。我们所说的主机之间进行通信,归根结底是两个主机上的两个应用进程之间进行沟通,网络编程也是针对应用层,主要协议...

2018-06-17 21:59:03 3219

原创 线程的基本概念(一)

一、线程基本概念线程是一个程序里的一个执行路线。 进程是一组线程 从资源分配角度: 1.进程(线程组)是资源管理分配的最小单位 2.线程(轻量级进程)是调度或执行的最小单位 之前介绍的都是单线程进程,即一个进程中只有一个线程, 一个线程拥有一个pcb,那么一个进程就拥有一组pcb 线程之间数据的共享和私有关系;共享: 1.同一块地址空间,所以代码、全局数据、堆栈...

2018-06-16 22:00:17 444

原创 C++容器------vector 的扩容函数使用篇

C++SLTL中六大组建中的容器是很重要的一部分的 而容器中的vector也是工作中经常用的 先来模仿库里面的vector实现一个自己的Vector:template <class T>class Vector{public: Vector():_start(NULL),_finish(NULL),_endOfstorage(NULL) {} ~V...

2018-06-16 21:59:57 5369 2

原创 经典生产者消费者模型

在对linux 下的进程和线程的学习后,总结一下生产者消费者模型场景描述:生产者负责在生产池中进行生产消费者负责消费生产池中的生产物同一时刻生产池中只能有一个生产者/消费者生产池中没有生产物时,消费者阻塞,直到生产者进行生产之后(生产池不未空),系统再唤醒消费者进行消费生产池为满时,生产者阻塞,直到消费者进行消费之后(生产池未满),系统再唤醒生产者进行生产建立模型:...

2018-06-16 21:59:21 511

原创 可重入函数

在上一篇介绍了信号的处理过程,那么信号处理过程会从用户态到内核态切换,并且信号处理函数与主控制流是不同的执行流。一、不可重入函数  那么就会带来一些问题,例如当你在进行头插node1(p->next=head;head=p;),只执行了第一句(p->next=head;)收到一个信号,并且在这个信号的处理函数中又再次调用头插node2。node2插入成功时,返回主空控制流,接着...

2018-06-08 22:02:13 245

原创 Linux下信号的基本概念

之前我们按下Ctrl+C会直接终止一个进程,其实是个当前的前台进程发送了一个SIGINT信号一、信号的基本概念信号的几种产生方式:1.键盘键入,用户在终端按下某些键时,终端程序会自动发送信号给前台进程。例如Ctrl+C产生SIGINT信号,Ctrl+\产生SIGQUIT信号,Ctrl+Z产生SIGTSTP 信号(将该进程放在后台执行)2.硬件异常,程序执行过程中触发某些异常,由硬件...

2018-06-08 22:01:44 386

原创 智能指针--SharePtr ScopedPtr

 在上一篇中介绍了auto_ptr的实现,我们说那是一种不太好的实现方法,其实主要就是在解决拷贝构造所带来的问题,既然这样的话,有人就有了一种方法,既然拷贝会出现各种问题,那么我禁止拷贝!scoped_ptr的实现就是一种防拷贝的机制。scoped(作用域的意思)1.只声明不定义2.声明为私有的,让在类外也没有办法定义下面是模拟库里的scoped_ptr的实现如下代码:...

2018-06-06 21:53:45 293

原创 智能指针--标准库里的实现 scoped_ptr,share_ptr

在之前介绍了我们自己实现的ScopPtr和SharePtr,今天来看一下库里面的智能指针的实现由于历史原因,C++98中只实现了auto_ptrm而且还不好用,所以就有大佬们自己实现了share_ptr   scoped_ptr 包含于第三方boost库中,而且还被大家广泛使用。所以在新的标准C++11中引用了boost库中智能指针的用法,只是将其稍作修改将scoped_ptr重新定义为uniqu...

2018-06-06 21:53:32 432

原创 智能指针--AutoPtr

 在上一篇中简单介绍了C++中的异常机制,我们了解到异常会导致执行流的乱跳现象,这样的话就会引起一些问题,如下:#include <iostream>#include <stdio.h>#include <vector>using namespace std;void func(){ int *p1=new int[10]; ...

2018-06-06 21:53:14 252

模拟实现 LinkedList 测试类

模拟实现 LinkedList 测试类

2023-06-10

模拟实现 LinkedList 测试类

模拟实现 LinkedList 测试类

2023-06-10

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

TA关注的人

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