自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HHA的博客

越努力,越幸运!

  • 博客(53)
  • 收藏
  • 关注

原创 pycharm项目中的.idea文件夹

pycharm更新代码遇到问题

2022-06-28 17:19:25 3388 1

原创 sql集合

sql基本操作

2022-06-28 16:03:37 142

原创 python 标准异常类

python 标准异常类:

2022-04-19 17:21:17 545

原创 python编程-从入门到实践-if语句

python编程-从入门到实践-if语句一个简单的if语句cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars: if car == 'bmw': print(car.upper()) else: print(car.title()) 结果显示: Audi...

2019-08-28 17:44:51 196

原创 python的列表

python的列表在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles)结果显示:['trek', 'cannondale', 'redline', 'specialized'] 1.那么如何合理访问列表元素?列表是有...

2019-08-24 22:31:36 141

原创 新手理解之python中的类和对象

新手理解之python中的类和对象1.1.类是什么?类是一个抽象的概念,泛指很多相似的个体组成的,具有共同特征的事物。 比如类是一个车,这车就包括各种车型2.对象是什么?类里面的具体的一个事物(必须要实际存在的一个事务)。 比如 五菱神车S(此车就是实际存在的一种车),他是车这个类的具体化,先有类,才有对象类与对象的举例:def eating(): print("吃饭")d...

2019-08-23 16:02:10 401

原创 linux C 编译错误 error: ‘EOWNERDEAD’ undeclared (first use in this function)

linux C 编译错误 error: ‘EOWNERDEAD’ undeclared (first use in this function)error: ‘EOWNERDEAD’ undeclared (first use in this function)error: ‘ENOTRECOVERABLE’ undeclared (first use in this function)...

2019-08-21 10:25:03 2748

原创 python中的元组

python中的元组1.元组的定义元组的格式:元组名 = (元素1,元素2,元素3,…)Python的元组与列表类似,元组使用小括号,列表使用方括号。例如:my_tuple=(1,3,5)如何定义一个空元组?my_tuple=() 或者my_tuple=tuple()---这就是空元组的两种表示方法当元组中只包含一个元素时,需要在元素后添加一个逗号例如:tup= (50,)2....

2019-08-21 10:23:09 769

原创 python中的字典

python中的字典1.字典的定义列表是适合于将值组织到一个结构中并且通过编号对其进行引用。字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。2.字典的创建与使用字典由多个键和其对应的值构成的键—值对组成,键和值中间以冒号:隔开,项之间用逗号隔开...

2019-08-20 17:22:24 180

原创 面向过程与面向对象

面向过程与面向对象一、面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始...

2018-09-06 14:26:35 368

原创 关于结构体内存对齐总结

关于结构体内存对齐总结复习目标: (1)什么是结构体? (2)一般在什么情况下用到结构体? (3)什么是结构体内存对齐?为什么要对齐?怎样对齐? (4)对齐参数如何设置?可以设置为按照任意字节数对齐吗? (5)如何知道结构体某个成员相对于结构体起始位置的偏移量(1)什么是结构体? 定义:结构体是一系列数据的集合这些数据可能描述了一个物体,也可能是对一个问题的抽象。举个...

2018-08-31 10:32:11 252

原创 STL的面试

1.说说std::vector的底层(存储)机制。vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。2.std::vector的自增长机制。当已经分配的空间...

2018-08-30 21:44:02 258

原创 管道、消息队列、共享内存、信号量的特点

管道、消息队列、共享内存、信号量的特点在之前我们已经了解过了进程间通信的几种方式:管道、消息队列、共享内存以及信号量。今天我们就来总结一下这几种方式的各自的特点分别是什么,和他们相应的应用场景。是对于这个知识点的一个复习和巩固。为什么要有进程间通信?1、为了传输数据:一个进程需要将它的数据发送给另外一个进程; 2、为了共享资源:多个进程之间有时需要共享同样的一份资源; 3、为了...

2018-08-27 10:19:06 1741

原创 线程安全

线程安全(常考)线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据不是期望的数据通俗解释:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每...

2018-08-26 21:46:04 175

原创 多线程面试题

多线程面试题首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试然后是一些选择题。最后是综合题即难一些的问答题或是编程题。这种题目当然是最难解决了,解决这类题目时一定要考虑全面和细致。一.概念性问答题第一题:线程的基本概念、线程的基本状态及状态之间的关系?概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不...

2018-08-26 21:14:36 197

原创 Linux inode相关知识

Linux inode相关知识一、什么是inode? inode是文件系统(File System)上的一个概念,是文件系统上用来保存文件信息的一种结构。从根本上讲, inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外),inode包含了如下基本信息(只列出了常用的):inode 编号用来识别文件类型以及用于 stat C 函数的模式信息文件的链...

2018-08-26 21:06:52 403

原创 输入URL后发生了什么?

输入URL后发生了什么?该问题可以理解为,①输入URL后,②浏览器向服务器发起了一个请求,传输了一些数据。③服务器接收到请求后,④作出了相应的处理,然后返回数据到浏览器。⑤浏览器再做相应的处理,最后将页面展现在我们面前。1. 浏览器如何接收到输入URL的信号 首先,当我们在键盘上敲击某个键时,键盘内的处理器会先对键矩阵进行分析,然后将数据发送到计算机。有很多方式可以完成这一过程,比如US...

2018-08-22 10:44:10 3721

原创 五层结构

概述 OSI分层(7层) 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层 TCP/IP分层(4层) 网络接口层、网络层、运输层、应用层 五层协议(5层) 物理层、数据链路层、网络层、运输层、应用层五层结构的概述 应用层:通过应用进程间的交互来完成特定网络应用 数据:报文 协议:HTTP, SMTP(邮件), FTP(文件传送) 运输层:...

2018-08-21 21:49:25 2866

原创 tcp

问题1. 3次握手和4次挥手 TCP使用3次握手建立一条连接,该握手初始化了传输可靠性以及数据顺序性必要的信息,这些信息包括两个方向的初始序列号,确认号由初始序列号生成,使用3次握手是因为3次握手已经准备好了传输可靠性以及数据顺序性所必要的信息,该握手的第3次实际上并不是需要单独传输的,完全可以和数据一起传输。 TCP使用4次挥手拆除一条连接,为何需要4次呢?因为TCP是一个全双工...

2018-08-21 19:47:25 190

原创 C++中list、deque以及vector对比

C++中list、deque以及vector对比C++的容器类包括两大类:1.顺序存储结构,包括vector、list、deque等等; 2.关联存储结构,包括set、map、multiset等等;对比vector、list以及deque这三种顺序存储结构注: 顺序存储结构表明,其中的每个元素之间是有先后顺序的,这个顺序只和插入/删除等操作有关,而与元素的值无关。一、ve...

2018-08-20 16:33:34 2181 1

原创 C++STL常见面试题

C++STL常见面试题1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检...

2018-08-20 16:23:55 948

原创 面试题:vector和list有什么区别?分别在什么场景下应用?

面试题:vector和list有什么区别?分别在什么场景下应用?Vector:顺序表优点:和数组类似开辟一段连续的空间,并且支持随机访问,所以它的查找效率高其时间复杂度O(1)。 缺点:由于开辟一段连续的空间,所以插入删除会需要对数据进行移动比较麻烦,时间复杂度O(n),另外当空间不足时还需要进行扩容。List:链表优点:底层实现是循环双链表,当对大量数据进行插入删除时,其时间...

2018-08-20 16:03:40 1560

原创 从上往下打印二叉树

从上往下打印二叉树【题目】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如:打印结果:8,6,10,5,7,9,11。【分析】二叉树遍历方式:前序,中序,后序,还有一种广度优先遍历,在对图遍历时涉及到,而二叉树可以看作退化的图,从例子中可以看出,打印顺序是按层决定的,观察发现,打印完根节点之后,然后打印其左右节点,再继续打印左节点的左右孩子和右结点的...

2018-08-19 10:28:17 225

原创 内联函数能否声明为虚函数

内联函数能否声明为虚函数首先了解虚函数:虚函数定义:虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表)  { 函数体 }作用:虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对...

2018-08-17 09:35:42 2170

原创 C++笔试题之String类的实现

C++笔试题之String类的实现这个在面试或笔试的时候常问到或考到。 已知类String的原型为:class String{public: String(const char *str = NULL);// 普通构造函数 String(const String &other);// 拷贝构造函数 ~String(void);// 析构函...

2018-08-15 21:01:02 297

原创 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IOIO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。LINUX中进程无法直接操作I/O设备,其必须通过...

2018-08-14 15:02:13 257

原创 多态的原理及产生过程

多态的原理及产生过程用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。多态用虚函数来实现,结合动态绑定。纯虚函数是虚函数再加上= 0。抽象类是指包括至少一个纯虚函数的...

2018-08-13 11:06:44 1761

原创 引用

学过C应该都知道指针,刚开始学习指针的时候,都会觉得指针很难,学完了指针才发现指针就是保存的地址。指针十分不安全,使用的不恰当,就会使程序出错!C++里面提出了“引用”代替指针,提高程序的安全性。下面来讲讲什么是引用。一、引用的定义引用不是新定义一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间引用的声明方法:类型标识符 ...

2018-08-09 20:41:54 176

原创 解决虚拟机提示VMware Workstation cannot connect to the virtual machine的问题

解决虚拟机提示VMware Workstation cannot connect to the virtual machine的问题今天打开VMware Workstation 11虚拟机时,弹出对话框,提示下述问题:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to ...

2018-08-09 20:37:07 1263

原创 同步与互斥

同步与互斥简介 1. 多线程共享一个进程的地址空间,多线程间通信容易进行,但是多线程同时访问共享对象时需要引入同步和互斥机制. 2. 同一个进程的线程共享进程内的绝大部分资源,当一段访问这些共享资源的代码块,有可能被多个线程执行,那么这块代码就被叫做临界区. 3. 当有多个线程并发的在临界区执行时,程序的执行结果会出现不确定性,这种情况被叫做静态条件.谈到linux的并发,必然...

2018-08-09 19:34:52 268

原创 进程与线程的区别

进程和线程的区别?什么时候用进程?什么时候用线程?为什么你的项目中用的是线程?为什么不用进程?如果只有进程,对你这个项目有没有影响?我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是系统分配处理...

2018-08-08 19:40:03 106

原创 reorder list

[LeetCode] Reorder List 链表重排序Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes’ values.For example, Give...

2018-08-03 16:53:51 178

原创 Linux下undefined reference to ‘pthread_create’问题解决

接触了Linux系统编程中的线程编程模块,可gcc pthread.c出现“undefined reference to ‘pthread_create’”,所有关于线程的函数都会有此错误,导致无法编译通过。问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到pthread库中函数的入口地址,于是链接会失败。解决:在gcc编译的时候,附加要加 -lpthre...

2018-07-25 07:48:11 3741

原创 内联函数和宏定义的区别

内联函数和宏定义的区别用内联函数取代宏:1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定 义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接...

2018-07-23 15:08:41 574

原创 引用

学过C应该都知道指针,刚开始学习指针的时候,都会觉得指针很难,学完了指针才发现指针就是保存的地址。指针十分不安全,使用的不恰当,就会使程序出错!C++里面提出了“引用”代替指针,提高程序的安全性。下面来讲讲什么是引用。一、引用的定义引用不是新定义一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间引用的声明方法:类型标识符 ...

2018-07-23 15:01:21 328

原创 C++的函数重载

C++的函数重载实现原理1.什么是函数重载? 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数、类型、顺序)的函数,这组函数被称为重载函数。重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。 简单总结如下:1)相同作用域 ...

2018-07-22 21:25:28 280

原创 为何c++支持函数重载而c语言不支持

为何c++支持函数重载而c语言不支持c和c++都属于编译型语言,也就是说着两种语言都需要经过编译、链接两个步骤才能够执行。如下图: 那么问题就出在编译这个环节上。c语言在编译器编译的时候,在库中的名字为:_function 而c++在编译器编译以后,在库中的名字是:_function_x 也就是说,c语言如果遇到重名函数,链接的时候就会报错 而c++会根据修饰规则进...

2018-07-22 20:45:03 351

原创 open/read/write/close等文件系统调用接口说明

一.open/read/write/close等文件系统调用接口说明1.open函数介绍: 参数介绍: pathname:要打开或创建的目录文件。 flags:打开文件时,可以传入多个参数选项。 参数:O_RONLY:只读打开。O_WRONLY:只写打开。O_RDWR:读写打开前面三个常量,只能指定一个。O_CREAT:若文件不存在,则创建它。需要用mode设...

2018-07-22 19:54:03 1748

原创 Task_struct结构体

1.Task_struct结构体 inux系统中的每个进程都有一个名为task_struct的数据结构,它相当于“进程控制块(PCB)”。 内核在为每个进程分配Task_struct结构的内存空间时,实际上一次性分配两个连续的 内存页面(共8KB),其底部约1KB空间存放Task_struct结构,上面的7KB空间存放进程系统空间堆栈。 如图所示 :在进行剖析task_struct的...

2018-07-18 16:44:07 1717

原创 linux的命令

1.了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp在学习linux的时候,一般以root权限进入时,当返回到根目录时,有好多的文件夹,这些文件夹都代表着什么呢。在此之前,需要了解的是,在Linux下一切皆文件,即所有的存储都是以文件的形式表现出来的。•主目录:/root、/ho...

2018-07-17 16:42:22 248

空空如也

空空如也

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

TA关注的人

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