自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

耗纸的博客

没事看看书,学学习,扯扯淡

  • 博客(21)
  • 收藏
  • 关注

原创 echoServer-IO复用实现

还有很多问题,等待更新吧,哎,凡事需要自己写一遍,道理谁都懂;写完再和别人的代码对比。#include <stdio.h>#include <stdlib.h>#include <sys/epoll.h>#include <sys/socket.h> #include <netinet/in.h> #include <unistd.h>#include <arpa/inet.h>#i

2017-04-30 16:21:56 406 3

原创 网络编程中的错误( 持续更新中)

明明监听了这个端口,可是netstat查看时,却看不见,查找源代码,错误如下listen_addr.sin_port = htonl(12345);应该调用htons()函数,(笔误呀。。。哎)2

2017-04-30 13:46:03 317

转载 "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法

一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)

2017-04-29 20:54:48 852

转载 有关stdint.h文件

Google C++编程规范的P25页有如下叙述: 按照posix标准,一般整型对应的*_t类型为:1字节 uint8_t2字节 uint16_t4字节 uint32_t8字节 uint64_tstdint.h文件如下/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation,

2017-04-29 15:39:49 5532

转载 安装libevent遇到的问题,error while loading shared libraries: libevent-2.0.so.5,

其实这个问题是应该算通用的问题, 参考以下博客 libevent安装总结 1.先用:ls -al /usr/lib | grep libevent 查看是否已安装,如果已安装且版本低于1.3,则先通过:rpm -e libevent —nodeps 进行卸载。2.下载libevent安装包:libevent-2.0.21-stable.tar.gz,然后解压。如果你的系统已经安装了libev

2017-04-29 13:34:36 3105

转载 Linux中如何卸载已安装的软件

Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。   软件的安装  Linux下软件的安装主要有

2017-04-29 13:27:08 5019

转载 linux md5sum 的用法

在Linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。md5sum是一种计算机程序,用于计算与校验RFC 1321所描述的128位MD5哈希值,此处MD5散列值(或校验和)作一个文件的数字指纹使用。两个不同的文件几乎不可能有相同的MD5哈希值,除非其创建便是刻意为之。一般来说,任何对一个文件的非恶意变更都会导致其MD5哈希值改变,因此md5sum一般用于检查文件完整性,尤其常

2017-04-28 21:41:18 758

原创 <4>:TCP自连接

代码#!/usr/bin/pythonimport errnoimport socketimport sysimport timeif len(sys.argv) < 2: print "Usage: %s port" % sys.argv[0] print "port should in net.ipv4.ip_local_port_range"else: port

2017-04-26 20:20:58 598

原创 <3>:阻塞IO的试验-echo程序

阻塞意味着会阻塞,而且可能永远阻塞, 看下echo的原型,每个线程一个客户端。 代码位置recipes/tpc/{echo.cc, echo_client.cc}测试服务端[root@bogon bin]# ./echo客户端[root@bogon bin]# ./echo_client localhost 1024(1024000,10240000,20488888(20M))可以观察到

2017-04-26 19:47:48 663

原创 <二>:网络编程需要关注的性能

需要注意的性能: 1. Bandwidth MB/S; netcat发的时候就是纯的TCP,没有什么payload,其他工具需要一些分包等等,测出来的带宽会比这小;千兆网的带宽大约117MB/S,这个可以看做是一个上限。 2. 吞吐量(应用层面) 1s能处理多少消息,多少查询,处理多少事务等 Throughput messages/s, queries/s(QPS), trans

2017-04-25 21:09:18 655

原创 <1>TCP带宽测试试验

测试1(dl1->node1(dl1发数据到node1):[david@dl1 ~]$ dd if=/dev/zero bs=1MB count=1000 | nc node1 5001#从/dev/zero中读1MB的数据向node1发送1000+0 records in1000+0 records out1000000000 bytes (1.0 GB) copied, 8.53014

2017-04-25 20:59:17 2051

原创 MKL链接选项问题

最近用下MKL,看了下文档,没看见MKL链接的选项。 关于MKL的链接选型,可以通过如下查看icc -help如下图 可知-mkl就行,至于头文件的话,可以去看MKL的文档,在源文件添加了,以上是icc/icpc的编译器,因此利用使用MKL的步骤如下 1. 源文件添加MKL相应的头文件 2. 编译:icc test.c -mkl(非cluster lib)至于gcc/g++要使用MKL,还需

2017-04-25 11:10:33 5785

转载 CUDA编程的错误处理

转载于CUDA编程的错误处理关于错误处理无论是基于CPU的编程还是基于GPU的编程,当我们调用了一个API运行程序产生了错误,就会导致程序运行结果有悖于理论结果,甚至导致程序崩溃。因此,错误的检测和错误的处理在编程中是极为重要的。当我们能够定位错误的原因,错误的纠正才能更快更准确。Linux C系统编程错误处理我们来回顾一下在Linux系统编程中的错误处理(基于CPU)。在Linux系统编程中,错误

2017-04-21 01:04:37 15157

转载 安装过程中出现PKG_CONFIG_PATH的问题解决方法

转载于安装过程中出现PKG_CONFIG_PATH的问题解决方法 简单实用,这才是好文章呀,在安装开源软件的过程中, 经常会碰到提示配置PKG_CONFIG_PATH路径, 或者直接提示没有安装某某库, 但是我们已经安装了啊。其实造成这种情况的原因很简单, 就是安装的目录不能被依赖程序找到。具体的原理可以网上搜索 configure, pkg-config , PKG_CONFIG_PATH这三者

2017-04-18 15:33:21 2818 1

原创 CUDA Pro Tip: Increase Performance with Vectorized Memory Access

#include <iostream> #include <cuda_runtime.h>#include <cuda_occupancy.h

2017-04-17 11:24:23 526

原创 两种调试死锁的方法

方法1:通过core文件调试死锁步骤: 1. ulimited -c unlimted(打开core,默认没有打开) 2. 运行./a.out(编译的时候加调试选项-g) 死锁阻塞,Ctrl+\ 产生core dump 3. gdb ./a.out core.xxx 4. thread apply all bt查看死锁位置 例子(待续…)#include <stdio.h>

2017-04-16 23:22:50 2019

原创 CUDA提供的函数评估Occupancy

#include <iostream> #include <cuda_runtime.h>#include <cuda_occupancy.h

2017-04-15 18:06:39 1429

转载 CUDA Pro Tip:Write Flexible Kernels with Grid-Stride Loops

见 CUDA Pro Tip:Write Flexible Kernels with Grid-Stride Loops

2017-04-15 16:12:22 653 1

转载 测试C++程序:使用Catch和Valgrind

1.引言最近写python用unittest模块做单元测试,才发现自己过去写C++居然都是手工测试。查了一番资料之后,发现Catch和Valgrind这两个工具可以很好地满足需求。测试C++程序时,我们通常会在意两件事:运行结果是否正确? 是否发生了内存泄漏? 第一件事所有编程语言都需要在意,通常是给程序各种输入,检验输出的正确性,Catch是一个轻巧的单元测试框架,学习起来非常容易; 第二件

2017-04-10 01:04:17 939

转载 vim折叠,分屏,标签切换以及跳转头文件

vim 一共有 5 种折叠方法,依次为手工折叠、缩进折叠、语法折叠、标记折叠、表达式折叠和根据标志折叠。可以通过变量 foldmethod 选择具体的折叠方式,常用的为 syntax 和 indent。分别为根据缩进折叠这根据语法折叠。缩进折叠适用于绝大数的编程语言,特别适用于Python,而对于 C 语言,vim 提供了很好的 syntax folding 支持。set foldmethod=sy

2017-04-04 10:52:29 3541

转载 C语言不定长消息-柔性数组

定义: 柔性数组:数组大小待定的数组。 C语言中结构体最后一个元素可以是大小未知的数组。 C语言可以由结构体产生柔性数组柔性数组的结构如何只能堆上生成 柔性数组是C99的扩展,简而言之就是一个在struct结构里的标识占位符(不占结构struct的空间)C语言柔性数组在游戏前后端交换的过程中,经常会用到变成的消息体,因为有的内容的大小是位置的,例如一条微博,微博的内容大小是未知的。一般的做法

2017-04-03 21:27:12 499 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除