
linuxC++
文章平均质量分 73
把linuxC++用的东西放在这里面
dxgzg
梦想能成为一名linuxC 服务端开发程序员
展开
-
C++封装个协程库,基于云风的coroutine
写了一个简易的协程库,取名为fiber。我的fiber库原型是云风大佬的coroutine库github链接,知乎一位大佬对coroutine库的注释github链接。把大佬们的代码读一遍再抄一遍,体验是真的不一样了。下面就写下我对协程库的认识。以下操作需要在Linux系统下进行操作,因为用到Linux提供的ucontext.h头文件。在windows下就用不了了.4个函数和例子的介绍。然后把云风的栈也写下,自己改的也下。这是参考博客...原创 2021-05-04 00:34:26 · 1059 阅读 · 4 评论 -
学一学I/O,是否线程安全,不再使用资源是否会阻塞资源?
最近在完善自己的个人小网站,以前写小玩具/算法题不会用到文件I/O流,这次升级小网站需要用到json文件,当时在想FILE是不是线程安全的?如果一个线程用完这个资源,但是这个线程是阻塞在这里的,那么这个资源会被释放吗?答案是,会被释放,操作系统会帮我们做这些事情的.当持有资源使用完毕会释放持有的资源,而且也是线程安全的,只不过不加锁无法保证写入文件的顺序.#include <stdio.h>#include <iostream>#include <string>#原创 2021-04-27 21:29:22 · 305 阅读 · 0 评论 -
C++写一个http服务器/web服务器
目录开篇废话正文开篇废话其实这篇文章一直想写,苦于没有时间,想一气呵成写完,在离回家前一天晚上,在上海的小宾馆里面异常兴奋,写一下如何用C++搭建一个简易的http服务器。我相信大部分人都希望渴望一个自己的网站(哪怕在破在破也是自己做的),我当初是就是这么渴望的,记得那是2020年的8月,我查阅的各种资料终于学会了socket,于是迫不及待的写了一个聊天程序,一直在研究如何端口映射。那时候还很傻很天真,来了一个连接就开一根线程,离开就销毁这根线程,那会也知道线程创建和销毁的开销很大,但是一直没有想到其原创 2021-02-02 18:39:49 · 264041 阅读 · 18 评论 -
copy on write手法以及对多线程新的理解
类对象跨线程处理的是十分棘手的,要想清楚一切可能发生死锁的情况加锁的顺序一定要一致,不要出现线程加锁顺序不一致的情况,因为会有死锁的可能发生。伪共享:多根线程在一个缓存行操作,CPU的缓存的缓存行还要和其他缓存行交互,这是一种伪共享参考的链接...原创 2021-01-19 22:19:29 · 433 阅读 · 3 评论 -
zookeeper的使用及C语言接口函数,以及分布式学习的个人总结
zookeeper我一开始没认出来是动物饲养员的意思,后来看了关于zookeeper取名的文章才知道这个名字的由来下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节的某段内容,名字由来还挺好玩的哈哈哈Zookeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业原创 2021-01-06 00:43:39 · 798 阅读 · 11 评论 -
dup重定向输出到一个网络连接
这篇博客是我介绍linux的一个子集,看完这篇博客还想看看其他linux函数的话可以去我的另一篇博客看一看!博客连接为什么要单独写一篇出来呢?因为我遇到了问题,并且网上也没有相关的博客。标准输出重定向到一个网络连接,我是在《linux高性能服务器编程》这本书看到的。标准输出重定向到一个网络连接原理就是关闭服务器端的输出,这样printf的数据话就自动给客户端(telnet)发送过去了不过书上的例子没有for循环,我加上了for循环,telnet连接的话,并不会显示出hello语句,我感到很奇怪,后来猜测原创 2020-11-07 11:47:37 · 271 阅读 · 0 评论 -
C++服务器定时器基于LRU算法思想实现定时器遍历插入调整删除时间复杂度都是O(1)
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <fcntl.h>#include &原创 2020-10-29 09:14:46 · 686 阅读 · 2 评论 -
linux下setsockopt函数(代码摘自UNP)
以下的代码摘自UNP,我在学习UNP这本书的时候,有时候想把书中的代码敲一敲,像这种比较繁琐的代码我还是想着直接拿源码用,而不是自己再去敲一份。我一开始以为setsockopt是跟fcntl一样的,要先取出来原先设置的值,在做一个|(与运算),然后再把新值设置。setsockopt只要你设置了就行,并不需要获取原先的值再设置/* include checkopts1 *//* *INDENT-OFF* */#include <sys/types.h>#include <sys/s原创 2020-10-25 19:52:53 · 610 阅读 · 1 评论 -
poll函数的详细解释及使用
目录参数解释返回值思路讲解代码部分makefile最近一直在看UNP,2020年8月的暑假初学的网络编程,最开始接触的是windows的select函数。尽管select函数(我的博客首页置顶的小QQ就拿select做的,所以不打算写关于select函数的使用说明)和poll函数在实际开发并不会用到,但还是想学一下,也不是很难使用,花两三个小时做一下实验还是值的的!参数解释int poll(struct pollfd *fds, nfds_t nfds, int timeout);第一个参数是一个结原创 2020-10-16 19:14:37 · 4030 阅读 · 0 评论 -
线程同步和异步及I/O同步和异步的区别
一开始我以为都叫同步、异步是一个意思,有时候还蒙蒙的,直到今天看了linux高性能服务器这本书才恍然大悟他们的区别I/O同步/异步和线程并发的同步/异步是有区别的,I/O同步相当于告诉应用程序已经到了就绪状态(数据从内核读到用户的缓冲区或者用户的缓冲区读到内核中去),I/O异步相当于告诉应用程序已经到了完成状态(用户和内核交换全由内核来接手).而线程的同步和异步,举个简单的例子,同步是你要等着面包烤熟了再去切菜,线程异步是你可以把面包放着烤箱里考着,然后就去切菜,烤好了再拿出来,两不耽误。...原创 2020-10-02 20:36:35 · 470 阅读 · 0 评论 -
linux c++开发、linux函数api总结
使用g++编译C++代码直接编译链接一步到位输入下面命令在命令行g++ hello.cpp -o hello 注意这个-o参数,直接把文件编译链接好了,前面的hello.cpp是你的源文件,后面的hello是你想要生成可执行文件的名字,这样就生成一个hello的可执行文件,在输入 ./hello就可以运行了,以下是图片展示g++单独编译、单独链接g++ -c hello.cpp 这是编译,生成一个hello.o的文件g++ hello.o -o hello 这是链接,生成一个hello的可原创 2020-10-02 10:17:49 · 1181 阅读 · 3 评论