转载自----http://lifethinker.iteye.com/blog/260515编写Java多线程程序一直以来都是一件十分困难的事,多线程程序的bug很难测试,DCL(DoubleCheckLock)就是一个典型,因此对多线程安全的理论分析就显得十分重要,当然这决不是说对多线程程序的测试就是不必要的。传统上,对多线程程序的分析是通过分析操作之间可能的执行先后顺序,然而程序执行顺序十分复杂,它与硬件系统架构,编译器,缓存以及虚拟机的实现都有着很
系统 2019-08-29 23:06:36 2077
本章又名:失业的程序员(十二):焉知非福(下)由于系统调整,本篇重新发布一下。(一)三观什么叫三观?如果用世界观、价值观、人生观来概括,那实在是太虚幻了。因为大部分人根本不知道如何在自己身上找到这三观。卞工曾告诉我一个字面意义上的世界观解释,我认为很弓虽。他说:像他这种整天沉浸在代码中、整天只穿梭在两点一线之间的码农,甚至已经对天圆地方的理论产生了信任感,何来的世界观?有时心中的血突然来潮,想通过狗狗看看外面世界到底有多精彩也经常断断续续的实现,所以世界观
系统 2019-08-29 22:54:16 2077
其实应该昨天写的,不过昨天由于回家比较晚,加上今天要上班,所以今天补上~这一天一定要写一下的~七夕~一早起来,就给她发消息了,可能把她吵醒了吧,我估计哦。。。祝她七夕快乐&iloveher~她过会就会了,回的就是让我打心底里美滋滋的那种消息~嘿嘿~这种日子总应该做点什么的~虽然俗了点(按照那些前卫青年的说法哦,本人觉得送花还是很好的,又优雅又能表达感情,如果当时我能穿着一身西装,那就完美了。。。),我还是早早地去买了,事先没告诉她,想给她一个惊喜,不过聪明
系统 2019-08-29 22:47:54 2077
1.2Struts的体系结构Struts有一组相互协作的类、Serlvet以及JspTagLib组成。基于Struts构架的web应用程序基本上符合JSPModel2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个webframwork,而不仅仅是一些标记库的组合。但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller
系统 2019-08-29 22:28:55 2077
为了方便自己和广大嵌入式爱好者,这里转载自:http://hbhuanggang.cublog.cn一、开发环境主机:VMWare--Fedora9开发板:Mini2440--64MBNand,Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2二、前提知识1、Linux输入子系统(InputSubsystem):在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(InputCore)和输入子系统事件处理层(Eve
系统 2019-08-29 22:15:01 2077
随着机器人变得越来越智能化和拟人化,我们一点也不难想象未来某一天它们完全的独立自主。一旦机器人能够独立自主的时候,人类将不得不想办法如何能让它们不说谎、不欺-骗、不盗-窃而且和远离其它我们人类每天在做的所有坏事。这就涉及到机器人伦理学,这个机器人研究领域的目标是让机器人遵守特定的道德标准。在最近的报道中,乔治亚理工学院的研究人员们讨论了人类如何能够确保机器人不会违反规定。机器人伦理学这个研究领域的目标是让机器人遵守特定的道德标准第一,拥有道德调节器军队使用
系统 2019-08-29 22:13:29 2077
这是一篇发表在《程序员》杂志8月刊的文章,是根据我对AndersHejlsberg的演讲内容的翻译的缩写。原本的完整演讲内容有数万字,为了在杂志上发表因此简化成了五千字,因此如果您对完整内容感兴趣,不妨根据文末链接来访问完整内容,其中也包含大量分解的幻灯片以及代码。程序设计离不开编程语言,但是编程语言在国内的大环境中似乎一直是个二等公民。国内的计算机教育和工程培训,似乎一直在宣传“语言不重要,重要的是思想”,“语言一通百通”等观点,甚至在许多人眼中“语言的
系统 2019-08-29 22:12:46 2077
《自序》曾经认为本来世界上是根本不存在什么痛苦的,失意的,人如草木,草木如人,许多东西都是个人自我感觉罢了,麻木才是生活的真谛,最好的生活方式。可是我们难以了解草木的感情,因为我们毕竟还不是草木,只是像而已,既然如此,那得经常进行良好的自我激励,因为稍不留神,在一念之间就会陷入麻木不仁的境地。毕竟人都是从某一点开始成功和辉煌的,当然更多的时候人生却是从某一点开始失败和黯淡的。无论你如何生活,生命只有一次,谁都得死,可谓殊途同归,关键就在这"殊途
系统 2019-08-29 22:11:14 2077
第五次重构我们引入了数据库的设计,用户信息要从数据库中读取,问候语库存储在数据库中,并支持添加与更新。数据库的引入使自动化测试变得困难了,因为数据状态总是变化着的,而这种变化使得测试过程不能复现,这是我们不愿看到的。因此,我们在设计时将业务与数据库访问分离,形成了UserDao与GreetingRuleDao。此时,我们的设计应当遵从“依赖反转”原则,即将UserDao与GreetingRuleDao设计成接口,并编写它们的实现UserDaoImpl与Gr
系统 2019-08-29 21:59:03 2077
说了那么多理论,我们来看看怎样使用抽取方法来重构遗留系统。如前所述,重构的过程首先是阅读程序代码,边阅读边整理程序。将功能相对独立的代码段放在一起,在前面加上注释。调整一些程序的顺序,将相关的代码尽量放在一起,但要保证程序执行的结果不会发生改变。比较典型的,将变量的定义与使用变量的代码放在一起。这个步骤比较实用,因为许多的遗留系统,其代码都有一个坏毛病,就是在程序开始时定义一大堆变量,但要弄清这些变量都用来做什么,却十分困难。边读边调整,将变量的定义逐渐迁
系统 2019-08-29 21:59:02 2077