- 博客(157)
- 收藏
- 关注

原创 算法笔记(个人用)(不定期更新)
文章目录前言说明Note文档编辑相关语言特性相关 (C/C++)输出数组最后一个元素后面无空格二分查找函数rand() 范围算法相关排序区间求和题单基础数学素数素数判断素数筛朴素筛选 (埃式筛)朴素筛选优化线性筛 (欧拉筛)闰年判断蔡勒(Zeller)公式GCD10转R进制卡特兰数完美数分解因数欧几里得-欧拉定理数根[1~n] 中完全平方数的个数计算Π pia二分查找顺序序列找唯一值逼近类二分容斥原理位运算整形存储大小intlong long`__builtin_函数`取模自动取模工具类除法取模判断奇偶统计
2021-03-23 22:35:02
3035
4
原创 (mingw) W64 常见版本介绍
处理器架构(architecture) i686 x86_64线程模型(thread model) posix win32 mcf异常模型 (exception model) dwarf sehC运行时库(C runtime) ucrt msvcrt运行时版本 (runtime version) rt_v修订号(build revision)
2025-03-14 20:30:00
811
原创 (Qt) QThread 之 moveToThread
在之前的文章中,我们演示过(Qt) QThread 信号槽所在线程但是说得很潦草。本文借助,来进行介绍一下。哎,这个函数不是在QThread中的(又是一个小细节)。
2025-02-26 18:15:00
1051
原创 (软件设计) has-a 的三种形式(组合、聚合、关联)
在软件设计中有一句设计原则<u>“组合优于继承”</u>。继承通常用`is a`表示,组合通常用`has a`表示。但要更进一步了解`has a` 的话,可以再继续细分为三种类型:- **组合(Composition)**- **聚合(Aggregation)**- **关联(Association)**
2025-02-12 20:57:59
664
原创 (C++20) 信号量 semaphore
在多线程编程中,同步和锁是一个庞大的体系。主要是目前有很多成熟的技术和方案。其中信号量是一个典型的同步机制。而在 C++ 中,直到 C++20 才发布的标准的信号量库。而另一个类似的方案即互斥量,在 C++11 便已推出。互斥量:要求哪个线程获取了互斥量,哪个线程就要负责这个锁。信号量:可以被系统中一个线程获取后由另一个线程释放。临界区:仅限于本进程操作,此外性质与互斥量相同。而互斥量和信号量具有多进程可见性。
2025-01-14 13:30:19
864
原创 C++ 之父的洋葱原则
我把这个叫做 ‘洋葱原则’,”Stroustrup 打了个生动的比方,“你可以把代码想象成洋葱的层。每当我们需要优化或处理特殊情况,我们就可能需要剥掉一层抽象。但要记住,每剥掉一层,你就会哭得更厉害。“为什么会这样?”他继续解释道,“因为每深入一层,你就有可能遇到更多的错误,必须写更多的代码,代码也更难理解。**所以在真正需要之前,不要轻易剥掉一层抽象。**这就是我对 ‘
2024-12-27 11:32:19
660
原创 (堆) 优先队列(堆)的简单实现
核心:用数组模拟完全二叉树。用数组模拟完全二叉树,下标[0, n - 1]节点i的所有子树为。两个重要操作,注意不要越界。堆调整针对我们要维护的节点fa,对其左右子节left, right点进行比较,找出最值。交换到当前节点fa上。然后交换后的位置也要同样的维护,因此可以进行迭代或者递归。int fa;// e.g.尾部新元素维护因为我们是数组模拟,不是链式的二叉树。因此直接在末尾添加元素比较方便。而末尾的新元素要和其父元素进行比较。如果要提升,则将父元素复制到子节点。
2024-12-11 22:36:33
768
原创 (仓颉) Cangjie 刷力扣基础语法小结
文中难免有些错误,且仓颉正在快速发展中,可能过段时间有些东西就不对了。(个人测试下来该三方比官方的在线 ide 好用,但是目前编译器的版本比较落后):笔者并非专门研究仓颉,本文中仅是对于使用仓颉在力扣刷题的一些基础总结。且目前力扣还未所有题目都支持仓颉,当然应该会慢慢补全的,大家等等期待吧。因为都是典中典的题目,就不放题意和思路了。充斥着仓颉的各个地方,因为可以使用。这里抛出仓颉一个非常重要的内容,不能直接进行运算,建议统一转化为。循环,仓颉中的没有三段式的。是一个非常重要的类型。仓颉本身具有字符类型,
2024-12-11 19:18:30
913
原创 (C语言) 8大翻译阶段
我们常说的C语言编译的4阶段,预处理,汇编,编译,链接。其实这背后有复杂和细分的阶段,将之称为翻译阶段。而C语言共有8个这样的阶段。字符映射行分割标记化预处理字符集映射字符串拼接翻译链接。
2024-11-26 23:04:19
967
原创 (仓颉) 调用C语言
官网仓颉编程语言官网下载下载中心-仓颉编程语言官网仓颉-C 互操作仓颉-C 互操作视频教学仓颉编程语言入门教程本文以两个基础的示例进行演示和介绍。
2024-11-26 12:49:17
735
原创 (cmake-format) CMake 格式化工具
是cmakelang下的一个子项目:Thecmakelangcmakecmake-lintctest-to很可惜该项目已经两年没更新了。
2024-10-26 00:20:21
1143
原创 (gersemi) CMake 格式化工具
一个格式化程序,使您的CMake代码真正的财富。GersemiGersemi(古挪威语“宝藏”)是挪威神话中生育女神Freyja的女儿。她可能和弗雷娅的另一个女儿赫诺斯一样。
2024-10-24 22:56:27
714
原创 (贪心) 反悔贪心之反悔堆
准备一个池子,称作反悔池,池中缓存在遍历过程中不断遇到的可选项作为备用资源。在后续的遍历中,当需要资源的时候,不断的从池中获取,直到满足要求。基本的原则就如此。当然这个池子中的值,可以是已经选择了的,也可以是未选择的。都是基于具体题意而言的。池的数据结构也是基于题目而言比较多样,一般都是堆,栈,队列等可进可出的数据结构。
2024-10-08 00:13:23
765
原创 记一次Windows状态栏不显示问题
多次操作过程中出现过弹出一个纯白窗口的现象,还无法关闭(关闭,缩小按钮都 disable)。无论重启,还是关机后再次启动,都会有这个现象。随着键盘乱敲,闪屏几次后可能会有效,只是可能。下面是在给windows反馈问题的时候,官方写的一些情况。当鼠标键盘都无效的时候,都无效。当闪屏后鼠标键盘有效果的后,出现了弹窗。关注我,学习更多C/C++,python,算法,软件工程,计算机知识。注意,使用命令行操作的时候,出现了输入重启命令后还是无效的情况。(说实在的,鼠标键盘没有任何效果的时候真是太恐怖了)
2024-09-26 22:05:53
1145
原创 设计原则 Design Principle
本文是对李建忠老师讲设计原则小笔记。李建忠《C++ 软件设计与模式的道法术》课程直播回顾之设计原则_哔哩哔哩_bilibili直播实录|C++软件设计与模式的道、法、术 (qq.com)
2024-09-23 23:26:34
673
原创 (C++23) expected 基础使用
在 C++17 中,提出了optional的可选项类型。但是该类型仅能表示二元状态,但在实际业务常见成功与否可以只用一个flag表示,但失败的原因却多种多样,需要以一种更丰富的形式表示。因此在 C++23 中正式规范了,操作方式与原先的相似,又扩展了一些统一的处理方案。同时这些方法在 C++23 中也为提供。
2024-09-22 19:07:42
1204
原创 (C++17) optional 的 3 种用法
在 C++17 中标准化了。该类型可以容纳一种类型,且判断是否有无。若使用的标准在低于 C++17 则可以使用Abseil 的 absl::optional或Boost 的 boost::optional。(C++17) optional的使用。本文主要介绍3中optional的常用主流用法。
2024-09-22 00:20:03
1110
原创 (C++) 6大作用域
在 C++ core guidelines 中有一个准则:ES.5 保持作用域短小。要遵循这点需要明确作用域到底是什么,有哪些,有什么用。并且 C++ 的作用域和 C语言 的 作用域又大有不同,因此不能直接沿用 C语言 的作用域。但是作用域的本质作用的不变的。作用域是代码中声明的一种属性,它是可见性和生命周期交叉的地方。名字只在它的作用域中可见,但对象的生命周期不一定受限于其名字的作用域。对象具有存储期,存储期决定了对象的生命周期。
2024-09-09 00:11:20
935
原创 (仓颉) 仓颉语言入门
仓颉-鸿蒙原生应用编程语言-华为开发者联盟 (huawei.com)初识仓颉语言-仓颉编程语言开发指南-学习仓颉语言 - 华为HarmonyOS开发者 (huawei.com)【原创】仓颉编程语言入门教程楼主作为主语言C++,副语言python。仅做基础的入门了解。本文不做任何格外的语法说明,仅在代码中用简短的注释辅助。下文均为教学视频中的实例demo(上方的视频也出现在官网的视频一栏中)。本文所有代码均在下方的在线编译器中进行尝试。除了最后两章,9,10无法进行单文件操作其余均有验证。
2024-09-07 01:26:44
2212
原创 (C语言) stdlib 程序终止
是一个非常非常重要的库。重要到没有他就没有程序。但由于太重要了,且涉及过多底层相关内容,一半初学不会强调这些内容。升值一些工作了一段时间在 CRUD 的程序员也不太了解。本文重点整理C语言中在stdlib下有关程序终止相关的接口。如果 main函数 不写return 0;会怎样?从 main函数返回时,无论是通过return语句还是抵达函数尾,都会将 return 语句的实参(或若使用隐式返回,则为 0)作为exit_code传递并执行exit()。
2024-08-27 23:53:12
797
原创 (mcu) 嵌入式基础简单入门(程序架构分析)
本文为一份简单入门笔记,以 stm32 单片机为例。**声明:**由于笔者不是专业人员,仅作为入门初学者,因此本文避免不了的有专业性错误,请自行甄别。完全以一位纯应用型软件工程师的角度进行学习和思考。基于下层的支持为上层提供应用服务。只是我们目前互联网上的大多数软件是基于操作系统或者虚拟机或解释器等等基础。而单片机是直接操作硬件,是直接基于硬件提供的功能。
2024-08-27 00:39:23
2397
原创 (软工) 四代软件架构
当今软件架构中,拥有四代软件架构。这四个都是基于所在时代,技术,需求等多种因素应运而生的。在未来是否会有第五代软件架构,无人可知。笔者大胆推测,这第五代很可能与人工智能的大语言模型有关🫣。
2024-08-23 00:13:22
883
原创 (C++) 为什么auto_ptr被弃用
在 C++ 中,智能指针一直是一个非常重要的模块。从 C++98 起就有了智能指针`auto_ptr`。但是其本身具有非常大的问题。因此到了 C++11 便将其弃用,并提出了三个沿用至今的智能指针 `unique_ptr; shared_ptr; weak_ptr`。到了 C++17 更是直接移除了。具体原因请继续查看下文。
2024-08-22 00:05:30
1245
原创 (Qt) QThread 信号槽所在线程
在 Qt 中用一套自己的封装的多线程操作。其中一种方式是继承 QThread 并实现void run();方法使用启动,这是一种很常见的线程的封装方式。这种方式在 java 中也是这么设计的。但是由于 Qt 的高度封装性和框架整体性,很多特性都是开发者自己测试出来的。其中 QThread 配合信号槽的特性就是本文要观察的重点。
2024-08-08 00:04:42
1248
原创 (C23/C++23) 语句末尾的标签
C++23提案·复合语句末尾的标签C23提案·声明和语句块结束前的标签在C/C++的标签使用语法中,两们语言的规定并不是一致的。很容易产生写法A在C语言中可行,而C++中不行。(虽然部分编译器做了增强,但标准中就是不行)。但非常幸运的是两者都在23标准中互相做了兼容。个人猜测是那帮专家自己写要兼容的代码时觉得非常麻烦而提出的。因为标签的意义就是一个表示,且表示非常明确,编译器理应本身就能做区分。
2024-07-25 23:41:34
1374
原创 (C++) 智能指针指定删除器
自C++11后,推出了三个智能指针。其中unique_ptr和shared_ptr可以指定删除器。但两者的形式却不太一样,本文将带你了解两者的基础使用区别。
2024-07-23 22:44:47
965
原创 (C++) 文件读写基础
📄分点讲解C++用类封装了流式操作,使用体验是更加丰富,更加多。🗃️写法1:法2:法3:🗃️读法1:法2:法3:法4:法5:
2024-07-22 22:40:57
868
原创 (POSIX) 文件读写基础
📄分点讲解说白了,这就是最标准的 POSIX 的对文件描述符fd的操作方式。淡然posix下的文件操作和读写不知这简单的几种,但掌握最基本的以下几种是必备的。
2024-07-22 22:32:45
556
原创 (Effective C) 2.3 作用域
作用域应用于标识符的某个特定声明。标识符包含对象函数标签宏等等。作用域是一块连续的区域,在域的任何位置,可以访问当前位置的前面区域的标识符。
2024-06-24 00:41:13
396
原创 (C++语言的设计和演化) C++的设计理念
译者《C++语言的设计与演化》目录 (pku.edu.cn)《C++语言的设计与演化》有关信息 (pku.edu.cn)豆瓣C++语言的设计和演化 (豆瓣) (douban.com)出版社(异步图书)C++语言的设计和演化-异步社区实验平台 (epubit.com)本文主要摘取书本第4章 C++语言设计规则和第6章 标准化和第8章 库。是一些关于之父对于在 C++ 中设计和思考中得出的一些明文条例。
2024-06-21 01:20:43
964
原创 (C++) 函数重载机制
在C++中函数重载是一个非常强大由复杂的问题。在C++中本身就有许多函数机制,加上该语言也在不断的迭代,规则是越来越多。
2024-06-07 00:59:07
879
原创 (软工) 功能性和非功能性需求是什么?
软件开发的根本目的就是满足客户的需求。这个客户可以是一个人,一个企业,甚至是你公司内部的另一个部门。但绝大多数客户往往无法准确表达自己希望的需求,这时就需要软件架构师去挖掘功能。一般来说软件功能可以分为功能性需求和非功能性需求。
2024-06-04 00:03:43
1078
原创 信息标记形式 (XML, JSON, YAML)
ref:Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课)单元5信息标记形式是当今网络世界中非常重要的一部分。目前主要被大众认可的有三类。标记后的信息可形成信息组织结构,增加了信息维度标记的结构与信息一样具有重要价值标记后的信息可用于通信、存储或展示标记后的信息更利于程序理解和运用。
2024-05-28 22:52:04
1161
原创 (C11) 泛型表达式
只能判断一个表达式的类型,因此如果是需要用到多参的话,可以嵌套的使用。关注我,学习更多C/C++,算法,计算机知识。不是必须写道最后一个,顺序这方面没有限制。可以根据类型指定调用的函数,注意参数个数。与控制表达式类型兼容,则程序无法编译。关联,则解释为其后的表达式。,若其类型与各关联之一的。,则解释为冒号后的表达式。限定符对类型识别不受影响。对指针类型的判断仍然使用。时,并且直接调用的情况。只在类型域中进行转换。可以判断自定义类型。
2024-05-28 20:49:27
1215
原创 (排序) 快速排序经典应用之快速选择
1738. 找出第 K 大的异或坐标值本题是一个二维前缀和的模板题但有一个附属需求就是要获得第k大的值,这就是经典的快速选择应用。或不是有效范围。(C++11 前)*first的类型不可交换(Swappable)。(C++11 起)RandomIt不可交换值 (ValueSwappable)。*first的类型不可移动构造(MoveConstructible)。*first的类型不可移动赋值(MoveAssignable)。
2024-05-27 00:29:25
610
原创 (Qt) 默认QtWidget应用包含什么?
本文将带大家,查看一个默认的Qt Widget程序可能会涉及哪些方面的内容。本文默认使用IDE为Qt Creator和qmake编译套件。当然由于个人能力和水平的局限性,并不可能带领大家看到所有的全貌。
2024-05-23 20:08:41
1075
原创 conan2 基础入门(06)-conanfile.py入门
真正需要指定生成动态库需要在conan install执行中指定。requirements() 方法用于指定包的依赖项。首先这是一个脚本性质的文件,不是一个完整运行的程序。选项设置,属于辅助变量。规定当前的脚本需要的选项。在python脚本中的选项仅是做脚本编码时的辅助。也可以这么操作,但其本身支持在配置中指定动态库。执行之后运行,或者当一个包在缓存中构建之后,关注我,学习更多C/C++,算法,计算机知识。这里对应好使用的profile文件的内容。当然使用其他方式安装也是有效果的。注意,如果想跟好的学习。
2024-05-12 00:14:14
1426
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人