- 博客(34)
- 收藏
- 关注
原创 Python 装饰器
要定义一个装饰器,我们需要编写一个函数,该函数接受一个函数作为参数,并返回一个新的函数。func()在这个例子中,是一个装饰器函数,它接受一个函数func作为参数。wrapper函数是装饰器内部定义的一个新函数,它在调用func之前和之后分别打印了一些信息。最后,返回wrapper函数。Python 装饰器是一种非常强大的工具,它可以帮助我们以一种简洁和可读的方式扩展函数的功能。通过装饰器,我们可以在不修改原始函数代码的情况下,增加或改变函数的行为。
2025-01-10 10:38:44
846
原创 Python 类 Class
这里是初始化方法,相当于构造函数ClassName:类名,通常采用首字母大写的驼峰命名法。__init__:类的初始化方法,当创建类的新实例时会自动调用。它的第一个参数总是self,代表类的实例本身。
2025-01-07 16:40:23
484
原创 Python 迭代器与生成器
Python 中的迭代器和生成器是处理集合元素的重要工具,它们在处理大量数据时特别有用,因为它们不需要一次性将所有数据加载到内存中。
2024-12-30 20:34:37
475
原创 Python Lambda 表达式
Python 中的 lambda 表达式是一种简洁的匿名函数,允许你在不需要完整函数定义的情况下创建函数。它们通常用于编写简单的函数,或者在需要传递函数作为参数时使用。
2024-12-28 11:21:44
200
原创 C++ Lambda 表达式
在现代编程中,匿名函数(Anonymous Functions)或称为 lambda 表达式,已经成为一种非常流行的编程构造。它们允许开发者在不定义传统函数的情况下创建函数。C++11 引入了对 Lambda 表达式的原生支持,极大地丰富了语言的表达能力和灵活性。
2024-12-27 10:57:44
371
原创 Python 正则表达式
正则表达式(regular expression)是一种用于匹配字符串中字符组合模式的工具。它可以用来检查一个字符串是否匹配某个模式、提取字符串中的信息、替换字符串中的某些部分等。Python 的re模块提供了对正则表达式的支持,允许你执行复杂的字符串搜索、替换、匹配和分割操作。
2024-12-24 15:16:22
1187
原创 Python 多进程
Python的模块允许你创建和管理进程。多进程是指同时运行多个进程,每个进程都有自己的Python解释器和内存空间。多进程适用于任务,因为每个进程有自己的Python解释器和内存空间,可以在不同的CPU核心上运行,不受GIL的限制。
2024-12-11 20:03:53
577
原创 Python 多线程
Python的多线程是通过threading模块实现的,它允许你创建线程并行执行任务。多线程适用于任务,如网络请求或文件操作。由于Python的全局解释器锁(),多线程可能不适用于CPU密集型任务。
2024-12-11 20:02:49
863
原创 C++ 继承
C++ 中的继承是一种面向对象编程的特性,它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和方法。继承支持代码的重用,并允许创建一个层次结构的类。
2024-12-07 22:17:55
713
原创 C++ 多态
抽象类是包含至少一个纯虚函数(pure virtual function)的类,纯虚函数使用= 0定义。抽象类不能被直接实例化,通常用作接口。包含纯虚函数的类称为抽象类。抽象类不能被直接实例化,但可以作为基类来使用。派生类必须重写抽象类中的所有纯虚函数,才能被实例化。public:// 纯虚函数public:void pureVirtualFunction() override { // 必须重写纯虚函数// 调用重写的纯虚函数return 0;
2024-12-06 08:57:58
899
原创 C++ 模板
C++ 模板(Template)是一种,允许开发者编写可以在多种数据类型上工作的代码。模板可以将类型作为参数,使得代码可以在不同的数据类型上重用。模板可以用于和,使得同一份代码可以用于不同的数据类型。
2024-12-05 15:08:16
735
原创 C++ 简介
C++是一种由Bjarne Stroustrup在1979年在贝尔实验室开始开发的一种的编程语言。C++被设计为一种“增强”的C语言,保留了C语言的高效性和灵活性,同时引入了和等特性。
2024-12-02 16:25:42
745
原创 C++ 预处理器(Preprocessor)
用于定义宏。可以定义简单的宏,也可以定义带参数的宏。// 宏定义(#define)// 宏定义(#define) # define MACRO_NAME replacement - text // 取消宏定义(#undef) # undef MACRO_NAMEMACRO_NAME是想要定义的宏的名称。是当宏被使用时将替换宏名称的文本。1024MAX_SIZE被定义为1024。在代码中任何使用MAX_SIZE的地方,预处理器都会将其替换为1024。SQUARE(x)被定义为。当你调用。
2024-11-30 17:43:08
1127
原创 C++ 类(Class)
C++中的类(Class)是一种用户定义的数据类型,它封装了数据(成员变量)和操作这些数据的函数(成员函数)。成员,没有基类的自定义移动赋值运算符,编译器会生成一个默认移动赋值运算符。在C++中,如果类没有显式定义某些成员函数,编译器会根据需要自动生成默认成员函数。成员,没有基类的自定义移动构造函数,编译器会生成一个默认移动构造函数。在C++中,类的成员函数是定义在类内部的函数,它们可以访问类的私有和保护成员。成员函数定义了类的行为。在C++中,类的成员变量是定义在类内部的变量,它们代表了类的状态。
2024-11-28 10:52:21
890
原创 C++ 结构体(Struct)
结构体是一种用户自定义的数据类型,它允许我们将多个变量组合在一起,这些变量可以是不同的数据类型。// ...在C++中,结构体与类(class)非常相似,主要区别在于默认的访问权限:结构体的成员默认是public,而类的成员默认是private。
2024-11-26 20:07:51
1104
原创 C++ 容器
C++ 容器(Container)是指一种数据结构,用于存储和管理一组元素。容器提供了一种方便的方式来存储和访问数据,支持各种算法和迭代器。
2024-08-27 10:51:53
352
原创 C++ 内存管理
(Stack Memory):栈内存是由编译器自动管理的内存区域,用于存储函数的局部变量、函数参数和返回值。当函数调用时,栈内存会自动分配,当函数返回时,栈内存会自动释放。静态变量在程序启动时分配内存,在程序结束时释放内存。(Heap Memory):堆内存是由程序员手动管理的内存区域,用于存储动态分配的内存的区域。智能指针是 C++11 引入的一种内存管理方式,用于自动管理内存,避免内存泄漏和野指针。容器是 C++ 标准库提供的一种内存管理方式,用于自动管理内存,避免内存泄漏和野指针。
2024-08-19 09:58:21
924
原创 C++ 数据类型
这种转换发生在表达式中,当一个类型的值被赋给另一个类型的变量时,或者当一个类型的值被用于另一个类型的运算时。C++ 类型转换是指将一个类型的值转换为另一个类型的值。C++ 提供了多种类型转换的方法,包括隐式转换和显式转换。它可以将一个类型的值转换为另一个类型的值,并进行运行时检查。它可以将一个常量类型的值转换为一个非常量类型的值。它可以将一个类型的值转换为另一个类型的值,但不进行运行时检查。它可以将一个类型的值转换为另一个类型的值,但。显式转换是指使用特定的语法进行类型转换。
2024-08-15 16:15:55
908
原创 C++ 字符串
char[] 转换为 std::wstring:可以先将 char[] 转换为 std::string,然后再将 std::string 转换为 std::wstring。std::wstring 转换为 char[]:可以先将 std::wstring 转换为 std::string,然后再将 std::string 转换为 char[]。std::wstring 转换为 std::string:可以使用 std::wstring_convert 类。char* 转换为 char[]:可以直接赋值。
2024-08-07 10:40:02
566
原创 C++ 数组类型
定义 C++ 数组C++ 数组可以使用以下语法定义:初始化 C++ 数组C++ 数组可以使用以下语法初始化:访问 C++ 数组元素C++ 数组元素可以使用以下语法访问:C++ 数组的特点C++ 数组的使用场景需要固定大小数组:C++ 数组适用于需要固定大小数组的场景,如函数参数、结构体成员等。需要高性能:C++ 数组适用于需要高性能的场景,如游戏开发、科学计算等。需要兼容 C 代码:C++ 数组适用于需要兼容 C 代码的场景,如调用 C 函数等。std::array 是 C++11 引入的数组容器
2024-08-05 21:04:18
847
原创 TCP/UDP
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。特征面向连接:在数据传输之前,需要建立一个可靠的连接。可靠传输:通过序列号、确认应答和重传机制来保证数据的可靠传输。TCP 如何保证可靠传输序号: TCP 为每个数据包分配一个序号(Sequence Number),以便接收端可以按序号顺序重组数据包。确认: TCP 接收端会发送确认(ACK)包,确认接收端已收到数据包。重传。
2024-08-01 11:09:14
844
原创 C++ 任务队列
(来自ChatGPT)任务队列是一种数据结构,用于存储和管理任务(Task)的执行顺序和优先级。任务队列通常由一个队列(Queue)组成,用于存储任务的执行顺序和优先级。任务队列的优点:高效的任务执行: 任务队列可以高效地执行任务,减少任务的等待时间和提高系统的吞吐量。任务优先级管理: 任务队列可以管理任务的优先级,确保高优先级任务先执行。任务调度管理: 任务队列可以管理任务的调度,确保任务按照正确的顺序和优先级执行。可伸缩性: 任务队列可以根据系统的负载动态调整任务的数量和优先级。可靠性。
2024-07-30 13:50:50
693
1
原创 C++ 多线程
条件变量通常与互斥量一起使用,用于在线程之间进行通信,允许一个线程等待直到满足特定条件,而另一个线程则通知条件满足。互斥量是一种常用的同步机制,用于保护对共享资源的访问,确保任何时候只有一个线程可以访问受保护的资源。C++ 多线程是指在一个程序中同时运行多个线程,每个线程都可以执行不同的代码段。原子类型用于在不使用锁的情况下实现线程安全的操作,适用于简单的数据类型和操作。C++ 多线程性能优化是一个复杂的话题,涉及到很多因素,包括。:线程池可以减少线程创建和销毁的开销。:任务队列可以优化线程调度。
2024-07-29 16:41:54
798
原创 面向服务的架构(SOA)
面向服务的架构(Service-Oriented Architecture, SOA)是一种,它将应用程序结构化为一组相互通信的服务。每个服务代表一个业务能力或一组相关功能,可以通过标准化的接口和协议访问。核心理念是将复杂的应用分解成一系列松耦合的服务,这些服务可以独立部署、管理和重用。(Request-Response Pattern):客户端发送请求给服务,服务处理请求并返回响应。(Event-Driven Pattern):服务发布事件,其他服务或客户端可以消费这些事件。
2024-07-29 16:15:04
2176
原创 C++ 进程 线程
线程间通信是指多个线程之间交换数据和协调工作的机制。由于线程之间共享同一个进程的虚拟地址空间,因此可以使用共享变量、互斥锁、条件变量等机制来实现线程间通信。进程间通信(Inter-Process Communication,IPC)是指不同进程之间的数据交换和同步。C++中的线程(Thread)是一种轻量级的进程,是一个程序中的最小执行单元。,它允许开发者异步执行一个函数,即在一个独立的线程中执行该函数。C++11标准中引入了std::thread类,提供了创建和管理线程的功能。,表示单个线程的执行。
2024-07-22 21:53:49
1282
原创 C++ 单例模式 实现
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。
2024-07-17 18:58:01
1369
原创 C++ 指针、智能指针、引用
控制块中有强弱引用计数,如果是使用make_shared初始化的函数则它所在的控制块空间是在所引用的shared_ptr中同一块的空间,若是new则控制器所分配的内存与shared_ptr本身所在的空间不在同一块内存。但是,悬空指针不能直接访问对象的成员变量或成员函数,因为编译器不知道指针所指向的对象的类型。也就是说,一个指针指针是一个指针,它的值是另一个指针的地址。悬空指针(Void Pointer)是一种特殊类型的指针,它可以指向任何类型的对象,但不能直接访问对象的成员变量或成员函数。
2024-07-16 20:31:39
950
原创 SQLite3 使用整理
上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。当没有更多的可用的行时,则返回一个空的列表。一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的。一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的。打开与 SQLite 数据库文件的连接并返回数据库连接对象,是数据库连接对象的构造函数。
2024-07-11 21:52:58
763
原创 C++ 线程池
(来自ChatGPT)线程池是一种用于管理和复用线程的机制。它可以提高程序的性能和效率,特别是在处理大量并发任务时。线程池中包含一定数量的线程,这些线程可以重复执行多个任务。当有任务需要执行时,可以将任务提交给线程池,线程池会选择一个可用的线程来执行任务。任务执行完毕后,线程会返回线程池,等待下一个任务的到来。线程池的优点:降低线程创建和销毁的开销:线程的创建和销毁是比较耗费资源的操作,使用线程池可以避免频繁地创建和销毁线程,提高程序的性能。提高系统的响应速度。
2024-07-01 20:36:40
1844
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人