
【Linux应用开发】
文章平均质量分 89
轻飘风扬
有较强的团队合作精神,学习能力较强,善于学习新技术,为人乐观积极做事有耐心,能够在较强的压力下工作,有较强的适应能力,真诚温和,做事踏实,有较强的动手能力
展开
-
linux下overcommit_memory的问题
背景公司的redis有时background save db不成功,通过log发现下面的告警,很可能由它引起的:[13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue a...转载 2019-07-18 11:28:28 · 2588 阅读 · 0 评论 -
内存池设计及实现参考资料
利用默认的内存管理函数new/delete或malloc/free在堆上分配和释放内存会有一些额外的开销。系统在接收到分配一定大小内存的请求时,首先查找内部维护的内存空闲块表,并且需要根据一定的算法(例如分配最先找到的不小于申请大小的内存块给请求者,或者分配最适于申请大小的内存块,或者分配最大空闲的内存块等)找到合适大小的空闲内存块。如果该空闲内存块过大,还需要切割成已分配的部分和较小的空原创 2014-05-14 14:13:14 · 1627 阅读 · 0 评论 -
C语言中巧用正则表达式 regex_t
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(),一般分为三个步骤,如下所示:转载 2013-06-20 13:49:46 · 13207 阅读 · 0 评论 -
SSL握手通信详解及linux下c/c++ SSL Socket(另附SSL双向认证客户端代码)
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 安全证书既包含了用于加密数据的密钥,又包含了用于证实身份的数字签名。安全证书采用公钥加密技术。公钥加密是指使用一对非对称的密钥进行加密或解密。每一对密钥由公钥原创 2014-03-11 22:02:14 · 34045 阅读 · 6 评论 -
C语言单元测试
CUnit下载地址: http://sourceforge.net/projects/cunit/CUnit 在线文档帮助:http://cunit.sourceforge.net/doc/index.html 关于CUnit, 本文主要从介绍三方面的内容:1.CUnit的介绍。1.1 介绍如何使用CUnit。CUnit是一个对C语言编写的程序进行单元测试的框架原创 2014-03-20 23:37:33 · 6139 阅读 · 0 评论 -
Ubuntu 下创建deb安装包及离线安装包制作。
当重装系统或者安装虚拟机时没有必要重新在网上下载,可以按以下方法制作ubuntu的离线安装包 平时在使用ubuntu过程中下载的工具的安装包都会保存在/var/cache/apt/archives文件夹中,把它备份到/home/hjw/edgy/文件夹 1.安装必要的软件包dpkg-dev sudo apt-get install dpkg-dev原创 2014-03-31 16:48:30 · 4130 阅读 · 0 评论 -
openssl相关介绍
1、 OpenSSL相关命令(for Linux)2、用C++编译 Openssl Engine及分享一个Openssl Engine模板框架 3、openssl中关于engine的部分代码分析 4、在Linux环境下使用OpenSSL对消息和文件进行加密原创 2014-03-17 21:18:08 · 1875 阅读 · 0 评论 -
详细讲解Linux启动流程及启动用到的配置文件及脚本
《一》:详解Linux启动流程及需要使用到的配置文件POST加电自检-->BIOS(Boot Sequence)->MBR(bootloader)->Kernel->initrd->rootfs(/sbin/init) 下面对每个启动流程做详细解释:POST(加电自检) 计算机本身不执行任何程序,所以系统必须要完成自举的过程,在CPU的控制下,将RAM芯片转载 2014-03-16 11:18:23 · 2755 阅读 · 0 评论 -
Linux C语言调用C++动态链接库
如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明,那么你如何用c调用呢,C++创始人在编写C++的时候,C语言正盛行,他不得不让C++兼容C。C++最大的特性就是封装,继承,多态,重载。而这些特性恰恰是C语言所不具备的。至于多态,核心技术是通过虚函数表实现的,其实也就是指针。而对于重载,与C语言相比,其实就是编译方式不同而已: C++编译方式和C编译方式。对于函数调用,原创 2014-03-10 22:56:32 · 10113 阅读 · 1 评论 -
获得Unix/Linux系统中的IP、MAC地址等信息
获得Unix/Linux系统中的IP、MAC地址等信息实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在原创 2013-09-16 14:18:14 · 3657 阅读 · 0 评论 -
线程的取消模式
posix的线程有两中取消模式,立即取消和延迟取消.立即取消是你调用pthread_cancel的时候,不管线程当前正在干什么,马上被结束掉.延迟取消是在你调用pthread_cancel以后,线程运行到一个取消点函数的时候才会结束.使用pthread_join函数挂起当前线程后,想取消挂起,因此试着用了 pthread_detach函数,必须把pthread_detach放在pthr原创 2013-09-03 15:20:29 · 2285 阅读 · 0 评论 -
线程池创建及使用案例及调试函数assert()断言调试介绍
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 p原创 2013-08-10 10:51:37 · 2218 阅读 · 0 评论 -
Thread-Local Storage for C99
线程本地存储(TLS)是一种机制,通过这种机制进行变量分配,在每个现存线程都有一个实例变量。这种运行模型GCC用来实现这个,起源于IA-64处理器,但是已经被迁移到其他的处理器。它需要大量的支持连接器(ld)、动态连接器(ld.so)和系统库(libc.so和libpthread.so),所以不是到处都可用的。 在用户层,一个新的存储类扩展关键字:__thread.例如:__thread in翻译 2014-10-23 09:31:15 · 2341 阅读 · 0 评论 -
Linux下图形界面调试工具kdbg安装及测试
1、Ubuntu系统下安装 Ubuntu系统安装比较方便,直接apt-get就行apt-get install kdbg2、centos 安装 首先,在这个地址下下载rpm包。然后使用rpm命令安装http://pkgs.org/centos-5/centos-x86_64/kdbg-2.0.2-1.2.1.x86_64.rpm.html yum inst原创 2014-10-23 22:26:37 · 7917 阅读 · 0 评论 -
startx 及xinit 介绍
1 xinit在说明startx之前,我想我们应该先了解一下xinit。因为startx就是通过调用xinit启动X的。1.1 功能当我们安装了Ubuntu后,默认就已经安装了xinit,它位于/usr/bin下。xinit是一个二进制文件,并非是一个脚本。它的主要功能是启动一个X服务器,同时启动一个基于X的应用程序。1.2 用法xinit的用法为:xinit [[clie原创 2014-10-16 15:18:45 · 13414 阅读 · 0 评论 -
Linux系统管理员应该知道的journalctl知识
在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的日志。基础用法1.1 查看所有日志(默认显示本次启动的所有日志)[root@devops-101 ~]# journalctl查看本次启动的所有日志也可以使用[root@devops-...转载 2019-07-18 11:25:18 · 945 阅读 · 0 评论 -
Centos 7.4 设置共享文件夹
VMware Tools 工具安装1.VMware Workstation菜单栏中,选择“虚拟机”,”安装VMware Tools…“。2.挂载VMware Tools安装程序到/mnt/cdrom/。mkdir /mnt/cdrommount /dev/cdrom /mnt/cdrom看到…mounting read-only,表示挂载成功。3.解压安装VMware Tools。...原创 2019-04-08 09:19:35 · 2084 阅读 · 0 评论 -
利用linux的mtrace命令定位内存泄露(Memory Leak)
1、安装mtrace工具centos : sudo yum install glibc-utils2、mtrace工具使用/************************************************************************* > File Name: mtrace.c > Author: jinshaohui > Mai...原创 2018-11-09 14:06:38 · 2944 阅读 · 0 评论 -
linux使用back trace打印函数调用栈,捕捉段错误
在大型项目开发过程中,经常遇到一些段错误问题或者查询是哪个函数调用了当前函数。通过代码排查手段太费时了,下面利用函数库打印出段错误时刻的函数调用栈,很容易找到代码异常之处。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈int backtrace(void **buffer,int size) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放...原创 2018-10-13 12:52:47 · 4123 阅读 · 0 评论 -
最值得关注的10个C开源项目
开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到6原创 2015-09-13 11:14:13 · 10640 阅读 · 7 评论 -
linux C 实现HTTP get 及post 请求
前段时间,帮朋友实现linux C实现HTTP get 及POst请求,最原先打算使用libcurl库实现。但是考虑到和其他接口通信的情况,暂时使用C 来实现.代码可以自动解析URL连接,具体看下面代码:/*File : http.h *Auth : sjin *Date : 20141206 *Mail : 413977243@qq.com */#ifndef _MY_HTTP_H#原创 2014-12-06 17:05:18 · 38359 阅读 · 14 评论 -
使用trickle限制网络上传和下载速度
使用trickle限制网络上传和下载速度 yum install trickleTrickle如何工作? Trickle通过控制socket数据读写量来控制和限制应用的上传/下载速度。它使用另一个版本的BSD套接字API,但是区别是trickle还管理socket调用。要注意的是trickle使用动态链接和加载,所以它只对于使用"Glibc库"的程序有用。由于trickle可以设置数据在socke原创 2015-01-10 15:16:02 · 6344 阅读 · 0 评论 -
linux C 实现FTP客户端
****************************************************************************************我已参加2014“博客之星的”评选,觉得我的文章对您有帮助的,请投上您宝贵的一票************************************************************************原创 2015-01-10 11:07:20 · 11633 阅读 · 12 评论 -
Ubuntu14.04系统设置
1、开机画面紫框问题修复 参考文章:https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1289809 $ cat /lib/plymouth/themes/ubuntu-logo/ubuntu-logo.grub if background_color 44,0,30; then clear fish原创 2014-12-05 10:07:30 · 3555 阅读 · 0 评论 -
Ubuntu 下配置无线网络
Ubuntu环境下,配置无线网络,下面是一个脚本:#!/bin/shset -eNETWORK_INTERFACE="/etc/network/interfaces"WIFI_CONFIG="/etc/wifi_config.conf"if [ $# -ne 2 ]then echo "input parameters number error" echo "example:"原创 2014-12-02 14:38:20 · 3802 阅读 · 0 评论 -
ubuntu设置开机启动图形应用程序,替换默认图形桌面
一、前言无论你想要在ubuntu 12.04(11.10适用)开机启动图形程序,或者非图形程序,相信这篇文章能帮上大忙。我将根据我的需求讲解我的做法,并解释为什么这么做。完了以后,各位看官根据自己的需求不加修改或稍加修改即可适用。我这边,总得来说,需求是做一个RDP瘦客户端,在一个板子上装上ubuntu 12.04,然后要这个系统启动后能立即弹出RDPclient登录框,而不是进入ubuntu的图转载 2014-10-20 22:36:31 · 2741 阅读 · 0 评论 -
pthread_once()使用(某个时间在整个程序中仅执行一次,不确定是那个线程)
在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread_once)会比较容易些。int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));功能:本函原创 2013-09-02 17:11:47 · 19063 阅读 · 0 评论 -
使用gdb调试当前运行的程序
使用gdb调试当前运行的程序http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-hans http://blog.youkuaiyun.com/wfing/archive/2010/09/17/5890382.aspx http://bl转载 2013-08-08 11:56:35 · 1892 阅读 · 0 评论 -
/etc/sysctl.conf 参数说明
sysctl 是一个用来在系统运作中查看及调整系统参数的工具。有的 sysctl 参数只是用来回报目前的系统状况,例如回报目前已开机时间、所使用的操作系统版本、核心名称等等;而有的可以让我们修改参数以调整系统运作的行为,例如网络暂存内存的大小、最大的上线人数等等。而这些可以调整的参数中必须在一开机系统执行其它程序前就设定好,有的可以在开机完后任意调整。 kernel.shmall = 20转载 2013-03-04 17:01:17 · 2151 阅读 · 0 评论 -
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
1、函数realloc 函数简介: 原型:extern void *realloc(void *mem_address, unsigned int newsize); 语法:指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新的大小一定要大于原来的大小,不然的话会导致数据丢失! 头文件:#include 有些编译器需要#in原创 2013-02-20 21:14:11 · 5987 阅读 · 0 评论 -
如何调试makefile变量
对于Makefile中的各种变量,可能是我们比较头痛的事了。我们要查看他们并不是很方便,需要修改makefile加入echo命令。这有时候很不方便。其实我们可以制作下面一个专门用来输出变量的makefile(假设名字叫:vars.mk)vars.mk@echo '$*=$($*)'d-%:@echo '$*=$($*)'@echo ' origin = $(origin $转载 2013-02-18 15:06:21 · 1698 阅读 · 0 评论 -
精简Makefile
如果在Linux下玩不转Makefile,那你真out了,这应该是Makefile较为精华的部分,难得共享。 一、一个简单通用的Makefile例子1.编写源文件5个源文件:A.c B.c C.c D.c main.c5个头文件:A.h B.h C.h D.h main.h在同一目录,不同目录下,如果目录多,一般用autotools生成M转载 2012-12-19 18:04:23 · 1805 阅读 · 0 评论 -
如何实现虚拟机与主机window的文件共享
安装samba,实现Ubuntu和windows文件共享答 : 本地安装: 1.成功安装samba软件包下的所有软件包 2.备份现有的配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 3.打转载 2012-12-13 14:55:38 · 2310 阅读 · 0 评论 -
线程的分离状态 pthread_attr_setdetachstate 函数使用
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况转载 2012-09-27 09:23:17 · 12881 阅读 · 0 评论 -
UDP和TCP 协议
共同点: 都是传输层的协议不同点: TCP: 是面向连接的可靠性传输 UDP: 无连接、不保证可靠行传输 1 TCP 协议的特点: TCP (传输控制协议)是一种面向连接的传输层协议,它能提供可靠性通信(即 数据无丢失、数据无误、无数无失序、数据无重复性到达) 一般适用于对传输质量要求较高以及传输大量数据的通信,在需要保证原创 2012-08-12 23:29:46 · 1369 阅读 · 0 评论 -
linux 网络编程基础
一、网络体系结构 网络体系结构是指网络的层次结构和每层所使用的协议的综合。 两类非常重要的体系结构:OSI与TCP/IP二 OSI (open syserm interconnection)开放系统互联模型 OSI模型的七层分别进行以下的操作: 第一层:物理层 负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的原创 2012-08-12 23:07:14 · 1454 阅读 · 0 评论 -
Linux下文件属性
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.youkuaiyun.com/mr_raptor/article/details/6844692++++++++++++++++++++++++++++++++++++++++++ 当我们用ls –l filename,这个shell转载 2012-07-23 22:11:46 · 1309 阅读 · 0 评论 -
标准IO库函数的简单介绍(2)
1 fgets 与 gets 函数的区别: 1)两个函数都指定了缓存的地址,读入的行将送入其中,gets()是从标准输入中读取,而fgets()则从指定的流中读取 2)对于fgets()函数,不许指定缓存的大小,此函数一直读到下一个换行符为止,但是不会超过N-1个字符,读入的字符被送入缓存后以 NULL结尾。 如果被送入缓存的数据,总后一个新行符的字符数超过N-1,则返原创 2012-07-19 23:19:55 · 1714 阅读 · 0 评论 -
标准IO中函数的学习
1、打开流 下列三个函数可用于打开一个标准I / O流。************************************************************************************#include FILE *fopen(const char * p a t h n a m e, const char *t y p e) ;FI原创 2012-07-17 22:40:29 · 1568 阅读 · 0 评论 -
Linux查看硬件信息以及驱动设备的命令
用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)查看CPU信息:cat /proc/cpuinfo查看板卡信息:cat /proc/pci查看PCI信息:lspci (相比cat /proc/pci更直观)查看内存信息:cat /proc/meminfo查看USB设备:cat /proc/bus/usb/devices查转载 2013-03-08 09:20:43 · 2012 阅读 · 0 评论