Sqlite 与 C/C++
建站提交历史文章,原文写作时间 2023 年 5 月 18 日前后。
Sqlite 与 C/C++
本篇介绍 Windows Sqlite 与 C/C++ 开发的连接方法。
本章节不教 SQL 语法。 如尚未学习 SQL 建议与 SQL 混合食用。
下载
前往 Sqlite 官网 SQLite Download Page 下载 Source Code C 语言源代码。
解压安装包到工程目录,得到 shell.c sqlite3.c sqlite3.h sqlite3ext.h,后面主要用到 sqlite3.c 和 sqlite3.h。
编译
将源文件拷贝到工程目录下的 include/sqlite 目录。
主代码导入头文件 #include "sqlite/sqlite3.h"
然后使用以下两种方法之一用命令行编译(使用其他编译工具其原理都是基于命令行方式的):
直接编译
1gcc main.c include\sqlite\sqlite3.c -o main.exe -I include # 注意 sqlite3.c 不能使用 g++ ...
SQL 语法入门 - 基础操作
建站提交历史文章,原文写作时间 2023 年 5 月 18 日前后。
SQL 语法
本篇介绍 SQL 通用语法,并这里以 MySQL 为例,首先注意 MySQL 不区分大小写,包括字符串不区分大小写。
其次 SQL 具有多版本语法,略有不同,请注意区分。
数据定义语句 DDL
其中包含一些如 SHOW 等 Mysql 语句。
123456789101112131415161718192021SHOW DATABASES; -- 显示所有数据库CREATE DATABASE {db}; -- 创建新的数据库USE {db}; -- 设置活动数据库DROP DATABASE {db}; -- 删除该数据库SHOW TABLES; -- 显示所有数据表CREATE TABLE {tb} ({field1} {type1} {addition1}, ...); -- 创建数据表-- e.g. CREATE TABLE student (id ...
MySQL 与 C/C++
建站提交历史文章,原文写作时间 2023 年 5 月 18 日前后。
Mysql 与 C/C++
本篇介绍 Windows Mysql 与 C/C++ 开发的连接方法。
本章节不教 SQL 语法。 如尚未学习 SQL 建议与 SQL 混合食用。
编译
将 Mysql 安装目录下的 include文件夹 拷贝到工程目录。
拷贝安装目录下的 lib\libmysql.dll、bin\libcrypto-1_1-x64.dll、bin\libssl-1_1-x64.dll 到工程根目录。
用命令行编译(使用其他编译工具其原理都是基于命令行方式的)
1g++ main.cpp -o main.exe -I include -L . -l mysql
dll 动态库必须位于工程根目录,不得重命名。(因为我不会其他方法)
接口
GET START
因为偷懒,这里只有 GET START ,其实关于 SQL 也就只有简单的询问和查询操作,仔细看相信大家都能看懂。
12345678910111213141516171819202122232425262728293031323 ...
MySQL 安装笔记
建站提交历史文章,原文写作时间 2023 年 5 月 18 日前后。
Mysql 安装笔记
本篇介绍 Windows Mysql 安装方法。
本章节中花括号 {} 表示要修改的内容,非确切内容。
Mysql 安装包下载:MySQL Community Downloads (注意记住安装目录)
配置环境变量:{安装目录}\bin
新建配置文件:{安装目录}\my.ini
1234[mysqld]basedir={安装目录}\ datadir={安装目录}\data\ port=3306
进入命令行 管理员模式 ,日常使用无需管理员模式。
123456789cd {安装目录}\binmysqld -install # 安装 Mysql 服务mysqld --initialize-insecure --user=root # 初始化数据文件,初始密码为空net start mysql # 启动 Mysql 服务mysql -u root -p # ...
Github + Hexo + Butterfly 建站笔记(七) - 解决一些遗留问题
关于我的建站过程中的若干问题,其中多数为用到的平台的一些 BUG 的应对之策:路径名大小写变换导致的不可访问问题;URL 变换导致的外站链接失效问题;为什么我的锚不起作用;关于 Butterfly 标签外挂 label 在行首的 BUG。
Git 学习笔记(七) - SSH 连接与 GPG 认证
回到文章目录
配置 SSH 连接
SSH 是 github 比较原始的连接方式,如今不配置 SSH 连接也会自动通过浏览器认证 github,同样也可以正常连接。该部分本属于 Git 学习笔记(六) - 远程仓库,因为如今不必要配置将其移动到了本章节。
切换到用户目录 使用命令行 创建 SSH密钥 。
12ssh-keygen -t rsa -C "jamhus_tao@qq.com" # 以邮箱生成密钥, 之后一直回车即可start .ssh # 打开目录
打开目录会看到两个文件 id_rsa 与 id_rsa.pub 。其中 id_rsa 是 私钥 ,不能公布给任何人;id_rsa.pub 是 公钥 ,可以公布。这里需要将 公钥 配置给 github。找到 settings-SSH and GPG keys-New SSH key。
配置 GPG 认证
为什么使用 GPG 认证之前我遇到过一个很尴尬的问题,在一个协作仓库中我进行若干次 push,但是记录在 contributors 中的只有我的最开始两次 ...
如何理解 python 修饰器原理
引子
在 Python 中有一个非常重要且有特色的语法 修饰器 ,但是修饰器的语法也非常难懂,只有更好的理解修饰器原理才能更好掌握该语法。在网上查了不少资料,但是发现很多文章仅仅介绍了修饰器的基本使用而没有介绍其 原理 ,本文将分从 基本语法 和 实现原理 两个方面谈谈我对修饰器的理解。
基本语法
无参修饰器
123456789101112# 无参修饰器的基本格式def decorator(func): def wrapper(*args, **kwargs): # front operators __ = func(*args, **kwargs) # later operators return __ return wrapper@decoratordef func(*args, **kwargs): pass # do something
下面举个时间测试修饰器的例子:
1234567891011121314151617import timedef time_it(func): def wrap ...
如何理解 C++ 顶层和底层 const 下复杂类型
建站提交历史文章,原文写作时间 2023 年 6 月 15 日。
前言
关于多级指针中的 const 修饰初学者都会觉得是一个很玄学的问题,我也是初学者,在深入理解后在此留下一些自己的理解,使用更多的示例与图示用这篇短文来展示理解的过程。同时也发现在这一块文章也不多,因此希望此文能对你有帮助。
top-level-const :顶层常量,指指针本身是常量。
low-level-const :底层常量,指指针指向的量是常量。
本文将从 const 指针、const 数组指针两个角度带你理解顶层和底层常量修饰。
12 月 17 日更:最近在阅读 C++ Primer 11,其中也非常详细的介绍了顶层和底层 const。(书落实验室不便标注页码)
玄学 const 指针
12345int *p; // 指向变量的指针变量const int *p; // 指向常量的指针变量int const *p; // 等价于 const int *pint * const p; // 指向变量的指针常量const int * c ...
WSL安装方法
参考资料 安装 WSL - Microsoft Learn | WSL (Windows 10) - OI Wiki 加入必坑指南与图文教程
简介
WSL 是从 Windows 10 2004 开始支持的,Microsoft 官方支持的适用于 Linux 的 Windows 子系统 (Windows Subsystem for Linux),开发人员可以安装 Linux 发行版 (例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序。可以参阅 WSL 的官方文档。
与传统的虚拟机启动或双系统启动方式相比,由官方支持的 WSL 不仅配置方便,而且无需承担传统方式带来的巨大开销。
自动安装
后面将介绍自动安装和手动安装,两种方式选一即可,建议优先尝试使用自动安装,此处我们以安装 Ubuntu 为例。
打开 Powershell 并且执行下面的命令,一键完成安装。
12wsl --install -d Ubuntu# wsl --list --online # 查看所有可安装的最新发行版本
进入 ...
平衡树&二叉搜索树 - B 树
前往 算竞题解 分类 || 前往 算竞模板 分类
简介
B 树 是多叉搜索平衡树。B 树 的结构更好的满足局部性原理,越矮的树的索引次数越少,从读写上提高代码效率。由于在磁盘访问中,数据读写占据了多数时间,因此 B 树 这种数据结构在数据库系统中有较好的效率。B 树 实际上很少使用,但它是 B+ 树、红黑树 的基础。
模板题链接
洛谷 P3369 【模板】普通平衡树
核心思想
定义: m (m≥3)m~(m \ge 3)m (m≥3) 阶 B 树 的定义为:
满足中序遍历升序。
每个节点最多容纳 m−1m - 1m−1 个键。
每个节点最少容纳 ⌈m2⌉−1\lceil\frac{m}{2}\rceil - 1⌈2m⌉−1 个键,除根节点最少包含 111 个键。
对于所有内部节点,如果节点容纳 kkk 个键,则其有 k+1k + 1k+1 个子节点。
对于所有叶子节点,没有任何子节点。
所有叶子节点必须位于同一层。
时间复杂度:
由于 B 树 保证每个节点至少半满,且所有叶子节点位于同一层,因此树的最大深度是对数的。
中序遍历
1234567891011// 遍历. ...