随笔分类 - C++
摘要:目录简介简单使用 简介 本文主要记录一下自己在使用Boost.asio时发现的一个协程队列库boost::asio::experimental::concurrent_channel。发现的路径也很搞笑,我当时需要一个队列库,因为使用的asio,所以想让AI帮忙使用Boost.asio基于协程写一个
阅读全文
摘要:目录 目录 简介 详情 请求 DoH DoT 返回 DoH DoT c-ares的使用 打包 解析 简介 DNS over HTTPS利用HTTP协议的GET命令发出经由JSON等编码的DNS解析请求。较于传统的DNS协议,此处的HTTP协议通信处于具有加密作用的SSL/TLS协议(两者统称作HTT
阅读全文
摘要:目录 目录 前言 准备工作 实现 初始化io_context并监听信号 启动连接ws的线程并启动io_context 建立tcp链接(以下步骤皆位于ws函数中) ws握手 传输数据 效果 总结 前言 本文主要介绍一个使用Boost.asio和Boost.beast基于协程连接Websocket(ws
阅读全文
摘要:目录 目录 简介 使用方法 限制 总结 简介 Boost.PFR是一个Boost 1.75版本出的C++14的基础反射库,其使用非常简单,非常便捷,但是适用性也比较差,有很多的地方无法使用,适合比较简单的结构体。 使用方法 获取字段 struct simple { char a; float f;
阅读全文
摘要:目录 目录 前言 信号量 counting_semaphore latch与barrier latch barrier 总结 前言 前面四部分内容已经把目前常用的C标准库中线程库的一些同步库介绍完成了,这一次我们探讨的都是C20中的内容。主要有两个部分,信号量和latch与barrier。 由于GC
阅读全文
摘要:目录 目录 前言 invoke_result 标准库中的invoke_result 我的实现 后记 前言 本篇博文将详细介绍一下libstdc++中std::invoke_result的实现过程,由于个人水平不足,可能最终的实现过程略有误差,还请各位指正。 invoke_result std::in
阅读全文
摘要:目录 目录 前言 条件变量 一些需要注意的地方 总结 前言 本文主要介绍了多线程中的条件变量,条件变量在多线程同步中用的也比较多。我第一次接触到条件变量的时候是在完成一个多线程队列的时候。条件变量用在队列没有数据时,等待入队线程入队数据。相比较于锁的使用,条件变量的使用更为复杂,使用时需要注意的部分
阅读全文
摘要:目录 目录 前言 lock_guard scoped_lock (C++17) unique_lock shared_lock 总结 ref 前言 前两篇的博文分别介绍了标准库里面的线程和锁,这一次的博文将会介绍锁的管理。 锁在多线程编程中非常常用,但是一旦使用不谨慎就会导致很多问题,最常见的就是死
阅读全文
摘要:前言 完成了前面三个模板元编程的排序以后,开始对Boost的MPL库感兴趣了,于是便使用MPL重新实现了一下那三个排序算法,选择排序、快速排序、堆排序。 时间上来说和之前差不多,堆排序花了我大部分的时间。最简单是应该就是选择排序了,只使用了一个类就实现了。 使用感悟 BoostMPL大大简化了元编程
阅读全文
摘要:目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_mutex 共享锁 std::shared_mutex (C++17) 带超时的锁 总结 简介 上一篇博文中,介绍了一下如何创建一个线程,分别是std::thread和std::jthread
阅读全文
摘要:目录 目录 前言 实现的一些小细节 Debug 惰性求值 总结 Ref 前言 经过前两次经验的积累,终于来到了麻烦的堆排序。在一开始接触模板元编程的时候,我就期望有一天能够写出元编程堆排序的代码。原因是看了知乎大佬的一篇文章《在简历上写了“精通 C++”后……》。由于学识浅薄,感觉只能接触到模板元编
阅读全文
摘要:目录 目录 简介 线程的使用 线程的创建 线程的方法和属性 std::jthread (C++20) stop_token (C++20) 总结 Ref 简介 本文主要介绍了标准库中的线程部分。线程是目前多核编程里面最重要的一部分。 与进程进程相比,其所需的资源更少,线程之间沟通的方法更多; 他们之
阅读全文
摘要:目录 目录 简介 实现 数据结构定义 在数组前添加一个元素 判断 分堆 合并 快速排序的实现 总结 简介 上一篇使用C++模板模板实现了一个选择排序。这一次,更进一步的,实现了一个快速排序算法。关于快速排序的可以看这一篇文章快速排序 实现 和上一次一样,我把快速排序算法分为几个小的步骤,分别实现,然
阅读全文
摘要:目录 目录 前言 代码详解 数据的结构 数据的操作 分割向量 合并向量 寻找最大值 排序 总结 前言 模板在C一直是比较神秘的存在。STL和Boost中都有大量运用模板,但是对于普通的程序员来说,模板仅限于使用。在一般的编程中,很少会有需要自己定义模板的情况。但是作为一个有理想的程序员,模板是一个绕
阅读全文
摘要:目录 目录 介绍 使用 Boost和STL的区别 介绍 本来这一次是想简单介绍一下Boost里面的协程库的使用的,但是Boost.Coroutine已经被废弃了,而Boost.Coroutine2目前只有非对称的协程支持,个人感觉并不是特别具有使用的价值。而C++20中的协程,IDE对其的支持并不是
阅读全文
摘要:文章目录 文章目录 文章内容介绍 Boost随机库的简单使用 生成一个随机的整数 生成一个区间的平均概率随机数 按概率生成一个区间的随机整数 一些经典的分布 与STL的对比 Ref 文章内容介绍 Boost.Random是Boost里面的一个随机库,它的第一正式版是在Boost 1.15中提供。它里
阅读全文
摘要:简介 如果使用比较多的命令行程序的话,对于命令行参数的输入肯定不会陌生,大部分的程序都是通过类似下面的形式进行输入的,比如熟悉的ls ls --all -l --color=auto 这里面包含了三种不同的命令行输入--all,-l和--color=auto。如果使用一般的解决方法的话,是使用get
阅读全文
摘要:Boost.Accumulators是一个累加器,实现的功能很简单,就是对一组数据进行操作,然后可以得到一些特征数据。 由于累加器默认不对数据进行储存操作,所以不能把它作为一个简单的容器使用。 简单使用 从实际使用上来看,它应该是一个header only库,所以可以直接include,不需要在最后
阅读全文
摘要:前情简介 在完成了第一版的《在C++中使用libuv时对回调的处理》之后,在对项目进行开发的时候,还是感觉有一些难受。 因为在实际操作的时候,需要构建一个结构体,并且需要对这个结构体的内存进行管理,非常的麻烦。 在对C++的模板编程进行简单的学习后,了解到一个比较基本的知识。如果一个值或者类型能在编
阅读全文
摘要:新的解决方法 https://www.cnblogs.com/ink19/p/13768425.html libuv简介 libuv是一个可以跨平台的C语言库,它提供了基于事件的异步IO支持[1]。提供了很多事件的支持,涉及到网络、文件、信号、线程、进程等。主要设计应用在Nodejs,也有很多其他知
阅读全文

浙公网安备 33010602011771号