CS: Int和Float的表示

本文的主要目的是解答 Int 型数据和 Float 型数据占位相同的情况下,为什么 Float 表示的数据范围比 Int 大。
TL;DR
整型数据和浮点型数据,在计算机的数据表示中的规则是不同的

阅读更多

Linux: tmux工具

使用命令行时,通常会遇到同时执行多个任务的场景。一种方式是使用打开多个窗口运行任务,另一种方式是使用终端多路复用器的工具在一个窗口中运行多个窗格执行任务。

阅读更多

CS: 整数表示

在计算机科学中,整数表示是理解计算机内部数据存储和处理的关键概念之一。本教程笔记将介绍整数表示的基础知识,包括整数的二进制表示、有符号整数和无符号整数的区别,以及常见的整数表示方法。

阅读更多

[数据库]基础Part2

字符集和比较规则- MySQL

数据库中数据需要解决两个问题,一个是数据存储,需要解决原始数据和二进制数据之间的映射问题;另一个问题是数据的比较,常见的需要解决的问题包括大小写是否敏感,不同字符之间的比较(eg: 中文字符、法文字符等)

阅读更多

[数据库]基础Part1

关系型数据库和非关系型数据库

非关系型数据库

  • 键值数据库
  • 文档型数据库
  • 搜索引擎数据库,采用索引提升检索效率,eg: ES
  • 列式数据库,将数据按照列存储的方式保存在数据库中。目的是降低系统 I/O
  • 图形数据库
阅读更多

Linux: Bash笔记

Shell 是一种广泛使用的操作系统外壳和脚本语言,其版本发展可以分为以下几个阶段:

  1. Bourne shell (sh) 通常称为 sh,由 Stephen Bourne 于 1977 年开发,是最早的 Unix shell
  2. Bash (Bourne-again shell) 由 Brian Fox 开发,是 Bourne shell 的一个向后兼容的替代品。它是 Linux 系统的默认 shell
  3. Korn shell (ksh) 由 David Korn 开发,是 Bourne shell 的另一个扩展版本。ksh 在交互性和脚本语言方面提供了改进
  4. Z shell (zsh) 是 Bourne shell 的另一个扩展版本,提供了更多的功能和改进,包括自动补全、主题自定义和插件等
  5. C shell (csh) 由 Bill Joy 开发,语法类似于 C 语言。csh 主要用于交互式使用,但不太适合编写脚本

<– more –>

Bash Shell 功能

history 记录

Bash history 是一个很有用的功能,它记录了你在 shell 中执行的命令并允许你查看和重复使用这些命令。

Bash history 的使用方法:

  • 列出 history 中的命令:使用 history 命令可以显示最近执行的命令列表,每条命令都有一个编号
  • 重新执行 history 中的命令:使用 ! 可以重新执行历史命令。例如,!1234 会重新执行编号为 1234 的命令
  • 搜索 history 中的命令:使用 Ctrl + R 可以搜索历史命令。输入关键字后,按 Ctrl + R 将会显示包含该关键字的最近命令
  • 清除 history 中的命令:使用 history -c 可以清除当前 session 中的所有历史命令。如果要清除特定的命令,可以使用 history -d <编号>
  • 控制 history 的长度:使用 HISTSIZEHISTFILESIZE 环境变量可以控制 history 的长度。
    Bash history 可以提高命令行效率,节省重复输入的时间,是 shell 用户的一个重要工具。

    Tab 补全

    Bash 中的 Tab 补全(Tab completion)是一项非常有用的功能,可以节省输入时间并提高准确性。当你在命令行中输入文件名、目录名或命令时,按下 Tab 键可以自动完成输入内容。

Tab 补全的基本使用方法:

  • 文件和目录补全:输入文件或目录的开头几个字符,然后按下 Tab 键。Bash 会显示匹配的文件和目录列表。如果只有一个匹配项,将自动完成输入
  • 命令补全:输入命令的开头几个字符,然后按下 Tab 键。Bash 会显示匹配的命令列表。如果只有一个匹配项,将自动完成输入
  • 命令选项补全:对于支持选项的命令,可以在输入选项名称的开头几个字符后按 Tab 键获取补全建议

    Script 脚本

    Bash Script 脚本是一系列 Bash 命令的文本文件,可以自动执行。

    Wildcard 通配符

    Bash 中的通配符(Wildcard)是一种方便且强大的工具,可以用来匹配文件和目录名称的模式。最常用的通配符有以下几种:
  • *:匹配零个或多个字符
  • ?:匹配一个字符
  • [character-range]:匹配一个指定范围内的字符
  • [!character-range]:匹配不在指定范围内的任意一个字符

下面是一些通配符的使用示例:

  1. 列出目录中所有以 file 开头的文件:ls file*
  2. 列出目录中所有以 file 开头且后面跟随着数字的文件:ls file[0-9]*
  3. 列出目录中所有的 .txt 文件:ls *.txt
  4. 列出目录中所有的 .txt 文件,但不包括以 file 开头的文件:ls [!f]*.txt

使用通配符可以简化命令的输入,实现强大的功能。

Bash 其他功能

变量中几种引号的差异

在 Bash 的变量使用中,常用到的引号包括单引号('),双引号(") 和反引号(`)。三者在变量使用中有不同的意义和结果:

  • 双引号: 可以将字符串定义为字面量,但是与单引号不同的是,它会进行变量展开、通配符扩展和命令替换
  • 单引号:
    • 可以将字符串定义为一个字面量,意味着其值是直接指定的,不会进行变量展开、通配符扩展或命令替换
    • 单引号也可以用于转义特殊字符,以免它们被解释为具有特殊意义的命令或通配符
    • 在单引号中,可以使用多行字符串
  • 反引号: 用于转义特殊字符,以免它们被解释为具有特殊意义的命令、通配符或其他字符

Docker 笔记 Part1: 基础

前言

容器化技术也是虚拟化技术,相对来说容器化比传统的虚拟化要优势。虚拟化技术是将计算资源抽象化、隔离和管理的技术。它允许在单个物理服务器上运行多个虚拟计算环境,每个环境都可以独立地运行操作系统和应用程序。虚拟化技术的主要目标是提高硬件资源利用率、降低管理成本、提高灵活性和可扩展性。虚拟化技术一般包括,虚拟机 (Virtual Machine),宿主机/客户机 (Host Machine) 和虚拟机监控器 (Hypervisor,是一个虚拟化管理程序,负责在物理服务器上创建、管理虚拟机)。容器化技术是一种充分利用了操作系统本身已有的机制和特性,实现远超传统虚拟机的轻量级虚拟化技术。容器化是操作系统级虚拟化,内核可以创建多个虚拟的操作系统实例,隔离不同进程。

阅读更多

Ubuntu 服务器环境搭建笔记

本文是对搭建数据分析等服务器环境,包括了在搭建过程中的大致步骤以及搭建环境使用的主要工具。

阅读更多

gpg 加密操作流程

GPG(GNU Privacy Guard) 是一个加密、签名通信内容以及解密的内容的软件,采用的加密方式是非对称加密(即加密和解密使用的密钥不相同,例如使用公钥和私钥)[^1]。它的诞生是因为作为商业软件的 PGP ,不能自由使用,因此 FSF 开发的 GNU 版本。本篇笔记是为了阐释 git 在使用签署过程中,演示加密操作。

阅读更多