- 博客(35)
- 收藏
- 关注
原创 jsoncpp讲解,让你秒会jsoncpp
1.创建一个json对象使用 Json::Value 对象来创建 JSON 数据然后使用 Json::FastWriter 或 Json::StyledWriter 来生成字符串//构建json格式字符串,注意构建出来是倒序的2.如何将接收到的json格式字符串转化为json对象并且解析/*asString():返回字符串类型的数据。asInt():返回整数类型的数据。asBool():返回布尔值类型的数据。
2025-02-12 11:22:39
356
原创 从代码出发,让你秒会后端框架libevent常用api进行开发
1.Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、LinuX、*BSD 和 Mac Os;支持多种 I/0 多路复用技术,epoll、 poll、 dev/poll、select 和 kqueue 等;支持 I/0,定时器和信号等事件;注册事件优先级。
2025-02-12 11:19:37
473
原创 Linux网络编程---本地套接字
本地套接字1:作用:本地的进程间通信2.有关系的进程间通信3.没有关系的进程间的通信本地套结字实现流程和网络套结字实现相似,一般采用tcp。
2024-12-08 23:06:10
311
原创 Linux网络编程之---UDP
1.创建一个socket()2.bind()4.sendto()5.close()1.socket2.sendto()4.close()
2024-12-07 21:48:22
757
原创 Linux网络编程之----IO多路复用:select poll epoll讲解
1.每次调用select都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时候很大2.同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多的时候很大3.select支持的文件描述符数量有限,默认是10244.fds集合不能复用,每次都需要重置1.每次调用select都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时候很大2.同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多的时候很大。
2024-12-02 17:35:17
2003
原创 Linux网络编程之---半关闭、端口复用
半关闭:当tcp链接中a向b发送fin请求关闭,另一端b回应ack之后(a进入fin_wait_2)并没有立即发送fin给a,a方处于半连接状态,此时a可以接收b发送的数据,但是a已经不再向b发送数据可以使用api来控制半连接状态:--参数:sockfd:socket套结字how:允许为shutdown操作选择以下几种方式SHUT——RO(0) :关闭sockfd读功能,不允许读,套结字不再接收数据,任何当前在套结字接受缓冲区的数据将被无声丢弃。
2024-12-02 17:17:29
525
原创 Linux网络编程----使用多进程实现并发服务器
要实现tcp通信服务器处理并法的任务,使用多线程或者多线程来解决这里我们使用多进程来实现:1.一个父进程,多个子进程2.父进程负责等待并接受客户端的连接3.子进程:完成通信,接收一个客户端的连接,就创建一个子进程来通信。
2024-11-25 21:46:33
422
原创 Linux网络编程之--socket讲解
所谓socket就是套接字socket是由ip地址和端口结合的,提供向应用层进程传送数据包的机制字节序:字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。字节序分为大端字节序和小端字节序大端字节序:大端字节序是指一个整数的最高位字节(23 ~ 31 bit)存储在内存的低地址处,低位字节(0 ~ 7 bit)存储在内存的高地址处;
2024-11-21 17:13:44
1795
原创 Linux网络编程---网络结构讲解
客户端 服务器模式:浏览器 服务器模式物理层(物理层)->数据链路层(提供介质访问和链路管理,MAC地址)->网络层(ip选址及路由器选择)->传输层(负责协议和端口号,建立、管理和维护端到端的连接(TCP UDP))->会话层->表示层(数据格式的转化)->应用层数据链路层->网络层->传输层->应用层,上层协议使用下层协议提供的服务协议:最终体现在网络上传输的数据包的格式常见的协议:应用层:FTP(文件传输协议) HTTP(超文本传输协议) NFS(网络文件系统)
2024-11-21 17:06:38
554
原创 Linux系统编程多线程之条件变量和信号量讲解
条件变量的类型:pthread_cond_t。一直等待,并且需要通知解除。信号量的类型 sem_t。
2024-11-14 22:18:22
584
原创 Linux系统编程多线程之读写锁讲解
1.当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排它性,所有其它线程都无法获取锁,也就无法读访问共享资源了,但是实际上多个线程同时读访问共享资源并不会导致问题.2.在对数据的读写操作中,更多的是读操作,写操作较少,例如对数据库数据的读写应用为了满足当前能够允许多个读出,但只允许一个写入的需求,线程提供了读写锁来实现。
2024-11-14 22:13:30
536
原创 Linux多线程之互斥锁和死锁
为避免线程更新共享变量时出现问题,可以使用斥量(mutex是mutual exclusion的缩写)来确保同时仅有一个线程可以访问某项共享资源。可以使用互斥量来保证对任意共享资源的原子访问。互斥量有两种状态:已锁定(1ocked)和未锁定(unlocked)。任何时候,至多只有一个线程可以锁定该互斥量。试图对已经锁定的某一互斥量再次加锁,将可能阻塞线程或者报错失败,具体取决于加锁时使用的方法。-旦线程锁定互斥量,随即成为该互斥量的所有者,只有所有者才能给互斥量解锁。
2024-11-11 21:32:45
504
原创 linux多线程之线程同步讲解
线程的主要优势在于,能够通过全局变量来共享信息。不过,这种便捷的共享是有代价的:必须确保多个线程不会同时修改同一变量,或者某一线程不会读取正在由其他线程修改的变量。临界区是指访问某一共享资源的代码片段,并且这段代码的执行应为原子操作,也就是同时访问同一共享资源的其他线程不应终端该片段的执行。
2024-11-11 21:26:24
382
原创 Linux系统编程之--多线程
线程是允许应用程序并法执行多个任务的一种机制,提高操作系统的运行效率.线程是轻量级的进程(LWP),在Linux环境下线程的本质仍是进程查看指定进程的LWP号:ps -LF pid。
2024-11-09 22:34:49
667
原创 Linux系统编程IPC通信之-----信号
kill -l其中前31个信号为常规信号重点掌握:(2)SIGINT(Ctrl+c)终止进程 默认动作:终止进程(3)SIGQUIT(Ctrl+\)终止进程 默认动作:终止进程(9)SIGKILL,不会被忽略 默认动作:杀死任何进程,提示进程产生了段错误, 默认动作:终止进程并产生core文件,向一个没有读端的管道写数据 默认动作:终止进程,子进程结束/暂停,父进程会收到这个信号 默认动作:忽略这个信号。
2024-10-28 19:59:10
777
原创 Linux多进程通信之IPC-----mmap内存映射
*匿名映射:不需要文件实体进程一个内存映射*/int main()//1.创建匿名内存映射区exit(-1);//2.父子进程通信wait(NULL);sleep(1);exit(-1);return 0;1.如果对mmap的返回值(ptr)做++操作(ptr++), munmap是否能够成功?ptr++;可以对其进行++操作// 错误,要保存地址。
2024-10-24 22:05:53
478
原创 Linux---IPC通信之 ---有名管道fifo讲解
有文件实体,可以应用与非亲缘进程之间进行通信,严重遵循先进先出,不支持诸如lseek()等文件定位操作.
2024-10-21 20:26:29
456
原创 Linux--IPC通信之-----匿名管道pipe讲解
在讲解匿名管道pipe之前,我先给大家介绍以下Linux下面的ipc通信方式:主要分为同一台主机和不同主机之间的通信。而今天的主角便是同一主机间的通信之一:匿名管道pipe内核内存中维护的缓冲器管道拥有文件的特质:读操作,写操作,匿名管道没有文件实体,有名管道有文件实体使用管道时不存在消息或者消息边界的概念,从管道读取数据的进程可以读取任意大小的数据块,而不管写入进程写入管道的数据块的大小是多少半双工无法使用lseek()来随机访问数据。
2024-10-17 20:45:52
964
原创 Linux多进程之 ---孤儿进程、僵尸进程、进程退出
这样就会导致一个问题,如果父进程不调用wait()或 waitpid()的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程,此即为僵尸进程的危害,应当避免。每个进程结束之后,都会释放自己地址空间中的用户区数据,内核区的PCB没有办法自己释放掉,需要父进程去释放。进程终止时,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。这里给出实际代码说明一下二者区别。
2024-10-12 15:57:03
398
原创 Linux多进程之-----exec族函数的使用
exec族函数有很多,这里选用了两个比较常用的来讲1.-参数:path:需要指定的执行的文件的路径和名称(建议写绝对路径)arg: 要传递给被执行程序的参数,以 NULL 结束的字符串列表,第一个参数一般没有什么作用,一般写的是执行的程序名称从第二个参数王后,就是程序执行所需要的参数列表参数最后需要以NULL结束返回值:错误-1;
2024-10-12 15:48:43
325
原创 Linux多进程 与GDB调试多进程------Linux开发面试必问
u :显示进程的详细信息x : 显示没有控制终端的进程j : 列出与作业控制相关的信息。
2024-10-12 15:44:30
402
原创 Linux系统编程----目录操作和遍历相关函数
1.创建一个目录同时2.删除一个空文件3.重命名文件目录4.更改当前目录和路径5.根pwd类似,获取当前路径。
2024-10-08 22:02:03
427
原创 Linux-IO中的open、read、write、lseek、stat、lstat
首先说明一点,这些所有的Linux的IO系统调用函数的头文件都不需要自己死记硬背的,可以通过查阅man手册来查看.Linux系统IO用法一般通过来查看标准C库系统IO一般使用来查看。
2024-10-03 23:04:19
983
原创 在Linux下安装QT完后双击QT运行程序没有反应解决办法
最近在linux上安装qt时遇到一个报错和离谱的坑,下面来跟大家分享一下,希望如果有遇到跟我一样问题的家人能看到并解决。sudo apt install libxcb-xinerama0下载这个缺失的动态库,最后。然后点击属性,将它的权限修改为可执行。
2024-09-30 18:08:14
1333
原创 Linux系统编程入门☞---------------GDB调试
GDB是由GNU软件系统社区提供的调试工具,GCC组成了一套完整的开发环境,GDB是Linux和许多类Unix系统中的标准开发环境。2.它的作用是什么1.启动程序,可以按照自定义的要求随心所欲的运行程序2.可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式)3.当程序被停住时,可以检查此时程序中所发生的事4.可以改变程序,将一个BUG产生的影响修正从而测试其他BUG。
2024-09-29 21:04:30
947
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人