札记
文章平均质量分 79
AMjieker
这个作者很懒,什么都没留下…
展开
-
利用QT 的 Graphics View 系统实现一个 简易的 Graph Editor
QT 中的 Graphics View 系统. 是一个相对成熟的渲染引擎的上层框架,通常也可以会叫做 Scene - View。 本文,利用了Graphics View系统来实现了一个简单的图编辑器。原创 2023-01-16 19:34:48 · 2635 阅读 · 3 评论 -
利用setjmp和longjmp实现一个简单的协程
协程是什么呢,有人说是轻量级线程,有人说的用户级线程,其和线程的区别可能就是更轻量、操作系统无感的。其实从根本来说的话,协程本质上就是在一个进程上的程序而已,外部感知不到它的存在。协程其实我感觉对理解函数压栈入栈、进程的上下文切换也是非常有帮助的。以下内容均在 Linux的 x86_64 环境下实现。 这里不讨论其他的实现。对于汇编上的函数来说,就是一个过程。汇编执行的逻辑就是一条指令一条指令的去执行,去处理。这里分为两个地方,第一个是代码区,我们的pc指针指向当前指向的指令。在x86_64下,寄存器存放原创 2022-12-06 12:43:43 · 590 阅读 · 0 评论 -
用QT实现一个简单的桌面宠物
有时候桌面空空的,或者屏幕空旷了,我们就可以找一点东西来点缀一下,那么桌面宠物是一个不错的选择。作为一个程序猿,如何实现一个桌面宠物呢?本文就给大家带来的是如何用qt提供一种思路并写一个简单的桌面宠物。原创 2022-11-18 21:47:14 · 2883 阅读 · 1 评论 -
C++ 模板 - CRTP 技法
在c++里面,若是要实现多态的话,实现多态利用的虚表来实现的迟绑定(类似于std::function),虚表中存放好对应函数的调用地址,以此来实现运行时选择。由于是运行时决定,而不是早绑定,需要通过虚表去寻找调用地址,中间存在一个过程(虽然可以忽略不计,但是不计较今天怎么说CRTP呢?多样化让c++变得可以选择的方式变多了(比如上述的直接利用std::function来搞,你只管实现,剩下的交给编译器)父类在实例化时只需要有子类的声明的就ok了,由于传入的模板类会继承自己,所以自己可以向下转这个指针。原创 2022-11-06 23:05:48 · 710 阅读 · 0 评论 -
C++模板 - index_sequence
`integer_sequence` 是 c++ 14中新增加的一个元编程工具其衍生出来的还有如 `index_sequence`、`make_index_sequence`、`index_sequence_for`等辅助工具原创 2022-10-30 17:51:23 · 2210 阅读 · 0 评论 -
C++ 自定义新的运算符
可是,我们可以通过已有运算符和运算符重载来达到假装添加新的运算符的效果。在C++中,我们可以对已有运算符进行重载,但是我们却不能新增加运算符~当然,可以实现得更加复杂,支持运算符优先级,这是后话。就是说,其实是通过一种取巧的方式来达到这一目的的。其实如果不介意使用宏的话,可以让其变得更加的 简洁。一样的技巧(特化),把返回值和参数类型确定。我们现在要实现这样的效果,嗯,就类似于。现在的代码,嗯,怎么看怎么有点不想C++现在就可以简单的使用其进行算子定义了!以尖括号括起来的就是我们的运算符。原创 2022-10-28 12:28:32 · 3149 阅读 · 0 评论 -
重载 — c++ name mangling
在c++ 中,众所周知,为了和c语言向下兼容,c++做出了很多的牺牲和让步,在这里面,函数,比c语言中的函数更要复杂和麻烦。原创 2022-10-24 21:01:13 · 623 阅读 · 0 评论 -
io_uring 之 liburing 的简单使用
io_uring是Linux内核在v5.1引入的一套异步IO接口,和aio不同的是,它可以提供更高的性能io_uring 具体有三个系统调用分别是,,,我们可以通过这三个系统调用来完成异步事件提交,收割,自己处理的流程异步io的优点在于,不用我们自己去等待 io操作的完成,我们只需要告诉内核,我们的任务,内核来帮我们完成。这样就可以让我们的进程去干其他的事情,实现更高的吞吐量。io_uring 利用 mmap 开辟出一块空间,让用户态和内核态的程序都可以共享的一块区域。原创 2022-09-30 21:43:53 · 1779 阅读 · 0 评论 -
浅尝C++ 的日期时间库
在C++中, 包含对二类时间操作的支持:- `chrono` 库,以各种精度跟踪时间的类型的灵活汇集。- C 风格日期和时间工具(如 [std::time]原创 2022-10-22 20:12:23 · 917 阅读 · 0 评论 -
基于 modern C++ 实现的线程池
其实本质上来说,线程池做的事情就是一个生产者、消费者模型没错,就是你在操作系统书上所看见的那个,最基本的,最实在的模型我们这个东西究其本质不过是一个 多生产者、多消费者模式而其用途呢?其实还是比较多的,特别是高吞吐的情况下,处理逻辑尽可能的让cpu吃满,这个时候,线程池这个组件就有用武之地了小技巧:分配线程池的大小和 cpu的核数有关,具体分配多少根据实际情况调优[amjieker]原创 2022-10-10 17:19:38 · 415 阅读 · 0 评论 -
玩转C语言指针~
数组和指针是非常灵活的东西,我们的C/C++程序员,尽可能用好指针最好使用typedef和using来简化我们的操作现代语言,比如golang、rust这种现在都已经采用后置类型的方式了,就我而已,我任务后置类型是比c/c++这种形式要来的好的当然,C++也可以做到一点保持统一风格}但不可忘记这些东西,举个例子:你不理解函数指针,你就搞不懂 c++ 中的function是如何实现的,有没有其他实现方式C++的类型萃取更是离不开类型的分辨甚至你可以使用 模板来给类型添加指针这样的操作。原创 2022-10-04 22:28:55 · 665 阅读 · 0 评论 -
C/C++ 札记(modern C++11/14/17/20 的东西)
一些c/c++ 有趣的东西原创 2022-04-11 10:18:03 · 818 阅读 · 0 评论