_几度枉生
码龄6年
关注
提问 私信
  • 博客:7,331
    7,331
    总访问量
  • 33
    原创
  • 1,656,906
    排名
  • 12
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
  • 加入CSDN时间: 2018-09-21
博客简介:

几度枉生_

查看详细资料
个人成就
  • 获得9次点赞
  • 内容获得0次评论
  • 获得6次收藏
创作历程
  • 5篇
    2020年
  • 19篇
    2019年
  • 9篇
    2018年
成就勋章
TA的专栏
  • c
    7篇
  • 项目
    4篇
  • c++
    13篇
  • Linux
    7篇
  • 数据结构
    2篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

共享目录服务器

共享目录服务器:     编写一个服务器,能够实现用户上传文件,并且通过浏览器浏览以及下载这些文件 为什么? 百度云盘下载和上传速度太慢,不能满足用户的需求 每次使用u盘拷贝文件太麻烦了 框架设计 ** 流程设计** 搭建一个TCP服务器,接收客户端连接请求,建立连接 基于多路转接模型进行总事件监控,若有时间到来,则将描述符抛入线程池中 线程池中的线程操作 -a. http协议格式请求数据解析       http协议请
原创
发布博客 2020.08.08 ·
276 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++智能指针,从初学到入门

1.为什么需要智能指针 下面我们先分析一下下面这段程序有没有什么问题? #include <vector> void _MergeSort(int* a, int left, int right, int* tmp){ if (left >= right) return; int mid = left + ((right - left) >> 1); // [left, mid] // [mid+1, right]
原创
发布博客 2020.07.28 ·
163 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

实现一个简单的list类

list------序列式容器-----可前后双向迭代 list可以在常数范围内任意位置进行插入和删除 底层:带头节点的双向循环链表 双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向访问 list不支持任意位置的随机访问,访问效率O(n) 比如 :要访问第n个元素,需要从已知位置(头部或尾部)进行迭代 list构造函数: list() 构造空的list list (size_type n, const value_type& val = value_type()) 构造的lis
原创
发布博客 2020.07.16 ·
230 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

实现一个简单的vector类

vector ---- 序列容器-----可变大小数组 存储:连续存储空间来存储元素 vector是使用动态分配数组来存储它的元素。就时间而言,相对较高 因此,vector占用了更多的存储空间,并且以一种有效的方式动态增长 访问:采用下标进行访问,与数组访问一样高效 与其他动态序列容器相比,vector访问元素,在末尾添加和删除元素更加高效 大小:vector会分配一些额外的空间,防止一些可能的增长 他的大小会被容器自动处理 并不是每一次元素加入到容器时,都会重新分配大小 vector构造函数: vecto
原创
发布博客 2020.07.15 ·
511 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

插入排序---直接插入排序

基本思想 将一个记录插入到已排序好的有序表中,从而得到一个新记录数增1的有序表。 即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 示例: 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以...
原创
发布博客 2020.04.01 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++中vector和list的区别以及应用

1.概念 (1)vector:连续存储的容器,动态数组,在堆上分配空间 底层实现:数组 两倍容量增加: vector增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新分配原有元素个数的两倍空间,然后将原油空间元素通过复制的方式初始化给新空间,再向新空间增加元素,最后析构释放原有空间,之前的迭代器会失效。 性能...
原创
发布博客 2019.11.25 ·
333 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

C++四种cast转换

C++中四种类型分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 1.const_cast 用于将const变量转换为非const 2.static_cast 用于各种隐式转换,比如非const转const,void*转指针等,也可以用于多态向上转换,如果向下转能成功但是不安全,结果未知 3.dynamic_cast 用于...
原创
发布博客 2019.11.19 ·
85 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

简述HTTP和HTTPS的区别

HTTP协议与HTTPS协议的区别如下: HTTP协议是以铭文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性 HTTPS在TCP三次握手阶段之后,还需要进行SSL的handshake,协议加密使用的对称加密密钥 HTTPS协议需要向服务端申请证书,浏览器端安装对应的根证书 HTTP协议端口是80,HTTPS协议端口是443 HTTPS优点 ...
原创
发布博客 2019.11.13 ·
402 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Linux----如何保证TCP的可靠性

1.序列号,确认应答,超时重传 数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明它下一次需要接收的数据序列号。如果发送方迟迟没有收到确认应答,则可能是发送的数据丢失,也有可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+ 一个偏差值。 2.窗口控制与高速重发控制/快速重传(重复确认) ...
原创
发布博客 2019.11.05 ·
499 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux下线程的创建

POSIX线程库: 与线程有关的函数构成一个完整的系列,大多数函数的名字以“pthread_”开头,而要使用这些函数需要引入头文件<pthread.h>,在编译时需追加-lpthread链接函数库 #线程创建: //功能:创建一个线程 //函数原型: int pthread_creat(pthread_t *thread, const pthread_attr_t *attr,...
原创
发布博客 2019.10.31 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux下线程基础

什么是线程? 在一个程序里的执行线路(一个进程内部的控制序列) 一切进程序列至少都有一个线程 在进程内部运行(在进程地址空间进行) 是一个轻量级进程 在进程虚拟地址空间,可以看到进程的大部分的资源,将进程资源分配给每个执行流,就形成了线程执行流 线程是cpu调度的基本单位 线程优点: 创建一个线程的代价比创建一个进程的代价小 与进程之间的切换相比,线程之间的切换需要操作系统做的工作...
原创
发布博客 2019.10.24 ·
81 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

static和const关键字的作用

const classA operator*(const classA& a2); operator*的返回结果必须是一个const对象。如果不是,这样的变态代码也不会编译出错: class A a,b,c; (a*b) = c; //对a*b的结果赋值 操作(a*b)=c显然不符合编程者的初衷,也没有任何意义
原创
发布博客 2019.09.17 ·
121 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux_网络基础(1)

网络的发展背景: 网络发展: 局域网/城域网/广域网:通过网络覆盖范围进行划分 局域网LAN:计算机数量更多了,通过交换机和路由器连到一起 广域网WAN:将远隔千里的计算机连在一起 局域网与广域网只是相对而言 互联网,因特网:上网 ...
原创
发布博客 2019.09.11 ·
100 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++__拷贝构造函数

定义 拷贝构造函数又被叫做复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。 背景 在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”): 一个对象作为函数参数,以值传递的方式传入函数体; 一个对象作为函数返回值,以值传递的方式从函数返回; 一个对象用于给另外一个对象进行初始化(常称为赋值初始化); 如果在前两种情...
原创
发布博客 2019.09.11 ·
103 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++_析构函数

1.定义 与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些清理工作。 2.特性 析构函数是特殊的成员函数 特征: 析构函数名是在类名前加上~ 无参数返回值 一个类有且只有一个析构函数。若未显示定义,系统自动生成默认析构函数 对象生命周期结束时,c++编译系统系统自动调用析构函数 #incl...
原创
发布博客 2019.09.10 ·
230 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++ 构造函数

构造函数是c++类中六个默认成员函数中的一个,主要负责完成初始化工作 1.概念: 构造函数是C++类中一个特殊的成员函数,名字与类名相同,创建类类型对象时编译器自动调用,保证每个数据成员都有一个初始值,并且在对象的生命周期内只调用一次 ????2.特性: 函数名与类名相同 无返回值 对象实例化时编译器自动调用对应的构造函数 构造函数可以重载 构造函数分为无参构造和带参构造函数(构造函数的重载) 通过...
原创
发布博客 2019.09.05 ·
157 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

c++ 类和对象

1.认识类 #c语言是面向过程的,关注的是过程,分析出求解问题的步骤,用函数逐步解决问题 #c++是基于面向对象的,关注的对象,将一件事情拆分成不同对象,通过对象之间的交互完成 2.引入类 2.1从结构体到类 结构体是c语言的一种自定义的数据类型,它把相关联的数据元素连在一起 struct Student{ void SetStudentInfo(const char* name, ...
原创
发布博客 2019.09.03 ·
775 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

函数重载,函数重写(覆盖),函数重定义(隐藏)

1.函数重载: C++中函数的一种特殊情况,在同一个作用域下,函数名相同,形参列表(参数个数,类型,顺序)不同的函数 //重载函数 int add(int left,short right){ return left + right; } //参数类型不同 int add(short left,short right){ return left + right; } //参数顺序不...
原创
发布博客 2019.09.02 ·
168 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux 常用工具

Linux常用工具 1.yum软件包管理器 2.vim文本编辑器 3.gcc编译器 4.makefile 5.gdb调试器 6.git 1.yum软件包管理器 yum list 查看可以安装的软件包 yum instal 安装软件包 yum remove 移除软件包 2.vim编辑器 对文本的操作:插入数据 保存 删除 复制 粘贴 剪切 滚动显示位置/显示位置 vim为了能...
原创
发布博客 2019.03.28 ·
133 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux–––操作系统&基本操作

Linux操作系统:外部应用+系统内核 操作系统–––>软件–––>让计算机更好用–––>合理的统筹管理计算机上的软硬件资源 基础指令: 分别包含目录相关指令,文件相关指令,时间命令,查找命令,其他命令, 使用规则:命令名[操作选项][源操作对象][目标操作对象] 目录相关命令 目录—-文件夹 Linux一切皆文件——实现接口的统一 Linux是一个多用户操作系统 ...
原创
发布博客 2019.03.28 ·
507 阅读 ·
7 点赞 ·
0 评论 ·
14 收藏
加载更多