命令行通配符

这是因为 shell 中的通配符(*)展开行为不同:

  1. unzip *.zip
  • shell 会先展开 *.zip,如果当前目录有多个 zip 文件
  • 命令会变成 unzip file1.zip file2.zip file3.zip
  • 这可能导致 unzip 命令收到多个参数而报错

阅读全文

正则与通配符区别

正则表达式(Regular Expressions)和通配符(Wildcards)都是用于模式匹配的工具,但它们在功能、语法和应用场景上有显著的区别。以下是它们之间的主要区别:

1. 定义

阅读全文

std::nth_element实现

std::nth_element 是 C++ 标准库中的一个算法,用于在一个范围内重新排列元素,使得第 n 个元素位于其最终位置,并且该元素左侧的所有元素都小于或等于它,右侧的所有元素都大于或等于它。这个算法的时间复杂度为 O(n) 平均情况下,最坏情况下为 O(n^2)。

阅读全文

texelFetch

texelFetch 是一个在着色器编程中用于从纹理中获取特定纹素(texel)的函数。与常规的纹理采样不同,texelFetch 使用整数纹理坐标来直接访问纹理数据,不进行过滤或插值。

在 OpenGL 的 GLSL(OpenGL Shading Language)中,texelFetch 的用法如下:

阅读全文

traits设计和用法

在 C++ 中,Traits(特性)是一种设计模式,通常用于提供类型信息或行为的模板类。Traits 允许在编译时获取类型的特性,从而实现更灵活和可扩展的代码。Traits 模式广泛应用于标准库和现代 C++ 编程中,尤其是在模板编程和泛型编程中。

阅读全文

shell和子shell环境变量

在 Shell 脚本中,命令替换(command substitution)是指将命令的输出作为字符串插入到另一个命令中。命令替换通常使用反引号(`command`)或 $() 语法来实现。命令替换会在一个子 Shell 中执行指定的命令,这意味着在子 Shell 中定义的变量不会影响父 Shell 中的变量。

阅读全文