c++20

charlie1145141911 天前
网络·学习·socket·c++20·协程·epoll·raii
理解C++20的革命特性——协程引用之——利用协程做一个迷你的Echo Server仓库:https://github.com/Charliechen114514/co_practices
charlie1145141912 天前
c++·学习·算法·设计模式·c++20·协程·调度器
理解C++20的革命特性——协程支持2:编写简单的协程调度器仓库:https://github.com/Charliechen114514/co_practices
charlie1145141912 天前
c++·学习·设计模式·c++20·外观模式
精读C++20设计模式——结构型设计模式:外观模式⚠:笔者的这个设计模式谈不上了解,甚至可以说是现场学习的。所以这个部分会有所混杂GPT的生成内容,因此请您谨慎参考!
渡我白衣3 天前
开发语言·c++·c++20
C++ :std::bind 还能用吗?它和 Lambda 有什么区别?在现代 C++ 的语境下,std::bind 这个名字越来越少被提起。 许多新代码几乎清一色使用 Lambda,甚至不少开发者直接认为:
charlie1145141913 天前
c++·学习·c++20·协程·语言特性·调度·现代c++
理解C++20的革命特性——协程支持1首先,引出协程,我们跑不了提到函数的运行时栈:调用一个函数时,运行时会为该函数分配一个栈帧,在栈帧中保存参数、返回地址以及函数中声明的局部变量——这就是函数的运行时环境。
渡我白衣3 天前
大数据·人工智能·c++20
C++20 协程:在 AI 推理引擎中的深度应用在人工智能推理引擎的世界里,性能就是生命。一个成熟的推理系统要同时处理成百上千的请求,调度 CPU、GPU、网络 I/O,还要保证低延迟、高吞吐。如果你做过这类系统,就会知道它的复杂程度往往不在算子本身,而在调度与数据流的编排上。
charlie1145141914 天前
c++·学习·设计模式·访问者模式·c++20
精读 C++20 设计模式:行为型设计模式 — 访问者模式访问者模式是另一个经典的设计模式——它把“算法”与“数据结构”分离:把作用于一组对象的操作从对象中抽离出来,以便在不修改这些对象类的情况下添加新的操作。
charlie1145141915 天前
c++·学习·设计模式·程序设计·命令模式·c++20
精读C++20设计模式——行为型设计模式:命令模式Command设计模式实际上不太Command。这个比较反直觉。因为Command设计模式压根就不是直接死命令对象到底怎么做事情。而是发送命令,接收对象根据发送者发送的命令执行代码。
charlie1145141916 天前
c++·学习·设计模式·迭代器模式·c++20
精读C++20设计模式——行为型设计模式:迭代器模式标准库就是再好不过的例子了,到处都是迭代器(憋笑),很显然,在组合模式的时候,我们经常有这样的需求:需要遍历一个集合(数组、链表、树、图、数据库结果集等),但又不希望暴露集合的内部表示或把遍历逻辑散落在调用方代码中。把遍历逻辑和集合实现耦合,会导致难以维护、难以替换底层数据结构,并破坏单一职责。这个时候使用迭代器,显然就是合适的。
charlie1145141916 天前
c++·笔记·学习·设计模式·享元模式·c++20
精读C++20设计模式——结构型设计模式:享元模式现在我们来仔细学习一下享元模式:Flyweight,但是我觉得好像叫 Token 或者是 Cookie更加的合适(原书并列的说,笔者认为后两个说辞我显然更加能接受和理解),它主要是尝试解决一种性能问题——我们可不可以复用一些已经有的东西呢(注意我们没有在复用抽象,而是在复用数据,更加像是期待用引用取代值)
charlie1145141916 天前
笔记·学习·设计模式·程序设计·c++20·装饰器模式
精读C++20设计模式:结构型设计模式:装饰器模式扩展!这就是装饰器模式的功能!就像一棵圣诞树,你装饰了它,你就会得到一颗装饰后的圣诞树!它具备更好的观赏功能了!同时,他还具备一般圣诞树一样的功能。这种设计模式就是装饰器模式。
fengbingchun6 天前
c++20
C++20中线程类std::jthread的使用C++20中的std::jthread类表示一个执行线程。它与std::thread具有相同的常规行为,但std::jthread在析构(destruction)时会自动重新加入(rejoin),并且可以在某些情况下被取消/停止(cancelled/stopped)。
charlie1145141916 天前
c++·学习·设计模式·解释器模式·c++20
精读C++20设计模式——行为型设计模式:解释器模式笔者的这个更多是整理出来的内容,我没用过解释器模式,或者说,即使我真设计过一点DSL,因为犯不着那么麻烦,我也就没有采用如此刻板的解释器模式
charlie1145141917 天前
c++·学习·设计模式·状态模式·c++20
精读 C++20 设计模式:行为型设计模式 — 状态机模式状态机(State Machine)是工程里极常见也极重要的工具:当一个对象的行为不仅仅由当前输入决定,而是和“当前状态”强耦合时,状态机让我们把“状态 + 转换规则 + 动作”结构化、可测试、可扩展。状态机有很多实现风格:面向对象的状态驱动(State Pattern)、基于开关(switch/enum)的实现、表驱动(table-driven)、层次化状态机(statecharts/HSMM)、以及事件驱动的异步状态机等等。
奔跑吧邓邓子7 天前
c++·实战·c++20·c++20新特性
【C++实战(57)】C++20新特性实战:解锁C++编程新姿势在 C++20 之前,模板虽然提供了强大的泛型编程能力,但模板参数缺乏明确的约束,这使得在模板实例化时可能产生难以理解和调试的错误。C++20 引入的概念(Concepts)为模板参数提供了编译期类型检查,极大地增强了模板的安全性和可读性。
charlie1145141917 天前
c++·学习·观察者模式·设计模式·程序设计·c++20
精读 C++20 设计模式:行为型设计模式——观察者模式观察者!这个是一个很有名的设计模式——简而言之,我们这个模式在关心对象的变化。当对象变化的时候,我们要触发点事情,这个怎么做呢?我们要放一个观察者,看着它:嘿对象变了处理点事情!这就是这个设计模式在做的事情。
charlie1145141917 天前
c++·学习·设计模式·c++20·备忘录模式
精读 C++20 设计模式:行为型设计模式 — 备忘录模式我们现在往往会使用撤销 / 回退功能。这就意味着,咱们需要准备备忘所有的操作和他们的正反双方操作。这个在咱们的命令模式中的redo/undo模式看到了。当我们实现“撤销 / 回退”功能、快照保存、或者需要在不暴露内部实现的情况下记录对象历史状态时,备忘录模式是一个自然且常用的解决方式。它把对象状态的保存与恢复职责分离出来(备忘录),由另一个管理者(caretaker)负责保存这些备忘录,而不让外界直接访问对象内部细节。结果是既能保留封装性,又能实现状态回退、重做、历史回放等功能。
charlie1145141917 天前
c++·学习·设计模式·策略模式·c++20
精读C++20设计模式——行为型设计模式:策略模式我们天天都在用策略模式!标准库的算法在设计上就是一种策略模式!策略模式的核心想法很简单:把算法/行为从使用它的类中抽离出来,封装成可互换的“策略(Strategy)”,并允许在运行时或编译期替换这些策略,从而实现算法的可扩展、可测试与解耦。
charlie1145141918 天前
c++·学习·设计模式·代理模式·c++20·概论
精读C++20设计模式——结构型设计模式:代理模式到最后一个了!我们马上就要结束结构型设计模式的学习了!代理模式是一个使用极其广泛的设计模式!如果你不相信,我们可以马上来看看他到底多么的常见。
charlie1145141919 天前
c++·学习·单例模式·设计模式·c++20
精读C++20设计模式——创造型设计模式:单例模式我当时读到这里的时候更多的是惊讶,因为作者并不喜欢单例模式。当然单例模式的确存在它的意义。在很多场景下,如果我们期待全局程序总是访问唯一对象的情况下,我们才会去使用单例模式。比如说——全局唯一的数据库,全局唯一的日志对象。这个时候,单例模式就会显得非常的有用。老样子,我们不立马上代码,而是一步一步从头开始,思考着如何编写更好的符合单例模式范式的代码。