![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
悟空很开心
幸福来敲门
展开
-
ubuntu 安装boost 库
ubuntu上安装boost 库# apt-get install libboost-dev测试安装是否成功:{ int a = boost::lexical_cast("123456"); std::cout << a < return 0;}这是一个字符串转化为整数的简单程序。 运行命令:# g++ test.cpp -o test# ./test如果输出结果是:12原创 2015-11-05 13:01:15 · 604 阅读 · 0 评论 -
虚拟机安装Ubuntu不能全屏解决方法
http://www.jb51.net/os/Ubuntu/356462.html原创 2016-03-08 16:27:57 · 625 阅读 · 0 评论 -
如何使用Linux Epoll来进行网络程序开发(译文)
写在前面,原文出处:https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ 原文标题:How to use epoll? A complete example in C 传统网络服务器的实现主要是使用一个连接对应一个进程或者线程。对于需要高性能的应用(服务器)需要同时处理大量的客户(连接),而(前面)这种方法原创 2016-04-11 22:22:04 · 632 阅读 · 1 评论 -
Linux socket编程之一:socket函数详细说明
昨天,在腾讯一面的过程中,问到了关于linux socket的一些函数的调用,还问了这些那情况下会失败,当时就是靠瞎猜……会学校后,打开IDE,根本提示,仔细查看了一番,才明白面试官想问的是那些错误状态码表示的含义….唉,自己水的不行,今后刻苦学习,不说闲话只做事…..从client端说起吧~~ 一次通信流程是: - int sd = socket(AF_INET, SOCK_STREAM, 0)原创 2016-04-15 09:31:06 · 601 阅读 · 0 评论 -
Hierachical token bucket theory
关于HTB原理介绍的两篇文章,很不错,收藏之~~ http://wiki.mikrotik.com/wiki/Manual:HTB http://luxik.cdi.cz/~devik/qos/htb/manual/theory.htm原创 2016-04-28 16:56:47 · 507 阅读 · 0 评论 -
链表的基本操作
记录一下基本的链表操作,主要是增加和删除~~ Code。。。。。struct ListNode { int m_nValue; ListNode* m_pNext;};void AddToTail(ListNode** pHead, int value) { ListNode* pNew = new ListNode(); pNew->m_nValue = v原创 2016-05-11 15:51:15 · 313 阅读 · 0 评论 -
剑指Offer:数值的整数次方
bool g_InvalidInput = false;//注意double float等类型的相等比较bool equal(double num1, double num2) { if ((num1 - num2) > -0.000001 && (num1 - num2) < 0.000001) { return true; } else原创 2016-05-14 15:38:29 · 281 阅读 · 0 评论 -
高性能网络编程5--IO复用与并发编程
原文出处:http://blog.csdn.net/russell_tao/article/details/9111769 作者:陶辉虽然学习网络编程有一段时间了,但是看到这位大神的博文,却发现自己理解的层面过于肤浅,故复制到自己的博客中,以备学习。在此,向原博主表示感谢。原文如下:对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与转载 2016-04-24 08:05:07 · 345 阅读 · 0 评论 -
进程与线程
1.定义 【进程】是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。大小只与处理机的位数有关,一16位处理机的空间大小为216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。单机系统中进程通信有 4 种形式原创 2016-08-22 08:05:01 · 292 阅读 · 0 评论 -
muduo网络库:单例设计
相对于传统的double checkd locking(DCL),其实也是靠不住的~~ 具体原因参考下面的文章: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html陈硕的解法的利用Pthreads库中的pthread_once. 函数原型:int pthread_once(pthread_once_t *原创 2016-08-23 19:05:25 · 472 阅读 · 0 评论 -
剑指Offer:调整数组中的数据
题目是:输入一个整数数组,实现一个函数来调整数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组后半部分。bool isEven(int n){ return (n & 1) == 0; }void Reorder(int *pData,unsigned int length,bool (*func)(int)){ if(pData == NULL || lengt原创 2016-08-25 11:32:50 · 302 阅读 · 0 评论 -
Linux IO 多路复用是什么意思?
写在前面:本源整理与知乎,原文链接为http://www.zhihu.com/question/32163005/answer/55772739,作者:罗志宇 再次向作者表示感谢~~假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做? 那么问题就来了: 很快你就发现空管塔里面聚集起来一大票的空管原创 2016-04-10 16:56:59 · 4361 阅读 · 0 评论 -
CentOS 6.5 LVS + KeepAlived 搭建 负载均衡 高可用 集群
写在前面 本文出处为:http://blog.csdn.net/tengyuantuohai/article/details/19639671,非常感谢这位老兄!!! 本文只用来做一个备份,以防不测。正文 服务器的安装 我们会用到4个服务器,横向分2层:第1层是LVS服务器(1个主,1个从;从可以多个)用来转发请求,需要安装ipvsadm和keepAlived;第2层是提供具体服务的服务器(原创 2017-01-09 20:34:25 · 719 阅读 · 1 评论 -
IO多路复用之select总结
1、基本概念IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器原创 2017-06-19 09:29:26 · 286 阅读 · 0 评论 -
IO多路复用之poll总结
1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数函数格式如下所原创 2017-06-19 10:02:39 · 254 阅读 · 0 评论 -
IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关心的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下: #include <sys原创 2017-06-19 10:07:41 · 284 阅读 · 0 评论 -
shell-一些小问题
1 单词统计: cat words.txt | tr -s ’ ’ ‘\n’ | sort | uniq -c | sort -r | awk ‘{ print 2,2, 1 }’ 结果: f 3 sd 1 ok. 1 Im 1 Ihe 1 hsha 1 fsdjfjsaf 1 fd 1 fas 1 ds 1 asd. 1 2 top K Given [1,1,1,2,原创 2017-11-24 19:42:40 · 278 阅读 · 0 评论 -
在eclipseb编译时链接libevent
先说一下libevent在Ubuntu下的安装,其实也很简单:tar zxvf libevent-2.*.*.tar.gzcd libevent-2.*.*./configure –prefix=/usr makemake install前提是去官网下载,推荐稳定版(学习或者专门找BUG除外~~)http://libevent.org/接下来就是让eclipse在编译是链接到这个库了。需要两原创 2016-03-16 22:36:14 · 1056 阅读 · 0 评论 -
CAS原子操作实现无锁及性能分析
什么是CAS原子操作在研究无锁之前,我们需要首先了解一下CAS原子操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。 大家应该还记得操作系统里面关于“原子操作”的概念,一个操作是原子的(atomic),如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构。原子操作可以是一原创 2015-12-07 13:13:48 · 691 阅读 · 0 评论 -
linux 线程学习之条件变量
互斥锁:用来上锁。 条件变量:用来等待,当条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 1.初始化条件变量pthread_cond_init include <pthread.h>int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任原创 2015-12-24 14:23:25 · 387 阅读 · 0 评论 -
安装libcurl3
使用FTP上传下载文件,需要我们安装一下几个支持库。sudo apt-get install libcurl3sudo apt-get install python-pycurl apt-get install libcurl4-openssl-dev原创 2015-10-23 15:15:56 · 2956 阅读 · 0 评论 -
VSFTP配置
防火墙需要关闭anonymous_enable=NO local_enable=YES write_enable=YES local_umask=000 anon_upload_enable=YES anon_mkdir_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES原创 2015-10-27 10:58:35 · 381 阅读 · 0 评论 -
Linux SO_KEEPALIVE属性,心跳
对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1、连接正常关闭,调用close() shutdown()连接优雅关闭,send与recv立马返回错误,select返回SOCK_ERR; 2、连接的对端异常关闭,比如网络断掉,突然断电. 对于第二种情况,判断连接是否断开的方法有一下几种: 1、自己编写心跳包程序,简单的说就是自己的程序加入转载 2015-11-23 14:21:40 · 465 阅读 · 0 评论 -
setsockopt()改善socket网络程序的健壮性
如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用 closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));如转载 2015-11-23 14:23:11 · 392 阅读 · 0 评论 -
setsockopt设置socket状态
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历 TIME原创 2015-11-23 14:24:22 · 360 阅读 · 0 评论 -
线程池模型:领导者/追随者 半同步/半异步模型
这几天翻了些文章,发现对领导者/追随者模型说的比较少,下面就这个模型打个比方:话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。一般就是有一个山贼在山路口察看,其他人在林子里面睡觉。假如发现有落单的过往客商,望风的山贼就会弄醒一个睡觉的山贼,然后自己去打劫。醒来的山贼接替作望风的事情。打劫的山贼搞定以后,就会去睡觉,直到被其他望风的山贼叫醒来望风为止。有时候过往客商太多,而山贼转载 2015-11-01 13:05:57 · 1471 阅读 · 0 评论 -
条件变量pthread_cond_t
《UNIX环境高级编程》多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白. 1. #include <pthread.h> #include <stdio.h> #include <stdlib.h> pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZ转载 2015-11-01 16:06:49 · 401 阅读 · 0 评论 -
MYSQL 优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,Sql 代码 : select id from t where num is null;可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询:Sql 代原创 2015-11-23 15:33:52 · 299 阅读 · 0 评论 -
pthread_cond_wait()函数的理解
pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了的话,那我们就漏掉了这个条件。因为这个线程还没有放到等待队列上,所以调用pthread_cond_wait前要先锁互斥转载 2015-11-01 16:20:52 · 1219 阅读 · 0 评论 -
centos6.5 FTP服务器的搭建
一、安装VSFTPD服务 安装vsftpd yum -y install vsftpd 启动 service vsftpd start 开启启动 chkconfig vsftpd on 二、vsftp相关命令 启动ftp服务 service vsftpd start 查看ftp服务状态 service vsftpd status 重启ftp服务 service vsftpd re原创 2015-12-14 21:36:30 · 587 阅读 · 0 评论 -
Linux下高并发socket最大连接数所受的限制问题
Linux下高并发socket最大连接数所受的限制问题 1、修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开 文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看 系统允许当前用户进程打开的原创 2015-12-14 21:39:31 · 432 阅读 · 0 评论 -
linux监控程序-程序自动重启方法
1)exec函数把当前进程替换为一个新的进程,新进程由path或file参数指定。可以使用exec函数将程序的执行从一个程序切换到另一个程序;2)fork函数是创建一个新的进程,在进程表中创建一个新的表项,而创建者(即父进程)按原来的流程继续执行,子进程执行自己的控制流程;3)wait 当fork启动一个子进程时,子进程就有了它自己的生命周期并将独立运行,我们可以在父进程中调用wait函数让父进程等原创 2015-12-14 21:44:21 · 581 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419转载 2016-01-03 09:58:51 · 477 阅读 · 0 评论 -
socket编程中的超时设置示例详解之二
操作(send, recv)超时 对它们有两种方式来设置超时, 1. 将send, recv设置成非阻塞模式,然后用select来设置超时机制,就如上面的connect方式一样。 2. 使用setsockopt()函数来设置相应的超时机制。 因为前一种方式在connect中重点说明,本节来主要说明第二种方式。 示例代码如下: 对send和recv进行了超时设置,并最多做四次重试/* *原创 2016-01-03 10:29:29 · 542 阅读 · 0 评论 -
一些常用的宏定义
// 安全释放#define RELEASE_SAFELY(__Pointer) do{[__Pointer release],__Pointer = nil;} while(0)// 屏幕的物理高度#define ScreenHeight [UIScreen mainScreen].bounds.size.height// 屏幕的物理宽度#define ScreenWidth [U原创 2015-12-18 10:13:44 · 352 阅读 · 0 评论 -
巧用宏定义来简写C,C++代码
#include <iostream>#include <string>#include <vector>#include <set>#include <map>using namespace std;class EMA{ public: EMA(string a,string b,string c,string d,string e) {原创 2015-12-18 10:29:37 · 674 阅读 · 0 评论 -
Linux查看物理CPU个数、核数、逻辑CPU个数
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu core...原创 2018-10-25 20:38:01 · 250 阅读 · 0 评论