- 博客(60)
- 收藏
- 关注
原创 【linux】线程详解
在官方书籍对于线程的概念:1.在进程内部的执行流2.线程比进程粒度更细,调度成本更低。3.线程是CPU调度的最小单位。线程(tcb):进程(pcb) = n:1进程和线程在执行流层面是不一样的fork之后,父子进程共享代码,可以用过选择语句,来让父子进程执行不同的代码块。不同的执行流就可以完成对特定资源的划分。基本示意图:CPU看到的所有的task_struct 都是一个进程CPU看到的所有的task_struct 都是一个执行流(线程)
2023-07-11 20:59:41
834
原创 【python】网络编程
gevent不会识别time.sleep(),可以使用猴子补丁的方式 ,将time.sleep()转化为gevent.sleep()使用recv的返回值判断,当对方的sock关闭后,sock就不会阻塞了,recv接受的内容是空字符串,长度为0。特殊情况下:启动服务器的时候,运行一次,马上关闭再次运行,就会出现。是一种面向链接的,可靠的,基于数据流的传输层协议。是数据传输的通道,是数据传输的必经之路。IP地址就是表示网络中设备的一个地址。实现多任务的方式,比线程占用资源更小。套接字,是进程之间通信的工具。
2023-04-27 23:15:02
759
原创 【python】多进程和多线程
一个进程有一个锁,GIL不是python的特性,只是Cpython解释器的概念,历史遗留问题。对IO密集型影响不大,因为等的输入输出足够消耗时间了,单线程,多线程都得等。主进程结束,意味着程序结束。理论上,一个进程结束了,主进程必须结束。GIL对计算密集型的程序会产生影响,因为计算密集型会占用系统资源。一般来说:并发和并行是同时存在的,是操作系统自动调用的。并发:多喝CPU中,多个任务是在多个CPU上运行的。线程适合 大量的IO密集型(读写操作,爬虫)GIL保证同一时间,只有一个线程使用CPU。
2023-04-26 20:24:56
710
原创 【python】模块和包
模块就像是C++中的头文件,是一个代码文件,是别人已经写好的代码文件,文件中的函数类以及变量,我们都可以是使用。使用模块的好处:使用别人已经实现的功能,方便。
2023-04-26 20:22:54
136
原创 【Python基础】异常
程序代码为什么会报错?因为不符语法,python的作者在代码中是用来if判断,如果除数为0,就会在代码中抛出异常。抛出异常: raise 异常对象 # 带代码遇见 raise的时候,程序就报错了。异常对象 = 异常类(参数) 抛出自定义异常: 1. 自定义异常类,继承Exception 异常或者 BaseException 2. 选择书写,定义__init__ 方法 定义__str__方法 3. 在合适的时机抛出异常即可示例:定义密码长度异常类,低于6位抛异常。
2023-04-24 14:11:36
80
原创 【python基础】python面向对象
需要使用self,作为类方法的第一个形参,再通过对象调用方法的时候,不需要手动传递实参,是python解释器自动将调用该方法的实参传递给self,所以self代表的是对象。先假声这个属性为实例属性,查看这个属性对于不同的实例对象,属性值是否都一样,并且需要同时变化。在python的类中,有一类函数,将在特定的情况下,会自动调用,格式是两个下划线。实例对象的属性是实例属性,通过实例对象(self)定义的属性都是实例属性、注意:如果不存在和实例属性相同的类名属性,则可以使用实例对象访问类属性的值。
2023-04-22 17:27:46
417
原创 【C++】智能指针(补充)
方法功能拷贝构造,pq共同管理同一份资源p从unique_ptr u那里接管了对象的所有权,将u置空p接管了q所指向对象的所有权,d是析构函数调用的析构方法的对象p是shared_ptr p2的拷贝,p将会调用d来替代deletep.reset()解放p指针,若p是唯一的指针,则会调用析构函数,释放资源p.reset(q)p释放手里的资源,共同管理q手里的资源p释放手里的资源,如果p是唯一的资源,就调用d而不是delete释放资源,pq共同管理一份资源p.unique()
2023-04-21 21:55:36
469
原创 MySQL数据库的操作
说明:[]可选项specification 特殊选项character set 字符集collate 校验规则创建示例//系统默认使用的字符集是utf-8 校验规则是 utf8_general_ci;完整的示例。
2023-04-18 14:03:01
267
原创 Linux软件包管理yum
1.在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。2.将一些常用的软件提前编译好,做成软件包,放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包。直接进行安装。3.软件包和软件管理器就好比Appstore 4.yum是Linux下常用的一种包管理器。主要应用在centos,fedora,redhat上。关于rzsz :用于win和远端Linux机器通过xshell传输文件。安装完毕后可以通过拖拽的方式来传递文件。
2023-03-06 23:57:49
321
原创 【C++笔记】异常处理
传统的错误处理机制:缺陷:用户难以接受。缺陷:需要自己去查错误码对应的解释。C语言一般使用错误码来处理错误,部分情况下才会用终止情况处理处理严重的错误。
2023-03-03 23:37:10
649
原创 【C++ STL】list
1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,且该容器是双向迭代器。2.list的底层是双向链表结构,双向链表中每个元素储存在互不相关的独立节点中,节点通过指针链接。3.list与forward_list相似,最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。
2023-02-28 14:24:28
445
原创 【C++】智能指针
实际是将管理资源的责任分给了一个对象。这种做法有两大好处;1.不需要显示的释放资源。2.对象所需要的资源在其生命周期内始终保持有效。
2023-02-25 08:30:00
374
原创 【C语言】指针进阶
目录1. 指针是什么2. 指针和指针类型3. 野指针4. 指针运算5. 指针和数组6. 二级指针7. 指针数组1.指针是什么?指针是什么? 指针理解的2个要点: 1. 指针是内存中一个最小单元的编号,也就是地址 2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结:指针就是地址,口语中说的指针通常指的是指针变量理解内存指针变量我们可以通过&(取地址操作符)取出一个变量在内存中的地址,并把这个地址存放在一个
2023-02-25 02:06:17
414
原创 【C++ STL容器】stack && dequeue
1.队列是一种容器适配器,专门用在先进先出中操作,从容器一段插入元素,另一端提取元素。2.队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从对头出队列。3.底层容器可以是标准的容器之一,也可以是其他专门设计的容器类,但必须支持一下接口: empty,size,front,back,push_back,pop_back;4.标准容器类dequeue和list满足以上需求,默认使用的容器是dequeue。
2022-10-30 23:06:47
241
原创 【C++入门】类和对象 中
默认的拷贝构造函数对象按内存存储,按字节序完成拷贝,这种拷贝叫做浅拷贝或者值拷贝。结论一般的类,自己生成的拷贝构造就够用了,向Stack这样涉及拷贝内存问题的需要自己管理资源。5.一个类如果,欸有显示定义赋值运算符,编译器会自己生成一个,完成对象按字节序的值拷贝。与构造函数相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。可以很好的表现默认构造函数的优势。也就是说对于简单的类的拷贝,可以考虑使用编译器自动生成的默认拷贝构造函数。声明了d3函数,该函数无参,返回一个时期类型的对象。...
2022-07-15 16:16:01
272
原创 【C++笔记】C++基础入门
人生中第一个C++程序#include<iostream>int main(){ std::cout << "hello world!" << std::endl; return 0;}
2022-05-24 18:11:24
389
1
原创 自定义类型:结构体
目录结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段(位段的填充&可移植性)枚举枚举类型的定义枚举的优点枚举的使用联合联合体类型的定义联合体的特点联合体的计算结构体1.结构体的声明1.1基础知识结构体是一种复杂的类型,数组是一组相同元素的集合;结构体也是一些值的集合,结构体的每个成员可以是不同类型。1.2结构体声明举个栗子//以学生为栗子,建立一个结构体变量struct
2022-05-21 16:16:34
285
原创 链表典例二
三:三:基本思路:1)因为链表非空,所以不用断言2)使用快慢指针为最优解,定义两个指针fast 和 slowfast一次走两步,slow一次走一步。3)分情况i若链表长度为奇数时此时返回slow即为所求ii若为偶数时可见,当fast指向为空时,slow的位置即为所求。代码展示/** * Definition for singly-linked list. * struct ListNode { * .
2022-03-23 23:57:31
759
原创 线性表之双向带头循环链表
准备工作:创建结构体指针typedef int LTDataType;typedef struct ListNode{ LTDataType data; struct ListNode* next; struct ListNode* prev;}LTNode;1.创建一个新的节点基本思路:malloc节点,判断节点是否创造成功。LTNode* BuyLTNode(LTDataType x){ LTNode* newnode = (LTNode*)malloc(size
2022-03-22 23:46:30
764
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人