- 博客(23)
- 收藏
- 关注
原创 第八章--第三节:性能优化的代码调优
第八章:软件构造的性能第三节:性能优化的代码调优问题一:代码调优的策略和过程 代码调优:代码调优不是为了修复bug,而是对正确的代码进行修改以提高其性能。调优不会减少代码行数不要猜原因,而应有明确的优化目标不要边写程序边调优不是性能优化的第一选择代码行数与性能之间无必然的联系代码调优建立在对程序性能的精确度量基础之上(profiling)问题二:代码调优的模式 1.单例模式(Singl...
2018-06-15 17:48:54 357
原创 第八章--第二节:动态程序分析方法与工具
第八章:软件构造的性能第二节:动态程序分析方法与工具问题一:性能调优的工具 1.命令行分析工具(Command-line profiling tools) ①jstat:获取JVM的heap使用和GC的性能统计数据 ②jmap:输出内存中的对象分布情况 ③jhat:导出heap dump,浏览/查询其中的对象分布情况 ④jstack:获取Java线程的stacktra...
2018-06-15 16:27:31 632
原创 第七章--第四节:调试(Debugging)
第七章:软件构造的健壮性.第四节:调试(Debugging)问题一:什么是bug程序中的错误,导致程序以非预期或未预料到的方式执行。一个包含大量bug和/或严重干扰其功能的bug的程序被称为buggy。报告程序中的bug通常被称为bug报告、故障报告、问题报告、故障报告、缺陷报告等。问题二:常见的bug的类型数学bug:例如 零除法,算术溢出逻辑bug:例如 无线循环和无限递归源头bug:例如 使...
2018-06-15 15:37:06 489
原创 第十章--第一节:并发与线程安全
第十章:并行与分布式程序设计第一节:并发与线程安全问题一:并行程序设计两种模式 1.共享内存两个处理器,共享内存同一台机器上的两个程序,共享文件系统同一个Java程序内的两个线程,共享Java对象 2.消息传递网络上的两台计算机,通过网络连接通讯浏览器和Web服务器,A请求页面,B发送页面数据给A即时通讯软件的客户端和服务器同一台计算机上的两个程序,通过管道连接进行通讯问题二:进程、线...
2018-06-15 15:35:39 517
原创 第八章--第一节:性能构造的度量、原理和方法
第八章:软件构造的性能第一节:性能构造的度量、原理和方法问题一:性能度量指标 1.时间性能:每条指令、每个控制结构、整个程序的执行时间 2.空间性能:每个变量、每个复杂结构、整个程序的内存消耗获取运行时间,获取执行时间,问题二:内存分配与内存管理问题描述:因为内存不足,所以需要考虑高效率的内存管理问题1.内存对象模型每个对象存储在内存中一段连续的空间中如果是引用,则存储它所指向的对象的...
2018-06-15 15:27:37 409
原创 第六章--第二节:设计可维护模式
第六章:面向软件构造的可复用性的构建方法第二节:设计可维护模式问题一:可维护模式的分类构建模式(Creational patterns)结构模式(Structural patterns)行为模式(Behavioral patterns)问题二:构建模式(Creational patterns) 1.工厂模式方法(Factory Method pattern) 方法:定义一个用于创建对象...
2018-05-07 16:20:33 362
原创 第七章--第二节:错误和异常的处理
第七章:软件构造的健壮性第二章:错误和异常的处理问题一:Java中的错误和异常java.lang.Throwable 包含:java.lang.Exception、java.lang.Error。内部错误(Error):程序员通常无能为力,一旦发生,想办法让程序优雅的结束异常(Exception):你自己程序导致的问题,可以捕获、可以处理问题二:错误(Error) 分类:User input...
2018-05-07 16:17:27 396
原创 第七章--第一节:健壮性与正确性的区别
第七章:软件构造的健壮性第一节:健壮性与正确性的区别问题一:什么是健壮性&正确性 1.健壮性(Robustness) 含义:系统在不正常输入或不正常外部环境下仍能够表现正常的程度 面向健壮性的编程做法:处理未期望的行为和错误终止即使终止执行,也要准确/无歧义的向用户展示全面的错误信息错误信息有助于进行debug 面向健壮性编程的原则:Paranoia (偏执狂):总...
2018-05-03 20:51:11 813
原创 第六章--第三节:面向可维护性的构造技术
第六章:面向软件构造的可复用性的构建方法第三节:面向可维护性的构造技术问题一:面向可维护性构造的分类基于状态的构造(State-based construction)表驱动的构造(Table-driven construction)基于语法的构造(Grammar-based construction)问题二:基于状态的构造(State-based construction) 基于状态的编程:...
2018-05-03 20:10:37 348
原创 第六章--第一节:可维护性的度量和构造原则
第六章:面向软件构造的可复用性的构建方法第一节:可维护性的度量和构造原则问题一:什么是软件的维护和演化 维护的含义:软件工程中的软件维护是交付后修改软件产品以纠正故障,提高性能或其他属性,简而言之,软件维护:修复错误、改善性能。 维护的类型:纠错性(25%)、适应性(25%)、完善性(50%)、预防性(4%) 演化的含义:对软件进行持续的更新 软件演化的规律(Lehman)...
2018-04-30 09:59:50 647
原创 第五章--第三节:设计复用模式(pattern)
第五章:面向软件构造的可复用性的构建方法第三节:设计复用模式(pattern)问题一:复用模式的类型Creational patterns 创建型模式Structural patterns 结构型模式Behavioral patterns 行为类模式问题二:Structural patterns 结构型模式 1.适配器模式(Adapter) 含义:适配器模式是作为两个互不相容的接口的桥...
2018-04-19 21:29:36 716
原创 第五章--第二节:复用性的实施
第五章:面向软件构造的可复用性的构建方法第二节:复用性的实施问题一:设计可复用的类1.行为子类型和LSP原则 子类型多态:客户端可用统一的方式处理不同类型的对象 子类型多态要遵守的原则:客户端可用统一的方式处理不同类型的对象子类型需要实现抽象类型中的所有未实现方法子类型中重写的方法必须有相同或子类型的返回值子类型中重写的方法必须使用同样类型的参数子类型中重写的方法不能抛出额外的异常 ...
2018-04-11 22:37:27 358 1
原创 第五章--第一节:度量、形态学和可复用性的外部观察
第五章:面向软件构造的可复用性的构建方法第一节:度量、形态学和可复用性的外部观察问题一:可复用性实现的级别 1.源代码级别的复用 方法:从网上搜索源代码2.模块级别的复用:类/抽象类/接口 方法:继承(类复用的方法)、委托3.库级别的复用:API/包 方法:Libaray、framework library:开发者构造可运行软件实体,其中涉及到对可复用库的调用。 fr...
2018-04-09 11:11:10 268
原创 第三章--第五节:在ADT和OOP中的“相等”
第三章:抽象数据类型(ADT)和面向对象编程(OOP)第五节:在ADT和OOP中的“相等”问题一:三种方式来看待“相等” 使用AF来看待“相等”:AF映射到同样的结果,则等价(a equals b if and only if f(a)=f(b)) 使用一个等价关系来看待“相等”:等价关系:自反、对称、传递(与第一种方式是等效的) 站在外部观察者角度来看待“相等”:如果他们不能...
2018-04-02 16:57:55 396
原创 第三章--第四节:面向对象的程序设计
第三章:抽象数据类型(ADT)和面向对象编程(OOP)第四节:面向对象的程序设计问题一:一个类的静态方法和实例方法的区别 用法的区别:静态方法与任何类中的实例都没有联系,实例方法必须需要一个特定的对象来调用(在静态函数中)。 内存存储的区别:问题二:接口(Interface)与封装隐藏 1.接口的特点: 接口定义抽象数据类型(ADT),类实现ADT;接口确定ADT规...
2018-03-28 18:24:22 336
原创 第三章--第二节:设计规约
第三章:抽象数据类型(ADT)和面向对象编程(OOP)第二节:设计规约问题一:规约(为了程序的交流) 1.程序中的文档(Documenting in programming) 例:API文档(文档中的内容:变量的数据类型定义、final关键字定义了设计决策:“不可改变”)代码本身就蕴含着你的设计决策,但是远远不够 2.Specification and Contract(...
2018-03-26 20:54:29 453
原创 第三章--第三节:抽象数据类型(ADT)
第三章:抽象数据类型(ADT)和面向对象编程(OOP)第三节:抽象数据类型(ADT)问题一:抽象的和用户定义的数据类型 除了编程语言所提供的基本数据类型和对象数据类型,程序员可定义自己的数据类型抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。传统的类型定义:关注数据的具体表示***一个抽象的数据类型是由它的操作定义的:(抽象数据类型的实...
2018-03-26 14:59:58 742
原创 第三章--第一节:Data数据类型和数据类型检查
第三章:抽象数据类型(ADT)和面向对象编程(OOP)第一节:数据类型和数据类型检查问题一:java中数据类型的分类基本数据类型(primitive types)对象数据类型(object types)二者不比较:先下图(*基本数据类型只有值没有ID的意思是:若inta=1;intb =1;则a和b指向的是同一存储空间的值“1”;而对象数据类型a和b就指向两个不同的...
2018-03-21 11:36:43 3313
原创 第七章--第五节:测试和测试优先编程
第七章:软件构造的健壮性第五节:测试和测试优先编程问题一:测试的概述 测试: 1.是确保程序正确性/健壮性最普遍的手段 2.发现程序中的错误,提高程序正确性的信心 3.提高软件质量的重要手段 4.确认是否达到可用级别(用户需求)(spec) 5.关注系统的某一侧面的质量特性 ...
2018-03-14 11:23:57 445
原创 第二章--第二节:软件构建的过程、系统和工具(软件构造学习笔记)
第二章:软件建设的过程和工具第二节:软件构建的过程、系统和工具问题一:广义的软件构造过程 :Programming(coding)(编码)-->Build(构建)-->Code review Static code analysis(代码评审)-->Dynamic code analysis /profiling(性能分析)-->Testing(测试)-->De...
2018-03-14 10:40:18 1542
原创 第一章--第二节:软件构造的质量目标(软件构造学习笔记)
第一章:软件构建的视图和质量目标第二节:软件构造的质量目标问题一:影响软件质量的因素 1.外部质量因素 2.内部质量因素外部质量因素影响用户内部质量因素影响软件本身和它的开发者外部质量取决于内部质量问题二:外部质量因素包括什么1.Correctness 正确性 含义:正确性是软件产品按照其规范定义的执行其精确任务的能力。至高无上的质量目标软件的行为...
2018-03-14 10:40:11 520
原创 第一章--第一节:软件构建的多维视图(软件构造学习笔记)
第一章:软件构建的视图和质量目标第一节:软件构建的多维视图问题1:构建软件系统的三个维度 1.By phases: build- and run-time views 2.By dynamics: moment and period views 3.By levels: code and component views问题2:每个维度的含义1.build- ...
2018-03-14 10:40:01 644
原创 第二章--第一节:软件的生命周期和配置管理(软件构造学习笔记)
第二章:软件建设的过程和工具第一节:软件的生命周期和配置管理问题一:软件开发的生命周期1.从无到有(从0到1)2.从有到好(从1到n)问题二:传统的软件过程模型两种基本类型: 1.线性过程 2.迭代过程存在的模型: 1.瀑布过程(线性) 2.增量过程(线性) 3.V字模型 4.原型过程 (迭代) 5.螺旋模型(迭代)问题三:各个模型的含义及特点1.瀑布模型...
2018-03-14 10:39:43 333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人