Python安装与配置

1 源码编译安装

1.1 安装依赖

1
2
3
4
# CentOS
sudo yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel libffi-devel mariadb-devel xz-devel tk-devel tcl-devel libuuid-devel
# Debian/Ubuntu
sudo apt-get install -y zlib1g-dev libbz2-dev libssl-dev libncurses5-dev default-libmysqlclient-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev tk-dev tcl-dev uuid-dev

1.2 下载

1
wget https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tar.xz

1.3 解压

1
tar xvf Python-3.13.0.tar.xz -C /tmp
  • 将 Python 压缩包解压至 /tmp 目录下。

1.4 编译

Python3.8 安装到 /usr/local 目录:

Redis Cluster

为什么需要集群

发现问题

1、并发量

Redis 官方的提供的性能并发量10万/每秒。如果有些业务随着范围、体量越来越大,需要更多的QPS呢?比如需要100万/每秒呢?

2、数据量

Redis安装与启动

准备

查看当前所在目录

1
2
$ pwd
/opt

下载

1
wget https://download.redis.io/releases/redis-3.0.7.tar.gz

解压

1
tar -xvf redis-3.0.7.tar.gz

创建软链

1
ln -s redis-3.0.7 redis

编译安装

进入 redis 目录编译安装。会在 /usr/local/bin 目录下生成可执行文件,之后就可以在任意目录下执行 redis 的可执行文件:

Redis初识

Redis是什么

  • 开源。
  • 高性能 Key-Value 键值对存储服务系统,可理解为一个数据库,QPS可达10万级别。
  • 支持多种数据结构。
  • 支持高可用、分布式。
  • 提供了丰富的功能,如 pipline、慢查询、发布订阅等。

Redis特性

  • 速度快
  • 支持持久化
  • 支持多种数据结构
  • 支持多种编程语言
  • 功能丰富
  • 简单,代码短小精悍,另外使用也简单
  • 支持主从复制,可以将主节点数据作为一个副本
  • 高可用、分布式,主从复制是高可用、分布式的基础

速度快

初识 C Pointer

0 学习目标

  • 理解指针
  • 理解内存单元编号
  • 理解指针类型变量

1 基本概念

1、指针是什么?

指针就是地址。

2、地址又是什么?

地址是内存单元的编号。

3、内存单元的编号又是什么?

编程语言通用核心

1. 基础语法 (Syntax)

  • 变量 (Variables)
  • 常量 (Constants)
  • 字面量 (Literals) (如 “Hello”, 123, true)
  • 运算符 (Operators)
    • 算术: +, -, *, /
    • 比较: ==, !=, <, >
    • 逻辑: &&, ||, !
  • 关键字 (Keywords) (如 if, for, func)
  • 注释 (Comments)

2. 数据类型 (Data Types)

  • 基础/原始类型 (Primitives)
    • 整型 (Integer) (如 int, long)
    • 浮点型 (Float) (如 float, double)
    • 布尔型 (Boolean) ( true, false)
    • 字符型 (Character) (如 char)
  • 复合/结构类型 (Composites)
    • 字符串 (String)
    • 数组 (Array)
    • 结构体/记录 (Struct / Record)
    • 字典/哈希表 (Map / Hash Map / Dict)
  • 特殊类型
    • 空值 (Null / Nil / None)
    • 指针/引用 (Pointer / Reference)

3. 控制流程 (Control Flow)

  • 条件语句 (Conditionals)
    • if / else if / else
    • switch / case
  • 循环语句 (Loops)
    • for 循环
    • while 循环
    • 迭代 (Iterators / foreach)
  • 跳转语句 (Jumps)
    • break (跳出循环)
    • continue (跳过本次迭代)
    • return (从函数返回)

4. 函数 / 方法 (Functions / Methods)

  • 定义与声明 (Definition & Declaration)
  • 参数 (Parameters / Arguments)
  • 返回值 (Return Values) (单个或多个)
  • 作用域 (Scope) (局部 vs. 全局)
  • 递归 (Recursion)
  • 匿名函数 / Lambda (Anonymous Func / Lambda)

5. 数据结构 (Data Structures)

  • (语言内置或通过库实现)
  • 列表 / 动态数组 (List / Vector)
  • 栈 (Stack)
  • 队列 (Queue)
  • 集合 (Set)
  • 树 (Tree)
  • 图 (Graph)

6. 错误处理 (Error Handling)

  • 返回码 / 错误码 (Return Codes)
  • 异常处理 (Exceptions) (try / catch / finally)
  • (特定语言机制,如 Go 的 error 类型)

7. 内存管理 (Memory Management)

  • 栈 (Stack) (用于局部变量, 函数调用)
  • 堆 (Heap) (用于动态分配的内存)
  • 垃圾回收 (Garbage Collection - GC) (自动管理)
  • 手动管理 (Manual) (如 C/C++ 的 malloc/free)

8. 并发 / 并行 (Concurrency / Parallelism)

  • 线程 (Threads)
  • 进程 (Processes)
  • 锁 (Locks / Mutex) (用于同步)
  • (特定语言机制,如 Go 的 Goroutines, JS 的 async/await)

9. 编程范式 (Paradigms)

  • 面向过程 (Procedural)
  • 面向对象 (OOP) (封装, 继承, 多态)
  • 函数式 (Functional) (纯函数, 不可变性)

10. 模块化 / 包管理 (Modularity)

  • 导入 / 导出 (Import / Export)
  • 命名空间 (Namespaces)
  • 包 / 模块 / 库 (Package / Module / Library)

Golang 学习路径

1. 基础语法 (基于通用核心)

  • 变量声明:
    • var name string = "Go"
    • Go 特色: 类型推导 name := "Go"
  • 关键字: 简洁,只有 25 个
  • 运算符: 基本通用,但没有 ++i (只有 i++ 且为语句)
  • 注释: ///* */ (通用)

2. 数据类型 (基于通用核心)

  • 基础类型: int, float64, bool, string (基本通用)
  • Go 特色: rune (等同于 int32, 代表一个 UTF-8 字符)
  • 复合类型:
    • struct (通用概念)
    • array (固定长度)
    • Go 特色: 切片 (Slice) (动态数组, 核心数据结构)
    • Go 特色: 字典 (Map) (内置的 map[keyType]valueType)
  • 特殊类型:
    • nil (通用概念)
    • 指针 (Pointer):
      • (有指针, 像 C)
      • Go 特色: 但不支持指针运算 (更安全)

3. 控制流程 (基于通用核心)

  • 条件:
    • if / else (通用)
    • Go 特色: if 可带初始化语句 if err := foo(); err != nil { ... }
    • switch (通用, 但 Go 的 case 默认带 break)
  • 循环:
    • Go 特色: 只有 for 关键字
    • for i := 0; i < 10; i++ (同 C 的 for)
    • for condition { ... } (同 while)
    • for { ... } (无限循环)
    • for k, v := range items { ... } (迭代)
  • 跳转:
    • break, continue, return (通用)
    • Go 特色: goto (保留, 但不推荐)
    • Go 特色: defer (延迟执行, 用于资源释放)

4. 函数 (基于通用核心)

  • (基本通用)
  • Go 特色: 支持多返回值 (常用于返回 (result, error))
  • Go 特色: 函数是"一等公民" (可作参数、返回值)

5. 错误处理 (基于通用核心)

  • Go 特色: 非异常 (Exception) 机制
  • 而是使用通用的多返回值 error 类型
  • Go 特色: panic / recover (用于处理真正无法恢复的异常)

6. 内存管理 (基于通用核心)

  • Go 特色: 自动垃圾回收 (GC) (像 Java, Python)
  • (有栈和堆,由编译器自动分配)

7. [ Go 的核心特色分支 ]

(1) 并发编程 (Concurrency)

  • Goroutine:
    • (对应通用的 “线程” 概念)
    • Go 特色: 极其轻量级的"协程", 由 Go 运行时管理
    • 语法: go someFunction()
  • Channel (通道):
    • (对应通用的 “锁” 概念, 但范式不同)
    • Go 特色: 用于 Goroutine 间通信的数据结构
    • 核心理念: “不要通过共享内存来通信,而要通过通信来共享内存”
  • Select:
    • Go 特色: 多路复用, 可同时监听多个 Channel

(2) 面向对象 (OOP) 范式

  • Go 特色: 没有 class (类)
  • Go 特色: 没有继承 (Inheritance)
  • 封装 (Encapsulation):
    • 通过 struct (结构体) 组织数据
    • 通过 方法 (Method) 绑定行为 func (s *MyStruct) myMethod() { ... }
    • 通过 包 (Package) 控制可见性 (首字母大写 = public, 小写 = private)
  • 多态 (Polymorphism):
    • 通过 接口 (Interface) 实现
    • Go 特色: 隐式实现 (Duck Typing)
    • (一个类型只要实现了接口的所有方法,就被视为实现了该接口,无需显式声明 implements)

(3) 包管理与工具链

  • Go Modules:
    • (对应通用的 “包管理” 概念)
    • go.mod / go.sum 文件
  • 强大的标准库:
    • (如 net/http, json)
  • 工具链:
    • go build (编译成静态链接的单一可执行文件)
    • go test (内置测试框架)
    • gofmt (统一的代码格式化)