自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cuber-lotus的博客

合作请私信

  • 博客(113)
  • 收藏
  • 关注

原创 算法笔记(个人用)(不定期更新)

文章目录前言说明Note文档编辑相关语言特性相关 (C/C++)输出数组最后一个元素后面无空格二分查找函数rand() 范围算法相关排序区间求和题单基础数学素数素数判断素数筛朴素筛选 (埃式筛)朴素筛选优化线性筛 (欧拉筛)闰年判断蔡勒(Zeller)公式GCD10转R进制卡特兰数完美数分解因数欧几里得-欧拉定理数根[1~n] 中完全平方数的个数计算Π pia二分查找顺序序列找唯一值逼近类二分容斥原理位运算整形存储大小intlong long`__builtin_函数`取模自动取模工具类除法取模判断奇偶统计

2021-03-23 22:35:02 2316 4

原创 GCC-warnings含义

在写完脚本自己测试时才发现,这个库真垃圾,有每日使用次数(应该是联网的),异常率高,机翻中的机翻。本文翻译使用的是,WPS的自带翻译功能。笔者简单的略了一遍,稍微改了点一眼就能看出来的机翻问题。但肯定还有很多问题,请自行阅读原文理解和使用。关注我,学习更多C/C++,算法,计算机知识。一开始找了个python库写了个脚本翻译。

2024-04-29 22:31:03 541

原创 (C++) share_ptr 之循环引用

unique_ptrshared_ptrweak_ptr都是内存管理中的非常重要的一部分动态内存管理 - cppreference.com。其中shared_ptr在实际应用中具有非常广泛的应用。而由于其较unique_ptr的功能多,有引用计数的概念。导致存在一个名为循环引用的问题。这是一个非常经典的坑。但解决方案也不是很复杂。下面来一起看看吧。

2024-04-25 21:38:38 866

原创 (C++) 内类生成智能指针shared_from_this介绍

unique_ptrshared_ptrweak_ptr都是内存管理中的非常重要的一部分动态内存管理 - cppreference.com。其中shared_ptr在实际应用中具有非常广泛的应用。而拷贝操作也是非常常见和重要的操作。在类外可以直接使用默认的拷贝构造和拷贝赋值,而类内呢?显然这两种默认的拷贝操作均不适用。本文就是讲解使用来处理该问题。

2024-04-24 20:24:41 759

原创 (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 1338

原创 (Git) gitignore基础使用

在使用git管理的项目中,可以通过.gitignore文件管理一些需要忽略管理的文件。.gitignore的文件。

2024-04-07 20:43:24 421

原创 (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 914

原创 (C++) 属性说明符-标准属性

本文着重讲解属性说明符的标准属性(C++) 属性说明符-语法属性说明符是一种与具体编译器强绑定的内容。有的属性可以作为编译器的提示,有的则是直接作为设置。在C++11之前,不同编译器拥有不同的语法,不同的说明符。在编写跨平台程序时非常麻烦,移植性一直不是很好。到了C++11标准终于规定了属性说明符的标准。但是所支持的说明符随着标准的提出还不是很多。但该语法仍然允许使用编译器自身的说明符,为以后的扩展做了一定的预留。

2024-03-29 00:38:00 1053

原创 (C++) 属性说明符-语法

本文着重讲解属性说明符的语法属性说明符是一种与具体编译器强绑定的内容。有的属性可以作为编译器的提示,有的则是直接作为设置。在C++11之前,不同编译器拥有不同的语法,不同的说明符。在编写跨平台程序时非常麻烦,移植性一直不是很好。到了C++11标准终于规定了属性说明符的标准。但是所支持的说明符随着标准的提出还不是很多。但该语法仍然允许使用编译器自身的说明符,为以后的扩展做了一定的预留。

2024-03-29 00:36:51 819

原创 (C++20) jthread中stop_token的基础使用

在多线程中单单使用循环判断一个标志是效率比较低的。如果能将一个线程进行挂起那CPU的效果会提升很多。最普通的方式就是循环判断。这对于常见的线程封装来说很常见。在C++20中推出了jthread。关注我,学习更多C/C++,算法,计算机知识。该sstoken与线程对象绑定。会自动调用注册的callback。回调函数的声明周期,跟随回调对象。对象注册一个监控停止的回调。能够接受一个第一个参数为。

2024-03-20 18:25:16 515

原创 (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 777

原创 (C++) 如何设计一个安全的pop函数

下面为了方便,采用继承而不是组合的方式来处理。请注意在调用模板基类内容时候的一些注意点,本文不会讲解这块基础。有一些激进派认为,空栈的pop直接抛出一个确定的异常,但本文没那么粗暴。且默认采用移动语义,缺点是对于一些确定删除移动语义的对象会报错,当然这类对象比较少。

2024-03-07 21:21:35 1050

原创 (C语言) time库-日期和时间工具

日期和时间工具 - cppreference.com是在C语言中的日期与时间工具。其中主要有三大模块,常量,类型和函数。在C++中推荐写成,基本都是继承.h中的东西。函数主要分为两类,时间操作函数和格式转换函数。本文主要为C语言中的标准操作,其中在C11和C23又添加和废弃了许多内容,但这块不会本文着重讲解。UTC 协调世界时纪元(地球纪元)夏令时

2024-03-01 21:14:12 1194

原创 (libusb) usb口自动刷新

因为设备的实际请款,可能关闭后就再获取不到了,只要不随便乱插,设备标号和句柄是不会变的,因此直接保留好。因此可以设置一个比较大的循环,无脑获取多次,直到获取成功,但若多次获取失败,则直接视为失败了。界面功能比较简单,基本就是widget中的代码,设置好vendor和倒计时后点击开始即可。:有的vendor是一样的编号,请根据实际的情景和需求改变具体的查找规则。在实际作用时,可能因为物理设备实际问题,导致设备指针和句柄的获取失败。本demo主要就是libusb的封装,然后是对于封装的简单调用。

2024-02-29 18:02:48 1106

原创 【题单】(树) 树的基础遍历搜索

lc楼主主页-天赐细莲首先明确树是一种特殊的图。常用的图的遍历方式为bfs或dfs。这同样也是树形问题的常用方式。和图一样树衍生出来的算法丰富多彩。本文挑选了一些学习树的入门题目,包含常用遍历,序列化与反序列化等经典模型。这些题目无论是在校学习考研,或是求职等都是基础中的基础,要求牢牢掌握。熟练者都能做到一遍AC。

2024-02-29 11:34:05 423

原创 我的创作纪念日

​ 当然当时和力扣leetcode签订创作者协议的时候,我将csdn的博客作为自己的一份能力证明表了出来,这应该算是我的一份正向推动吧。但是这样的开销实在太大。文章主要是作为我个人的记录,我也是希望能与他人交流的,但几乎没看到谁看了我的文章专门跑过来与我交流。在平时学习的时候,会给自己做一些简单的记录,是真的简单的在比如手机代办事项上做一条标记。算法文章和技术文章的,形式我也会慢慢形成自己的风格,当然目前已经有了一定的自己的风格了。以后会考虑出视频的方式,这就脱离了文章的范畴了,这里不展开说了。

2024-01-14 15:03:14 1040

原创 (Qt) 预编译头文件precompile_header

预编译头文件是C++编译系统中的一种机制,用于提高编译速度。就是将我们需要的内容放在预编译头文件中,并单独编译成一个文件。但其他文件在编译时需要里面的内容时,可以直接去使用这个编译好的文件,节省编译时间。我们常见的stdafx.h或pch.h就是在一些平台中常见的预编译头文件常用命名。大多数编译工具的机制都是类似的,本文主要说一下qmake中的使用方式。

2023-12-28 20:24:54 875

原创 软件设计之SOLID原则

软件设计之SOLID原则(SRP) 单一职责原则 Single Responsibility Principle(OCP) 开闭原则 Open Closed Principle(LSP) 里氏替换原则 Liskov Substitution Principle(ISP) 接口隔离原则 Interface Segregation Principle(DIP) 依赖倒置原则 Dependency Inversion Principle

2023-12-27 00:03:42 1121

原创 (QMake) 库的操作

这是qt Creator 默认形式,应该也可行,但没怎么使用过这种形式。链接方式其实写法比较自由,上文中是直接将路径和文件合并的书写。但关键是需要使用Qt库中的内容。采用一个顶级工程qmake,管理两个子工程。比如这里用了最具代表的QWidget。

2023-12-27 00:01:32 424

原创 (CMake) 库的操作

在cmake中,动静态库的制作主要配置同一个位置的参数即可。辅助验证cmake的配置。

2023-12-26 00:10:22 487

原创 (GCC) 库的操作

经过测试,windows下为libxxx.a也可以。准备两个文件,以最简单的形式进行展示。为了方便直接在头文件中声明函数。生成一个动态库,有可执行权限。链接操作静动态库一致。不指定-o的话默认是。链接操作静动态库一致。

2023-12-26 00:05:58 425

原创 (CPP20) 简单实现span

而入错传递的是一个视图,这个视图能够指向原对象,那么这个直接传递的开销也是我们可以接受的。关于std::vector和std::array相对比较方便,也是大家平时直接应用的方式。到了C++中泛化出了迭代器的标准。关于这里的第二个传入首位位置的版本,需要允许两者直接的相互减。可见具有动态长度的std::vector在这里是最方便的。在不传递引用的情况下,传递对象在很多时候会巨大的性能损耗。这里的主要难点就是对构造函数的实现,如何获得首地址和长度。是C语言中传数组的最常见形式。高,不然无法获得数组的引用。

2023-12-01 22:59:06 496

原创 (C++20) constinit常量初始化

来解决该问题,因为C++保证了局部静态变量只有在第一次调用到的时候才初始化,这也是著名设计模式,单例模式中最常用的一个技巧。constinit 也能用于非初始化声明,以告知编译器 thread_local 变量已被初始化,以减少隐藏的防卫变量所致的。由于多文件编译顺序等一些列问题,可能又有第三个或者更多对象对这两个有了依赖,就会出现一些列意想不到的问题。在C++多文件编译中会出现一个常见的问题,叫做静态初始化顺序问题。constinit 可以针对具有静态存储方式的对象的声明上。是在编译期间确定初始值。

2023-12-01 00:04:30 577

原创 (C++20) consteval立即函数

可见普通函数和constexpr函数都可以在汇编函数中展现,但是consteval函数并没有,这也正解释了为什么为什么不能获取函数指针。但是对于constexpr修饰的函数来说,无法保证严格的在编译器确定。下面这段代码,fun1正常编译运行,但是到了fun2就会编译失败。这里举个例子,一般函数我们可以获取它的地址,并赋到一个函数指针上。编译器会自动检测上下文的常量性质,因此下面这段代码也是可性的。说到函数怎么能少得了lambda函数,在参数后添加关键字即可。再具体的我们来查看汇编代码,便会一目了然!

2023-11-30 22:50:45 690

原创 (C++17) variant的使用与union对比

联合体,是在C语言时代就存在的概念。主要应用在一些收内存限制较大的情景。但是传统C的限制太大,但是到了C++中给出了更安全的类型variant。

2023-11-10 00:01:22 473

原创 (C++17) any的使用与简单实现

在C++这种静态强类型语言中,在一些开发场景下有时需要一种万能类型。好在C++中有模板类的技术,通过继承的方式,达到类型擦除的效果。然后主要是能够做到不同数据类型的切换,普通的方法肯定是不行的。首先很使用智能指针可以帮我们减少很多对内存问题的负担。因为涉及各种数据类型问题。描述用于任何类型的单个值的类型安全容器。借助模板技术,我们可以手动实现一个Any。注意转为右值引用时候注意所有权的问题。自行注意各种应用在使用的时候的区别。可见内是对对象进行了重新的构造。某次的测试结果是这样的。

2023-11-09 18:56:03 303

原创 (C++17) optional的使用

optional 》adj.可选择的,选修的在编程与实际项目中,可能会出现数据不合法的需求与状态。在以往通常的使用中,通常会为每种数据类型定义一个值作为不合法的标志。比如int = -1等等。编写时麻烦这些不合法数据在有的场景下可能是有效的团队协作时需要来回确认等等为了处理这种可能出现不合法的情况,C++17推出了来处理这个问题。在C++20和C++23对此还进行了加强,但本文不对这些加强做过多演示。

2023-11-08 23:54:29 139

原创 软件设计原则 1小时系列 (C++版)

申明面向对象-软件设计原则-1小时搞懂-波波酱老师_哔哩哔哩_bilibili本文为up主的视频教学总结成文本和code业主要是为了Cpper学习者学习。因为up在视频中使用的是java描述。

2023-10-08 22:39:39 651 3

原创 (muduo) 基础demo

C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装bnu_chenshuo的个人空间-bnu_chenshuo个人主页-哔哩哔哩视频 (bilibili.com)muduo 是一个在linux下的网络库。不跨平台。该库还是比较知名的,但是由于历史遗留问题,要依赖boost库等问题。有过一定的诟病,但是最为学习来说还是不错的,muduo库在实际项目中使用的人多吗?- 知乎 (zhihu.com)

2023-09-28 00:04:47 140

原创 (Golang) 牛客 在线编程 Go语言入门

本文为牛客的在线编程的GO语言入门题集的个人解析牛客网在线编程_语法篇_GO语言入门本人主语言C/C++ 来这边刷一下GO的入门语法题,这个题库很基础很入门真的就是纯考GO语法本文虽然是展示AC代码,但实际是为了记录GO的各种基础语法,便于以后遗忘了可以查看牛客的环境是版本:Go 1.14。

2023-09-10 22:15:10 727

原创 (线程池) 100行以内的简单线程池

线程池_百度百科 (baidu.com)线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。

2023-08-30 21:00:33 268

原创 (libevent) 基础demo

libevent# linux中下载 apt-get install libevent-dev官网的简介:Thelibeventlibeventsignalsor regulartimeoutslibevent API提供了一种机制,可以在文件描述符上发生特定事件或达到超时后执行回调函数。此外,libevent还支持由于信号或常规超时而产生的回调。

2023-08-24 00:00:57 235

原创 (内存池) 基于嵌入式指针的简单内存池

内存池_百度百科 (baidu.com)(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池的实现方式多种多样,而本文仅实现一个简单的内存池,主要运用到嵌入式指针。嵌入式指针,指的在数据单元中,用一部分空间保存某一块空间的地址信息。实现方式多种多样。

2023-08-22 23:59:24 791

原创 (CMake) 指定生成器 generator

但是cmake在不指定的情况下,会使用默认的生成器,无论当前环境是否拥有该生成器。在使用cmake的时候,往往想要使用自己需要的生成器。暂时未找到修改default的方法。如何处理该情况就是本文的内容。在3.15版本开始,支持设定。此方法仅对每次操作有效。cmake -G "MinGW Makefiles"set(CMAKE_GENERATOR "MinGW Makefiles")CMAKE_GENERATORCMAKE_CURRENT_SOURCE_DIRCMAKE_BINARY_DIR

2023-08-13 01:48:28 3338 2

原创 (C++) 多线程之生产者消费者问题

生产者消费者问题_百度百科 (baidu.com)生产者消费者问题 (英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。condition_variablethreadmutexlock_guardunique_lockwait

2023-08-04 00:04:03 783

原创 (makefile) 使用基础

一个makefile的第一个规则是主规则,后续规则是在主规则有需要时才执行。从上面的效果看到,我们会获得很多的.o文件和一个.out文件。当我们需要清除的时候,除了写shell还能用makefile。这样在同路径下若有clear同名文件也能执行这个规则。众所周知,头文件不属于源文件,因此下文不会涉及。自定义变量必须有值,自动变量根据目标和依赖而定。无后缀的两种模式,任一字母大小写错误即错误。- 自定义变量- 预定义变量- 自动变量模式匹配函数伪目标

2023-07-26 23:33:49 126

原创 C/C++ 内存管理

本项目主要记录各类在C/C++使用过程中,有关内存的各种事项。内存泄漏内存溢出访问越界等等。- 内存泄漏 **memory leak** - 内存溢出 **out of memory**- 访问越界 **access violation**

2023-07-20 22:44:32 86

原创 (Qt) Http之Get请求使用基础

http的操作是网络通信中非常常见的操作,其中广泛使用get,post两种操作。本文将对Qt中,http的get请求做简单应用,来进行展示。HTTPGetPostQT += network#include #include

2023-07-05 22:31:55 1361

原创 (Linux) 套接字socket基础

C/C++没有标准的网络库,因为都需要用到各个平台的接口才行。本文讲解Linux下最基础的socket编程,实现一个简单的回声服务器。socket bindlisten acceptrecv sendconnect close

2023-07-05 00:40:02 370

原创 (C++) Cpp20 概念和约束

模板技术是c++中的一项非常重要的技术。而SFINAE更是在整个体系中起着举足轻重的分量。而对于支撑这概念的各种技巧也是在不断发展。std::enable_if#include #include concept requires表达式

2023-07-01 00:33:41 463

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除