自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 继承

编写类时,并非要从空白开始。如果你要编写的类是另一个现成的类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了父类的所有属性和方法,同时好似定义自己的属性和方法。class Car(): """一次模拟汽车的简单尝试""" def __init__(self,make,model,year): ...

2020-02-23 13:39:58 174

原创 Python类

class Dog():#在Python中,首字母大写的名称指的是类。 """一次模拟小狗的简单尝试""" #__init__()是一个特殊的方法,每当根据Dog类创建新实例时,Python都会自动运行它 def __init__(self,name,age):#在这个放大的定义中self必不可少,还必须位于其他形参的前面。 #Python调用这个__in...

2020-02-20 13:11:23 196

原创 将函数存储在模块中

函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。imprt语句允许在当前运行的程序文件中使用模块中的代码。通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高级逻辑上。将函数存储在独立文件中后,可与其他程序员共享这些文件而不是整个程序。1、导入...

2020-02-12 15:46:59 643

原创 函数

1、定义函数:关键字def用来告诉python你要定义一个函数。函数后面所有的缩进构成了函数体。要调用函数,可依次指定函数名以及用括号括起的必要信息。def greet_user():#函数定义,向Python指出函数名,还可能在括号内指出函数为完成其任务需要什么样的信息 #最后定义以冒号结尾 #显示简单的问候语 print("hello!"...

2020-02-11 18:13:29 149

原创 Python用户输入

函数input()的工作原理:函数input()让,Python将程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,以方便使用。message = input("Tell me something,and i will repeat it back to you: ")print(message)函数input()接受一个参数:即要向用户显示的提示或...

2020-02-10 18:22:22 428

原创 列表(修改、添加和删除元素)

列表列表由一系列特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。#在Python中,用方括号来表示列表,并用逗号来分隔其中的元素bicycles=['trck','cannondale','redline','speclialized']print(bicycles)#输出包括...

2020-02-10 17:28:13 2305

原创 Python字典

在Python中,字典是一系列键值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关的值可以是数字、字符串、列表乃至字典。事实上可以将任何python对象用作字典中的值。在python中,字典用放在花括号中的一系列键值对表示:alien_0={'color':'green','points':5}访问字典中的值:要获取与键相关联的值,可依次指定字典名和放在括号内的...

2020-02-10 16:59:05 127

原创 python基础

Python自带了一个在终端窗口中运行的解释器,让你无需保存并运行整个程序就能尝试运行Python代码片段编写的大多数程序都将直接在文本编辑器中运行,但有时候,从终端运行程序很有用。在命令窗口中,要在文件系统中导航,可使用终端命令cd;要列出当前目录中的所有文件,可使用命令dir(表示目录:directory)变量定义是通过对变量的第一次 进行赋值来实现的。#x 这个x是...

2019-11-25 19:22:43 421

原创 TCP三次握手四次挥手

TCP的运输连接管理:TCP是面向连接的协议。运输连接时用来传送TCP报文的。TCP运输连接的建立和释放是每次面向连接的通信中必不可少的过程。因此,运运输连接就有三个阶段:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。在TCP连接建立过程中要解决以下三个问题:1、要使每一方能够确知对方的存在2、要允许双方协商一些参数(如最大窗口值、是否使用窗...

2019-09-05 14:41:16 116

原创 TCP协议

TCP协议是TCP/P协议族中另一个重要的协议。和IP协议相比,TCP 协议更靠近应用层,因此在应用程序中具有更强的可操作性。一些重要的socket选项都和TCP协议相关。TCP头部信息。TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口号、目的端端口号,管理TCP连接,控制两个方向的数据流。TCP状态转移过程。TCP 连接的任意一端都是一个状态机。在TCP连接从建立到断开的整...

2019-08-27 18:24:43 173

原创 IP协议

IP协议是TCP/IP协议族的核心协议,也是socket网络编程的基础之一。是网络层最核心的协议IP头部信息:IP头部信息出现在每个IP数据报中,用于指定IP通信的源IP地址、目的端IP地址,指导IP分片和重组,以及指定部分通信行为。IP数据报的路由和转发。IP数据报的路由和转发发生在除目标机器之外的所有主机和路由器上。他们决定数据报是否应该转发以及如何转发。IP服务的特点:IP协议是...

2019-08-25 18:57:22 117

原创 冒泡排序

/*冒泡排序 大数沉底 两两比较 时间复杂度O(n^2) 稳定 */#include<stdio.h>void BubbleSort(int *arr,int len){ int i; int j; int tmp; for(i=0;i<len-1;i++)//控制循环次数 每次只能确定一个数的位置 { for(int j=0;j+...

2019-08-11 11:20:16 122

原创 希尔排序

/*希尔排序又称缩小增量排序,它也是一种属插入排序的方法 但在时间效率上,较直接插入排序有加大的改进,它的基本思想是:先将整个待排序记录序列分割成若干个子序列分别直接进行直接插入排序,待整个序列中的记录”基本有序“时,再对全体记录进行一次直接插入排序gap增量,即组数也是间隔值*/#include<stdio.h>void Shell(int *arr,int len,...

2019-08-11 10:40:28 258

原创 插入排序

插入排序是通过将当前第i个待排元素i与数组前i-1个已经有序的元素j进行两两比较,如果j元素小于i,将i插在j元素的后面/*排序过程中涉及的存储器不同,将排序方法分为两大类:一类是内部排序指的是待排序记录存放在计算机随机存储器中的排序过程 另外一类是外部排序指的是待排序记录的数量很大,以至于内存不能一次容纳全部记录,在排序过程中尚需对外存进行访问的排序过程*///直接插入排序#...

2019-08-11 10:14:32 78

原创 进程和线程

进程的概念:运行中的程序。程序:存储在磁盘上的可执行文件。进程创建:1、给新进程分配一个唯一的进程标识号,此时在主进程表中增加一个新项目,表中的每个项目指向一个进程。(进程标识号部分包括进程ID和其他相关的ID)。2、给进程分配空间。3、初始化进程控制块4、设置正确的连接。例如,如果操作系统把每个调度队列都保存成链表,则新进程必须放置在就绪或挂起链表中。5、创建或扩充其他数据结构。1)f...

2019-07-25 22:28:13 264

原创 共享内存,消息队列

共享内存是最高效的IPC机制,因为它不涉及进程之间的任何数据传输。这种高效率带来的问题第,我们必须用其他辅助手段来同步进程对共享内存的访问,否则会产生竞态条件。因此,共享内存通常和其他进程间通信方式一起使用。Linux共享内存的API都定义在sys/shm.h头文件中shmget系统调用创建一段新的共享内存,或者获取一段已经存在的共享内存。定义如下:#include<sys/sh...

2019-07-23 16:31:53 596

原创 信号 信号量

信号是由、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可以由如下条件产生:1、对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。比如输入ctrl+c通常或给进程发送一个中断信号2、系统异常。比如浮点异常和非法内存段访问。3、系统状态变化4、运行kill命令或调用kill函数1)改变信号响应方式signal()默...

2019-07-23 15:41:57 580

原创 New和Delete的区别

New和malloc的区别?C中动态开辟内存: malloc函数开辟 free函数释放Void* malloc(size_t size)Void free(void* ptr)C++中动态开辟内存:New关键释放字开辟 DeleteNew 关键字Int *p=new int;Delete 关键字Delete p;1、New是关键字 malloc是函数2、...

2019-07-21 09:21:16 898

原创 最近点对问题

用x轴上某个点m将s划分成两个集合使得s1的元素都比m小,s2的元素都比m大,这样对于所有 p q有p<q递归的在s1 s2上找出其最近点对|p1 p2| |q1 q2| p3是s1中最大的 q3是s2中最小的s中最近点对或者是{p1,p2}或者是{q1,q2}或者是某个{p3,q3}#include<iostream>#include<...

2019-07-20 20:31:46 122

原创 二叉树的创建和遍历(中序 先序 后序)

二叉树:不仅要存放数据,而且要存放数据与数据之间关系的一种数据结构。1、每个点都只能最多有两棵子树,即二叉树不存在度大于2的节点2、二叉树的子树有左右之分,其子树的次序不能颠倒二叉树的性质1、 在二叉树的第i层上至多有2^(i-1)个结点2、深度为k的二叉树至多有2^(k)-1结点3、对任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+14、...

2019-07-20 20:02:47 2197

原创 笔记3(从c到c++)引用

引用引用是给一个变量起别名定义引用的一般格式:类型 &引用名=变量名;int a=1; int &b=a;//b是a的别名,因此a和b是同一个单元(注意:定义引用时一定要初始化,指明该引用变量是谁的别名) int &b;//error在实际应用中,引用一般用...

2019-05-17 21:25:53 109

原创 笔记2(从c到c++)

C++中增加的作用域标识符::1、用于对与局部变量同名的全局变量进行访问2、用于表示类的成员#include<iostream>using namespace std;int val=100;int main(){ int val=40; cout<<val<<endl; cout<<::val<<endl;/...

2019-05-16 21:23:00 106

原创 MYSQL存储引擎

MYSQL架构存储引擎:一种针对于文件的读写机制(N种)存储引擎是基于表的1、MYISAM 支持全文索引 不支持外键、不支持事务 (表锁)2、INNODB 不支持全文索引 支持外键、支持事务 (行锁)锁机制:1、MYISAM(所有的连接称为会话)表锁 锁定方式 1、读锁(共享读锁) 2、...

2019-05-07 21:58:53 152

原创 内存

由GDTR访问全局描述符表是通过段选择子(实模式下的寄存器)来完成 。段选择子是一个16位的寄存器(同实模式下的段寄存器相同) 段选择子包括三部分:描述符索引(index)、TI、请求级特权(RPL). 在Linux内核中基本不使用局部段描述表LDT,LDT只是在VM86模式中运行wine以及其它在Linux上模拟运行Windows软件或DOS软件的程序中...

2019-05-06 21:27:06 116

原创 epoll底层代码

IO复用方法(select poll epoll)select poll :1、每次循环都需要向内核空间拷贝描述符 2、内核实现:轮询方式O(n) 3、找到就绪描述符:O(n)epoll(Linux特有):1、创建内核事件表,每个描述符只添加一次 ...

2019-04-26 22:06:14 281

原创 笔记1(从c到c++)

bool类型逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假)存储字节在不同编译系统中可能有所不同,vc++中为1个字节可以当整数用(true一般为1,false为0)const限定符用const给字面常量起个名字(标识符),这个标识符就称为标识符常量,因为标识符常量的声明和使用形式很像变量,所以也称为常变量。定义的一般形式:const 数据类型 常量名=常...

2019-04-23 16:36:40 94

原创 SQL语句

在管理员用户下:service mysqld startmysql -u root -p进入数据库SQL语句1.DDL 数据定义语言 create drop alter show 1.创建库 CREATE DATABASE [IF NOT EXISTS] dbname; create database [...

2019-04-22 22:00:18 212

原创 Fork底层代码

Linux是抢占多任务操作系统。使用 uname -a 可以查看版本信息进程在她被创建的时刻开始存活。在Linux系统中,这通常是调用Fork()系统调用的结果。该系统通过调用复制一个现有进程来创建一个全新的进程。调用Fork()的进程被称为父进程,新产生的进程被称为子进程。在该调用结束时,在返回点这个相同位置上,父进程恢复执行,子进程开始执行。fork()系统调用从内核返回两次:一...

2019-04-22 21:24:38 224

原创 一个不能被继承的类

class A;class Base{private: Base(){} friend class A;//友元关系不可继承};class A:virtual public Base{public: A(int a = 0) :ma(a){}protected: int ma;};class B;virtual public Base{};int main(...

2019-04-01 10:19:53 196

原创 I/O复用(epoll)

epoll是Linux特有的I/O复用函数。它在实现和使用上与select、poll有很大差异。首先,epoll使用一组函数来完成任务,而不是单个函数。其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无需像select和poll那样每次调用都要重复传入文件描述符集或事件集。但epoll需要使用一个额外的文件描述符,来唯一标识内核中的这个事件表。这个文件描述符由epoll...

2019-03-21 17:06:50 144

原创 Shell编程(1)

shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令。虽然shell表面上和Windows的命令提示符相似,但是它具备更强大的功能以完成相当复杂的程序。你不仅可以通过他执行命令、调用Liunx工具,还可以自己编写程序,shell执行shell程序,这些程序通常被称为脚本,他们是在运行时解释执行的。(Linux程序设计 中文第4版)bash是shel...

2019-03-20 16:25:28 165

原创 c++智能指针(auto_ptr)

auto_ptr的简单实现#include<iostream>using namespace std;/* 智能指针 boos库里的智能指针 c++11以前ato_ptr 后 unique_ptr shared_ptr weak_ptr*///auto_ptr智能指针的实现template<typename T>class Smar...

2019-03-18 21:21:17 178

原创 c++类的生存周期

#include<iostream>using namespace std;/* 类和对象 1、构造函数 初始化对象所占内存空间 2、析构函数 释放对象所占资源 3、拷贝构造函数 用一个已存在的对象来构造一个相同类型的对象 形参必须使用引用...

2019-03-18 21:03:51 389

原创 I\O复用(poll)

int poll(struct pollfd*fds,int nfds,int timeout)struct pollfd{ int fd;用户关注的文件描述符 short events;用户关注的事件 short revents;由内核修改,表示发生了哪些}nfds:数组的长度 元素的个数,用户关注的文件描述符的个数...

2019-03-16 22:39:07 134

原创 智能指针_继承多态

自主的内存回收机制:1、手动开辟 2、系统释放栈上的内存:1、系统开辟 2、系统释放堆上的内存:1、手动开辟 2、手动释放对象的生存:1、开辟内存 2、调用构造函数对象的销毁:1、调用析构函数 2、释放内存int *p=new int 堆上开辟内存,把操作的所有权限交给栈上的变量,栈上的内存系统释放,而堆上的内存需要手动释放可以把权限...

2019-03-16 21:40:03 691

原创 全排列

//全排列#include<iostream>#include<vector>#include<algorithm>using namespace std;//排列树void Perm(int *br,int k,int m){ if(k==m) { for(int i=0;i<=m;++i) { cout<<...

2019-03-13 22:54:33 106

原创 递归/分治策略 二分查找的递归与非递归

规模问题:分治策略,将一个难以解决的规模大的问题,分解成一些规模较小的相同问题#include<iostream>using namespace std;int fac(unsigned int n)//用递归解决阶乘{ if(n<=1) return 1; else { return fac(n-1)*n; }}int fun(unsigned...

2019-03-13 20:31:19 350

原创 C++方法调用&&类类型的返回类型&&函数指针

常对象不能调用普通的成员方法常对象只能调用常方法普通对象 能调用常方法常方法 不能调用普通的成员方法普通的成员方法可以调用常方法不能返回局部变量的指向或者引用返回值规则: 1、类类型 都是以临时量的方式带回(寄存器无法取地址) 2、其他类型(内置类型)<=4字节 由eax寄存器带回 ...

2019-03-13 16:12:48 1032

原创 I/O复用(select)

I/O复用(select):一个进程或一个线程能够同时对多个文件描述符提供服务1、TCP服务器设置 socket bind listen2、将socket添加到fds中3、启动while循环 3.1将fds中的文教描述符添加到fdset集合中 3.2启动select 3.3循环探测哪些文件描述符就绪 3.3.1 sockfd 有客户端完成了三次握手 a...

2019-03-04 21:23:28 148

原创 exec函数族

替换进程:exec系列execl execlp execle execv execvp(库函数)execve(系统调用)fork+exec创建一个新进程//main1.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<assert.h>#includ...

2019-01-21 20:19:42 128

空空如也

空空如也

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

TA关注的人

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