开源项目学习
文章平均质量分 51
正经的董同学
c++开发
展开
-
ubantu改国内镜像源
#备份原来的文件,以防改错。sudo mv /etc/apt/sources.list /etc/apt/sources.list.old#修改源sudo vim /etc/apt/souces.list#粘贴如下# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse# deb-src h原创 2021-12-29 09:20:10 · 157 阅读 · 0 评论 -
Windows上安装ubantu
windows上使用ubantu,一般用于学习,最常见的就是使用wmware安装ubantu的虚拟机了,这样好处是对windows入侵最小,坏处嘛也很多。wmware是收费的,尤其在现在国外厂商针对中国的情况下,使用盗版你要小心了,尤其是公司电脑。还有就是虚拟机的内存和磁盘分配的很有限,如果和其他使用的磁盘分区共用,还容易出现虚拟机损坏的情况。还有各种双系统的复制剪切问题,输入法问题等等。在使用一段时间后,切身感受到了,虚拟机并不是windows上使用ubantu的优秀解决方案,看似可以进去使用,但是一原创 2021-12-27 09:28:22 · 949 阅读 · 0 评论 -
WebBench学习
很经典的测试开源项目,学习了下发现代码确实简单,整个代码分为三个部分1、getopt_long解析参数,并给对应的全局变量赋值2、根据全局变量的url、port构建全局变量request3、创建管道,fork预定个数的进程数,子进程运行信息写入管道w端,父进程一直等待,读取管道的r端...原创 2021-12-26 21:14:52 · 276 阅读 · 0 评论 -
fork预期个进程数
fork函数被调用一次,返回两次,一次父进程返回子进程ID,一次子进程返回0.由已知条件,fork预期进程数#include <unistd.h>#include <stdio.h> int main(void){ int i = 0; printf("i son/pa ppid pid fpid\n"); //ppid指当前进程的父进程pid //pid指当前进程的pid, //fpid指fork返回给当前进程的值 pi原创 2021-12-26 20:57:22 · 440 阅读 · 0 评论 -
写文件fputs后为什么要fflush
看ThinyWebSocket的时候有个疑问#define LOG_DEBUG(format, ...) if(0 == m_close_log) {Log::get_instance()->write_log(0, format, ##__VA_ARGS__); Log::get_instance()->flush();}为什么write之后还需要flush,这个flush有什么意义void Log::flush(void){ m_mutex.lock();原创 2021-12-02 11:16:46 · 875 阅读 · 1 评论 -
C++多线程学习(四)异步编程
前面刚大写特写多线程同步,这里怎么又扯到异步编程了,嘿嘿,其时两者的'步'不是一个东西,前面讲的同步,是对于所访问资源的有序处理,此处就是在接口层面,是被调用方是否执行完毕才停止阻塞,需要等待执行完毕就是同步,否则就是异步。熟悉windows编程的同学很容易就联想到一个东西了,SendMessage、PostMessage,其机制,优势、缺陷网上有太多的资料了,有过相关编程经验的人也都清楚其是怎么回事了。那么,这里我们深入探讨下,他们到底是如何实现的呢?同步这个不多说,顺序执行命令就是同步了,不需要额外原创 2021-12-01 16:37:25 · 1460 阅读 · 0 评论 -
C++多线程学习(三)——线程同步之条件变量
前面学习了互斥量似乎我们就可以多线程编程了,多线程也不过如此嘛。然而我们上手coding,用多线程来结局我们实际需求就会发现,似乎多线程也不是很好用。因为我们实际对于多线程的需求,往往线程都是while循环让其不断轮询执行,而不是简单的顺序命令执行完就结束线程了。让我们看个具体的例子深入感受下其中的痛点。//cond_var1.cpp用互斥锁实现一个生产者消费者模型#include <iostream>#include <deque>#include <threa原创 2021-11-30 16:05:42 · 968 阅读 · 0 评论 -
linux查看接口头文件及其说明——man
假如我们知道某个接口是我们确认知道的比如: man pthread_mutex_initNo manual entry for pthread_mutex_init那么怎么办呢?究其原因是manpages 不是最新的我们需要更新到最新的sudo apt-get install glibc-doc manpages-dev manpages-posix-dev当然大部分情况我们是不知道接口在man里的具体名称,比如我想看pthread模块里面的cond的wait接口man .原创 2021-11-30 14:17:29 · 1462 阅读 · 0 评论 -
C++多线程学习(二)线程同步之互斥锁
前言上一篇文章C++多线程学习(一)线程创建与管理我们初步了解了线程的概念,以及一直与线程一起提出来的进程,两者的意义与区别。文章的末尾给了一个例子,初步学会了如何创建多线程,以及创建多线程,上面的例子,有个问题就是cout显示错乱,本文就会讲解,为何会发生错乱,以及如何解决。分析原因,先看下多线程的概念多线程并发:在同一时间段内交替处理多个操作,线程切换时间片是很短的(一般为毫秒级),一个时间片多数时候来不及处理完对某一资源的访问; 线程间通信:一个任务被分割为多个线程并发处理,多个线程可能原创 2021-11-30 13:06:49 · 1391 阅读 · 0 评论 -
C++多线程学习(一)线程创建与管理
前言我们都听说过摩尔定律:预计18个月会将芯片的性能提高一倍。早期的计算机时钟频率较低,比如1985年intel 80386 工作频率只有20 MHZ,提升CPU 核心的时钟频率带来的性能收益更大,到2006年Intel Core 2 处理器已经能够达到3.5 GHZ 的工作频率了。从2007年开始,CPU 时钟频率的提升就变得缓慢了,主要因为CPU 的功耗随时钟频率呈幂律增长,需要根据散热技术和制程工艺在性能与功耗间寻求平衡,既然CPU 时钟频率提升有限了,怎么继续按照摩尔定律提升性能呢?CPU 是转载 2021-11-30 10:45:28 · 744 阅读 · 1 评论 -
Win下远程编辑linux文件——samba
不习惯vim来编辑代码,找了个办法可以win下远程编辑linux代码首先安装samba, sudo apt-get install samba.安装好Samba服务器之后,win10访问会拒绝访问。解决办法:sudo vi /etc/samba/smb.conf,按i进行输入。文档末尾增加[share]comment = samba home directorypath = /home/sharepublic = yesbrowseable = yespublic = ye.原创 2021-11-30 10:06:11 · 838 阅读 · 0 评论 -
开源项目TinyWebSocket学习笔记(1)——getopt()
命令参数解析接口getopt()#include <unistd.h> extern char *optarg; //选项的参数指针 extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息。 extern int optopt; //当命令行选项字符不包括在o原创 2021-11-26 10:16:03 · 118 阅读 · 0 评论