关于启动引导的那些事儿(下) : UEFI与GPT

MBR的缺点 MBR的缺点主要在于他是个程序。引导程序和磁盘分区原本是不太相关的两个事情,但是MBR却用一种及其原始的方式把它们混合在了一起。此外,MBR程序本身也带来了不少麻烦。由于MBR运行在实模式,因此它的编写与引导过程的其它程序有诸多不同。而且由于MBR是直接写在引导扇区的,并不是以文件的形 […]

查看更多

当我们谈论Monad的时候(二)

Welcome to Haskell 在上一篇文章中,我通过几个Java的例子简单的说明了Monad的本质和一些工程中常见的用途。接下来的文章就不再侧重于工程了,而是要慢慢向理论转换。而作为过渡,我选择了Haskell来代替Java进行说明。本篇文章默认读者已经对Haskell的基本语法有所了解,因 […]

查看更多

关于启动引导的那些事儿(上) : Legacy Boot

前些天群友@Seraph_JACK在整引导,于是我也跟着云了一下。结果发现,我对引导相关的了解着实拉跨。所以趁此机会,正好完整学习一下引导相关的知识。本篇文章大致会涉及MBR、GPT、UEFI等内容,以使用Grub引导Linux为例,来分析启动的具体过程。 启动综述 对于PC来说,启动电脑的目的是为 […]

查看更多

当我们谈论Monad的时候(一)

Monad不就是个自函子范畴上的幺半群,这有什么难理解的。 Phillip Wadler 当我们谈论Monad的时候,我们在谈论什么 坊间一直流传着一句话:“一百个学FP的人的心中就有一百个对Monad的理解”。而我相信,他们中的大部分人在看明白后又会写出一篇崭新的Monad文。我也一直很想写一写自 […]

查看更多

Python列表推导式一则:等价类划分

今天群友讨论的时候,突然要用到等价类划分。而之前讨论的时候,正好在生成关系矩阵的时候用了列表推导式。所以我就脑洞大开,试着写了一个等价类划分的列表推导式: 然后你就得到了20之内的 啦(大雾 主要应用的特性是Python的列表是可变的。而一旦引入状态,那一切都好办。这里就以列表套娃的形式引入了过程l […]

查看更多

玄学优化一个稳定排序算法

前一阵子(还挺前的)正好在忙数据结构的课程设计,大体是要求做一个航班管理系统。程序主体就是简单堆几个高效数据结构,再糊上一个RESTful API,没什么好谈的。不过在优化其中的排序算法时倒是学到了挺多。虽然说本质还是缝合若干优秀算法,但刚好最近也很久没更新博客了,所以干脆写一篇博客简述当时的思路吧 […]

查看更多

在ESP32上移植OpenGL实现

看@FrostMiku最近一直在玩ESP32,而且看起来真的很有趣,所以就求了个链接买了一块板子自己玩。咱也很想玩玩嵌入式嘛。不过ESP32的板子倒是真便宜,基本都在二三十左右。我这块由于带了个TFT屏,所以稍贵,价格是38。到手之后发现屏幕虽然不大,但是分辨率有135×240,所以整体显示效果还是 […]

查看更多

XCTF高校战“疫”区块链Writeup + 合约逆向题技巧分享

由于疫情学校还没开学,于是这几天一直在家里学(mo)习(yu)。前几天正好XCTF在办高校战“疫”,校内拉人打,所以就去打了一波。比赛两天,一天摸了一道题,总算也是有了点输出。第一天上来摸得Misc比较常规就不说了,主要来说一下第二天摸得区块链题吧。这是我第一次见到区块链合约的题目,此前完全不知道还 […]

查看更多

OpenGL学习笔记 (三)- 坐标系与顶点变换

在OpenGL学习笔记 (二)- 顶点与绘制指令中,已经对绘制指令与顶点规范进行了简单介绍,接下来的学习笔记将按照渲染管线的顺序继续说明。本节学习笔记将会介绍顶点数据在渲染管线中经过的第一步,也就是顶点着色器相关的操作。 虽然作为可编程着色器,顶点着色器并没有固定的功能,但是有一些操作通常都会交由顶 […]

查看更多

MMD渲染整活笔记(一)

没错,我又来整活了。这次整活的内容是MMD渲染,不过严格来说是自己渲染,并不是用MikuMikuDance进行渲染。起因……就是最近看LearnOpenGL的模型载入的时候,意外发现Assimp库还可以载入pmx模型。于是我萌生出了大胆的想法( 如果按照模型那一节的代码,直接渲染就能得到一个还算马马 […]

查看更多

KAAAsS

学生党一枚,业余程序员,逛B站喜欢二次元。常用Java、C/C++、Python、PHP、JavaScript,Rust、Haskell努力学习中。对机器学习、编程语言理论、网络安全都抱有浓厚兴趣。