- 博客(110)
- 收藏
- 关注
原创 MYSQL之C语言连接数据库
函数作用mysql_init初始化句柄建立真正连接设置编码发送 SQL把结果读到本地取行行数列数顺序获取字段元数据(逐列读)一次性获取所有字段数组(推荐)释放结果集关闭连接有MYSQL C API, 自然也有 MYSQL C++ API, 实际就是对C API做了封装, 使用起来更简洁, 但是不够直观, 所以这篇介绍C API下面是对你博客中“MySQL 图形化界面”部分的一个完整、专业、可直接加入博客的增强版内容。
2025-11-28 20:27:52
885
原创 MYSQL之用户管理
MySQL中的用户, 都存储在 系统数据库mysql 的 user 表中, 这里挑选几个字段查看:所以我们可以认识到: 其实不用mysql提供的一系列用户管理的语句, 比如create user 等, 我们直接向user表里insert一行数据也是可以的, 不过列太多, 太麻烦. 那些语句本质不过是对user表进行增删查改.
2025-11-24 16:45:37
51
原创 MYSQL之视图
视图是一个, 其内容由查询定义. 同真实的表一样, 视图包含一系列带有名称的列和行数据. 视图的数据变化会影响到基表, 基表的数据变化也会影响到视图.
2025-11-23 20:44:11
66
1
原创 MYSQL之事务
事务就是一组DML语句组成, 这些语句存在逻辑相关性, 这一组DML语句要么全部成功, 要么全部失败, 是一个整体. 我们看待事务, 要站在 MYSQL 的上层去从业务的角度去看待SQL语句, 单拎出来一个事物的一条SQL语句是无意义的. 比如转账这个事务, 由两条UPDATE语句构成, 从程序员的角度去看, 把两条SQL语句分开就是两条SQL语句, 而从数据库的使用者而言, 将两条SQL结合起来, 才叫一个事务.MySQL提供一种机制, 保证我们达到上面这样的效果.此外, 事务还规定不同的客户端。
2025-11-23 20:07:20
44
原创 MYSQL之内置函数
不作特殊的说明, 对于日期(date)对应年-月-日时间(time)对应时:分:秒对应, 而对于时间戳mysql会自动把它转换为其中注意, current_timestamp 和 now 的功能一模一样, 只是 now 更简洁, 而 current_timestamp 更正式.本质上三者调用的都是同一个系统时间源, 只是根据你调用的函数(current_time, date, timestamp )不同, 截取或格式化显示不同的部分, 从而最后显示的内容和格式不同.
2025-10-24 19:11:02
765
原创 Docker(三) Docker基础前置
把物理机比作一个庄园, 只允许一个用户居住, 花园等公共设施都是自己的;虚拟机就像是开发商的一个楼盘, 一栋楼(物理机)中有多个住户(虚拟机), 都共享一块宅基地, 也共享电梯等基础设施.容器相当于在 1 个房子里面, 又开辟出来一个又一个的胶囊公寓, 共享这套房子的卫生间、共享厨房、共享 WiFi, 只有衣服、电脑等私人物品是你自己的。
2025-10-18 16:18:38
1045
原创 Docker(二) 容器技术发展史
层次:底层技术│▼层次:平台容器/Runtime│ 低层 API 管理 │ │ PaaS 容器运行 ││ │▼层次:解决方案/开发者│ Docker ││ namespace/cgroups 封装 + 镜像管理 ││ CLI/工具链 + 部署 ││▼层次:容器编排/集群管理│ 管理 Docker/OCI 容器运行时 ││ 调度、伸缩、服务发现、集群管理 │Docker 为提供了一整套的解决方案。
2025-10-14 21:35:25
974
原创 Docker(一) 架构演进之路
如何决策要不要演进?架构不是越大越好, 而是要结合实际的业务场景, 成本, 团队, 最小的成本能满足业务需求就可以.架构必须是这么演进吗?不是, 一个公司可能直接从微服务架构开始, 可能会结合实际去优化数据库, 负载均衡等, 也可能因为团队缺少会docker的成员而暂时不演进, 要每时每刻根据实际情况决定架构如何演进架构必须是这几个吗?不是, 其中每个点都可能可以单独扩展为一个架构docker核心作用?容器化应用服务, 运行隔离, 方便部署.
2025-09-18 21:07:03
639
原创 MYSQL之复合查询
实际开发中往往, 所以需要多表查询.继续使用之前的三张表 emp dept, salgrade 来演示如何进行多表查询:例1: 显示雇员名、雇员工资以及所在部门的名字。
2025-05-23 20:52:03
1109
原创 MYSQL之表的约束
表中真正约束字段的是, 但是只有数据类型约束就, 也需要有一些约束, 从而. 比如有一个字段是email, 要求是唯一的.为什么要有表的约束?表的约束很多, 这里主要介绍如下几个: null/not null, default, comment, zerofill, primary key, auto_increment, unique key .它们就体现在 desc table_name;
2025-05-12 21:22:07
942
原创 MYSQL之数据类型
在MySQL中, 整型可以指定是有符号的和无符号的, 默认是有符号的. 可以通过 UNSIGNED 来说明某个字段是无符号的.
2025-04-25 21:35:46
1530
原创 MYSQL之表的操作
举个例子, 现在创建 users 表(使用InnoDB), users2 表(使用MyISAM).users2 表存储引擎是 InnoDB, MYSQL 8.0 下, 目录里是一个 ibd 文件.注意: 删除字段一定要小心, 删除字段及其对应的列数据都没了。在项目实际开发中, 有时候需要修改某个表的结构, 比如。, 表的字符集类型, 表的存储引擎等等. 我们还有需求,如何查看当时创建表时的选项等具体的信息?表索引: users.MYI。如果查看数据库有哪些表?需要加上列修改后的属性。如何查看特定表的信息?
2025-04-23 18:19:05
480
原创 MYSQL之基础认识(卸载安装登录, 基本概念)
1. 查看有无mysql服务正在运行:2. 查看到 mysql 的服务名称:3. 关闭 mysql 服务4. 卸载5. 再次检查发现没有mysql相关组件。
2025-04-21 22:10:04
1089
原创 网络之数据链路层
TCP/IP提供了一种能力, 将数据可靠的从 B 跨网络送到 C 主机, 这期间是由无数次局域网转发构成的, 比如 主机B 到 路由器F 就是一次局域网通信的问题, 而就是研究也就是说,是进行数据的处理,如TCP是为了保证,是解决的问题, 研究出主机 B 为了和主机 C 通信该的问题.而解决了。
2025-03-26 16:52:42
890
原创 网络层之IP协议
综上, 我们可以看到TCP和IP在格式上有点像, 都采用了固定格式的头部(20字节) + 可选选项 +数据部分.此外,都有"源和目的"字段都包含“首部长度”和“校验”字段都属于TCP/IP 协议族,宗旨都是为了保证网络的核心能力, 把数据可靠地从A主机发送到B主机.理解IP报文在系统中向下交付当报文从传输层向下交付给网络层时, 发送了两步关键操作:1. 移动data指针添加ip报头,
2025-03-22 21:29:20
1068
原创 网络应用层之HTTPS
加密就是把明文(要传输的信息)进行一系列变换, 生成密文. 解密就是把密文再进行一系列变换, 还原成明文. 在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为密钥.数据摘要=数字指纹, 其基本原理是利用单向散列函数(Hash函数)对信息进行运算, 生成⼀串固定长度的数字摘要.常见的Hash算法有: MD5、SHA1、SHA256、SHA512等,算法把无限的映射成有限, 因此可能会有碰撞(两个不同的信息, 算出的摘要相同, 但是概率非常低)
2025-02-25 09:35:51
874
原创 网络应用层之HTTP
实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。
2025-02-23 15:14:13
1622
原创 网络应用层之协议和序列化反序列化
协议是一种约定, 但实质是客户和服务器双方通信的主机之间约定好的结构化的字段在之前普通的TCP和UDP网络通信中, 读写数据的时候都是按照"字符串"的形式发送和接收的, 那我们如果不发送字符串, 而是要传送一些结构化的数据怎么办呢?比如说, 我们观察QQ或微信的聊天窗口, 屏幕上的信息包括头像(url), 时间, 昵称, 消息等.用户发送的消息虽然大部分是字符串,但是经过用户层(QQ或微信软件)处理后,还需要增加头像,时间,昵称等信息。
2025-02-17 22:14:19
586
原创 Linux之socket编程(一)
头文件:sys/types.h、sys/socket.h功能:创建套接字, 而且在创建的时候需要指定使用的通信协议.int domain是地址族, 上面说过是套接字编程的通信类型. 最常用的是AF_INET, 表示使用IPv4的网络套接字进行网络通信.int type可指定通信语义, 比如是面向字节流还是面向用户数据报.SOCK_STREAM是面向字节, SOCK_DGRAM是面向用户数据报, 对应了TCP和UDP协议.
2024-12-04 21:48:00
805
原创 Linux之网络基础
协议本质是一种约定. 人与人之间可以通过提前约定好的协议来通信, 在计算机中也是一样, 比如说client 和 server 进行通信.提前先约定好,其中 client 给server发送一个整形数字, 每个整形数字代表的操作不同. 发送1,代表注册;2代表登录;3代表访问数据...不同的层的协议不同, 总的来说, 计算机之间的协议就是提前约定好数据的格式, 数据的各个部分都代表什么意思, 通信时直接根据协议的约定来解释即可. (具体的协议后面再说)IP地址是在IP协议中, 用来表示。
2024-11-23 22:37:46
1319
原创 Linux之日志
在编写网络服务器, 各种软件时, 程序一定要打印一些日志信息.1. 可以向显示器打印, 也可以向中写入.2. 日志是软件在运行时记录的流水账, 用于排查服务进程挂掉的信息.日志等级可以根据需要设置, 暂时先设置5个:我们的日志输出方式可以分为3类: 显示器打印, 不分类写入一个文件, 根据日志等级分类写入不同文件可以利用mkdir接口创建目录:LogMessage函数就是为了将日志的内容根据日志的 style 输出.
2024-11-21 11:36:18
1249
原创 Linux之信号量
IPC中介绍过信号量, 为了让进程间通信, 从而多个执行流看到同一份公共资源, 对于造成数据不一致问题, 就需要把公共资源保护起来, 从而就需要同步与互斥.信号量共有1. 本质是一把用于描述临界资源资源的数目的2每一个执行流想访问公共资源内的某一份资源,不应该让执行流直接访问,而是其实就是先对信号量计数器进行P操作. 本质上, 只要P成功. 完成了对资源的预订机制.3. 信号量也是公共资源, 为了保证自身安全,
2024-11-04 22:02:57
801
原创 Linux之线程同步和生产者消费者模型
现在假设有一家只买泡面的超市, 超市只有一个展架. 超市有多个品牌的泡面供应商(生产者), 也有不同口味偏好的消费者用来进行执行流之间的数据传递(通信)的2个角色分别是生产者(1或n)和消费者(1或n)-->线程或进程;1个交易场所是超市-->内存空间还记得之前自习室里提到的饥饿问题吗?由于我的竞争能力很强,可以反复地去抢占自习室却不做什么事情, 管理者修改了相应的规则.在生产者消费者模型中也是存在这样的饥饿问题的, 具体体现在3个关系中的: "生产者与消费者之间的关系是互斥和同步的",
2024-10-31 11:09:04
885
原创 算法之栈(stack)
栈本身不是一个很难的数据结构, 但是对应的算法题有一定难度, 难在我们是否能想到这道题用栈解决. 如果知道用栈解决这道题, 那其实本质就是模拟.这题和题目1几乎一样, 用栈模拟即可.
2024-10-21 19:47:46
620
原创 算法之哈希表
要, 因为我们是从前向后遍历, gap = j - i 的值会随 j 的增大而增大, 所以如果本次gap > k, 随着 j 增大gap会越来越大, 不可能符合要求. 所以要覆盖掉原来的 i , 这样使之后gap的值变得更小, 更容易满足要求.第一种是从 i=0 开始, j = [i+1 , nums.size()-1] 依次遍历剩下的元素查找是否有和为target的元素.的时候,整数的范围在 [1~10^x], x在[3,7] , 但是出现负数就不推荐使用数组, 因为需要加一个偏移量, 比较麻烦.
2024-10-11 21:27:02
971
原创 算法之链表
比如插入双向链表的操作:这样做是正确的, 但是我们要时刻注意链表的代码顺序, 防止链表断开, 增加代码难度此时我们只需要多定义一个变量next,就能避免陷入繁琐的顺序思考:上面四句代码随意顺序运行都可以插入链表。
2024-10-10 11:52:21
1108
1
原创 算法之分治
分治法所能解决的问题一般具有以下几个特征:1) 该问题的规模缩小到一定的程度就可以容易地解决2) 该问题可以为若干个,即该问题具有最优子结构性质3) 利用该问题分解出的可以该4) 该问题所分解出的各个子问题是的, 即子问题之间第一条特征是绝大多数问题都可以满足的, 因为问题的计算复杂性一般是随着问题规模的增加而增加.第二条特征是应用分治法的前提它也是大多数问题可以满足的, 此特征反映了递归思想的应用.
2024-06-11 09:38:22
918
原创 Linux之线程互斥
试着用线程控制力介绍的一些系统调用, 将线程的创建、执行和等待等都封装起来. 我们在程序中指定一个函数Print, 让多个线程不断地执行该函数. myThread.hpptest.cc 创建一个线程: 创建多个线程: 首先模拟一段多线程抢票的例子观察现象: 运行之后会发现不合理的现象, 票出现了非正值初步解释原子性: 比如--操作就不是原子操作, 这条语句其实对应三条汇编指令: 在这三条汇编语句的执行过程中, 都有可能会因为线程切换而中断, 假如线程A对a要执行++操作, 刚执行完inc指
2024-06-04 10:02:03
1052
原创 Linux之线程概念
线程是的一种执行流/线程是在的一种执行流.是CPU调度的是承担系统资源的基本实体.首先我们需要明确:除了文件、通信等操作, 一个进程它要访问的大部分的代码和资源都是要通过进程地址空间+页表的方式去找到资源, 所以解释概念:1. 线程是的一种执行流线程是的一种执行流 ,呢?从资源占用的角度分析, 一个进程要被创建, 要完成一系列的初始化工作,, 分配和初始化内存地址空间, 把程序代码和相关数据从磁盘加载到物理内存中, 初始化文件描述符表, 设置进程调度信息插入调度队列等等一系列工作, 这样看来。
2024-05-30 11:21:09
1221
原创 Linux之信号
sigaction头文件: signal.h功能:注册更改信号自定义处理方式。signum 表示信号的编号,act 是输入型参数, 用来保存属性的结构体,其中sa_handler是保存自定义处理函数的函数指针(和signal函数的handler一样),sa_mask 是需要额外屏蔽的信号, 下面主要讨论这个参数sa_sigaction是处理实时信号的, 不考虑sa_flags字段包含一些选项,本章的代码都把sa_flags设为0sa_restorer也不考虑。
2024-05-14 19:56:59
1197
原创 Linux之命令行参数与环境变量
此时PATH设置为了空,上面说过可以重新登陆新建一个bash进程重新读取PATH变量, 这个时候, 我们再来。
2024-05-02 19:34:07
1230
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅