![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
充满热情的常春藤叶
这个作者很懒,什么都没留下…
展开
-
TCP服务器/客户端架构
TCP原创 2022-06-22 23:44:54 · 228 阅读 · 0 评论 -
Mysql 数据库
MySQL数据库原创 2022-06-12 00:06:41 · 764 阅读 · 0 评论 -
git 软件版本管理
软件版本管理原创 2022-06-06 00:50:58 · 472 阅读 · 0 评论 -
make工程管理器
工程管理器make————如何编写makefie文件1、什么是工程?多个源文件+其他文件(图片、头文件、脚本文件)2、工程管理器的作用编译多个源文件(自动编译);如:gcc + 所有源文件 -o 可执行文件;...原创 2022-05-22 22:16:12 · 224 阅读 · 0 评论 -
线程池技术
一、线程池概述1、为什么要使用线程池?一个进程所支持的线程是有限的(受限);线程的创建与销毁是有一定的开销的(当线程数目多时);(内存池是解决频繁malloc产生的开销问题;对象池是解决对象频繁分配所带来的开销问题)2、线程池的核心任务队列:用来存放客户端所请求的服务(所要完成的功能函数)线程池:用于存放线程(还包含线程数量,任务队列头/尾指针,任务队列大小,互斥锁,条件变量,线程销毁标志位等)当任务队列为空时,线程池里的线程阻塞等待;任务队列不为空时,线程池里的线程处理原创 2022-05-18 00:13:42 · 508 阅读 · 0 评论 -
停车场进出(数据库)
三个文件:park.h park.c function.c注意:有关时间函数,time_t 是长整型, time() 函数取多少秒,通过形参返回;ctime()将time()函数返回的形参(秒数)转化为 字符串 时间输出。#include <time.h>#include <stdio.h>int main(){ time_t timep1; //time_t timep2; time(&timep1); //获取从1970至..原创 2022-05-04 19:55:04 · 1047 阅读 · 0 评论 -
多线程编程题
举例一:子线程循环3次,接着主线程循环6次,接着又回到子线程循环3次,接着再回到主线程又循环6次,如此循环50次,试写出代码。#include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <unistd.h>int flag = 0;int count = 0;void *function(void *arg){ while (1) {...原创 2022-05-03 17:06:01 · 439 阅读 · 0 评论 -
线程间通信
目录一、线程理论基础1、什么是线程2、为什么有了进程,还要引入线程呢? (使用多线程到底有哪些好处?)3、线程的缺点二、多线程间通信1、多线程通信的注意事项2、创建线程的步骤3、终止线程的方式4、线程 API 使用(1)pthread_create() 函数 (创建线程)(2)pthread_exit()函数 (结束线程)(3)pthread_join()函数 (等待线程结束)三、线程同步1、互斥量(1)互斥量注意事项(2)互斥锁创建步..原创 2022-05-02 02:03:16 · 4115 阅读 · 2 评论 -
常见问题分析(重点)
1、sizeof和strlen的区别?(1)sizeof() 是单目运算符; strlen() 是函数;(2)sizeof() 的参数类型多样化(数组、指针、类型、对象、函数等等);strlen() 的参数类型只能是 char * (字符指针,字符串),想要得到正确结果必须有 ‘\0’ 结束符,否则将无法得到结果,数组名作为参数传入时,实际上数组就退化成指针了。(3)sizeof() 计算类型所占内存的字节数;strlen() 计算字符串长度,见到 ‘\0’ 为止;(4)sizeof() 程原创 2022-04-30 22:14:41 · 209 阅读 · 0 评论 -
(20220429)进程间通信
一、进程间通信概述1、进程通信的目的数据传输、资源共享、通知事件、进程控制kill -l (命令用于查看 进程能识别的信号,但是大部分进程是忽略的)bxp@ubuntu:~/2022/0429$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 1原创 2022-04-30 02:34:05 · 1041 阅读 · 0 评论 -
(20220428)进程控制编程
目录一、理论基础1、进程定义2、进程与程序3、进程的生命周期4、查看进程命令5、父进程与子进程6、进程的状态7、Linux 进程8、Linux下进程地址空间9、进程ID10、进程互斥11、临界资源12、临界区13、进程同步14、进程调度15、调度算法(多种结合)16、死锁17、僵尸进程二、进程控制编程1、获取ID2、创建进程3、exec函数族4、进程等待一、理论基础1、进程定义进程是资源分配的最.原创 2022-04-28 21:01:45 · 926 阅读 · 0 评论 -
通讯录3.0(数据库编程)
三个文件 : address_list.h address_list.c function.caddress_list.h#ifndef _ADDRESS_LIST_H_#define _ADDRESS_LIST_H_#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sqlite3.h>enum return_val{ CREATE_OK = 1原创 2022-04-26 21:39:43 · 1152 阅读 · 0 评论 -
通讯录2.0(文件存储)
三个文件 :address_list.h function.c main.c核心文件存储://读数据int readfiledata(ADDRESS *address){ int fd; int bytes_read; NODE node; ADDRESS new_node = NULL; if(CREATE_NO == create_address_list(address)) //创建通讯录 { return ..原创 2022-04-24 23:01:39 · 108 阅读 · 0 评论 -
通讯录1.0
三个文件: address_list.h function.c main.caddress_list.h#ifndef _ADDRESS_LIST_H_#define _ADDRESS_LIST_H_#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#define NAME_SIZE 10#define SEX_SIZE 6#...原创 2022-04-24 22:52:45 · 193 阅读 · 0 评论 -
(20220219)栈的应用
计算:(4 + 2)*8 - 3#include <stdio.h>#include <stdlib.h>#define MAX 100struct operand{ int data[MAX]; int top;};struct operator_ch{ int top; char data[MAX];};typedef struct operand OPND;typedef struct operator_ch O原创 2022-04-17 17:36:28 · 69 阅读 · 0 评论 -
Linux 常用命令
目录1、显示(取消)行号1、显示(取消)行号显示所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下,输入 :set nu ,则可以显示该文件的所有行号取消所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下输入,在光标 停留处,退出命令模式,然后输入 :set nonu ,即可显示当前这行的号码.........原创 2022-04-13 22:13:15 · 2181 阅读 · 0 评论 -
(20220223)排序的实现
概述基本概念:定义:将文件中的数据记录按关键字值的递增或递减的顺序排列起来。{R1, R2,..., Rn}→{Ri1, Ri2,..., Rin}其中关键字{k1, k2,..., kn}→有序序列{ki1, ki2,..., kin}排序方法的稳定性: 对于ki=kj的记录Ri=Rj( Ri在Rj之前),排序后: Ri仍在Rj之前,则排序方法是稳定的; Ri在Rj之后, 则排序方法是不稳定的;方法分类:内部排序:在内存中进行,适于小文件外部排序:使用...原创 2022-02-26 22:13:00 · 183 阅读 · 0 评论 -
(20220225)文件编程(API)
一、系统调用二、C库函数原创 2022-02-26 22:01:51 · 441 阅读 · 0 评论 -
(20220221)链式队列实现
#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 10enum ret_val{ MALLOC_OK = 100, MALLOC_NO, CREATE_OK, CREATE_NO, PUSH_OK, PUSH_NO, POP_OK, POP_NO, EMPTY_OK, EMPTY_NO,};.原创 2022-02-22 21:52:21 · 65 阅读 · 0 评论 -
(20220221)顺序队列
#include<stdio.h>#include<stdlib.h>#define SIZE 10enum ret_val{ MALLOC_OK = 100, MALLOC_NO, CREATE_OK, CREATE_NO, EMPTY_NO, EMPTY_OK, FULL_OK, FULL_NO, POP_OK, POP_NO, PUSH_OK, PUSH_NO,};.原创 2022-02-22 21:48:19 · 59 阅读 · 0 评论 -
(20220222)循环队列的实现
#include<stdio.h>#include<stdlib.h>#define SIZE 11enum ret_val{ MALLOC_OK = 100, MALLOC_NO, CREATE_OK, CREATE_NO, EMPTY_OK, EMPTY_NO, FULL_OK, FULL_NO, POP_OK, POP_NO, PUSH_OK, PUSH_NO,};.原创 2022-02-22 21:41:47 · 113 阅读 · 0 评论 -
(20220220)链栈
#include<stdio.h>#include<stdlib.h>#include<string.h>#define SIZE 10enum ret_val{ MALLOC_OK = 100, MALLOC_NO, CREATE_OK, CREATE_NO, TAKE_OK, TAKE_NO, EMPTY_OK, EMPTY_NO, PUSH_OK, PUSH_NO, .原创 2022-02-20 16:54:04 · 326 阅读 · 0 评论 -
(20220219)顺序栈的实现
#include<stdio.h>#include<stdlib.h>#define SIZE 10enum ret_val{ CREATE_OK = 100, CREATE_NO, MALLOC_OK, MALLOC_NO, EMPTY_OK, EMPTY_NO, PUSH_OK, PUSH_NO, FULL_OK, FULL_NO, POP_OK, POP_NO,};.原创 2022-02-19 22:01:47 · 506 阅读 · 0 评论 -
(20220217)带头结点的单向循环链表
#include<stdio.h>#include<stdlib.h>#include<time.h>#define CREATE_OK 1#define CREATE_NO 0#define MALLOC_OK 1#define MALLOC_NO 0struct node{ int num; struct node *next;};typedef struct node Node;typedef Node * Clink;.原创 2022-02-18 16:11:28 · 311 阅读 · 0 评论 -
(20220215)不带头节点的单链表
#include<stdio.h>#include<stdlib.h>#include<time.h> #define MALLOC_OK 1#define MALLOC_NO 0#define CREATE_OK 1#define CREATE_NO 0struct node{ int num; char name[10]; int age; char sex; struct node *next;};.原创 2022-02-18 16:04:42 · 57 阅读 · 0 评论 -
(20220218)带头节点的双向循环链表
#include<stdio.h>#include<stdlib.h>#include<time.h>#define CREATE_OK 1#define CREATE_NO 0#define MALLOC_OK 1#define MALLOC_NO 0struct node{ int num; struct node *next; struct node *prior;};typedef struct node No.原创 2022-02-18 15:58:33 · 119 阅读 · 0 评论 -
(20220217)带头结点的单链表
#include<stdio.h>#include<stdlib.h>#include<time.h>#define CREATE_OK 1#define CREATE_NO 0#define MALLOC_OK 1#define MALLOC_NO 0struct node{ int num; struct node *next;};typedef struct node Node;typedef Node * Hlink;...原创 2022-02-17 21:42:42 · 457 阅读 · 0 评论