自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

anzhsoft的技术专栏

专注分布式资源管理和大数据处理平台: Since Dec. 2013

  • 博客(104)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++对象模型(五):The Semantics of Data Data语义学

本文是《Inside the C++ Object Model》第三章的读书笔记。主要讨论C++ data member的内存布局。这里的data member 包含了class有虚函数时的vptr和vtable的布局情况。

2014-01-26 21:29:38 9122 2

原创 Linux Debugging(三): C++函数调用的参数传递方法总结(通过gdb+反汇编)

上一篇文章《Linux Debugging:使用反汇编理解C++程序函数调用栈》没想到能得到那么多人的喜爱,因为那篇文章是以32位的C++普通函数(非类成员函数)为例子写的,因此只是一个特殊的例子。本文将函数调用时的参数传递方法进行一下总结。总结将为C++普通函数、类成员函数;32位和64位进行总结。        本文对分析栈溢出导致的coredump十分有益。

2014-01-25 16:46:38 20458 5

原创 Linux Debugging(二): 熟悉AT&T汇编语言

没想到《Linux Debugging:使用反汇编理解C++程序函数调用栈》发表了收到了大家的欢迎。但是有网友留言说不熟悉汇编,因此本书列了汇编的基础语法。这些对于我们平时的调试应该是够用了。    本科时候大家学的基本上都是Intel的8086汇编语言,微软采用的就是这种格式的汇编。GCC采用的是AT&T的汇编格式, 也叫GAS格式(Gnu ASembler GNU汇编器)。1、寄存器命名不同AT&TIntel说明%eaxeaxIntel的不带百分号2、操作数顺序不同

2014-01-24 23:30:29 21310 4

原创 Linux Debugging(一): 使用反汇编理解C++程序函数调用栈

拿到CoreDump后,如果看到的地址都是????,那么基本上可以确定,程序的栈被破坏掉了。GDB也是使用函数的调用栈去还原“事故现场”的。因此理解函数调用栈,是使用GDB进行现场调试或者事后调试的基础,如果不理解调用栈,基本上也从GDB得不到什么有用的信息。本文还可以帮助你深入理解C++函数的局部变量。我们学习时知道局部变量是是存储到栈里的,内存管理对程序员是透明的。通过本文,你将明白这些结论是如何得出的。

2014-01-24 17:23:50 32412 8

原创 存储那些事儿(一):异构虚拟化一种实现SMIS

1. 背景        企业存储是企业信息系统管理很重要的组成部分。企业存储包含了大量的数据,供大量人使用。对于航空系统和金融系统来说,信息存储就更加重要了。 作为企业信息存储,扩展性是非常重要的,因为现在企业对于空间的使用越来越多。          那么一个企业可能会采用其他存储厂商的产品,原来信息如何保留? 使用数据迁移功能(migration),可以将数据转移到其他系统上。但是企业数据数

2014-01-18 21:06:34 15317 12

原创 QT Mobile: 一统IOS/Andriod/WP/等移动平台的江湖

QT5.2原生态支持IOS、Andriod。以后还会支持Windows Phone。多个平台,一套代码,真正做到跨平台。移动开发者的福音来了!!!

2014-01-17 14:38:24 10709 2

原创 IT职场: 选择外企利与弊

IT外企工作氛围好,轻松,人性化,有比较多的培训时间,福利也不错。弊就是调薪幅度每年较固定,比不上互联网企业,这个可能是软件类企业的通病吧,但是想到悠闲的工作也便释然;所做的东西都是比较成熟的,因此可能会一叶障目不见泰山;不可能完全自主的去实现某些功能,很有可能会受限于国外的所谓架构师。

2014-01-17 12:21:58 5195 3

原创 Linux C 下的大文件操作

这里说的大文件指大小超过2G的文件。小于2G的文件,用基础篇和高级篇中的函数都可以打开、读写。大文件的打开:在32位环境下,linux默认打开、读、写超过2G的文件会返回错误。定义如下宏可以突破这个限制,对read/write和fread/fwrite同时有效。注意它必须定义在所有头文件之前。#ifndef _FILE_OFFSET_BITS#define _FIL

2014-01-13 16:23:44 12615 1

原创 Linux 共享内存 详解

一、什么是共享内存区共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可

2014-01-13 14:27:48 12469

原创 The Singularity is Near---预测人工智能,科技走向的神书---奇点临近

比尔盖茨评价本文作者:雷·库兹韦尔是我所知道的预测人工智能未来最权威的人。他的这本耐人寻味的书预测未来信息技术得到空前发展,将促使人类超越自身的生物极限——以我们无法想象的方式超越我们的生命。中文版已经由机械工业出版社出版, amazon 购买衔接这是本人研究生阶段参与翻译的。贴上译者序,让你了解本书,以及成为本书的fans:当人们看到太多相同的时候,也许我们很无知;当

2014-01-07 12:53:08 12930 2

原创 使用github管理你的代码

关于为什么使用github,网上已经有很多讨论了。当然选择还有google code, Bitbucket,sourceforge。github有如下优势:1. github更有利于开源项目的发展source forge并没有充分体现这一点,它更像一个开源软件下载站。至于Google Code,这是个传奇。但是已经被新CEO布林颁布的大扫除政策打死了,属于边缘化业务,Google不会投入新

2014-01-04 22:31:06 12735 2

原创 awk 详解+实例

1. awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想

2014-01-03 10:06:52 13845 4

原创 sed-加速你在Linux的文件编辑

1. Sed简介sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下

2014-01-03 10:01:49 12505 3

原创 工作中常用的Linux命令

1.从其他机器拷贝文件夹格式: scp -r 文件夹名 用户名@机器名:/路径范例: scp -rsearch [email protected]:/home/work/2.查看哪个程序在用特定端口格式: netstat-nap | grep 端口号范例: netstat -nap| grep 80803.实时监控日志文件内容格式:

2014-01-03 09:54:58 12503 4

原创 海量数据:判断一棵树是否为另一棵树的子树

T1是一棵含有几百万个节点的树,T2含有几百个节点。判断T2是否是T1 的子树。首先考虑小数据量的情况,可以根据树的前序和中序遍历所得的字符串,来通过判断T2生成的字符串是否是T1字符串的子串,来判断T2是否是T1的子树。假设T1的节点数为N,T2的节点数为M。遍历两棵树算法时间复杂性是O(N + M), 判断字符串是否为另一个字符串的子串的复杂性也是O( N + M)(比如使用KMP算法)。

2013-12-28 19:35:11 16995 2

原创 检查一个二叉树是否平衡的算法分析与C++实现

今天面试一个实习生,就想既然是未出校园,那就出一个比较基础的题吧,没想到答的并不如人意,对于树的操作完全不熟悉,因此此题算是未作答。原来我想看一下他分析问题的思路,优化代码的能力。接下来会把最近半年我出的面试题整理出来,以来share给其它同事,而来算是自己校园记忆的一个总结,毕竟自己在项目中已经很久未用到这些知识。其实很多题目都是来源于CareerCup.com。这上面汇集了许多IT名企的面试笔

2013-12-28 14:50:11 13166 2

原创 Cracking the Coding Interview:: 寻找有环链表的环路起始节点

给定一个有环链表,实现一个算法返回环路的开头节点。 这个问题是由经典面试题-检测链表是否存在环路演变而来。

2013-12-25 13:07:15 13484 3

原创 C++11:使用 auto/decltype/result_of使代码可读易维护

C++11 终于加入了自动类型推导。以前,我们不得不使用Boost的相关组件来实现,现在,我们可以使用“原生态”的自动类型推导了!C++引入自动的类型推导,并不是在向动态语言(强类型语言又称静态类型语言,是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java;弱类型语言又称动态类型语言,是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译

2013-12-23 18:04:35 18296 1

原创 C++ 仿函数/函数指针/闭包lambda

在上一篇文章中介绍了C++11新引入的lambda表达式(C++支持闭包的实现),现在我们看一下lambda的出现对于我们变成习惯的影响,毕竟,C++11历经10年磨砺,出140新feature,对于我们的programming idiom有深远影响。1) 仿函数wikipedia 的定义:A function object, also called a funct

2013-12-21 17:59:17 16843 2

原创 C++闭包: Lambda Functions in C++11

表达式无疑是C++11最激动人心的特性之一!它会使你编写的代码变得更优雅、更快速! 它实现了C++11对于支持闭包的支持。首先我们先看一下什么叫做闭包维基百科上,对于闭包的解释是:In programming languages, a closure (also lexical closure orfunction closure) is a functio

2013-12-20 17:29:06 24194 6

原创 C++对象模型(四):class成员初始化列表(Member Initialization List)

本文是Inside C++ Object Model Chapter 2 部分的读书笔记。编译器如何处理初始化成员列表的。下列情况中,必须要使用member initialization list进行data member 的初始化:1) 当初始化一个reference member。2) 当初始化一个const member。3) 当调用一个base class 的con

2013-12-09 20:10:17 10695 2

原创 C++对象模型(三):Program Transformation Semantics (程序转换语义学)

本文是Inside The C++ Object Model Chapter 2 部分的读书笔记。是讨论编译器调用拷贝构造函数时的策略(如何优化以提高效率),侯捷称之为"程序转化的语义学"或者说是是关于编译器对于程序是如何进行有效转化或者说翻译,以实现C++的语法机制。主要来说有以下几种Semantics:1) 明确的初始化操作(Explicit Initialization)比如定义

2013-12-09 19:15:55 12941 2

原创 C++对象模型(二):The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为)

本文是 Inside The C++ Object Model's Chapter 2  的部分读书笔记。有三种情况,需要拷贝构造函数:1)object直接为另外一个object的初始值2)object作为函数以值传递的参数3) object以函数返回值形式返回如果class没有提供一个explicit copy constructor时,编译器会以default me

2013-12-08 21:50:07 13070 2

原创 C++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)

本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记。C++ Annotated Reference Manual中明确告诉我们: default constructor会在需要的时候被编译器产生出来。注意,这里是编译器需要,而不是程序需要。后来的C++ Standard 95修改了这种说法,但是实质上仍是相同的: For class X, if

2013-12-08 10:24:30 13390 6

Linux Debugging: coredump 分析的材料

本文是http://blog.csdn.net/anzhsoft/article/details/18762915用到的例子。下载后先unzip,在tar xf

2014-01-27

Linux Debugging: coredump 分析入门的材料

本文是http://blog.csdn.net/anzhsoft/article/details/18762915用到的例子。

2014-01-27

局域网活动主机的C++实现

局域网活动主机的C++实现;及其开发的说明文档,在VC6.0上可以正常编译通过!!!!!!!!这是研究生计算机网络的一个得分90的程序。源码+可执行程序+说明文档

2009-03-08

常见的端口扫描的C++实现

常见的端口扫描的C++实现;及其开发的说明文档,在VC6.0上可以正常编译通过!!!!!!!!这是研究生计算机网络的一个得分90的程序。源码+可执行程序+说明文档

2009-03-08

基于SNMP的网络拓扑发现程序

基于SNMP的网络拓扑发现程序 使用vc.net编写

2008-11-25

计算机网络的帧的封装与解析

计算机网络的帧的封装与解析 可以放送和解析以太网的帧。

2008-10-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除