算法与数据结构回顾 – 广义表

算法与数据结构回顾 – 广义表

图源:吟游诗人-狼娘 月巴小鹅 111776313

简述

广义表是线性表的一种推广。线性表要求表中元素拥有统一的类型,而广义表无此限制。需要注意的是,广义表和线性表长度一般认为是有限的,但广义表的深度可以是无限的(即递归表)。

广义表是一种数据结构。对广义表的常见操作包括:

  • 创建
  • 从字符串形式创建
  • 销毁
  • 复制
  • 取表头
  • 取表尾
  • 判空
  • 求长度
  • 求深度
  • 从表头插入
  • 从表头删除
  • 遍历

广义表是Lisp语言的基本数据结构。后文以Common Lisp和C++给出各基本操作的示例。

阅读更多
计算机图形学(1):感性认识

计算机图形学(1):感性认识

图源:《Magnet》Matcha_ 102235547

本系列笔记为结合了个人理解的非初学者向笔记,包括《CMU 15-462》、《Games 101:现代计算机图形学入门》、《Games 102:几何建模与处理》、《Introduction to 3D Game Programming with DirectX 12》等数个知识来源。

什么是计算机图形学

计算机图形学:利用计算机合成视觉信息或利用计算机合成/操控感官信息的学科。

计算机图形学的应用

  • 影视
  • 动画
  • 游戏
  • 数据可视化
  • 工业设计,平面设计
  • 数字绘画
  • 虚拟现实
    • 虚拟现实(VR):指所看到的一切均为虚拟的,比如虚拟现实游戏、虚拟现实视频等。
    • 增强现实(AR):指看到的是真实的现实 + 虚拟的、对当前现实进行分析处理或修改等生成的虚拟事物,比如Apple ARkit。
    • 混合现实(MR):VR + AR,使用类似VR的手段,达到AR这种结合当前现实与虚拟事物的效果,比如Hololens。
  • 制造业(3D打印)
  • 模拟与数字孪生
  • 排版与字体设计
    • “The Quick Brown Fox Jumps Over The Lazy Dog”:一句有意义的英文句子,内含全部的26个英文字母,常用来对字体(字形、字号、间距等)进行测试。
    • “Lorem ipsum dolor sit amet, consectetur adipisicing elit.”:又叫“乱数假文”或者“哑元文本”。主要的目的为测试文章或文字在不同字型、版型下看起来的效果。更多资料请查阅:https://cn.lipsum.com/
阅读更多
Flathub简介,以及如何制作Flathub镜像

Flathub简介,以及如何制作Flathub镜像

图片来源:@Lifeline 88401620

什么是Flathub?

  • Flathub之于Flatpak,正如Snapcraft之于Snap
    • 类似于“官方Repo”,但是由社区维护
    • 与AUR不同,Flathub存储了软件的二进制文件,而不只是构建文件
    • Flathub有着自己的大型CI集群Flathub Buildbot
  • 安装发行版上的Flatpak时,不一定默认启用Flathub,需要手动查看和添加

启用Flathub

  • 查看已经启用的源
1
flatpak remotes
  • 如果没有flathub源,就需要手动添加
  • 添加Flathub源
1
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  • 随后就可以安装Flathub中的软件包了
阅读更多
Linux&Windows小技巧(4)

Linux&Windows小技巧(4)

文章内容:清空iptables,清理docker image,给Wayland下的Chromium/Edge浏览器开启GPU加速

图源:《失われた深淵・宵宫》 @void_0 100377150

清空iptables规则

使用场景:在需要完全重建iptables规则,或是使用其他软件代替/包装iptables(如firewalld)时。

常见的两种清空iptables规则的方法是:

  1. 手动给每一条规则都执行iptables -D
    • 针对默认表,iptables -D <chain_name> ...
    • 针对其他表,iptables -t <table_name> -D <table_name> ...
  2. 查找规则在表的链中是第几条(Line Number),用条目序号进行删除
    • 找条目序号:iptables [-t <table_name>] -L --line-number
    • 使用条目序号进行删除:iptables [-t <table_name>] -D <chain_name> <line_nuber>

但也可以使用下面的方法批量删除:

1
2
3
4
5
6
7
8
9
10
11
# 如果iptables的默认规则不是ACCEPT,为了防止清除后主机拒绝一切数据包,将所有内置链的默认规则设置为ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 删除所有默认表中的rules
iptables -F
# 删除指定的其他表中的rules
iptables -t <table_name> -F
# 删除默认表中所有user-defined chain(因为此时所有chain均为空)
iptables -X
阅读更多
自定义Fedora Toolbox镜像

自定义Fedora Toolbox镜像

图源:LINO - 崩壊3rd繫体字版6周年 108386100

Toolbox 可看做是Podman的Wrapper,力求将容器与主机的操作系统(Host OS)无缝集成。与Toolbox类似的工具还有Distrobox。它们在牺牲一些容器安全性(端口控制、资源控制、文件的独立性等)的情况下可以做到:

  • 用户穿透:在容器中使用与当前Host user一样的user与home目录;
  • 设备穿透:直接使用Host的/dev/media等;
  • 网络穿透:直接使用Host网络,获得与主机一致的网络体验;
  • 服务穿透:通过直接使用Host的/run/user/<uid>/tmp以及关键服务的Socket,实现在容器中访问主机的显示服务(X11/Wayland)、网络服务(Avahi)、D-Bus、systemd journal等;

因此,Toolbox可以用来:

  • 作为不可变系统的软件安装方式之一。如Fedora Silverblue、Fedora CoreOS等不可变系统中均预装Toolbox,另一些不可变系统中可能预装Distrobox;
  • 使用其他发行版的镜像,在当前发行版中无缝运行针对其他发行版制作的程序。如在Fedora下运行只提供Ubuntu deb包的GUI程序;
  • 在没有Host的root权限时创造一个假root环境。如非privileged的Toolbox容器同样可以使用sudo dnf install安装软件;
    • 需要镜像中预装sudo,并支持sudowheel组获取root权限,且支持NOPASSWD选项;
  • 使用不同版本的镜像实现“旧程序运行在新系统上”或“新程序运行在旧系统上”,或对程序进行兼容性测试;
  • 可以通过对镜像进行自定义,实现快速且一致的开发环境搭建
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×