随笔分类 - 我的读书分享
分享一些我读过的书。
摘要:起初在一个应用挂在虚拟主机上,昨天早上虚拟主机挂了。本来考虑迁移到SAE上的,但之前发现SAE的JVM云豆消耗的太快(PS:我是中级开发者,每月 10000云豆,如果有哪位大神对SAE JAVA云豆能控制的好的请私密我一下,在此谢谢了),只能考虑百度的BAE了。之前有玩过几次BAE,不过都是小程序,很简单,随便弄弄就好了。现在面对的是一个在虚拟主机上跑了3个月的项目做迁移。顿时头疼了。无从下手哇。先是百度,google找了一圈,看各位大神写的经验总结。然后开始动手尝试哇。。。。。。下午半天的研究,终于把代码迁移好了。结果发现也挺简单的。。下面分享一下自己的方式,让玩BAE JAVA的童鞋少走一
阅读全文
摘要:毫无疑问,Facebook是现在最炙手可热的公司之一。访问量超过Google,访问时间更让其他网站难以望其项背。最近,它的未上市股票交 易价报收50美元,公司总市值达到约225亿美元。当然,早在2007年10月,微软就花2.40亿美元才购买了Facebook 1.6%的股份,这还是和Google争来的。 这种情况下,公司那些出身技术人员的高层应该早就日理万机,远离代码了吧。其实不然。技术博客TechCrunch的编辑Michael Arrington发现,Facebook创始人兼CEO Mark Zuckerberg这几天还在写代码! 他发了一条状态更新,说自己刚刚chec...
阅读全文
摘要:要想解决我们之前所述的所有问题,核心理念其实非常简单:Web 开发团队需要日积月累、稳步实施可重用策略。可重用策略可以划分为三种资源库:模式、组件,以及交互设计的框架体系。这些资源库能让开发团队充分利用丰富的成品资源,从而提高工作的速度和效率。我们发现,那些成功实施可重用策略的团队已经尝到了实实在在的甜头。首先,他们可以调用已经(按最基本水平)实现的成品集,快速地拼凑起有效的设计雏形,从而达到让设计尽快启航的目的。这些团队完成整个设计的时间似乎也更短,而且可以周全地涵盖一切有利于提升用户体验的细节和精妙之处。其次,尽管他们在无趣的支撑功能上并未花费太多时间,其设计成果却似乎具备更高的可用性,而
阅读全文
摘要:《代码大全》是一本不多见的值得多次阅读的好 书,在《代码大全》一书中,每一章后面都有这一章的要点,略读这些要点中我们就可以了解到我们已经掌握了哪些知识,哪些知识还没有掌握,阅读,重读时就有 重点了。下面列出这些要点,供没有购买这本书的同学(同仁)参考,或可用作决定“是否应该买这本书”的参考。 第1章 欢迎进入软件构建的世界 中文要点: 软件构建是软件开发的核心活动;构建活动是每个项目中唯一一项必不可少的工作. 软件构建的主要活动包括:详细设计,编码,调试,集成,开发者测试(包括单元测试和集成测试). 构建也常被称作"编码"和"编程". 构
阅读全文
摘要:很难预测一百年后的人类生活,只有少数几件事是可以确定的。那时,汽车将具备低空飞行能力,城市规划的法规将放宽,大楼可以造到几百层,大街上一天到晚看不见太阳,女性个个都学过防身术。本文只想讨论其中的一个细节:一百年后,人们使用什么语言开发软件?为什么这个问题值得思考?原因不是我们最终会用上这些语言,而是幸运的话,我们从现在开始就能用上这些语言。我认为,编程语言就像生物物种一样,存在一个进化的脉络,许许多多分支最终都会成为进化的死胡同。这种现象已经发生了。Cobol语言曾经流行一时,但是现在看来没有任何后续语言继承它的思想。它就像尼安德特人①一样,进化之路已经走到了尽头。(①尼安德特人(Neande
阅读全文
摘要:想象我正在往一个已有的代码库中添加新的功能。假如我一次只添加一个小修改,这个小修改是如此简单以至于它只有两种状态——写完代码之后只要看一看,我要么是改对了要么是改错了;如果改错了,我就用另一种方式来修改,后者一定是正确的。 如果我一次不是添加一个小修改,而是添加两个,然后把两个修改放在一起来验证。这时可能的状态就有四种:一种正确的,以及三种不同的出错方式。 如果我再贪心一点(或者是因为某些客观条件的约束),一次添加三个小修改然后再验证。这时可能的状态就成了八种:一种正确的,以及七种不同的出错方式。 所以这就是复杂...
阅读全文
摘要:IBM无锡云计算中心第一期总投资3250万,大楼共有4层,建筑总面积为1800平方米。大楼结构布置合理,功能划分清晰,可扩展性和可操作性强,能够满足云平台公司的管理、运营要求,也为入园使用云平台的企业的商务洽谈、人员培训、临时办公提供了良好的环境。(SAAS博士:盖了一栋楼)云计算中心拥有雄厚的维护和支持力量,具备多年机房管理、互联网网络维护及网站建设维护经验,资深的专业工程师为客户提供机房设备维护、网络实时监控到网络设备故障排除等全方位的、7×24小时的专业技术服务。(SAAS博士:养了一帮网管) 一、机房内部环境:机房整体抗震级别为8级,地板承重为800/平方米; 多台空调机采用
阅读全文
摘要:今天我们一起来了解Facebook背后的软件,看看作为当今世界上访问量最大的网站之一,Facebook是如何保证5亿用户的系统一直稳定可靠的运行。 Facebook的扩展性挑战 在我们讨论细节之前,这里有一些Facebook已经做的软件规模: ◆Facebook有570000000000每月页面浏览量 (据Google Ad Planner) ◆Facebook的照片量比其他所有图片网站加起来还多(包括Flickr等网站) ◆每个月超过30亿张照片被上传 ◆Facebook的系统服务每秒处理120万张照片,这不包括CDN服务中处理的照片 ◆每月超过25亿条的内容 (状态更新,评论等)被共享 ◆
阅读全文
摘要:装箱用于在垃圾回收堆中存储值类型,是值类型(C#参考)到object类型或到此值类型所实现的任何接口类型的隐式转换。对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。 以下3段代码说明如何使用装箱拆箱操作,请尝试将其分别保存在不同的文件中并使用csc命令编译,然后分别运行查看效果:classTestBoxing { staticvoidMain() { intI=123; objecto=I;//implicitboxing I=456;//changethecontentsofi System.Console.WriteLine("Thevalue-typevalue
阅读全文
摘要:另一个重要的优化是减少函数调用的次数。虽然现在许多编译器已经针对函数调用进行了重大优化,但是对于函数携带的重大开销还是稍存疑虑。为了验证这一点,我们可以编写一个小程序,它把一个只执行返回语句的函数调用了10 000次,你将开始感觉到函数调用的代价,如果函数传递参数或者返回值,那么花费的时间将会更长一些。常见的惯例是使用内联代码或者宏,把函数直接隐藏在算法中。研究编译器的库(如果可用,应该总是能得到源代码),并且你将会发现许多函数已经被实现为宏。要尽可能使用这些宏,并且要留心观察它们的副作用。如果你仍然必须调用函数并且不能获得所需的性能,可以考虑将供应商的源代码直接复制到你的算法中。这是一种危险
阅读全文
摘要:在计算机领域,一项正在进行的工作是,通过对算法进行改进以求获得最佳的性能。这种工作通常采用以下两种策略之一:优化现有的算法或者开发新的算法。这些策略具有截然不同的目标,应当加以区别看待。在优化算法的时候,一般不会尝试使其性能方程降级。例如,我们知道冒泡排序的平均性能是O(N2-N)。如果你必须使用冒泡排序,那么将希望确定在冒泡排序中执行的动作所耗费的时间非常短。也就是说,希望它的两个主要操作(比较列表中的元素并交换它们)执行得非常快。在应用程序的上下文中,需要付出相当大的努力来确保算法的实现是经过完全优化的。例如,需要确保在内存中而不是在磁盘上交换元素。通过处理每个数据项的处理所需的时间,可以
阅读全文
摘要:除了最直观的应用之外,算法是所有程序的核心和灵魂。算法一般被设计用于以最小的代价高效地解决特定的问题。算法的价值一般取决于两方面因素:如何恰当地解决问题以及如何高效地实现解决方案。这些是算法分析的定性和定量方面。对于许多算法,质量不是一个问题。例如,对于排序算法,必须保证每次都对所有元素正确地进行了排序。一旦出错,就必须丢弃它并且严格说来不能将其视为一种算法。在其他领域,不能基于这种简单的通过/失败测试来度量质量。例如,在第4章中介绍的Soundex算法允许检索听起来相同的单词或名字。与排序算法不同,可以调整Soundex算法,以寻找接近的匹配或者相当宽泛的匹配;这取决于实现算法的方式和开发人
阅读全文
摘要:如果许多个体有着共同的名字,那么我们可以认为它们同样有着相应的概念或形式—明白我所说的吗?明白。让我们以任意一个普通的事物为例。我们的世界中有许许多多的床和桌子,是吗?是的。但这里仅仅存在两个它们的概念或形式:一个是床的概念,一个是桌子的概念。确实如此。而任何工匠都是遵循这种概念来制作我们所使用的床和桌子的。—柏拉图(公元前360年),《理想国》第十卷在2008年的第7届设计思想研讨会上,每个发言人都对四个同样的设计小组会议作报告。3 视频和打印件都提前很好地分发下去了。来自雷丁大学的Rachael Luck在架构会谈中提出一个之前没有引起任何人注意,而后又被大家一致认同的实体:设计概念。毫无
阅读全文
摘要:《牛津英文词典》对设计这个动词作了如下定义:To form a plan or scheme of, to arrange or conceive in the mind ... for later execution.对……形成计划或模式,运用思维整理或考量……以便后续执行。这一定义的精髓在于计划、思维和后续执行。所以,一个设计(名词)是一种被创造出来的事物,它先于被设计的事物出现且与之相关,但又有所区别。英国作家、戏剧家Dorothy Sayers在她那本发人深省的著作《The Mind of the Maker》里,将创作的过程分为了三个不同的阶段,她称之为构想(Idea)、精神(Ene
阅读全文
摘要:到这里,我们理想的应用程序的轮廓应该很清楚了。应用程序应该基于无绪原则来开发,尽量让最终负责集成的相关人员不需要深入了解系统也可以把集成工作做好。所以,我们理想的应用程序应该基于模块化架构来开发,可以由散布在世界各地的独立开发团队分别负责编写相应的模块。他们可以按照自己的日程来安排工作,以达到最终的目标。但这种做法却存在一个重要的问题,那就是模块间的关联关系。大多数模块并不能孤立存在,它们要依赖于其他模块提供的环境。只有少数模块才可能完全不依赖其他模块而独立对外提供功能。实际上,大部分模块化的组件都需要其他组件为其提供服务。这就意味着这些模块的开发人员需要去发现和了解如何使用外部模块提供的AP
阅读全文
摘要:模块化的应用程序是由分布式团队开发出来的独立组件组成的。这些独立的组件通常都会提供一个自己的API,当然在具体执行的时候,也需要第三方组件的API或者其他功能才能保证正确运行。例如,Tomcat服务器需要Java运行时实现。同样,标准的C++模板库也需要libc,这样才能调用printf方法。如果使用了大量的组件,那么面临的最大问题就是能否看清整个应用的全貌。只有理解了整个系统以后,才能理清楚模块间的交互关系。在上一节中,我们可以看到一个组件的API只会把其最重要的功能给暴露出来,大部分情况下,用户无需关注其内部的实现,只需要集中精力了解API即可。但如果系统包含成千上万个组件的话,光是组件A
阅读全文
摘要:无绪的模型需要利用全世界范围的软件项目中大的组件模块,以装配的方式来开发应用程序。要尽可能多地复用,而不要从零开始编写软件,这样就可以保证产品团队能将重点集中在软件的独特功能上,即应用程序的具体业务逻辑上。这样,开发人员就无需花费时间去创建和编写基础设施,重用现有的框架和由第三方提供的功能库即可。相信现在不会有人因为自用的原因去写一个SQL数据库服务器软件,而是会使用一些商业或者开源的数据库。创建一个私用的数据库可以说是一种低效的资源浪费。对于软件技术的其他领域也是如此。Web服务器、编程语言及其功能库、集成开发环境还有富客户端程序框架①都已经有设计良好的组件可供使用了。就像活动板房,只需将其
阅读全文
摘要:我们已经看到,简单和优雅都不会作为评价软件部署成功的标准。就像哲学,理性主义过于学术化了,不能帮助我们去理解现实世界中的日常问题。而那种推土机式的务实工作方式,却让人感觉很有发展前途:把市场上可用的组件装配成应用程序,不管用了多少功能库,都把它们粘在一起,只要它能用,也不需要了解清楚个所以然出来。虽然很多人不认同这个观点,但它的确是当今大型软件项目不由自主采用的做事风格。然而,既然现在已经认识到了这个问题,我们能否使无绪的方法更好地工作呢?推土机式的工作方法的优点在于,即使参与者(如程序员)不完全了解系统情况,也能得到不错的结果。第一次听到这种话你可能会吓一跳。但事实上,我们一直都是这么干的。
阅读全文
摘要:我敢肯定本书的很多读者对于我美化无绪会愤愤不平。现在这样一种重量级的开发方式往往会把一个程序变成一堆垃圾,怎么能用这种开发方式取代以前那种优雅的软件开发呢?如此丑陋的应用怎么能够保证其正确性呢?其实答案是肯定的,我们只需要去仔细看一下我们大部分人现在所担心的事情。科学理念仍然深植在我们心中,并始终影响着我们的思维方式。这些由多个世纪以前的古希腊人创建的科学,仍然能在今天影响着我们如何看待真理和美丽之间的关系。对古希腊哲学家来说,最有价值的科学知识其定义是非常简明的,这些知识不会被他人误解,其意义清楚明白,绝不含糊,于是几何学就成为所有科学中最有价值的。这是因为几何学不是一个关于现实世界的科学,
阅读全文
摘要:在21世纪的前10年中,大部分软件系统都可以用脏乱差来形容,没有哪个软件的设计配得上用优雅这个词。这主要是因为开发时,大家的目标就是用尽可能少的资源来尽快地开发完项目。为了达到这个目标,开发团队往往直接复用现有的一些软件框架,而完全不顾这些重量级的框架其实是远远超出他们的需要。发布网页最近,我想在自己的服务器上放一个动态网页。有两种方法来完成这件事,一是在某个端口开一个套接字,读入数据流,再写点什么作为应答;二是基于现有的一些技术组装个系统。这两种方法我都尝试了一下。首先尝试的是第一种方法,即“从零开始”。我先阅读HTTP协议规范的相关文档,解析读入的头文件,再写了输出。完成这些功能的代码量不
阅读全文
浙公网安备 33010602011771号