Linux
文章平均质量分 65
CV_ML_DP
赏cv,ml,dp之美,创其价值
展开
-
Linux性能测试命令系列(4)- netstat
当和端口、socket连接等相关的时候netstat会很好地辅助解决问题,遇到的使用方法如下所示:netstat显示和网络相关的统计信息,比如socket、tcp、udp、路由等相关统计信息。1)列出所有监听端口,即状态为LISTEN状体的端口#netstat -l显示信息会有Active Internet connections (only servers)Pro原创 2016-04-27 00:47:55 · 396 阅读 · 0 评论 -
对scoped_ptr智能指着的实现和测试用例
scoped_ptr1)是一个智能指针,不能用delete销毁它2)scoped_ptr智能指针只能有一份,因为scoped_ptr禁止了对智能指针的拷贝,通过将拷贝构造函数和赋值操作符都private化。3)scoped_ptr保管的原始指针是new出来的在堆上分配的动态对象(此对象的释放,由scoped_ptr来释放)4)scoped这个前缀的含义正是scoped_ptr智能指原创 2016-07-05 23:16:45 · 316 阅读 · 0 评论 -
对shared_ptr智能指针的功能代码实现和测试
见:http://blog.csdn.net/u012421852/article/details/51824749注:突然无法修改上一个博客的题目,只有重写一篇,然后把上篇博客的链接拷贝这里转过去了。原创 2016-07-05 23:26:42 · 320 阅读 · 0 评论 -
线程同步之semaphore信号量,代码实现
一般在任务处理线程池中会有一个公共任务队列m_event_list,任务监视线程有任务添加到m_event_list时,可以通过semaphore.post()增加信号量数来唤醒在semaphore信号量上的睡眠任务处理线程简要代码为:void add_event(Event &e){ m_event_list.push_back(e); m_semaphore.p...原创 2016-07-08 00:19:11 · 7254 阅读 · 0 评论 -
6句话说清楚Leader/Follower线程模型
本文为转载文章,原文地址:6句话说清楚Leader/Follower线程模型========================分割线================================================================上图就是L/F多线程模型的状态变迁图,共6个关键点:(1)线程有3种状态:领导leading,处理proces转载 2016-07-08 20:01:08 · 1231 阅读 · 0 评论 -
线程同步之信号量,代码实现方法2(条件变量+mutex互斥量)
方法1使用了系统semaphore,经过封装完成了信号量的实现,本文章为方法2,使用条件变量 + 系统互斥量mutex实现信号量semaphore,代码如下所示://semaphore.h#ifndef _SEMAPHORE_2_H__#define _SEMAPHORE_2_H__#include using namespace std;typedef unsigned i原创 2016-07-08 21:55:07 · 627 阅读 · 0 评论 -
Linux性能测试命令系列(3)- ps
ps简介:report a snapshot of the current processesps显示瞬间进程的状态,不动态连续top是对进程进行实时监控动态刷新显示统计信息显示指定用户启动的进程#ps -u li_xiaoming#ps x -u li_xiaoming#ps ux -u li_xiaoming常用命令显示所有user的进程(从1原创 2016-04-27 00:11:37 · 591 阅读 · 0 评论 -
【安装工具】设置实现secureCRT 字体、文件、文件夹等不同颜色显示
设置步骤:options->Session Options:设置效果: session重启后,效果如下所示(end)原创 2018-01-23 21:36:07 · 480 阅读 · 0 评论 -
【安装工具】安装Valgrind
valgrind是Linux下一个强大的工具,valgrind其子工具主要有:memcheck(检查众多memory问题)、callgrind(分析program性能)、cachegrind(分析cache)、helgrind(分析多线程竞争问题)、massif(分析堆)等。安装方法1: wget下载valgrind软件包,然后安装。 用此方法安装时原创 2018-01-23 22:09:17 · 1183 阅读 · 0 评论 -
【安装工具】SecureCRT + SecureFX 8.1 Bundle安装注册教程
转自:https://jingyan.baidu.com/article/eae078275917861fec548592.html原文中软件的百度网盘地址:链接:http://pan.baidu.com/s/1hsIjtSK 密码:nzxn以防上面链接失效,自己建立了个百度网盘地址:链接:https://pan.baidu.com/s/1brjOLTP 密码:j1f8亲测转载 2018-01-16 23:00:22 · 3286 阅读 · 0 评论 -
【secureCRT ssh error】The semaphore timeout period has expired
问题:secureCRT登录linux服务器后,过几分钟不操作,出现下面提示后,便无法:方法: $sudo -s #vim /etc/ssh/sshd_config GG到文件末尾,增加下面一行: ClientAliveInterval 60 #reboot,然后就解决问题了。(end)原创 2018-01-23 22:48:41 · 11094 阅读 · 3 评论 -
【安装工具】linux安装gcc-4.8.2.tar.gz
链接:https://pan.baidu.com/s/1smRLGQx 密码:dgr21 #wgethttp://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz2 #tar -xf gcc-4.8.2.tar.gz3 #cd gcc-4.8.24 #./contrib/download_prerequisites (原创 2018-01-23 15:58:37 · 10283 阅读 · 0 评论 -
【多线程】多线程C++实现UDP IPv4 Server Trunk(V2_1.0)--增加epoll机制
前期版本文章:【多线程】多线程C++实现UDP IPv4 Server Trunk(V1_1.0)前期版本文章链接: http://blog.csdn.net/u012421852/article/details/79173208本期文章update trunk,版本是V2_1.0: V2_1.0相比V1_1.0,增加了epoll机制实现了server端的io复用,提高了server...原创 2018-02-02 16:48:11 · 362 阅读 · 0 评论 -
【多线程】多线程C++实现UDP IPv4 Server Trunk(V1_1.0)
udp ipv4 server trunk工程代码: 链接:https://pan.baidu.com/s/1kWoI2jH 密码:yzzlserver功能和实现机制: 1)./a.out 1.1.1.1 12345,支持指定server ip和server port 2)多线程处理三种事件:接收数据到队列,显示队列数据,接收用户输入数据并发送给对端客户端原创 2018-01-27 10:09:08 · 1459 阅读 · 0 评论 -
【UDP】C简单实现UDP IPv4 Client (V1_1.0)
为了配合测试一些功能,实现了一个简单的只有纯周期发送功能的udp client。#include #include #include #include #include #include #include #include #include time_t rawtime;struct tm* timeinfo;char timeBuf[25] = {0原创 2018-01-26 11:27:43 · 569 阅读 · 0 评论 -
【多线程】C++自实现适用于多线程的原子消息队列
这些是3年前都自实现的,现在记录起来,以防忘记丢失,以便后续查阅使用。代码: xinclude.h文件:#ifndef _XINCLUDE_H_#define _XINCLUDE_H_//include#include #include #include #include #include #include #include #inclu原创 2018-01-27 11:13:24 · 1648 阅读 · 0 评论 -
【多线程】C++实现原子计数器 for Pthreads
在多线程环境下要计数,需要保证:计数变量的一致性和线程安全才能保证多线程环境下计数正确。原子计数正是提供了此需求的功能,保证计数操作未执行完毕时绝不会被其他任何实务或事件打断,下面是原子计数器 for pthreads缺点:使用锁的形式实现原子计数时锁的操作会比计数器的加减操作的消耗大很多,可以通过linux自带的性能检测工具perf命令查看哪些操作消耗多。#ifndef原创 2016-05-09 23:21:08 · 1883 阅读 · 0 评论 -
自己实现的C++智能指针的功能代码和测试用例
1)C++,智能指针的相关知识请 wwww.baidu.com2)智能指针有很多功能点,不同项目可能需要的智能指针的功能点不一样多,所以人人实现的C++智能指针可能是不一样的。但是:智能指针的最基本的功能点还是必须要遵守的。3)今天趁着晚上的时间实现了C++ 智能指针的功能代码和测试用例,以下是实现代码。代码经过测试,可能编译通过和测试通过。代码中一定存在缺陷部分,请指出。4)注1原创 2016-07-05 00:20:14 · 987 阅读 · 0 评论 -
ulimit命令
ulimit命令是查看或者设置当前用户或者进程使用资源的阈值。上面的各个阈值都可以使用自己对应的选项来显值,比如:上面中比较常用的有:1)core file size,即进程产生core文件时的最大size,这里的显示为0,表示进程不能生成core,为了让进程异常退出时可以生成core文件,就需要设置core file size数值为不大于0的正整数。一般设置为unli原创 2016-07-03 01:48:25 · 1816 阅读 · 0 评论 -
程序的double free测试(使用env MALLOC_CHECK_=1 ./a.out)
1. 下面给出一个写好的会产生double free的程序:如果运行的话会出现Aborted(core dumped)的程序异常退出。和flint、valgrind一样可以在完成功能编码后用flint、valgrind、env命令先对功能代码就行flint测试、valgrind测试、双重释放测试再进行gtest测试、自动化测试会提高测试成功率。env检测功能代码原创 2016-07-03 01:09:19 · 1691 阅读 · 0 评论 -
atexit函数:注册终止处理程序
功能:注册终止处理回调函数注:最多可注册32个终止处理回调函数,回调函数的调用和注册次序相反。原型:int atexit(void (*function)(void))#include 示例:#include #include using namespace std;void on_exit1(void){ cout<<__FUNCTION__原创 2016-04-17 21:35:56 · 532 阅读 · 0 评论 -
批量kill进程/线程
Step1:背景介绍今天在进行epoll性能测试时,测试模式为C/S模式,Server:为接收端,每接收一个connSock连接,就fork一个child-process处理这个连接上的数据接收Client:为发送端,内部建立多个连接到Server的socket-fd,然后注册到epoll,通过epoll多路复用机制实现每个连接的发送测试时Server会一直运行Clie原创 2016-04-19 23:51:54 · 3105 阅读 · 0 评论 -
linux,server/client,可直接挪用
近来再做性能测试时,基于C/S模式,记录下Server/Client的模块代码,可直接挪用。server和client遇到异常退出或者Ctrl+C被退出时,各自都可以安全清除所有的socket fd和断开所有的链接。原创 2016-04-20 23:31:52 · 358 阅读 · 0 评论 -
多线程安全计数器
在做性能测试时,需要统计运行一段时间内库使用锁的次数、获取时间戳的次数等。在做这些库范围内的某个动作的次数统计时,如果库内是多线程且动作在多个线程内都出现。可以使用下面的多线程安全的计数器/// Counter.h#ifndef __COUNTER_H__#define __COUNTER_H__#include "Mutex.h"class CCounter{原创 2016-05-06 22:36:20 · 1264 阅读 · 0 评论 -
实现内存池MemoryPool(加了互斥锁的内存池实现:pthread_mutex_t + m_memory_pool)
在前面一篇用线程私有数据TSD实现了线程间无竞争的内存池,因为每个线程都会有自己的私有key对应的私有线程池,所以每个线程之间使用的内存池不会有任何竞争。文章地址:实现一个线程安全的内存池(使用线程私有数据机制TSD来实现)本篇文章使用公共内存池和系统锁pthread_mutex_t进行内存池的同步,所以本篇实现的内存池因为使用了公共内存池和锁,所以当有多个线程同时申请内存时,会产原创 2016-07-09 23:08:45 · 1460 阅读 · 0 评论 -
operator new之错误处理函数new_handler
就像可以用atexit来注册main的退出处理函数一样,我们也可以用std::set_new_handler来注册operator new的错误处理函数。当operator new无法满足某一内存分配需求时,operator new会抛出异常。但是当operator new无法满足某一内存分配需求而抛出异常之前,会先调用一个用户指定的错误处理函数,即所谓的new-handler。即原创 2016-07-10 19:52:33 · 1245 阅读 · 1 评论 -
operator new之签名式new/delete(signature operator new/delete)
日常开发过程中,有想要替换编译器提供的operator new/delete,替换一定是有合理理由的。其中的一个可能就是:用来检测运行上的错误。new和delete导致的错误:1)如果对new的内存进行delete时失败,会导致内存泄漏memory leaks。2)如果对new的内存进行多次delete,则会导致无法想象的结果。人为编程导致的错误:1)"overruns":写入原创 2016-07-10 23:22:41 · 394 阅读 · 0 评论 -
operator new之non-member operator new固守规则
non-member opertor new:void* operator new(std::size_t size) throw(std::bad_alloc);non-member operator new的常规有:1)入参size为0时,也返回一个合法的指针2)分配内存失败时必须调用operator new的错误处理函数new_handler3)如果new无法分配size原创 2016-07-10 23:59:48 · 479 阅读 · 0 评论 -
operator new之被Drived Class继承
对于operator new操作符有一个容易被忽略的特性:operator new成员函数会被derived class继承!定制operator new的一个常见理由就是为了针对所在class的对象分配行为提供最优化,而不是为了其derived class。下面先讲解下CBase *base = new CBase();的都执行了哪些接口:step1:如果定制原创 2016-07-12 00:32:19 · 691 阅读 · 0 评论 -
operator new之placement new/delete
如果operator new接受的参数除了一定会有的那个std::size_t之外还有其他,这便是所谓的placement new 众多placement new版本中特别有用的一个是“接受一个指针指向对象该被构造之处”,如下所示:void* operator new(std::size_t size, void* pMemory) throw(); 此版本的operato原创 2016-07-13 00:16:33 · 261 阅读 · 0 评论 -
operator new之避免覆盖标准形式的new/delete的“模板”类
由于成员函数的名称会覆盖外围(比如基类的、或外围namespace)的同名函数,即使参数列表不相同。所以应该必须避免让class的定制operator new/delete覆盖了外围同名函数new/delete下面的“模板”类,可以解决同名函数new/delete被覆盖的问题,其他类可以通过继承此基类即可。class CStdNewDelete{public: /原创 2016-07-13 00:38:40 · 975 阅读 · 0 评论 -
实现一个线程安全的内存池(使用线程私有数据机制TSD来实现)
本文只给出功能代码,后续文章进行内存池相关知识的简介。#ifndef __BLUESKY_THREADSAFEMEMORY_H__#define __BLUESKY_THREADSAFEMEMORY_H__///编译时请执行 $g++ -c ./ThreadSafeMemory -o tsm.o -lpthread///使用pthread_once系列函数时,编译时要添加-lp原创 2016-07-01 23:52:13 · 2023 阅读 · 0 评论 -
处理SIGPIPE信号
以前在做使用C/S模式测试时,自己写了个基于TCP的C/S模式ToolKit,实际测试时出现了SIGPIPE信号,即管道损坏问题导致强制退出问题。1)server write data to client2)clint read data from serverTCP有自己的四次握手关闭机制,使得每次TCP连接的对象是全双工通信。测试过程的操作表现有:client<----------sck...原创 2016-07-02 08:23:20 · 917 阅读 · 0 评论 -
安装VBox共享文件增强功能VBoxGuestAdditions
以前常用的安装VBox共享文件增强功能,博客记录下,以备查用。预备:VBox版本:5.0.6, r103037debian版本:debian-8.3.0-i386-CD-1.iso增强版本:VBoxGuestAdditions_5.0.6.isoStep1:进入root权限$su - //进入root权限terminalStep2:安装V原创 2016-04-17 11:35:54 · 4270 阅读 · 0 评论 -
Linux性能测试命令系列(5)- strace
功能:trace system calls and signalsstrace能够跟踪进程使用的系统调用,并显示调用过程信息。本文章只给出比较常用的命令。注:(1)a.out表示要被strace跟踪的用户可执行程序,(2)`pidof ./a.out`表示要被strace跟踪的正在运行的a.out对应的进程PID(3)由于操作起来很简单,暂时不给出测试用例。1)跟踪原创 2016-07-02 12:36:47 · 411 阅读 · 0 评论 -
Linux性能测试命令系列(6)- 用strace查看给定命令是标准错误输出(2)还是标准输出(1)
1. 什么样的shell命令才能后面直接使用通道“|”在使用通道的时候,如$ ls | grep "a.out",当中的的"|"就是使用了通道pipe,是由系统完成了ls的输出 作为grep的输入,由于|接收的是来自标准输入流作为自己的输入,所以ls的输出是标准输出(1)。 从这可以知道,如果在shell命令终端要将一个COMMOND的输出作为|的输入,就需要分类情况,如下所示:情况1:如原创 2016-07-03 00:43:30 · 1403 阅读 · 0 评论 -
【安装工具】安装vim配置文件vimrc
下载:vimrc.zip文件永久链接: 链接:https://pan.baidu.com/s/1dzkep4 密码:0prowindows传wimrc.zip到linux: 方法二选一,1)linux侧rz命令,2)windows侧SecureFX工具步骤: $sudo -s #cp vimrc.zip ~/ #cd ~/ #unzip vimrc.zip(end)...原创 2018-01-24 10:13:35 · 983 阅读 · 0 评论