【Java】_处理数据的一些规则及软件开发的一些小技巧和建议

学习资料来源:斯坦福大学公开课编程方法cs106aJAVA

学习过程中使用的代码、笔记初稿(主要按顺序记录视频教程讲解内容)以及课程讲义已上传至下载中心(有兴趣者可自行下载学习),

学习过程中的大部分程序需要导入acm.jar包(已上传至下载中心,也可自行进入http://jtf.acm.org/ 进行下载),

处理大型数据结构的规则:

名词(nouns)对应 类(classes)
    动词(verbs)对应 方法(methods)
    数据要有与其对应的唯一标识符
    需要选择适当的集合体
    为了减少存储空间以及便于数据的调用,一般数据只有一份,使用时路径指向需要的数据即可

示例:编写一个简易网络音乐商店(需要能够添加音乐(Song)以及专辑(Album)等)

根据数据结构规则:(名称对应类,动词对应方法)

Class Song
            name              String
            band            String
            price            double
            unique identifier(name + band) —— 唯一标识符

Class Album
            name               String
            band            String
            list of songs    ArrayList
            add
            list(iterator)

ArrayList<Song> songs = new ArrayList<Song>();
        HashMap<String, Album>  albums = new HashMap<String, Album>();

软件开发的一些技巧及建议

调试程序(Debugging):
        设计软件(Design) —— 建筑师(Architect)
        编写代码(Coding)—— 工程师(Engineer)
        测试(Testing)—— 破坏他人财产的人(Vandal)
        调试程序(Debugging)—— 侦探(Detective)—— 找到错误在哪 并修复它

软件开发四部曲:
        测试 —— 开发 —— 调试 —— 部署
        每一环节的花费是前者的十倍

调试经验总结:(产生问题的原因)
        1、    不好的变量值
        2、    有错误的逻辑
        3、    无根据的假设——单位

软件调试的规则:
        大部分问题都是简单的问题。
        程序要系统化
        质疑你的假设(很多人在程序出现问题时常常会假设问题可能出现在哪里)
        挑剔的对你的代码
        遇到问题时别惊慌失措
    
    调试方法:
        println:如果错误的值是你程序的问题所在,在代码里添加额外的prinln语句可以查找问题所在位置
        单元测试(Unit test):测试独立的单元 (不可一口气测试整个程序)
        eclipse调试方法:断点

时间: 2024-11-03 05:22:08

【Java】_处理数据的一些规则及软件开发的一些小技巧和建议的相关文章

as3+java+mysql(mybatis) 数据自动工具(五)

现在介绍常量的配置,主要用于客户端(as3)与服务端(java)之间的常量同步,比如错误码.请求标识等 配置格式: <macros name="Macros" groupStart="16" groupEnd="128" bitOffset="20" author="idoublewei" note="宏定义"> <macro name="SEX_MALE&q

我的全栈之路-Java基础之数据存储

我的全栈之路-Java基础之数据存储 我的全栈之路 2.1 标识符 标识符是在程序开发时给包,类.接口.注解,变量,方法命名的字符序列. 标识符在命名时需要遵守相关的规则和规范: 标识符的命名规则: 标识符不能是Java的关键字和保留字,关键字是Java中被赋予赋予特殊含义的单词,例如public static void等等.保留字是现有Java版本尚未使用,但是未来的Java版本可能会做关键字使用的单词,例如goto,const.但是可以包含关键字,保留字. 标识符可以由字母.数字.下划线组成

[z]protobuf实现c++与java之间的数据传递,beancopy数据到前台

[z]http://blog.csdn.net/xhyzdai/article/details/46684335 定义proto文件 [plain] view plain copy option java_package = "com.wy.web"; message my_message{ required string startedTime =1; required string version=2; required double configuredCapacity=3; r

Java在处理大数据的时候一些小技巧

转载自:http://soft.chinabyte.com/database/258/12609258.shtml 众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法; 例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心

java获取天气预报数据

获取天气预报数据 对于做web项目有天气数据的需求,这个服务很合适: WebXml.com.cn 2400多个城市天气预报Web服务,包含2300个以上中国城市和100个以上国外城市天气预报数据.数据每2.5小时左右自动更新一次,准确可靠.提供webservice 接口,主连接:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/ 方法调用说明如下: (1)getRegionCountry :获得国外国家名称和与之对应的ID 说明

Jvm基础-Java运行时数据区

最近在看<深入理解Java虚拟机>,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此.这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出. 首先把图贴上来,图来自JVM Runtime Data Areas(运行时数据区),感谢. 由上图可知,Java运行时数据区域包括程序计数器.Java虚拟机栈.本地方法栈.Java堆.方法区. 1. 程序计数器 程序计数器用来记录下一条字节码指令,因为CPU是要轮转的,在切换回来之后,Java能够找到下一条要执行的指令.如

iOS_18_控制器切换_NavigationController_push方式_传递数据

最终效果图: storyboard示意图: BeyondViewController.h // // BeyondViewController.h // 18_控制器切换_navigation_push_通过storyboard方式 // // Created by beyond on 14-7-31. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import <UIKit/UIKit.h> @interface Be

[Java]_函数传参的疑惑与思考

问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. 1 void dfs(TreeNode node , int sum , ArrayList<Integer> curPath) 2 void dfs(TreeNode node , int sum , boolean ifExist) 问题:在1号中我可以在方法中修改curPath,在结束函数调用时,变量修改仍然生效.   在2号问题中,我即使在函数中修改了ifExist,结束函数调

[原]使用Fiddler捕获java的网络通信数据

[原]使用Fiddler捕获java的网络通信数据 System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost", "127.0.0.1"); System.setProperty("http.proxyPort", "8888");