自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dp学习记录1

还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。3.初始化:爬到1阶的方法只有1种,爬到2阶的方法2种,dp[1] = 1,dp[2] = 2;2.状态转移方程:dp[i] = dp[i-1]+dp[i-2]那么dp[i]就是 dp[i - 1]与dp[i - 2]之和。状态转移方程为dp[i] = dp[i-1]+dp[i-2]

2023-09-05 21:34:30 77

原创 C++字节对齐

输出为8字节,第一个int 占了4字节,第二个char占1字节,成员b要求按4字节对齐,所以编译器在成员str后面加了3个空字节。输出为12字节,类中有了虚函数就会多一个虚函数表指针,这个指针占4个字节。(3)结构体的总大小,为其成员中所含最大类型的整数倍。(2)每个成员的首地址是自身大小的整数倍。(1)第一个成员的首地址为0。

2023-08-03 15:56:25 107

原创 VS2019跨平台开发头文件找不到的问题

原因是因为在本地找不到头文件,网上有搜到解决方法是,设置项目属性中的“复制源”,将“复制源”的属性值设置为是,但是项目创建默认就是"是"的值。看到这里好像明白了点什么,这里理论上应该是要把Linux的头文件从Linux上自动复制到本地,但是实际上并没有复制成功,至于为什么没有复制成功就不想去找原因的毕竟每个版本都有每个版本不同的问题,找这个原因成本太高,所以干脆手动操作。

2023-06-26 11:22:13 482

原创 redis

redis是非关系型数据库,用于解决性能问题是一个开源的key-value存储系统。它支持存储的value类型有:string、list、set、zset(有序集合)、hash(哈希类型)redis会周期性的把更新的数据写入磁盘或者把修改的操作写入捉急啊的记录文件nosql数据库可以用来存放登录信息,直接缓存到内存,读写速度更快,缓解了CPU压力。跳跃表效率堪比红黑树,实现远比红黑树简单实例对比有序链表和跳跃表,从链表中查询511.有序链表。

2023-05-12 20:19:09 155

原创 nginx安装配置

安装nginx需要安装配置openssl,pcre,zlib;1.安装openssl,系统会自带比较旧的版本2.安装pcre,pcre系统会自带旧版本的,直接安装新版本并将新版加入环境变量1.安装包下载:进入官网,选择合适的版本下载cd到解压后的问价夹内3.编译4.安装查看Pcre安装的文件。首先进入Pcre安装时用--prefix指定的目录,安装后生成了四个目录:bin、include、lib、share。ls将pcre加入环境变量zlib安装nginx安装。

2023-04-21 21:41:00 119

原创 linux下修改完my.cnf文件后重启mysql报错:Failed to restart mysql.service: Access denied

百度试了各种方法之后发现需要在root下进行重启。切换到root用户下再次输入命令重启成功,文件生效。

2023-04-18 15:55:11 880

原创 MySQL基础

(Database,DB):数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的可共享的、统一管理的大量数据的集合。(DBS),是由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。(DBMS),是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

2023-04-16 20:19:46 111

原创 libevent

使用libevent 函数之前需要分配一个或者多个 event_base 结构体, 每个event_base结构体持有一个事件集合, 可以检测以确定哪个事件是激活的, event_base结构相当于epoll红黑树的树根节点, 每个event_base都有一种用于检测某种事件已经就绪的 “方法”(回调函数)通常情况下可以通过event_base_new函数获得event_base结构。获得event_base结构释放event_base指针查看libevent支持的后端方法。

2023-04-12 20:59:22 120

原创 libevent在centos下的安装与报错error while loading shared libraries: libevent-2.1.so.7: cannot open shared 解决

在运行时,程序无法找到libevent-2.1.so.7这个动态库,因为该动态库在默认安装时,存放的路径在。建立软连接 映射 libevent-2.1.so.6 到 /lib64 路径中。管理员身份输入sudo yum install -y lrzsz命令回车。注意:文件上传是,当前目录在哪里,文件就会上传到哪个目录下。输入rz命令会弹出文件选择框,选择需要上传的文件确认。使用Linux自带的文件上传下载插件。下,不在系统的默认查找路径内。

2023-04-12 11:39:20 422

原创 线程池、UDP、socket本地通信

如果一个应用需要频繁的创建和销毁线程,而执行任务的事件又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时就需要线程池。面向无连接的,不稳定的,不可靠的,不安全的数据报传递,不需要建立连接,传输效率更高,在稳定的局域网内环境相对可靠。任务池是共享资源,所以需要互斥锁,当任务池中没有任务的时候要让线程阻塞,所以需要使用条件变量。复杂版线程池,增加了线程管理,根据需要增加和减少线程。线程池:若干个线程组合到一起,形成线程池。tcp本地套接字服务端。tcp本地套接字客户端。本地socket通信。

2023-04-11 21:18:22 222

原创 epoll多路IO模型

epoll反应堆的核心思想是: 在调用epoll_ctl函数的时候,将events上树的时候,利用epoll_data_t的ptr成员,将一个文件描述符,事件和回调函数封装成一个结构体,然后让ptr指向这个结构体, 然后调用epoll_wait函数返回的时候,可以得到具体的events, 然后获得events结构体中的events.data.ptr指针, ptr指针指向的结构体中有回调函数,最终可以调用这个回调函数。1、epoll默认情况下是LT模式, 在这种模式下, 若读数据一次性没有读完,

2023-04-10 19:32:37 25

原创 TCP状态转换,select多路IO转接模型

TIME-WAIT一定出现在主动请求关闭的一方,也就是说2MS是针对主动关闭一方来说的,由于TCP存在丢包重传,丢包重传若发给了已经断开连接之后相同的socket-pair(该连接是新建的, 与原来的socket-pair完全相同, 双方使用的是相同的IP和端口), 这样会对之后的连接造成困扰,严重可能引起程序异常。相当于把文件描述符的写缓冲区操作关闭了。shutdown能够把文件描述符上的读或者写操作关闭, 而close关闭文件描述 符只是将连接的引用计数的值减1, 当减到0就真正关闭文件描述符了。

2023-04-07 21:20:39 95 1

原创 三次握手四次挥手,简单高并发服务器编写

TCP是面向连接的安全的数据传输,在客户端与服务端建立连接的时候要经过三次握手过程,在客户端与服务端断开连接的时候要经过四次挥手过程。SYN:表示请求ACK:表示确认服务端发送的SYN和客户端发送的SYN本身也会占一位通信的时候不再需要SYN标识,只有在请求连接的时候需要SYN标识位。

2023-04-06 20:14:01 38

原创 Linux网络基础,socket套接字

源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),当调用socket函数以后,返回一个文件描述符,内核会提供与该文件描述符相对应的读和写缓冲区,同时还有连个队列,分别是请求队列和已连接对列。以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。C/S设计模式:客户机/服务器模式。

2023-04-05 19:38:58 78

原创 线程同步,锁

2.线程A在拥用A锁未解锁的时候,调用B锁,线程B在拥有B锁未解锁的时候,调用A锁。这样造成线程A和B都不释放自己的锁,而且还想得到对方的锁,从而产生死锁。1 在条件变量处引起阻塞---->这个阻塞会被pthread_cond_signal解除阻塞。消费, 此时会将head置为NULL, 然后其余的几个消费者线程只会有一个线程获得锁,2 互斥锁也会使线程引起阻塞----->其他线程解锁会使该线程解除阻塞.读写锁也叫共享-独占锁。写独占,读共享, 当读和写一起等待锁的时候写的优先级高。

2023-04-04 16:53:50 35

原创 守护进程和线程

pthread_exit或者return返回的指针所指向的内存单元必须是全局的或者是用malloc分配的,不能在线程函数的栈上分配,因为当其它线程得到这个返回指针时线程函数已经退出了,栈空间就会被回收。若锁是解开的就将这把锁加锁,此时可以访问共享资源,访问完成后释放锁,这样其他线程就有机会获得锁。进程若有该机制,将不会产生僵尸进程。僵尸进程的产生主要由于进程死后,大部分资源被释放,一点残留资源仍存于系统中,导致内核认为该进程仍存在。线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。

2023-04-03 23:10:52 58

原创 信号相关函数及使用

信号处理函数 信号集

2023-04-02 22:15:58 277

原创 进程间通信

进程间通信 管道通信

2023-03-22 22:48:25 91

原创 进程控制相关

进程控制 孤儿进程 僵尸进程

2023-03-22 09:00:00 44

原创 dup dup2 fcntl函数

dup dup2函数fcntl函数

2023-03-21 22:16:45 92

原创 gdb调试代码

gdb基础操作指令

2023-03-17 15:52:24 811

原创 makefile文件的编写规则

makefile文件的基本编写

2023-03-17 11:08:44 353

原创 Linux基础

vim简单指令静态库与动态库的制作与使用静态库与动态库的区别以及优缺点

2023-03-16 16:20:23 36

原创 set容器debug

set容器

2022-12-16 20:04:43 25

原创 list容器报错

错误纠正

2022-12-16 15:04:25 51

原创 数据结构——线性表

线性表

2022-10-23 22:21:45 201

原创 指针与结构体

指针 结构体

2022-10-22 10:59:51 87

原创 剑指offer简单题打卡day5

数组题

2022-10-21 22:39:06 70

原创 剑指offer简单题打卡day4

链表反转

2022-10-20 21:02:01 131

原创 剑指offer简单题打卡day3

剑指offer

2022-10-19 22:55:29 302

原创 数据结构基础知识

数据结构与算法基本概念

2022-10-19 17:04:22 106

原创 剑指offer简单题打卡day2

leecode

2022-10-18 23:01:56 93

原创 剑指offer简单题打卡day1

leecode03 22

2022-10-17 22:43:43 108 1

空空如也

空空如也

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

TA关注的人

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