gcc
使用指定的gcc
Q:直接在命令行中设置环境变量并运行脚本 or 在脚本内部设置环境变量时?
A:一般直接在命令行中设置环境变量并运行脚本。如果这样,CC 和 CXX 环境变量在执行脚本前已经被设置,并且这些变量会在脚本执行期间生效。相比之下,在脚本内部设置环境变量时,这些变量只在脚本的执行上下文中有效,并不会影响调用该脚本的父 shell 会话。如果脚本中有子进程或其他命令需要使用这些环境变量,它们可能不能正确继承这些变量。
export CC=...export CXX=...
编译自己的glibc gcc clang
gcc特定版本Linux源码编译安装 (以gcc-8.5.0为例)
How to compile my own glibc C standard library from source and use it?
如何使用新的glibc来编译自己的程序
编译glibc报错
https://stackoverflow.com/questions/76079071/when-i-compile-glibc-2-28-with-the-make-command ...
Compiler
未读Lexical Analysis
Thompson’s Construction
It is easy to design data structure of a NFA with Thompson’s Construction.
Does Thompson’s algorithm produce optimal NFAs?
Transaction Support
什么是事务支持?
事务支持(Transaction Support)详解
在数据库系统中,事务(Transaction)是指一组数据库操作(如插入、更新、删除等)组成的逻辑单元,这些操作要么全部成功执行,要么全部失败回滚,确保数据的一致性和完整性。数据库的事务支持是指系统提供机制来管理这些事务,通常遵循 ACID 特性。
1. 事务的ACID特性
事务支持的核心是保证 ACID 四个关键特性:
特性
说明
A(Atomicity,原子性)
事务是不可分割的最小单位,要么全部执行成功,要么全部失败回滚(如银行转账:A扣款和B入账必须同时成功或失败)。
C(Consistency,一致性)
事务执行前后,数据库必须从一个一致状态转换到另一个一致状态(如转账前后总金额不变)。
I(Isolation,隔离性)
多个并发事务之间互不干扰,防止脏读、不可重复读、幻读等问题(通过锁或MVCC实现)。
D(Durability,持久性)
事务一旦提交,其对数据的修改就是永久性的,即使系统崩溃也不会丢失(通过日志如redo log实现 ...
Web相关问题
访问一个页面的过程?
访问一个页面的过程涉及多个步骤,从用户输入 URL 到页面最终渲染完成,背后经历了复杂的网络通信和浏览器处理。以下是详细的过程:
1. 用户输入 URL
• 用户在浏览器地址栏中输入 URL(例如 https://www.example.com)。
• 浏览器会检查输入的内容是否是有效的 URL,如果不是,可能会将其作为搜索关键字处理。
2. DNS 解析
• 浏览器需要将域名(如 www.example.com)解析为对应的 IP 地址。
• 过程:
浏览器检查本地缓存(如浏览器的 DNS 缓存)是否有该域名的 IP 地址。
如果没有,检查操作系统的 DNS 缓存(如 /etc/hosts 文件)。
如果仍未找到,向本地 DNS 服务器(通常由 ISP 提供)发送请求。
如果本地 DNS 服务器没有缓存,它会向根 DNS 服务器、顶级域(TLD)服务器和权威 DNS 服务器逐级查询,最终获取 IP 地址。
• 解析完成后,浏览器会缓存该 IP 地址,以便后续访问。
3. 建立 TCP 连接
• 浏览器获取到服务器的 IP 地址后,会通过 ...
图表
Use Case Diagram (用例图)
适用阶段:需求分析
用途:描述系统功能(从用户角度),识别参与者(Actor)和用例(Use Case)之间的关系。
目标:
明确系统边界(哪些功能归系统管,哪些不归)。
帮助需求方和开发团队达成共识。
示例:用户登录、注册、查看订单等用例 https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-use-case-diagram/
Sequence Diagram (顺序图)
适用阶段:需求分析 & 设计阶段
用途:展示对象之间的交互顺序,特别是消息传递(如 API 调用、方法调用)。
目标:
在需求阶段:澄清复杂业务流程(例如“用户支付订单”的步骤)。
在设计阶段:定义模块/类之间的协作方式(如微服务通信)。
示例:用户 → 前端 → 后端 → 数据库的调用流程 https://www.visual-paradigm.com/guide/uml-unified-mod ...
Evergreen Skills
技术栈
go-stock: 这是一个Go + Vue/NaiveUI + Wails技术栈的桌面应用,结合了本地AI模型和金融数据API,专注于股票分析的隐私与功能性平衡。适合对量化分析、AI辅助投资感兴趣的开发者参考。
框架
桌面应用开发
Wails框架
Why:
传统桌面开发(如 C++/C#/Java)需要学习复杂的 GUI 库(如 Qt、WinForms),而 Wails 允许开发者用熟悉的 Web 技术(前端) + Go(后端) 快速构建应用。
- 避免 Electron 的臃肿:Electron 应用通常体积大、内存占用高(每个应用打包一个 Chromium)。Wails 使用系统原生 WebView(如 Windows 的 WebView2、macOS 的 WKWebView),显著减少资源占用。
What:
Consider it a lightweight and fast Electron alternative for Go. You can easily build ap ...
OpenGL
工具链
以下是开发OpenGL应用所需的核心软件和库的完整总结,按功能分类并标注安装方法(以Ubuntu为例):
📌 1. 核心必备组件
名称
作用
Ubuntu安装命令
备注
OpenGL
图形API标准
sudo apt install mesa-common-dev
已包含在系统驱动中
GLFW
创建窗口/处理输入
sudo apt install libglfw3-dev
比GLUT更现代
GLAD
加载OpenGL函数指针
需从官网生成
选择Core Profile + 对应版本
GLM
数学库(矩阵/向量运算)
sudo apt install libglm-dev
纯头文件库
📌 2. 图形开发工具
名称
用途
安装/下载方式
GLEW
被GLAD替代的扩展加载库
sudo apt install libglew-dev
Assimp
3D模型加载(obj/fbx等)
sudo apt install libassimp-dev
Dear ImGui
实时调试UI
从GitHub克隆
stb_ ...
Graphics
求职
【游戏开发面经汇总】- 图形学基础篇 - 不羁的游侠的文章 - 知乎
腾讯游戏开发面经(已offer) - GameMaker的文章 - 知乎
Learning Loadmap
c++基础
图形学基础
图形学API,先学opengl
现代图形API,vulkan或者metal,推荐vulkan tutorial
工程能力,没事多做算法题(不用太难),学习各种开源项目
对现代API进行适度封装(先参考别人的做法),学习渲染技术(比如games 202)并自己实现
推荐RTR4,不要太早看
至少一款dcc软件,max,maya,blender或者别的什么。
基础的图形常识:各种贴图是干啥的,怎么制作出来的,怎么修改。uv是啥,怎么利用uv。
基础的图形编程能力:至少能看懂hlsl或者cg吧。虽然unity现在也有graph节点了,但很多文献还是cg或者hlsl甚至glsl写的。
对渲染管线有基本的了解:至少知道一帧图像的渲染过程。即使是用shader graph或者材质蓝图,也需要知道这些基础知识。不然连顶点着色器和像 ...
Tangent Space
将tangent space的法线转换到world space,只需要对法线左乘3x3的TBN矩阵即可,无需在TBN矩阵第四列加上P点坐标。这是因为法线只是一个方向向量,平移并不会改变它的朝向。
Matrix Multiplication
通用矩阵乘(GEMM)优化与卷积计算 - 黎明灰烬的文章 - 知乎
How To Optimize Gemm wiki pages
How to Optimize a CUDA Matmul Kernel for cuBLAS-like Performance: a Worklog
Matrix Multiplication in CUDA
Libraries Optimized for GPU Programming Computing
To perform General Matrix Multiplication (GEMM) and Sparse Matrix-Matrix Multiplication (SpMM) on your NVIDIA RTX 3070 Ti, you can use several libraries optimized for GPU computing. Here are some of the most popular ones:
1. cuBLAS (CUDA Basic Linear Alg ...