Menu Home

LINUX网卡(设置千兆网卡速度及模式)

Ethtool命令: 摘要 ethtool ethX #查询ethX网口基本设置 ethtool –h #显示ethtool的命令帮助(help) ethtool –i ethX #查询ethX网口的相关信息 ethtool –d ethX #查询ethX网口注册性信息 ethtool –r ethX #重置ethX网口到自适应模式 ethtool –S ethX #查询ethX网口收发包统计 ethtool –s ethX [speed 10|100|1000] #设置网口速率10/100/1000M [duplex half|full] #设置网口半/全双工 [autoneg on|off] #设置网口是否自协商 [port tp|aui|bnc|mii] #设置网口类型 [phyad N] [xcvr internal|exteral] [wol p|u|m|b|a|g|s|d…] [sopass xx:yy:zz:aa:bb:cc] [msglvl N] 举例 […]

埃拉托斯特尼筛选法

埃拉托斯特尼筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是: 先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。) using std::size_t; using std::sqrt; using std::string; class SieveTest : public TestSuit::Test { string sieveChars; public: SieveTest() : sieveChars(50, ‘P’) {} void run() { findPrimes(); testPrimes(); } bool isPrime(int p) { if(p == 0 || p == 1) return false; int root = int(sqrt(double(p))); for(int i = 2; […]

xlib创建一个openGL简单窗口

void CreateWindow(int width, int height) { XInitThreads(); m_scrWidth = width; m_scrHeight = height; int attr[] = { GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DOUBLEBUFFER, True, GLX_DEPTH_SIZE, 16, None, }; m_dpy = XOpenDisplay(NULL); if (m_dpy == NULL) { cerr << “XOpenDisplay error” << endl; return; } int nelements; GLXFBConfig *fc = glXChooseFBConfig(m_dpy, 0, attr, &nelements); […]

linux下使用C语言生成bitmap

#ifndef SAVEBMP_H #define SAVEBMP_H #include <stdio.h> #include <stdlib.h> typedef long LONG; typedef unsigned char BYTE; typedef unsigned int DWORD; typedef unsigned short WORD; typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BMPFILEHEADER_T; typedef struct { DWORD biSize; DWORD biWidth; DWORD biHeight; WORD biPlanes; WORD […]

vim 使用技巧

多行注释 增加注释 1. ctrl + v 进入可视块选择,使用上下左右键选择需要注释的行 2. shift + i 进入插入模式 3. 输入注释符号 eg. // 4. ESC 取消注释 1. ctrl + v 进入可视块选择,使用上下左右键选择需要取消注释行的注释符 2. d 删除注释符号 折叠代码 vim 提供 6中折叠方式(set fmd=****): manual 手工定义折叠 indent 更多的缩进表示更高级别的折叠 expr 用表达式来定义折叠 syntax 用语法高亮来定义折叠 diff 对没有更改的文本进行折叠 marker 对文中的标志折叠 vim折叠命令: zc 折叠 zC 对所在范围内所有嵌套的折叠点进行折叠 zo […]

linux多线程之pthread_detach

pthread_detach(pthread_self()) linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态, 如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。 若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。 unjoinable属性可以在pthread_create时指定,或在线程创建后在线程中pthread_detach自己, 如:pthread_detach(pthread_self()),将状态改为unjoinable状态,确保资源的释放。或者将线程置为 joinable,然后适时调用pthread_join。(网络资料) pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(pID, &attr, func,NULL); pthread_attr_destroy(&attr); 在func函数中使用: pthread_detach(pthread_self()); //分离thread,释放线程资源