自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘森林l的博客

个人的一些学习心得,毕竟初学,难免有所差错,希望可以留言指正,谢谢!

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

原创 初识GO语言(第一天)

GO语言介绍Go(又称Golang)语言是Google公司开发的一种静态型、编译型并自带垃圾回收和高并发的编程语言。2019年最值得学习的语言TOP3的GO语言,并且预计以后后台服务器很可能就是GO语言,目前有一些大公司在招聘GO语言开发工程师。官网:https://golang.org/历史概要:(1)于2007年9月由罗伯特·格瑞史莫,罗勃·派克(Rob Pike)及肯·汤普逊开始设...

2020-03-14 22:42:00 274

原创 Linux线程栈空间内存从glibc源码分析

1.何为线程栈空间泄露? 2. 何为anon内存? 3. 虚拟内存、物理内存、anon内存的联系 4. anon与线程的联系 5. glibc源码库线程创建与销毁anon关系 6. 使用pmap分析虚拟地址空间以及anon内存

2020-02-20 13:10:26 1434 1

原创 (杂谈)防御网络欺骗,欢迎补充!!!

晚上在宿舍看到老师转发的一个视频很是震惊,链接https://m.v.qq.com/x/page/i/m/z/i0340c4l6mz.html?coverid=&ptag=4_5.2.2.17021_wxq&from=timeline   接下来就常见的互联网欺诈手段进行整理,需提高意识。      本文只是对案例进行简单概述,详情百度,对一些常见的安全防范进行提及,就当将就了解,不涉及纯技术

2016-12-11 21:32:10 1177 1

转载 EOF

#include#includeusing namespace std;int main(){ char c = 0; while((c = getchar()) != EOF) { putchar(c); } }它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(std

2016-10-06 14:15:04 1451

原创 一些输出函数小结(putchar puts fputs )

1.  putchar函数的格式:putchar(ch) 其中ch可以是一个字符变量或常量,也可以是一个转义字符。2.putchar函数的作用:向终端输出一个字符。(1)putchar函数只能用于单个字符的输出,且一次只能输出一个字符。(2)在程序中使用putchar函数,务必牢记:在程序(或文件)的开头加上编译预处理命令(也称包含命令),即:#includ

2016-10-05 16:10:50 870

原创 一些读取字符函数小结(getchar getch getche)

getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) 是stdio.h中的库函,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了               从stdi

2016-10-05 15:26:36 1733

原创 一些常见的运算符重载

#include#include#include#include#includeusing namespace std;class my_complex{public:void * operator new(size_t size){ void *p = (void *)malloc(size); if(NULL != p) { cout <

2016-09-16 17:09:10 451

原创 C++一些常见的运算符重载

#include#includeusing namespace std;class my_complex{public: my_complex& operator ++ ();//前置++ my_complex& operator ++ (int);//后置++public: //单目运算符重载

2016-09-16 16:16:22 346

转载 C++中的new的用法

关于c++ new操作符的重载你知道c++ 的new 操作符和operator new 的区别么?也许你还会问,他们有区别吗? 当你写下面这样的代码时,string *pa = new string("memory managerment");你使用的是new 操作符,这个操作符和sizeof 一样,是c++ 语言级别支持的。你不能改变它的语义,它做的事情总是不变的:分

2016-09-16 15:15:31 1163

转载 C++ 运算符理论小结

c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。1.一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形

2016-09-16 14:18:58 277

原创 C++ 中的运算符重载

#include#includeusing namespace std;class my_complex{public: //关系运算符重载 bool operator == (const A& ); bool operator != (const A& ); bool operator < (c

2016-09-16 14:03:46 290

原创 后缀式

即逆波兰式。逆波兰式是波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。这种表示法的优点是根据运算对象和算符的出现次序进行计算,不需要使用括号,也便于用械实现求值。对于表达式x:=(a+b)*(c+d),其后缀式为xab+cd+*:=。原表达式:a*(b*(c+d/e)-f

2016-09-08 20:55:56 1857 1

转载 C++中的容器小结

C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。1、vector    连续存储结构,每个元素在内存上是连续的;    支持高效的随机访问和在尾端插入/删除操作,但其

2016-09-03 19:56:22 266

转载 查找算法的小结

顺序查找算法====================1. 算法描述  顺序比较即可。2. 平均查找长度  (n+1)/2, 其中n为表长。  3. 算法实现    省略  4. 优化思想  根据经验,目前被查到越多的元素,将来可能被查到的可能性也越大。所以可以考虑,每次查找到一个元素后,将它和直接前驱交换位置。如果上述的经验从概率上来讲是成立

2016-09-03 18:42:11 320

转载 http状态码

HTTP 状态代码 错误列表如果向您的服务器发出了某项请求要求显示您网站上的某个网页(例如,当用户通过浏览器访问您的网页或在 Googlebot 抓取该网页时),那么,您的服务器会返回 HTTP 状态代码以响应该请求。此状态代码提供了有关请求状态的信息,且为 Googlebot 提供了有关您网站和请求的网页的信息。一些常见的状态代码为:200 - 服务器成功返回网页

2016-09-03 11:17:20 1137

转载 TCP/IP连接状态变迁图CLOSE_WAIT

本文转自:http://blog.csdn.net/yusiguyuan/article/details/21445945#1536434-tsina-1-25592-66a1f5d8f89e9ad52626f6f40fdeadaa终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独

2016-09-03 10:50:29 274

原创 错题整理之网络(二)

应用程序PING 发出的是什么报文正确答案: C   你的答案: C (正确)TCP 请求报文TCP 应答报文ICMP 请求报文ICMP 应答报文 Ping程序的实现    1 实现方法是主机向远程计算机发出ICMP回显请求以后,远程计算机会拦截这个请求,然后生成一条一条回显应答信息

2016-09-03 08:38:30 793

转载 ip 子网数目 网络号 主机号 广播地址 可用IP地址范围

一般考试中都会给定一个IP地址和对应的子网掩码,让你计算   1、子网数目   2、网络号   3、主机号   4、广播地址   5、可用IP地址范围 综合实例:   已知172.31.128.255/18,试计算:   1、子网数目,   2、网络号,   3、主机号,   4、广播地址,   5、可分配IP的起止范围   解:   1、算子网数目   首先将/18换

2016-09-02 00:04:01 4980

原创 网络有关笔试题

数据分段在OSI哪一层( )传输层数据分段是在传输层中完成的,传输层定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达

2016-09-01 17:17:29 3556

转载 Linux进程退出码

#include int main(void) { return -1; } 编译好,然后运行,然后在shell里面查看进程退出码,键入:echo $?,我们发现拿到的进程退出码是255。我们返回的明明是-1,为什么拿到的却是255呢?还得从进程的状态码开始讲起,我们知道,当一个进程退出的时候,父进程一般都会进行收尾工作,就是调用wait或者w

2016-08-23 15:43:28 3366

转载 Linux进程间通信之——管道(整理)

进程间通信 fork pipe pie_t 等用法(管道机制 通信)每个进程各自有不同的用户地址空间,任 何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。如下图所

2016-08-23 11:11:04 646

原创 僵尸进程

在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程…一个

2016-08-22 21:45:11 1520

原创 操作系统自举后做了什么???

前段时间在看清华大学出版社出版的《Linux教程》(05年6月第一版)。在248页第十三章《进程》有一节是简述Linux进程的层次关系的,把操作系统自启动后都做了什么,说得比较清晰,看过后受益匪浅。    就是喜欢看这种能把整个框架说得比较清楚的文章!特抄来以共享:    当打开Linux系统,LILO(LInux LOader)找到Linux内核把它加载到内存。它初始化各种硬件,

2016-08-22 20:11:55 2497

转载 fork()与vfork()的区别

fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1.  fork  ():子进程拷贝父进程的数据段,代码段     vfork ( ):子进程与父进程共享数据段 2.  fork ()父子进程的执行次序不确定     vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec     或e

2016-08-22 08:57:21 604

转载 Linux之写时复制技术

写入时复制(Copy-on-write)是一个被使用在程式设计领域的最佳化策略。其基础的观念是,如果有多个呼叫者(callers)同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者(caller)尝试修改资源时,系统才会真正复制一个副本(private copy)给该呼叫者,以避免被修改的资源被直接察觉到,这过程对其他的呼叫只都是通透的(transparent

2016-08-21 16:44:45 3147 1

转载 进程的调度算法

抢占式 多任务 分时前面我们已经明确了调度可能发生的时机,现在我们通过这些调度时机来理清下现代操作系统中这几个重要的概念。1.多任务在单任务系统中,一个进程即使发生I/O阻塞(比如等待用户输入)时,操作系统也不会执行另一进程,整个系统都将陷入等待的空闲中。而多任务就是指当一个正在执行的进程发生I/O阻塞或等待其他资源需要暂停时,操

2016-08-21 16:03:07 1982

原创 Linux基于流IO

基于流的I/O操作       流的打开函数:(1) FILE *fopen(const char *pathname,const char *type);        (2) FILE *freopen(const char *pathname,const char *type, FILE *fp);        (3) FILE *fdopen(int filede

2016-08-21 11:47:58 2333

转载 Linux网络编程之IO模型

1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回

2016-08-21 10:32:18 780

转载 Linux文件描述符(转)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/389652391. 概述    在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的

2016-08-20 21:56:19 750

转载 Linux系统调用接口(转)

以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。  按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使

2016-08-20 21:34:53 1033

转载 Linux的设备

1.字符设备(char device)字符设备是Linux最简单的设备,可以像文件一样访问。初始化字符设备时,它的设备驱动程序向Linux登记,并在字符设备向量表中增加一个device_struct数据结构条目,这个设备的主设备标识符用做这个向量表的索引。一个设备的主设备标识符是固定的。chrdevs向量表中的每一个条目,一个device_struct数据结构,包括两个元素:一个登记设备驱动程

2016-08-20 21:20:38 652

转载 Linux系统目录(转)

1、Linux文件系统的层次结构       在Linux或Unix操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。       文件系统的最顶层是由根目录开始的,系统使用”/“来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。       在Linux文件系统中有两个特

2016-08-20 21:12:20 634

原创 Linux的文件类型分类

Linux文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。linux文件的删除方式是用rm 命令。Linux文件类型;Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话

2016-08-20 20:59:30 4347

转载 Linux的文件系统(转)

linux文件系统简介Linux下一切皆文件    linux的文件系统,主要包括了linux磁盘分区和目录、挂载基本原理、文件存储结构、软链接硬链接、和常见目录的介绍。    如有不对之处请大家多多指出。1.Linux磁盘分区和目录  Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Win

2016-08-20 20:47:15 918

转载 C++中的虚函数表(转)

假设我们有这样的一个类: class Base {     public:            virtual void f() { cout  "Base::f" << endl; }            virtual void g() { cout  "Base::g" << endl; }            virtual void h()

2016-08-20 17:12:45 558

原创 C++中的多态一

  多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。在C++中有两种多态性 :      1.编译时的多态性-----通过函数的重载和运算符的重载来实现的      2.运行时的多态性-----运行时的多态性是指在程序执行前,无法根据函数名和参数来确定该调用哪

2016-08-20 16:05:01 580

转载 C++中的虚拟继承(二)【转】

http://blog.csdn.net/wangxingbao4227/article/details/6772579C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避

2016-08-12 14:19:49 505

原创 C++中的虚基类

虚基类共同基类设置为虚基类,这样从不同路径继承来的同名数据成员在内存中就只有一个拷贝,同名函数也只有一种映射虚基类(virtual base class)定义方式如下:class 派生类名:virtual  访问限定符  基类类名{...};class 派生类名:访问限定符  virtual  基类类名{...};virtual 关键字只对紧随其后的基类名起作用

2016-08-11 21:23:48 956

原创 C++ 继承(三)

C++中,比较类的三种继承方式:共有继承、受保护继承、私有继承之间的区别在三种不同方式的继承下,派生类对原来基类中的成员访问的方式也不一样,具体如下: 1>公有继承中: (1)基类的共有成员就相当于是派生类的公有成员,也就是说派生类可以像访问自身公有成员一样访问从基类继承的公有成员。 (2)基类的保护成员就相当于是派生类的保护成员,即,派生类可以像访问自

2016-08-11 19:02:30 239

原创 C++中的继承(二)

一、基本概念1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 2、派生类的声明:class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n{    派生类成员声明;}; 3、一个派生类可以同时有多个基类,这种情况称为多重继承,派生类

2016-08-11 17:59:31 569

空空如也

空空如也

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

TA关注的人

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