自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++ const、static等常用关键字解释

1.static关键字修饰全局变量时,会将变量的链接属性变为内部链接属性,并且变量的存储位置变为全局静态区;修饰 局部变量,改变局部变量的存储位置为静态存储区,改变局部变量的生命周期为整个程序开始到结束;修饰类的成员变量和函数:属于类而不属于对象,属于所有实例类;2.const关键字修饰全局变量:C/C++略有不同,即C++的const修饰的全局变量可以作为属组的初始化的大小,而...

2019-09-03 11:55:37 164

原创 C和C++的区别

C和C++的区别主要有以下几点1、C是面向过程的语言,而C++是面向对象的语言2、C中的struct和C++的类,C++的类是C所没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使struct在C++中可以和class一样当做类使用,而唯一和class不同的地方在于struct的成员默认访问修饰符是public,而class默认的是priv...

2019-09-03 11:41:32 187

原创 数字处理(统计二进制1的个数、统计十进制1的个数、统计n!末尾0的个数)

1.统计二进制1的个数2.统计十进制1的个数3.统计n!末尾0的个数//1.统计二进制1的个数int number_2_1(int n){ int count = 0; while (n) { n = (n-1) & n; ++count; } return count;}int main(){ int count ...

2019-08-14 11:02:50 216

原创 字符串的替换(三种情况)

1.一个换一个例:函数将字符串中的字符’‘移到字符串的前部分,前面的非’‘字符后移,但不能改变非’‘字符的先后顺序,函数返回串中非’'字符的数 量。(要求尽可能的占用少的时间和辅助空间)。如:原始串为au** toc ** h**i* ps,处理后为*******autochips,函数返回9.在这里插入代码片...

2019-08-13 19:51:00 1705

原创 翻转数列

问:小Q定义了一种数列称为翻转数列:给定整数n、m,满足n能被2m整除,对于一串连续递增的整数数列1、2、3、4、5…,每隔m个符号翻转一次,最初的符号为‘-’,例如n=8,m=2,数列则为:-1,-2,+3,+4,-5,-6,+7,+8。而n=4,m=1,数列则为:-1,+2,-3,+4。小Q现在希望你能帮他算算前n项和为多少。#include<stdio.h>#include...

2019-08-13 10:08:43 194

原创 调用fork时父子进程的处理例题

问:下面这些代码分别能打印出多少个A多少个B?//1、int main(){ int i = 0; for(; i <2 ; ++i) { if(fork () == 0) { printf("A\n"); } else ...

2019-08-12 20:16:04 424

原创 const int *p、int *const p与const Test *p、Test *const p的区别

1、当const出现在 * 左边,例如const int *p或int const *p(无区别),表示被指向的值是常量。2、当const出现在 * 右边,例如int * const p,表示指针本身是常量。3、当const出现在 * 两边,表示被指向的值和指针本身都是常量。1、const int *p: 此时const 修饰的是指向的值,因此相当于是一个指向常量的指针,*p是常量,因此:...

2019-08-10 17:28:07 147

原创 模板

模板的作用:便于实现类型转换可用于实现类型转换的方法1、泛型2、函数重载3、宏函数(在预编译阶段处理,无类型检查,不安全)4、模板①函数模板②类模板模板头部定义:template<typename T> //<>间括号是模板类型参数列表 用typename来定义模板类型具体调用方式:template<typename T> T su...

2019-08-10 16:50:48 110

原创 文件/命令

linux下的文件类型:普通文件 -目录文件 d管道文件 p链接文件 l设备文件(块设备b、字符设备c、套接字s)文件操作的基本命令:用户管理:增加一个用户会修改etc里的password**makefile文件:**编译规则,规定文件的编译顺序。特点:一次写好永久使用,提高编译效率。①不需要重复的编写编译指令。②编译时,只编译修改的文件以及依赖于修改的文件,编译速度...

2019-08-01 20:24:47 82

原创 网络——HTTP

HTTP:①超文本传输协议②浏览器和Web服务器交互的应用层协议使用TCP连接进行可靠传送③明文传输④HTTP的标准端口是80端口www.bilibili.com—>通过DNS协议解析对应的IP地址+80端口号—>web服务器每一个万维网网点都有一个服务器进程,他不断监听TCP端口80,以便发现是否有浏览器向他发出建立连接的请求,一旦监听到请求并建立连接之后,浏览器会向万维...

2019-08-01 12:01:29 126

原创 网络——滑动窗口、拥塞控制

滑动窗口:1、A的发送窗口是根据B的接收窗口来设置的(但并不总是和B的窗口一样大)。2、在收到B的确认接收的信号前,A的发送窗口必须保留着之前已经发过序号,以便在超时重传时使用。3、A的发送窗口是由允许发送的序号(和一部分等待确认)组成,因此窗口越大,发送方就可以在收到对方的确认之前连续发送更多的数据,因此获得更高的传输效率(前提是接收方来得及处理)。4、当接收方收到数据,并保存到缓冲...

2019-07-31 20:11:05 448

原创 网络部分——TCP

TCP/IP四层网络模型:TCP: 面向连接的 可靠的 字节流服务UDP: 无连接的 不可靠的 数据报服务IP: 无连接 不可靠 无状态运输层的端口:为了使运行不同操作系统的计算机的应用进程能够相互通信,就在运输层使用协议端口号,在协议栈层之间的抽象协议端口是软件端口,和路由器交换机上的接口是两个完全不同的概念,硬件端口使不...

2019-07-31 20:03:45 186

原创 线程(线程同步、线程安全、线程实现)

线程:是CPU使用的基本单元,是进程的最小执行单位,是轻量级的进程。线程和进程的区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位,进程拥有一个或多个线程,线程是进程的一部分,线程有时也被称为轻量级的进程,系统会为进程分配内存资源,同一个进程内的线程共享进程的资源,进程拥有自己独立的地址空间,同一个进程内的线程共享进程的地址空间,同一个进程中的线程只有独立的栈区。协程:协...

2019-07-28 17:09:01 123

原创 信号

信号:系统定义好的某些特定事件,事件可以被产生,也可以被接收,产生和接收事件的主体都是进程。信号的响应方式(进程接收后如何处理):忽略、 默认、 自定义(捕获)SIG_DFL SIG_IGN修改信号响应方式:typedef void(*Fun)(int);Fun signal(int signum, Fun fun);//注册函数发送信号类型:sigint SIGINTsigc...

2019-07-28 12:30:35 93

原创 内存管理与二级页面映射

内存管理我们下面讨论的内存均为物理内存。内存管理方案:1、分区:程序加载时,将程序加载到一块分区上。(1)、固定分区(内部碎片;操作系统启动前已经分配好)大小相等的固定分区大小不等的固定分区(2)、动态分区(外部碎片;进程执行时,才会动态分配内存空间)2、分页类似于大小相等的固定分区,系统初始化时,将内存划分为大小相等的页帧(4k),程序在磁盘上的存储,也是按照4k的页面进行存储...

2019-07-27 19:20:19 219

原创 进程

进程新生时,一定先分配PCB结构,之后才生成进程主体;进程结束时先释放进程主体,之后才释放PCB结构。僵死进程:进程主体已经释放,但是该主体的PCB依旧保存(子进程结束时,父进程未获取子进程的退出码,从而子进程不得不保存退出码,因此PCB无法释放)僵死进程的处理方法:可以手动使父进程获取子进程的退出码调动Pid_t wait(int * reval)(阻塞) /Pid_t waitpid()...

2019-07-27 19:07:14 95

原创 I/O复用之epoll

epoll :linux独有 将用户关注的文件描述符上的事件直接由内核记录一组函数:int epoll_creat(int size); //创建内核事件表,其底层是用红黑树维护的epoll:通过创建内核事件表,用于记录用户关注的文件描述符上的事件,select:fd_set *readfds;用数组记录poll: struct pollfd fds[n];用结构体数组来记录i...

2019-07-21 15:25:45 67

原创 I/O复用之poll

Poll:Int poll(struct pollfd *fds,int nfds,int timeout); //*fds传入数组首地址,大小由nfds决定,由用户根据需要定义 Struct pollfd {Int fd; //指定用户关注的文件描述符 由结构体数组维护起来Short events; //用户关注的文件描述符...

2019-07-21 15:20:05 218

原创 I/O复用之select

I/O复用技术:一个进程或线程能够同时对多个文件描述符(socket)提供服务,将n个文件描述符统一监视,当其中某些文件描述符上有事件发生,则程序只处理有事件发生的文件描述符。1、Select2、Poll3、Epoll(Linux独有)Int select( int nfd,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct...

2019-07-19 20:18:29 81

原创 C++ 带头结点的单链表

#include<iostream>using namespace std;typedef int ElemType;class Clink;class Node{public: Node(const ElemType&rhs = ElemType())//零初始化/零构造 { mdata = rhs; pnext = NULL;//每生成一个结点,指...

2019-05-18 11:05:26 519

原创 线程池实现高性能服务器

为了改善多进程和多线程实现服务器不停地创建删除进程或线程给系统带来的负担,引进了线程池,进程池来改善此种情况,此处以线程池为例。线程池原理:服务器启动则创建n个子进程或者函数线程,在服务器终止时销毁,如果有客户端连接,则分配一个子进程或者函数线程为其服务,服务完成之后则继续等待分配下一个客户端。线程池的优势:(1)、创建的进程或者线程是有限的,服务器的系统代价比较小,一般不会到达系统限...

2019-05-09 09:26:30 428

原创 多进程与多线程实现高性能服务器

之前的TCP编程只能完成服务器与客户端一对一的交互,也就是说服务器只能串行的为一个客户端服务,效率太低,因此为了改善这种情况,提出了多进程和多线程实现高性能的服务器。多进程在之前TCP编程的基础上调用了fork函数;由父进程来进行与客户端的连接实现accept;由子进程与一个客户端交互实现recv()/加粗样式send()。需要注意的问题:1、accept的返回值C,也就是新生...

2019-05-07 21:04:29 120

原创 TCP服务器编程流程

(传输层)TCP特点: 面向连接、可靠的、字节流服务面向连接:网络中的两个主机交互前必须先建立连接(此链接是全双工的)可靠的:数据能够安全完整的进行传输,保证数据不丢失、不出错、不乱序、不重复字节流服务 :应用程序对于数据的接收和发送是没有边界限制的(具体TCP的字节流过程见TCP协议详解)...

2019-05-06 16:26:33 709

原创 时间复杂度

时间复杂度:执行一个算法,代码运行的次数和问题规模之间的函数关系。关于时间复杂度的计算:1、保留最高阶项;2、去掉系数3、找到进行次数最多的(最内部的嵌套)例:(一下仅为部分代码,并不完整仅用于举例)(1)for(i=1;i&lt;=n;++i) ---------①for(j=1;j&lt;=n;++j)--------②{c[i][j]=0;-----------③}①...

2018-11-21 15:55:19 276 1

原创 位总结

1、位运算符号&amp;,|,^,~(取反不分正负数),&lt;&lt;(标准规定在右边补0),&gt;&gt;(正数则左边补0,负数标准没有规定左边补充的数字)2、常见二进制位的变换操作功能示例去掉最后一位:101101—10110x&gt;&gt;1在最后加一个0:101101—1011010x&lt;&lt;1在最后加一个1:101101—10110...

2018-11-18 13:06:14 111

原创 递归问题

递归当中有三个重要的部分:1、缩小问题规模(递归前进段)2、边界条件3、返回段递归函数简单的来说就是自己调用自己的函数下面是一段递归的程序int Age(int n){ int tmp; if(n==1) tmp=10; else ...

2018-11-05 09:30:08 112

原创 数组指针,指针数组的区别理解

在一维数组中,int*p=arr上图为一维数组,箭头指向该数组首元素的地址,数组表示的类型如下表所示:一维数组类型arr(指向首元素的指针)int*arr+1(指向首元素的指针向右移动一个格子)int*arr[0](0号下标对应的数组中的值)intarr[0]+1(给0号下标对应的值加1)int在二维数组中,int brr[3][4]...

2018-11-04 22:16:21 239

原创 关于指针的应用

int a=10;//整型变量,存放整型值char b=‘x’;//字符型变量,存放字符值double c=12.3;//浮点型变量,存放浮点值int *p=&amp;amp;a ;//整型(4字节)指针(地址)变量,存放整型地址值//指针就是地址int *p(定义一个整型地址变量)*p (对P解引用,到达p指向的变量值)指针的交换典型错误:1、无解引用或没有传指针2、出现野指针(没有...

2018-10-27 01:17:56 94

原创 已知某等式成立,求该等式成立的条件下系统使用的是几进制

例:如果在某系统中,等式15*4=112成立,则系统采用的是()进制A 6B 8C 9D 10首先,可以通过等式的性质得到以下结论1232=24‘6’1242=24‘8’2341=23‘4’2343=…2由题得:154=112 54=20因此 用20对上述进制进行求余运算,看结果是否为2可基本排除一些选项得到正确答案,故本题选A。还有以下比较复杂的情况无法排除则使用如下方法...

2018-10-27 00:12:07 432

原创 数组越界

#include&amp;amp;lt;stdio.h&amp;amp;gt;int main(){int i;int arr[10];//errorfor(i=0;i&amp;amp;lt;=10;i++){arr[i]=0;printf(&amp;quot;%d\n&amp;quot;,i)}return 0}总共有下表为0~9的十个数 没有下标为10的数字,造成数组越界,再循环一次后将i的数值也赋值为0造

2018-10-26 23:15:37 239

原创 给一个不多于五位的正整数,分别按要求输出

1、求一个整数的位数2、分别输出每一位数字3、逆序输出//1.#include&amp;lt;stdio.h&amp;gt;int count(int n){int tmp;for(tmp=1;n&amp;gt;1;tmp++){n/=10;}return tmp;}int main(){printf(&quot;%d\n&quot;,count(1997));}//2.3#include&a

2018-10-17 17:27:56 1940

1spss统计分析与数据挖掘.zip

本文档包括数据挖掘所涉及到的大部分方法的spss实现,以及具体的spss原理应用方法

2019-05-28

空空如也

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

TA关注的人

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