c语言与服务器
sfdazsdf
这个作者很懒,什么都没留下…
展开
-
Linux 下手动编译动态库(.so)
A shared library (also known as a shared object, or as a dynamically linked library) is similar to a archive in that it is a grouping of object files. However, there are many important differences.The转载 2015-03-26 14:47:01 · 578 阅读 · 0 评论 -
Strace 调试程序
原文:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪转载 2015-07-29 09:21:40 · 521 阅读 · 0 评论 -
Valgrind解决 malloc assert failed 3096
在项目中一个普通的malloc语句调用中,出现malloc的内部assert错误 malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && ol原创 2015-07-13 11:52:32 · 1228 阅读 · 0 评论 -
Linux内核源码分析方法
Linux内核源码分析方法 一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。编程固然重要,但是往往只编程的人很容易把自己局限在自己的知识领域内。如果要扩展自己知识的广度,我们需要转载 2015-06-11 09:22:01 · 450 阅读 · 0 评论 -
利用Linux脚本+命令查看线程统计信息
最近在项目上写了个用于并行计算的线程池工具,遇到了性能瓶颈,于是求助/proc目录查看具体的线程统计数据用以优化程序原创 2015-07-08 11:27:47 · 2500 阅读 · 0 评论 -
两种高性能I/O设计模式(Reactor/Proactor)的比较
原文: http://www.cppblog.com/pansunyou/archive/2011/01/26/io_design_patterns.html这篇文章探讨并比较两种用于TCP服务器的高性能设计模式. 除了介绍现有的解决方案, 还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例), 以及其在不同平台上的微调. 此文还比较了java,c#,c++对各转载 2015-06-09 11:30:09 · 489 阅读 · 0 评论 -
利用tcpdump解决无法收到组播的问题
项目上遇到一个这么的奇怪现象:一个包含有组播地址的对象,只能收到一次组播,不论这个组播是自己发送的还是别的客户端发送的,第二次变无法收到组播。 用tcpdump检查包发现这个对象不论发送多少次组播,底层协议栈只收到了一次组播包 注意第一行ubuntu.local.56752 > 239.0.0.5:12345,这是需要发送的组播地址与端口,从第一行以后再也没收到过相关的包了。在这个发送原创 2015-05-19 14:22:48 · 10086 阅读 · 0 评论 -
Epoll的实现代码浅析
这篇文章写的通俗易懂,特定转来。附上原文地址:https://raw.githubusercontent.com/lijie/kernel-doc/master/comment/eventpoll.c/* * 在深入了解epoll的实现之前, 先来了解内核的3个方面. * 1. 等待队列 waitqueue * 我们简单解释一下等待队列: * 队列头(wait_queue_head_t转载 2015-05-19 09:48:20 · 480 阅读 · 0 评论 -
Linux vmstat命令实战详解
最近需要做服务器压力测试,转一篇合适的命令指引文章,原文: http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.htmlvmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Uni转载 2015-05-21 15:57:02 · 418 阅读 · 0 评论 -
巧妙获取结构体大小
在/sys/un.h中有这么一个宏:#define SUN_LEN(ptr) ((size_t)(((struct sockaddr_un *)0) ->sun_path) + strlen((ptr)->sun_path))这个宏的巧妙之处是在不需要分配内存的情况下可以获取结构各个部分(除了最后一个)的大小如:struct a{ int b; int c; int d;原创 2015-05-11 17:42:01 · 3025 阅读 · 0 评论 -
Eclipse调试出现value optimized out的解决方法
今天在ubuntu上用eclipse调试程序时,发现有许多变量值显示为 value optimized out其实这是因为编译的时候开启了优化选项 -On (n=1,2,3),经过优化后gdb有时候不能正确的显示源代码的某些变量。解决的方法很简单,在调试的时候将编译选项-On 更改为 -O0停止优化,正式出版本的时候再开启优化以提升性能原创 2015-04-16 10:41:03 · 5361 阅读 · 0 评论 -
非阻塞I/O
最近在做服务器上协程的一些工作,遇到了一些问题,在这里分享一下.背景:当我们需要自己在用户空间进行协程的调度的时候,不得不对一些I/O等待型的操作进行特殊的处理,常见的这些操作有:connect/accept, read/write, send/recv等.一种思路便是先用select/poll/epoll对相关的fd进行对应的事件询问,如果fd已经就绪就直接调用库调用,若否则进行调度,例如:原创 2015-03-06 22:32:15 · 613 阅读 · 0 评论 -
负载均衡算法
负载均衡的发展基础就是负载均衡算法。那么针对不同的服务器我们也会采用不同的负载均衡算法,因为他们所具备的和要求的功能各不相同。那么我们现在就来详细了解一下这方面的知识。希望能让大家从中得到需要的东西。服务器负载均衡算法有很多(持续性的和非持续性的),包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法,链路带宽算法等等。此外实际服务器(RealServer)可以被分转载 2015-09-12 11:45:23 · 419 阅读 · 0 评论