分类目录归档:ComputerScience

关系型数据库

RDBMS:关系型数据库(Relational database management system)

SQLite

一个独立的、基于文件的、完全开源的 RDBMS

优点:

  • 轻量便携,占用空间小(600K),不需要额外的依赖
  • 无服务(不需要重启或停止),数据库存储在单个文件中
  • 适合嵌入式 APP 或开发的快速测试,数据迁移方便

缺点:

  • 并发能力有限,单个时间戳只有一个进程能修改数据库
  • 不支持用户权限,权限控制依赖底层系统的文件访问权限
  • 不适用于大数据量(1TB)/高写入量的场景,不支持网络访问

MySQL

MySQL 基本使用

Pos

Read more

进程、线程与协程

进程

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例

程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配 CPU 时间,然后程序开始真正运行

Linux 系统函数 fork() 可以在父进程中创建一个子进程:

import os

print('当前进程:%s 启动中 ....' % os.getpid())
pid = os.fork()
if pid == 0:
    print('子进程:%s,父进程是:%s' % (os.getpid()

Read more

数据分库和分表

摘自:谈谈为什么要分库分表? - fuxing

分库:将表按照某种规则拆分到多个数据库中,来保证系统的稳定和性能

分表:将表中数据按照某种规则拆分到多张表中,提升查询效率

分库分表的原因

  • 分库原因:数据量过大,而磁盘空间、内存、CPU 有限
  • 分表原因:单表承载能力有限,随着数据规模的增加,表索引效率降低
  • 其他原因:分布式或微服务架构,根据业务需求和功能对数据库进行划分

单表超 500 万行,或容量超 2GB 时推荐分库分表——阿里开发手册

分库分表的常见方法

  1. 垂直分库

将某个库中的表拆分到多个库,一般按照业务维度拆分

优点:降低单数据库服务的压力,增加系统可用性;业务清晰,

Read more

上下文无关语法 CFG

上下文无关文法(context-free grammar,CFG):

  • CFG 是一种形式语言的描述方式,用于描述一类语言结构,其中语言中的句子可以被分解为符号串,这些符号串是由一组规则递归定义的
  • 上下文无关文法重要的原因在于它们拥有足够强的表达力来表示大多数程序设计语言的语法;实际上,几乎所有程序设计语言都是通过上下文无关文法来定义的。
  • 另一方面,上下文无关文法又足够简单,使得我们可以构造有效的分析算法来检验一个给定字符串是否是由某个上下文无关文法产生的

CFG的形式化定义可以表示为一个四元组 $G=(V,T,P,S)$

  • 其中 $V$ 是非终结符号(即可以继续分解的符号)的集合,$T

Read more

向量数据库

1 向量数据库概述

“向量数据”:向量数据是由多个数值组成的序列,可以表示数据的大小和方向

向量数据库是一种专门用于存储和查询向量数据的数据库系统,

  • 与传统数据库相比,向量数据库使用向量化计算,能够高速地处理大规模的复杂数据
  • 可以处理高维数据,例如图像、音频和视频等,解决传统关系型数据库中的痛点
  • 支持复杂的查询操作,也可以轻松地扩展到多个节点,以处理更大规模的数据

Read more

Linux用户活动审计与跟踪 :Auditd

1 介绍与安装

Auditd基本介绍:

  • 在Linux内核(2.6)时开始集成的审计系统
  • 通过解析audit.rules中的规则形成特定事件的审计
  • 还负责将审计结果写入磁盘,并支持灵活的读取方式

Auditd的安装:

yum install audit # RHEL 和 CentOS
apt install auditd # Ubuntu

2 基本用法

Auditd基本命令:

  • auditctl:跟踪正在访问或修改特定文件和目录的用户或程序,也适用于跟踪正在运行特定命令的用户

Read more

Linux文件系统监控:inotify

1 介绍与安装

inotify tools基本介绍:

  • Inotify是一种强大的、细粒度的、异步文件系统监控机制
  • 可以监控文件系统的一切变化(增删改查、权限、移动复制等)
  • Linux内核从2.6.13开始引入了inotify机制
  • inotify-tools在命令行下提供对Inotify的调用,实现了文件系统事件的监控

inotify tools的安装:

  • Ubuntu在线安装:apt-get install inotify-tools
  • 其他系统的在线安装可参考

Read more

Linux常用技巧

1 环境配置相关

1.1 ubuntu/debian换源

建议直接根据系统和版本选择对应的阿里云官方镜像配置说明

以更换debian 11.x系统的源为例:

# 备份旧的
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑新的
vim /e

Read more

Linux环境变量

1 理解环境变量

在所有 UNIX 、 类Unix系统和Windows系统中, 每个进程都有其特定的一组环境变量(Windows系统中的环境变量在命名、语法和用法上略有区别)

环境变量是进程运行的环境的一部分,子进程一般会继承其父进程的运行环境(除非手动的修改或删除),环境变量也是动态的,为进程提供了更多的灵活性

2 环境变量类型

临时性VS永久性

  • 通过export命令导入的环境变量是临时的,会立即生效但仅对当前终端有效
  • 通过修改配置文件导入的环境变量是永久的,但是需要通过命令sour

Read more

常见配置文件格式

1 INI ⭐⭐⭐

INI:Initialization file的格式,最初为Windows系统中的基础配置文件格式

INI格式作为早期常见的配置文件格式,通常由节(Section)、键(key)和值(value)组成

缺点:不适合复杂的格式或多嵌套的情况

[localdb]  
host = 127.0.0.1  
user = root  
password = 123456  
port = 3306  
database = mysql

Python内置con

Read more