![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX
xcw_user
......
展开
-
Segmentation fault到底怎么回事
转自:https://blog.csdn.net/good123_2014/article/details/48001327(备注:我的glibc版本是2.12,GCC版本4.4.6,内核版本2.6.32-279) Linux上开发时最恼火的就是遇到“Segmetation Fault”错误。为什么这么说,很多人看到这个错误后心里第一反应是程序访问的非法的内存,导致其被操作系统强行终止。...转载 2019-07-20 18:02:46 · 4998 阅读 · 0 评论 -
linux 内核poll/select/epoll实现剖析(原理经典)
转自:https://blog.csdn.net/lishenglong666/article/details/45536611poll/select/epoll的实现都是基于文件提供的poll方法(f_op->poll),该方法利用poll_table提供的_qproc方法向文件内部事件掩码_key对应的的一个或多个等待队列(wait_queue_head_t)上添加包含唤醒函数(w...转载 2018-09-28 19:36:30 · 5103 阅读 · 0 评论 -
Linux内核中网络数据包的接收, 涉及到select/poll/epoll
转自:https://blog.csdn.net/dog250/article/details/50528280与网络数据包的发送不同,网络收包是异步的的,因为你不确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协议栈的两端,即网卡/协议栈边界以及协议栈/应用边界:网卡/协议栈边界:网卡通知数据...转载 2018-09-28 16:12:02 · 864 阅读 · 0 评论 -
epool惊群问题的一个解决方案(利用SO_REUSEPORT)
转自:http://www.verycto.com/code/cpp/15.html 在早些时候,我们是不能在多个子进程中listen、bind同一个socket端口的。通常的做法会在主进程中对端口进行listen、bind,然后把它同时扔进每个子进程维护的epool池中。 在这种情况下,当一个客户端请求来到服务端,会导致多个子进程的epool监听同时被唤醒,这就是我们通常所说的epo...转载 2018-09-28 14:37:53 · 2462 阅读 · 2 评论 -
Linux网络编程“惊群”问题总结
转自:https://www.cnblogs.com/Anker/p/7071849.html1、前言(1)什么是“惊群”,会产生什么问题?(2)“惊群”的现象怎么用代码模拟出来?(3)如何处理“惊群”问题,处理“惊群”后的现象又是怎么样呢?2、何为惊群 如今网络编程中经常用到多进程或多线程模型,大概的思路是父进程创建socket,bind、listen后,通过fork创...转载 2018-09-28 11:29:58 · 192 阅读 · 0 评论 -
epoll惊群原因分析
转自:https://www.cnblogs.com/sduzh/p/6810469.html考虑如下情况(实际一般不会做,这里只是举个例子):在主线程中创建一个socket、绑定到本地端口并监听 在主线程中创建一个epoll实例(epoll_create(2)) 将监听socket添加到epoll中(epoll_ctl(2)) 创建多个子线程,每个子线程都共享步骤2里创建的同一个e...转载 2018-09-28 11:22:10 · 236 阅读 · 0 评论 -
再谈Linux epoll惊群问题的原因和解决方案
转自:https://blog.csdn.net/dog250/article/details/80837278缘起近期排查了一个问题,epoll惊群的问题,起初我并不认为这是惊群导致,因为从现象上看,只是体现了CPU不均衡。一共fork了20个Server进程,在请求负载中等的时候,有三四个Server进程呈现出比较高的CPU利用率,其余的Server进程的CPU利用率都是非常低。中...转载 2018-09-28 11:14:56 · 1808 阅读 · 1 评论 -
负载均衡总结性说明
转自:http://www.cnblogs.com/kevingrace/p/6137881.html 在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?废话不多说,详解如下:一,什么是负载均衡1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强...转载 2018-09-26 16:37:44 · 359 阅读 · 0 评论 -
CSCOPE+VIM使用
一.安装去Cscope的主页在http://cscope.sourceforge.net/下载cscope安装包。解压后进行安装:.#:./configuer#:make#:make install二.使用步骤(1)vim必须先支持cscope,通过#vim --version grep 'cscope'命令来查看是否支持,如果不支持,需要重装vim(2)为代码生成一个...原创 2018-08-20 19:28:00 · 421 阅读 · 0 评论 -
SHELL高级进阶
Shell编程进阶篇(完结)分类: 玩转Linux,运维基本功,Shell编程 转自:https://www.cnblogs.com/clsn/p/8028337.html#auto_id_01.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。 它跟其他的循环,如while...转载 2018-08-23 11:11:27 · 1270 阅读 · 0 评论 -
gdb 调试入门
参考:gdb 调试入门,大牛写的高质量指南:http://blog.jobbole.com/107759/没想到Brendan Gregg这样的大牛,会写出这样一篇gdb tutorials文章:gdb Debugging Full Example (Tutorial): ncurses 。但可能正如文章开头所说,大牛对网上的gdb文章都不太满意,所以才有了这篇高质量指南,gdb入门者的福音...转载 2018-08-18 17:31:45 · 1992 阅读 · 0 评论 -
linux-dup-dup2
dunp和dup2详解转:https://www.cnblogs.com/linuxAndMcu/p/7668138.html正常的文件描述符: 在linux下,通过open打开以文件后,会返回一个文件描述符,文件描述符会指向一个文件表,文件表中的节点指针会指向节点表。看下图:打开文件的内核数据结构dup和dup2两个函数都可以用来复制打开的文件描述符,复制成功后和复制...转载 2018-08-02 08:41:52 · 253 阅读 · 0 评论 -
linux 查询进程 线程CPU消耗
目的:查看线程消耗第一步: top 查看当前消耗最高的CPU , #top如图:查到ORS的CPU消耗最高, 进程号552第二步: 查看当前进程消耗CPU最高的线程可以采用两种方式1 # top -H -p 552 或者ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep ORS前一个命令的结果后一个命令的结果...原创 2018-08-10 16:53:41 · 977 阅读 · 0 评论 -
vs2017+visualGDB
具体参考文章:VisualGDB系列-http://www.cnblogs.com/robinex/p/7887695.html遇到的问题:1:无法在调试中查看变量, 原因可能是gcc和gdb以及gdbserver的版本有差异, 在VisualGDB属性--》Makefile settings-->CFLAGS:添加:-gdwarf-22. 如果动态库不在环境变量搜索目标下, 会...转载 2018-08-09 17:51:29 · 4117 阅读 · 0 评论 -
libuv 高并发异步使用
问题来源: 在开发libuv客户端-服务器时,需要并发的向客户端发送数据,libuv就会用到 uv_write函数,因此,我的初步方案是: 1. 创建线程池; 2. 线程池分配数据内存buf,并打包; 3. 将包发给 uv_write; 4. uv_write_cb 中释放buf; 通过开辟30个线程,发现客户端能正确接收数据,但是无法调用uv_write_cb ,导致内存增加,通过查...原创 2018-04-17 17:15:24 · 13630 阅读 · 10 评论 -
Unix环境高级编程环境搭建
在网上下载书中源代码, 点此连接: 点击打开链接解压文件按cd apue.3emake在 make 的这个过程中一般会出错,后面显示 can’t find -lbsd, 解决办法是添加 libbsd.a 的静态链接库, 指令如下(ub系统) sudo apt-get install libbsd-dev make在编译成功的基础上,开始安装 apue.h 文件...转载 2018-03-23 14:56:40 · 497 阅读 · 0 评论 -
poll两种模式浅析(ET or LT)
转:http://gotowqj.iteye.com/blog/1931556linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式...转载 2018-09-30 09:56:43 · 1080 阅读 · 0 评论 -
Makefile经典教程(掌握这些足够)
转自:https://blog.csdn.net/ruglcc/article/details/7814546/支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个...转载 2018-09-30 10:06:28 · 428 阅读 · 0 评论 -
Bash 脚本 set 命令教程
转自:http://www.ruanyifeng.com/blog/2017/11/bash-set.html?utm_source=tool.lu服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。一、简介我们...转载 2019-07-10 10:42:58 · 164 阅读 · 0 评论 -
网络编程(13)—— 利用信号处理函数signal和sigaction销毁僵尸进程
转自:https://blog.csdn.net/hyman_c/article/details/52771885一、引言上一文中介绍了利用wait函数和waitpid函数来销毁僵尸进程,本文主要介绍利用Linux中的信号处理机制来销毁僵尸进程。linux中的信号处理类似于windows中的消息处理,基本的编程步骤就是先在系统中注册信号和对应的信号处理函数,我们用代码或者 系...转载 2019-07-08 14:21:28 · 645 阅读 · 0 评论 -
Linux之进程组、守护进程
转自:https://blog.csdn.net/happiness_llz/article/details/82749105进程组概念和特性进程组,也称之为作业。BSD于1980年前后向Unix中增加的一个新特性。代表一个或多个进程的集合。每个进程都属于一个进程组。在waitpid函数和kill函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了简化对多个进程的管理。...转载 2019-07-08 14:16:44 · 132 阅读 · 0 评论 -
linux下的守护进程及会话、进程组以及创建步骤
转自:https://www.cnblogs.com/coding-my-life/p/4069633.html 守护进程、会话、进程组网上有许多不错的资料。我也是网上搜罗了一堆,加上自己的理解。不敢说原创,只是写在这怕自己忘记罢了。才疏学浅,难免有错误,欢迎大家指正。下面这篇写很不错,大家可以去看看:http://www.cnblogs.com/forstudy/archiv...转载 2019-07-08 14:07:12 · 436 阅读 · 0 评论 -
CPU Cache 机制以及 Cache miss
转自:http://www.mamicode.com/info-detail-2658407.htmlCPU体系结构之cache小结1.What is cache?Cache是用来对内存数据的缓存。CPU要访问的数据在Cache中有缓存,称为“命中” (Hit),反之则称为“缺失” (Miss)。CPU访问它的速度介于寄存器与内存之间(数量级的差别)。实现Cache的花费介于寄...转载 2019-06-11 11:09:16 · 3118 阅读 · 0 评论 -
Netty 零拷贝(一)Linux 零拷贝
转自:https://www.cnblogs.com/binarylei/p/10053084.htmlNetty 零拷贝(一)Linux 零拷贝本文探讨 Linux 中主要的几种零拷贝技术以及零拷贝技术适用的场景。一、几个重要的概念1.1 用户空间与内核空间操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不...转载 2019-06-11 11:02:05 · 289 阅读 · 1 评论 -
量化交易系统框架
转自:https://www.cnblogs.com/huangfuyuan/category/1290537.html转载 2019-02-22 02:21:17 · 3383 阅读 · 0 评论 -
内存映射文件
具体参见github1 .windows下的使用参考1.1 CreateFileMapping 、MapViewOfFile、UnmapViewOfFile函数用法及示例 转自:https://blog.csdn.net/educast/article/details/84772941.2 内存映射文件,UnmapViewOfFile/MapViewOfFile ...转载 2019-01-07 18:14:46 · 1891 阅读 · 0 评论 -
GCC、头文件查找顺序总结
转自:https://blog.csdn.net/benpaobagzb/article/details/51277960 --------------------------------------------------------------------------------1984年,Richard Stallman发起了自由软件运动,GNU (Gnu's Not Unix...转载 2019-01-03 18:25:09 · 917 阅读 · 0 评论 -
Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf
转自:http://blog.sina.com.cn/s/blog_5623cddb0100e4sq.htmlLD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录...转载 2019-01-03 17:55:51 · 278 阅读 · 0 评论 -
ldconfig命令与ldd命令
转:https://www.cnblogs.com/zhouhbing/p/5109750.htmlldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令 ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.--ldconfig ldconfig 命令的用途,主要是在默认搜寻目录(/lib和...转载 2018-12-07 18:25:27 · 180 阅读 · 0 评论 -
Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
转:https://www.cnblogs.com/kevingrace/p/8072860.htmlLinux下环境变量配置方法梳理(.bash_profile和.bashrc的区别) 在linux系统下,如果下载并安装了应用程序,在启动时很有可能在键入它的名称时出现"command not found"的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了,...转载 2018-12-07 18:24:39 · 143 阅读 · 0 评论 -
GDB关联
1、GDB内幕(http://gnuarm.org/pdf/gdbint.pdf):一本关于GDB内幕的极好的指南。当需要改善源程序时,它非常有用。2、用ptrace追踪进程(http://linuxgazette.net/issue81/sandeep.html):一篇关于在Linux中使用最简单的追踪程序中的例子来进行追踪的论文(在FreeBSD中的情形完全不同)。3、在源程序中修正漏...转载 2018-11-22 16:48:34 · 160 阅读 · 0 评论 -
GDB调试-陈浩
转自:https://blog.csdn.net/haoel/article/details/2881用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长...转载 2018-11-22 16:46:12 · 419 阅读 · 0 评论 -
gdb调试动态链接库
转自:http://www.cnblogs.com/ybgame/archive/2012/03/23/2414078.html 在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上 -g 参数。我这篇文章里将讨论一下用 gdb 来调试动态链接库的问题。首先,假设我们准备这样的一个动态链接库:引用:库名称是: ggg 动态链接库文件名是: libgg...转载 2018-11-23 17:40:00 · 684 阅读 · 0 评论 -
反汇编与逆向分析
使用VS反汇编调试 http://blog.csdn.net/mohan90118/article/details/47334199浅析VS2010反汇编 http://blog.csdn.net/u013467442/article/details/47060261vs中c++的反汇编分析 http://blog.csdn.net/x1779702681/article/detai...转载 2017-04-12 21:04:52 · 448 阅读 · 0 评论 -
CentOS 7安装Gnome GUI 图形界面
http://www.centoscn.com/image-text/config/2015/0528/5552.html转载 2017-06-09 00:01:22 · 461 阅读 · 0 评论 -
libevent
libevent 和 libev 提高网络应用性能 http://www.cnblogs.com/kunhu/p/3632285.htmllinux下libevent的安装和使用例子:数据回显 http://blog.csdn.net/ljp1919/article/details/48163091高性能、高并发TCP服务器(多线程调用libevent) http://blog.csdn.ne转载 2017-05-22 18:37:52 · 342 阅读 · 0 评论 -
gdb调试-dump
gdb结合coredump定位崩溃进程lazycat posted @ 2012年2月02日 09:35 in linux , 18166 阅读 Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位。如何产生core file? 我们可以使用ulimit这条命令对core file文件的大小进行设定。 一般默认情况下,core file的大小转载 2017-03-25 23:47:21 · 670 阅读 · 0 评论 -
Cento 常见错误
安装CentOS 7常见问题http://blog.sina.com.cn/s/blog_6b31e02a0102wi59.html其中Q:gdb Missing separate debuginfos, use: debuginfo-install glibc-2.17-106.el7_2.1.x86_64 安装时可能出现nss-softokn-debuginfo 错误 则使用命令: y转载 2017-03-26 11:11:53 · 198 阅读 · 0 评论 -
Linux 安装cento
在虚拟机中安装CentOS7 http://jingyan.baidu.com/article/eae0782787b4c01fec548535.htmlCentOS 7 下 ifconfig command not found 解决办法 https://my.oschina.net/u/1428349/blog/288708虚拟机下CentOS 6.5配置IP地址的三种方法 http://w原创 2017-03-24 10:01:10 · 319 阅读 · 0 评论 -
UNIX网络编程第一个例子
《Unix网络编程卷1-套接字联网API》第一个例子编译—-可以看看相应 的网络博客 http://blog.csdn.net/lidna242/article/details/47047227《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决 –看看环境编程 http://blog.csdn.net/21aspnet/article/details/6682813在Cen转载 2017-03-24 12:55:09 · 607 阅读 · 0 评论