- 博客(35)
- 收藏
- 关注
原创 Linux|线程知识总结
多线程的基本概念 在一个程序里的一个执行线路叫做线程。也称为一个进程内部的控制序列。每个线程都代表进程的一个执行流。 线程独有的部分: 栈,寄存器,信号屏蔽器,errno,标识符 线程共享的部分: 虚拟地址空间(代码段,数据段),文件描述符,信号处理方式,工作路径,用户ID,组ID 线程的优点: 创建/销毁成本更低 线程间调度成本更低 线程间通信方式更加灵活(全局变量,函数传参) 异常和某些系统调用针对的是整个进程 线程的缺点: 性能损失 健壮性降低 缺乏访问控制 编程难度提高 一般情况下对程序
2020-06-21 22:36:59
279
原创 Linux|进程知识总结
进程的基本概念 进程是程序的一个执行实例,担当分配系统资源(cpu时间,内存)的实体。也是系统进行资源分配和调度的一个独立单位。 描述进程PCB 进程信息被放在一个叫做进程控制块的数据结构中,也可以理解为进程属性的集合。Linux操作系统下的PCB是task_struct。 task_struct是linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含进程的信息。 task_str...
2020-06-18 17:47:41
247
原创 继承与多态
继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 继承的定义格式: class A { public: int a; }; class B:public A { public: int b; }; 在以上代码中A类被B类以public的方式所继承,其中A类为基类也称为父类,B类是派生类也称为子类。 继承...
2020-05-09 21:36:02
271
原创 C/C++内存管理
内存分配的方式 在C++中,内存被分为了五个区域,分别是,栈、堆、数据段、代码段、内存映射区。 栈:函数执行时,内部创建的局部变量的存储单元都存储在栈上。在程序执行结束时,系统会自动释放栈中的资源。栈内存分配的效率也是比较快的。栈是向下增长的。 堆:用于程序运行时动态内存分配,堆是向上增长的。 数据段:存储全局变量和静态变量的地方。 代码段:可执行代码/只读常量。 内存映射区:是高效的I/O映射...
2020-05-09 18:49:21
186
原创 RSA文件加密工具
一.加密的分类 1.对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 2.非对称加密 需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。 二.RSA 1.RSA的由来 1977年,三位数学家Rivest、Shamir 和 Adleman 设计了...
2020-05-07 16:50:16
1771
原创 淘宝网店-牛客网-c++
NowCoder在淘宝上开了一家网店。他发现在月份为素数的时候,当月每天能赚1元;否则每天能赚2元。 现在给你一段时间区间,请你帮他计算总收益有多少。 输入 2000 1 1 2000 1 312000 2 1 2000 2 29 输出 6229 解题思路: 分为俩种情况 一种为同年,一种为不同年。不同年又分为,year1 所在的年,year2 所在的年,year1和year2中间所在的年。 ...
2020-03-31 16:44:46
549
原创 数据结构之树
一.树的概念 树是一种非线性结构它是由n个结点组成的一个具有层次结构的集合。它具有以下的特点:1.每个结点有零个或者多个子结点。2.每一个非根结点只有一个父结点。3.没有父结点的结点为根结点。4.除了根结点外,每个结点都可以分为多个不相交的结点。 结点的度:一个结点含有的子树的个数。 叶结点(终端结点):度为0的结点。 分支结点(非终端结点):度不为0的结点。 父结点(双亲结点):若一个结点含有子...
2020-03-09 23:38:23
402
原创 STL容器中size和capacity的区别
size:表示当前容器中元素的个数 capacity:表示当前容器在必须分配新的存储空间之前允许存放元素的个数 与size对应的函数是resize(n),它的作用是调整容器的大小使其能够容纳n个元素,如果n小于当前容器的size,则删除多余的元素。如果n大于当前容器的size,则添加初始化后的元素。(resize还有另一种用法resize(n,0) 表示将所有新添加的元素初始化为0。) 与capa...
2020-02-29 18:32:53
842
原创 俩个链表的第一个公共节点
双指针法: 分别从A , B指针开始遍历,当其指向NULL时,将他们分别指向B,A,最后会在相交点相遇。 c++代码 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode * cur1 = headA; ListNode * cur2 = headB; ...
2020-02-23 01:11:17
155
原创 排序算法总结
快速排序算法 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。 快速排序算法的特性: 快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序 ...
2020-02-18 19:09:18
167
原创 哈希表知识点总结
1.哈希的概念 为了可以不经过任何比较,一次直接从表中得到要搜索的元素,构造的一种存储结构。这种结构可以通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,在查找时通过该函数可以很快找到该元素。 插入元素: 根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。 搜索元素: 对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比...
2020-02-15 16:50:36
544
原创 在一个字符串中找到第一个只出现一次的字符。如输入:abcdab,则输出:c
思路 :创建俩个vector ans用来记录每个字符出现的次数 ans1用来记录每个字符第几次出现 flag用来判断是否有出现一次的字符 #include <iostream> #include <string> #include <vector> using namespace std; char findOnlyOneTime(string s1,int...
2019-11-29 21:29:40
420
原创 linux 基础命令知识总结
一. 进入目录需要哪些权限 1.当用户是拥有者时,进入目录需要执行权限x,更改目录需要w,查看目录需要r 二.在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限. 1.当用户是拥有者时。 在目录中执行cd进入一个目录时,需要当前目录的x,r权限,以及子目录的x权限。 在目录中执行ls需要r和x权限 在目录中执行touch,rm,mv,mkdir,时需要w,...
2019-11-19 22:15:08
195
原创 c++前期知识点总结
一.c++基础知识点 1.命名空间 1.1命名空间可以解决函数,全局变量名重复的问题,包在不同的命名空间里的重复函数实际就是俩个完全不同的函数。 1.2命名空间允许嵌套,嵌套内部和外部没有任何关系。 1.3命名空间允许重名,重名的命名空间会被合并。 1.4使用using关键字可以引用一个命名空间 2.c++输入&输出 2.1 cout << 输出 cin >> 输入...
2019-10-30 19:17:01
273
原创 linux 基本指令总结
1.ls指令 1.1 ls -a 列出目录下的所有文件,包括以 ‘.’ 开头的隐含文件。 1.2 ls -d 将目录像文件一样显示,而不是显示其下的文件。如:ls -d 指定目录 1.3 ls -i 输出文件的i节点的索引信息。 1.4 ls -l 列出文件的详细信息 也可以写成 -ll 1.5 ls -lrt ??? 1.6 ls -k 以k字节的形式表示文件的大小。 1.7 ls -F 在每...
2019-09-29 23:12:54
134
原创 c++ string知识总结
一.标准库中的string 1.string类 1.1 string是表示字符串的字符串类 1.2该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 1.3string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string; 1.4. 不...
2019-09-19 10:25:19
223
原创 c++类与对象知识点总结
一.类 1.类的定义 class className { //类体:由成员函数和成员变量组成 };//注意后边的分号 class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。 类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。 类的两种定义方式: 声明和定义全部放在类体中,需要注意:成员函数如果在类中...
2019-09-05 11:14:49
1568
原创 c++知识点总结1
一.命名空间(namespace) 1.1.命名空间的定义 //普通的命名空间 namespace a { int a; int Add(int left,int right) { return left + right; } } //嵌套的命名空间 namespace b { int a; int b; int Add(int left,int right) { return left + ri...
2019-08-28 17:33:05
181
原创 结构体学习情况总结
c语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。在其他一些高级语言中称为记录。 struct tag { member-list; }variable-list; 例如描述一个学生: struct Stu { char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20...
2019-06-24 11:56:24
488
2
原创 文件及文件操作相关的函数简介
在程序设计中,主要用到俩种文件 (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是程序代码。 (2)数据文件。文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据、货物交易的数据等。 文件一般指存储在外部介质上的数据。 文件类...
2019-06-18 09:32:28
371
原创 动态内存分配
内存的存储分为俩种,一种是静态存储,一种是动态存储 静态存储:程序 在运行期间由系统分配固定的存储空间。 动态存储:程序在运行期间根据需要进行动态分配空间。 动态存储区存放以下数据 1)函数形式参数。在调用函数时给形参分配存储空间。 2)函数中定义的没有关键字static声明的变量,即自动变量。 3)函数调用时现场保护和返回的地址。 C语言提供了一个动态内存开辟的函数: void* malloc ...
2019-06-10 13:15:53
214
原创 一级指针 二级指针 指针和数组 指针数组
一级指针 int *p; 上述代码定义了一个一级指针变量,int为基类型。指针变量的基类型用来指定此指针变量可以指向的变量的类型。一级指针变量也就是存储着另外一个变量地址的变量 在定义指针时应注意指针变量必须指定基类型。且必须给指针变量赋初值,在不确定该指针变量要指向什么的时候应该给其赋NULL,否则该指针变量将会变为一个野指针。 二级指针 char **p; **定义了一个二级指针变量p。p是一...
2019-05-31 13:21:54
460
1
原创 函数指针 函数指针数组 转移表 指向函数指针数组的指针
函数指针 如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针 eg: int (p)(int,int) 定义p是一个指向函数的指针变量,它可以指向函数的类型为整形且有俩个整型参数的函数。p的类型用int()(int,int)表示 函数指针最常用的俩个用途是 1)转换表 2)作为参数传递另一个函数 注意:简单的声...
2019-05-21 23:03:02
197
原创 qsort函数的使用方法
qsort函数是编译器函数库自带的快速排序函数,使用时要引用头文件<stdlib.h> 函数原型为 void qsort (void* base, size_t num, size_t size,int (compar)(const void,const void*)); base :指向要排序的数组的第一个对象的指针 num :指向数组中的基本元素的个数 size :数组中每个...
2019-05-21 20:39:47
860
原创 数组指针
int (*p)[3] 这个是一个数组指针p先与 * 结合组成一个指针变量,然后与【3】结合组成一个数组但是其基类型是指针,所以为数组指针。 int main(){ int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; int(*p)[4]; int *q[3]; int i; p = a; for (i = 0; i < 3;...
2019-05-20 07:51:25
114
原创 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个只出现一次的数字,编程实现。
#include<stdio.h> #include<stdlib.h> void find_num(int a[],int n){ int i, j,tmp = 0; for (i = 0; i < n-1; i++){ for (j = 0; j < n - i - 1; j++){ if (a[j] > a[j + 1]){ tmp = a[j]; ...
2019-05-14 17:06:58
219
原创 日常练习
1.#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //实现一个函数,可以左旋字符串中的k个字符。 //ABCD左旋一个字符得到BCDA //ABCD左旋两个字符得到CDAB void reserve(char *left, char ...
2019-05-14 12:28:41
144
原创 Day6
1.递归和非递归分别实现求第n个斐波那契数。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int fibN(int n){ int an=1, an_1=1, an_2 = 2; int i; for (i = 2; i < n; i++){ an = an_1 + an_2...
2019-04-11 11:21:35
196
原创 三子棋
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define Max_row 3 #define Max_col 3 void Menu(){ printf("******************\n"); printf(“1.游戏开始\n”); printf(“0.退出游戏\n...
2019-04-04 10:36:39
238
原创 day5
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //打印乘法表 int Chengfabiao(int n){ int i = 0; int j = 0; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j+...
2019-04-02 13:01:57
154
原创 编程day4
2.写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找) #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(){ int a[] = {1,2,3,4,5,6,7,8,9,10}; int left = 0; int right = ...
2019-03-29 15:02:46
167
原创 猜数字
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> int Menu(){ printf("******************\n"); printf(“1.start*\n”); printf(“0.return\n”); printf(...
2019-03-27 13:05:06
190
原创 编程day3
1.在屏幕上输出以下图案: * #include<stdint.h> #include<stdlib.h> int main1(){ int i = 0; int j = 0; int m = 0; int n = 0; for (i = 1; i <= 13; i=i+2){ for (j = 1; j <= i; j++){ pr...
2019-03-25 13:24:23
215
原创 编程day2
将数组A中的内容和数组B中的内容进行交换。(数组一样大) #include<stdio.h> #include<stdlib.h> #include<math.h> void printfArray(int a[],int n){ int i; for (i = 0; i < n; i++){ printf(" %d", a[i]); } putchar...
2019-03-22 13:59:00
224
原创 编程日常day1
给定两个整形变量的值,将两个值的内容进行交换。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int a = 1; int b = 2; int c = 0; c = a; a = b; b = c; p...
2019-03-20 11:50:16
153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅