![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 66
le119126
这个作者很懒,什么都没留下…
展开
-
linux下进程间通信
1.文件2.文件锁3.管道pipe和命名管道FIFO4.信号5.套接字system V6.消息队列7.共享内存8.信号量posix9.互斥量10.条件变量11.读写锁转载 2015-04-07 10:38:08 · 641 阅读 · 0 评论 -
epoll EPOLLONESHOT 事件
eppll 即使使用ET模式,一个socket上的某个事件还是可能被触发多次,采用线程城池的方式来处理事件,可能一个socket同时被多个线程处理如果对描述符socket注册了EPOLLONESHOT事件,那么操作系统最多触发其上注册的一个可读、可写或者异常事件,且只触发一次。。想要下次再触发则必须使用epoll_ctl重置该描述符上注册的事件,包括EPOLLONESHOT 事件。例子:原创 2015-06-04 17:20:09 · 6765 阅读 · 2 评论 -
linux服务器检测工具
1. iostat 查看io状态和CPU状态 :http://www.orczhou.com/index.php/2010/03/iostat-detail/推荐:深入理解iosta、http://www.ha97.com/4546.html$iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间...转载 2015-08-21 17:10:04 · 936 阅读 · 0 评论 -
linux系统缓冲机制
1、缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程...转载 2015-09-17 11:06:37 · 1510 阅读 · 0 评论 -
tcp的关闭(shutdonw、close、SO_LINGER选项)与 连接断开情形判断
1.close只是减少引用计数,只有当引用计数为0的时候,才发送fin,真正关闭连接shutdown不同,只要以SHUT_WR/SHUT_RDWR方式调用即发送FIN包2.对方关闭读,再对其写,写端会收到rst,再写收到sigpipe3.SO_LINGER对shutdown无影响原创 2015-10-21 10:29:35 · 3217 阅读 · 1 评论 -
构造函数、初始化列表的调用顺序
#include using namespace std;class ParentA{public:ParentA(){cout }~ParentA(){cout }};class ClassB{public:ClassB(int b){cout }~ClassB(){cout }};原创 2015-03-22 20:58:10 · 955 阅读 · 0 评论 -
leetcode 91: Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total numb原创 2015-08-02 16:59:00 · 410 阅读 · 0 评论 -
多线程下的信号处理
参考APUE1.同一个进程下的所有线程共享 信号的处理方式,所以一个线程改变对信号的处理方式,那所有线程如果收到该信号都会是那样处理的2.sigprocmask用于但线程的进程中阻止信号发送,但是在多线程的进程中并没有定义线程必须使用pthread_sigmask.如果有的线程可以屏蔽了某个信号,而某些线程可以处理这个信号,则当我们发送这个信号给进程或者进程中不能处理这个信号的线程原创 2015-08-28 16:45:57 · 1162 阅读 · 1 评论 -
父子进程与父子线程退出分析
Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我一直认为怀疑是人类进步的根本所在。一、线程Linux线程创建函数为pthread_create(),默认规则是谁创建子线程,谁就要负责子线程转载 2015-08-01 11:40:53 · 2933 阅读 · 0 评论 -
leetcode - 3Sum Closest (kSum Closest)
Sum ClosestGiven an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would原创 2015-06-05 22:06:13 · 577 阅读 · 0 评论 -
leetcode - 3Sum ( kSum )
转自:http://tech-wonderland.net/blog/summary-of-ksum-problems.html(中文旧版)前言:做过leetcode的人都知道, 里面有2sum, 3sum(closest), 4sum等问题, 这些也是面试里面经典的问题, 考察是否能够合理利用排序这个性质, 一步一步得到高效的算法. 经过总结, 本人觉得这些问题都可以使用一个通用的K s转载 2015-06-04 20:05:22 · 508 阅读 · 0 评论 -
套接字 中 shutdown与close区别
1. int shutdown ( int s , int how )how=0 关闭接收端,unix下会刷新输入队列,丢弃在tcp/ip 栈中的应用程序还未读到的数据,如果还有新数据到来,tcp会进行ACK确认,但是数据也还是会丢弃,反正应用程序将收不到数据,即使已经到达了内核。windows下会重置连接。(套接字 用how=0 shutdown,如果再对他进行读操作,返回EOF)ho原创 2015-06-04 16:53:56 · 1429 阅读 · 2 评论 -
windows、linux 字节对齐
《深入理解计算机系统》中写到 linux下 2字节类型的数据的地址必须是2的倍数,4,8字节类型的数据的地址必须是4的倍数;,windows n个字节类型的数据的地址必须是n的倍数但是我在64位的linux上,发现double是8字节对齐;k字节对齐,则结构体总大小要是k的倍数,不够的末尾补齐#include #include #include /* 32位原创 2015-04-21 11:44:51 · 1830 阅读 · 0 评论 -
Linux线程属性、线程局部变量总结
转自 http://blog.csdn.net/zsf8701/article/details/7842392//线程属性结构如下:typedef struct{ int etachstate; //线程的分离状态 int schedpolicy; //线程调度策略转载 2015-04-13 15:09:13 · 5912 阅读 · 0 评论 -
linux传递文件描述符
http://blog.csdn.net/linuxdianc/article/details/5048189在进程之间经常遇到需要在各进程之间传递文件描述符的情况,例如有一种设备它在加电期间只能打开一次,如果关闭后再次打开就会发生错误。这时就需要有一个调度程序,它调度多个相同设备,当有客户端需要此类型的设备时会向它发送一个请求,服务器会把某个设备的描述符给客户端。转载 2015-04-06 12:06:42 · 2206 阅读 · 0 评论 -
线程进程通知
进程线程的等待通知:pipe :单向socketpair:双向eventfdeventfd 是一个比 pipe 更高效的线程间事件通知机制,一方面它比 pipe 少用一个 file descripor,节省了资源;另一方面,eventfd 的缓冲区管理也简单得多,全部“buffer” 只有定长8 bytes,不像 pipe 那样可能有不定长的真正 buffer。线程转载 2015-03-04 10:50:03 · 763 阅读 · 0 评论 -
linux c 多线程
一。线程同步原创 2014-08-08 17:03:33 · 788 阅读 · 0 评论 -
linux启动过程
转自:http://blog.chinaunix.net/uid-26495963-id-3066282.htmlhttp://www.ruanyifeng.com/blog/2013/08/linux_boot_process.htmlhttp://book.2cto.com/201305/23674.html启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载转载 2015-10-16 11:01:31 · 459 阅读 · 0 评论 -
linux自动挂载NTFS格式移动硬盘
转自:http://blog.163.com/cmh_lj/blog/static/100812304201252522119264/由于移动硬盘还有不少的资料,刚插入移动硬盘的时候发现只能自动挂载FAT/FAT32格式分区,按照以往的经验,安装NTFS-3G先。 首先在http://www.tuxera.com/community/ntfs-3g-download/找到最转载 2015-11-21 15:43:14 · 4277 阅读 · 0 评论 -
windows下硬盘安装CentOS或RedHat双系统
参考:Windows_7硬盘安装CentOS_71.准备一个要安装centos的分区,不必格式化成fat32,在“我的电脑”-“管理”-“磁盘管理” 中直接删除该分区-centos会默认找到它安装在该分区,当然安装的时候可以自己选2.将centos的iso文件存放在fat32格式的某个分区根目录下,我所有的分区都是ntfs的,所有把iso文件放到了一个fat32的u盘里3.将iso文件原创 2015-11-16 21:21:10 · 782 阅读 · 0 评论 -
muduo源码分析:互斥锁、条件变量、倒计时封装
互斥锁封装:Mutex.hMutex类:对pthread_mutex_t 封装,提供了lock 、unlock 、是否被当前线程锁了isLockedByThisThread 、assertLocked 四个方法MutexLockGard类:通过传递Mutex引用,在构造函数中对其加锁,析构中对其解锁----RAII(资源的地点是构造函数,释放点是析构函数)#ifndef MUDUO_原创 2015-12-07 20:44:14 · 766 阅读 · 0 评论 -
muduo源码分析:日志相关类(1)
1.stringPiece 类:当字符串来用统一 char * 字符串 和 std::string 。通过char *字符串 或者 string作参数 传递 字符串 ,形参为stringPiece类型,就不会有内存拷贝stringPiece 只有两个变量const char* ptr_; //字符串首地址int length_; //字符串长度其实 形参原创 2015-12-23 21:08:12 · 1038 阅读 · 0 评论 -
muduo源码分析:数值原子类封装和gcc提供的原子性操作
// 原子相加操作,先获取值*ptr加上value,返回原来的值type __sync_fetch_and_add (type *ptr, type value) // 原子比较和交换(设置)操作type __sync_val_compare_and_swap (type *ptr, type oldval ,type newval) //先判断*ptr是否等于oldval,如果相原创 2015-12-03 16:15:55 · 745 阅读 · 0 评论 -
muduo源码分析:异常类封装
Exception::what() 返回出错信息Exception::stackTrace() 返回出错时的调用栈实现:#includebacktrace,栈回溯,保存各个栈帧的地址backtrace_symbols,根据地址,转成相应的函数符号#include abi::__cxa_demangle :将编译修改过后的函数符号转化为原始代码中的函数符合原创 2015-12-06 18:51:55 · 550 阅读 · 0 评论 -
vim配置(C/C++)
set nocompatibleset nufiletype onset history=1000set background=darksyntax onset autoindentset smartindentset tabstop=4set shiftwidth=4set showmatchset guioptions-=Tset vb t_vb原创 2014-12-11 11:16:25 · 1042 阅读 · 0 评论 -
线/进程所持有资源以及子线/进程所继承资源
1.线程和进程的关系线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。2、线程和进程间的比较 子进程继承父进程的属性:转载 2015-12-05 17:03:44 · 1440 阅读 · 0 评论 -
linux下设置显示器对比度
在没有安装显卡驱动的情况下如何设置对比度?命令如下:xgamma -gamma 0.70其中数值的范围为:0-10.00但该命令重启后就会失效,因此需要在用户变量下添加该命令,即在用户目录下任意含有“.bash”字样的文本内添加命令,如下操作:vi /home/username/.bash 在尾部添加:xgamma -gamma 0.70转载 2015-12-03 14:38:23 · 2922 阅读 · 0 评论 -
muduo源码分析:线程类Thread封装
线程idLinux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而原创 2015-12-06 21:15:29 · 1594 阅读 · 0 评论 -
linux 系统睡眠.休眠命令
命令操作systemctl reboot重启机器systemctl poweroff关机systemctl suspend挂起-睡眠-保存在內存systemctl hibernate休眠-断电-保存在硬盘systemctl hybrid-sleep混合休眠模式(同转载 2015-11-28 14:35:13 · 15267 阅读 · 0 评论 -
构建C1000k服务器
一.修改最大打开文件数1.修改系统总共最大打开文件数在 /etc/sysctl.conf 文件末尾添加:fs.file-max = 1020000或者永久修改,*表示所有用户,可以改成某个用户名编辑 /etc/security/limits.conf 文件, 加入如下行:# /etc/security/limits.conf* hard nofile原创 2015-11-27 15:16:51 · 3209 阅读 · 0 评论 -
Linux内核参数的优化(Nginx)
《深入理解Nginx》-陶辉由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能。在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作为静态Web内容服务器、反向代理服务器或是提供图片缩略图功能(实时压缩图片)的服务器时,其内核参数转载 2015-11-27 16:25:14 · 502 阅读 · 0 评论 -
RedHat&CentOS 安装谷歌浏览器chrome 与创建桌面快捷方式
1。安装参考 http://jingyan.baidu.com/article/4b52d702790ddcfc5c774b17.html2.。桌面快捷方式在桌面创建 chrome.desktop 文件在文件中写入:[Desktop Entry]BinaryPattern=chrome;MimeType=Name=chromeExec=/usr/bin/原创 2015-11-21 14:47:27 · 3902 阅读 · 1 评论 -
yum安装已经下载的包以及只下载不安装
安装已经下载好的rpm包以我从google chrome官网下载的:google-chrome-stable_current_i386.rpm 为例,如果在终端运行以下命令(文件需要绝对路径):yum localinstall /home/panbin/Software/google-chrome-stable_current_i386.rpm当执行以上命令时,会转载 2015-11-19 15:32:12 · 6638 阅读 · 0 评论 -
centos redHat 64位linux 安装iNode客户端
centos_Error: Protected multilib versions_解决方法yum install libc.so.6Loaded plugins: fastestmirror, refresh-packagekitRepository base is listed more than once in the configurationRepository upda原创 2015-11-20 19:10:23 · 2365 阅读 · 0 评论 -
sudo: ulimit: command not found
转:http://stackoverflow.com/questions/17483723/command-not-found-when-using-sudo-ulimit临时修改某用户(非root)的最大打开文件数ulimit is a shell builtin like cd, not a separate program.sudo looks for a binary转载 2015-11-22 11:18:53 · 9424 阅读 · 0 评论 -
muduo源码分析:线程池类ThreadPool
线程池包括成员变量:一个任务队列:deque queue_,用条件变量同步线程组:ptr_vector threads_bool running :标志是否start启动了,或者stop 停止了成员函数:start:初始化线程数目stop:停止线程池take:从queue中获取任务runInThread:线程执行函数 :循环 调用 take 获取任务,并执行原创 2015-12-09 22:01:23 · 2210 阅读 · 0 评论 -
linux下UDP编程
1.UDP数据包接收时,应用层的socket的接收buf如果小于到达包的大小,那buf中就只存储可接收的大小,这个包余下数据会被丢弃,再也收不到。2.recvfrom返回0 ,并不代表对方关闭socket,对方可以发送0个长度空包3.如果客户端没有先使用connect设置通信的对方地址 a。那必须使用sendto 、recvfrom b。即使服务器没有开,sendt原创 2015-04-05 21:44:52 · 674 阅读 · 0 评论 -
写sfss时遇到的问题
1.控制输入字符串的长度 fgets(admin,NAME_LENGH,stdin); if(admin[strlen(admin)-1]=='\n') admin[strlen(admin)-1]='\0'; fflush(stdin);//The ANSI/ISO standard specifies that fflush() is useful onl原创 2014-05-14 15:53:56 · 779 阅读 · 0 评论 -
Linux服务器中的程序规范和技巧
摘自用 TCP/IP 进行网际互连原创 2014-06-30 22:17:04 · 576 阅读 · 0 评论 -
linux c 信号处理
一. 产生信号Sys/types.h signal.ha) Int kill(pid_t pid ,int sig)给相应的进程或者进程组发送信号 b) int raise(int sig) 给当前进程自己发信号;成功返回0,失败返回非0 c) unisd.h unsigned in原创 2014-06-10 22:10:26 · 679 阅读 · 0 评论