现采应用dijkstra算法求从原点计算从源点1到其它项点间最短路径。填写下表?

软件越来越庞大日益蚕食世界。但是在计算硬件指数性发展了几十年的时间里软件的开发方式却基本保持不变。随着软件变得越来越庞大对关键系统的渗透越来越罙入,软件正在积累着越来越高的风险我们如何才能排除那些看不见的定时炸弹,避免软件给世界带来末日呢《大西洋月刊》的一篇長文对此进行了分析。本文较长请保持耐心。

2014年4月10日晚上整个华盛顿州的911服务断了6个小时。打电话求助的人听到的都是忙音当一个陌生人试图闯入自己家时一位西雅图的女性至少拨打了37次911都没打通。后来那人从窗户爬进了客厅她拿起了一把菜刀那人才逃走了。

那次911垺务中断是当时有报道最大的一次原因后来被追查到科罗拉多Englewood市一台服务器的软件上。该服务器由系统提供商Intrado运营上面保存了一个计數器,记录的是路由给全美911调度员的呼叫数Intrado的程序员给这个计数器设置了一个阈值上限。他们选择的数字是100万

4月10日午夜过后不久,该計算器就超过了这个数字从而引发混乱因为这个计数器是用来给每个电话生成唯一标识的,所以新的来电都被拒绝了同时由于这些程序员并没有预计到会出现这样的问题,他们并没有设置告警来唤起注意没人知道发生了什么事情。服务着1100万的美国人的华盛顿州、加州、佛罗里达州、卡罗莱纳州以及明尼苏达州的调度中心努力想要弄清楚呼叫者收到忙音究竟是怎么回事。结果直到早上他们才意识到罪魁祸首是Intrado的软件而补救措施只需要改变一个数字。

不久前紧急呼叫还是在当地处理的这样的话中断也是小规模的,而且容易诊断和修複手机的崛起以及新能力带来的希望——比如发短信给911或者发视频给调度员等——推动着依赖于互联网的更复杂系统的开发。结果就是囿史以来第一次出现了全国性的911中断现在这么多年来已经出现过4次了。

有个说法是软件正在“蚕食世界”一度由机械或者人工控制的關键系统越来越依赖于代码。也许没有比2015年的那个夏天更清楚表明这一点的案例了因为离港系统出了问题,联合航空公司的飞机被迫停飛;纽约证交所在系统升级后交易被挂起;华尔街日报网站的首页崩溃;西雅图的911系统再次宕机这次是因为另一个路由器出了问题。这麼多软件同时失效让人一度以为这是一次联合的网络攻击但更令人感到害怕的是随后大家才意识到这些都是巧合。

研究软件安全达35年的MIT航空工程教授Nancy Leveson说:“我们做机电系统的时候往往会想尽一切办法去进行测试”因为软件错误导致6位病人死亡的放疗机器Therac-25的报告就是她做嘚。“我们往往会考虑设备能够做的所有事情会进入的所有状态。”比方说控制铁路平交道列车运动的几点联锁的配置就那么多,几頁纸就能把整个系统描述清楚而且你可以把每种配置都实际跑一遍来看看会发生什么。一旦做好测试好之后你就可以清楚知道在处置嘚是什么。

软件就不同了只需编辑文件里面某处的文字,同一块硅晶就可以变成自动驾驶仪或者库存管理系统这种灵活性既是软件的渏迹,也是它的诅咒因为可以廉价地改变,所以软件总是在变;同时因为它跟现实的一切都是脱钩的——所以占据相同空间的程序可以仳另一个复杂上千遍——软件往往会不受束缚地发展下去Leveson写道:“问题在于我们在尝试建立超过自己管理能力范畴的系统。”

软件完全按照我们的指示行事软件失败的原因在于我们告诉它做了错误的事情。

关于工程失败我们标准的思维框架是在二战后不久形成的(在软件出现之前针对机电系统)。其想法是通过把部件做得可靠(比如引擎可承受40000次起飞与降落周期)以及为那些部件故障做好预案(准备2個引擎)来把东西做得可靠但软件不会坏掉。Intrado的错误阈值不像导致飞机失事的缺损铆钉软件完全是按照人的吩咐行事的。实际上软件執行得非常完美它失败的原因在于它被告诉做了错误的事。软件失败是理解的失败以及想象的失败Intrado其实是有个备份的路由器的,如果能自动切换过去的话几乎马上就能恢复911服务。但“当时发生的情况是应用逻辑并没有要执行自动修正行动”

这就是通过代码而不是实體做东西的麻烦。如Leveson总结那样:“复杂性是肉眼看不见的”

现在正在进行的改变软件制作方式的尝试似乎都始于同一个前提:代码实在昰太难琢磨了。那么在试图理解这些尝试之前弄清楚为什么会这样是值得的:是什么让代码对大脑那么陌生,跟之前的东西那么不一样呢

技术进步往往会改变世界的样子——你可以看着道路铺设下去,你可以看到天际线的崛起但在今天你很难说出什么东西进行着了再慥,因为这些东西经常是由代码重构的比方说,当你踩了汽车油门时你不再直接控制任何东西;脚踏板与风门之间并没有机械连接。楿反你只是给软件提交了一条命令,给引擎补充多少空气是由后者决定的汽车就是你可以坐进去的计算机。方向盘和踏板一样可以是鍵盘的按键

跟一切其他东西一样,汽车也被计算化以促进新功能当一个程序负责风门和刹车时,在你距离另一辆车太近时它可以放慢車速或者控制燃油喷射来帮助你省油。当它控制转向器时它可以在你开始漂移时保持在自己车道内,或者引导你进入停车区没有代碼你实现不了这些功能。你可以试试没有代码的汽车就会变成庞大的、重达40000磅但无法移动的发条装置。

软件让我们做出了有史以来最复雜的机器但是我们几乎都没注意到,因为所有的复杂性都被包裹进小小的芯片里面以及数百万行的代码之中但仅仅因为我们看不见复雜性并不意味着它就没有了。

著名的荷兰计算机科学家Edsger Dijkstra在1988年曾经写到:“必须思考一个头脑此前从未面临过的概念层级” Dijkstra把这当成一种警示。随着程序员热切地想要把软件植入到关键系统当中软件日益成为建造世界的关键——Dijkstra认为他们已经高估了自己。

软件工程师并不悝解也不关心自己试图解决的问题

变成之所以如此困难是因为它需要你像计算机一样思考。在计算的早期这种陌生感会更加鲜明一点當时的代码还是0、1的形式。跟这些枯燥数字打交道的程序员与其实际要解决的问题距离实在是太疏远了你不可能看出他们是在计算火炮軌迹还是在模拟井字棋游戏。像Fortran、C这样的编程语言以及“集成开发环境”的引入尽管有所改变但却掩盖了这种基本的异化——事实上程序员并不直接解决问题,而是把时间花在给机器编写指令上面

MIT软件安全专家Leveson说:“问题在于软件工程师并不理解也不关心自己试图解决嘚问题。”原因在于他们太过埋头于让自己的代码可以工作了她说:“软件工程师喜欢为编码错误提供各种工具。”她指的是IDE“但软件出现的严重问题其实跟需求有关,跟编码错误无关”比方说,当你写代码控制汽车的风门时重要的是何时以及如何打开风门打开多夶的规则。但这些系统已经变得太过复杂任何人脑子里都记不住所有东西。Leveson说:“汽车的代码现在已经超过了1亿行你无法预料所有的倳情。”

2007年9月Jean Bookout载上自己最好的朋友开着一项丰田凯美瑞正行驶在高速公路上,突然油门好像被卡住了一样她抬脚松开油门,汽车并没囿放缓;她试着踩刹车但却似乎失去了动力。当她以50英里的时速转入匝道时她踩下了紧急刹车车子划出了一道150英尺长的滑痕然后撞上蕗边的路堤。乘客在这次事故中死亡Bookout一个月后才从医院中醒来。

这次事故是众多对丰田汽车所谓的突然加速诉讼案中的一起丰田把事故原因归咎于垫布的糟糕设计、踏板的“粘性”以及司机错误身上,但局外人怀疑该负责的应该是软件瑕疵美国国家公路交通安全管理局征召了NASA的软件专家来对丰田的代码进行严密的审核。在将近10个月后NASA仍未发现软件是事故原因的证据——但同时他们也说自己无法证明軟件不是。

后来有人终于在Bookout事故的诉讼过程中找到了其中令人信服的关联原告方的鉴定证人Michael Barr有一个软件专家团队花了18个月的时间来研究豐田的代码,捡起了NASA丢下来的东西Barr把他们发现的东西称为是“面条式代码(spaghetti code,多页嵌套的if语句与for循环包含大量复制-粘贴的过程代码,苴没有合适的分割)”如果代码一项功能一项功能地堆积起来共生了很多年的话就会变成纠缠不清无法跟踪,跟不用说进行穷尽测试去縋查缺陷了

如果软件失灵了也是由同样一套程序处置的话,则这套程序是无法胜任的

Barr的团队利用同款凯美瑞证明了其实车载计算机有超过1000万种方式导致突然加速事故。他们证明了只需一位的翻转(从0变成1或者从1变成0)就能让汽车失去控制丰田的自动防故障代码不足以阻止这一点。Barr作证说:“你让软件看管软件如果这个软件失灵了还是由同一套程序或者应用来挽救局面的话是难堪此任的,因为它已经夨效了”

Barr的证词为Bookout及其朋友的家庭争取到了300万美元的赔偿。据《纽约时报》这是针对丰田的诉讼案中首起就电控节气门系统进行的审判,也是丰田首次被发现对突然加速事故负责的案子后来丰田总共召回了超过900万辆汽车,赔付金额接近30亿美元才了结了相关争端

软件將来还会面临更多的坏日子。我们今后要更擅长做软件就变得非常重要因为如果不行的话,随着软件变得越来越复杂以及连接更紧密隨着软件控制了更多的关键功能——今后的日子会变得更加糟糕。

问题是程序员已经很难跟上自己的创造物自从1980年代以来,程序员的工莋方式以及使用的工具几乎都没什么变化大家逐渐开始担心这种情况难以为继。微软的IDE工具Visual Studio首席软件开发者Chris Granger说:“即便是非常好的程序員对自己的系统理解起来也很困难” Granger在微软的时候曾经安排过一次对Visual Studio的端到端研究。这是他唯一完成过的一次类似研究他用了1个月的時间在单面镜背后观察大家是怎么写代码的。“这些人怎么用工具如何思考?如何坐在计算机前有没有碰鼠标?所有这一切都有教条泹并没有经过经验测试”

发现令人吃惊。他说:“Visual Studio是全世界最庞大的单一软件之一它的代码超过了5500万行。我在研究中发现其中98%都是不楿干的也就是说大部分的代码都没有针对大家面临的根本问题。我的最大感受是基本上大家就是在脑子里玩计算机”程序员就像棋手丅盲棋一样——其思维精力都放在想象拼图在什么地方上了,以至于已经没有精力再去思考比赛本身

过去40年计算机每18个月就能力翻番。為什么编程却一点都没有改变

Resig在自己的学生身上也注意到同样的事情。Resig是著名的JavaScript(有一半网站都是JS编写的)程序员也是在线教育网站鈳汗学院的技术领导。2012年初的时候他一直在纠结于网站的计算机科学课程。为什么学编程就这么难呢根本问题似乎在于代码太过抽象叻。开发软件不像用冰棍棒造桥你可以看清楚冰棍,可以触摸粘胶要想“造”程序,你得敲字当你想改变程序(无论是游戏、网站戓者物理仿真)的行为时,你改变的其实是文字所以程序写得好的学生是那些可以将代码在脑子里过一遍,像计算机一样思考能跟踪烸一次中间计算的人。Resig像Granger一样开始猜测编程是不是就得这样。过去40年计算机每18个月就把能力翻番为什么编程却一点都没改变?

这两个囚同时在相同情况下思考同一个问题并不是偶然两人都看了同一场演讲,那是计算机研究学者Bret Victor个软件工程学生准备的演讲在2012年2月被放箌网上之后火了,它做出了两个大胆的判断第一是我们写软件的方式基本上已经坏掉了。其二是Victor知道该怎么修正

Bret Victor不喜欢写代码。他说:“这听起来很怪异当我想要做东西,尤其是想用软件做东西时我得排除这种天生的厌恶感,因为我操纵的不是我想做的东西我只昰在文字编辑器写一堆的文字。”

“我有着相当强烈的信念认为这么做是错的”

Wallace的风采。尽管他管理着一个研究未来计算的实验室但楿对于技术他似乎对利用技术的人的脑子更感兴趣。就像任何好的工具制造者一样他会从技术和人性的角度去审视这个世界。在那次令怹一举成名的演讲上Victor提出了他的发明原则:“创作者需要跟所创造的东西有直接关联。”编程的问题正是违背了这一原则所以软件系統会如此难以琢磨,出现的bug会如此这多:程序员从写的第一页文字开始就是跟要做的东西是脱节的

他说:“我们当前对计算机程序的概念是直接源自上世纪50年代的Fortran和ALGOL语言。那些语言是针对穿孔卡片设计的”现在C或者Java等语言的代码都是屏幕上的字符形式而不是一摞打洞卡爿,但还是像过去一样死气沉沉还是一样的不够直接。

在Victor看来盯着文字编辑器来理解癌症的做法是可怕的。

文字处理有一种类比过詓你在编写文档程序里面看到的就是文字本身,要想改变布局或者字体、边距你得写特殊的“控制码”,或者告诉计算机“这部分文字應该是斜体字”这样的命令麻烦的是除非你把文档打印出来否则是看不到效果的。你很难预测自己会得到什么你必须想象代码如何被計算机解释——也就是说,你必须在脑子里运行一遍

然后就出现了WYSIWYG(所见即所得)。当你把一段文字标记成斜体时屏幕上的文字也会楿应倾斜。如果你希望改变边距你可以直接拖动屏幕顶部的标尺——然后看到改变的效果。文字因此感觉就像是真的可以随便摆弄的東西。只需要看着你就能知道自己有没有做错任何人只要能在页面上点击都能对复杂系统——文档布局以及格式引擎——进行控制。

Victor的觀点是编程也应该如此在他看来,像设计自适应巡航控制系统或者试图理解癌症这样的重要工作靠盯着文本编辑器看来完成是可怕的確保有朝一日不需要这样做是程序员的恰当工作。

这个并不是什么疯狂的想法因为有不少先例。比方说Photoshop把强大的图像处理算法交到了甚臸不知道算法是什么的用户手中这是一款非常复杂的软件,但那种复杂就像合成器式的复杂上面有开关旋钮、按键、滑块等,用户可鉯像玩乐器一样去学习Squarespace做了一款工具让用户只需点击就能建立网站,而不是用HTML和CSS写代码它已经强大到可以做一度只能由专业web设计师才能完成的工作。

但这只是一小部分例子压倒一切的现实是,当有人想要用计算机做点有趣的东西时他们基本上都必须写代码。身为理想主义者的Victor对此的看法是这不是什么机会而是大多数程序员的道德沦丧。他的演讲就是战斗号角

演讲的核心是一系列试图表明现有针對各种问题(电路设计、计算机动画、调试算法)的工具究竟有多原始的演示,同时也展现了更好的工具可能的样子够讽刺的是,抓住叻每个人的想象的一个演示却是看起来最为微不足道的一个演示展示了一个分屏,左边是类似超级玛丽的游戏右边是控制游戏的代码。随着Victor改变代码游戏世界里面的东西也会发生变化:他减少了一个数字,也就是重力的强度然后马里奥的角色就漂浮起来了。他增加叻另一个数字也就是玩家速度,然后马里奥就会疾驰而过

假设你想给游戏设计一关,让主角跳上一只乌龟然后反弹出去过去游戏程序员往往要分两阶段解决这类问题:首先,你盯住控制马里奥如何跳跃、跑得多快、乌龟弹性如何的代码然后在文字编辑器进行一些修妀,用你的想象力来预测会是什么效果然后你重放游戏来看看实际会发生什么。

Victor希望可以更加直接一点他说:“如果你有一个及时的鋶程(指的是马里奥过关的路径),并且想马上看到变化情况你得把时间映射到空间。”他点击了一个按钮上面显示的不仅是马里奥現在在哪里,而且也会显示出未来每一刻的位置此外,这条预测路径还是反应式的:当Victor改变游戏参数(通过拖拽鼠标完成)时路径的形态也会跟着变。就好像拥有了游戏的上帝视角整个问题已经简化为玩弄不同的参数,就好像调整立体收音机的旋钮一样直到你让马裏奥完成工作。有了合适的界面你几乎都不用跟代码打交道,而是直接操纵游戏的行为

观众第一次看到这个时都赞叹不已。他们知道洎己看到的不是小孩的游戏而是这个行业的未来。大多数软件都牵涉到以复杂的方式展现出来的行为Victor已经表明如果你想象力足够的话,就可以开发出手段来看到那种行为并且改变它就好像自己动手一样。一位看过这次演讲的程序员随后写到:“突然之间我所有的工具嘟感觉过时了”

Resig看到这场演讲时,他把自己给可汗学院转变的编程教程给废弃了他希望网站的编程练习能够像Victor的演示一样工作。左手邊会是代码右手边则是运行的程序:这可以是一幅图画,一场游戏或者一次仿真。如果你改变代码它马上就会改变画面。Resig这样描述這个方案:“在一个真正响应式的环境里你可以彻底改变学生学习编程的方式……他们可以马上看到结果,并且在没有明确解释的情况丅凭直觉了解到底层系统固有的内在运作方式”可汗学院已经成为全世界最大的计算机编程课,每个月平均有100万用户在积极地使用这个程序

在微软做Visual Studio的Chris Granger也受到了鼓舞。在看到Victor演讲视频的那段日子里他开发了一个新的编程环境原型。其关键能力是可以马上对程序的行为提供反馈你可以在控制系统的代码旁边看到系统是怎么做的。这就好像是脱掉了眼罩Granger把这个项目叫做“Light Table”。

Table筹集资金项目在编程界引起了轰动。在一个月的时间里项目就募集到了20多万美元。这个想法传播出去了现场感(liveness)的概念,也就是马上就能看见数据流经程序的情况随后变成了Google、苹果旗舰编程工具的功能。iPhone和Mac的默认开发语言Swift是苹果为了支持名为Playground的环境而从头开始开发出来的这门语言正是矗接受到了Light

但在看到自己的演讲最终产生的影响之后,Bret Victor的希望破灭了他后来说:“很多东西似乎误解了我说的话。”当大家邀请他出席會议讨论编程工具时他知道情况不对头了。他说:“每个人都以为我对编程环境感兴趣”其实他感兴趣的是大家如何看待和理解系统——如他所概括那样,是“动态行为的直观表现”尽管代码日益成为创建动态行为的工具选择,但仍然是理解行为最糟糕的工具之一“发明原则”的要点是要表明你可以通过在系统行为与代码之间建立直接联系来缓解这一问题。

我不敢肯定代码是否一定要存在

在随后嘚两场演讲“停止画死鱼”以及“画动态可视化”中,Victor又深入了一步他演示了两个自己开发的程序——第一个是给动画家准备的,第二個是给试图可视化自己数据的科学家准备的——这两个过去都需要写很多定制代码但现在被简化为WYSIWYG(所见即所得)界面Victor认为同样的做法幾乎可以应用到编写代码解决的每一个问题上面。他说:“我不敢肯定代码是否有存在的必要或者至少软件开发者有存在的必要。”在怹看来软件开发者的恰当角色是创建工具来消除对软件开发者的需要。只有这样有着最紧迫计算问题的人才能直接把握这些问题而不需偠以代码为中介

当然,为了做到这一点你得让程序员本身买账。Victor在最近的一篇论文中恳求专业软件开发者不要再把自己的天才浪费到開发Snapchat以及Uber这样的app上他写道:“日常生活的便利性不是重大问题。”相反开发者应该把关注点放到科学家和工程师身上——“那些人做嘚工作才是重要的,而且更关键的是他们使用的工具真的非常的糟糕。”他还写道像这类令人激动的工作,尤其是一类“基于模型设計”的工具已经在开发当中而且进行了好几年了,但大多数程序员对此一无所知

“如果你看看自己手上所有的工业用品,包括你自己鼡的公司用的,里面唯一不是工业的东西就是代码” Eric Bantégnie是Esterel Technologies的创始人,这家法国公司做的是开发安全关键软件的工具像Victor一样,Bantégnie并不認为工程师应该靠往IDE呼入几百万行代码来开发大型系统他说:“没人想要手工造一辆车。代码是在很多地方还是手工作坊如果只是人笁敲10000行代码还可以。但有些系统有3000万行代码比如空客,或者1亿行代码如Tesla或高端汽车——这些系统就变得非常非常复杂了。”

Bantégnie的公司昰业界利用基于模型的设计的先驱之一有了这种工具你不再需要直接编写代码。相反你创建的是一种描述程序应该遵循的规则的流程圖(“模型”),然后计算机会基于那些规则替你生成代码比方说,如果你要给电梯做控制系统规则之一可能是当门打开时,有人按丅去大厅的按钮时你应该关上门,然后开始移动电梯在基于模型的设计工具里,你会用一张小小的图来表示这条规则就好像在白板仩画出这条逻辑一样,做出代表不同状态——如“门打开”、“移动”、“门关闭”等的方框以及定义如何从一个状态转移到另一个状態的线段。这种图解使得系统规则变得明显:只需看着它你就能看到让电梯移动的唯一办法就是关上电梯门或者唯一让门打开的办法是讓电梯停下来。

大家知道怎么写代码问题是该写什么代码。

但这还没到Photoshop那种效果当然,Photoshop的魅力在于你在屏幕上操纵的图画是最终产品相比之下,在基于模型的设计中你在屏幕上的图画更像是蓝图。尽管如此用这种办法做软件就定性而言仍然跟传统编程有着很大的鈈同。在传统的编程中你的任务是将复杂规则转换成代码;你大部分的精力都换在进行这种转化上,而不是考虑规则本身而在基于模型的方法中,你拥有的全部就只有规则所以这就是你要花时间考虑的。这样一来你关注机器就会少一点而把更多的焦点放在试图让它解決的问题上

Bantégnie说:“通常软件编码的主要问题——我本人也是编码者——并不是编码者的技能。这些人知道如何去编写代码问题在于偠编写什么代码。因为大多数需求都属于自然语言是含糊的,一个需求是永远也无法做到极端精确的写代码的人往往会有不同的理解。”

按照这种看法软件就变成难以驾驭的了,因为媒体描述软件应该做的事情——会话、文字描述、在纸上画画——这些事情跟媒体描述的软件能做的事情也就是代码本身太不一样了。从一边到另一边中间丢失的东西太多了基于模型的设计这一想法的背后就是想填补這一鸿沟。表达自己需要什么的系统设计师以及自动生成代码的计算机采用的都是同一个模型

当然,这种办法想要成功的话有很多工莋都需要在项目甚至还没开始前就得完成。得有人首先开发工具来建立大家习惯的模型——那种就像自己平时做的笔记和草图一样的模型——但同时计算机理解起来也不会产生歧义他们必须开发出一款程序将这些模型变成真正的代码。最后他们还得证明生成的代码永远都會做它们该做的事情Bantégnie说:“开始20年的后台工作让我们受益匪浅。”

2012年被ANSYS收购的Esterel Technologies诞生于1980年代当时的法国核工业和航空业越来越难以避免bug的问题,因为担心关键性安全代码复杂性问题膨胀而开始了这方面的研究达索航空的科研负责人Emmanuel Ledinot说:“我是从1988年开始的。那时候我茬做军用航电系统。负责系统集成以及调试的人注意到bug的数量在上升”1980年代机载计算机的数量出现了飙升,每架飞机上的计算机已经由單台变成了10几台每一台计算机分别负责控制、导航以及通信相关的、高度专业化的任务。当来自传感器的数据涌入以及飞行员输入指令時协调这些系统控制飞行需要演奏交响乐般的完美反应Ledinot说:“在合适的时机按照合适的次序处理上百乃至上千的可能事件被认为是bug膨胀嘚主要原因。”

Ledinot由此认定手工编写如此复杂的代码已经难以为继代码究竟在做什么事情已经太难以理解了,想要验证它是否正确工作几乎是不可能的为此他要寻找新的东西。他在一次演讲中说:“你必须理解在像这样的过程中更换工具是极其昂贵的除非你已经无路可退,否则是不会做出这种决定的”

大多数程序员喜欢代码。至少他们理解代码

他开始跟法国计算研究中心INRIA的计算机科学家Gerard Berry合作开发Esterel,這个名字在法语里面是“实时”的合成词Esterel背后的想法是传统编程语言也许擅长描述按照预定次序进行的简单过程——比如烹饪法——但洳果你试图用到大量事件近乎实时以任何次序并发的系统(比如飞机驾驶舱)上面时,就会不可避免地陷入混乱而控制软件发生混乱是危险的。Berry在一篇论文中甚至预测“低级编程技巧对于大型关键性安全系统来说将是不可接受的因为它们会导致行为理解和分析几乎不可荇。”

Esterel的目的是让计算机替你处理这种复杂性这就是基于模型的方案的希望所在:你不再需要编写一般的编程代码,而是建立系统行为嘚模型——在这个例子里面模型关注的是独立事件应该如何处置,如何确定事件的优先次序哪一个事件依赖于其他的事件等等。模型變成了计算机用来进行实际编程的详细蓝图

Ledinot和Berry用了整整10年的时间晚上Esterel使之可用于生产。说:“2002年我们有了第一个可自动生成代码的操作型软件建模环境并且为阵风战斗机生成了第一个嵌入式模块。”今天ANSYS SCADE产品族已经被广泛应用到航空、国防、核电、交通、重工业、医療设备等行业的代码生成当中。Esterel Technologies创始人Bantégnie说:“我最初的梦想是让SCADE生成的代码遍布全世界每一架飞机上现在我们距离这个目标已经不太遠了。”包括控制飞机飞行操纵面的系统在内空客A380几乎所有的关键性安全代码都是由SCADE生成的。

我们早已经知道如何让负责软件变得可靠但在太多的地方我们都选择不这么做。

就像Bantégnie解释那样让计算机而不是人把你的需求变成代码的美妙之处在于你可以确保生成的代码滿足那些需求(其实你可以用数学证明这一点)。基于模型的方案大部分好处来自于在能够实时添加需求的同时确保原有需求得到满足;烸一次变更计算机都能验证程序仍然有效你可以随便调整蓝图而不怕引入新的bug。用FAA的话来说你的代码是可以“在建构的时候修正的”。

尽管如此大多数软件都用传统的方式开发的,甚至在痴迷于安全的航空界也是如此工程师要写好自己的需求,然后再由程序员用C这樣的语言写成代码正如Bret Victor在论文中表明那样,相对而言基于模型的设计是不同寻常的Shivappa说:“FAA的很多人认为代码生成是魔术,因此要求进荇更严格的审查”

大多数程序员也是这种想法。他们喜欢代码至少他们理解代码。替你写代码并验证其正确性的工具利用的是数学的“有限状态机”以及“递归系统”这些东西如果说不是好得令人难以置信的话,那就是晦涩难懂且很难使用

这种事情以前也发生过。呮要编程稍微远离写0、1一步反对声音最响亮的都是程序员。参与阿波罗计划的著名软件工程师Margaret Hamilton(“软件工程”这个术语就是她发明的)說1964年在MIT的Draper实验室的第一年时,她记得有一次会上一个派别的人跟另一派就从“非常低级的机器语言”过渡到更高级的汇编语言的事情吵個不停“最底层的人拼命想要保留这种语言。他们的观点都很相似:‘谁知道汇编语言能不能做好啊’”

她说:“一边的家伙吵得面紅耳赤,开始大喊大叫起来”表示自己对“这帮人情绪化如此严重感到吃惊。”

你可以不停地做测试但永远也无法找完所有的bug。

达索航空的Emmanuel Ledinot指出在汇编语言被至今仍流行的语言如C等逐步淘汰的时候,持怀疑态度的却变成了使用汇编语言的那帮人毫不奇怪,“朝着基於模型的软件开发转变并不容易:他们感觉可能这会又一次失去控制甚至比已经发生的情况还要糟糕。”

基于模型的设计有时候又被称為模型驱动工程(MDE)面前仍面临着根深蒂固的偏见,据一篇最近的论文“一些人甚至认为调查大家对MDE的看法甚至比研究新的MDE技术的需求还要强烈。”

这听起来似乎是个笑话但对于基于模型方案的支持者来说,这是很重要的一点:我们已经知道如何让复杂软件变得可靠但为什么在那么多地方我们都选择不这么做呢?

Newcombe已经在Amazon工作了将近7年并且已经晋升为首席工程师。公司的一些最关键的系统包括零售产品目录以及管理全世界每一台Kindle设备的基础设施等他都有参与。他是备受赞誉的AWS(Netflix、Pinterest、Reddit等都在上面托管)团队的一名领导在Amazon之前,他幫助建立了全球最大在线游戏服务Stream的骨干他是悄悄维持互联网运转的工程师之一。他做过的产品被认为取得了大规模的成功但他一直嘟在担心那些系统的设计会成为一颗颗带来灾难的定时炸弹。

他在一篇论文中说:“在估计规模达每秒数百万请求的系统‘极其罕见’的倳件组合的可能性方面人类的直觉非常糟糕。人类的易错性意味着其中一些更微妙、更危险的bug原来是设计过程犯的错;代码只是忠实地履行设计想让它干的事情但设计未能正确地处理一种特别“罕见的场景”。

Newcombe确信真正关键系统——比方说存储很大一部分web数据的系统——背后的算法应该不仅仅要好,而且要做到完美哪怕一个细微的bug有可能是灾难性的。但他知道找到bug有多困难尤其是当算法变得越来樾复杂的时候。你可以把想做的测试都给做了但永远也无法把所有的bug找完。

很少有程序员在开始编码前绘制自己程序要做什么的草图

這就是他会对一种数学与代码的奇怪混合感到如此着迷的原因。这个东西看起来跟代码很像它会把算法用“TLA+”来进行描述。令人感到惊渏的地方在于这种描述据说在数学上是精确的:用TLA+编写的算法正确与否原则上是可以证明的实际上,它可以让你建立问题的现实模型洏且进行的测试不仅是彻底的,甚至可以说是穷尽的这就是他一直在寻找的东西:一种能写出完美算法的语言。

Actions)”其内涵跟基于模型的设计类似:这是一门记录需求的语言——TLA+称之为计算机程序的“规范”。这些规范然后可以由计算机进行完全验证也就是说,在编寫任何代码之前你就先写出了程序逻辑的简版大纲,以及需要它满足的约束(比方说你要给ATM编程约束可能是永远也不能撤销账户的同┅笔钱超过2次。)TLA+然后再穷尽检查逻辑的所有可能性是否均满足那些约束。如果不能满足它会展示违背约束的情况究竟是什么样的。

這门语言是由图灵奖得主Leslie Lamport发明的现在微软研究院就职的他是“分布式系统”理论的先驱之一。其工作为现代web的众多系统奠定了基础

在Lamport看来,今天的软件bug那么多的一个主要原因是程序员直接就跳到写代码这一步了他在一篇文章中写道:“架构师在砌第一块砖,钉第一颗釘子之前要先画好详细规划图但很少有程序员会在写代码之前画程序应该做什么事情的草图。”程序员着迷于编码的具体细节因为代碼才是让程序变活的关键;把时间花在任何其他地方似乎都属于分心。而且苦思冥想代码的微观力学还能带来耐心的愉悦一种沉思的满足感。但Lamport认为代码永远都无法成为思想的媒介。他说:“当你用编程语言进行思考时你的思维能力其实是受限的。代码会让你只见树朩不见森林:它把你的注意力吸引到单个组件上面而不是程序拼凑出来的更大图景,或者它应该要做的事情——以及它是否按照你的想法做”所以Lamport才要创建TLA+。就像基于模型的设计一样TLA+把你的注意力集中在相同的高级结构、基本逻辑上面,而不是实现那些东西的代码上

Newcombe极其在Amazon的同事还将继续用YLA+来寻找重要系统里面细微但关键的bug,包括被认为是全球最可靠的存储引擎S3背后核心算法里面的bug现在它已经在這家公司内部得到广泛使用。在这个曾经使用过TLA+的人组成的微小世界里他们的成功算不上不同寻常。微软的一位实习生用TLA+找到一个可能會导致每一台Xbox在使用数小时后崩溃的bug欧洲太空总署的工程师用它来重写了一个人类首次软着陆彗星的探测设备的操作系统,而且代码量還只是原来的1/10英特尔用它来定期校验自己的芯片。

不过TLA+只占据了远离主流的小小一个角落如果说它的确有一席之地的话。即便对于像Newcombe這样经验丰富的工程师而言这门语言一开始读起来也是非常的离奇难懂——这完全就是符号的大杂烩。在Lamport看来这是教育的失败。尽管編程诞生自数学但此后基本上已经与之分道扬镳。大多数程序员对那种数学——逻辑和集合论都不是很熟悉而这正是TLA+所需要的。Lamport说:“很少有程序员理解非常基本的概念以及这些概念如何应用到实践中甚至连教编程的老师也是如此。要用比编码更高级的思维去精确思栲而数学其实可以让你的思考更家精确,这种想法完全属于异类因为他们从来都没学过这个。”

我希望如果这些简单的事情都不理解嘚话就不允许他们写程序

Lamport这种数学思维的失败视为现代软件开发的问题:其风险在不断攀高,但程序员却没有相应提升自己——他们还沒有武装到牙齿无法应对日益复杂的问题。他说:“在15世纪大家往往在不知道微积分的情况下建教堂,但现在我并不认为不懂微积分嘚人还可以去建教堂我希望经过适当长的一段时间之后,那些不理解这种简单事情的人是不允许写程序的”

Newcombe就不是很确定程序员应该承担这种责任。他说:“我从Leslie那里了解到他认为程序员害怕数学我的发现是程序员并没有意识到——或者并不认为——数学可以帮助他們处理复杂性。发砸星是程序员最大的挑战”他认为让大家使用TLA+的正在问题在于要说服这帮人这不会浪费他们的时间。就一个物种而言程序员是彻底的实用主义。像TLA+这样的工具散发着象牙塔的臭气当程序员遭遇“形式化方法”(之所以这么叫是因为涉及到对程序的数學性的、“形式化”的精确描述)时,其根深蒂固的直觉就是退避三舍

大多数在大学上计算机科学课程的程序员都曾粗略碰到过一些形式化方法。通常会在一些无足轻重的场合进行演示比如从0开始计数的程序,学生的工作是从数学上证明程序的确是从0开始计数的

Newcombe说:“我得改变大家对形式化方法的看法。”甚至Lamport本人似乎也没有完全把握住这一点:形式化方法存在着形象问题解决这一点的办法不在于乞求程序员做出改变——要改变的是你自己。Newcombe意识到要想让TLA+这样的工具成为编程主流你得开始讲他们的语言。

首先他说当他向Amazon的同事介绍TLA+时,会避免告诉对方它代表着什么因为他害怕TLA+的名字会让他们望而生畏:“行为时序逻辑”恰恰就弥漫着学术界的那股自大的光环,但却令大多数程序员感到反感他还尽量不用“形式化”、“验证”或者“证明”这样的术语,因为这会让程序员想到乏味的课堂练习相反,他把TLA+包装成了一种新型的“伪代码”是迈向真正代码的垫脚石,可以让你对算法进行穷尽测试——而这又让你可以在设计过程盡早进行精确地思考他写道:“工程师是用调试而不是‘验证’的思路进行思考”,所以他把面向Amazon内部进行的讲座题目叫做《调试设计》Newcombe不是惋惜程序员用代码来看世界的事实,而是主动去拥抱它他知道否则的话自己就会失去他们。Newcombe说:“我已经看到一堆人说‘现茬我理解了。’”

代码已经制造了一种全新水平的复杂性同时也让一种新型的失效成为可能。

此后他离开Amazon去了Oracle在那里接着说服新同事給TLA+一个机会。在他看来使用这些工具现在已经成为了一种责任。他说:“我们需要更擅长这个”

“我是自学的,从9岁开始我就开始写玳码所以我的本能是开始写代码。这是我唯一的思考方式:勾勒轮廓尝试,然后有组织地演变”在他看来,这是许多程序员至今仍嘫采用的方式“他们google,上Stack Overflow”(Stack Overflow是一个流行的编程相关问答网站)“他们寻找解决其战术性关切的代码片段,然后拼凑起来不断迭代。”

“这种做法无可厚非直到你遇到大麻烦”

Valasek认为汽车制造商对软件缺陷并未给予足够的重视,于是他们证明一辆2014款的吉普切诺基可以被黑客远程控制他们利用了拥有无线连接的车载娱乐系统实际上跟更多的中心系统(比如控制雨刮器、油门、刹车的系统)也有连接这┅事实。他们利用业余的时间做出了攻击系统并且黑掉了记者驾驶的一辆切诺基,让车子失去控制导致那位记者陷入恐慌。

尽管他们沒有动手但却表明了写出一款更好的软件是有可能的,所谓“汽车蠕虫”可以利用被黑的切诺基车载计算机去扫描和攻击其他的切诺基;如果他们愿意的话他们可以同时访问全美有漏洞的汽车和SUV。有朝一日可以让所有那些车辆突然把方向盘打左或者在高速行驶时切断引擎

Valasek说:“我们需要换种思路来审视软件。”汽车企业一直以来都是将成百上千不同供应商生产的零件组装成最终产品但这些过去一度昰纯粹机械化的零件,现在往往都带着好几百万行的代码尽管其中一些代码——比如自适应巡航控制,自动刹车以及车道保持等的——嘚确让车辆变得更安全了—但也制造了全新水平的复杂性。并且使得一种新型的失效变成可能

在无人车的世界里,软件不能成为事后想法

Esterel背后的法国研究人员Gerard Berry说:“汽车存在着大量的bug。它不像航空电子航空电子对待bug非常认真。并且承认软件不同于机械”汽车业可能跟很多行业一样尚未意识到自己其实也身处软件业。

在丰田案作证的软件安全专家Michael Barr说:“汽车业缺乏了解软件在做什么的软件安全监管鍺”他说NHTSA“只有有限的软件专业知识。”使得基于模型的设计与代码生成对航空业产生吸引力的相同监管压力降临到汽车业身上要慢一些但达索航空的Emmanuel Ledinot认为这种差异也许还有经济方面的原因。汽车根本无法接受零件成本的增加哪怕几美分都不行,因为乘上几百万就是個大数字;因此嵌入到汽车的计算机必须缩减到最少水平这几乎不给尚未调整到精益水平的代码太多的运行空间。“我认为过去10年引入基于模型的软件设计对他们来说代价太高了”

Ledinot怀疑其诱因也在改变:“我觉得汽车业可能会推进。ISO 26262和汽车业可能会慢慢推进关键部件采鼡这种方案”(ISO 26262是2011年发布的汽车安全标准)。Barr的观点也基本一样:在无人车的世界里软件不能成为事后想法。它不能像今天的机票预訂系统或者911系统或者股票交易系统一样搭建那些代码要对道路上的数亿个生命负责,它必须有效这可不是小事情。

Gerard Berry在演讲中说:“计算基本上是不可见的当你的轮胎没气时,你会看见它是瘪的当你的软件出问题了,你看着软件却什么也看不到”

“所以这是一个大問题。”

这个是我调试过的应该不出大問题能用,dzX!/qq_/article/details/ 目录: 数据结构: 连接Access数据库 206    QQ: 工程中的应该会有很多不足之处,注释不清楚或设计逻辑混乱什么的,请多多谅解,麻烦大家替我找bug了. 如果各位有什么问题或是有好的想法,或是编写好了其他数据库方言和数据映射,或是对各种工具类感兴趣,欢迎与我联系!

小刀娱乐网源码是asp+access/mssql架构网站系统,电脑版手机版,平板版无缝切换一个后台同步管理,整站生成静态利于搜索收录dreamweaver打开可视化修改。 专为制作“小刀娱乐网、QQ教程、易语言教程网、LOL教程、QQ业务、代码分享、教程发布”等等图片文字类型的网站而打造 程序前台有艏页、列表页、内容页、会员登录、会员注册、会员个人中心、会员积分体系、会员投稿、投稿编辑、会员签到、在线留言、文章评论、整站搜索等功能。 后台具备批量数据采集、服务器信息、修改管理员个人资料、安全退出、一键安装模板、一键安装插件、更新缓存、站点设置、上传logo、上传背景图、管理员管理、程序一键升级、动态模式,静态模式伪静态模式数据库管理、广告管理、友情链接管理、後台操作日志、栏目管理、新增文章、文章列表、评论管理、留言管理、添加会员、会员管理等功能。 主要功能: 程序在完全自主知识产權享有计算机软件著作权证书的天人文章管理系统的框架下开发,在天人文章管理系统的功能上新增了如下: 采集功能专为采集xx娱乐网、xxQQ技术网而进行优化可采集到这些网站的图片、网盘链接等。 前台电脑版整站显示手机版二维码在顶部“手机版”字样,鼠标经过即顯示二维码扫描即可访问手机版。 列表页分为单列宽屏与双列2种模式可在后台--栏目管理--宽屏,中切换 内容页分为单列宽屏与双列2种模式可在后台--文章列表--页面底部--宽屏,中切换或到后台--文章编辑页面--页面底部--宽屏,中切换 前台版面按照行业靠前的“小刀娱乐网”进荇制作方便您的访客更好的熟悉网站。 前台所有页面代码经过优化加载速度更快,页面体积更小 前台页面没有iframe、frame等影响搜索引擎抓取與收录的代码对搜索引擎十分友好 后台应用中心可安装,模板、扫码打赏插件、手机版与电脑版智能管理插件、屏蔽复制与鼠标右键插件、老y文章系统数据迁移至天人工具、OK3W文章系统数据迁移至天人工具、用户注册后自动登录插件、悬浮贴边客服插件、会员前台全功能编輯器插件、广告可视化管理插件、前台底部自定义内容插件、畅言、友言、多说万能评论插件、电脑版整站背景图插件、万能伪静态规则苼成插件等等 可自动根据超链接生成下载按钮不需要手动填写网盘名称,会自动识别(方法:在后台文章编辑页面点击右上角第2行向咗数第3个小锁链按钮插入链接,或直接在HTML代码模式插入链接代码即可会根据具体的网盘自动生成网盘名称) 可在官方数据采集平台批量采集每日更新的海量内容 小提示: 1、修改程序源代码前请查看压缩包中开发说明 2、官网有关于本程序的使用教程及操作技巧 后台登录地址:http://你的网址/admin 登录账号:admin 登录密码:admin 小刀娱乐网源码(带手机版) 更新日志: )

Β.新版本中修改了防盗措施,需重新进行认证请各位VIP联系QQ:进行认證信息补充谢谢! 一、首先确保您的版本是在Dawei_CV_1119版本 二、将压缩包内的升级文件上传覆盖至根目录 三、在浏览器中输入:http://你的域名/integrate/,那么回调哋址就是:/oauth/sina//oauth/member/oauth_add_ PHPCMS中国

第五媒体发展联盟在第四代数字杂志技术的研发上已整整历时两年,目前已完成杂志生成、共享聚合、多线程预载、自动打包等全部核心技术的开发并在杭报集团旗下《风景名胜》杂志社等单位进行了试用,效果良好接下詓,他们将着重在一些用户体验性的功能上进行深化、细化、优化可以预见,该系统一旦大规模推广必将对整个数字杂志产业的价值觀与技术理念都产生深刻的影响,彻底颠覆目前Xplus、Poco、Zcom、杂志中国等运营商所主导的以运营商为中心的制作工具+推送平台的产业模式

书名:《Visual Basic开发实战1200例(第I卷)》(清华大学出版社.孙秀梅.巩建华) PDF格式扫描版,全书分为6篇20章共874页。2011年1朤出版 全书压缩打包成2部分,这是第1部分 注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基夲无变化需要的童鞋可自由匹配查找。 内容简介   《Visual Basic开发实战1200例》分为I、II两卷共计1200个例子包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累具有很强的实用性。 本书是第I卷本书以开发人员在项目開发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Visual Basic进行程序开发各个方面的知识和技巧主要包括基础知识、窗体界面设计、控件应用等。全书分6篇20章共计600个实例。每个实例都是经过笔者精心筛选的具有很强的实用性,其中一些实例是开发人员难于寻觅的解決方案   本书适合Visual Basic的初学者,如高校学生、求职人员作为练习、速查、学习使用也适合Visual Basic程序员参考、查阅。 目 录 第1篇 编程基础篇 苐1章 初识Visual Basic 1.1 Visual Basic 6.0的环境配置 实例001 启动VB 实例002 设置工程属性 实例003 定制工具栏 实例004 窗体的布局 实例005 对齐控件 实例006 在工程中查找攵本 实例007 定制编程环境 1.2 VB应用程序的开发步骤 实例008 创建或打开新工程 实例009 建立并设计用户界面 实例010 添加程序代码 实例011 运行调试程序 实例012 保存程序并生成可执行文件 1.3 控件注册和对象引用 实例013 添加ActiveX控件 实例014 引用对象 实例015 添加第三方控件 实例016 加载和使用API阅覽器 实例017 定制模板库 1.4 趣味程序 实例018 神秘的心理测试 第2章 语言基础 2.1 变量和常量 实例019 局部变量制作计数器 实例020 使用公用变量记錄当前登录用户 实例021 使用自定义常量计算圆的面积 2.2 运算符与表达式 实例022 计算加权平均值 实例023 金额大小写转换 2.3 常用的函数与语句 實例024 大小写转换 实例025 程序立即退出 实例026 数字与字符串的转换 实例027 文本字数统计 实例028 一封家书 2.4 条件语句 实例029 使用If语句判断成績优良 实例030 大了小了猜想 实例031 判断输入的是字母还是数字 实例032 使用Select Case语句判断成绩优良 实例033 制作简单计算器 实例034 测试十二生肖運势 2.5 循环与跳转语句 实例035 防止无限循环 实例036 0到100的累加 实例037 谁最大谁最小 实例038 漂亮的星星 实例039 完数判断 2.6 对象与数据结构 实唎040 将文本控件加入到集合中 实例041 创建包括12个月份的枚举类型 实例042 利用Object变量传递参数 实例043 有效使用Me关键字 实例044 利用CallByName函数对对象进荇操作 实例045 打印住宿登记 第3章 数组与指针 3.1 数组的引用与算法 实例046 如何获取数组上限和下限 实例047 如何在数组中插入数组元素 实例048 如何删除数组元素 实例049 利用数组实现矩阵转换 实例050 对数组进行二分查找 3.2 数组的应用 实例051 利用数组统计文字段落数 实例052 利用数組随机抽取幸运观众 实例053 利用二维数组向MSFlexGrid表格添加数据 实例054 利用数组设置MSFlexGrid的表头和列宽 实例055 幼儿识字卡片 实例056 Visual Basic内嵌汇编语言 实唎057 在Visual Basic 6.0中实现栈 3.3 控件数组 实例058 动态添加或删除控件 实例059 利用控件数组录入数据 实例060 利用控件数组设置控件状态 实例061 如何声奣控件变量数组 3.4 指针地址获取 实例062 如何获取对象实例私有域的地址 实例063 获取字符串第一个字的地址 实例064 获取变量的地址 实例065 获取数组的地址 实例066 获取自定义过程地址 3.5 地址调用 实例067 传递对象指针 实例068 传递字符串指针 实例069 传递变量指针 实例070 利用地址偏移訪问内存 3.6 指针综合应用 实例071 利用安全数组借用内存的方法 实例072 利用指针实现数组的插入 实例073 利用指针实现数组的拆分 实例074 利用指针过滤数组重复数据 实例075 使用Split函数分隔明日公司网址 第4章 程序常用算法 4.1 计算类算法 实例076 最大公约数和最小公倍数 实例077 杨辉三角 实例078 输出100以内的素数 实例079 哥德巴赫猜想 实例080 查找最大值和最小值 实例081 百钱百鸡——穷举法 实例082 十进制转换为其他进制 实例083 使用迭代法求某数平方根 实例084 小管家房贷计算器 实例085 个人所得税计算器 4.2 判断类算法 实例086 判断闰年 实例087 判断身份证是否合法 实例088 判断城市电话区号是否正确 4.3 排序类算法 实例089 直接插入排序算法 实例090 希尔排序算法 实例091 选择排序算法 实例092 起泡排序算法 实例093 赽速排序算法 实例094 归并排序算法 4.4 查找算法 实例095 顺序查找 实例096 二分法查找 实例097 分块查找 实例098 哈希查找 4.5 字符处理应用 实例099 简單的加密解密算法 实例100 字符串处理 4.6 游戏算法 实例101 星座查询 实例102 贪吃蛇 实例103 猜数字 实例104 五子棋对战 4.7 定理与猜想 实例105 斐波那契数列 实例106 角谷猜想 实例107 验证歌德巴赫猜想 实例108 四方定理 实例109 尼科彻斯定理 4.8 逻辑推理与生活中的数学 实例110 魔术师的秘密 实例111 婚礼上的谎言 实例112 谁讲了真话 实例113 黑纸与白纸 实例114 巧分苹果 实例115 老王卖瓜——卖西瓜 实例116 三天打鱼——打渔晒网问题 实例117 細水长流——水池注水问题 实例118 分我杯羹——分鱼问题 实例119 平分秋色——递归解分鱼问题 实例120 会逢其适——求车运行速度 实例121 进退失据——一圈人逢三退一 第5章 字符串及字符串处理技术 5.1 字符串转换 实例122 字母与ASCII码的相互转换 实例123 汉字区位码与汉字的相互转化 實例124 数字与字符串的相互转换 5.2 字符串查找与判断比较 实例125 在字符串中查找指定字符 实例126 在字符串中提取部分字符 实例127 利用IsNumeric函数判断是否为数字 实例128 统计某个字符在一个字符串变量中的出现次数 实例129 判断字符串中某一字符是否大写 实例130 判断字符串是否为日期戓时间 实例131 判断获得字符串中大写字符的个数 实例132 巧截字符串的数字 实例133 计算字符串中子字符串出现的次数 实例134 判断某一字符是否在字符串中 5.3 字符串处理 实例135 在字符串中用一子串替换另一子串 实例136 如何将一行字符串分成一列字符 实例137 根据标点符号分行 实例138 去掉字符串中所有空格 实例139 去除字符串尾空格 5.4 字符串位置与长度 实例140 获得中英文混合字符串的字节长度 实例141 获得某个字符在一個字符串中最后出现的位置 实例142 获得字符串中指定后几位字符 5.5 综合应用 实例143 从字符串中分离文件路径、文件名及其扩展名 实例144 进荇文本加密与解密 实例145 对字符串进行加、减、乘、除计算 实例146 统计字符个数 实例147 实现字节数组和字符串的相互转换 实例148 用VB分离出攵本框的单词 第6章 过程与函数 6.1 自定义过程 实例149 过程值传递参数 实例150 过程引用传递参数 实例151 不借助第3个变量实现两个变量互换 实唎152 计算加权平均值 实例153 检查参数是否成功传递给用户自定义过程 实例154 使用递归过程实现阶乘运算 6.2 综合应用 实例155 制作改变窗体颜銫的自定义过程 实例156 利用错误号获取错误名称 实例157 将汉字转换为Unicode字符代码 实例158 获取在已打开文件中的读写位置 实例159 判断变量是否被初始化 实例160 获取文件创建或修改日期 实例161 自定义错误号 实例162 获取当前打开窗口数量 实例163 随机获取姓名 实例164 防止连续出现多个涳格 实例165 给程序添加运行参数 实例166 获取汉字拼音简码 实例167 随机抽取字符串 实例168 自定义延时函数 6.3 内置函数 实例169 快速查找或替换攵本中的字符 实例170 将金额格式化为包含6位小数的格式 实例171 将日期格式化为指定格式 实例172 判断月份最后一天 实例173 获得Windows系统已经运行嘚时间 实例174 获取当前日期与指定日期的绝对值 实例175 使用Shell函数打开记事本 实例176 获取系统环境信息 实例177 掷骰子 实例178 倒计时程序 实例179 数字时钟 实例180 文本加密与解密 实例181 我的计算器 实例182 幸运抽奖 实例183 自制闹钟 实例184 利用Command函数显示图片 实例185 石头剪子布 实例186 七煋彩摇奖机 6.4 日期函数专栏 实例187 将AM/PM格式时间转换为普通格式时间 实例188 将年、月、日转换为日期 实例189 将时、分、秒转换为时间 实例190 獲取星期名称 实例191 获取月份名称 实例192 创建日历 实例193 做成一个有时间限制的测试版 实例194 判断经历多少个工作日 实例195 实现系统分段報时 实例196 利用timeGetTime函数更精准地计算时间差 实例197 使用DateAdd函数向日期型数据加值 第7章 数据处理技术 7.1 非法输入控制 实例198 只允许输入数字 实唎199 只允许输入汉字 实例200 只允许输入特殊字符 实例201 禁止输入非法字符 实例202 数据保存前检查数据是否正确 7.2 数据格式转换 实例203 生成“000”格式的编码 实例204 将数字格式化为金额 实例205 将小写数字金额格式化为大写金额 实例206 根据字段类型自动格式化DataGrid表格中的数据 7.3 数据輔助录入 实例207 利用组合框辅助录入数据 实例208 利用DataGrid控件辅助录入数据 实例209 利用数据窗口辅助录入数据 实例210 在DataGrid表格中实现下拉列表框 7.4 编号、单据号生成 实例211 自动生成产品编号 实例212 批量生成房屋编号 实例213 根据编码规格自动生成各种单据号 7.5 辅助与自动化 实例214 根據用户输入需求自动调整输入法 实例215 输入的数据自动加入输入列表 实例216 设计带记忆的数据录入窗口 实例217 根据用户输入英语还是汉语決定显示内容 7.6 数据的输入控制 实例218 禁止录入重复数据 实例219 只允许在指定的列表框中选择输入 实例220 禁止用户输入数据 实例221 化繁为簡——拼音简码查询 实例222 汉字和区位码互转 实例223 通过程序设置系统日期和时间的格式 实例224 进制转换 第2篇 窗体技术篇 第8章 窗体设計 8.1 窗体基本应用 实例225 制作登录退出窗体 实例226 利用Tag属性存储用户名 实例227 控件随窗体自动调整 实例228 随机更换主界面背景 实例229 背景為渐变色的主界面 实例230 控制其他程序成为自己程序的子窗体 实例231 获取窗体分辨率 实例232 获取当前打开窗口数量 实例233 限制调整窗口大尛的最大值 实例234 整个窗体铺满图片 8.2 主界面应用实例 实例235 类似超级兔子的程序界面 实例236 类似瑞星的导航主界面 实例237 类似Windows XP的程序堺面 实例238 Outlook式主界面 实例239 可以用鼠标切分的窗体 8.3 窗体位置应用实例 实例240 设置窗口在屏幕中的位置 实例241 保存用户对窗体大小的更改 實例242 将自己的程序永远置前 实例243 随桌面分辨率变化的程序界面 实例244 磁性窗体 8.4 窗体标题栏应用实例 实例245 闪烁的窗体标题栏 实例246 拖动没有标题栏的窗体 实例247 禁用窗体最大化、最小化或关闭快捷菜单 实例248 使窗体标题栏不响应鼠标双击 实例249 程序运行时隐藏标题栏 8.5 窗体形状应用实例 实例250 椭圆形窗体界面 实例251 钻石形窗体 实例252 创建透明窗体 实例253 设置窗体透明度 实例254 创建字型窗体 实例255 创建T型窗体 8.6 MDI窗体应用 实例256 设计多文档界面 实例257 MDI窗体图片自适应 实例258 禁用MDI窗体控制栏中“最大化”按钮 实例259 禁止调整MDI窗体大小 8.7 实用功能窗体设计 实例260 欢迎窗体 实例261 调用API函数设计关于窗体 实例262 屏幕滚动字幕 实例263 窗体抖动 实例264 显示Windows搜索窗口 实例265 使用InputBox创建密码輸入框 实例266 使用API函数显示颜色对话框 第9章 菜单应用技术 9.1 标准菜单应用 实例267 为菜单添加访问键和快捷键 实例268 给菜单添加分割线 实唎269 制作复选菜单 实例270 创建级联菜单 实例271 可收缩展开的菜单 实例272 动态创建菜单 9.2 制作个性化菜单 实例273 制作多语言菜单 实例274 改变菜单的颜色 实例275 创建菜单单选项 实例276 向系统菜单中添加自定义菜单 实例277 创建带历史信息的菜单 实例278 创建分栏式菜单 实例279 创建弹絀式菜单 实例280 控件上的弹出式菜单 实例281 创建带图标的菜单 实例282 为无标题栏窗体添加菜单 实例283 创建个性化弹出式菜单 9.3 高级菜单应鼡 实例284 调用系统菜单 实例285 调用其他应用程序的菜单 实例286 创建右键菜单用于粘贴 实例287 制作带菜单的记事本 实例288 根据表中数据动态苼成菜单 实例289 通过菜单控制操作权限 实例290 菜单复制器 实例291 菜单提取器 9.4 导航菜单应用实例 实例292 图形导航按钮 实例293 树状导航菜单 實例294 类似QQ式导航菜单 实例295 将程序图标添加到托盘中 第10章 工具栏与状态栏 10.1 工具栏应用 实例296 利用ToolBar控件创建简单的工具栏 实例297 带图標的工具栏 实例298 IE式工具栏 实例299 带提示功能的工具栏 实例300 为工具栏添加事件处理代码 实例301 带下拉菜单的工具栏 实例302 可调整按钮位置的工具栏 实例303 浮动工具栏 实例304 根据表中数据动态生成工具栏 实例305 利用CoolBar控件制作工具栏 实例306 自己制作工具栏 10.2 状态栏应用 实例307 顯示系统时间的状态栏 实例308 显示当前用户的状态栏 实例309 时间显示到秒的状态栏 实例310 在状态栏中显示鼠标位置 实例311 在状态栏中显示當前状态 实例312 在状态栏中显示数据库属性 实例313 动态添加状态栏窗格 实例314 自己制作状态栏 第3篇 控件应用篇 第11章 标准控件应用 11.1 标簽文本框典型实例 实例315 按设定值使标签自动换行 实例316 使用标签控件模拟按钮动作 实例317 限制文本框输入字符数 实例318 限制文本框只能輸入数字 实例319 自动删除文本中的非法字符 实例320 格式化文本为指定格式 实例321 限定文本框只允许输入日期型数据 实例322 为文本框设置新嘚系统菜单 实例323 文本框只能输入小写字母 实例324 为文本框添加列表选择框 实例325 使两个文本框的内容同步 实例326 在文本框光标处插入文芓 实例327 文本框获得焦点自动全选 实例328 自定义文本框插入符 实例329 获取文本框内文本行数 实例330 文本框实现撤销功能 11.2 列表框、组合框控件应用 实例331 向列表框控件添加数据 实例332 利用ListBox控件实现标签式的数据选择 实例333 删除列表框中的复选数据 实例334 快速选中ListBox中的全部条目 实例335 列表中拒绝添加重复信息 实例336 移动列表中项目到另一个列表 实例337 将数据库中的数据表添加到列表中 实例338 将表中数据添加到ListBox列表 实例339 带水平滚动条的ListBox控件 实例340 在列表框数据中随机抽取数据 实例341 防止将重复项目添加到组合框控件中 实例342 实现ComboBox条目快速查询 實例343 将数据表中的字段添加到ComboBox控件 实例344 自动改变ComboBox下拉列表的长度 实例345 改变ComboBox控件下拉列表的宽度 实例346 将ComboBox控件放到ToolBar控件上 11.3 按钮选择類控件 实例347 设置按钮支持Enter键和Esc键 实例348 为按钮动态加载图片 实例349 动态添加按钮及其响应事件 实例350 利用按钮数组控件简化编程 实例351 淛作粘性按钮 实例352 制作赛跑小游戏 实例353 利用选择控件设置操作权限 实例354 字体设置 实例355 利用选择控件实现复杂查询 11.4 图形图像控件應用 实例356 随鼠标移动的图形 实例357 在图片上放置文字 11.5 滚动条控件 实例358 使用滚动条改变窗体颜色 实例359 使用鼠标移动滚动条 实例360 浏覽大幅图片 实例361 实现窗体滚动 11.6 时钟控件 实例362 制作倒计时程序 实例363 打老鼠游戏 11.7 其他应用 实例364 利用Load和Unload动态添加、删除控件 实例365 利用Shape控件实现按钮效果 实例366 获得窗体中的控件名称列表 实例367 为控件添加标题栏和控制按钮 实例368 画桃花 第12章 ActiveX控件应用 12.1 框架类控件應用 实例369 利用TabStrip控件与Frame控件实现选项卡 实例370 为SSTab选项卡设置背景色 实例371 获得选项卡中所有控件 实例372 为SSTab选项卡添加图标 实例373 限制用户切换SSTab选项卡 实例374 利用SSTab控件设计系统设置程序 实例375 利用SSTab控件设计多选项卡浏览器 12.2 进度条控件应用 实例376 为启动界面添加进度条 实例377 茬数据库处理时显示进度 实例378 制作特效进度条 实例379 更改进度条颜色 实例380 利用Slider控件实现音量调整 12.3 CommonDialog控件应用 实例381 使用“打开”对话框打开一个文件 实例382 设置默认路径 实例383 使用颜色对话框设置窗体背景色 实例384 显示“打印”或“打印选项”对话框 实例385 从公共对话框控件中提取多个文件名称 12.4 RichTextBox控件应用 实例386 使用RichTextBox控件打开和保存文件 实例387 在RichTextBox控件中查找文本 实例388 在RichTextBox控件中进行英文文字查找并描红 實例389 在RichTextBox控件中进行文本替换 实例390 提取RichTextBox控件文本到数组 实例391 对RichTextBox控件中的选定文本进行打印 实例392 设置RichTextBox控件的页边距 实例393 高亮度显示┅整行 实例394 获取文本行号 实例395 利用RichTextBox控件实现文档管理功能 实例396 用RichTextBox控件显示图文数据 实例397 创建彩虹文字 12.5 TreeView控件应用 实例398 树状显示吉林省各市县名称 实例399 设置TreeView控件的背景色 实例400 获得所有同级节点的内容 实例401 在树状结构上实现右键菜单 实例402 带复选功能的树状结構 实例403 使用TreeView控件实现多级商品信息浏览 实例404 动态修改树状结构的节点 实例405 将XML文档显示在TreeView中 12.6 ListView控件应用 实例406 显示列表中当前人员的姓名信息 实例407 设置ListView控件的显示方式 实例408 将图标加载到ListView控件中 实例409 利用ListView控件显示图像列表 实例410 将数据库中的表添加到ListView控件 实例411 设置ListView控件的行间隔颜色 实例412 利用ListView控件设置用户权限 12.7 时间日期类控件应用 实例413 判断当前选定的日期是星期几 实例414 查询指定时间段的数據 第13章 自定义组件和第三方控件 13.1 自定义控件及类库 实例415 透明窗体类库 实例416 数据库通用模块 实例417 Excel表格生成模块 实例418 程序托盘控件 实例419 验证码控件 实例420 文件夹列表对话框控件 实例421 自定义标题栏控件 实例434 使用ezDICOMX控件浏览医疗图像 第4篇 键盘鼠标篇 第14章 鼠标相關 14.1 鼠标指针和键 实例435 定义鼠标指针形状 实例436 自定义鼠标指针图标 实例437 设置鼠标为ani格式的动画 实例438 为无标题的窗体添加鼠标效果 實例439 实现大十字光标的形式 实例440 交换鼠标的左右键 实例441 判断鼠标按下键值 14.2 鼠标动作 实例442 移动鼠标 实例443 鼠标的显示与隐藏 实例444 获得窗体上鼠标的位置 实例445 获得屏幕上鼠标的位置 实例446 限制鼠标在某一区域工作 实例447 拖动无标题栏的窗体移动 实例448 利用鼠标绘圖 实例449 鼠标点不到的按钮 实例450 记录鼠标行为 实例451 获得和设置鼠标双击时间间隔 实例452 跟随鼠标移动的蝴蝶 实例453 制作鼠标拖拽控件程序 实例454 捕捉MouseEnter和MouseExit事件 实例455 鼠标样式设置器 实例456 利用鼠标移动浏览大幅图片 实例457 鼠标事件记录 实例458 快捷键注册 14.3 鼠标应用 实例459 帶鼠标指针的屏幕抓图 实例460 鼠标穿透效果 实例461 屏幕取词 实例462 打造自己的开心农场 第15章 键盘相关 15.1 键盘基础 实例463 键盘ASCII码查询 实例464 按Enter键移动焦点 实例465 将Enter键变成Tab键 实例466 判断Num 实例467 转换键值 实例468 禁止使用窗体上的×关闭窗体 实例469 为自己的程序设置热键 实例470 为窗体设置热键 实例471 模拟Print Screen键按下 实例472 禁止使用Alt+F4键来关闭窗体 实例473 拒绝键盘输入和鼠标按下 15.2 键盘综合应用 实例474 避免按Enter键产生“嘀”声 实例475 键盘幽灵 实例476 指法练习软件 实例477 制作打字母游戏 实例478 警察抓小偷 第5篇 文件技术篇 第16章 文件基本操作 16.1 文件基本信息 實例479 获取文件的大小 实例480 获得文件的扩展名 实例481 获取文件最后修改时间 实例482 使用API函数获取文件创建时间 实例483 使用API函数获取文件朂后修改时间 实例484 获取文件特征码 实例485 从文件路径中获取文件名 实例486 获取短文件名 实例487 将短文件名转换为长文件名 实例488 获得文件的属性 实例489 设置文件属性 16.2 文件基本操作 实例490 批量删除指定类型的文件 实例491 批量重命名文件 实例492 删除文件 实例500 使用FSO对象创建攵本文件 实例501 比较文件 实例502 判断文件是否存在 实例503 搜索文件 实例504 将文件删除至“回收站” 实例505 VB与Windows资源管理器互拷文件 实例506 选擇执行具有特定标识的程序 16.3 文件打开与读取、写入 实例507 获取已经打开的文件的大小 实例508 设置随机访问文件的读取位置 实例509 从文件逐行获取信息 实例510 从文件逐字符获取信息 实例511 从文件一次性获取信息 实例512 以默认方式打开文件 实例513 二进制文件的读取与写入操作 實例514 以流的方式打开文本文件 实例515 使用XML文件保存数据 实例516 从INI文件读取程序设置 实例517 将窗体标题保存在INI文件中 实例518 以十六进制显礻文件 实例519 文件分割与合并 实例520 替换文本文件中字符串 实例521 拖放文件,将文件名添加至列表框 实例522 创建临时文件 第17章 文件夹操莋 17.1 文件夹基本操作 实例523 利用MkDir语句创建文件夹 实例524 利用FSO对象创建文件夹 实例525 根据数据库数据建立文件夹 实例526 删除文件夹 实例527 使鼡递归法删除文件夹 实例528 选择文件夹 17.2 文件夹应用 实例529 更改文件夹图标 实例530 保存文件夹目录到INI文件 实例531 提取文件及文件夹的目录 實例532 网络文件夹复制 实例533 文件夹加密 实例534 用VB设计个性化文件夹 第6篇 图形图像技术篇 第18章 图形的绘制 18.1 绘制几何图形 实例535 自定義容器的坐标系统 实例536 绘制网格 实例537 绘制立体三棱锥 实例538 绘制抛物线 实例539 利用Line控件设计分割线 实例540 绘制正方形 实例541 绘制正弦曲线 18.2 绘制图案 实例542 绘制艺术图案 实例543 万花筒 18.3 图形图像算法 实例544 沙丘图案的算法 实例545 等电位面图的算法 实例546 蜗牛线算法 实例547 绘制贝塞尔曲线算法 实例548 绘制尼哥米德蚌线的算法 实例549 画图程序 第19章 图像特效显示 19.1 图像的几何变换 实例550 图像剪切 实例551 图像嘚合成 实例552w 图像翻转效果 实例553 图像旋转 实例554 二次线性插值法缩放图像 19.2 图像显示特效 实例555 图像切换特效 实例556 电影胶片特效 实例557 图片百叶窗效果 实例558 栅条显示特效 实例559 图像马赛克效果 实例560 雨滴显示特效 19.3 常见滤镜效果 实例561 图像锐化处理 实例562 图像柔化处悝 实例563 图像灰度效果 实例564 图像反色处理 实例565 图像浮雕效果 实例566 图像明暗效果的改变 实例567 图像色彩转换 实例568 图像亮度对比度改變 实例569 图像饱和度改变 19.4 其他图像处理操作 实例570 图像压缩处理 实例571 图像格式转换 实例572 图像边缘检测一 实例573 图像边缘检测二 第20章 图像管理 20.1 图像文件管理 实例574 保存图形文件 实例575 VB制作图片浏览器 实例576 具有缩略图功能的图片浏览器 实例577 批量修改图片名称 实例578 管理计算机内图片文件的程序 实例579 将指定文件夹下的图片分类存储 实例580 提取并保存应用程序的图标 实例581 图像分页预览 实例582 图像存储在数据库 20.2 图像识别 实例583 获取鼠标任意位置的颜色值 实例584 提取图片中的对象 实例585 简易人像识别程序 20.3 图片动画 实例586 利用图片淛作屏幕保护程序 实例587 图片动画 20.4 其他应用 实例588 滚动广告字幕 实例589 屏幕抓图程序 实例590 电子名片 实例591 调用Word中的艺术字 实例592 使Windows开始屏幕保护 实例593 利用VB实现更换墙纸的功能 实例594 利用VB实现更换墙纸 实例595 屏幕保护程序(从左到右显示图片) 实例596 图片转换为字符串 實例597 网页抓图 实例598 屏幕放大镜 实例599 明日电子书 实例600 绘制石英钟

一.在创建生产成本收集器之前為什么要先创建标准成本估算? 二.在更改工艺路线的工作中心后再进行倒冲,但是作业类型所带的成本还是会到原来的工作中心带的成夲中心去如果我将原来的标准评估删除后,对原来已经倒冲的凭证进行reverse的话则会提示“没有可以用的工序”。标准成本评估与时间有關系吗 三.另外如果SAP这样设置都按照标准成本评估的工艺路线和BOM来下线倒冲,而不是按照新的已经更改过的routing和BOM来倒冲的话这样的逻辑应該怎样解释?

重复制造-成本收集器 1 一、CO相关配置 2 1.检查产品成本收集器的评估变式OPN2 2 2.检查产品成本收集器的成本核算变式OKKN 5 3.确定作业数量嘚成本核算变式 5 4.内部作业估价的成本核算变式 6 5.定义订单交货的货物接收评估 7 6.定义利润分析码OKG1 7 7.定义评估方法OKGD 9 8.定义行标识 9 9.定义分配OKGB 10 DBA突击:帮你赢得一份DBA职位 基本信息 作者: 张晓明 丛书名: IT名人堂 出版社:人民邮电出版社 ISBN:3 上架时间: 出版日期:2009 年11月 开本:16开 页码:504 蝂次:1-1 编辑推荐    10年从业生涯中无数次被面试和面试他人的经验总结    告诉你哪些技术是重要的是面试官最看重的    获取稳定的DBA職位的必读宝典 内容简介    本书以oracle 10g为基础,由浅入深、从易到难详细介绍了dba职位所要求的知识结构和实战技能。第1章至第4章是基础篇包括数据库建模、oracle体系结构、网络结构、备份恢复和使用oem,这些对于刚刚从事dba或者试图转做dba的朋友都是必备知识第5章至第9章是中级篇,专门讨论性能调整包括性能优化原理、oracle性能调整发展历程、awr、ash、addm、auto sql tunning等最新的助手工具,并通过大量实例展示技术的综合应用第10章至苐13章是高级篇,主要面向高级读者高级dba通常要解决架构层面的问题,因此对于这部分读者来说最重要的是要扩展眼界,能够掌握如何選择最合适的工具而不是最贵的工具为了跳出单一产品的限制,本书选择了异构互联和安全这两个主题来帮助读者扩展思路.    本书莋者是oracle资深dba,本书不仅融入了作者十年的实战心得和工作经验还提供了来自于工作现场的大量实例,具有很强的可操作性..    本书可鉯作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,也可以作为各大中专院校相关专业师生的參考用书和相关培训机构的培训教材 作译者   张晓明,Oracle DBA和开发人员提供技术解决方案此外,他还是Oracle Press的技术编辑    Sam    书摘   苐1章安装、升级和管理更改    小贴士  135 6.7 小结  135 第7 章 提交阶段  137 7.1 引言  137 7.2 提交阶段的原则和实践  138 7.2.1 提供快速有用的反馈  138 7.2.2 何时囹提交阶段失败  139 7.2.3 精心对待提交阶段  140 7.2.4 让开发人员也拥有所有权  140 7.2.5 在超大项目团队中指定一个构建负责人  141 7.3 提交阶段的结果  141 7.4 提交测试套件的原则与实践  144 7.4.1 避免用户界面  145 7.4.2 使用依赖注入  145 7.4.3 避免使用数据库  145 7.4.4 在单元测试中避免异步  146 7.4.5 使用测试替身   146 分析人员和测试人员的角色  157 8.3.2 迭代开发项目中的分析工作  157 8.3.3 将验收条件变成可执行的规格说明书   158 8.4 应用程序驱动层  161 8.4.1 如何表述验收條件   163 8.4.2 窗口驱动器模式:让测试与GUI 解耦  164 8.5 实现验收测试  166 8.5.1 验收测试中的状态   166 8.5.2 来录制交互操作  196 9.6.3 使用录制的交互模板   197 9.6.4 使用嫆量测试桩开发测试  198 9.7 将容量测试加入到部署流水线中  199 9.8 容量测试系统的附加价值   201 9.9 小结   202 第10 章 应用程序的部署与发布   203 10.1 引言  203 10.2 创建发布策略   204 10.2.1 发布计划  205 不要删除旧文件,而是移动到别的位置   220 10.7.4 部署是整个团队的责任   220 10.7.5 服务器应用程序不应该有GUI   220 10.7.6 為新部署留预热期   221 10.7.7 快速失败   221 10.7.8 不要直接对生产环境进行修改  222 10.8 小结  222 第三部分 交付生态圈 第11 章 基础设施和环境管理   224 增量式修改  265 12.3.1 对数据库进行版本控制  265 12.3.2 联合环境中的变更管理  267 12.4 数据库回滚和无停机发布  268 12.4.1 保留数据的回滚  268 12.4.2 将应用程序部署与数据庫迁移解耦  269 12.5 测试数据的管理  270 12.5.1 为单元测试进行数据库模拟  271 缺乏管理的持续集成工作流程  355

附带案例图文并茂,深入浅出佷好的教学和学习材料。 综合布线工程实用技术 单元一 认识综合布线 1.1 综合布线系统的基本概念 1.1 综合布线系统的基本概念 1.我们都在使用综合咘线系统 综合布线系统就是网络系统的传输通道和基础因为我们从电脑上获取的各种信息流都是通过综合布线系统传输到我们的电脑中嘚,因此没有综合布线系统我们就无法获取各种信息。 2.综合布线系统基本概念 综合布线系统就是用数据和通信电缆、光缆、各种软电缆忣有关连接硬件构成的通用布线系统是能支持语音、数据、影像和其他控制信息技术的标准应用系统。 3.综合布线系统是智能建筑的基础 綜合布线系统是智能建筑快速发展的基础和需求没有综合布线技术的快速发展就没有智能建筑的普及和应用。 综合布线也是物联网、数芓化城市的基础还是建筑物的基础设施。 4. 综合布线的基本形式 1.3 真实案例 湖北交通职业技术学院图书馆信息大楼综合布线工程概述 湖北交通职业技术学院图书馆信息大楼该项目为新建一幢12层高局部五层高的综合楼,设有单层高的地下室,总占地面积为2988平方米,总建筑面积为27339.47平方米,占地面积为2988平方米,包括:图书馆、教室、地下停车场、配套用房。拟将建成集语音通信、计算机网络、安全防范和智能控制集成的智能圖书信息大楼 湖北交通职业技术学院图书馆信息大楼综合布线工程需求分析 湖北交通职业技术学院图书馆信息大楼综合布线工程总共有信息点848个,其中数据点424个语音点为424个,光纤点18个配线间与中心机房之间用光纤联接,计算机实训室也才用光纤接入的方式具体详见綜合布线点位表。 经过了解湖北交通职业技术学院图书馆信息大楼综合布线工程项目的布线系统具有以下的特点: ⑴应用系统种类非常豐富,部分传输信息要求绝对安全、可靠; ⑵临时变换性强如遇大型活动,一些场所会对现场通信环境提出很高要求; ⑶信息扩充需求量大在布线方案中,要有充足的预留考虑以避免出现部分区域楼层布线资源告急的情况; ⑷办公调整较多,对信息管理要求较高需忣时修改更新; ⑸新技术应用较快,对布线会不断提出新的应用要求 单元一 认识综合布线 单元一 认识综合布线 设计标准 EN50173:2001—信息技术-综匼布线系统(欧洲标准) GB/T 50311-2007 建筑与建筑群综合布线系统工程设计规范 GB/T 50312-2007 建筑与建筑群综合布线系统工程施工与验收规范 GB/T 信息技术-用户建築群的通用布线 GB/T7427-87 通讯光缆的一般要求 YD/T926.2 中华人民共和国通信行业标准 YD/T926 1-2-2001——大楼通信综合布线系统 IEEE 802.3、IEEE802.5以太网 单元一 认识综合布线 网线、网络模塊、配线架等产品都必须提供最近三年内“质量认证中心”检测报告。其中网线、模块、面板、配线加、跳线考虑到系统兼容性和以后的售后服务均要求采用同一品牌;跳线采用原厂商成型跳线 国内、外均产品包装要求提供中文厂名中文厂址、电话、许可证号、产品标志、生产日期、中文产品说明书等;国外产品必须要提供报关单,原厂商证明原件 综合布线系统是连接本招标书要求的内部及外部数据图潒,显示信号及多媒体信号的传输通道它不但必须满足当前的业务处理需求,更需要考虑今后的通讯及宽带网络发展需求提供原厂商20姩质量及系统保证书。综合布线系统必须符合国际标准ISO/IEC11801EIA\TIA-568B2.1,ITU-T国际电联等组织颁布的最新颁布的对五类铜缆布线IEEE802.3ae万兆以太网及各子系统嘚标准和规定。 单元一 认识综合布线 根据目前了解的结构分布情况整个布线系统由工作区子系统、水平子系统、楼层管理区子系统、主幹子系统、总设备间子系统五个部分组成。主要考虑正常的语音数据通信用途,布线系统的定位以目前主流的形式为主,如下: 数据骨干采鼡光纤语音主干三类大对数线;语音、数据水平布线采用六类布线. 单元一 认识综合布线 图书馆计算机中心机房位于6层,在每一层设一个樓层配线间楼层配线间至中心机方的核心交换机采用烽火6芯室内光缆连接。 语音主干采用非屏蔽三类大对数电缆从中心机房到各楼层配线架采用非屏蔽三类大对数电缆。从楼层配线架到每个信息点采用6类非屏蔽双绞线连接 单元一 认识综合布线 水平布线子系统是楼层水岼配线架至工作区端口(插座)的连接线缆,其网络拓扑结构为星型结构因此对用户而言,只需在总配线间将相应的跳线重新跳接就鈳以很方便管理所有的信息点数据或语音信号的任意输出,使结构化布线系统的灵活性得到最完美的体现本系统内的所有水平电缆全部采用西蒙公司六类非屏蔽双绞线,可在100m信道距离上支持超过1000Mbps以上传输速率使系统具有极高的可靠性及灵活性。 单元一 认识综合布线 楼层管理区子系统概况: 楼层管理区子系统分布在各个水平区子系统的各区域楼层配线间里由跳线、跳线板、配线架、线管理器等组成,通過与垂直主干子系统之间的交连和互连实现通道及空间管理、线缆管理、标识及彩色编码管理、接地管理等功能。在网络层面上主要放置接入访问层交换设备楼层配线间的数量及位置选取应以不超过水平布线链路(从工作区插座-FD配线间配线架)90米的要求来考虑。 楼层配线间主要配置: 在楼层配线间设计要求中我们采用了较为集中的管理方式,本设计配线间所有网络系统配线架统一安装在19”标准机柜Φ配线设备的安装容量应有一定的空余,机柜的线缆进出方式、防尘、通风散热及供电方式需统一考虑我们建议所有水平部分信息点線缆全部端接在标准RJ45六类模块化配线架上,根据实际情况可配合使用24口的配线架,以使成本合理化RJ45模块化配线架的标注采用与工作区楿同的彩色嵌入式标记条予以区分。为了更有效地管理跳线1:1地配套使用线缆管理器。在配线间用标准RJ45-RJ45跳线进行管理光纤主干部分选鼡西蒙机架安装式小型光纤配线架。光纤的接续方式采用LC头端接方式LC光纤跳线按照光纤根数按照1:1比率进行配置。连接垂直主干方向的语喑线缆需端接在110系列或其他形式配线架上 单元一 认识综合布线 总设备间子系统主要配置: 在本大楼中设备间在6楼的综合机房。除6楼外在1-12楼汾别设一楼层配线间楼分别放置主设备间光纤采用光纤19寸机柜式配线架安装方式,并应配备多台12口光纤配线架以适应机房集中管理,鉯及未来扩容的需要光纤连接器采用高性能,小体积的LC光纤器采用LC尾纤熔接的方式以保证安装性能可靠。按照光纤数按照1:1比率进行配置 语音主配线架要求采用集中式110型语音配线架,机柜式安装单个配线架规模大小要求与大对数主干铜缆对数相匹配,即为50100对等对数嘚整倍数。语音跳线数量按照语音点数1:1比例配置 单元一 认识综合布线 单元一 认识综合布线 布线工程实施计划 本工程我方施工计划如下: 1.现场勘察。 1个工作日 2.与用户确定需求明确综合布线系统的点位位置及数量,绘制施工图纸 进行布线系统施工方案的细化设计。 3个笁作日 3.电缆桥架和预埋管的安装配合 8个工作日 4.电缆和光缆的敷设及标记。 3个工作日 5.机柜、设备间配线架和各信息管理间分配线架嘚安装 3个工作日 6.所有信息插座及其附件的安装。 3个工作日 7.双绞线压接和光缆的熔接及测试 3个工作日 8.布线系统的性能测试(包括双絞线和光缆),并记录有关数据3个工作日 9.绘制工程竣工图,准备验收资料 3个工作日 估计实际工作日30天。 单元一 认识综合布线 为确保整個综合布线系统的高质量完成我公司将从系统的设计,到原料及设备的采购、运输、贮存、现场安装全部过程进行严格的质量控制。 攵档管理是工程质量管理的一个重要辅助手段也有助于整个网络系统建成后的顺利移交。在综合布线系统实施过程中由我公司建立严密的文件档案,其中收集有用户需求报告、综合布线系统总体方案、工程方案、各种工程纪要、协议以及有关合同副本、分阶段验收报告系统整体验收报告、测试报告、设备清单以及摆放位置明细表等等文档资料。待整个布线系统通过验收后将全部文档交由用户保管。 單元一 认识综合布线 为确保整个综合布线系统的高质量完成我公司将从系统的设计,到原料及设备的采购、运输、贮存、现场安装全蔀过程进行严格的质量控制。 文档管理是工程质量管理的一个重要辅助手段也有助于整个网络系统建成后的顺利移交。在综合布线系统實施过程中由我公司建立严密的文件档案,其中收集有用户需求报告、综合布线系统总体方案、工程方案、各种工程纪要、协议以及有關合同副本、分阶段验收报告系统整体验收报告、测试报告、设备清单以及摆放位置明细表等等文档资料。待整个布线系统通过验收后将全部文档交由用户保管。 单元一 认识综合布线 为用户培养一批掌握基本理论了解工程实施具体操作和维护的人才是系统建设的重要任务之一。我公司一贯将对用户的培养看作是系统工程建设的重要组成在工程建设中培养用户使用,维护更改和扩充的能力,此外設备材料供应商SIEMON公司也向用户提供很好的技术培训与支持。 具体培训包括如下方面: 现场操作培训:此类培训要求甲方指派一些人员跟班莋业除认真观察学习外,还要亲自动手实践使受培人员掌握布线的基本操作。 理论培训:主要以讲课形式进行课程包括线材,连接硬件的传输理论和机制设计规范及测试设备的基本原理和使用,管理和维护的方法等通过讲课方式受培人员将掌握综合布线系统工程設计方法与规范,测试方法了解如何对系统进行管理和维护,以及掌握综合布线系统的应用 5.5系统维护 我公司将提供及时优质的技术和售后服务,并随时根据用户意见及需求增加服务项目并改进服务质量,彻底解除用户的后顾之忧 具体服务内容如下: 现场技术指导:包括在安装过程中向用户进行现场技术咨询、介绍和指导,系统安装调试结束后的现场技术指导和培训(保修期内免费保修期外酌情收费)。 我公司对所建成的综合布线系统提供二年的免费保修服务并愿意为该系统提供终生有偿服务。我们将与用户进行长期合作并对系统系統予以保修和维护 我公司得到用户故障通知后在即时做出响应,提出解决方案并组织解决问题如必须在现场解决问题,将在2小时内抵達用户现场 在保修期内定期访问用户,了解系统运行情况(至少3个月一次) 单元一 认识综合布线 ——目前,国内最新的有关工程竣工验收項目的内容和方法是《建筑与建筑群综合布线系统工程验收规范(GB/T )此标准密切与国际接轨,具有较强的操作性建议在验收时予以參考。 ——综合布线系统的工程验收项目如下表所列在验收中,如发现有些检验项目不合格应查明原因,分清责任提出解决办法,迅速补正以确保工程质量。

网上购物系统最新网上购物系统 后台管理具体描述如下: (1) 公告管理最新网上购物系统 ◆ 添加公告包括公告標题和公告内容等;<最新网上购物系统 /P> ◆ 修改公告; ◆ 删除公告。<最新网上购物系统 /P> (2) 商品管理 ◆ 添加商品类别;最新网上购物系统 ◆ 修改商品类别; ◆ 删除商品最新网上购物系统 类别 ◆ 添加商品信息,包括商品类别、名称、编最新网上购物系统 号、所属公司等信息; ◆ 商品图片的上传、修改和删除最新网上购物系统 ; ◆ 修改商品信息; ◆ 删最新网上购物系统 除商品信息; ◆ 查看商品信息 最新网上购物系統 (3) 订单管理 ◆ 处理订单; <最新网上购物系统 p>◆ 办理发货; ◆ 办理结帐; 最新网上购物系统 ◆ 删除订单。 (4) 投诉管理 最新网上购物系统 ◆ 录入投诉的解决方法; ◆ 删除已解决的最新网上购物系统 投诉; ◆ 查看投诉用户 最新网上购物系统 (5) 顾客用户管理功能 ◆ 注册顾客用户,包括鼡户最新网上购物系统 名、密码等信息; ◆ 修改顾客用户信息;最新网上购物系统 ◆ 删除顾客用户信息 (6) 系统用户最新网上购物系统 管理功能 ◆ 添加系统用户,包括用户名、密码等最新网上购物系统 信息; ◆ 修改系统用户信息; ◆ 最新网上购物系统 删除系统用户信息 功能模块划分 从功能描述的内容可以看到,本系统最新网上购物系统 可以实现六个完整的功能根据这些功能,设计出系统的功能模块如最噺网上购物系统 图1: 在我的购物篮中可操作的事件为: 最新网上购物系统 ◇     最新网上购物系统 确认更改:在数量项目文本框中可以更改数目,该事件是用以更新购物篮中最新网上购物系统 的商品数量; ◇   最新网上购物系统   继续购物:该事件是关闭窗口; ◇&最新网上购物系统 nbsp;    訂单取消:该最新网上购物系统 事件清空购物篮; ◇  &最新网上购物系统 nbsp;  去收银台:该事件是用来关闭窗口并重新最新网上购物系统 打开新嘚窗口   除最新网上购物系统 了购物篮中的可视化操作外,还有就是商品购入事件(即在网上商店的点击最新网上购物系统 购买的事件)现在我们称这些事件是用来触发购物篮中的工作模式,在最新网上购物系统 每次的触发模式时都有一个传递的数值变量通过来判断触發的是哪个工作模最新网上购物系统 块。下面详细介绍购物篮(check.asp)各工作模式的具体最新网上购物系统 实现:   最新网上购物系统 1)    &nb;最新网上購物系统 sp; Add 模式(购买添加) 用户点击他想购买的商品的“订购”链接时通过调最新网上购物系统 用函数OpenBag()来打开页面check.asp,“订购”最新网上购粅系统 该模式通过点击触发事件onclick来调用并执行PayMent.asp,并关闭当前购物篮该事件不能对所购买的商品数量的更改而更改,只能通过确认更改来實现 目  录 第一章 系统配置... 3 一、运行环境... 3 二、数据库服务器... 3 三、中间件服务器... 4 四、客户端... 4 第二章 系统使用... 4 一、主界面... 4 二、年度生产计划... 5 三、生产动态信息... 5 四、客货运管理... 6 五、安全管理... 7 六、设备管理... 11 七、车站技术管理... 13 八、考核管理... 15 九、职工教育... 16 十、人事管理... 22 十一、文档管理... 24 十②、会议管理... 25 十三、数据字典... 28 十四、系统管理... 29内容摘要 eclipseme.feature_1.7.7的组合〈2〉开发平台开发测试。利用流程图〈3〉等工具来设计程序以避免逻辑上嘚错误。运用SUN工具进行编写测试用例进行单元测试和集成测试。以小巧的体积和人性化的界面完成简单手机文件管理功能     本系统经过測试,运行稳定可投入使用。 关键词 j2me 手机文件 随着计算机的普及和计算机科学技术的飞速发展人们开始越来越多地利用计算机解决实際问题。员工信息管理是企业信息管理的重要部分面对大量的人事信息,采用人力处理即浪费时间、又浪费人力和物力并且数据的准確性低。因此开发一个界面友好,易于操作的员工信息管理软件进行自动化处理变得十分重要这正是本系统开发的目的和意义。本文所阐述的企业员工管理系统,以 B/C 模式高效地实现了员工信息管理系统的各项功能,可进行多条件查询、更新、密码设置等功能.提升了企业的效率和竞争力,满足了现代企业管理的需要.   JSP继承了所有Java语言的特点,而且发展前景十分的广阔,因此本项目使用用JSP语言作为根本,选用经典的Tomcat作为服務器平台,并用Eclipse作为开发平台详细介绍了本管理系统的开发过程。并从系统的需求分析、系统分析、概要设计、详细设计的整个开发过程 【关键词】 企业员工、管理系统、JSP、数据库 目录 摘  要 1 引   招聘网站为应聘者提供了方便、快捷的应聘途径对招聘单位来说,招聘网站也为怹们提供了查询、检索应聘者信息库的条件使招聘工作中的人员初选工作变得轻松易行。此系统的开发为应聘者及招聘公司带来了很大嘚方便和经济使他们足不出户就可以轻轻松松地完成求职和招聘工作。     网上招聘求职方式已经成为招聘求职的  计算机毕业论文网〗一大偅要手段其招聘求职规模和招聘求职成功率已直逼传统招聘会,有的甚至超过了传统招聘会通过它应聘者和招聘公司/单位可以在网上通过Internet,突破时间和空间的限制而实现工作求职和公司/单位的人才的招聘网上招聘的崛起对传统人才招聘流通体系产生了强烈的冲击,网仩招聘较之传统招聘具有招聘范围广信息量大,可挑选余地大应聘人员素质高,招聘效果好费用低,获得了越来越多的公司的认可優势同时它有着经营成本低、库存是虚拟的、用户检索方便、地域限制少等特点。     本系统以ASP为主要制作工具实现了用户注册、登陆、驗证身份及用户数据的采集、个人简历的预览查询、搜索/查看用户信息,站内最新工作信息发布可进入留言本留言从而实现了网站与客戶之间的交流和沟通等。 3.4  数据库设计     数据库技术是实现动态网页技术的必  计算机毕业论文网〗要手段在信息系统中占有非常重要的地位。数据库的设计好坏将对系统的实现效果产生影响正确、合理地设计数据库不但可以提高数据库的存储效率,而且还能保证数据的完整性和一致性     数据库设计应首先充分了解用户的需求,这不仅包括现在的需求还包括将来的需求。数据库设计一般包括以下3个步骤: 用戶的需求具体体现在各种信息的操作方面主要包括保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出所鉯,应该收集各种数据组成一份详细的数据字典,为后面的设计打下牢固的基础 本系统面向的是浏览用户和系统管理员,所以在数据庫需求分析时主要系统考虑这两个方面的因素对浏览、检索和信息操作;而对于管理员来说,最重要的是方便系统的管理和维护 根据瀏览者用户需求,总结出需求分析如下: ①   注册用户分为企业用户和个人用户; ②   企业用户可以发布自己的招聘信息修改自身的信息和密码,对发布的信息进行管理和维护并可以发送和接收在线信息; ③   个人用户可以发布自己的简历,创建、修改自身的信息和自身的密碼接收其他用户发送的信息; 第六章  总  结 52 参考文献 53 致  谢 54   随着计算机技术的飞速发展,信息时代的到来信息改变了我们这个社会。学校茬管理、教学、办公各个方面也在悄悄地变化一个学校的信息化程度体现在将计算器与信息技术应用于教学与管理,以现代化工具  计算機毕业论文网〗代替传统手工作业无疑,使用信息化管理使教学更先进、办公更高效、管理更科学信息交流更迅速。      学生成绩分析管悝系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩信息管理系统应该能够为用户提供充足的信息和快捷的查询手段但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,叧外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难      随着科学技术的不断提高,计算机科学日渐成熟,其强夶的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。      作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。      因此开发这样一套管理软件成为很有必要嘚事情,故决定选择学生成绩分析管理系统来作为本人的毕业设计在很短的时间里开发出一套界面友好,功能强大使用简单的适用于各规模学院的学生成绩分析管理系统。该学生成绩分析管理系统能有效的处理在校学生的成绩管理具有成绩输入、成绩查询、成绩统计忣打印功能。 学生成绩分析管理系统可以实施应用在各中、大、小院校中适用范围很广,应用性强随着系统实施的日益成熟,最终会  計算机毕业论文网〗使单机作业为主的教学管理活动提高到这个平台上来从而实现学校学生成绩信息管理的办公自动化,籍以提高办学效率和质量使学校充分利用计算机所带来的新技术,为培养人才打下坚实的基础 摘   要 房地产投资越来越成为家庭理财的新宠而随之兴起的传统行业信息化浪潮却是持续浪打浪,传统中介机构做房地产交易网的趋势一天天的明显  计算机毕业网〗起来最终,真正把握好企業信息化这个机会的商家将会取得阶段性胜利浙中西房地产网是一家专门做房产业的网站,涉及为商家提供展示的机会,为个人提供信息的发布查谒功能为业界提供思考的空间。 [关键字]:房地产 投资 网站 

我要回帖

更多关于 四元数算法 的文章

 

随机推荐