SQL语法基础
SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言。本手册涵盖最常用的 SQL 语法,适用于 MySQL、PostgreSQL、SQLite、SQL Server 等主流数据库(部分语法可能略有差异,会特别注明)。 SQL 语句结构 SQL 语句以分号 ; 结尾。 关键字不区分大小写,但习惯大写。 标识符(表名、列名)在部分数据库中区分大小写(取决于配置)。 注释: 单行注释:-- 注释内容 或 # 注释内容(MySQL) 多行注释:/* 注释内容 */ 数据查询语言 (DQL) - SELECT用于从数据库中检索数据。 基本语法1234567SELECT [DISTINCT] 列1, 列2, ...FROM 表名[WHERE 条件][GROUP BY 列1, 列2, ...][HAVING 分组条件][ORDER BY 列1 [ASC|DESC], 列2 ...][LIMIT {行数 | 偏移量, 行数}]; 常用子句 SELECT:指定要查询的列,* 表示所有列,DISTINCT 去重。 FROM...
C++_chrono
<chrono> 是 C++ 标准库里专门处理时间、时长、计时器、时钟的库。它的设计目标是: 类型安全 精度清晰 避免直接用裸整数表示时间导致单位混乱 可以把它理解成两大核心概念: duration(时长):表示“多长时间”,比如 3 秒、500 毫秒 time_point(时间点):表示“某个时刻”,比如“从某个时钟起点开始经过了 10 秒的位置” 一、chrono 的核心组成1. duration:时间间隔std::chrono::duration 用来表示一段时间。 常见类型123456std::chrono::secondsstd::chrono::millisecondsstd::chrono::microsecondsstd::chrono::nanosecondsstd::chrono::minutesstd::chrono::hours 示例12345678910#include <iostream>#include <chrono>int main() { std::chrono::seconds ...
现代CMake基础
注释行注释1# 这是一个CMakeLists.txt文件 块注释12345#[[这是一个CMakeLists.txt文件这是一个CMakeLists.txt文件这是一个CMakeLists.txt文件]] 基础设置最低版本设置1cmake_minimum_required(VERSION 3.15) 说明: 指定 CMake 的最低版本要求 一般现代项目建议使用 3.15 或更高版本 若项目依赖较新的特性,可适当提高版本要求 定义工程名称12345project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] # 指定工程版本 [DESCRIPTION <project-description-string>] # 工程描述 [HOMEPAGE_URL <url-string>] # web主页地址 [LANGUAGES <language-name>...
Git的基础概念与命令
git基础概念git简介Git 是一个当代最先进、最主流的分布式版本控制系统,它用于追踪文件的变化历史,特别适用于程序员和团队协作开发的场景。 通过Git,我们可以记录文件的每一次修改,并能随时回溯到历史版本。这就像是我们给文件装上了一个“时间机器”,可以随时查看和恢复到过去的状态。并且,如果是多人同时编辑文件,Git 会帮你合并不同人的修改,避免覆盖和冲突。 因此,Git 就像是一个“超级版的文件管理器”,它不仅能帮你管理文件的历史版本,还能让你和团队成员高效地协作开发、解决冲突。 所以,对于程序员来说,Git是开发流程中不可或缺的一部分。只要你是一个程序员,或者你想要从事计算机行业,那么Git 都是你必须学会的基础技能。 git的基本概念仓库存储和管理文件的地方,里面保存另所有的文件、版本记录和历史信息 本地仓库:自己的极其或电脑上创建的仓库,存储着本地对项目的所有文件和修改历史,每当提交代码时,git会将文件保存在本地仓库中 远程仓库:存放在服务器上的仓库,通常用于团队合作中的代码共享和同步(如:github) 工作目录当前正在编辑的文件所在的地方,对文件进行的修改都发生在...
LLDB基础
LLDB 基础使用指南1. 准备工作:编译时添加调试信息要使用 LLDB 调试程序,必须在编译时生成调试符号。在 GCC 或 Clang 中,添加 -g 选项: 123g++ main.cc -g -o main# 或clang++ main.cc -g -o main 2. 启动 LLDB有两种方式启动调试: 直接加载程序: 1lldb main 先启动 lldb,再加载程序: 12lldb(lldb) file main 3. 程序执行控制 命令 缩写 说明 run r 启动程序,程序会在断点处暂停 next n 单步执行(不进入函数内部) step s 单步执行(进入函数内部) finish 执行完当前函数,返回到调用处 continue c 继续执行,直到下一个断点或程序结束 4. 查看和修改变量 命令 说明 print <变量名> 或 p <变量名> 打印变量的值 po <指针变量名> 打印 Objective-C / Swift 对象描述(也可用于 C++ 对象,若重载...
C++_特殊工具与技术
特殊工具与技术这部分内容的特点是: 不一定天天写 但体现 C++ 的底层能力和语言灵活性 很适合出概念题、判断题、细节题 复习策略: 先抓用途,再抓语法,再抓限制 控制内存分配C++ 中对象通常通过以下方式创建: 自动对象:定义在函数内部,离开作用域自动销毁 静态对象:程序开始时创建,程序结束时销毁 动态对象:通过 new 分配,通过 delete 释放 所谓“控制内存分配”,主要就是指: 自定义对象的分配和释放行为 new 和 delete 的基本过程12T *p = new T;delete p; new T 一般做两件事: 分配原始内存 调用构造函数构造对象 delete p 一般做两件事: 调用析构函数销毁对象 释放内存 为什么要控制内存分配某些场景下,我们希望: 提高效率 使用专用内存池 跟踪内存使用 限制对象只能在堆上/栈上创建 调试内存泄漏 于是可以通过重载 new / delete 来改变默认行为。 重载 new 和 delete基本形式类可以定义自己的 operator new 和 operator delete...
C++_用于大型程序的工具
用于大型程序的工具在大型程序中,除了基本语法、类、模板、STL 之外,还需要一些更“工程化”的机制来帮助我们: 处理运行时错误 组织大量名字,避免冲突 表达更复杂的类层次结构 常见内容有: 异常处理 命名空间 多重继承与虚继承 异常处理为什么需要异常处理程序运行时可能出现各种错误,例如: 文件打不开 输入非法 内存分配失败 下标越界 类型转换失败 如果只靠返回值处理错误,会有几个问题: 容易遗漏检查 正常逻辑和错误处理混在一起 一层层传递错误很麻烦 因此 C++ 提供了: 异常处理机制(exception handling) 异常处理的核心思想异常处理把“正常逻辑”和“错误处理逻辑”分离开。 基本机制: throw:抛出异常 try:监控可能出错的代码 catch:捕获并处理异常 基本语法123456try { // 可能出错的代码}catch (异常类型 变量) { // 处理异常} 例如: 123456try { throw runtime_error("something...
C++_标志库特殊设施
标准库特殊设施总览这一部分常见的标准库“特殊设施”包括: tuple:把多个不同类型的值打包成一个对象 bitset:按位存储和操作固定大小的二进制位集合 正则表达式:进行字符串模式匹配 随机数库:生成随机数与随机分布 IO 其他功能:格式控制、未格式化 IO、随机访问 可以把它们理解为: 不是容器/算法主线,但非常常用的标准库工具 tuple 类型什么是 tupletuple 是一个固定大小、可包含不同类型元素的对象。 它和 pair 很像,但比 pair 更一般: pair 只能放 2 个值 tuple 可以放任意多个值 例如: 1tuple<int, string, double> t(1, "Tom", 95.5); 头文件1#include <tuple> 基本定义12tuple<int, string, double> t1;tuple<int, string, double> t2(1, "Alice", 88.5); 也可用 make_tuple 创...
C++_模板与泛型编程
模板与泛型编程概念模板(template)可以理解为: 生成类或函数的蓝图 模板本身不是具体的类或函数,而是告诉编译器: 如果用户给我某种类型/某个值 我就按这个模板生成对应的类或函数 泛型编程的核心思想泛型编程强调: 写一份通用代码,适用于多种类型 例如: vector<int> vector<string> find sort 这些都依赖模板机制。 模板的实例化当我们真正使用模板时,编译器会把模板“变成”具体版本,这个过程叫: 实例化(instantiation) 例如: 1vector<int> v; 会实例化出 vector<int> 这个具体类。 1compare(1, 2); 会实例化出一个针对 int 的 compare 函数。 函数模板函数模板是用来生成一组函数的公式。 基本定义你原文里 template 拼错了,正确写法是: 123456template <typename T>int compare(const T& v1, const T& v2) ...
Vim基础
Vim 基础1. Vim 的模式Vim 有多个模式,最常用的是以下三种: 模式 说明 如何进入 普通模式 默认模式,用于移动光标、复制粘贴、删除等操作。 启动 Vim 时自动进入,或按 Esc 返回。 插入模式 用于输入文本。 按 i、a、o 等键进入。 可视模式 用于选择文本块,然后进行复制、删除等操作。 按 v(字符选择)、V(行选择)进入。 命令行模式 用于执行保存、退出、搜索、替换等命令。 在普通模式下按 : 进入。 核心原则:大部分时间停留在普通模式,需要输入文本时切换到插入模式,输入完成后按 Esc 返回普通模式。 2. 启动与退出 命令 说明 vim filename 打开(或创建)文件并进入普通模式 :q 退出(如果文件未修改) :q! 强制退出,不保存修改 :w 保存文件 :wq 或 :x 或 ZZ 保存并退出 :e filename 打开另一个文件(在当前 Vim 中) 3. 光标移动(普通模式)基本移动 按键 说明 h 左移一个字符 j 下移一行 k 上移一行 l 右移一...







