- 博客(82)
- 收藏
- 关注
原创 MySQL数据库—MySQL 使用C语言链接
要使用库,必须先进行初始化!如: MYSQL *mfp = mysql_init(NULL)链接数据库mysql_real_connectreturn 1;return 0;
2026-01-26 21:59:26
735
原创 MySQL数据库—MySQL视图特性
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
2026-01-21 10:10:19
246
原创 MySQL数据库—MySQL事务管理新
事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。
2026-01-19 21:59:39
715
原创 MySQL数据库—MySQL索引特性新
索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。案例:先整一个海量表,在查询的时候,看看没有索引时有什么问题?到此,已经创建出了海量数据的表了。查询员工编号为998877的员工。
2026-01-19 21:57:40
793
原创 MySQL数据库—MySQL复合查询
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。返回多行记录的子查询。
2026-01-08 15:28:49
727
原创 MySQL数据库—MySQL内置函数
创建一张表,记录生日添加当前日期:示例2创建一个留言表插入数据显示所有留言信息,发布日期只显示日期,不用显示时间请查询在2分钟内发布的帖子案例:注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
2026-01-08 09:07:04
356
原创 MySQL数据库—MySQL基本查询
表的增删改查CRUD:Create(创建), Retrieve(读取),Update(更新),Delete(删除)语法:案例:由于 主键 或者 唯一键 对应的值已经存在而导致插入失败可以选择性的进行同步更新操作 语法:语法:案例:语法:比较运算符:逻辑运算符:案例:语法:注意:没有 ORDER BY 子句的查询,
2026-01-07 10:32:04
880
原创 MySQL数据库—MySQL表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key。
2026-01-05 21:16:40
952
原创 MySQL数据库—MySQL数据类型
说明在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的无符号案例其他类型自行推导。
2026-01-01 09:56:55
990
原创 MySQL数据库—MySQL表的操作
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。备注:创建一个engine是innodb的数据库,观察存储目录。注意:删除字段一定要小心,删除字段及其对应的列数据都没了。不同的存储引擎,创建表的文件不一样。users.MYD:表数据。users.MYI:表索引。
2025-12-31 21:44:28
236
原创 MySQL数据库—MySQL库的操作
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径示例:将mytest库备份到文件(退出连接)这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。如果带 -B 选项,就多了这两条语句如果不带 -B 的情况就只有 table,要恢复之前必须先创建库,还要 USE。
2025-12-30 16:23:44
658
原创 MySQL数据库—MySQL数据库基础
存储数据用文件就可以了,为什么还要弄个数据库?为了解决上述问题,专家们设计出更加利于管理数据的东西 -- 数据库,它能更有效的管理数据。
2025-12-30 14:33:15
672
原创 Linux网络编程—五种IO模型与非阻塞IO
阻塞IO:在内核将数据准备好之前,系统调用会一直等待。所有的套接字,默认都是阻塞方式。阻塞IO是最常见的IO模型。非阻塞IO:如果内核还未将数据准备好,系统调用仍然会直接返回,并且返回EWOULDBLOCK错误码。非阻塞IO往往需要程序员以循环的方式反复尝试读写文件描述符,这个过程称为。这对CPU来说是较大的浪费,一般只有特定场景下才使用。信号驱动IO:内核将数据准备好的时候,使用SIGIO信号通知应用程序进行IO操作。
2025-12-25 10:40:56
648
原创 Linux网络编程—数据链路层
正向代理(Forward Proxy)是一种常见的网络代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。反向代理服务器是一种网络架构模式,其作为Web服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。
2025-12-15 20:44:00
776
原创 Linux网络编程—应用层协议HTTP
HTTP Cookie(也称为Web Cookie、浏览器Cookie或简称Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态、记录用户偏好等。HTTP Session是服务器用来跟踪用户与服务器交互期间用户状态的机制。由于HTTP协议是无状态的(每个请求都是独立的),因此服务器需要通过Session来记住用户的信息。
2025-11-27 12:00:49
819
原创 Linux网络编程—应用层自定义协议与序列化
toStyledString、StreamWriter 和 FastWriter 提供了不同的序列化选项,你可以根据具体需求选择使用。Json::Reader 和 parseFromStream 函数是Jsoncpp中主要的反序列化工具,它们提供了强大的错误处理机制。在进行序列化和反序列化时,请确保处理所有可能的错误情况,并验证输入和输出的有效性。
2025-11-18 22:15:32
1096
原创 Linux网络编程—网络基础概念
TCP/IP协议的本质是一种解决方案TCP/IP协议能分层,前提是因为问题们本身能分层截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了。OS源代码一般都是用C/C++语言写的。下面,仔细看看下面的图问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?回答:答案是肯定的!因为双方都有同样的结构体类型struct protocol。
2025-11-10 20:25:37
741
原创 Linux系统编程—线程同步与互斥
某些类,只应该具有一个对象(实例),就称之为单例。例如一个男人只能有一个媳妇。在很多服务器开发场景中,经常需要让服务器加载很多的数据 (上百G) 到内存中。此时往往要用一个单例的类来管理这些数据。自旋锁是一种多线程同步机制,用于保护共享资源免受并发访问的影响。在多个线程尝试获取锁时,它们会持续自旋(即在一个循环中不断检查锁是否可用)而不是立即进入休眠状态等待锁的释放。这种机制减少了线程切换的开销,适用于短时间内锁的竞争情况。但是不合理的使用,可能会造成CPU的浪费。
2025-10-29 11:37:41
1097
原创 Linux系统编程—线程概念与控制
LWP是轻量级进程,在Linux下进程是资源分配的基本单位,线程是cpu调度的基本单位,而线程使用进程pcb描述实现,并且同一个进程中的所有pcb共用同一个虚拟地址空间,因此相较于传统进程更加的轻量化线程互斥指的是在多个线程间对临界资源进行争抢访问时有可能会造成数据二义,因此通过保证同一时间只有一个线程能够访问临界资源的方式实现线程对临界资源的访问安全性。
2025-10-27 23:40:46
728
原创 Linux系统编程—Linux进程信号
上面所说的所有信号产生,最终都要有OS来执行,为什么?OS是进程的管理者信号的处理是否是立即处理的?在合适的时候信号如果不是被立即处理,那么信号是否需要暂时被进程记录下来?记录在哪里最合适呢?一个进程在没有收到信号的时候,能否知道,自己应该对合法信号作何处理呢?如何理解OS向进程发送信号?能否描述一下完整的发送处理过程?
2025-10-12 16:07:07
675
原创 Linux系统编程—进程间通信
一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE,进而可能导致write进程退出。当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。如果所有管道写端对应的文件描述符被关闭,则read返回0。管道是有固定大小的,多少?
2025-10-02 10:46:38
928
原创 Linux系统编程—库制作与原理
库是写好的现有的、成熟的、可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
2025-09-22 09:40:15
692
原创 Linux系统编程—基础IO
pathname:要打开或创建的目标文件flags:打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。参数:O_RDONLY:只读打开O_WRONLY:只写打开O_RDWR:读,写打开上面三个常量,必须指定一个且只能指定一个O_CREAT:若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限O_APPEND:追加写返回值:成功:新打开的文件描述符失败: - 1mode_t理解:直接 man 手册,比什么都清楚。
2025-09-11 22:20:55
751
原创 Linux系统编程—进程控制
在继续学习新知识前,我们来思考函数和进程之间的相似性exec/exit就像call/return一个C程序有很多函数组成。一个函数可以调用另外一个函数,同时传递给它一些参数。被调用的函数执行一定的操作,然后返回一个值。每个函数都有他的局部变量,不同的函数通过call/return系统进行通信。这种通过参数和返回值在拥有私有数据的函数间通信的模式是结构化程序设计的基础。Linux鼓励将这种应用于程序之内的模式扩展到程序之间。如下图一个C程序可以fork/exec另一个程序,并传给它一些参数。
2025-09-06 21:30:25
1070
原创 Linux系统编程—进程概念
在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法!
2025-08-29 21:40:52
696
原创 Linux系统编程—Linux基础指令
本⻔课程学习Linux系统编程,你可能要问Linux从哪⾥来?它是怎么发展的?在这⾥简要介绍Linux的发展史。要说Linux,还得从UNIX说起。
2025-08-15 21:40:12
675
原创 C++进阶—STL之空间配置器
空间配置器,顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的,在默默地工作。虽然在常规使用STL时,可能用不到它,但站在学习研究的角度,学习它的实现原理对我们有很大的帮助。
2025-08-11 09:41:45
659
原创 C++进阶—C++的IO流
在C语言中,如果想要将一个整形变量的数据转化为字符串格式,如何去做?使用itoa()函数使用sprintf()函数但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。return 0;在C++中,可以使用stringstream类对象来避开此问题。在程序中如果想要使用stringstream,必须要包含头文件。
2025-08-06 19:15:08
665
原创 C++进阶—特殊类设计
为什么会产生设计模式这样的东西呢?就像人类历史发展会产生兵法。最开始部落之间打仗时都是人拼人的对砍。后来春秋战国时期,七国之间经常打仗,就发现打仗也是有套路的,后来孙子就总结出了《孙子兵法》。孙子兵法也是类似。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
2025-08-05 15:05:54
549
原创 C++进阶—智能指针
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。2.2 内存泄漏分类堆内存泄漏(Heap leak)
2025-08-02 10:52:06
828
原创 C++进阶—异常
实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了public:protected://错误描述int _id;//错误编号public:return str;return str;
2025-07-31 14:47:12
669
原创 C++进阶—哈希
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log₂N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。
2025-07-23 22:38:58
831
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅