自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

imJaron的博客

锲而舍之, 朽木不折; 锲而不舍, 金石可镂

  • 博客(47)
  • 收藏
  • 关注

转载 使用 Merge 语句实现表数据之间的对比同步

表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等。包括在 SSIS Package 中也可以通过 Lookup, Condition Split 等多种 Task 的组合来实现表数据之间的同步。在这里 "同步" 的意思是指每次执行一段代码的时候能够确保 A 表的数据和 B 表的数据始终相同。可以通过 SQL ...

2018-03-30 17:23:54 695

转载 SQL Server中Text和varchar(max) 区别

SQL Server 2005之后版本:请使用 varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型,而不要使用 text、ntext 和 image 数据类型。Microsoft SQL Server 2005 中引入了 max 说明符。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。varchar(ma...

2018-03-29 14:44:51 429

转载 CentOS minimal安装和开发环境部署

服务器开发大多都需要linux操作系统,这里一步步讲下linux安装和开发环境部署一、下载安装镜像文件  这里以安装CentOS-6.3-i386-minimal为例,这个自带安装软件最少,简单而小巧,偏于你了解安装和部署开发环境,所以选择这个版本,作为linux开发者,熟悉命令行界面是最基本的。镜像文件下载地址:CentOS-6.3-i386-minimal.iso(想要吗?猛戳这里!)。这里选...

2018-03-27 13:25:42 508

转载 笨鸟先飞学编程系列之九-C++的模板编程

当我们越来越多的使用C++的特性, 将越来越多的问题和事物抽象成对象时, 我们不难发现:很多对象都具有共性。 比如 数值可以增加、减少;字符串也可以增加减少。 它们的动作是相似的, 只是对象的类型不同而已。C++ 提供了“模板”这一特性, 可以将“类型” 参数化, 使得编写的代码更具有通用性。 因此大家都称模板编程为 “通用编程”或 “泛型编程”。一般而言, 模板分为 函数模板 和 类模板,下面就...

2018-03-26 21:46:59 349

转载 笨鸟先飞学编程系列之 指针

是啊,不可避免的,我们要学习指针了。关于指针的概念,我们已经在第一章节 理解程序中的数据 课题中大概的介绍过了,我想它并不是一个很难的概念,如果对指针没有任何一点概念的朋友可以试着百度一下,再看一下我们以前的章节。        之所以把指针放到现在来讲,一方面是因为,到现在我们所学的知识,可以允许我把一个完整的指针及其相关的知识展现给大家而不需将一个知识点打乱到各个别的章节中;再一方面就是我们接...

2018-03-26 21:33:04 218

转载 笨鸟先飞学编程系列之四 内存操作

编程序,几乎无时无刻不在使用内存,我们使用变量,调用函数,申请空间存放我们的数据,都是在对内存进行操作。 在上一个函数专题中,我本想一并讲下栈内存的使用和局部变量的定位,但由于程序的BUG几乎都是内存的误操作(主要是没有检查)引起的,所以我把相关内存操作的东西都放在这个专题中跟大家讨论。希望这个专题能给像我一样菜的朋友一定的帮助而不是浪费大家的时间。一、       简介在一个程序中,内存被分成几...

2018-03-26 17:43:17 586

转载 从汇编的眼光看C++(之递归函数与模板类)

递归,相信有过基本C语言经验的朋友都明白,就是函数自己调用自己。所以,本质上说,它和普通的函数调用没有什么区别。今天之所以会把模板类和递归联系在一起,是因为我们可以用递归的方法实现模板的递归。闲话不多说,我们先从一个统计函数开始说起。[cpp] view plain copyint process(int m)  {      int index = 0;      int count = 0; ...

2018-03-26 16:43:40 146

转载 用汇编的眼光看C++(之缺省模板、特化模板)

缺省函数是C++的一个基本特色。缺省函数定义比较简单,也就是说,对于函数的某一个输入参数或者几个输入参数,如果你没有特定的数值的话,那我们就会用缺省的数据进行代替。如果你在调用的过程中使用了自己的数据,那么缺省数据将被我们自己定义的数据覆盖。下面就是一个缺省函数的示例:[cpp] view plain copyint  add(int m, int n = 10)  {      return m...

2018-03-26 16:38:10 221

转载 从汇编的眼光看C++(之delete内存泄露)

有过C语言编程的朋友大多知道,如果在malloc内存之后不及时free掉内存,那么很有可能会造成内存泄露的。那么在C++上面,是不是也存在这样的问题呢?结果是C++上面同样也存在内存泄露的危险。这个危险就是如果new后面不能delete的话,也会造成内存的泄露。还有不清楚的朋友可以看看下面的示例:[cpp] view plain copyclass test  {      int data;  ...

2018-03-26 16:11:26 162

转载 从汇编的眼光看C++(之指针拷贝)

指针是编程人员的梦魇,对C语言的开发者是如此,对C++的开发者也是如此。特别是在C++中,如果不注意处理类中的指针,非常容易出问题。如果朋友们不相信可以看看下面的代码:[cpp] view plain copyclass data  {      int* value;  public:      data(int num){          if(num > 0)            ...

2018-03-26 15:32:00 160

转载 用汇编的眼光看C++(之算术符重载陷阱)

在算术符重载里面,“=”重载可能是最经常使用的一种。但是好多人就误以为在函数中,凡是类出现“=”的地方,那就是调用算术符重载,其实不然。为什么呢?我们可以看看下面的代码。首先,我们定义一个基本类:[cpp] view plain copyclass data  {      char* value;      int number;  public:      explicit data(int ...

2018-03-26 15:22:49 118

转载 用汇编的眼光看C++(之算术符重载)

算术符重载是类的有一个特性,但是每个人使用的方法不一样。用的好,则事半功倍;但是如果不正确的使用,则会后患无穷。    (1) 简单算术符介绍    那什么是算术符重载呢?我们可以举个例子。一般来说,我们定义两个int类型的变量的话,我们就可应对这两个类型进行加、减、乘、除的操作,同时还能比较判断、打印、数组操作、*号操作等等。那么如果我们想自己定义的类也具有这样的属性,那我们应该怎么办呢?当然就...

2018-03-26 15:08:49 128

转载 VS2012下通过MAP追踪异常代码的位置

[cpp] view plain copy#include "stdafx.h"    double DivideBy (double dividend, double divisor)      {      double retVal = dividend / divisor;      return retVal;      }    int _tmain(int argc, _TCHAR*...

2018-03-25 21:37:25 459

转载 用汇编的眼光看C++(开篇)

 很多朋友,包括我自己在内,对C++语言的很多特性不是很明白。特别是几年前找工作的时候,为了应付来自工作单位的考试,我经常逼着自己的去记住一些复杂的试题和答案。可是常常时间已过,一切又回到了原点。原来没有弄清楚的问题还是没有弄明白,一切都没有发生改变。直到若干年后,当我在编码过程中不断积累经验,尝试用汇编代码和内存数据来解释一些现象的时候,才明白有些东西其实并不复杂。也许有的朋友对汇编语言会有畏惧...

2018-03-25 19:50:50 175

转载 c++实现的一种代码膨胀变形壳

主要实现3个功能:1.代码膨胀2.代码变形3.对地址常量包括字符串常量进行加密代码膨胀:代码膨胀无非就是指令等价替换,不过这里没条指令最好能有多个膨胀规则,这样会加大还原难度。原始程序大小为6kb,经过5次混淆后,大小变为66kb.混淆前代码:混淆后代码:从上图会发现有大量的垃圾代码生成。说一下代码变形:1.有分支跳转改成无分支跳转。在逆向分析时主要是通过条件跳转来确定函数的流程,根据跳转的目标地...

2018-03-25 15:03:49 1267

转载 堆栈平衡:估计这是最详细的讲解堆栈平衡的了

[cpp] view plain copy#include <stdio.h>  #include <stdlib.h>  #include <string.h>  #include <windows.h>    int ShowEsp(int* arg1,int* arg2);    /* 引言 各种面试宝典上都会说 又说栈在进程空间的高地址部分,...

2018-03-25 14:58:27 6263

转载 “破解大牛是怎么炼成的”之壳与ESP定律

一、前言通过前面几篇的学习,我们学会了利用暴力破解达到绕过注册机制和追踪注册码来达到“合法”用软件的方法,但是我们往往会遇到代码经过混淆器混淆的程序,此类混淆器可以称之为壳,壳又可分为压缩壳(常见的有UPX、北斗、ASDPack、Npack、PECompact等)和保护壳(如强壳Safengine、VMprotect、winlicense、Themida等),压缩壳作用是把程序进行体积缩小化处理,...

2018-03-25 14:45:51 652

转载 笨鸟先飞学编程系列之二 基础代码的编写

通过上次课题的讲述,相信大家一定对什么是数据及数据的定义和使用方法有一定的了解了,在看本次课题之前希望大家能趁热打铁,再到网上下本C语言的教程,最好是买本数来巩固下变量相关的知识。 大家明白了怎么定义变量,怎么给变量赋值了,自然的就应该进一步了解一下一些详细的代码怎么编写了。 今天我们的任务比较简单,就讲一下如何编写代码及实现代码的流程控制。应该说这个是非常简单的东西了,本来我没打算讲它,可是本着...

2018-03-25 12:39:25 947

转载 笨鸟先飞学编程系列之三 函数

提及“函数”这个词儿,很多人都像我一样,感觉很恐慌,因为它总让我想起代数里讲的方方面面。这些对于像我这样的笨鸟来说,真的太深奥,总是不敢去考虑它,去琢磨它。虽然这里讲的跟那个并非同一个东西,但不免总是心有余悸。             今天要讲的东西比较多,我尽量把它讲的详细明白,但由于本人笨鸟一个,能力实在有限,大家多多包涵。先列一下今天要讲的目录:1.       什么是函数。2.      ...

2018-03-25 12:38:03 682

转载 笨鸟先飞学编程系列之一理解程序中的数据

说实话,我还没有想好这个系列到底该怎么讲,今天下午粗略的想了下,我觉得程序都是靠代码来操作数据的,所以,我就起了这么个破标题。由于我本身水平实在是菜的可以,所以我理解的绝对不可能一点错误没有,只希望能通过我写的这些文字让更多的入门编程这个精彩的世界,倘若读者发现我写的有错误的地方,一定要回帖告知我改之,以免误人子弟,再次谢过。        先说一下这篇文字主要内容。什么是数据及其在电脑中的存储方...

2018-03-25 12:35:02 473

转载 OllyDBG完美教程(超强入门级)

一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可:OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇...

2018-03-25 11:05:18 19412 1

转载 vs查看宏展开

宏在我们的代码中能经常给我们带来很大的便利,但是有些宏会造成意向不到的错误,能够查看宏展开就能够查看宏错误的根源。VS2008对编译是不保存预处理的文件信息的,而宏展开的信息就是在预编译阶段。如下图:            工程属性--》配置属性--》c/c++--》预处理器--》生成预处理文件,默认“否”是不生成预编译文件的。生成的预编译文件是项目文件下的.i文件,想要产生此文件,可选择“生成预...

2018-03-25 10:59:24 758

转载 new与malloc的前世今生

new和malloc的内存分配在哪分配在堆上。也有说new是分配在自由存储区而malloc分配在堆上,自由存储区可以是堆也可以不是,具体要看new内部的实现。操作系统在堆上维护一个空闲内存链表,当需要分配内存的时候,就查找这个表,找到一块内存大于所需内存的区域,分配内存并将剩余的内存空间返还到空闲链表上(如果有剩余的话)。new/delete和malloc/free的区别1. malloc和fre...

2018-03-24 20:38:05 147

原创 构造函数, 析构函数调用虚函数

构造函数,析构函数中调用虚函数的理解:首先虚函数是依赖于指针起作用的,所以再构造的时候我们根本没有通过一个基类的指针来做什么操作,所以这种想法是没有意义的,何况这个虚函数表这个时候还没创建好。至于析构函数:这个时候子类的成员已经释放了,调用会有未知结果。不过不用担心,因为这个时候的虚函数指针已经变成了基类的虚函数表地址。...

2018-03-24 12:17:27 556

转载 pragma comment的使用 pragma预处理指令详解

#pragma comment( comment-type [,"commentstring"] )该宏放置一个注释到对象文件或者可执行文件。comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1、compiler:放置编译器...

2018-03-23 23:14:13 264

转载 C/C++ 混合编程 互相调用

网上这方面介绍的不少,但是有点鱼龙混杂,对初学者而言,信息量太大,反而不容易直接找到自己想要并且正确的,现将比较好的资料整理下,并附上源代码,供初学者参考以及自己后期使用。两个推荐的原文地址,通俗点的: 1.深入理解C/C++混合编程 2.extern “c”用法解析C中想调用C++中的成员函数(包括虚函数),则需要提供一个简单的包装(wrapper),参考: 1.C代码中如何调用C++ C++中...

2018-03-23 23:09:03 267

转载 linux下C与C++混合编程

首先,混合编程不是指在同一个文件里写C与C++。 比如说想在同意文件里同时 弱类型检查,又强类型检查,那真够呛。混合编程包括:1,C++引用C的头文件;2,g++生成的.o与gcc生成的.o相链接。1,在用C语言写的头文件中,经常加上如下 保护宏定义:/*    example.h*/#ifndef EXAMPLE_H_#define EXAMPLE_H_#ifdef __cplusplusext...

2018-03-23 23:08:36 412

转载 extern "C"的用法解析

1.引言  C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。...

2018-03-23 23:03:58 198

转载 VC++目录和C/C++之间的区别。VC++ Directories和C/C++的区别

首先,这是个历史遗留问题,说起来比较复杂。其次,这个问题在微软的MSDN博客上已经专门被说起过了,英文好的请直接移步到原文:《VC++ Directories》。另外,stack overflow上面也有人问到过,但是首选回答的人回答是错的,因为他没看 《VC++ Directories》,主要看后面的这段:VC++ Directories: Include Directoriesthis val...

2018-03-23 21:28:57 692

转载 浅谈C++多态性

    多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。  C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算...

2018-03-23 20:37:21 134

转载 如何判断栈、堆的增长方向?

如何判断栈的增长方向?对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C...

2018-03-23 18:23:54 912

转载 指针和引用的区别与联系

指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1; int *p=&a;int a=1; int &b=a;12...

2018-03-23 17:39:33 350

转载 为什么new/delete和new[]/delete[]必须配对使用?

new和delete的内部机制这里不赘述了,戳这里《浅谈 C++ 中的 new/delete 和 new[]/delete[]》 glibc的mallc和free实现的内存分配释放简介,戳这里《malloc和free的内存到底有多大?——GNU glib库》 第一篇博客讲的很好,但是最后new、delete的为什么配对使用的解释单纯理解还不到位。这里总结并补充说明一下。动态内存使用表分配方式删除方...

2018-03-23 16:32:56 573

原创 mutable关键字存在的必要性

之前一直对这个关键字的用途有疑惑,摘一个网上搜集到的很好的解释。const意思是“这个函数不修改对象内部状态”。为了保证这一点,编译器也会主动替你检查,确保你没有修改对象成员变量——否则内部状态就变了。mutable意思是“这个成员变量不算对象内部状态”。比如,你搞了个变量,用来统计某个对象的访问次数(比如供debug用)。它变成什么显然并不影响对象功用,但编译器并不知道:它仍然会阻止一个声明为c...

2018-03-22 18:02:20 497

转载 学习使用常用的windbg命令(u、dt、ln、x)

目录:(1) u命令(反汇编)(2) dt命令(查看数据结构)(3) ln命令(查找就近的符号)(4) x命令(显示模块的符号)(5) k命令(显示调用栈)(6) d命令(以数据方式显示)(7) b命令(断点)(8) lm lmvm (显示模块信息)(9) .reload (重加载模块)(10) !process !thread .process .thread (查看进程线程信息)(11) !o...

2018-03-22 15:24:11 1230

转载 利用Windbg深入理解变量的存储模型

下面的是一个简单的测试程序,基本包括了所有的变量类型,包括静态的,常量的,全局的,本地的,还有new出来的#include <iostream>using namespace std;const char* global_const_string = "hello world";int global_int = 20;static int global_static_in...

2018-03-22 15:22:26 247

转载 Windbg调试命令详解

1. 概述用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe、ntsd.exe、kd.exe和Windbg.exe。其中cdb.exe和ntsd.exe只能调试用户程序,Kd.exe主要用于内核调试,有时候也用于用户态调试,上述三者的一个共同特点是,都只有控制台界面,以命令行形式工作。Windbg.exe在用户态、内核态下都能够发挥调试功能,尤其...

2018-03-22 12:44:51 918

转载 浅谈C++中的mutable和volatile关键字

1.mutable在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。mutable在类中只能够修饰非静态数据成员。?1234567891011121314151617#include <iostream> using name...

2018-03-21 22:16:45 687

转载 C/C++ Volatile关键词深度剖析

文章来源:http://hedengcheng.com/?p=725  背景 此微博,引发了朋友们的大量讨论:赞同者有之;批评者有之;当然,更多的朋友,是希望我能更详细的解读C/C++ Volatile关键词,来佐证我的微博观点。而这,正是我写这篇博文的初衷:本文,将详细分析C/C++ Volatile关键词的功能 (有多种功能)、Volatile关键词在多线程编程中存在的问题、Volatile关...

2018-03-21 22:13:52 179

转载 const和引用修饰变量和函数的总结

一、对于修饰变量的用法对于const和&的基础用法就不说了。下面说点之前有误区和容易错的地方const修饰变量的误区关于const类型,这里有一个我之前的误区,我以为const定义的时候只能用常量初始化,但是实际上是没有这个规定的。const定义的变量可以用各种const,非const对其进行初始化,甚至可以是函数的返回值之类的。const int a = 5; //在编...

2018-03-21 18:25:44 529

空空如也

空空如也

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

TA关注的人

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