自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux——线程池

线程池多个线程组成的集合下面来看一下线程的生命周期:在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存。而且内存资源是及其宝贵的,所以就提出了线程池的概念。线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。线程池避免了在处理短时间...

2019-10-29 09:13:53 328

原创 linux——线程

什么是线程线程:也称轻量级进程(Lightweight Process , LWP),是程序执行流的最小单元。而多线程就是指,在一个进程中有多个执行流,在同时执行。在一个程序里的一个执行路线叫做线程,线程是一个进程内部的控制序列。一个进程可以拥有多个线程,但是至少都有一个执行线程(单线程进程),线程的执行粒度比进程更细致,线程资源共享。Linux线程在Linux中——并不存在真正的线程,L...

2019-10-22 15:36:14 171

转载 linux——fork函数

fork函数Fork函数调用一次,返回两次。fork函数会创建一个子进程,fork之前的进程为父进程,所以fork函数结束后会有两个进程。fork函数在父进程中返回子进程的Pid(非0值),子进程的返回值为0.fork后 父子进程共享数据,无论当父进程还是子进程需要修改数据时,系统会以页为单位将要修改的数据所在的页拷贝出来给另一个进程。系统一般会让子进程优先运行。fork函数是unix...

2019-10-21 14:36:35 276

原创 linux内存管理——mmap函数

一. 概述内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间<---->用户空间两者之间需要大量数据传输等操作的话效率是非常高的。mmap存在的意义就是减少了用户态和内核态数据的拷贝,这样能够大大提高效率。mmap函数把一个文件或者一个Posi...

2019-10-10 16:49:42 606

原创 linux文件操作

文件及文件描述符概述在Linux中,一切皆文件!所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程所打开的文件的记录表;当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,需要把文件描述符作为参数传递给相应的函数。通常,一个进程启动时,都会打开3个文件:标准输入:对应文件描述符为0(...

2019-10-09 17:31:52 499

转载 linux课堂笔记(4)shell脚本简单运用

shell脚本并不能作为正式的编程语言,因为它是在linux的shell中运行的,所以称为shell脚本。事实上,shell脚本就是一些命令的集合。shell脚本在linux下还是非常重要的。shell脚本能帮我们很方便地管理服务器,我们可以指定一个任务计划,定时去执行某个shell脚本以满足需求。在正式编写shell脚本之前,建议将所有自定义的脚本放到 /usr/local/sbin/ 目录...

2019-09-28 18:01:26 604

原创 linux课堂笔记(3)正则表达式

正则表达式是什么正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作,其中最为重要作用是匹配。正则表达式与通配符正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。正则表达式是包含匹配,即文件中的语句中包含了查找的字符串,那么就显示整行语句。通配符用来匹配符合条件的文件名,通配符...

2019-09-28 14:43:15 174

原创 linux课堂笔记(2)软链接和硬链接和添加账户

【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被

2019-09-25 16:37:46 224

原创 linux课堂笔记(1)

学习内容:1.理解linux以及它的应用范围2.熟悉一些linux操作命令(安装用的工具可以为虚拟机、winscp、xshell)常见的版本:Debian/Ubuntu、Red Hat/Fedora/CentOS、SUSE、Mandriva下面我们开始学习linuxlinux是啥Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统...

2019-09-24 17:19:51 252

原创 C++11部分总结

类型推导 Auto Type过去的这种冗长的类型声明1.std::map<int, std::string>::const_iterator itr = m.find(1); 现在可以写成这样了1.auto itr = m.find(1); 编译器会自动推导出正确的类型。字面量也可以:1.auto i = 1; // int 2....

2019-09-16 14:23:17 320

转载 C++STL迭代器

【摘要】本文是对STL–迭代器(iterator)的解释转载:http://www.cnblogs.com/qunews/p/3761405.html1 头文件所有容器有含有其各自的迭代器型别(iterator types),所以当你使用一般的容器迭代器时,并不需要含入专门的头文件。不过有几种特别的迭代器,例如逆向迭代器,被定义于中。2 迭代器类型迭代器共分为五种,分别为: Input ...

2019-09-11 11:16:55 132

原创 STL标准模板库基本组件介绍以及简单用法

1、STL基本头文件STL主要包含容器、算法和迭代器三个部分。容器实现了大多数数据结构;迭代器类似指针,通过它的有序移动将容器中的元素与算法关联起来,是实现STL的基础。常用的STL包含头文件如下:容器(contain)是容纳,包含一组元素的对象。而容器又包含以下几种:这七种容器可以分为两种基本类型:顺序容器:一组具有相同类型的元素以严格的线性形式组织起来。向量,双端队列,列表容器...

2019-09-09 18:07:12 673

原创 几种常用的排序算法

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。冒泡排序冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫...

2019-09-05 16:29:19 274

原创 类模板及函数模板

C++最重要的特性之一是代码重用,实现代码重用,代码须具有通用性。就引入了模板的概念函数模板:定义形式template<模板参数表>类型名 函数名(参数表){函数体的定义}所有函数模板的定义都是右关键字template开始。template或者template函数模板的实例:#include<iostream>using namespace std...

2019-09-03 17:04:10 194

原创 虚函数与虚继承

虚函数多态:至少有两个有继承关系的类.基类与派生类中有同名同参的函数,且基类函数被virtual所修饰(覆盖).必须通过基类的引用或指针调用该函数..声明语法:virtual 虚函数类型函数名(形参表)多态性:在C++中,多态类型是指声明或者继承了至少一个虚函数的类型,反之则为非多态类型。对于非多态类型:struct A{void foo() {}};...A a...

2019-09-03 16:08:53 188

原创 运算符重载

运算符重载:是把运算符的操作数扩展到类对象上运算符重载有两种形式:成员函数形式、普通函数形式成员函数形式一般般语法形式:返回类型 operator 运算符(形参表){函数体:}String& operator=(const String& ref){}普通函数形式:int operator+(const int& a, const int& ...

2019-08-29 16:57:14 90

原创 new delete 以及浅拷贝与深拷贝的区别

动态内存分配c++中建立和删除堆对象的使用两个运算符:new和deletenew动态分配内存(或者是动态创建堆对象)语法形式为:new 数据类型(初始化参数列表)该语句在程序运行过程中申请分配于存放于指定类型数据的内存空间,并根据初始化参数列表中给出的值进行初始化。如果内存分配成功,new运算便返回一个指向新分配内存首地址的指针,可以通过这个指针对堆对象进行访问。int *point ...

2019-08-26 18:25:54 587

原创 对C++中const与static的总结

constconst 类型说明符 对象名数据成员值在整个生存期间不能被改变,const修饰的对象为常对象,常对象必须初始化,且不能被更新。注:在声明对象时,把const关键字放在后面也是可以的,不过人们习惯于放在前面class R{public: R(int r1, int r2) :r1(r1), r2(r2)//初始化 { } void print(); void prin...

2019-08-23 16:45:46 358

原创 类的组合及结构体与联合体

类的组合解决复杂问题的有效方法就是将其分解为简单问题的组合在面向对象程序设计中,可以对复杂对象分解、抽象,把一个复杂对象分解为简单对象的组合,有比较容易理解和实现的部件对象装配而成对类组合的描述:一个类内嵌其他类的对象作为成员的情况关系:包含与被包含的关系例如:线段类#include<iostream>#include<cmath>using namespa...

2019-08-22 18:50:49 489

原创 构造函数与拷贝构造函数,以及析构函数

构造函数:创建类对象构造函数是在对象被创建时利用特定的值构造对象,并将对象初始化为一个特定的状态。构造函数的函数名与类名相同,并且它没有返回值,而且构造函数一般被声明为公有函数。如果类中没有写构造函数,编译器会自动生成一个隐含的默认构造函数,该构造函数的参数列表和函数体皆为空。但是如果类中声明了构造函数(无论有没有参数),编译器都不会再为之生成隐含的构造函数。作用:创建对象初始化其值...

2019-08-21 13:12:24 310

原创 字符串归一化

题目描述通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。例如字符串"babcc"归一化后为"a1b2c2"#include<stdio.h>int main(){ int a[26] = { 0 }; char c; while ((c = getchar()) != '\n'...

2019-08-16 15:00:50 851

原创 表达式求值

题目描述今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:1+23=71(2+3)=5123=6(1+2)3=9现在小易希望你帮他计算给定3个数a,b,c,在它们中间添加"+", "", “(”, ")"符号,能够获得的最大值。输入描述:一行三个数a,b,c (1 <= a, b, c <= 10)...

2019-08-16 14:36:57 84

原创 函数设计的一般原则和技巧

原则1.原则上尽量少使用全局变量,因为全局变量的生命周期太长,容易出错, 也会长时间占用空间.各个源文件负责本身文件的全局变量,同时提供一对对外函数,方 便其它函数使用该函数来访问变量。比如:niSet_ValueName(⋯);niGet_ValueName(⋯); 不要直接读写全局变量,尤其是在多线程编程时,必须使用这种方式,并且对读写操作 加锁。2.参数命名要恰当,顺序要合理。3.如果...

2019-08-14 16:52:39 771

原创 13个人围成一圈,从第一个人开始顺序报号。凡报道3者退出圈子。找到最后留在圈子中的人原来的的序号。

13个人围成一圈,从第一个人开始顺序报号。凡报道3者退出圈子。找到最后留在圈子中的人原来的的序号。#include <stdio.h>#include <stdlib.h>#define N 13struct person{ int number; int next;}stu[N + 1]; int main() { //赋值 int i; for ...

2019-08-08 16:36:20 1058

原创 链表的逆序输出,按值删除,归并排序

链表的逆序输出按值删除归并排序链表的逆序输出:void Reverse(PNODE * ppHead){ if (!(NULL == *ppHead || NULL == (*ppHead)->next)) { PNODE p1, p2, p3; p1 = *ppHead; p2 = p1->next; p3 = p2->next; p2-&gt...

2019-08-08 11:41:03 217

原创 链表的建立以及插值

链表是一大堆有序数据的结合一致性,有序性,不一定连续链表的每一个元素称为“结点”结点=数据域+指针域链表=一个头指针+n个结点我们可以吧(*p).num改用p->num来代替,他表示p所值向的结构体变量中的num成员。这有三种方法与之等价:1,结构体变量。成员名2.(*p).成员名3. p->成员名创建链表#include<stdio.h> ...

2019-08-06 19:21:38 824

原创 求函数定积分和围圈报数问题

用矩形法求定积分。#include<stdio.h>#include<math.h>double f1(double x){ return sin(x);}double f2(double x){ return cos(x);}double f3(double x){ return pow(2.7,x);}double integral...

2019-08-05 18:27:36 149

原创 C语言 指针 随记(1)

指针:有效的表示复杂的数据结构;能动态分配内存;方便地使用字符;有效而方便的使用数组;在调用函数时能获得一个以上的结果;能直接处理内存单元地址等。指针:一种存放地址的数据类型;地址:内存中存储单元的位置编号;存储单元:大小固定,1Byte;x86:sizeof(指针) == 4;(默认)x64: sizeof(指针) == 8;指针变量的定义类型名 * 指针变量名;类型名:可以是...

2019-08-01 21:10:45 124

原创 C语言 函数随记(1)

函数在C中,子程序的作用由函数来完成。一个程序由一个主函数和若干个其他函数构成。主函数调用其他函数,其他函数也可以互相调用用途:1.提高代码复用性 好处:便于分别编写,分别编译2.功能分解 提高调试效率函数:主调函数(实参)。功能或服务的使用方式称为主调函数被调函数(形参)。功能或服务的提供方式称为被调函数方向:...

2019-07-30 16:37:36 329

原创 给出年月日,计算该日是该年的第几天以及求方程ax^2 +bx+c=0的根

给出年月日,计算该日是该年的第几天#include<stdio.h>int leapYear(int y){ if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { return 1; } else return 0;}int judge(int y, int m, int d){ i...

2019-07-27 18:27:49 197

原创 使用数组求两个相对路径的绝对路径

使用数组求两个相对路径的绝对路径:dir[] = “c./test/abc/haha/123/tom.doc”;dir3[] = “c./test/abc/123/hehe”;dir3[]="…/…//haha/123/tom.doc"char dir[] = "c./test/abc/haha/123/tom.doc"; char cur[] = "c./test/abc/123/he...

2019-07-25 18:11:24 174

原创 折半查找以及逆序输出

将一个数逆序输出。`主要程序为: for (i = 0; i < len/2; i++) { t = a[i]; a[i] = a[len - 1 - i]; a[len - 1 - i] = t; }` 例题:将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8int a[] = { 8,6,5,4,1 },i,t;...

2019-07-23 21:01:10 309

原创 伪随机序列rand()生成不同随机值

rand()rand()函数是产生随机数的一个随机函数。使用该函数首先应在开头包含头文件stdlib.h#include(C++建议使用#include,下同)(2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。(3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如...

2019-07-21 10:57:22 2222

原创 几种循坏的使用

`输入一行字符,分别统计其英文字母,空格,数字以及其他字符的个数char a[100];int j = 0,k=0,x=0,b=0;gets_s(a);for (int i = 0; a[i]; i++){if (a[i]>‘a’&&a[i]<‘z’|| a[i]>‘A’&&a[i]<‘Z’){j++; } else if...

2019-07-18 20:28:33 169

原创 C语言中简单的知识点

C语言中小知识点算法处理的对象是数据,而数据是以某种特定的形式存在(例如整数,实数,字符等形式)。不同数组之间还存在某些联系(例如由若干个整数组成一个整数数组),数据结构指的结构指的是数据的组织形式。而且不同的计算机语言所定义和使用的数据结构是不同的。数据类型:基本类型:整形:短整形(short int)基本整形( int)长整形(long int)字符型(char)浮点型:单精度(f...

2019-07-16 18:40:50 253

空空如也

空空如也

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

TA关注的人

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