自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 linux-redis

2.redis的五个基本类型(大概要记住),三种特殊类型。3.redis持久化rdb和aof(考察概念)4.事物的乐观锁和悲观锁(考察概念)6.redis主从复制(考察概念)7.redis缓存穿透(考察概念)5.发布订阅(考察概念)1.端口号默认6379。

2025-03-07 00:46:36 64

原创 linux-shell编程

1.shell编程主要就是一些语法的使用,具体使用方法看《linux程序设计第四版》的第二章。

2025-03-06 22:42:41 128

原创 linux-守护进程

每打开一个终端都会产生一个会话,每个会话都以打开的首个进程(bash)作为会话首进程,会话首进程的pid标识该会话,每一个命令都会产生一个进程,进程产生的同时就会产生一个进程组fork后有多个进程,第一个进程是组长,这个组以组长的pid标识。2.守护进程编程流程(主要处理日志信息,让错误直接打印在日志中,并且打印时间):让一个组员进程创建新会话,脱离原有的终端,产生新会话,在新的会话中这个组员的pid就是新会话的sid,同时在新会话中也会产生一个新的组,自己也就是组长进程。

2025-03-06 13:56:56 127

原创 linux-git

1.Git (合并代码,管理版本)是一个分布式版本控制系统,广泛用于软件开发和项目管理。它允许开发者在本地和远程仓库之间同步代码,跟踪代码变更,并管理项目的不同版本。4.远程仓库操作:连接github或gitee(具体命令操作见资料)将多个人的代码联合在一起或交换。分支(Branch):代码的不同版本线,用于开发新功能或修复问题。远程仓库(Remote):存储在服务器上的仓库,用于团队协作。仓库(Repository):存储项目代码和历史记录的地方。提交(Commit):代码的快照,记录了代码的变更。

2025-03-06 00:06:23 173

原创 linux-libevent

1.libevent 是一个库,底层封装了select,poll,epoll,用起来更方便。libevent底层用的是多线程。-->ldd+可执行文件(可以查看用了哪些共享库)libevent提供的事件(编译要加库-levent。

2025-03-05 17:36:27 224

原创 linux-i/o复用-epoll

命令ulimit -n进行查看文件描述符的数量;当要改变文件描述符的数量时变为:ulimit -n 10000,就将文件描述符的数量改为了10000。1.select和poll(LT水平触发模式)收集描述符都是在用户空间进行,所以每次运行都要把描述符拷贝给内核,很麻烦。:仅在文件描述符的状态发生变化时触发事件(如从无数据变为有数据)。在这种模式下,必须读取或写入所有数据,否则可能错过后续事件。:只要文件描述符准备好,就会一直触发事件,直到数据被读取或写入。2.epoll的参数(查AI参数)

2025-03-05 15:19:07 253

原创 linux-io复用-select-poll

int select( int nfds-->检测的描述符的总数目,一般为描述符加一, fd set* readfds-->读事件的集合, fd set* writefds-->写事件的集合, fd set* exceptfds-->异常事件,一般为NULL ,struct timeval*timeout -->超时时间);-->设置 fdset的位fd,将描述符对应的位从0置为1。

2025-03-05 02:55:53 288

原创 linux-mysql

如果一个事务试图插入一个金额为负的订单,那么这个事务会被拒绝,以保持数据库的一致性。2.mysql是c/s(服务器/客户端)结构,有个服务器端和多个客户端,服务器与客户端连接是tcp连接,其中mysql的端口是3306,上述命令安装的是服务器端。(sql语句的集合,这些操作要么都执行,要么都不执行)(一条语句就是一个事物,要执行多条事物语句用begin开始,见资料):例子:转账的例子。:隔离性是指多个事务并发执行时,每个事务都应独立于其他事务,就好像它们是顺序执行的一样。8.视图(有3个问题,见资料)

2025-03-04 22:41:47 868

原创 linux-myhttp实现

SEEK_CUR :读写偏移量将指向当前位置偏移量 + offset 字节位置处, offset 可以为正、也可以为负,如果是正数表示往后偏移,如果是负数则表示往前偏移;4.代码实现简单来说就是:你要访问哪个文件,我在解析文件名,拼接好路径,open在打开它,得到文件大小,组装好报文,再把报头发过去,最后把文件内容发过去。dest :指向目标字符串的指针, src 字符串的内容将被追加到这个字符串的末尾。src :指向源字符串的指针,其内容将被复制到 dest 字符串的末尾。

2024-11-14 21:57:58 282

原创 Linux-udp-http协议-tcp状态转移图

(这里假设客户端先关闭)客户端发送FIN,服务端接收FIN,为第一次挥手,此时服务端变为CLOSE_WAIT,客户端变为FIN_WAIT_1。③recvfrom(int sockfd(套接字描述符),void * buf(传到哪个buff中),size_t len(buff多大),int flags(标志位),struct sockaddr * src_addr(套接字的地址结构-->收到的数据存进去,记录了发送者的IP与端口),socklen_t *addrlen(套接字地址结构大小))-->接收数据。

2024-11-13 05:05:52 906

原创 Linux-网络-三次握手-四次挥手-多线程并发(线程)

实现多个客户端可以同时连接上服务端,并且可以给服务端发送信息,运用线程的方法,(在上一篇中运用了进程的方法)具体就是将发送信息(send),接收信息(recv),关闭连接(close)放在线程中实现。去重就是当发送数据后,返回的确认报文在路上丢失了,服务端就会认为没有发送过去,就会重新发送,这样就会产生重复的。6.TCP的特点:面向连接(握手,挥手),可靠的(上述保证可靠的三种方法),流式服务(就是一次发送的数据可能被对方多次收到,多次发送的数据可能被对方一次收到,具体见上一篇recv的介绍)

2024-11-12 21:26:19 589

原创 Linux-网络-TCP-客户端-服务端

④accept(int sockfd(监听套接字),struct sockaddr* addr(套接字的地址结构,存放客户端的ip与端口),socklen_t* addrlen(存放客户端套接字的大小))-->接受客户端的连接。①socket(int domain(地址符ipv4/ipv6),int type(服务类型,tcp->流式服务,udp->数据报服务),int protocol(协议版本,目前恒为0))-->创建套接字。⑤close(int fd(监听套接字))-->关闭连接。

2024-11-05 17:48:43 1336

原创 Linux-线程-条件变量 网络基础概念

pthread_cond_init(pthread_cond_t* cond (条件变量的地址) ,const pthread _condattr_t* cond_attr(属性传NULL即可))--->初始化。在linux系统中,线程就是当fork()后产生的子进程与父进程共享内存,地址空间等资源,而且产生的所有子进程都是共享父进程的资源,看起来就是一个进程里面的线程。(1)进程与线程的区别:线程进程内部的一条执行路径(序列),一个进程可以包含多个线程 进程是一个正在运行的程序。

2024-11-03 17:29:58 509

原创 Linux-线程-生产者消费者-读写锁-线程安全

1.问题概述2.图示:1.分为读锁与写锁,可以自行分配,只允许多个读锁可以共同进行,读锁与写锁,写锁与写锁不能同时进行。2. pthread_rwlock_init(pthread_rwlock*restrict rwlock(读写锁地址),const pthread_rwlockattr_t*restrict attr(一般为NULL))-->读写锁初始化。

2024-10-17 14:50:56 729

原创 Linux-线程-信号量-互斥锁

4. int pthread_create(pthread_t *thread(线程id),const pthred_attr_t*attr(线程属性一般不设置,填NULL即可),void*(*start_routine)(void*)(线程函数,有几个线程就创建几个线程函数,参数为void*,返回值为void*的函数指针),void*arg(线程函数的参数))----->创建线程。pthread_mutex_destroy(pthread_mutex_t *mutex(锁变量地址))-->销毁锁。

2024-10-15 17:33:45 676

原创 Linux-进程间通信-共享内存-消息队列

ssize_t msgrcv(int msqid,void*msgp(存放消息的一片空间即结构体),size_t msqsz(存放消息的空间能存多少字节的数据),long msqtyp(哪个类型的消息),int msqflg(标志位,一般为0))//读取消息。msgsnd(int msgid,const void*msgp(消息体),size_t msgsz(数据的大小),int msgflg(标志位,一般为0))//添加消息。5.删除共享内存:ipcrm -m +要删除的共享内存的id号。

2024-10-09 21:16:44 329

原创 Linux-进程间通信-有名管道-无名管道-信号量

open()必须两个进程同时进行,而且必须是一读一写 (管道 满 write阻塞 管道 空 read阻塞)无名管道主要用于父子间进程的通信--->使用接口pipe(int fd[2]) //fd[0]存放读端 fd[1]中存放写端。4.正常创建的文件是在磁盘上存储,速度比较慢,在管道创建文件实际是在内核上,内存调用速度快。半双工-->通信方式可以是A到B也可以是B到A,但在某一时刻只能是一个方向。通信间进程(IPC机制):管道,信号量,共享内存,消息队列,套接字。

2024-10-08 22:42:38 790

原创 linux—信号

二. kill: 发送信号 int kill(pid_t pid,int sig):pid为给哪个进程发,那个进程的id号 sig为给这个进程发什么信号。一. signal:改变信号的响应方式 默认:SIG_IGN 默认:SIG_DFL。信号:通知进程产生了某个事件。

2024-09-19 02:27:25 313

原创 linux命令///

linux常用命令

2024-09-10 00:34:29 570

原创 C语言结构体介绍

一,前言以下是我在学习结构体过程中对结构的相关总结。具有相同或不同类型元素的集合叫做结构体。结构体本质是一种类型。结构体通常用关键字 struct 定义。如定义一个学生类型结构体。//此代码主要用于说明如何重命名定义int Math;//全局变量声明 ,用typedef实现//如typedef int char 此时的char不再是基本数据类型char,而是代表着int类型//在如:typedef unsigned long long unit64。

2024-05-08 01:36:12 737 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除