Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

从一个实例来认识GDB与高效调试

从一个实例来认识GDB与高效调试

GDB的全称是GNU project debugger,是类Unix系统上一个十分强大的调试器。这里通过一个简单的例子(插入算法)来介绍如何使用gdb进行调试,特别是如何通过中断来高效地找出死循环;我们还可以看到,在修正了程序错误并重新编译后,我们仍然可以通过原先的GDB session进行调试(而不需要重开一个GDB),这避免了一些重复的设置工作;同时,在某些受限环境中(比如某些实时或嵌入式系统),往往只有一个Linux字符界面可供调试。这种情况下,可以...
C语言调用C++类成员函数的方法

C语言调用C++类成员函数的方法

最近做了一个wav格式的音频播放器,界面部分用Qt实现,中间层代码使用C语言实现,这就涉及到C和C++相互调用的问题。C++调用C语言的方法在另一篇文章中已经说明(见 http://www.linuxidc.com/Linux/2016-11/137072.htm),C调用C++的方法现做如下介绍。音频播放的时候中间层代码需要将音频的播放进度和状态等信息反馈给界面程序进行显示,但是主程序是用c++写的,通过接口函数调用c中间层代码进行相应操作并完成相应的功...
对Linux 多路复用Epoll模型的水平出发模式和边缘触发模式的理解

对Linux 多路复用Epoll模型的水平出发模式和边缘触发模式的理解

水平触发通知又叫“低速模式”,是linux epoll模型的默认方式。对于此方式《Linux/Unix系统编程手册(下册)》中的解释是:如果文件描述符上可以非阻塞地执行I/O系统调用,此时认为它已经就绪。对此,我的理解是:某个I/O实践就绪,例如,文件缓冲区收到了5个字节的数据,此时此文件描述符可读,触发epoll可读事件。但是如果就绪的文件描述符是非阻塞的(也就是说中途可以被打断),当读取三个字节的时候被别的事件打断了,下次仍然触...
S5PV210编译安装内核初体验

S5PV210编译安装内核初体验

所用平台:飞凌嵌入式OK210内核版本:Linux-2.6.39交叉编译链版本:4.3.3u-boot:板子自带的1.3.4版,通过SD卡烧录虚拟机环境:RedHat5准备工作:1、配置虚拟机环境在虚拟机中点击工具栏中”编辑->虚拟机网络编辑器”选择桥接模式,将虚拟机网卡桥接到本机的”以太网“接口修改虚拟机的IP 为192.168.2.24在虚拟机中通过servicenetwork restart 重新...
内核模块指定参数方式

内核模块指定参数方式

内核模块的参数传递方式很多,第一次尝试仅仅介绍了 指定普通类型和数组类型内核模块指定参数方式定义内核参数变量普通变量 : module_param(变量名,变量类型,访问许可掩码) 数组变量 : module_param_array(name, type,&num,perm) 关于数组长度变量num需要说一下,num保存数组的长度变量的地址,方便别的地方调用,而数组的长度由数组初始化的时候指定。内核支持的模块参数类型 bool 布尔型 invboo...
Log4j容器初始化探究

Log4j容器初始化探究

Log4j容器初始化探究Log4j第一步就是初始化Logger容器Repository,这一章我们来探究Logger容器,从别从独立应用以及servlet容器下启动初始化两方面探究。1 独立应用静态初始化,java语言保证静态初始化只被执行一次,静态初始化源码在LogManager中。时序图:初始化流程:第一步: LogManager获取配置文件的URL第二步: OptionConverter获取Configurator实现类(配置类)第三步: Confi...
Android活动的生命周期

Android活动的生命周期

掌握活动的生命周期对任何Android开发者来说都非常重要,Android中的活动是可以层叠的,我们每启动一个洗的活动,就会覆盖在原活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来。其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Task),栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,他会在返回栈中入栈,并处于栈顶位置,而每...
Linux 服务器模型小结

Linux 服务器模型小结

当我们用socket进行编程的时候,细节上都是选择一个AF_LOCAL,AF_INET再根据相应的类型填充地址,其实根据通信需求,有几种简单的服务模型可供选用,掌握了这些框架再结合socket高度的抽象,可以为我们编写简单的服务器程序提供指导循环服务用户请求服务需要排队,服务器一次只能服务一个客户,服务完才能对下一个客户进行服务。ATM机就是这个1vs1模型。udp服务器也经常使用这个模型//模型伪代码main{//获得侦听文件描述符listenfd=so...
Java并发编程之CAS

Java并发编程之CAS

CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单,接下来,让我们跟深入的了解一下这项技术。CAS的使用场景在程序和算法中一个经常出现的模式就是“check and act”模式。先检查后操作模式发生在代码中首先检查一...
OpenCV调用摄像头录像并保存下来

OpenCV调用摄像头录像并保存下来

网上很多都说录制了之后视频文件为0k,或者是打不开。其实,这个原因主要与2方面有关: 1. OpenCV生成的视频的编码格式有关。 2. 非法退出录取有关(我用200次循环解决。或者可以用Timer。或者用其他键处理)我个人推荐的解决方法如下:1.下载一个XviD编码器并安装。2.用以下代码进行测试:#include "cv.h"#include "cxcore.h"#include "highgui.h"#include <iostream&g...
OpenCV实现人脸检测例程

OpenCV实现人脸检测例程

前段时间看的OpenCV,其实有很多的例子程序,参考代码值得我们学习,对图像特征提取三大法宝:HOG特征,LBP特征,Haar特征有一定了解后。对本文中的例子程序刚开始没有调通,今晚上调通了,试了试效果还可以,还需要深入理解。值得大家动手试试,还是很有成就感的,虽然是现成的例子.......环境:OpenCV3.1+VS2013+WIN10/*!* file Capture.cpp** author ranjiewen* date 十一月 2016*htt...
Linux tcp传输黏包解决方案

Linux tcp传输黏包解决方案

tcp/ip协议使用"流式"(套接字)进行数据的传输,就是说它保证数据的可达以及数据抵达的顺序,但并不保证数据是否在你接收的时候就到达,特别是为了提高效率,充分利用带宽,底层会使用缓存技术,具体的说就是使用Nagle算法将小的数据包放到一起发送,但是这样也带来一个使用上的问题——黏包,黏包就是说一次将多个数据包发送出去,导致接收方不能进行正常的解析,示意图如下:发生黏包一般有两种原因,一种是发送方进行了不该缓冲的缓冲,比如上图中,收...
C# Lambda表达式详解

C# Lambda表达式详解

概要今天我想给大家说道说道 C# lambda表达式,不废话,下面开始说道!lambdalambda是什么,它不是是什么,它只是一个语法糖,看着简单明了,写起来简单,对于开发人员可读性好,还有就是省劲儿!重点来了:lambda就是委托的实现方法的简单写法切记,切记,只要记住这句话,所有lambda表达式都好理解!什么不理解,不理解啊很正常,咱们看的例子就一下明白了。using System;using System.Collections.Generic;...
<< 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 >>