🐑无敌BB
535311918
我是好人。
关注数: 4
粉丝数: 33
发帖数: 208
关注贴吧数: 14
轩尼诗XO拼团 J:/⇥Avmvqy73kczq1⇤ 复制并打开拼多多APP,309元拼团购买【原装正品】Hennessy轩尼诗新版V...,仅剩2个名额
有没有一起团个红茶来喝喝 O:/⇥TM1dGgwDRa6LQ⇤ 复制并打开拼多多APP,12.9元购买百亿补贴英国亚曼茶进口茶叶伯爵红茶袋泡茶英式红茶25袋装,仅剩2个名额
万向水龙头,抖音神器,一起团
电动牙刷,有没有上车
嘴馋了,开三人
朋友们,帮忙上个车
老铁们,来上个车
帮帮忙哟,还差两个人
大米大米,还差四个位
还差两个车位有没有上车
还差两个车位哦 还差两个车位
曝光骗子 苏子凌 18344464069 广东省陆丰市甲子镇新村二巷14号。苏子凌 18344464069 原销售行业手机卡,后收款后人消失,特曝光此人,以后警觉
关于虾皮API有没有懂的 关于虾皮API有没有懂的,我需要一个开发者账号,一直申请没下来,有没有哪个大佬懂的,可以和我说道说道,十分感谢,十分感谢
apiCloud大神进来,我有需求 我这边需要用apiCloud技术开发app,app的类型是导购类app,有相关经验,要接外包的联系我,长期合作哦。
有人能反编译.NET项目不 重金求方编译大神,方编译一个.net项目,有兴趣请跟帖
有大神会反编译.NET项目不 求会反编译.NET项目的能人,高薪求破解。有能力的跟帖
城管区南山路招聘兼职人员哦 我们是新梦想科技有限公司。现因发展需要,急需招聘若干名送货员,为我们送货。地点在南山路红山万和城。工作时间灵活,工资结算方式灵活。 适合在校大学生,放假大学生,不读书的大学生。 适合在校高中生,放假高中生,不读书的高中生。 适合在校中学生,放假中学生,不读书的中学生。 希望各大有志愿的大兄弟们加入到我们团队。 有意可咨询:唐经理 联系电话:177 9426 7556
填写这个验证码 840700279 填写这个验证码 840700279 谢谢,好人一生平安
谁有m8尸体? 屏幕和卡槽要好的。谁有。卡槽坏自己拆了下屏幕也挂了。
【求助】win10 专业版,每次开机都会弹出Explorer.EXE错误的提示 提示如下图,都没有内容的。系统是64位的。请友友们有没有遇到,或者有没有什么解决方法。还有个问题,就是win10安装任何音效驱动软件,都不能调音效,调了都没有用。请问有没有什么解决方法。谢谢了
求助win10正式版,每次开机都提示Explorer.EXE错误。 情况如下图。每次开机都会这样。有没有友友解决了,求助。虽然不影响,可以总感觉好别扭。还有个问题,就是win10不管安装什么音效控制软件,全部都不会跳频谱,包括本机自带的win7版本的音效软件,也是不能控制音效。
软件开发究竟是变容易了,还是越来越难了? 最近一直在考虑这个问题,比如SAP ERP,基本靠配置就可以满足客户绝大部分需求。 而JAVA世界中的轮子越来越多,貌似什么东西都可以找到。 而且客户也在进步,不再追求华而不实的定制功能,好像买一台电视机一样,不会提出把面板改成机器猫图案的,那么按照20/80原则,软件80%的基本功能可以事先确定下来,不再需要每次重复开发。从这点来讲,是越来越简单了,以至于高中生也可以加入进来。 但是,剩下的20%,会越来越困难,因为,既然用了别人的轮子,那么要完成20%的功能,除了必须的工作外,还要深入到轮子的内部,彻底了解实现机制,并且按照已然存在的规范去开发,显然造成了一定困难。 轮子往往越来越集中到少数大企业,比如SUN\IBM\MS,他们处于商业考虑,不断搞出花样,那么可怜的程序员也要跟着学习新的轮子,而事实证明,这些工作是浪费生命,而且不会有太大的技术上的提升。 从这点来讲,是越来越难了,而且,越来越无聊了。 一直在寻找银弹,一直失望,那么,大家来讨论吧,你觉得软件开发是难了还是简单了。
论面向对象编程 面向对象编程三大特性是封装、继承和多态,而不再是简单的函数、方法 个人理解:面向对象是一种思想,如何成功的将业务逻辑和界面逻辑分离,尽可能大的在维护、修改的时候改动尽可能少的代码(独立出来单独的功能块而不需要改一而动全身),降低程序的耦合度。最基础的核心,应该就是抽象,如何利用掌握的知识,将事物的数学模型归纳好,这是一种思想,而不是一种简单的方式方法。面向对象还是过程,很重要么?不重要么?呵呵~~程序并不是实现了功能、界面美观就是好程序,同样,也不是使用了封装、继承和多态的就是面向对象。 程序员应该比操作员追求更高的一个目标… 什么是封装 封装 (encapsulation) 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。 封装的大致原则 1把尽可能多的东西藏起来.对外提供简捷的接口. 2把所有的属性藏起来. 例如,在抽象的基础上,我们可以将时钟的数据和功能封装起来,构成一个时钟类。 按c++的语法,时钟类的声明如下: class Clock { public: //共有成员,外部接口 void SetTime(intNewH,int NewM,int NewS); void ShowTime(); private: //私有成员,外部无法访问 intHour,Minute,Second; } 可以看到通过封装使一部分成员充当类与外部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。 什么是继承 “继承”是面向对象软件技术当中的一个概念,例如在java语言中,java语言中不支持多重继承,是通过接口实现多重继承的功能。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。 继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的"父亲",而这些子实体则是汽车的"孩子"。 同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。 什么是多态 多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例): public interfaceParent(){ public voidsimpleCall(); } public class Child_Aimplements Parent{ public voidsimpleCall(){ //具体的实现细节; } } public class Child_Bimplements Parent{ public voidsimpleCall(){ //具体的实现细节; } } //当然还可以有其他的实现 然后,我们就可以看到多态所展示的特性了: Parent pa = newChild_A(); pa.simpleCall()则显然是调用Child_A的方法; Parent pa = newChild_B(); pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注射机制。 什么是耦合度 蒋:实际上不能也不必追求到完美的最低耦合度,在一定范围内降低,就足矣。 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 耦合度是指模块之间联系的紧密程度。耦合这个概念大家都很清楚,它的强弱直接影响软件的维护和升级。耦合的强弱叫做耦合度。我们的软件工程里面一个基本原则是高内聚,低耦合。但是没有耦合的系统是不存在的。因为各个模块要互相辅助才能完成一个真正的系统,所以现在好多说法是降低耦合,而没有那种说取消耦合的说法了。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。 两个模块之间的耦合方式通常可分为7种,按其耦合度从低到高的次序依此为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。 内聚度是指内部各元素之间联系的紧密程度,模块的内聚种类通常可分为7种,按其内聚度从低到高的次序依此为:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
震撼!飞机坠落前十分钟。 生命竟如此短暂。请珍爱生命,学会感恩。 视频来自:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fv.qq.com%2Fpage%2Ff%2F9%2Fx%2Ff0150bmtt9x.html&urlrefer=11180d6ca3c15e986e2dfc56c50bc201
从过去到现在:论软件开发的过程 一、什么是软件过程 软件过程就是为了获得高质量软件产品所需要完成的一系列任务的框架,规定了各项任务的工作步骤.我们常用软件周期描述它, 下面通过分析几个典型的软件开发过程模型:瀑布模型、快速原型化模 型 、增量模型、螺旋模型、构件组装模型 ,分析每个模型的产生情况,研究软件开发过程模型整体的发展过程,在此基础上思考软件开发过程的产生和发展问题。 二、软件生命周期的发展 一个软件从开始计划到开发成功、交付使用,再到废弃不用,有一个完整的生命周期,称为软件的生命周期。软件生命周期可以说是最早的软件过程模型。软件生命周期的研究开始于6 0年代。软件生命周期把一个软件的开发过程分成了几个预定义的阶段。每个阶段包含了一些预定义的活动。每一个阶段从前一个阶段接受输入, 并且产生输出到下一个阶段。一旦选择了一个系统生命周期模型, 不但确定了软件过程的划分, 而且确定了每一个阶段所要产生的产品 (文档)。 瀑布模型的产生 早期的软件开发活动带有明显的个体化特征,非常不规范,随意性很强,人们错误地认为软件就是程 序,对程序之外的数据和相关的文档材料没有给予重视,对编写程序之外的软件开发活动(如需求分析、概要设计、详细设计、软件维护等等)没有给予重视,结果出现了软件危机。软件危机的典型表现有:开发成本急剧上升、开发进度一再拖延 、软件难以维护甚至无法维护、软件质量无法保证、开发出的产品不能满足用户 需要,等等。为了摆脱软件危机,人们开始研究软件开发方法 ,1968年提出“软件工程”的概念,主要思路是将人类从事各种工程项目积累起来的行之有效的原理和方法应用于软件的开发和维护活动中。在这种情况下,1970年瀑布模型被推出。 瀑布模型按照软件的生命周期,将软件过程分为: 问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、维护等几个阶段。软件开发活动按顺序一个阶段接着一个阶段地进行,每个阶段完成一项特定任务,每个阶段的结果经审查合格后方能进入下一个阶段。瀑布模型严格地规定了每个阶段必须提交的文档,强迫开发人员采用规范的方法,要求每个阶段提交的产品必须经过专家的仔细验证。这样,软件质量得到了保证。由于各阶段提交了规范的文档,软件维护变得容易一些。瀑布模型的成功在很大程度上是由于它是文档驱动的模型。 瀑布模型的推出,是人们为了摆脱软件危机迈出的重要的一步。按照瀑布模型去进行软件开发活动,克服了开发中的个体随意性和不规范倾向,使软件开发有章可循,有效地遏制了日益蔓延的软件危机。 快速原型化模型的产生 按照瀑布模型开发软件,虽然很有效,但灵活性不强,因为瀑布模型是按阶段顺序来操作的,必须在前一阶段的工作完成后才能进行下一阶段的工作。需求分析是一个重要的阶段,由于在开发早期用户的需求往往是模糊的,或由于某些原因用户的需求要发生变化,导致需求分析阶段的工作无法结束,造成下一阶段的概要设计工作无法进行。这时如果继续采用瀑布模型进行软件开发活动,显然不妥,因此为了解决这类软件开发问题,必须构建新的软件开发过程模型。 在这种情况下,快速原型化模型被推出。人们认识未知的事物,往往按照“实践、认识、再实践 、再认识 ,逐步完善”的规律去做,经过反复多次的迭代式的实践和认识过程,达到基本了解事物情况的目的。快速原型化模型按照这个规律进行软件开发活 动,首先快速建立一个能反映用户主要需求的原型系统,请用户在计算机上试用,通过试用,用户提出修改意见;开发人员按照用户意见快速地修改原型系统,然后再让用户试用 ;然后开发人员按照用户意见再去修改;如此反复多次,直到原型系统完全满足用户需求为止。 采用快速原型化模型进行开发活动,有效地解决了用户需求模糊不清和用户需求不断变化的问题。 可以认为快速原型化模型是对瀑布模型的补充和完善,瀑布模型是用静止的观点来看待软件开发活动,将用户需求看成是固定不变的,这样实际上是将用户需求简单化了,这种理想状态实际很难找到。快速原型化模型是从变化的观点来看待软件开发活动,符合客观 实际情况,所以许多后来推出的模型都吸收了快速原型化模型的这种观点。 增量模型的产生 采用瀑布模型或采用快速原型化模型来开发软件时,是按照模型规定的开发过程,完成各开发环节的所 有任务,得到一个完整的软件,将其提交给用户。面对软件规模越来越大、软件市场竞争越来越激烈、用户要求越来越高的形势,这样开发存在很多问题。当你将一个大的完整产品提交给用户后,用户要花费很多时间来学习这个新产品,短时间内很难适应这个新产品,给工作中应用该产品带来不便;这个产品完整提交后,用户再去评价和提出修改意见就没有意义了。这样,使开发风险加大,使开发时间增长,使用户满意度降低。为了解决这个问题,必须构建新的软件开发过程模型。 在这种情况下,增量模型被推出。人们解决大问题时,往往是将大问题分解为若干个小问题,每个小问题比较容易解决(其中有一个小问题是核心的关键问题),将这些小问题分别给予解决 (对于核心的关键问题首先给予解决),那么大问题也就被解决了。一般来说,分解出的每个小问题具有相对独立性 ,即每个小问题与其它每个小问题联系不紧密,这样,既可以一个接着一个地顺序去解决每个小问题,也可以同时去解决多个小问题。增量模型按照这样的方法进行软件开发,将一个大的软件分解为一系列较小的“增量”,每个增量分别进行开发,通常开发的第一个增量是软件的核心部分,实现软件的基本需求。向用户一个增量接着一个增量地分批提交软件产品。 采用增量模型,用户从拿到第一个增量时开始,就可以学习和熟悉软件,通过使用来评价软件及提出修改意见;开发人员根据用户对已经提交的增量的反馈,可以改进软件产品。这样,提交所有增量后,软件产品就达到比较完善的程度,也提高了用户满意度。 螺旋模型的产生 软件开发从始到终都存在着风险,项 目规模越大、软件越复杂,开发该项目所冒的风险就越大。因此,如何识别风险、预测风险、驾驭风险,将风险可能造 成的危害消除或减少,是软件开发中必须要考虑的问题。但是在螺旋模型之前所提出的各种软件开发过程模型,都没有强调“风险分析”。 在这种情况下,螺旋模型被推出。其实人们做任何事情之前,都要考虑风险。如果存在风险,那么一定要想办法去消除,否则成功希望渺茫。螺旋模型是在结合瀑布模型和快速原型化模型的基础上增加了“风险分析”的内容。螺旋模型在总体开发框架上,带有瀑布模型的系统性、顺序性和“边开发,边评审”的特点。螺旋模型也是一种迭代模型,每一次迭代均可采用快速原型化模型方法,每一次迭代均作风险分析。螺旋模型由若干个螺旋周期组成,每一周期都包括需求定义、风险分析、工程实现和评审四个阶段,当项目按顺时针方向沿螺旋线移动时,每迭代一次,螺旋线就前进一个周期,软件开发又前进一个层次,系统又生成一个新版本(即构造一个新的原型,这个新原型是在风险被排除后得到的),当迭代过程进行到用户允许或可接受的范围时,迭代结束。 螺旋模型的推出,强化了人们的风险意识。通过使用原型来降低风险是一种行之有效的方法。螺旋模型集成了瀑布模型和快速原型化模型的优点,又有自身的特点,是一个实用性很强的软件开发过程模型。 构件组装模型的产生 面向对象技术出现之前所提出的各种软件开发过程模型,一般很少考虑“软件构件”的重复使用问题,即使编程时重复使用了一些库函数,量也不大,并且粒度小。因此,软件开发的任何一项工作基本是从头开始做,完整地做到尾。这样开发的缺点是成本高、时间长,当然出错的可能性也大。人们考虑:如果在开发 新软件时,能大量地重复使用已经开发过的软件中的内容,开发时间和成本不就降低了吗?又由于已经开发过的软件经过了严格的测试 ,重复使用这些内容在质量上当然是有保证的。面向对象技术的出现,为这个想法开辟了道路。 在这种情况下,构件组装模型被推出。 重复使用的思想早已在许多领域广泛应用了,例如在工业生产中,重复使用各种零部件来组装生产新产品。在软件生产中,由于每个软件与其它软件都不同,在面向对象技术出现之前,重复使用难度比较大。面向对象技术将数据和操作该数据的算法封装在一起,做成一个个的“类”,将一个或多个相关“类”组合成 一 个“软件构件”,在某领域内使用过的所有“软件构件”被放到一个“软件构件库”中,这样为重复使用打下了基础,构件组装模型就是通过重复使用“软件构件库”中的软件构件来进行软件开发。使用构件组装模 型开发软件时,根据被开发软件的目标和开发方案。选 取软件构件库中的软件构件,组装成一个完整的软件版本。 构件组装模型的推出,使前人的劳动成果被有效地利用了起来。按此模型进行开发活动。可以节省时间、降低成本,软件质量也有保证。构件组装模型的出现,使软件开发工作开始进入一个新时代。 三、结束语 软件开发过程模型的出现不是偶然的,从以上分析几个典型的软件开发过程模型的产生情况可以看出:软件开发过程模型的出现,是人们为了消除软件危机、使软件开发活动有序化和规范化、高效率地得到高质量的软件产品而不断研究总结的结果,每一种新的软件开发过程模型的出现,都为当时软件开发遇到的某一类问题提供了解决方案,从而丰富了软件工程的内容,推动了软件工程理论向前发展。 软件开发活动的多样性,决定了软件开发过程模型在形式上的多样性。人的思维在发展,开发技术和工具在发展,推动着软件开发过程模型更新发展。在目前的基础上,研究软件开发过程的发展问题,对于提高软件开发的质量和效率具有重要的意义。
Surpass Autumn 框架结构 SurpassAutumn架构文档 框架目标: 本框架一直针对商业应用软件行业所设计的,目的也仅是为了快速开发、鲁棒性程序、可维护性高。 框架结构: 本框架以三层架构为基础开发的一套快速开发框架,它针对性集成了多种对单据类型窗体的支持类库。 结构说明(图):总控制室: 总控制室一般初始化会放在Main入口中,并定义为静态对象。 档案室: 总控制室的初始化与档案室息息相关,以及各个子控制室、SurpassAutumn类库所需要的信息,也为UI层提供了一个便捷服务。 当我们在编写UI层逻辑的时候,经常会遇到一个窗体需要多个数据处理对象时,这时候去创建太多个显然不是一个明智的处理,毕竟在总控制室的层层防护之下也会对其造成一些性能影响。就此作者建议是在档案室中放一些函数诸如,获取指定客户编号的数据,获取指定产品编号的数据。 请注意,档案室是放在总控制室中,因此它是静态的。 权限控制室: 权限控制室的功能是在客户端尝试访问业务处理层库、UI处理层库获取对象时,权限控制室会对其进行权限验证,这是第一层外围权限。 当数据业务处理层对UI层输出数据时,权限控制室会对数据进行过滤,会对一些用户没有权限的字段进行隐藏、拦截。这是第二层防护。 当UI层向数据层访问新增、修改、删除时,权限控制室会接收到这样的信息,并对用户进行权限验证,这是第三层防护 每层防护均有开关设置,请查阅SurpassAutumnConfig类中的定义。 错误解决方案库: 一个对象从总控制室的业务处理库、UI对象库拿出去后,都会进入try-catch监视范围,当出现错误时,由总控制室转发到错误解决方案库中寻找解决方案对象,如果找到了,则对其进行修复。如果找不到,则发出错误向用户告知,并尝试从网络服务器寻找解决方案,该思路与微软的错误解决机制差不多,可以通过网络服务器来修复错误。 两个对象库: 从上述得知对象库的作用是为了权限控制以及错误解决方案而定义的一个库。 功能框架类库 SurpassAutumn功能类库中提供了一系列快速开发的功能,功能类库结构 SurpassAutumn的三层架构 第三层数据交换器第二层,业务处理所有的业务处理层对象都应该继承自SystemDataSoureces,否则总控制室则认为该对象不是业务处理层所管。 该层代码均由SurpassAutumn生成。 1、生成后的业务层代码建议应该使用存储过程形式来处理,这样有利于维护中的错误排除。 2、存储过程应由SurpassAutumn生成更为可观。 第一层:UI层UI层的代码,应由SurpassAutumn生成。 ERPOrderModule实现了对窗体的常用操作、对ERP的常用操作等,以满足敏捷开发的需求。 参见:DataFatchBaseModule(取数父窗体)以及 SurpassAutumn中的其它父类窗体
求助,关于serv-u的登陆问题 我第一次用ie登陆,打开http:双斜杠127.0.0.1冒号43958/,界面显示这个。然后试了很多密码都不能登陆。请问这个账号和密码要在哪里进行设置呢???我用用户的账号密码也提示登陆失败。。。求解答。先谢谢了
有没有广东的鱼儿 交流下吧!我是潮州的
1
下一页