自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (3)
  • 收藏
  • 关注

转载 RSA算法详解

数论,数学中的皇冠,最纯粹的数学。早在古希腊时代,人们就开始痴迷地研究数字,沉浸于这个几乎没有任何实用价值的思维游戏中。直到计算机诞生之后,几千年来的数论研究成果突然有了实际的应用,这个过程可以说是最为激动人心的数学话题之一。最近我在《程序员》杂志上连载了《跨越千年的 RSA 算法》,但受篇幅限制,只有一万字左右的内容。其实,从数论到 RSA 算法,里面的数学之美哪里是一万字能扯完的?在写作的过程

2013-01-23 23:31:04 15988

转载 Object C 内存管理

1.1     基本原理Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法(介于C/C++和Java C#之间)。引用计数(retainCount)是Objective-C管理对象引用的唯一依据。调用实例的release方法后,此属性减1,减到为零时对象的dealloc方法被自动调用,进行内存

2013-01-20 22:55:01 1510

转载 iOS6不支持shouldAutorotateToInterfaceOrientation

发现 b2c交易在ios6上webview随屏幕旋转了,但是b2c支持横屏的,原因是ios6的委托iOS6下的- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{       return UIInterfaceOrientationIsLan

2012-12-23 23:37:20 9400

转载 ios6 设备旋转以及获取设备方向

1.在APPDelegate里,将[self.window addSubview:self.viewController.view];  改为判断当前设备系统       if ([[[UIDevice currentDevice] systemVersion] floatValue]>=4.0) {           //4.0以后支持           self.w

2012-12-23 22:47:18 8787

转载 ios 设置屏幕方向的两种方法

第一种:通过人为的办法改变view.transform的属性。具体办法:   view.transform一般是View的旋转,拉伸移动等属性,类似view.layer.transform,区别在于View.transform是二维的,也就是使用仿射的办法通常就是带有前缀CGAffineTransform的类(可以到API文档里面搜索这个前缀的所有类),而view.layer.tr

2012-10-17 23:54:23 15000

原创 商户银行间的签名过程

发送方签名: 订单信息用私钥(.key) 加密后同公钥(.cert) 做base64后一起上送;            接收方验证签名:用公钥解密,验证信息的真实性、完整性,然后还要验证证书的有效性以保证信息的不可抵赖性。这点同网银交易一致,网银交易时验证客户的真实性,客户不可抵赖

2012-09-18 23:01:52 1909

转载 windows下内存池的实现

/*  @file       MemoryPool.h*   @note       HangZhou Hikvision System Technology Co., Ltd. All Right Reserved.*   @brief      windows下内存池的实现*   @note       V1.0  Created.*   @warning Copyrig

2011-11-22 23:19:33 1051

转载 new有三种使用方式:plain new、nothrow new、placement new.

1.plain new/delete.普通的new定义如下: void *operator new(std::size_t) throw(std::bad_alloc);  void operator delete(void*) throw();注:标准C++ plain new失败后抛出标准异常std::bad_alloc而非返回NULL,因此检查返回值是否为NULL判断

2011-11-22 23:07:09 2859

转载 一致性Hash算法(转)

consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 objec

2011-11-04 14:27:01 500

转载 C++程序运行时内存布局之----------this到底是什么?

先问一个问题,在C++里,成员函数里的this指针和调用此函数的对象地址总是一样的吗?如果你的回答是:不一定。那么至少你是个老手吧,下面的内容你就不用看了;如果你的回答是:是啊,那么强烈建议你看看下面的内容。 非静态成员函数,无论是不是虚函数,都隐藏了一个this指针参数。这个参

2011-07-14 23:50:34 793 2

转载 百度面试题之赛马

题目:有36匹马和一条6赛道的跑马场,没有计时器,请用最少的比赛轮次挑选出最快的3匹马。因为没有计时器,所以不同马之间都要比一比。不过,我们的任务是选出最快的3匹而不是排序,所以要尽量减少比赛轮次,那么:1、比过的马不用再比;2、已知跑得慢的马也不用再次参加了。有了上面这两条原则

2011-07-09 11:27:49 1196

转载 java和c的本质--最重要的是启动

<br />java很神秘吗?说什么跨平台,虚拟机之类的。c#很神秘吗?c很神秘吗?操作系统呢?cpu呢?其实这些都不神秘,以前不懂操作系统的时候,看见个多线程就跟看见个神似的,现在呢?linux内核随便看,随便改,不就是进程管理那一堆事嘛,也没有多少代码。学习任何东西的时候,只要静态的框架以及动态的流程搞明白了,都不难的,这就和学英语一样,静态的东西其实就是字母表和单词,动态的东西就是听说读写,动静结合,必有长进。<br />     下面以c和java为例说明其原理,特别说明c和java是如何启动的,想

2011-02-23 23:03:00 822

转载 架构师接龙

一、保证网站的高可用性1.避免单点故障。负载均衡集群、双节点热备、分布式处理。 对于重要的MySQL数据库主库,我们习惯于从硬件层和软件层来实现热备,避免单点。越是复杂的设备,发生故障的概率越大。在磁盘没有损坏的情况下,应用程序导致服务器宕机的概率,远高于简单的磁盘阵列宕机的概率。所以,从硬件层解决的话,可以在两台服务器上安装相同的数据库版本、进行相同的配置,用SAS或SCSI线连接...

2011-01-09 20:23:00 775

转载 C语言谜题

<br />1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?<br />#include<br />#include<br />int main()<br />{<br />while(1)<br />{<br />fprintf(stdout,"hello-std-out");<br />fprintf(stderr,"hello-std-err");<br />sleep(1);<br />}<br />return 0;<br />}<br />参考答案:stdout和std

2010-10-10 12:07:00 608

原创 飞机绕地球问题

每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机),一箱油可以供一架飞机绕地球飞半圈。问:为了使至少一架飞机绕地球一圈回到起飞 时候的飞机场,至少需要出动多少架飞机?(注:所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有机场,返航飞机不可以再飞) 答案:5架 解答:    设飞机携油量为4a 则飞行1/8圈耗油量为a 机场处起飞3架 至1/8

2010-04-08 15:59:00 2316 1

原创 delete函数

operator delete(void* )是做为静态函数来使用的,即使不将他定义为静态函数,编译器也会把它做为静态函数来处理,因此我们通常应该显式地将函数operator new()和operator delete()声明为静态函数.他们永远都不能是非静态成员函数. class B{public:virtual ~B(){     cout}static void operator del

2010-04-08 14:44:00 4022

原创 C语言printf——动态指定输出格式长度

printf动态指定长度信息的数字,采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,例如:printf(s, "%.*s%.*s", 7, a1, 7, a2);或printf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);printf(s, "%-*d", 4, A); //产生"65 "printf(s, "%#0*X", 8

2010-04-07 15:49:00 13875 2

原创 Oracle 字符串长度函数

LENGTH calculates length using characters as defined by the input character set. LENGTHB uses bytes instead of characters. VSIZE returns the number of bytes in the internal representation of

2010-03-11 15:33:00 7121

原创 MySql创建函数

首先需要查看一下创建函数的功能是否开启:mysql> show variables like %func%;+-----------------------------------------+-------+| Variable_name                            | Value |+----------------------------------------

2010-03-01 12:53:00 1616

转载 SMTP协议分析[转]

第1章.     SMTP概述1.1.  SMTP在邮件通信中的位置SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通信中所处的位置如图 1所示。 图 1电子邮件的通信过程可以看出,SMTP是用来将客户机上的邮件传送到服务器上。这里的客户机是指某次连接中的发送方,服务器

2009-11-13 16:56:00 2123

原创 C语言发送email

    应用:分布式评测系统中检测到连接断开后向管理员发送邮件。 一、 认证方式  ESMTP(Extension SMTP)即认证的邮件传输方式,是邮件服务器系统为了限制非本系统的正式用户利用本系统散发垃圾邮件或其他不当行为而开设的一项安全认证服务。它与传统的SMTP方式相比,主要的不同有两点:  1) 支持8-bit MIME格式的编码。  2) 支持用户身份的验证。  多了一道用

2009-11-12 20:21:00 5913

原创 删除C/C++注释

/*********************************************************************删除C/C++注释**********************************************************************/#include //注意//1.对/****/的处理//2.要保留双引

2009-10-22 01:53:00 944

原创 perl找出文本行中的注释

 perl正则表达式放在斜杠(//) 之中。 解决一:if( $line =~ /^[ /t]*#/ )  等价于   if( $line =~ /^/s*#/ )上面正则式对于以下行不能做出正确判断:    MACRO = "String with # in it"  #注释 一个不包含注释的行应当是1)非#的任何字符2)一个引用字符串3)或者其一,或者两者重复一次或多次解决

2009-10-21 11:05:00 1097

转载 linux启动过程

Linux系统启动过程本文以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导 Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调

2009-10-20 22:20:00 457

转载 Windows启动过程详解

本文的适用范围       随着技术的发展,我们能够见到的计算机硬件种类越来越多。以计算机上最重要的组件CPU来说,目前就有很多选择。当然,这里的选择并不是说AMD或者Intel这种产品品牌,而是指其内部的体系结构。目前常见的CPU体系结构主要基于复杂指令集(Complex Instruction Set Computing,CISC)或者精简指令集(Reduced Instruction Set

2009-10-20 10:51:00 561

原创 数据库概念

函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子集,r是R(U)上的任意一个关系,如果成立对属于r的任意t,s,若t[X]=s[X],则t[Y]=s[Y],那么称“X函数决定Y”,或“Y函数依赖于X”,记作X→Y。称X为决定因素。部分函数依赖,完全函数依赖:在R(U)中,如果X→Y,且对于任意X的真子集X′,都有X不函数决定Y,则称Y对X完全函数依赖,记作X→fY,否则称为Y对X部分

2009-10-20 09:48:00 655

转载 读懂复杂类型的右左规则

右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标 准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可 以说是相反的。右左法则的英文原文是这样说的:      The right-left rule: Start reading the declaration from the innermo

2009-10-15 12:22:00 816

转载 从函数返回一个数组的2种方法 (C专家编程 p230)

严格来说,无法从函数返回一个数组,但可以从函数返回一个指向任何数据结构的指针,包括一个指向数组的指针。一种方式如下:#include stdio.h>#include stdlib.h>int (*func())[20];//func是一个函数,它返回一个指向包括20个int元素的数组的指针int main(void){        int (*result)[20];   

2009-10-15 12:13:00 2142 1

原创 系统日志的编写技巧

  写程序的时候,输出调试信息是非常重要。在C中,我们常常使用printf,而在C++中,标准的用法是cout的了。有些比较老道的做法是加个DEBUG宏,比如:        #ifdef  __DEBUG__        printf("hello world") ;        #endif       这个办法在早期时候,用的比较多,他很容易将__DEBUG__宏去掉,就不用输出非常多的

2009-10-15 12:10:00 870

原创 全局对象在程序进入main之前construct, 离开main后destruct

Solve  Bjarne Stroustrups little puzzle:Given the program:#include iostream.h> // DONT use or using namespace std;main() {    cout "Hello world" endl;}modify it to produce the

2009-10-15 12:08:00 898

原创 C 语言数据对齐

#include      struct Foo1{   char a;   int  b;   char c;   int  d;};#pragma pack (2) struct Foo2{   char a;   int  b;   char c;   int  d;};#pragma pack () struct Foo3{   char a;   char c;   int  b

2009-10-15 09:57:00 824

原创 位段

位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。位段结构中位段的定义格式为:   unsigned :例如:struct bytedata{    unsigned a:2;    /*位段a,占2位*/    u

2009-10-15 00:05:00 826

原创 C/C++程序内存中数据存储区分类

    在C/C++中,内存中数据存储分成4个区,分别是堆、栈、全局/静态存储区和常量存储区。      栈(stack),就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。      堆(heap),一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。      全局/静态存储区,全局变量和静态变量被分配到同一块

2009-10-14 23:41:00 4504

原创 浮点类型的存储

在c语言中,单精度(float)数据类型为32bits,分三部分:Sign:符号位,1 bit,0为正,1为负; Exponent(bias):指数部分,8 bits,存储格式为移码存储,偏移量为127; Mantissa(fraction):尾数部分。 同理,双精度(double)占64位,三部分分别为:1位,11位和52位,偏移量为1023举例:浮点类型的值4.25在计算机中存储的

2009-10-14 23:29:00 862

转载 判断两个单向链表是否相交,并求出交点(要求O(1)的额外空间)

 List *has_cross(List *list_a, List *list_b)   {       List    *pa;       List    *pb;       int     len_a, len_b;       int     i;          len_a = len_b = 0;          pa = list_a; /* 遍历链表a,并记录下此链表的长

2009-10-09 23:10:00 3069

原创 C++四种cast操作符

C 风格(C-style)强制转型如下:(T) expression  或T(expression) //函数风格(Function-style)两种形式之间没有本质上的不同。对于具有转换的简单类型而言C 风格转型工作得很好。然而,这样的转换符也能不分皂白地应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:reinterpret_cast, static_

2009-09-29 15:59:00 36993 5

原创 C++虚函数机制

1.1      简介编译器对每个包含虚函数的类创建一个表(称为VTABLE)。在VTABLE中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器秘密地置一指针,称为vpointer(缩写为VPTR),指向这个对象的VTABLE。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个VPTR,并在VTABLE表中查找函数地址的代码,这样就能调用正确的函数使晚捆绑

2009-09-13 23:16:00 1338

原创 C++ placement new

   placement new的作用就是:创建对象(调用该类的构造函数)但是不分配内存,而是在已有的内存块上面创建对象。用于需要反复创建并删除的对象上,可以降低分配释放内存的性能消耗。 #include   定义头文件; placement new。和其他普通的new不同的是,它在括号里多了另外一个参数。比如: Widget * p = new Widget; //ordina

2009-09-11 12:50:00 623

转载 C语言动态申请二维数组

char **a; int n,m,i; scanf("%d%d",&n,&m); a=(char **)malloc(sizeof(char *)*n);/*动态申请二维数组*/ for(i=0;i{   *(a+i)=(char *)malloc(sizeof(char)*11);/*动态申请二维数组元素空间*/ }

2009-09-11 12:36:00 1240

原创 C语言指针与数组(C专家编程)

1.区别(主要的):指针需要增加一次额外的提取操作     编译器为每个变量分配一个地址(左值)。这个地址编译时可知,而且该变量在运行时一直保存于这个地址。相反,存储于变量中的值(它的右值)只有在运行时才可知。如果需要用到变量中存储的值,编译器就发出指令从地址读入变量值并将它存于寄存器中。     对于数组,如果编译器需要一个地址(可能还需要加上偏移)来执行某种操作,它可以直接进行操作,不需要增加

2009-09-11 12:29:00 1626

mysqlsdk for win c++ developer

Mysql SDK/win/C++

2017-06-13

jQueryAPI-

jQueryAPI-

2014-03-15

The unix programming environment

The unix programming environment

2013-04-21

空空如也

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

TA关注的人

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