编程技术

关于大型网站技术演进的思考(六)--存储的瓶颈

在讲数据库水平拆分时候,我列出了水平拆分数据库需要解决的两个难题,它们分别是主键的设计问题和单表查询的问题,主键问题前文已经做了比较详细的讲述了,但是第二个问题我没有讲述,今天我将会讲讲如何解决数据表被垂直拆分后的单表查询问题。要解决数据表被水平拆分后的单表查询问题,我们首先要回到问题的源头,我们为什么需要将数据库的表进行水平拆分。下面我们来推导下我们最终下定决心做水平拆分表的演进过程,具体如下:第一个演进过程:进行了读写分离的表在数据增长后需要进行水平拆

系统 2019-08-29 23:45:42 2048

编程技术

设计模式中结构型模式(四)装饰模式(Decorator)

动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其它类继承过来的边框特性可以被多个子类的实例使用。但这种方法不够灵活。因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。一种极为灵活的方式是将组件嵌入另一个

系统 2019-08-29 23:40:19 2048

编程技术

无线路由器实现多台主机共享上网

现有装备:现有装备(眼前):PC主机1台(含网卡1个)、IBMR51(含英特尔迅驰技术)1台,ADSL猫套装1个(赠送网线、电源适配器)。我的思路:1.由于笔记本拥有两个网卡,可以办理无线上网(办联通的那种无线上网卡),然后连接台式机实现共享上网,但是这个方法不实用,无线上网太贵啦。2.在PC主机内,添置第2块网卡。2块网卡1块连接ADSL猫,1块连接我的R51,通过WindowsXP在“网上邻居”内的选项设置,完成共享方案。3.购买路由器、交换机或集线器

系统 2019-08-29 23:11:00 2048

编程技术

利用SATSA高级API进行加解密

15.2.3利用SATSA高级API进行加解密除了SATSA定义的两个可选包可用于连接加密硬件外,还有两个包能够实现如今的许多移动应用程序所需的常见加密操作。SATSA-CRYPTO包包含java.security包、java.security.spec包、javax.crypto包以及javax.crypto.spec包的一个子集,提供了用于公私钥管理、消息摘要、签名验证以及数字加密的API。SATSA-PKI安全包包含javax.microeditio

系统 2019-08-29 22:59:08 2048

编程技术

NetBeans 时事通讯(刊号 # 57 - May 27, 2009)

刊号#57-May27,2009文章Tapestry5、NetBeans6.7、Maven,还有Jetty:这是真的!NetBeans梦之队的成员AlexKotchnev在他的博客中介绍了如何使用NetBeans创建Tapestry5活跃类(liveclass)以及模板重载。ApacheTapestry是一个开源的Web应用框架,Alex将它部署于同样开源的Jetty服务器上,看看这篇博文吧!使用MySQLConnect

系统 2019-08-29 22:48:55 2048

编程技术

Stack and heap allocation in C

#include#include/**strisaliteral.Soitisallocatedinreadonlysegment.ItisOKtoreturn*it.Butthedatapointedbythepointercan'tbemodified.*/char*static_pointer_return(){char*str="world";returnstr;}/**Nevertoreturnapointe

系统 2019-08-29 22:19:35 2048

编程技术

武汉大学自由软件日宣讲活动记录

为了推广自由以及开源软件,让广大老师学生、软件爱好者使用者能够更深刻地感受到软件自由的重要性、体会到自由和开源软件的乐趣,在每年九月的第三个星期六,全球各地的团体自发举办各式各样的活动,共同庆祝自由软件日。这次活动就是由武汉大学开源技术俱乐部主办,自强网络、网络编程协会、信息安全协会协办的一个华中地区的自由软件盛会。由于我们俱乐部刚刚成立,在组织中还有很多问题望同行和朋友们多多指教。到场嘉宾:Sun湖北、湖南上海区销售经理简波资深软件开发工程师、武汉大学国

系统 2019-08-29 22:17:16 2048

编程技术

设计模式之--命令模式

命令模式的意图一是将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;二是对请求排队或记录请求日志,以及支持可撤消的操作。简略图如下:命令模式通过对命令的封装,将命令的请求(调用者Invoker)和执行(接收者Receiver)进行了责任分离,委派给不同的对象,不仅使得调用者和执行者之间实现了解耦(命令的请求方就不需要知道接收方的接口,也不需要知道命令是如何执行的具体情况),还使得可以记录命令的执行记录,添加执行日志,使得命令的控制、执行、取

系统 2019-08-29 22:14:04 2048

编程技术

移动电子商务的现状与问题

早在两年前,就有电子商务巨头将目光瞄准到手机应用,但由于受制于终端、带宽和支付的限制,终究有些“雷声大雨点小”。近两年,iPhone、iPad和Android设备的出现彻底改变无线应用方式,加上电信运营商、第三方支付的移动支付业务日趋成熟,电子商务在无线互联网领域有望取得比PC端更广阔的前景。让我们看看他们怎么说:IDG资本副总裁李丰透露:手机上的B2C网站爱购网,每个月已经有几百万的流水;凡客无线推出一个月后,每天订单数已达千;京东商城无线业务负责人杨思

系统 2019-08-12 09:30:09 2048

编程技术

服务器集群怎么实现?

硬件配置范例:网络服务器两台服务器操作系统硬盘两块服务器数据存贮硬盘视用户需要确定服务器镜像卡(部分软件可使用标准网卡)两块网络服务网卡两块三、双机与磁盘阵列柜集群的软件配置基于NT平台的集群软件Microsoft的MSCS,也有许多第三方的专业软件公司开发的集群软件,如豪威的DATAWARE,VINCA公司的STANDBYSERVER,NSI公司的DOUBLE-TAKE.MSWolfPack的特点MSWolfPack是MSClusterserver的别称

系统 2019-08-12 01:33:15 2048

编程技术

hdu1195 Open the Lock (DFS)

ProblemDescriptionNowanemergenttaskforyouistoopenapasswordlock.Thepasswordisconsistedoffourdigits.Eachdigitisnumberedfrom1to9.Eachtime,youcanaddorminus1toanydigit.Whenadd1to'9',thedigitwillchangetobe'1'andwhenminus1to'1',thedigitw

系统 2019-08-12 01:32:16 2048

Python

python学习手册笔记——35.异常的设计

00.嵌套try/except语句:当异常因幡是,控制权会跳回具有相符的except句子,最近进入的try语句,而程序会在try语句后继续执行下去。except自居会拦截并停止异常,这里就是你处理异常并从中恢复的地方。01.嵌套try/finally:当异常在这里引发时,控制权会回到最近进入的try去执行其finally语句,异常会持续传播所有激活状态下try语句的finally,直到最终抵达默认顶层处理器。02.sys.exc_info:通常允许一个异常

系统 2019-09-27 17:57:32 2047

Python

理解Python中的生成器

Python生成器是什么?先说一下生成器函数,抽象地说,生成器函数就是一个顺序执行过程的抽象。具体地说,它就是一种特殊的函数,这种特殊性源于这个函数中出现了一个yield关键字。解释器在发现函数中有yield关键字时,将这个函数标记为一个生成器函数,其执行的结果会返回一个生成器,而这个生成器是支持迭代器协议的。创建一个生成器函数生成器函数的创建是非常简单的:In[1]:defmygenerator():...:yield1...:正如前面提到的,如果一个函

系统 2019-09-27 17:55:34 2047

Python

Python的subprocess模块总结

subprocess意在替代其他几个老的模块或者函数,比如:os.systemos.spawn*os.popen*popen2.*commands.*subprocess最简单的用法就是调用shell命令了,另外也可以调用程序,并且可以通过stdout,stdin和stderr进行交互。subprocess的主类复制代码代码如下:subprocess.Popen(args,bufsize=0,executable=None,stdin=None,stdou

系统 2019-09-27 17:54:43 2047