- 博客(121)
- 收藏
- 关注
原创 linux数据库的增删改查(标准库版本)
目录一 数据库创建和校准函数代码实现二 插入 函数三 删除函数四 更新函数五 查询函数一 数据库创建和校准函数代码实现数据库创建函数校准函数open 函数:参数一:数据库名字参数二 :二级指针 定义一个一级指针取地址赋值给他即可 校准函数 :参数说明:open的指针变量 (第一个蚕食)执行的语句:create table stu(id Integer,name char,score Integer);(第二个参数)第三第四 参数:暂不用回调函数 直接都为NULL
2022-05-28 16:42:59
498
原创 linux数据库sqlite3的增删改查(命令行版本)
目录数据库嵌入式数据库的安装嵌入式数据API 函数实现数据库嵌入式的数据库 嵌入式数据库的安装1 在线安装: sudo apt-get install sqlite3 2 进入数据库 :sqlite3 嵌入式数据API 函数实现API 函数 补充.table 是查询表的创建是否成功1 创建一个表 2 插入一张记录 3 删除一条记录 每次只能输入一条 (删除id ==所有都删除了)4 更新一条记录 相当于换了数据 为当前数据 (更新名字)..
2022-05-28 15:29:21
953
原创 linux io多路复用基本原理和实现
目录一 io多路复用模型二 io多路复下的阻塞与不阻塞io模式三 形成了对比 突出了他的优点四 select模型五 代码实现一 io多路复用模型二 io多路复下的阻塞与不阻塞io模式阻塞io模式阻塞模式 :需要等待一个功能完成了 才能到下一个实现 比如 write read 举例 一句话 概括 读写不可以同时进行 也就是顺序执行 就很好体现出阻塞模式的说法了 要么在读的时候 写在等待 相反也是 但是如果写一直不结束 或者 读出来的数据 是空 的 这样的就会永远发生阻塞了 就
2022-05-20 21:18:31
1377
原创 TCP并发服务器补充和UDP客户端和服务器
目录一 TCP并发服务器补充1服务器端二 客户端UDP客户端和服务器一 TCP并发服务器补充用frok函数创建让子进程工作 1服务器端1 为了防止僵尸进程 要在栈区开辟空间 回收子进程 2 用frok函数创建让子进程工作 (kill 序号17 为回收信号)#include<stdio.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/types.h>#include&l
2022-05-19 13:34:13
152
原创 服务器读取客户端数据的优化 和 并发服务器多线程读取
目录一 优化方向1服务器的优化2 客户端二 并发服务器多线程读取1 服务器的修改一 优化方向1 让ipv4自动获取地址 2 并且打印出来 1服务器的优化#include<stdio.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<s
2022-05-18 17:14:04
208
原创 TCP编程API实现服务器读取客户端数据
一 TCP和client的关系和区别TCP: 面向连接 是可靠传输 (服务器)client :客户端 有独立的ipv地址 一个或者两个(对于linux来说)区别:客户端是主动的 服务器是被动的 原因:服务器因为是先存在了 处于一种阻塞状态(被动等待) 客户端随时都可以连接 (主动连接)二 创建流程三 tcp 服务器1 socket 函数1 一般为ipv4:选 AF_INET 2:选tcp 对应的参数3 :2不选 原始套接字 就填0 套接字类似 我们串口的波特率 只是一
2022-05-18 12:10:37
982
原创 linux信号量 的消费者与生产者模型
目录一 回顾二 信号量函数一 回顾1 因为临界资源空的原因 在上一节引出了一个条件变量 (不是一把锁)2 又通过条件变量 引出了生产者和消费者的模型 并且消费者是主导地位 他不会生产节点 只会消耗 3 消费者 在等待阻塞实际上是 帮了 生产者解锁 让生产者工作 完了之后就会释放资源 最后就会告诉消费者 可以吃饼了 4 消费者为了 保护临界资源 会先进行加锁 最后才是解锁 这样的饼就吃的安心了二 信号量函数因为信号量就是一把锁 直接画图 演示 #i
2022-05-07 18:27:21
429
原创 linux 的条件变量 引出 生产者和消费者的关系
目录一 回顾二 条件变量 引出 生产者和消费者的关系三 使用链表功能模仿大饼的生产和被消耗过程四 代码基本框架五 加 环境变量 和互斥量一 回顾为了解决线程同步的问题 我们多引出了一个办法 加入读写锁 注意他是一把锁 读写锁 的读写不可同时进行 但是读可以发生并行 ,写只能并发 读写锁和互斥锁 越靠近临界资源 越好可以避免很多 不相干的数据 参与进来。二 条件变量 引出 生产者和消费者的关系如果我们的临界资源是 空的 还能不能用读写锁或者互斥锁解决 呢 答案是不可以的 先看一段
2022-05-07 14:29:06
318
原创 linux 读写锁详细介绍和应用实战
目录一 回顾二 读写锁 概念三 读写锁的特征四 读写锁函数五 应用实战一 回顾1 互斥锁在上节 详细介绍了 他可以解决在同步线程发生抢占时 导致的数据混乱 2 同时也解释了 进行同步线程会出现的原因 1 cpu的占用权 2 数据混乱二 读写锁 概念读写锁是一把锁 不是两把 三 读写锁的特征画图 介绍一下 第二个情况1 首先知道并行的概念 它指的是一个时间段同步执行 2 因为cpu读取很快 所以会 看到是一起的其实不是 因为读写不可同时执行 只能写释
2022-05-06 20:54:07
1395
原创 linux 线程同步思想 和 互斥量实现同步思想
目录回顾线程同步思想三级目录回顾上一节说明了在栈区定义的变量 在回收时就会出现错误(不共享资源)只有在堆区才会正常。(共享资源)线程同步思想还是一样的流程 1 创建 线程 2 父线程回收子线程 3 写对应的子线程函数 #include<pthread.h>#include<stdio.h>#include <string.h>#include<stdlib.h>int res;void *mychlidA(void *a
2022-05-05 12:32:42
304
原创 linux 回收子线程 和取消(杀死)线程
目录一 回顾二 回收子线程三 在栈区定义回收子线程的变量四 在堆区定义回收子线程的变量五 取消(杀死)线程一 回顾用了 exit(0);进程退出方式和 pthtread_exit(NULL);的混合使用 证明了 pthtread_exit(NULL);退出单个线程是成功的 可行的 。二 回收子线程还是在上次的基础 加 pathread_join函数 即可 参数 第一个 :线程id 参数 第二个:函数指针 (二级指针 )二级指针的赋值对象可以是这样的 比如int **A; /
2022-05-04 13:46:49
1841
原创 linux 的 错误打印 和 单个线程退出
目录一 回顾二 错误打印三单个线程退出 实验1四 单个线程退出 实验2五 单个线程退出 实验3一 回顾1 用 pthread_create 函数 并且在main最后 加上sleep(2);2 看到了明显的父子线程抢占现象3 本质和fork 函数 类似 接上一次内容 继续加上一点东西二 错误打印不可以用 perror 函数 引出一个strerror 函数 形参为 pthread_create函数返回值 #include<stdio.h>#include &l
2022-05-04 12:46:56
899
原创 linux 线程的概念和创建
目录一 回顾二 线程的概念三 线程的创建一 回顾调用了 fork 函数 父进程杀死 子进程不会在终端执行 而是跑到后台服务了后台服务 就是 比如 用 ls -l 查看到的进程 二 线程的概念先看 进程的框图 父进程调用fork 函数 之后 会克隆出 子进程 并且父进程停止执行 拷贝的内核区是共享的 注意这个待会和线程对比 会有联系 。线程的方式 和进程一样 内核区是共享的 但是在通用创建函数之后 它会分出几个线程 线程之间是不共享的 共享和不共享的列举 前面说
2022-05-04 11:42:21
234
原创 linux 守护进程 概念和创建 会话的概念
目录一 回顾二 守护进程的概念三 会话 的概念四 创建守护进程一 回顾前面用了PV 操作同时配合一系列的函数 实现了父子进程通信最本质的要求 只有一个 就是在读的时候不能写 反之 也是。 二 守护进程的概念守护进程相当于是 一个被动的主体 配角的意思 后台服务 就是打开乌班图 比如 用 ls-l 查看到的 就是 后台服务 作用是独立于控制终端 周期性执行某个任务配角工作就是后台服务 后台服务在周期性执行某个任务三 会话 的概念1 不能是进程组长 也就是不能直
2022-05-04 10:21:01
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人