自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tenfyguo的技术专栏

关于移动支付和互联网金融等相关产品的架构设计,开发和运营。

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

转载 C++虚函数(三)

<br />三. 虚函数使用技巧 <br />3.1 private的虚函数 <br />  考虑下面的例子:<br /><br />class A<br />{<br />public:<br />void foo() { bar();}<br />private:<br />virtual void bar() { ...}<br />};<br />class B: public A<br />{<br />private:<br />virtual void bar() { ...}<br />};

2010-07-31 15:09:00 547

转载 c++虚函数(一)

<br />虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:<br /><br />class A<br />{<br />public:<br />virtual void foo() { cout << "A::foo() is called" << endl;}<br />};<br />class B: public A<br />{<br />public:<br />virtual void foo() { cou

2010-07-31 15:08:00 493

转载 c++虚函数(二)

二. 虚函数的语法   虚函数的标志是“virtual”关键字。2.1 使用virtual关键字   考虑下面的类层次:class A{public:virtual void foo();};class B: public A{public:void foo(); // 没有virtual关键字!};class C: public B // 从B继承,不是从A继承!{public:void foo(); // 也没有virtual关键字!};  这种情况下,B::foo()是虚函数,C::foo()也同样是

2010-07-31 14:54:00 578

转载 C++ Virtual函数

虚函数是C++中用于多态的机制。核心理念就是通过基类访问派生类定义的函数。基类的析构含糊都必须是virtual的虚函数只能借助于指针或者引用来达到多态的效果。前提B类继承与A类 且foo()为虚函数void bar(A *a){  a->foo();//被调用的是A::foo()还是B::foo() ?}如果a指向的是A类的实例,则A::foo()被调用,如果a指向的是B类实例,则指向B::foo();在设计一个基类的时候,如果发现一个函数需要在派生类里有不同的表现,那么它就应该是虚的。从设计角度讲,出现在

2010-07-31 14:44:00 1207

转载 C++箴言:理解typename的两个含义

from: http://blog.csdn.net/fxpopboy/archive/2006/12/30/1469657.aspx问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template class Widget; // uses "class"template class Widget; // uses "typename"   答案:没什么不同。在声明一个 template type parameter(模板类型参数)

2010-07-29 17:45:00 575

原创 c++中new和delete的默认赋值测试

<br />  为了测试c++中对new操作符的运算规则是否调用默认对象的构造函数进行初始化,故写出如下的测试demo:<br />#include <iostream>using namespace std;//using std::cout 或者using std::endltemplate <class eleType>void print_value(eleType *a, int size){ if(!a || size <=0) { cout

2010-07-27 18:57:00 3040

原创 提高javascript函数的执行效率

为了测试javascript函数在执行的过程中,对局部变量的赋值开销以及缓存全局变量或者dom属性(方法)的开销,特别写了如下三个简单的测试函数:函数一:正常使用,循环10000次调用document.getElementsByTagNamefunction test1(){  for(var i=0;i  var el = document.getElementsByTagName('div');  }};函数二:缓存document对象,作为减少函数调用中搜索作用域链的开销,但增加了一个局部变量的赋值开

2010-07-24 15:16:00 1764

转载 与冯大辉的交流,架构师接龙有点意思

<br />冯大辉,技术名人,http://www.dbanotes.net/ 博主。<br />冯大辉:假设一家 C2C 网站,DB中某表存储买卖双方交易的数据信息,对于一条交易来说,买卖双方数据具有一定程度的耦合性,比如卖家的状态更新对应买家的状态也会更新,对于一 个中大规模的电子商务网站,架构师在设计中如何考虑数据分片的问题(假定该表随着数据的膨胀必须拆分)?<br />王速瑜:对于一个中大规模的电子商务网站,随着网站的不断发展,其相应的数据规模会不断膨胀。数据分片技术是使网站得于实现可扩展性的一种常

2010-07-24 15:07:00 1635

转载 来自豆瓣的架构经验

<br />以下文章内容来自程序员杂志对豆瓣技术总监洪强宁的采访,简要介绍了douban网在技术架构上的思想,本次Qcon大会有洪强宁的演讲,据内部人介绍,这次演讲非常的精彩,期待中。<br />本刊记者:好,现在开始,豆瓣是一个非常著名的Web2.0网站,你们的开发语言选择的是Python,我想问的是,为什么选择Python?<br />洪强宁:我们选择Python的理由是它是动态语言,具有动态语言的优点,比如开发特别迅速。我们做的是一个Web2.0的网站,这种网站的 特点就是always beta,用户

2010-07-24 15:05:00 1111

转载 与陶宝架构师林昊的交流

<br />林昊,网名BlueDavy,China OSGi User Group Director,淘宝网平台架构部架构师,个人的研究方向主要为 Java模块化、动态化系统的构建以及高性能的大型分布式Java系统的构建。曾编写《OSGi实战》和《OSGi进阶》两篇Opendoc,为OSGi 在中国的推广起到了很大的作用。<br />王速瑜:数据集群问题:当数据增长到一定的数量级,必须要进行分布部署、备份、容灾、切割扩容等工作。请问什么程度的数量级需要分布部署,如何合理分布部署,需要考虑哪些情况?<br /

2010-07-24 14:58:00 1899

转载 HTTP协议之Chunked编码

     在有时服务器生成HTTP回应是无法确定消息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。  在进行Chunked编码传输时,在回复消息的头部有transfer-coding并定为Chunked,表示将用Chunked编码传输内容。采用以下方式编码:  Chunked-Body=*chunk         "0"CRLF         footer         CRLF  chunk=chunk-size[chun

2010-07-24 14:56:00 1133

原创 别把typedef当作宏使用

<br />     在开发过程中,我们常常需要自定义数据类型,比如自定义结构体等,为了代码的可读性,我们对自定义的类型常常会利用typedef关键字进行重新类型定义。比如:<br />typedef struct _item_t{ int iUin; char sName[50]; ...} item_t;//然后可以如下使用item_t item;<br />     但在使用typedef的过程中,我们也很容易陷入一些误区,最典型的其中一个是把typed

2010-07-23 19:38:00 967

原创 shell中字符串的比较

<br />#!/bin/sh#测试各种字符串比较操作。#shell中对变量的值添加单引号,爽引号和不添加的区别:对类型来说是无关的,即不是添加了引号就变成了字符串类型,#单引号不对相关量进行替换,如不对$符号解释成变量引用,从而用对应变量的值替代,双引号则会进行替代#author:tenfyguoA="$1"B="$2"echo "输入的原始值:A=$A,B=$B"#判断字符串是否相等if [ "$A" = "$B" ];thenecho "[ =

2010-07-21 19:25:00 19235

原创 shell中如何进行一段代码的注释

<br />   在shell编程中,我们常常需要把一些语句注释掉,让它不执行,对单号或者少数几行shell脚本来说,在每行前面增加#符号就可以达到目的了,代码如下:<br />#cp ./a.txt ./b.txt#mkdir -p {1,2,4}/{2,4,6}#echo "ok"<br /> <br />但如果我们需要对一大段的shell脚本进行注释,倘若我们都在每行前面添加#,这对我们来说,确实不是一件很令人舒服的事情,那么,在shell中,有没办法采用类似c语言的注释/* ...*/来达到

2010-07-21 18:40:00 38264 1

原创 转:HTTP 301 跳转和302跳转的区别

301和302Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved), 302 redirect: 302 代表暂时性转移(Temporarily Moved ), 当然 Http 状态 200 标示没有任何问题发生。  这两种转移在使用的时候有啥好处或者问题?301 重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

2010-07-18 14:13:00 32608 2

转载 关于linux内核中的"__attribute__ ((packed))"

<br />来源: <br />http://jimmy-lee.blog.hexun.com/8001013_d.html<br />__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 <br />#define __u8 unsigned char <br />#define __u16 unsigned short <br />/* __attribute__ ((packed)) 的位置约束是放于声明的尾部“;”之前 */

2010-07-17 22:20:00 1048

转载 InnoDB和MyISAM区别

<br />     MySQL作为当前最为流行的免费数据库服务引擎,已经风靡了很长一段时间,不过也许也有人对于MySQL的内部环境不很了解,尤其那些针对并发性处理的机制。今天,我们先了解一下MySQL中数据表的分类,以及它们的一些简单性质。 <br />截至目前,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni这7种表。其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。<br /> <br />DBD <br />Berkel

2010-07-17 19:52:00 922

转载 类型转换之类型扩展

<br />     和同学探讨32位地址到64位地址转换的问题时,勾起了曾经做过的项目的一类bug的回忆。<br />类型转换特别是隐式规则转换是有点麻烦的,稍不注意就会犯错误。<br />这个问题是这样的<br />void *p = &a;<br />unsigned long long mem_64_bits = (unsigned long long)p;<br />当然在整个系统里不可能有这么清晰了,将地址转换强制为64位时,本来想要0扩展,结果却成了有符号为扩展来转换<br />。<br />

2010-07-17 19:50:00 1005

转载 Linux下tty/pty/pts/ptmx详解

基本概念:<br />1> tty(终端设备的统称):<br />tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。<br />终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。<br /><br />2> pty(虚拟终端):<br />但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pt

2010-07-17 19:25:00 5250

转载 curl的使用

<br />原文转自ChinaUnix, 链接http://bbs.chinaunix.net/thread-586014-1-1.html<br /> <br />      前两天看到有人求客户端socket 发HTTP包的代码,受flw版主启发找了一些perl的资料,不过对perl 还是不太熟悉。也没有深入的研究。无意中发现了libcurl.so 这个库。去google上搜索发现它是处理客户端发送HTTP请求的库 以及可以处理web服务器回送回来的包。研究了两天将研究的成果,共享出来给大家一起研究。<

2010-07-17 19:08:00 958

转载 转:常用的内存管理算法的简要介绍

<br /> <br />主要是介绍一下常用的内存管理算法以及相关的数据结构. <br /><br />三种类型: <br />1 sequential fit<br /><br />包括first fit,next fit,以及best fit <br /><br />这种算法的实现基本来说都是基于一个双向链表或者循环链表来保存所有的free memory.而且一般都会使用kunth的boundary tag算法来合并临近的内存(这个算法可以去网上搜索下,这里就不介绍了). <br /><br />其中f

2010-07-17 19:05:00 2469

原创 研究ELF文件的工具objdump&readelf

<br />NAME<br />       objdump - display information from object files.<br />SYNOPSIS<br />       objdump [-a|--archive-headers]<br />               [-b bfdname|--target=bfdname]<br />               [-C|--demangle[=style] ]<br />               [-d|--disass

2010-07-17 18:58:00 726

原创 转:链接器脚本(linker script)

<br />       每个链接都由链接脚本控制着,脚本由链接器命令语言组成。脚本的主要目的是描述如何把输入文件中的节(sections)映射到输出文件中,并控制输出文件的存储布局。大多数的链接脚本就是做这些事情的,但在有必要时,脚本也可以指导链接器执行一些其他的操作。<br />链接器总是使用链接器脚本,如果你没有提供一个你自己的脚本文件的话,编译器会使用一个缺省的脚本,而它被编译进链接器(?)。你可以使用"-verbose"命令行参数来显示缺省的链接脚本。而某些命令行选项,像"-r","-N"会影响缺

2010-07-17 18:55:00 1379

原创 互联网系统的架构设计必须要考虑的关键点

<br />前两天听了海量用户服务系列课后,收获颇多,快速整理下思路,几个基本点:<br />一,互联网产品是一个运营的产品,产品的成功很大程度上是运营出来的,而不是开发出来的,从产品的生命周期看,开发环节只是占了其中的一小部分,而产品的生命周期大部分是处于运营状态,因此,在架构设计阶段就必须把产品的可运营性纳入到设计的重要思考点,而绝对不是简单的实现一个功能点就大功告成了。<br /> <br />二,什么是可运营的产品?产品的运营是一个动态调整的过程,能够根据用户的需求变化,确保在低成本(可以忍受)的基

2010-07-17 14:25:00 1447

原创 搭建具有高可用性的互联网服务

<br />      时间比较紧,只能快速随便记一下吧。<br />  高可用性的架构设计必须与运营成本和用户行为模型一起思考。<br />  同一IDC部署要注意的点是:复用网关出口而导致的服务依赖性问题,比如跟其他公司的服务器共享同一个IDC的网关,如果其他公司的站点收到攻击而导致流量溢出等事故,必然会影响到自身的服务,又比如自己公司的不同服务部署在同一IDC共享同一出口,由于各个服务之间的流量不同,流量爆增的服务容易级联影响到其他服务,从而导致其他的服务也异常。这里是否可以考虑破除各个服务的依赖性来

2010-07-17 14:05:00 765

原创 转:什么是cookie

什么是 Cookie? ­Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 ­­假设在用户请求访问您的网站 www.contoso.com 上的某个页面时,您的应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie。用户的浏览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬盘上的某个文件夹中。 ­­以后,如果该用户再次访问您站点上的页面,当该用户输入 U

2010-07-17 12:06:00 611

转载 用协议分析工具学习TCP/IP(一)

一、前言目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道 TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天。目前号称搞网的人非常多,许多人就是从一把夹 线钳,一个测线器联网开始接触网络的,如果只是联网玩玩,知道几个Ping之类的命令就行了,如果想在网络上有更多的发展不管是黑道还是红道,必须要把 TCP/IP协议搞的非常明白。 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了。本文将介绍一种直

2010-07-17 11:47:00 1424

原创 转:HTTP协议学习总结

HTTP简介       web浏览器和服务器之类的交互过程必须遵守的协议.他是tcp/ip中的一个应用协议。用来协议数据交换过程和数据本身的格式.主要的有HTTP/1.0和HTTP1.1.HTTP1.0的会话方式在1.0时的会话方式1.建立连接    2.发出请求信息    3.回送响应信息4.关掉连接 小结:浏览器和web服务器连接很短,每次连接只处理一个请求和响应。对每一个页的请求,浏览器与web服务器都要建立一次单独的连接.浏览器没有关掉前,连接就断开了.浏览器和服务器之间的通信是完全独立分开的请求

2010-07-15 23:32:00 1514

转载 转:关于GCC中同时使用动态和静态库链接的操作参数和解释

<br />来自:http://blog.sina.com.cn/s/blog_4cb133e5010009zx.html<br /> <br />    在我们开发的一个系统中,由于动态链接其中的一个动态库时,编译时没有问题,而运行时不能进行,如果将该库静态连接时,运行却没有问题。具体什么原因,一直没有搞清楚,权且当作暂时的解决办法。   如何同时同时使用动态和静态库链接,同事周楠提供了一个参数的用法,在GCC指令参数中具体参数如下:    -Wl,-Bstatic -L/usr/local/sqlite

2010-07-15 19:22:00 3131

原创 shell中整数的比较

为了测试在shell编程中,对整数类型的比较,特意写了如下的测试代码:#!/bin/sh#shell中对变量的值添加单引号,爽引号和不添加的区别,对类型来说是无关的,主要是单引号不#对相关量进行替换,如$解释成变量引用用值替代,双引号则进行替代A="$1"B="$2"echo "输入的原始值:A=$A,B=$B"#下面的比较只能用于整数格式的比较(不能是小数),否则出现#integer expression expected的错误echo "shell

2010-07-15 15:16:00 26699 1

原创 awk用“||”作为分割符的问题

<br />   在用awk进行分割记录文件的时候,我们发现单独用"|"基本上是Ok,但用“||”则是无法进行正常的分割,下面是测试的例子:<br /> <br />在测试之前给到一个测试的文件:test.txt,里面的内容如下:<br />one|two|three|four|five|six<br />one2|two2|three2|four2|five2|six2<br /> <br />awk输出的文件存到test_awk_output.txt<br /> <br />一,使用"|"进行分割<br

2010-07-12 16:39:00 7445

深度探讨javascript函数的原型链和闭包

深度探讨javascript函数的原型链和闭包

2010-01-28

空空如也

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

TA关注的人

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