姜茶.Blog

这是一个正在成长的程序员

linux 定时任务

校园网自动登录

今年的九月份,我们学校更换了校园网计费系统,将多个网络(校园网、移动宽带、校园内网)整个为统一的登录入口。新的计费方式带来了一些令人不爽的新特性:掌握不到规律的自动断线。 这个自动断线怎么理解呢,有好多种情况会导致自动断线: 长时间没有数据访问; 关机了一段时间重新开机也会断线; 有时晚上会突然的断线; 断线就需要重新登录,这对一个在桌子底下放着树莓派的人很不友好,为了...

软件包降级

manjaro arch pacman

Manjaro Linux(或简称 Manjaro)是基于 Arch Linux 的 Linux 发行版,使用 Xfce 、GNOME和 KDE Plasma 作为默认桌面环境,和 Arch 一样,采用滚动更新。其目标是为 PC 提供易于使用的自由的操作系统。 滚动升级的优点 滚动更新带来了一个好处,我们可以很快用上最新的软件包,比如:截止目前(2020-11-15),在 ubuntu ...

一种实现 github pages 的思路

基于 nginx 反向代理

从 20 年开始,我一直通过 github pages + CDN 加速 的方案维持着自己的博客,效果还可以,只要 CDN 中有缓存,网站可以说是秒开。 这个时候就有些思考了,github pages 到底是怎么设计的,可以在一台机器上维持着这么多人的博客?难道它有那么多域名给每个人用嘛? 不同用户的博客指向的是同一台服务器吗 通过 ping 两个不同用户的 github pages,...

Starlab 源码剖析系列(一)

总览 Starlab 设计

哈喽,各位好,这里我要挖一个大坑了,具体是什么呢,听我细细道来。 也许大家没看出来,其实我不仅仅是一个努力学习后端的程序员,还是个稍微会点儿图形编程的图形学爱好者。我们在学习图形学算法时,常常碰到的坑是什么呢,是怎么写一个三维场景。 试想一下:我想要学习写一个图形算法,直接使用 OpenMesh 读取模型,然后处理后另存为一个新的模型。这样子算法虽然跑成功了,但是很难看到即时效果,也比较难...

qt plugin

一种多态实现

Qt Plugin 这功能很多个人开发者平时根本用不上,因为大家平时引用的第三方库大都是由 *.h 文件和 *.dll/*.so,*.a 等类型的文件组成的,由操作系统在运行程序时自动加载到内存,即动态链接库。而 Qt Plugin 的实际使用体验却稍有不同,它是需要由开发者手动加载的 dll,并做了一定约束,使插件可以动态的加载,并可进行热更新。 Qt的插件机制是为使用Qt的插件服务的 ...

qmake language include()

关于 qt *.pro 引用其他文件的问题

Qmake Language include() 使用 Qt 的开发者都多多少少使用过 QtCreator 这个轻量的 IDE,除了部分 windows 平台的开发者通过插件使用 VS 进行开发。 *.pro 是 qt 的工程管理文件,通过 qmake ../xxx.pro 可以在当前文件夹生成编译所需要的的 Makefile 等文件,是一个类似 CMake 的工程管理软件。 通常情况下...

KVM 虚拟化

一次失败的显卡穿透经历

了解到 KVM 虚拟化技术,可以直接将宿主机的物理硬件穿透到客户机,让客户机独占硬件,所以我尝试在自己的笔记本上做实验。 场景说明: 笔记本:拯救者 Y7000P 2018版 GTX 1060(这个版本的电脑一言难尽,首先它是双显卡,电脑显示器与 Intel 核显直连,而电脑的 HDMI 接口和独显直连。这个奇怪的结构让我没办法完美安装 nvidia 驱动,我尝试了交火驱动和单独n...

NAS

SMB NFS AFP FTP

我一直有个想法:等毕业后租房子后,淘一些二手服务器、交换机、机架,自己在家里搞一个私有云,私有云需要准备一些文件存储服务器,用于支持 KVM 热迁移或者是自己的一些数据备份。 NAS 是啥 NAS (Network Attached Storage)泛指网络附加存储,也就是一个存储服务器,你的多台设备可以通过网络连接到该服务器,读取里面的文件、往里面写入文件。最理想的状态下,NAS 的文...

虚拟化

总览

虚拟化技术是云计算的基础,我们在各种云平台可以购买 IaaS(基础设施即服务) 的云服务器,包括但不局限于 ECS,VPS 等,这些云服务器可以自选配置,动态调整 cpu 核数、内存大小、甚至是硬盘大小、网卡数量等。他们底层的实现原理是虚拟化技术。 虚拟化技术的分类 根据虚拟的资源进行划分可以分为操作系统虚拟化和平台虚拟化: 操作系统虚拟化: 如果把操作系统及其提供的系统调用作为...

多线程开发

阻塞队列

阻塞队列是多线程中常用的数据结构,对于实现多线程之间的数据交换、同步等有很大作用。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。简而言之,阻塞队列是生产者用来存放元素、消费者获取元素的容器。 考虑下,这样一个多线程模型,程序有一个主线程 master 和一些 worker 线程,master 线程负责接收到数据,给 worker 线程...