自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sock的博客

曾经以为走不出去的日子再也回不去了

  • 博客(92)
  • 收藏
  • 关注

转载 Linux下的输入缓冲区问题

Linux下清空缓冲区的方法 C标准规定fflush()函数是用来刷新输出(stdout)缓存的。对于输入(stdin),它是没有定义的。但是有些编译器也定义了fflush( stdin )的实现,比如微软的VC。其它编译器是否也定义了fflush( stdin )的实现应当查找它的手册。 GCC编译器没有定义它的实现,所以不能使用fflush(stdin)来刷新输入缓存。对于...

2019-08-09 01:44:40 912 1

转载 yum:The requested URL returned error: 404

在使用yum的时候总是提示The requested URL returned error: 404这个错误://使用的是163的源 http://mirrors.163.com/.help/CentOS6-Base-163.repo[base]name=CentOS-$releasever - Base - 163.combaseurl=http://mirrors.163.com...

2019-08-06 02:38:15 2086

转载 常见的网络配置[转载]

https://segmentfault.com/a/1190000011954814

2019-07-31 14:10:56 371

原创 C++的类型转换

C语言中的类型转换#include <stdio.h>#include <Windows.h>int main() { int i = 1; // 隐式类型转换 double d = i; printf("%d\t%.2f\n", i, d); int* p = &i; // 强制类型转换 int address = (int)p; prin...

2019-07-29 20:44:07 269

原创 关联式容器--树形结构(map&set)

关联式容器什么是关联式容器:关联式容器也是用来存储数据的,与序列式容器(vector, list, deque…)不同的是,其里面存储的是<key, value>结构的键值对,在 数据检索时比序列式容器效率更高键值对:用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值, value表示与key对应的信息, 这类似于字典中的一一对...

2019-07-29 20:37:53 857

原创 C++智能指针

智能指针智能指针主要是为了解决内存泄漏的问题, 这与异常安全是密不可分的, 如果在malloc和free之间或new和delete之间存在抛出异常的话, 还是会存在内存泄漏的问题.智能指针的原理RAII(Resource Acquisition Is Initialization): 资源获取即初始化这是一种利用对象声明周期来控制程序资源的技术.在对象构造时获取资源, 在这个对象的整个声...

2019-07-06 20:00:12 265

原创 C++异常

C语言异常处理C语言中最常用的处理简单错误的方式就是通过 assert , 错误码 以及 perror等库函数来进行错误的获取和处理. 但是这存在一些缺陷, 比如说 assert 直接终止程序太粗暴, 错误码在返回值为整型家族的函数中会难以判断.setjmp.h在C语言的函数库中存在 setjmp 和 longjmp 的组合, 来实现简单的异常捕获和处理. 这在较大型的C语言项目中可能会用到...

2019-07-06 19:59:49 258

原创 C++继承

继承什么是继承:继承可以认为是类层面上的重载. 在保证原有类型的基础上进行扩展, 实现类的代码复用. 继承展现了面向对象程序设计的层次结构.基类和派生类对象之间的赋值:派生类可以赋值给基类的对象/指针/引用(切片), 但是基类不能赋值给派生类.隐藏(重定义):基类和派生类有独立的作用域如果子类中有和父类同名的函数, 子类成员将屏蔽父类的同名成员的直接访问形成对父类同名成员的隐藏(重定...

2019-07-06 19:58:58 187

原创 C++模板的认识

什么是模板模板是泛型编程的基础, 是代码复用的模具.模板的实现原理编译器根据传入的实参类型推演生成对应类型的函数和类, 也就是说在传入实参类型之前, 模板是未实例化的, 模板只有实例化之后才会是真正的函数或类, 这也是模板不能很好的支持分离编译的原因.模板函数模板:#include <iostream> ...

2019-07-06 19:58:01 300

原创 TCP模拟实现服务端与客户端的简单交互---c++

TCP网络通信流程:1.创建套接字(socket)2.为套接字绑定地址信息(bind)3.服务端开始监听(listen)4.客户端请求连接(connect)5.服务端获取连接请求(accept)6.发送数据(send)7.接收数据(recv)8.关闭套接字(close)头文件:#include <iostream> ...

2019-06-01 10:06:21 1157

原创 c++类和对象基础完结篇

再谈构造函数之前对构造函数简单的定义就是实现成员变量的初始化功能, 起始这并不准确:在引入初始化列表之前, 我们只是对成员变量进行了声明和赋值而已, 并没有进行真正的初始化. 因为初始化只能进行一次, 而赋值可以进行多次.初始化列表:初始化列表做的事就是, 实现真正的成员变量的初始化:初始化列表存在的意义:初始化列表存在的意义就是有些地方必须要用初始化列表来解决.引用成员变量: 引用...

2019-05-26 23:15:06 215

原创 UDP模拟实现服务器与客户机的简单交互---c++

五步1.创建套接字 — socket2.为套接字绑定地址信息 — bind3.接收数据 — recvfrom4.发送数据 — sendto5.关闭套接字 — close头文件:#pragma once ...

2019-05-22 10:50:15 757

原创 网络基础(一)

网络发展:独立模式->网络互联->局域网LAN->广域网LAN独立模式:计算机之间相互独立, 各司其职网络互连:多台计算机连接到一台服务器上, 完成数据共享, 业务自由切换.局域网LAN:通过交换机和路由器连接较多计算机广域网LAN:较大的局域网LAN, 将更多的和更远的计算机连接起来.网络协议:网络协议:是网络通讯过程中的一种数据格式的约定.通信协议标准:是网络...

2019-05-18 18:32:30 422

原创 Linux软件包管理(rpm, yum, 源码包)

软件包常见的三种安装包类型:三种安装包特点:源码包: 有开放的源代码, 手动编译安装, 速度慢脚本安装包: 相对于源码包而言, 不需要手动编译安装, 实现自动安装, 方便.二进制包: 没有开放的源代码, 但是没有编译过程, 安装速度快.RPMRPM(Red hat package management):对rpm包进行管理:安装rpm软件包:#rpm -ivh .rpm包全名...

2019-05-16 16:19:56 396

原创 c++类的默认成员函数

6个默认成员函数这些默认的类成员函数, 在类创建的时候, 编译器会自动调用, 但是自动调用并不意味着他们能完成用户所期待的所有任务, 像构造函数, 析构函数, 拷贝构造函数, 赋值重载会在某些情况下需要用户根据程序的需要自定义实现.构造函数构造函数的主要工作是在对象创建的时候就完成初始化工作.特性函数名与类名相同。无返回值。对象实例化时编译器自动调用对应的构造函数。构造函数可以...

2019-05-14 21:23:08 4958 5

原创 c++类和对象的初识

面向对象面向对象是程序设计的思想, 或者说是软件开发的方法.在面向对象语言中, 引入了类和对象的概念. 所谓类就是对同种个体的抽象集合, 而对象就是类中的一个实体; 所以类和对象有着 “类是对象的抽象, 对象是类的实例” 的关系. 这其实是将现实世界中的关系和特性引入到了计算机世界中, 这让我们在程序设计时有了更合理的分析和管理思想, 将程序中的一些具有同种属性和行为的实体集合抽象成一个类, ...

2019-05-13 12:25:28 345

原创 c++中auto

auto在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。语法糖:简单的识别变量类型这个还不能体现出 auto 的真正意义. 但是当类型名过长时, auto 的作用就发挥出来...

2019-05-11 12:00:51 27640 1

原创 c++内联函数

内联函数:内联函数简单来说就是实现在编译时将函数的代码副本放在每个调用函数的地方.内联函数存在的意义就是解决函数调用的效率问题. 避免了函数栈的开销, 以空间换时间. 但是也会存在代码膨胀的问题, 因此编译器会根据函数代码的长度来决定是否内联, 在类中定义的函数多于 1 行, 则忽略 inline 关键字; 同时在外部定义的内联函数超过 10 行左右也会被忽略 inline. 这种校正规则一定...

2019-05-11 11:32:26 612

原创 c++的初识

命名空间:命名空间简单来讲, 就是解决命名冲突问题, 它可以作为附加信息来区分不同库中相同名称的类, 函数, 变量等. 本质上, 命名空间其实就是定义了一个范围.命名空间的使用方式:1.全部展开:using namespace std;最方便,但是容易出现与库函数产生命名冲突的危险2.不展开:std::cout << "Hello word" << std:...

2019-05-10 23:40:13 186

原创 基础IO---fread和fwrite的使用

什么是 fread 和 fwritesize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);ptr: 一个指向内存块(大小至少为size * nmemb)的指针size: 读取元素的大小nmemb: 读取元素的个数stream: 字符流指针size_t fwrite(const void *ptr, size_...

2019-04-25 18:23:50 950

转载 关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案

**原文:**https://blog.youkuaiyun.com/u011596455/article/details/60322568在Ubuntu中,有时候运用sudo apt-get install 安装软件时,会出现一下的情况E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailabl...

2019-04-24 10:40:53 219

原创 Linux进程地址空间(包括内核源码的简述)

什么是进程地址空间简单来讲, 进程的地址空间是进程可用于寻址内存的地址集合, 包括进程的物理地址空间和虚拟地址空间.操作系统有虚拟内存和物理内存的概念. 但是在很久之前, 操作系统只有物理内存的概念, 程序寻址都是用的物理地址, 寻址空间的大小取决于 cpu 地址线条数, 在 32 位的操作系统上, 寻址的范围是固定的(最多 4G). 也就是说, 每次运行一个程序, 都会给进程分配 4G 的...

2019-04-22 09:33:55 512

原创 进程替换(简单的函数使用)

什么是进程替换进程替换就是用新进程来替换当前进程. 在 bash 中, 进程替换其实就是命令替换和管道的组合.替换原理:我们知道子进程存在的意义不仅仅是它能帮助父进程进行压力分摊, 最主要的功能其实是让子进程去完成其他的工作, 也就是进程替换. 子进程通过调用 exec 系列函数时, 当前进程的虚拟地址空间上的各个数据段被磁盘上指定的新程序给替换掉, 本质上并没有创建新的进程, 进程的 ID...

2019-04-19 10:19:17 915

原创 进程等待(原理+接口调用)及进程状态

什么是进程等待简单来说, 进程等待是进程的一种状态, 是父进程等待子进程退出时的一个过程为什么要进程等待简单来讲, 因为要避免产生僵尸进程.进程在退出的时候, 会关闭所有的文件描述符, 释放在用户空间中分配的内存, 但是 PCB 仍会暂时保留, 里面还存放着进程的退出状态以及统计信息等.当一个进程创建一个子进程时, 父进程往往需要读取子进程的运行结果, 如果子进程先于父进程退出, 父进程...

2019-04-18 21:37:16 2732

转载 Ptrace 详解

原文链接: https://www.cnblogs.com/tangr206/articles/3094358.html引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪...

2019-04-18 18:32:16 16958

原创 我对进程的理解

最近在学习与进程相关的知识, 最开始对进程的理解还是不够透彻和连贯的, 为此我查询了部分的相关资料, 对进程有了更进一步的了解进程概念1.什么是进程2.进程结构3.进程特征4.进程状态5.引入进程的意义什么是进程狭义定义: 进程就是一段程序的执行过程(或者我们可以简单的理解为进行中的程序)广义定义: 进程是一个具有一定独立性功能的程序关于某个数据集合的一次运行活动. 它是操作系...

2019-04-08 20:24:15 1325

转载 #pragma once 和 #ifndef 的总结

在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性,通常有两种方式——第一种是#ifndef指令防止代码块重复引用,比如说#ifndef _CODE_BLOCK#define _CODE_BLOCK // code #endif// _CODE_BLOCK第二种就是#pragma once指令,在想要保护的文件开头写入#pragma once...

2019-03-18 17:29:17 247

转载 C语言文件操作总结

C语言文件操作一、标准文件的读写1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名...

2019-03-13 12:36:51 1023

原创 用C语言实现一个通讯录的基本功能(有文件操作版)

无文件操作版https://blog.youkuaiyun.com/qq_42957923/article/details/88110696结合无文件操作版的通讯录, 我给代码加了两段代码, 分别是加载文件函数 LoadFile 和保存文件函数 SaveFile, 具体操作如下:加上文件操作// 加载文件 void LoadFile(member* m) { ...

2019-03-09 22:29:35 616

转载 关于malloc, calloc, realloc等内存申请相关的函数

(1)C语言跟内存分配方式&lt;1&gt;从静态存储区域分配.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.&lt;2&gt;在栈上创建&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在执行函数时,函数内局部变量的存储单元都

2019-03-05 21:27:45 400

原创 用C语言实现一个通讯录的基本功能(无文件操作版)

通讯录结构体// 通讯录个人信息 typedef struct infor{ char name[256]; char num[256]; }infor; // 通讯录信息 typedef struct { // 通讯录人数 infor mem[50]; // 通讯录索引 int mem_in...

2019-03-04 13:00:52 829

转载 结构体、位段与联合体

前言结构体和指针是数据结构的根基,所以这篇博客这算是对结构体有一个重新的认识,主要内容包括:匿名结构体、结构体的自引用、结构体的不完整声明、结构体内存对齐、位段的使用、联合体的应用场景等等。结构体匿名结构体:匿名结构体简言之就是没有名字的结构体,在结构体的时候就已经定义它的具体结构体对象。以后再也不允许创建新的结构体。这是我遇到的第一个坑,先看看下面这段代码:#define _CRT_S...

2019-03-01 11:39:43 1666

原创 关于 qsort 的使用和延伸(模仿 qsort 写一个冒泡排序)

qsort 原型void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));base:指向要排序的数组的第一个对象的指针,该对象转换为void*num:数组的元素个数size:数组中每个元素的大小compar:指向比较两个元素的功能函数qsor...

2019-02-23 14:55:24 184

转载 ubuntu git安装与使用+更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外 提示:一个仓库已向该引用进行了推送+更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支

文章链接: http://blog.youkuaiyun.com/yhl_leo/article/details/50760140https://blog.youkuaiyun.com/u013551462/article/details/50867710https://blog.youkuaiyun.com/qq_30581017/article/details/790046651 安装安装方式...

2019-02-22 20:19:52 5230

转载 C++中string类的原型

#include&lt;iostream&gt;#include&lt;cstring&gt;using namespace std;class String{private: char *pstr;public: String(const char *str = " ") { pstr = new char[strlen(str) + 1]; ...

2019-02-22 20:15:07 2221

原创 C/C++中对NULL的理解与总结

NULL起初我们知道, NULL其实就是代表空指针的宏, 其本质上就是 0, 表示不指向任何内存的空指针但是, 我们看这段代码: int* p = (void*)NULL; ...

2019-02-21 20:18:57 4890

原创 回调函数的理解和总结

我们对回调函数的使用无非是对函数指针的应用,函数指针的概念本身很简单,但是把函数指针应用于回调函数就体现了一种解决问题的策略,一种设计系统的思想。在解释这种思想前我想先说明一下,回调函数固然能解决一部分系统架构问题但是绝不能再系统内到处都是,如果你发现你的系统内到处都是回调函数,那么你一定要重构你的系统。回调函数本身是一种破坏系统结构的设计思路,回调函数会绝对的变化系统的运行轨迹,执行顺序,调用顺序。回调函数的出现会让读到你的代码的人非常的懵头转向。那么什么是回调函数呢,那是不得以而为之的设计策

2019-02-13 22:51:35 465

原创 指针函数和函数指针的理解与应用

指针函数指针函数, 即返回值为指针的函数, 本质上是一个函数, 我们先看下面实例:#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;time.h&amp;gt; int year; int mon; int day; char* GetDate(); int main() { char* current = GetD...

2019-02-11 13:11:01 5232 3

原创 指针数组和数组指针的理解与应用

指针数组指针数组, 即以指针为元素的数组, 其主要应用于菜单的查找注意下面的实例:#include &amp;lt;stdio.h&amp;gt; int Add(int a...

2019-02-10 21:26:52 3034 7

原创 一级指针和二级指针的理解和总结

一级指针对于一级指针来讲, 我们再熟悉不过的应用就是修改实参的值注意下方应用:#include &lt;stdio.h&gt; void changeValue(int* value); int main() { ...

2019-02-10 20:17:10 7651 6

空空如也

空空如也

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

TA关注的人

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