自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 收藏
  • 关注

原创 段错误调试方法

gdb调试解决的核心就是段错误会生成一个core文件解决的核心就是段错误会生成一个core文件1.现在终端输入ulimit -c unlimited 目的是不限制生成core文件的大小,因为默认是0,所以不设置就看不见2.编译的时候gcc -g 目的是为了可以gdb调试core文件3.a.out 运行程序,生成段错误文件4.gdb a.out core / gdb a.out -c core 这里会生成段错误的原因,但是是以signal的形式5.再敲 bt 或者 where 就能找出位置

2021-09-16 12:20:02 306

原创 C++重载

三个项目模板和STL面向过程面向对象C++语言的发展1979 带类的C语言1983 正式命名19851987 GNU C++1990 Borland C++1992 Microsoft C++,IBM C++199820032011 C11标准2014/2017 C++增加很多新功能优势:1.执行效率比C慢,但是比其他的快点多2.用C语言开发效率低下,C++开发效率高兼顾运行速度和开发效率C++语言的应用领域:1.游戏开发 强建模能力,性能高 cocos2d-

2021-09-10 09:12:23 917

原创 C++模板

模板模板 泛型编程 类型参数化 C++高级语法函数模板语法格式C++为什么能够支持模板这种语法?调用函数模板特化版本的定义函数模板有点类似于C语言中宏函数类模板类模板定义语法类模板的类型缺省通用的类模板全特化成员特化类模板的非类型参数 及 模板缺省值局部特化(类中的成员函数是模板) 偏特化模板继承、模板成员问题:1.从类模板继承 普通类 类模板2.向类模板派生3.类模板中的模板成员a.模板型成员变量b.模板型成员函数c.模板型成员类型4.模板型模板实参模板 泛型编程 类型参数化 C+

2021-09-09 19:14:39 420

原创 模板实现链表

#include <iostream>#include <stdexcept>#include <cstring>using namespace std;//双链表template<typename T>class List{//列表private: //双向链表结点 class Node{ public: T m_elem; //结点元素 Node *m_prev; //前结点 Node *m_next; //下一个节点

2021-09-09 19:02:56 284

原创 C++String的实现

#include <iostream>#include <cstring>using namespace std;//写一个string类class String{private: char *m_str; //指针成员public: String(const char *str=""):m_str(strcpy(new char[str?strlen(str)+1:1],str?str:"")){ //m_str = new char[str?strl

2021-09-08 19:51:39 211

原创 C++IO

标准IOC++的标准IO格式化输入输出非格式化输入输出(字符)随机IO二进制IO文件输入输出文件复制简易的学生管理格式化输入输出多文件编程C++的标准IOcin istream stdincout ostream stdoutcerr(无缓冲) ostream stderr clog(有缓冲) ostream stderrprintf scanf 格式化标准输入输出typedef basic_istream<c

2021-09-07 20:46:44 475

原创 C++异常处理

异常处理C++的异常处理1.通过返回值来表达错误2.通过setjmp/longjmp远程跳转3.异常处理异常捕获的语法规则异常的抛出语法函数的异常声明重写对于函数异常说明的限制自定义异常类型构造函数中的异常C++的异常处理1.通过返回值来表达错误 (如果是调用系统函数出错 设置全局的errno) 层层判断返回值,流程变得繁琐 错误处理 错误处理和正常逻辑 代码是混在一起 局部对象能够正常析构2.通过setjmp/longjmp远程跳转 可以一步到位进行错误处理,流程简单 局部对象将无法得

2021-09-07 19:41:08 118

原创 C++虚.

C++虚计算10个图形的面积,返回面积最大的那个图形重载 覆盖 隐藏的区别虚析构函数纯虚函数 抽象类 纯抽象类typeid 运行时类型信息(RTTI)动态类型转换 dynamic_cast虚函数和sizeof虚函数表与虚表指针多态 动态绑定C++的异常处理1.通过返回值来表达错误2.通过setjmp/longjmp远程跳转3.异常处理异常捕获的语法规则异常的抛出语法函数的异常声明重写对于函数异常说明的限制什么时候必须用初始化列表1.常属性和引用属性2.显示调用父类或者成员属性的有参构造函数即使父类

2021-09-06 21:00:11 143

原创 C++基础知识

面向过程面向对象C++语言的发展1979 带类的C语言1983 正式命名19851987 GNU C++1990 Borland C++1992 Microsoft C++,IBM C++199820032011 C11标准2014/2017 C++增加很多新功能优势:1.执行效率比C慢,但是比其他的快点多2.用C语言开发效率低下,C++开发效率高兼顾运行速度和开发效率C++语言的应用领域:1.游戏开发 强建模能力,性能高 cocos2d-x游戏引擎网易 巨峰

2021-09-05 20:11:57 460

原创 C++继承

继承继承继承的语法:继承的意义继承方式子类的构造基类类型引用 基类类型指针多继承与多重继承钻石继承 和 虚继承钻石继承: 如果一个类有多个基类,而这多个基类又有公共的基类虚继承virtual虚函数 与 多态 virtual覆盖 override重载 overload覆盖 override隐藏 hide面向对象编程三大特征:封装 继承 多态封装:封装一个类把一类事物共同拥有的特征抽象为属性(成员变量)把一类事物共同拥有的行为抽象为方法(成员方法)并加以访问控制属性的限制(private p

2021-09-04 22:15:00 768 3

原创 C++vector

C++vector C++数组迭代器 vector::iterator it自定义写一个Emp调用迭代器和vectorvector C++数组#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v; v.push_back(100); v.push_back(200); cout << v.size() << endl;

2021-09-04 20:33:17 119

原创 三次握手,四次挥手

参考大佬的整理三次握手四次挥手进行三次握手为什么要三次握手为什么要三次,而不是两次?半连接队列洪泛攻击(SYN攻击)四次挥手(也有叫四次握手)为什么要四次挥手2MSL实现可靠的网络 tcp为什么可靠组播3.TCP的四次分手,为什么要四次分手.请画出三次握手和四次挥手的示意图为什么连接的时候是三次握手?什么是半连接队列?ISN(Initial Sequence Number)是固定的吗?三次握手过程中可以携带数据吗?如果第三次握手丢失了,客户端服务端会如何处理?SYN攻击是什么?挥手为什么

2021-08-29 20:30:08 307

原创 挖掘机技术哪家强

题目描述为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入描述输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号、及其比赛成绩(百分制),中间以空格分隔。输出描述在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。输入示例63 652 801 1002 703 403 0输出示例2 150

2021-08-22 13:45:50 109

原创 查验身份证(15)

题目描述一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。输入描述输入第一行给出正整数N(&lt

2021-08-21 18:42:29 211

原创 完美数列.

题目描述给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入描述输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。输出描述在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。输入示例10 82 3 20 4 5

2021-08-19 10:49:30 297 1

原创 旧键盘..

输入描述输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。输入示例7_This_is_a_test_hs_s_a_es输出示例7TI#include<stdio.h>#include<string.h&

2021-08-18 22:39:53 90

原创 人口普查.(仅牛客通过,pat未通过)

题目描述某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入描述输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有

2021-08-17 15:31:12 104

原创 打印沙漏.

输入描述输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。输出描述首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。输入示例19 *输出示例#include<stdio.h>#include<math.h>int main(){ int n; char c; scanf("%d %c",&n,&c); int num; num=sqrt((n+1)/2); int t.

2021-08-13 09:18:29 349

原创 实现一个简易chat聊天室(4种方法)

聊天室提高服务器性能的方法有I/O模型阻塞I/O非阻塞I/OI/O复用SIGO信号异步I/O池 进程池 线程池零拷贝读写高级I/O函数上下文切换和锁pthread创建法select创建法poll创建法epoll创建法总结提高服务器性能的方法有I/O模型阻塞I/O程序阻塞于读写函数(当没有数据可读时,程序一直阻塞到读取数据完成)阻塞的过程:数据从无到有的时间段非阻塞I/O当文件描述符不可读或者写时,立即返回一般采用轮询的方式进行 过一段时间再来读写试一试I/O复用程序阻塞与I/O复用系

2021-08-12 22:42:33 1685

原创 线程管理和线程同步

线程线程管理POSIX线程(pthread)线程函数创建线程错误码部分pthread_joinpthread_equalpthread_exit线程执行轨迹取消线程线程属性线程同步互斥量信号量死锁读写锁自旋锁屏障条件变量生产者消费者问题哲学家晚餐问题线程管理系统调度的基本单位是线程系统资源分配的基本单位是进程1.线程就是程序的执行路线,即进程内部的控制序列,或者说是进程的子任务。 2.线程,轻量级,不拥有自己独立的内存资源,共享进程的代码区、数据区、堆区(注意没有栈区)、环境变量和命令行参数、文件

2021-08-12 22:40:21 291

原创 程序运行时间

题目描述要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟打点数之差(C2-C1)就是f运行所消耗

2021-08-12 11:45:08 141

原创 unix-linux 网络通信

网络通信ISO/OSITCP/IPTCP (Transmission Control Protocol, 传输控制协议) 面向连接的服务。UDP (User Datagram Protocol, 用户数据报文协议) 面向无连接的服务。IP (Internet Protocol, 互联网协议) 信息传递机制。套接字1.创建套接字2.准备通信地址本地un sun网络in sin3.套接字和通信地址绑定在一起4.建立链接5.用读写文件的方式通信:read/write6.关闭套接字close7.字节序转

2021-08-11 22:34:48 652

原创 科学计数法

题目描述科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。输入描述每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。输出描述对每个测试用例,

2021-08-09 13:14:11 100

原创 unix-linux 进程通信

进程通信映射mmap映射mmap//MAP_SHARED 数据写入到文件 //MAP_PRIVATE 数据仅仅是写入到缓冲区 //mmap内存映射到文件时,需要把文件中的内容读取到缓冲区中来#include <stdio.h>#include <sys/mman.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <string.

2021-08-08 19:05:08 131

原创 unix-linux 信号处理

信号处理进程之间的通信方式(数据的传递):信号分为可靠信号(实时信号)和不可靠信号信号的处理signal子进程结束会向父进程发送SIGCHLD命令mykill 函数实现命令行功能raise.cpause.csleepalarm信号集与信号阻塞(信号屏蔽)sigpromask 信号屏蔽sigactionsigqueuetime进程之间的通信方式(数据的传递):1.普通的方式 文件 内存映射(mmap) 映射到同一个物理空间 父进程传递给子进程: main函数参数列表 环境列表2.信号 kil

2021-08-06 22:02:05 140

原创 unix-linux 进程管理

进程进程和程序进程的分类查看进程 ps父子概念 fork进程和程序•1) 进程就是运行中的程序。 一个运行着的程序,可能有多个进程。进程在操作系统中执行特定的任务。•2) 程序是存储在磁盘上,包含可执行机器指令和数据的静态实体。 进程或者任务是处于活动状态的计算机程序。进程的分类•1) 进程一般分为交互进程、批处理进程和守护进程三类。•2) 守护进程总是活跃的,一般是后台运行。守护进程一般是由系统在开机时通过脚本自动激活启动,或者由超级用户root来启动。查看进程 ps查

2021-08-05 22:26:22 400

原创 组个最小数

题目描述给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。输入描述每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。输出描述在一行中输出能够组

2021-08-05 18:28:27 97

原创 unix文件系统管理

unix文件系统动态内存----内存管理文件操作系统调用为什么要有用户态和内核态?文件描述符实现复制文件属性 系统I/O与标准I/Olseek函数的使用:加密 实现对一个文件的加密获取文件大小sync/fsync/fdatasyncexecve 创建进程fcntlflags.c 打印文件状态文件锁文件锁cmd取值:stat/fstat/lstat获取文件属性有关S_ISUID/S_ISGID/S_ISVTX的说明umaskchmod/fchmodchown/fchowntruncate/ftrunca

2021-08-04 22:40:11 1510

原创 外部排序.

外部排序对内部排序的分析外部排序提高外部排序的效率:归并段是否补充及补充多个虚段的推解搜索朴素查找(BF算法):在str中查找childstr,如果找到返回下标位置,没有返回-1KMP算法kmp getNext()核心算法推解全排列对内部排序的分析 方法 时间负责度 空间复杂度 稳定性 直接插入 n^2 1 稳定 折半插入 n^2 1 不稳定/稳定(一般) 希尔排序 nlog2n

2021-07-30 11:41:01 840 1

转载 平衡二叉树AVLBTree的系列函数

快捷跳转main.cavltree.havltree.cmain.c#include <stdio.h>#include <stdlib.h>#include "avltree.h"void show_menu(void){ printf("*******平衡二叉排序(AVL树功能测试**********\n"); printf("**1. 插入元素 \n"); printf("**2. 删除元素 \n");// printf("**3. 查找某元素是否在树中 \

2021-07-29 20:44:24 131

原创 类unix的Linux操作系统的静态库和动态库的使用

静态库1.mkdir staticdir2.cd staticdir/3.vi add.h#ifndef _ADD_H__#define _ADD_H__int add(int n,int m);#endifvi add.c#include "add.h"int add(int n,int m){ return n+m;}vi min.h#ifndef _MIN_H__#define _MIN_H__int min(int n,int m);#endif

2021-07-29 19:11:48 201

原创 D进制的A+B

题目描述输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。输入描述输入在一行中依次给出3个整数A、B和D。输出描述输出A+B的D进制数。输入示例123 456 8输出示例1103#include<stdio.h>int main(){ long long a,b; int d; int num[1001]; scanf("%lld %lld %d",&a,&amp

2021-07-29 18:28:45 152

原创 个位数统计

题目描述给定一个k位整数N = dk-110k-1 + … + d1101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入描述每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出描述对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。输入示例100311输出示

2021-07-28 16:49:29 513

原创 月饼...

题目描述月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得72 + 45/2 = 94.5(亿元)。输入描述每个输入包

2021-07-27 19:59:08 91

原创 内部排序之其他排序

其他排序基数排序计数排序桶排序基数排序基数排序 1024 618 555 999 521 1111 1314 1314 9527 88880 1 2 3 4 5 6 7 8 9先取个位数 1024取4将1024存到4的位置处取完后按顺序排再取十位数存如此循环时间复杂度O(d(n+rd))r代表关键字基数(10),d代表长度(元素位数),n代表关键字个数(元素个数)O(dn)空间复杂度O(r+n) 书上O(rd)此处一个slinked.h, slinked.c(链

2021-07-27 19:21:29 90

原创 内部排序之归并排序

二路归并排序megerSortmegerSortsmegerSort1024, 1212, 1314 ,8888, 9527 521, 555 ,618,999 ,11111024 1212 合并保持有序arr,brr升序,合并到crr也升序时间复杂度O(nlog2n) 空间复杂度O(nlog2n);void megerArr(int arr[],int n){ int mid = n/2; //[0,mid) [mid,n-1]有序 int brr[mid];

2021-07-27 19:05:15 99

原创 内部排序之交换排序

交换排序冒泡排序鸡尾酒排序快速排序冒泡排序冒泡排序相邻两个元素相互比较,大的放后面,小的放前面经过一次完整比较,最大值已经在最末尾,所以每次都能出一个最大值放到相对应的位置时间复杂度O(n^2) 时间复杂度O(1)void bubbleSort(int arr[],int n){ int i,j; for(i=0;i<n-1;i++){ int swap=0; for(j=1;j<n-i;j++){ if(arr[j]<arr[j-1]){

2021-07-27 19:05:02 93

原创 内部排序之选择排序

选择排序main.c简单选择排序(直接选择)排序堆排序二路选择二叉树main.cvoid change(int *a,int *b){ int tmp=*a; *a=*b; *b=tmp;}int main(){ int arr[6]={54,66,12,1,99,44}; //choiceSort(arr,6); //twoChoiceSort(arr,6); //heapSort(arr,6); //bubbleSort(arr,6); //cookTaiSort(arr,6)

2021-07-27 18:43:32 77

原创 内部排序之插入排序

插入排序直接插入:折半插入2-路插入排序希尔排序main.c普通插入保持有序折半插入保持有序 内存有限 数据量比较大的时候 如果是对内存中的数据排序:内部排序 如果是对外存中的数据进行排序:外部排序内部排序 4G的虚拟内存直接插入: 从第一个元素开始,到最后一个元素,依次把数组中的元素插入到前面,使之保持有序 例:1024 999 1212 8888 521 1314 9527 一开始1024前面没有元素 1024 第一次 999

2021-07-26 19:44:50 155

原创 数字黑洞.

题目描述给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174… …现给定任意4位正整数,

2021-07-26 11:13:15 127

空空如也

空空如也

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

TA关注的人

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