linux
crazy智障大师mad
努力点技能中
展开
-
STL深入学习笔记01
STL深入学习笔记01背景:我是一名普通的大学生,入学一年时间。在这一年时间里面过的还算充实,大一选择了acm集训队,学习到了很多算法知识。在这个过程中,我基本上使用过了stl标准函数库里面的大多数常用的容器,也经常用到一些简单的算法,比如sort()。暑假前我决定以后主要学习服务器开发了,用的语言是C++,我觉得过去一个学期里面,我C++学得实在不咋地,于是想通过学习STL的内部原创 2016-07-22 21:52:40 · 318 阅读 · 0 评论 -
多路复用I/O Epoll的简单使用
不负责任地放上中文版Epoll维基,科学上网。原理什么的不多讲,我也不是很熟,这里就简单写一些实际应用要怎么写,当然也是很简单的demo。API介绍int epoll_create(int size);// 这个函数用来创建epoll// 参数size是指这个epoll最多能同时监听多少个文件描述符的事件// 函数返回值是epoll的文件描述符,linux下面文件描述符简直无处不在int ep原创 2017-06-15 15:59:07 · 378 阅读 · 0 评论 -
muduo库中对线程池的实现(1)
在学muduo库之前,我只知道一点线程池的概念,但是对于怎么实现线程池完全不了解,最近因为被分配到了一个实验室里项目小组,于是开始学习muduo库。在看了几遍muduo库中的ThreadPool线程池类的实现之后,感觉对线程池有了一些了解,就简单对muduo库是如何实现线程池做一些简单的说明,顺便加深一下记忆。前置知识:1. linux下线程的创建使用2. 线程锁的初步了解原创 2017-04-13 21:18:26 · 1590 阅读 · 0 评论 -
muduo库中对线程池的实现(2)
这两天花时间尝试实现了一下线程池,本来是想完全自己写的,但是写着写着就去参考muduo库的线程池了,实现思路和muduo库的线程池一模一样。我尝试着在不考虑线程安全的情况下对muduo库线程池的实现做一下简述。1. 两个条件变量muduo库中使用了两个条件变量:notEmpty, notFullnotEmpty用于通知线程池中的线程不要再阻塞了,试试看从任务列表中获取一个任务。no原创 2017-05-21 22:59:11 · 468 阅读 · 0 评论 -
muduo库的消息循环机制
连续看了两天的muduo库的net部分,看得我头昏脑胀。。。不过总算把net部分的消息循环机制大致看懂了,不像一开始那么懵逼了。。。思路:简单说来就是将poll/epoll封装成监听类,然后事件分发类从监听类哪里拿到要处理的事件,然后执行事件对应的回调函数。类:Channel:更新Poller对象的监听列表设置回调函数执行回调函数(即处理消息用的函数)原创 2017-04-15 21:13:16 · 376 阅读 · 0 评论 -
简单socket的尝试
socket学习01参考博客 linux下socket编程归纳记录 这篇博客是我学长的学长写的,进过两天简单的学习后,我决定写一篇博客归纳一下暂时学到的知识。socket学习01双向通信客户端服务器端 对一些函数的个人理解Markdown及扩展表格定义列表代码块脚注数学公式UML 图离线写博客浏览器兼容双向通信客户端#include <stdio.h>#include <std原创 2016-07-07 20:40:33 · 431 阅读 · 0 评论 -
vim使用小技巧
我经常忘记一些vim的命令,这些命令平时不太用,但是万一要用到的时候总是让我很蛋疼,因为我写代码写到一半实在不想去百度vim的命令,所以我准备自己写一个vim使用技巧备份的博客。1. 多行注释(多行操作)crtl+v 选中要操作的行,然后进入编辑模式(大写i行首),然后编辑注释字符(比如C语言的“//”),然后按esc,就会发现选中的所有行都会出现注释字符,同理可以用这个方法实现多原创 2017-02-16 21:55:03 · 299 阅读 · 0 评论 -
muduo库 AtomicIntergerT原子操作模板类
muduo库的AtomicInterger模板类将几个gcc中的原子操作方法封装了起来,用以维护一个可能要被多个线程访问读写的变量主要用到两个个原子操作方法:1. __sync_val_compare_and_swap(type* ptr, type value, type value);如果ptr的值等于第二个参数,则将ptr赋值为第三个参数2. __sync_fetch原创 2017-04-12 22:42:07 · 380 阅读 · 0 评论 -
vsftpd+editplus windows上同步linux文件
linux端(ubuntu):1. 安装vsftpdvsftpd是一个ftp服务器,ubuntu和centos都可以通过源进行安装ubuntu下执行 sudo apt-get install vsftpd 进行安装2. 配置vsftpd1). 配置vsftpd.conf文件,ubuntu下vsftod.conf文件在/etc目录下,CentOS则在 /etc/vsftpd/ 目原创 2017-04-12 19:51:16 · 685 阅读 · 0 评论 -
应用setrlimit控制进程使用系统CPU
使用getrlimit控制进程使用系统CPU#include #include #include #include #include void sigxcpu_handler(int signum){ printf ("SIGXCPU Received!\n"); //可以在这里就退出进程 exit(1);}void sigkill_handler(int signu转载 2017-02-26 15:13:37 · 607 阅读 · 0 评论 -
ubuntu16.04 JDK+IntelliJ IDEA 环境搭建
先到ORACLE官网下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html然后到ntelliJ IDEA官网下载 http://www.jetbrains.com/idea/我这里下载都是linux 64位的版本,接着解压两个安装包,这两个都是解压即用的软件,如果是tar....原创 2017-02-19 19:43:52 · 3644 阅读 · 0 评论 -
liunx 多进程不阻塞I/O
思路 多进程的特性是复制父进程的所有数据,这和多线程的公用内存不一样,多进程的好处在于不容易出现一些麻烦的内存问题,多线程的互斥是一件很麻烦的事情,当然也因为这样,多进程也拥有自己的局限性。 利用 多进程+阻塞I/O 的方式实现不阻塞I/O,简单来说就是每accept到一个新的连接,就创建一个子进程,通过那个子进程来单方面通信,子进程里面还是用的最简单的阻塞I/O,这样的话就能实现原创 2017-02-16 21:43:45 · 327 阅读 · 0 评论 -
利用select监听stdin输入
我这两天打算研究一下vi的源码(就是linux上面的那个vi),然后在这个学期的课程设计中写一个简单的文本编辑器。我发现vi源码中是利用select来监听是否有输入内容的。文件描述符我们都知道linux里面是万物皆文件,在所有的文件描述符中有两个比较特殊的存在:0、1其实stdin == 0,stdout == 1所以我们可以将0设置为select要监听的文件描述符(套接字)原创 2016-12-20 21:30:30 · 5101 阅读 · 2 评论 -
linux编程中while里面使用usleep/sleep异常的情况的解决
背景描述:马上就要写课程设计了,这次我打算在linux上写一个类似于vi的编辑器,昨天晚上我打算先在linux上练一下手,用C++写一个控制台贪吃蛇。贪吃蛇的逻辑很简单,我主要是为了在linux上练一下C++的封装,因为之前从来没有在linux上写过系统工程(以前一般只是写过一些简单的demo程序)。但是没想到就是这个简单的贪吃蛇却给我造成了天大的麻烦。我用while循环+sleep来模拟一帧原创 2016-12-25 19:18:50 · 3503 阅读 · 0 评论 -
CentOS7.2安装mysql5.7
CentOS7.2默认的数据库是mariadb。mysql被oracle收购后有闭源的风险(毕竟oracle是家上市公司),所以mysql社区从现有mysql下展开了一个分支项目,叫做mariadb。因为市面上mysql的教程比较多,所以我还是想通过学习研究mysql来熟悉数据库操作。以前我一般都是照着别人的博客一遍一遍安装mysql,这次我自己到mysql官网,下了rpm源,自行安装原创 2016-09-16 22:28:59 · 620 阅读 · 0 评论 -
linux下搭建简单的git服务器
这两天沉迷php web服务器开发不能自拔,但是php和html、js之类的程序要写一点看一点效果,我是放到linux云主机上测试的,所以要在xshell上写代码,很麻烦。于是想自己在云主机上搭建一个git远程仓库,这样我在windows端写代码,写好push一下就能在linux端同步更新,后来我发现我太天真了,因为linux端的git仓库不具备读写能力,里面的文件格式和我们上传上去的不一样,...原创 2016-09-03 23:05:35 · 16568 阅读 · 1 评论 -
CentOS7通过命令行设置中文
我最近在腾讯云主机上买了一个服务器,腾讯提供的是批量安装的系统,我无法选择安装选项,所以初始直接是中文的,而且通过远程操控服务器也是通过bash,所以我在网上找到了一个解决方案,这是原博客解决Centos7下中文显示乱码1. 安装中文包 yum -y groupinstall 2. 编辑配置文件 vim /etc/locale.conf 将这个文件里面的LANG=原创 2016-08-01 18:03:27 · 5407 阅读 · 0 评论 -
linux下select编程学习
源代码#include #include #include #include #include #include #include #include #include #include #include #include #define BUFSIZE 1024int main(){ std::list fd_list; int server_fd = so原创 2016-08-05 20:29:17 · 281 阅读 · 0 评论 -
Nginx源码阅读-ngx_cycle_t
之前阅读nginx源码的时候有几个ngx_cycle_t的property让我很迷惑,现在经过寒假的休养生息,再次阅读的时候有了更多的耐心。 分别是:ngx_cycle_t { ... ngx_str_t prefix; nginx的工作目录地址 ngx_str_t conf_prefix; nginx配置文件的父级目录地址 ngx_str原创 2018-03-10 17:20:46 · 204 阅读 · 0 评论