乐于学习与分析
以下是在读《深入理解计算机系统》前面的章节“程序的机器级表示”时,自己动手在linux上使用了gdb对一个简单的C程序进行反汇编,通过不懈的努力终于查清楚弄明白了绝大多数的语句。
最近学习Qt,于是安装了一个从Qt官方网站http://qt.nokia.com/downloads上下载的完整的QtSDK,写了一个程序以后发现在QtCreator下,程序可以正常运行,但是当关闭QtCreator后,在DeBug目录下再运行相应的*.
如同互斥量和读写锁一样,条件变量也需要初始化和回收#includeint pthread_cond_init(pthread_cond_t *restrict cond, pthread_condattr_t *restrict attr);int pthread_cond_destroy(pthread_cond_t *cond);互斥量和读写锁解决了多线程访问共享变量产生的竞争问题,那么条件变量的作用何在呢。
上篇文章主要针对新浪微博的授权过程中做了论述,接下来我们学习使用oauth-signpost开源项目进行OAuth认证开发。 结合新浪微博的OAuth认证来说说具体的功能实现,首先罗列一下关键字组,下面四组关键字跟我们接下来OAuth认证有非常大的关系。
最近几天一直在学习新浪微博的授权验证,在论坛上下了个例子,也找到了相关的博客文章。。以为很简单能搞懂,但是费了很长时间,还是一头雾水。。后来想想,其实别人提供的只是一些接口、方法,而我对授权的过程并没有认真的学习过,所以对于代码中那些奇怪的方法倍感陌生。
The following instructions will allow you to create filters for your email client which will au...
一,前言 使用64位体系结构对应用程序的开发者来说,Solaris 64位操作系统和32位操作系统之间的最大差别在于它们使用的C语言数据类型模型。
本来想写一篇来总结一下内存对齐的概念。结果今天在网上就看到了这篇文章。人家总结的挺好,而且还有详细的例子。
"数据的的对齐" 以下内容节选自《Intel Architecture 32 Manual》。
作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 当程序crash的时候,我们可以通过coredump文件,来定位问题。
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 编译内核模块时,一个源文件的Makefile模板到处都是: obj-m := module.
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。
高性能网络I/O框架-netmap源码分析(1) 作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 前几天听一个朋友提到这个netmap,看了它的介绍和设计,确实是个好东西。
作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 前面e1000_probe的分析,按照Linux驱动框架,接下来就该e1000_open。
高性能网络I/O框架-netmap源码分析(3) 作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 前面学习了netmap对e1000网卡驱动的修改,今天开始进入netmap的核心代码。
高性能网络I/O框架-netmap源码分析(4) 作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 前面的文章学习了netmap对驱动的修改,以及netmap的初始化和加载。
高性能网络I/O框架-netmap源码分析(5) 作者:gfree.wind@gmail.com 博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer QQ技术群:4367710 今天继续前面的netmap_ioctl netmap_ioctl 上次分析完了NIOCGINFO和NIOCREGIF两个,剩下的比较简单了。
编辑朋友刘静从人邮图灵转会到机工华章,送了本最近华章重点推荐的《演讲之禅》,上周去河南出差火车上用2个半小时把书读完。“不动笔墨不读书”我在书在扉页上记了些笔记。 作者把事儿写清楚在书里体现知识点并不难,难的是写出智慧、灵气与幽默,Scott Berkun写《演讲之禅》时做到了,认真读来一定会让我们有几次会心的微笑。
关于netlink,相信玩过上层开发的人并不陌生,尤其是经常穿梭于用户空间和内核之间的开发,前面我们说过在用户空间与内核空间的交互有ioctl 、proc 等,而netlink又有它独特的地位和作用.
在多线程程序中,有一种读写者的问题,即对某些资源的访问,存在两种可能的情况,一种是访问必须排他的,称为写操作;另外一种访问是可共享的,称为读操作。 处理读写着问题的两种常见策略是:强读者同步和强写者同步。
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable 总结:这个错误表示资源暂时不够,能read时,读缓冲区没有数据,或者write时,写缓冲区满了。
几乎所有应用程序中都会有内存的分配和释放,而频繁的分配和释放内存无疑会产生内存碎片,降低系统性能,尤其对性能要求较高的程序比较明显。下面介绍几种常见的内存池技术。 一 环形缓存 环形缓存的基本原理如图: 初始化状态...
一、SI信息的构成 1、信息构成 SI信息内容是按照network(网络)→transport strem(传输流)→service(业务)→event(事件)的分层顺序描述,如图1所示。
虽然五年前就学了驱动中poll方法的实现,LDD3的描诉也是比较详细的,但当时我是初学者,理解的不够深入,就算学了也很快就还给了LDD3。这次复习驱动的poll方法,顺便认真跟踪了内核poll系统调用的源码,从整体的poll实现结构上理解了从用户层传递下来的poll系统调用在内核中是的实现。
输入命令会提示:bash: lsof: command not found 该命令存放于/usr/sbin/目录下,可以/usr/sbin/lsof 加参数查询内容。 1.列出所有打开的文件: lsof 备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位2.
概述 本文深入介绍基础的 Linux 进程管理技术。您将学习如何: 创建简单的正则表达式 使用正则表达式搜索文件和文件系统 使用正则表达式和 sed 本文帮助您准备 Linux Professional Institute's Junior Level Administration (LPIC-1) 考试的 103 主题下的 103.7 考核目标。
文件的压缩和解压缩是计算历史上最有用的创造之一,但缺乏可移植性和开放工具是阻碍它发挥其应有作用的最主要的一个障碍。
关于 XZ Utils XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。
基本使用 对于下面这样的一个简单程序test.cpp: int main() { int* p1 = new int; char* p2 = new char[10]; return 0; } 我们的基本需求当然是对于该程序报告存在两处内存泄漏。
1.概述 linux运行在保护模式下,但是当机器启动复位的时候却处于实模式下。所以写bootloader做的工作也是在实模式之下的。
早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。
1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。
Linux 是一个稳定而可靠的环境。但是任何计算系统都有无法预料的事件,比如硬件故障。拥有关键配置信息的可靠备份是任何负责任的管理计划的组成部分。
http://www.ibm.com/developerworks/cn/linux/l-roadmap/part6/index.html 在 Linux 中文件和存储设备的使用与 Windows 中不同。
原文已删除
使用QUdpSocket进行UDP编程 UDP(用户数据报协议)是一个轻量级的,不可靠的,面向数据报的,无连接协议。
网络编程目录 *Qt中有关网络编程的类 *HTTP和FTP高层网络操作 *使用QTcpSocket和QTcpServer进行TCP编程 *使用QUdpSocket进行UDP编程 *使用QHostInfo解析主机名 *对于网络代理的支持 *Bearer Management Support 网络编程 QtNetwork模块提供了我们实现TCP/IP客户端和服务器端的类。
分析QNetworkAccessManager的时候,有一段设定HTTP的请求包的Header,当时没进行深入的分析。
话说昨日走到QNetworkReplyImplPrivate::_q_startOperation(),勾引出QNetworkAccessHttpBackend::open(),今日接着欣赏QT之美丽。
接上面,进一步分析QNetworkAccessManager::createRequest()的实现。
在动手分析前,简单介绍一下HTTP协议。HTTP协议是一种为分布式,合作式,超媒体信息系统。
今天分析QNetworkAccessManager、QNetworkRequest和QNetworkReply组成的高级抽象API序列。
前面分析中,一个问题一直没有解决:新生成的SOCKET是什么时候加入WSASelect()的?另外还有一个不是很大的问题,close流程。
3、读取信息 在QAbstractSocket中,有两个成员是收发数据用的:readData()、writeData() readData()有两种读取方式:有缓冲和无缓冲方式。
前面分析(一)之前没有看QT自带的文档,看了doc之后对QT的网络体系有一个大致的了解: QNatvieSocketEnginePrivate是OS相关的API封装,和QNativeSock...
首先对Windows下的网络编程总结一下: 如果是服务器,其WinSDK调用分别为: WSAStartup() -> socket() -> htons() / htonl() -> bin...
网络编程是个很大的课题,这里只限Windows Socket编程。转一篇别人的文章,仅供参考。
新到公司不久,就遇到经常无线断网的情况。每天断一两次,每次大约持续30s左右。刚开始觉得很简单,以为是无线路由器不稳定,重启哈就行了,这样的情况持续了半个月左右。同事们内心积累的不满终于爆发了,对我的工作表示相当的不满。