- 博客(21)
- 收藏
- 关注
原创 C++中动态多态类别浅析
c++中常见的多态,插件式架构(Factory + 多态)抽象基类 + 纯虚函数(接口模式)运行时类型识别(RTTI)+非抽象类继承和虚函数。
2025-04-19 15:17:31
352
原创 LIS最长上升子序列
关键点:使用二分来查找,并使用a[i]替换调该位置上的s[k]。在二分查找中,我们通过不断缩小搜索范围(调整left和right)来定位目标值的位置。最终的目标是找到满足某种条件的第一个位置。
2025-04-10 16:19:28
296
原创 常见的死锁情况分析
如果线程在获取锁时超时了,就主动释放已持有的锁,并重新尝试或返回失败,这样就可以避免死锁的发生。的状态,即某个资源在同一时刻只能被一个线程或进程占用。如果其他线程或进程请求该资源,它们必须等待该资源被释放。在一个线程的等待链中,存在一个环路,使得每个线程都在等待另一个线程释放资源。一个线程已经持有至少一个资源,但又请求其他线程占有的资源,并且在等待的过程中保持对已占有资源的控制。已经分配给一个线程的资源,在该线程使用完之前不能被强制剥夺。在一些情况下,如果锁定的资源是递归锁,锁,而不允许线程先获得。
2025-03-11 17:28:14
855
原创 最大公约数(GCD)和最小公倍数(LCM)
最大公约数(GCD)和最小公倍数(LCM)的 C++ 代码可以用。LCM 乘除巧结合,GCD 计算先用过。GCD 递归求,模运算不断除。的 GCD(更快),可以用。
2025-03-10 15:14:30
259
原创 C++中的链表析构爆栈问题解决方法
手动遍历链表依次销毁节点实现非递归释放,详细看List的析构函数。如果链表非常长,递归释放节点可能导致栈溢出。
2025-03-06 15:51:36
137
原创 分治法,二分法
将一个大规模的任务逐步多次分解成多个小规模的任务,小规模任务继续分解,直到不可以再分解,每个小规模任务具有和大规模任务相似的性质,即处理方式相似;小规模任务相互独立,且全部小规模任务的并集可以作为大规模任务的解。使用了分治思想的相关算法。
2024-12-20 20:01:55
634
原创 char*和char**的区别及其使用场景
char* 和 char** 在 C/C++ 编程中有不同的使用场景,主要取决于你需要处理的数据结构和内存管理的需求。
2024-11-07 20:45:47
542
原创 数据库常用操作
连接与退出数据库、数据库操作、表操作、数据操作、用户与权限管理、备份与恢复、索引操作。以下是每个类别中一些常用的命令:要查看当前登录的 MySQL 用户,可以使用以下 SQL 命令:二、数据类型:MySQL 中的数据类型大致可以分为以下几类:
2024-10-22 10:02:11
427
原创 QT客户端连接(远程)数据库
安装好后配置根路径C:\Program Files\MySQL\MySQL Server 8.0\bin到环境变量2. Qt5.14.2的安装。
2024-10-22 10:01:13
857
原创 C++设计模式——单例模式
单例模式(Singleton Pattern)是一种设计模式,确保一个类只有一个实例,并提供全局访问点。单例模式常用于需要共享资源(如数据库连接、日志系统)或者需要确保只有一个实例的场景。饿汉模式和懒汉模式是单例模式的两种实现方式。饿汉模式:单例实例在类加载时就创建,无论后续是否使用该实例。懒汉模式:单例实例在第一次使用时才创建。注:类加载机制在 C++ 或 Java 中,类加载时静态成员变量会被分配内存并初始化。因此,在饿汉模式中,单例对象作为类的静态成员变量,在类加载时创建,保证只有一个实例。
2024-09-30 10:35:51
732
原创 git安装及配置密钥
对于GitHub、GitLab等平台,如果你频繁地与远程仓库交互,推荐使用SSH密钥进行认证,而非每次都输入用户名和密码。这需要你先在本地生成SSH密钥对,然后将公钥添加到你的代码托管服务账户的SSH密钥列表中。之前的电脑有安装过git,现在给新电脑安装git,忘记了一些配置步骤,又得重新找教程来安装,现在记录下来,可能有些不全,有啥需要补充的或者错误的,等我发现再说吧哈哈,有需要的小伙伴可以参考一下~此外,如果在配置SSH以使用这个特定的密钥时,你需要在SSH的配置文件(通常是。(默认你已经装好了)
2024-06-02 11:03:27
2296
原创 form.is_valid()一直为False,且form.errors.as_json()为空
一直为False且为空。这种情况通常是由于提交的数据未能正确绑定到表单字段。为了排查这个问题,LoginFormmethodPOST重点来了,在确定以上都没问题后!!!在Django中,request和data。这是因为这些表单可能需要访问请求对象来执行特定的操作,例如设置会话或验证CSRF令牌。
2024-05-31 09:52:35
872
原创 C++数据结构之Hash table(哈希表|散列表)
哈希表(Hash Table),也称为散列表(思考:vs平衡二叉树),是一种数据结构,它提供了通过键(key)直接访问存储的值(value)的能力。哈希表的工作原理基于哈希函数(Hash Function),该函数将输入的键映射到表中的一个位置,使得和操作都能在接近常数时间内完成(
2024-05-28 21:05:06
2863
原创 C++中定义和声明的区别
定义则是声明的具体化,它为变量分配存储空间或为函数生成可执行代码。静态数据成员的定义):这里不仅再次提到的名字和类型,而且分配了实际的内存空间,并初始化为0。这个步骤是必要的,因为静态数据成员在全局作用域中具有唯一的存储位置,而不仅仅局限于类的每个实例。这个定义通常放在类定义之外的.cpp文件中,以避免多次定义的问题。静态成员函数的定义void MyClass::staticFunction() { /* 函数实现 */ }):这是的实际实现,它提供了函数体,即执行的代码。
2024-05-23 10:24:26
1150
1
原创 #Django#报错:No changes detected in app ‘polls‘
Django Software Foundation. (2024). Django文档. Retrieved June 4, 2024, from。#报错:No changes detected in app 'polls'当我运行:python manage.py migrate。#Django官方教程。
2024-05-21 14:29:46
514
1
原创 C++智能指针(shared_ptr&&unique_ptr&&weak_ptr)
循环引用问题通常发生在两个或更多的对象相互持有对方的智能指针,形成一个闭环,导致即使所有外部引用都消失,这些对象的引用计数也无法降为0,进而无法自动释放内存。内部维护一个引用计数,每次拷贝构造或赋值增加计数,对象被销毁时减少计数,计数归零时自动释放内存。实例,同时增加对象的引用计数,从而确保在接下来的使用过程中对象不会被意外释放。访问对象,就有可能遇到悬挂引用的问题,即引用指向的内存已经被释放。离开作用域或被重置时,对象会被自动删除,实现自动资源管理。管理的对象时,必须确保该对象仍然有效,即没有被销毁。
2024-05-21 14:15:24
724
1
原创 默认拷贝构造函数,自定义拷贝构造函数,对象赋值
public:// 自定义构造函数++i) {// 自定义拷贝构造函数++i) {// 深拷贝数据// 析构函数,释放动态分配的内存private:int *data;// 指向动态分配数组的指针// 数组的大小++i) {// 创建原始对象// 使用自定义拷贝构造函数创建副本// 显示副本的内容return 0;在这个例子中,类有一个指向动态分配数组的指针。
2024-05-16 15:12:27
1906
原创 C++中,如何使用普通变量(包括内置变量,自定义变量(结构体和类等)、指针变量(指向对应类型的变量)和动态申请内存(申请不同类型的变量)
总结来说,如果数据大小和生命周期可以在编译时确定且不需要额外灵活性,则使用普通变量;如果需要间接访问对象或需要更加灵活的设计,则使用指针;如果需要在运行时决定内存大小或要求生命周期超越局部作用域,则需要动态申请内存。同时,现代C++编程中鼓励使用智能指针(如等)来管理动态分配的内存,以减少内存泄漏的风险。
2024-04-25 11:14:31
509
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人