前情提要

上篇C++20 迈向异步 Part2 - 可等待体预告说使用socket套接字API实现TCP/UDP通讯并整合进C++协使用select原语实现事件循环。建立起一个简单的异步IO库。

但是后来写完发现步子还是太小了(指写起来很简单没啥难度),于是直接一步到位使用内核里新的io_uring设施实现消息循环。所有代码放在github上了OrbitZore/libzio。本文就简单阐述一下这个库为什么这么设计的。

阅读全文 »

C++20迈向异步 Part1-最简单的协程

时隔大半年,经历了老博客挂掉/Gnome换KDE等风波之后,总算迎来了计算机网络。也是读了一遍《Unix 网络编程 卷一:套接字联网API》和《UNIX 环境高级编程》,对异步和网络有了全新的认识。是时候重启这个系列了,而本Part将会介绍co_await和可等待体,并给出上一Part中generator的改进版,我们的协程现在可以等待另一个协程了。

阅读全文 »

前言

本学期开的最不明所以的课,第一节课作业竟然是写深度学习算法的原理。

第一天就让我学深度学习,nmd就不能按书上作业来吗

但是垃圾老师归垃圾老师,数据挖掘还是蛮有价值的。虽然我没有那么多数据…?

我那1T的pixiv图数据库不是吗?

恩,还是有必要学的

但是为什么有种这学科就像一个统计学家学了一点点计算机就过来发paper的感觉…

阅读全文 »

某些小型项目(100行左右或者小于100行)就直接放在github gist上了。以下是按时间最新排序的简单介绍

阅读全文 »

题图:命运石之门0 CG

前情摘要

开学一看,80286实模式+MS-DOS 平台上教汇编。倒也不是不能说不好,就是现在基本上不可用了…跑个程序还得套虚拟机。不爽,于是这篇笔记着重于从 MS-DOS 上的汇编迁移到现代 x86_64 Linux 平台上的汇编,还会提到一些其他有意思的主题。

阅读全文 »

前情提要

对我校编译原理没有实验课,没有课程设计,就是纯纯的理论很不爽,在与老师沟通后开始尝试写一个用于教学目的的编译器,在此之前我已经实现了正则表达式的解析和LL文法的分析,对于实现一个编译器很有兴趣。本着跟计算机打交道这么多年,连一个编译器都没摸透过的遗憾心理开始了编译器速通计划。

先花了一个星期确定技术栈上,最终我们敲定了先使用lex+yacc,然后借助llvm的框架快速搭建一个以llvm ir为目标代码的编译器。语言选定为C98的一个子集,去除了一些无关紧要的特性,保留了结构体等比较重要的特性。

然后是漫长的看各种手册实现的过程,在不断的思考-实现-碰壁循环中最终花费大约两个星期实现了一个最简单的编译器,但是相比原计划还是削减了一些重要的特性,比如结构体和函数指针。最终代码量总和在1k行左右,编译中的各个阶段均能独立运行输出调试结果。拿libreoj上的两道题跑了两个简单的测试,能过应该就没问题了。

开源以后再说吧

阅读全文 »

考前一天总算肝出来了(),感觉还是蛮有意思的。

数据库的基本概念

  1. 描述事物的符号记录称为数据

    数据和语义是不可分的。

  2. 数据库长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享

阅读全文 »

在日常的使用ArchLinux中,因为Dophin下面那个终端有时候会莫名其妙不跟踪好上面的路径,一次rm -rf .直接把/home/删一大半…包括原本Gridea的文件。巧的是刚好没备份(开学买的4T硬盘干嘛用去了…)。于是原博客就顺理成章的变成了一个不可维护的状态…

于是接下来用Hexo写作了,还请各位多多指教。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

0%