- 博客(139)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 算法笔记(个人用)(不定期更新)
文章目录前言说明Note文档编辑相关语言特性相关 (C/C++)输出数组最后一个元素后面无空格二分查找函数rand() 范围算法相关排序区间求和题单基础数学素数素数判断素数筛朴素筛选 (埃式筛)朴素筛选优化线性筛 (欧拉筛)闰年判断蔡勒(Zeller)公式GCD10转R进制卡特兰数完美数分解因数欧几里得-欧拉定理数根[1~n] 中完全平方数的个数计算Π pia二分查找顺序序列找唯一值逼近类二分容斥原理位运算整形存储大小intlong long`__builtin_函数`取模自动取模工具类除法取模判断奇偶统计
2021-03-23 22:35:02
2536
4
原创 (仓颉) 仓颉语言入门
仓颉-鸿蒙原生应用编程语言-华为开发者联盟 (huawei.com)初识仓颉语言-仓颉编程语言开发指南-学习仓颉语言 - 华为HarmonyOS开发者 (huawei.com)【原创】仓颉编程语言入门教程楼主作为主语言C++,副语言python。仅做基础的入门了解。本文不做任何格外的语法说明,仅在代码中用简短的注释辅助。下文均为教学视频中的实例demo(上方的视频也出现在官网的视频一栏中)。本文所有代码均在下方的在线编译器中进行尝试。除了最后两章,9,10无法进行单文件操作其余均有验证。
2024-09-07 01:26:44
496
原创 (C语言) stdlib 程序终止
是一个非常非常重要的库。重要到没有他就没有程序。但由于太重要了,且涉及过多底层相关内容,一半初学不会强调这些内容。升值一些工作了一段时间在 CRUD 的程序员也不太了解。本文重点整理C语言中在stdlib下有关程序终止相关的接口。如果 main函数 不写return 0;会怎样?从 main函数返回时,无论是通过return语句还是抵达函数尾,都会将 return 语句的实参(或若使用隐式返回,则为 0)作为exit_code传递并执行exit()。
2024-08-27 23:53:12
696
原创 (mcu) 嵌入式基础简单入门(程序架构分析)
本文为一份简单入门笔记,以 stm32 单片机为例。**声明:**由于笔者不是专业人员,仅作为入门初学者,因此本文避免不了的有专业性错误,请自行甄别。完全以一位纯应用型软件工程师的角度进行学习和思考。基于下层的支持为上层提供应用服务。只是我们目前互联网上的大多数软件是基于操作系统或者虚拟机或解释器等等基础。而单片机是直接操作硬件,是直接基于硬件提供的功能。
2024-08-27 00:39:23
1754
原创 (软工) 四代软件架构
当今软件架构中,拥有四代软件架构。这四个都是基于所在时代,技术,需求等多种因素应运而生的。在未来是否会有第五代软件架构,无人可知。笔者大胆推测,这第五代很可能与人工智能的大语言模型有关🫣。
2024-08-23 00:13:22
731
原创 (C++) 为什么auto_ptr被弃用
在 C++ 中,智能指针一直是一个非常重要的模块。从 C++98 起就有了智能指针`auto_ptr`。但是其本身具有非常大的问题。因此到了 C++11 便将其弃用,并提出了三个沿用至今的智能指针 `unique_ptr; shared_ptr; weak_ptr`。到了 C++17 更是直接移除了。具体原因请继续查看下文。
2024-08-22 00:05:30
778
原创 (Qt) QThread 信号槽所在线程
在 Qt 中用一套自己的封装的多线程操作。其中一种方式是继承 QThread 并实现void run();方法使用启动,这是一种很常见的线程的封装方式。这种方式在 java 中也是这么设计的。但是由于 Qt 的高度封装性和框架整体性,很多特性都是开发者自己测试出来的。其中 QThread 配合信号槽的特性就是本文要观察的重点。
2024-08-08 00:04:42
1049
原创 (C23/C++23) 语句末尾的标签
C++23提案·复合语句末尾的标签C23提案·声明和语句块结束前的标签在C/C++的标签使用语法中,两们语言的规定并不是一致的。很容易产生写法A在C语言中可行,而C++中不行。(虽然部分编译器做了增强,但标准中就是不行)。但非常幸运的是两者都在23标准中互相做了兼容。个人猜测是那帮专家自己写要兼容的代码时觉得非常麻烦而提出的。因为标签的意义就是一个表示,且表示非常明确,编译器理应本身就能做区分。
2024-07-25 23:41:34
989
原创 (C++) 智能指针指定删除器
自C++11后,推出了三个智能指针。其中unique_ptr和shared_ptr可以指定删除器。但两者的形式却不太一样,本文将带你了解两者的基础使用区别。
2024-07-23 22:44:47
665
原创 (C++) 文件读写基础
📄分点讲解C++用类封装了流式操作,使用体验是更加丰富,更加多。🗃️写法1:法2:法3:🗃️读法1:法2:法3:法4:法5:
2024-07-22 22:40:57
819
原创 (POSIX) 文件读写基础
📄分点讲解说白了,这就是最标准的 POSIX 的对文件描述符fd的操作方式。淡然posix下的文件操作和读写不知这简单的几种,但掌握最基本的以下几种是必备的。
2024-07-22 22:32:45
338
原创 (Effective C) 2.3 作用域
作用域应用于标识符的某个特定声明。标识符包含对象函数标签宏等等。作用域是一块连续的区域,在域的任何位置,可以访问当前位置的前面区域的标识符。
2024-06-24 00:41:13
342
原创 (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
871
原创 (C++) 函数重载机制
在C++中函数重载是一个非常强大由复杂的问题。在C++中本身就有许多函数机制,加上该语言也在不断的迭代,规则是越来越多。
2024-06-07 00:59:07
825
原创 (软工) 功能性和非功能性需求是什么?
软件开发的根本目的就是满足客户的需求。这个客户可以是一个人,一个企业,甚至是你公司内部的另一个部门。但绝大多数客户往往无法准确表达自己希望的需求,这时就需要软件架构师去挖掘功能。一般来说软件功能可以分为功能性需求和非功能性需求。
2024-06-04 00:03:43
777
原创 信息标记形式 (XML, JSON, YAML)
ref:Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课)单元5信息标记形式是当今网络世界中非常重要的一部分。目前主要被大众认可的有三类。标记后的信息可形成信息组织结构,增加了信息维度标记的结构与信息一样具有重要价值标记后的信息可用于通信、存储或展示标记后的信息更利于程序理解和运用。
2024-05-28 22:52:04
1024
原创 (C11) 泛型表达式
只能判断一个表达式的类型,因此如果是需要用到多参的话,可以嵌套的使用。关注我,学习更多C/C++,算法,计算机知识。不是必须写道最后一个,顺序这方面没有限制。可以根据类型指定调用的函数,注意参数个数。与控制表达式类型兼容,则程序无法编译。关联,则解释为其后的表达式。,若其类型与各关联之一的。,则解释为冒号后的表达式。限定符对类型识别不受影响。对指针类型的判断仍然使用。时,并且直接调用的情况。只在类型域中进行转换。可以判断自定义类型。
2024-05-28 20:49:27
1132
原创 (排序) 快速排序经典应用之快速选择
1738. 找出第 K 大的异或坐标值本题是一个二维前缀和的模板题但有一个附属需求就是要获得第k大的值,这就是经典的快速选择应用。或不是有效范围。(C++11 前)*first的类型不可交换(Swappable)。(C++11 起)RandomIt不可交换值 (ValueSwappable)。*first的类型不可移动构造(MoveConstructible)。*first的类型不可移动赋值(MoveAssignable)。
2024-05-27 00:29:25
531
原创 (Qt) 默认QtWidget应用包含什么?
本文将带大家,查看一个默认的Qt Widget程序可能会涉及哪些方面的内容。本文默认使用IDE为Qt Creator和qmake编译套件。当然由于个人能力和水平的局限性,并不可能带领大家看到所有的全貌。
2024-05-23 20:08:41
1015
原创 conan2 基础入门(06)-conanfile.py入门
真正需要指定生成动态库需要在conan install执行中指定。requirements() 方法用于指定包的依赖项。首先这是一个脚本性质的文件,不是一个完整运行的程序。选项设置,属于辅助变量。规定当前的脚本需要的选项。在python脚本中的选项仅是做脚本编码时的辅助。也可以这么操作,但其本身支持在配置中指定动态库。执行之后运行,或者当一个包在缓存中构建之后,关注我,学习更多C/C++,算法,计算机知识。这里对应好使用的profile文件的内容。当然使用其他方式安装也是有效果的。注意,如果想跟好的学习。
2024-05-12 00:14:14
1086
原创 conan2 基础入门(05)-(静态库&动态库)(Debug&Release)
本文均在windows下测试,使用msvc编译器。显示指定zlib使用静态库。关注我,学习更多C/C++,算法,计算机知识。中的所有库都是动态库了。
2024-05-12 00:10:45
441
原创 conan2 基础入门(04)-指定编译器(gcc为例)
可以用命令生成,也可以直接复制一份已存在的profile,或者直接自己新建一个空白文件都行。若不指定,经测试host为mygcc配置,build为default状态。如果你和上文中的代码和配置文件编写一致,请无脑直接操作以下命令。并修改成如下的配置,注意,请根据自己平台的gcc进行配置。一般这个在交叉编译时非常重要。在本示例中可以不指定。关注我,学习更多C/C++,算法,计算机知识。具体参见配置目录下的。在install命令下添加。注意在生成时区别于使用。注意:不同编译器的具体。这里的第二条分别制定了。
2024-05-11 23:59:22
804
原创 conan2 基础入门(03)-使用(msvc为例)
下面讲一些可能出现的问题,因为笔者是比较顺利的完成的,这里将的都是一些基于经验的猜测。格式的配置文件(但并非完全的ini,conan有自己的特殊处理)。如果你和上文中的代码和配置文件编写一致,请无脑直接操作以下命令。(注意,在默认生成的profile中是下载的静态库)关于上文中,文件和代码配置的相关信息可以参照官网的提示编写。我们可以在官网查看是否有该包,和包的版本。如果你只是单纯的下载一个库,到这里其实就可以结束了。我们查看以下该文件,可以看到下面的重要信息。库做了很多对应的操作,而其中最重要的是名为。
2024-05-11 23:57:57
1463
原创 conan2 基础入门(02)-安装
官方提供三种安装conan的方式。使用python安装安装包安装自行操作其中,python不是必须的,没有python不会影响后两种的安装方式和具体的conan使用。但用python安装对后期学习和使用有一定的帮助和好处。但作为初学阶段,只需要做到三选一即可。
2024-05-11 21:04:16
1166
原创 GCC-warnings含义
在写完脚本自己测试时才发现,这个库真垃圾,有每日使用次数(应该是联网的),异常率高,机翻中的机翻。本文翻译使用的是,WPS的自带翻译功能。笔者简单的略了一遍,稍微改了点一眼就能看出来的机翻问题。但肯定还有很多问题,请自行阅读原文理解和使用。关注我,学习更多C/C++,算法,计算机知识。一开始找了个python库写了个脚本翻译。
2024-04-29 22:31:03
859
原创 (C++) share_ptr 之循环引用
unique_ptrshared_ptrweak_ptr都是内存管理中的非常重要的一部分动态内存管理 - cppreference.com。其中shared_ptr在实际应用中具有非常广泛的应用。而由于其较unique_ptr的功能多,有引用计数的概念。导致存在一个名为循环引用的问题。这是一个非常经典的坑。但解决方案也不是很复杂。下面来一起看看吧。
2024-04-25 21:38:38
1453
原创 (C++) 内类生成智能指针shared_from_this介绍
unique_ptrshared_ptrweak_ptr都是内存管理中的非常重要的一部分动态内存管理 - cppreference.com。其中shared_ptr在实际应用中具有非常广泛的应用。而拷贝操作也是非常常见和重要的操作。在类外可以直接使用默认的拷贝构造和拷贝赋值,而类内呢?显然这两种默认的拷贝操作均不适用。本文就是讲解使用来处理该问题。
2024-04-24 20:24:41
1164
原创 (C++) this_thread 函数介绍
在C++11起,标准规定了标注的并发库。头文件为并发支持库 (C++11 起) - cppreference.com其包含线程、原子操作、互斥、条件变量和 future 的内建支持。而其中有一个namespace为,里面有四个重要的全局函数,其实现都与当前系统环境和编译器强绑定。std::this_thread 符号索引 - cppreference.comget_id()yield()返回当前线程的id。这个id是一个的内部类型。其实现依附于所在平台。
2024-04-24 20:20:32
2089
原创 (Git) gitignore基础使用
在使用git管理的项目中,可以通过.gitignore文件管理一些需要忽略管理的文件。.gitignore的文件。
2024-04-07 20:43:24
513
原创 (C++17) std算法之执行策略 execution
算法库-执行策略 - cppreference.com利用多核cpu加速算法在目前看来已经不是什么新鲜事了。在C++17中,推出了算法函数的执行策略,可以选择执行策略来优化算法的执行效果。(注意不是所有算法都支持)目前到C++20,已经支持了四种执行策略。当然本文也仅仅是做简单的展示和描述,因此内部细节十分复杂不是几篇端文章就能看懂的。标准策略执行策略类型(类)全局执行策略对象(常量)C++17串行执行C++17并行执行C++17并行无序执行C++20无序执行功能特性测试值标准。
2024-03-29 23:38:54
1082
原创 (C++) 属性说明符-标准属性
本文着重讲解属性说明符的标准属性(C++) 属性说明符-语法属性说明符是一种与具体编译器强绑定的内容。有的属性可以作为编译器的提示,有的则是直接作为设置。在C++11之前,不同编译器拥有不同的语法,不同的说明符。在编写跨平台程序时非常麻烦,移植性一直不是很好。到了C++11标准终于规定了属性说明符的标准。但是所支持的说明符随着标准的提出还不是很多。但该语法仍然允许使用编译器自身的说明符,为以后的扩展做了一定的预留。
2024-03-29 00:38:00
1102
原创 (C++) 属性说明符-语法
本文着重讲解属性说明符的语法属性说明符是一种与具体编译器强绑定的内容。有的属性可以作为编译器的提示,有的则是直接作为设置。在C++11之前,不同编译器拥有不同的语法,不同的说明符。在编写跨平台程序时非常麻烦,移植性一直不是很好。到了C++11标准终于规定了属性说明符的标准。但是所支持的说明符随着标准的提出还不是很多。但该语法仍然允许使用编译器自身的说明符,为以后的扩展做了一定的预留。
2024-03-29 00:36:51
855
原创 (C++20) jthread中stop_token的基础使用
在多线程中单单使用循环判断一个标志是效率比较低的。如果能将一个线程进行挂起那CPU的效果会提升很多。最普通的方式就是循环判断。这对于常见的线程封装来说很常见。在C++20中推出了jthread。关注我,学习更多C/C++,算法,计算机知识。该sstoken与线程对象绑定。会自动调用注册的callback。回调函数的声明周期,跟随回调对象。对象注册一个监控停止的回调。能够接受一个第一个参数为。
2024-03-20 18:25:16
660
原创 (C语言) print输出函数系列介绍
Linux 和 libc 给您拜 年 啦在这辞旧迎新的美好时刻:🧨 printf 携手 fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf, fputc, fputs, putc, putchar, puts 祝您新的一年能大展宏图。
2024-03-20 18:23:56
1646
原创 (C++) 如何设计一个安全的pop函数
下面为了方便,采用继承而不是组合的方式来处理。请注意在调用模板基类内容时候的一些注意点,本文不会讲解这块基础。有一些激进派认为,空栈的pop直接抛出一个确定的异常,但本文没那么粗暴。且默认采用移动语义,缺点是对于一些确定删除移动语义的对象会报错,当然这类对象比较少。
2024-03-07 21:21:35
1492
原创 (C语言) time库-日期和时间工具
日期和时间工具 - cppreference.com是在C语言中的日期与时间工具。其中主要有三大模块,常量,类型和函数。在C++中推荐写成,基本都是继承.h中的东西。函数主要分为两类,时间操作函数和格式转换函数。本文主要为C语言中的标准操作,其中在C11和C23又添加和废弃了许多内容,但这块不会本文着重讲解。UTC 协调世界时纪元(地球纪元)夏令时
2024-03-01 21:14:12
1641
原创 (libusb) usb口自动刷新
因为设备的实际请款,可能关闭后就再获取不到了,只要不随便乱插,设备标号和句柄是不会变的,因此直接保留好。因此可以设置一个比较大的循环,无脑获取多次,直到获取成功,但若多次获取失败,则直接视为失败了。界面功能比较简单,基本就是widget中的代码,设置好vendor和倒计时后点击开始即可。:有的vendor是一样的编号,请根据实际的情景和需求改变具体的查找规则。在实际作用时,可能因为物理设备实际问题,导致设备指针和句柄的获取失败。本demo主要就是libusb的封装,然后是对于封装的简单调用。
2024-02-29 18:02:48
1239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人