图形学初探——使用OpenGL写一个简单的Minectaft渲染Demo 简介又又又又整新活了,最近闲的无聊学习了一下Games101,然后为了熟悉光栅化,使用 C++和 OpenGL 写了一个简单的 Minecraft 的渲染 Demo,最终的效果大概如下图所示:这个 Demo 支持类和 Minecraft 原版相似的相机移动,动态区块生成,以及简单的着色(当然着色不是这里的重点,能看就行)。趁热打铁做个架构和技术细节的解析。 框架由于 OpenGL 是通过看http 2024-05-07
读书笔记(1) -- 精通Linux 1. Ctrl-D、Ctrl-C、Ctrl-Z Ctrl-D 向shell的标准输入输入一个EOF (流输入结束) Ctrl-C 通知shell向进程发送一个SIGINT信号 (进程中断) Ctrl-Z 挂起进程,可恢复 fg bg 2. Shell通配符 *一个或者多个任意字符 ?单个任意字符 3. Shell 重定向 1> [name] 把标准输出流重定向到文件name 2&g 2023-05-08
面试准备(1)--TCP协议 TCP协议简介简介TCP协议栈位于IP层(网络层之上),应用层之下,是主机之间可靠传输的最基础网络协议。一个单独的TCP数据包被称为报文段,下图展示了其在不同层级的协议下数据包的覆盖结构: 1[链路帧| IP头 | TCP头 | 应用层协议的数据 ] TCP是需要建立连接的全双工协议(两边可以互相发送和接收数据),为了实现数据的可靠传输,TCP在其头部中添加了大量的元数据信息(包括基础的的20 2023-02-23
数据库事务简介 注意,本篇博客的事务一般代指数据库事务,本篇博客中所讲的内容不属于任何数据库的实现,只是部分理论的介绍. 事务的产生与概念作为构建在文件系统上层的一种广泛使用的数据管理软件,数据库可靠性一直是其设计的重点之一. 在为引入事务这一概念之前,数据库在处理这一类问题的时候总是显得十分复杂和冗杂,因为开发者需要考虑各种客样的突发情况,如: 数据刚到达内存还没写入磁盘就断电 多个客户端同时读写数据库导 2022-12-22
ELF格式与程序运行的内存模型 最近在复习一些操作系统相关的知识,而操作系统说白了就是为程序运行提供的环境的,和硬件直接接触的软件.现代操作系统要为程序提供一种虚拟环境,包括但不限于一个独立的地址空间,一个独立的虚拟CPU以及其他一些东西(如系统调用等).今天正好借这个机会来梳理一下程序的运行环境(主要是内存模型). 下面的所有例子都已C语言为例,但是请注意,这只是一种较为场景的实现,而不是C语言标准的一部分 程序运行的内存 2022-10-17 操作系统
简单介绍C++中的Promise和Future 并发编程随着计算机硬件的发展,单核芯片的性能已经很难再提升,现在科研和工程领域已经向着多核迈进很久了。这里先不说科研领域目前很火的分布式技术(包括存储、数据块,容器,网络等),而是从基本的工程领域的编程的视角上看,如何利用现代CPU的多核性能。 现代操作系统中CPU调度的基本单位是线程,在多核CPU的场景下多个线程会被操作系统调度器自动分配到多个核心中运行,如果线程数超过CPU的核心数(有的CPU 2022-10-04 C++
如何让clangd在vscodium下支持使用MSVC编译器的Cmake工程 背景由于下面的一些原因: 不想使用微软开发的C++插件(一是Vscodium内不提供,二是这东西确实不太好用,3.5分) 项目使用Cmake + MSVC构建(Gcc或者说Mingw的ABI和项目不兼容) 我就产生了标题的想法,也就是说如何让clangd在vscodium下支持使用MSVC编译器的Cmake工程,或者表述为一个比较常见的场景:如何抛弃微软的C++插件在vscode/v 2022-09-25
P=NP?--算法复杂性和NP问题概述 PUF(物理不可克隆功能)理论定义PUF指的是在物理上对于任意激励产生的一个唯一且不可预测的输出响应,通常基于半导体制造过程中自然发生的独特物理变化。 1任意激励-->[ PUF发生器 ]--> 唯一且不可预测的特征响应 SRAM PUF目前的PUF一般都是基于SRAM的PUF实现(具体原理由于不是重点因此不细讲),可直接集成到IOT设备/芯片中。 特点: 无需编程& 2022-08-12 IOT
LFS--日志文件系统介绍 Flash的结构简介由于本文章的主体为对LFS的介绍,介绍Flash也是为了引出LFS,因此这里对Flash的介绍也是点到为止,而不会太过深入.回到正题,开始正式介绍Flash. Flash是一种新兴的存储介质,一个完整的NAND闪存芯片布局如下图(来自https://flashdba.com/)所示,一个芯片(或者说一个封装)中有多个Plane,而每个Plane中有多个Block,每个Block 2022-07-20 体系结构
如何维护一个C++开源项目--从编译器到Github 前言2020年年中的时候,我在Github上开源了一个简单的Minecraft模组(下面以tr代称),由于受到社区的广好评,我就一直维护,到现在依然在更新。虽然目前只有180个星星,但是这个小项目也见证了我在C++以及开源这方面不小的成长。因此,趁着没事干这一契机,打算把我之前遇到的问题以及经验写下来,供给其他人参考。 软件开发与维护设计 本科学软件工程的时候我就知道,要想软件扩展性高,就要进行 2022-07-05