
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159167
零基础学Java电子教程 附随书光盘
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181032
数据结与算法 Java语言版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160250
精通JBuilder 2005 中文版 高清PDF+随书光盘
http://bbs.topsage.com/dispbbs_121_172861_1.html
程序天下:J2EE整合详解与典型案例 电子教程+随书光盘
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181884
JSF JavaServer Faces in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160229
Spring in Action (第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146170
Manning jQuery in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174769
Spring In Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174107
AspectJ in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174106
Hibernate In Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174105
Struts in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174005
Lucene in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173991
Wrox出版 Beginning Spring Framework 2
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175714
Java Extreme Programming Cookbook
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174729
Java Programming Cookbook
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173667
Beginning Java Objects
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174685
Building Java Enterprise App
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174684
Ant: The Definitive Guide
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174683
Better Faster Lighter Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174681
Hibernate Reference 3.1
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174674
Pragmatic Version Control using CVS
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174479
Pragmatic Project Automation
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174476
jQuery Reference Guide
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174411
Java 2 核心技术 卷1&卷2 CHM版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174123
Wrox Professional Java JDK 6 Edition
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163451
Java 2 宝典
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159154
侯捷java编程思想 PDF中文版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163902
Learning Java (第三版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146869
The Java Language Specification
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176082
Beginning Java Programming for Dummies 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163923
Java 2 核心编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146174
Java How to Program (第六版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146371
Java All-In-One案头参考傻瓜书 (第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152871
21天自学 Java 6 (2007年5月更新出版) PDF
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159315
Java咖啡馆
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151447
Thinking in Java(第四版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152053
深入学习JFC SWING - Java基础类组件集
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152049
J2EE全实例教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158057
Java信息系统设计与开发实例(第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151993
Java优化编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151994
Effective Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175258
Java信息系统设计与开发实例(第二版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151993
Tricks of the Java Programming
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159305
Wrox Professional Java Native Interfaces with SWT JFace
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159290
Java Swing 第二版 PDF文字版 O'Relliy出版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159158
O'Reilly - Java Database Programming with JDBC
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159292
JDBC与Java数据库程序设计
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151448
Learning JQurey (2007年7月最新出版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159652
J2EE with BEA WebLogic Server
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176088
Pragmatic Unit Testing in Java with JUnit
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176084
Wiley出版 J2EE 1.4 Bible
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176080
J2EE设计开发编程指南
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159288
Java Web Services简明教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159159
O'Reilly Java and XML (第二版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146231
O'Reilly Java and XML (第三版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=167584
Java技术XML高级编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=147800
Java Reflection in Action [MANNING]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=178017
Java Puzzler (Java 解惑)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=178016
Java Database Best Practices
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=178015
Struts: The Complete Reference
http://bbs.topsage.com/dispbbs.asp?boardID=123&ID=178025
Log4j The Complete Manual
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=178023
Programming for the Java Virtual Machine
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=178021
Expert One-on-One J2EE Design and Development
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160652
Expert One-on-One J2EE Development without EJB
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160653
JBoss - A Developer's Notebook
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146179
The Java Programming Language (第四版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=147095
Professional Java Development with the Spring Framework
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159303
Core Java Server Faces 第二版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145549
精通Enterprise JavaBeans
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146018
Enterprise JavaBeans EJB 第四版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159166
J2EE应用与BEA WebLogic Server (第二版PDF)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146227
O'Reilly Java Web Services
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146377
Ant权威指南
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=148383
Ajax和Java框架高级编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=148371
Java Web Services简明教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159159
Cross-Platform Web Services Using C# and Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160472
O'Reilly Ajax on Java
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160600
O'Reilly Java and XSLT
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149585
O'Reilly Java and XML Binding
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149583
O'Reilly Java and SOAP
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=149581
Design Patterns Java Companion
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163920
J2EE Java黑客大曝光 开发安全的Java应用程序
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151446
J2ME API 速查手册
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158248
精通J2ME无线编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152047
J2ME开发大全
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151987
Beginning J2ME 从入门到精通 第三版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=184149
Beginning JBoss Seam从入门到精通
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=183607
Beginning Hibernate 从入门到精通
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=183602
Java网页开发的艺术
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151991
Java编程高手
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151990
Java 5.0 Tiger程序高手秘笈
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151989
Java2网络协议技术内幕(附源码)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151988
Using Enterprise JavaBeans 2
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166051
Java技术实用教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158244
企业级Java安全性(构建安全的J2EE应用)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=152048
Java语言集成开发环境Eclipse中文教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158237
NetBeans IDE 5.5 企业版高级开发教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=159653
Using Enterprise JavaBeans 2
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166051
Borland JBuilder Developer's Guide
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166294
Eclipse [O'Reilly]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175257
Eclipse精要与高级开发技术
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=151986
Code Generation in Action
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174722
Java 6 3D游戏开发
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=160251
Java视频教程 孙鑫Java无难事 (全12CD)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=154630
上海交大 Java初级编程基础 共25讲下载 avi格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=185162
张孝祥Java课堂系列之 Tomcat入门(七讲 swf)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181503
张孝祥Java课堂系列之 Servlet开发入门 (九讲 swf)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181502
张孝祥Java课堂系列之 HTTP协议详解(四讲 swf)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181500
张孝祥Java课堂系列之 Web XML基础(四讲 swf)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181499
J2EE视频教程 中间件技术 浙江大学胡晓军 全24讲完整版下载
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181597
EJB技术及应用视频教程 东北大学 全26讲完整版 RMVB格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=181583
J2EE开发IDE Eclipse视频教程 全9CD 完整版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158075
Java视频教程 即学即会java
http://bbs.topsage.com/dispbbs_121_156264_6.html
***Part I***
It is assumed that "today" is excluded from "within the next 7 days".
It is assumed that birthday is stored as Date type with value of 0 for hours,
minutes and seconds.
It is assumed that a meeting can be hold right after previous one finished.
In other words, Meeting A, with finishing time of 10:00:00,
and Meeting B, with a starting time of 10:00:00,
are not considered as overlapped.
It is assumed that meeting with a duration of 0 seconds is valid and can cause
Overlapping.
It is assumed that this schedule system may have further update with more types of
events.
It is assumed that every type of events will have at least a label with String
type and a time with Date type.
It is assumed that different types of events should be handled separately.
***Part II***
See attached image.
***Part III***
ScheduleImpl.java
import java.text.SimpleDateFormat
import java.util.ArrayList
import java.util.Calendar
import java.util.Date
public class ScheduleImpl implements Schedule {
private ArrayList<Meeting> meetings
private ArrayList<Birthday> birthdays
public ScheduleImpl () {
meetings = new ArrayList<Meeting>()
birthdays = new ArrayList<Birthday>()
}
@Override
public void add(Event item) {
}
@Override
public void add(int type, Event item) {
}
@Override
public void get(String label) {
}
@Override
public void get(int type, int position) {
}
@Override
public void update(String label, Event item) {
}
@Override
public void update(int type, String label, Event item) {
}
@Override
public void remove(String label) {
}
@Override
public void remove(int type, String label) {
}
@Override
public void sort() {
}
@Override
public String birthdays() {
StringBuilder result = new StringBuilder()
result.append("List of birthdays in next 7 days:")
for (int i = 0 i < birthdays.size() i++) {
Date b = birthdays.get(i).getDOB() // Birthday
Calendar t = Calendar.getInstance() // Today
Calendar n = Calendar.getInstance()
n.add(Calendar.WEEK_OF_YEAR, 1) // Next 7 days
if (b.compareTo(t.getTime()) > 0 && b.compareTo(n.getTime()) < 0) {
result.append(birthdays.get(i).toString())
}
}
return result.toString()
}
@Override
public boolean overlapping() {
for (int i = 0 i < meetings.size() - 1 i++) {
for (int j = i + 1 j < meetings.size() j++) {
Date s1 = meetings.get(i).getStartTime()
Date s2 = meetings.get(j).getStartTime()
Date f1 = meetings.get(i).getFinishTime()
if (s1.compareTo(s1) <= 0 && f1.compareTo(s2) > 0) {
return true
}
}
}
return false
}
}
interface Schedule {
public static final String DATE_FORMAT = "EEE dd-MM-yyyy"
public static final String TIME_FORMAT = "HH:mm:ss"
public static final int MEETING = 0
public static final int BIRTHDAY = 1
void add(Event item)
void add(int type, Event item)
void get(String label)
void get(int type, int position)
void update(String label, Event item)
void update(int type, String label, Event item)
void remove(String label)
void remove(int type, String label)
void sort()
String birthdays()
boolean overlapping()
}
class Event {
protected static final SimpleDateFormat DATE_FORMATTER =
new SimpleDateFormat(Schedule.DATE_FORMAT)
protected static final SimpleDateFormat TIME_FORMATTER =
new SimpleDateFormat(Schedule.TIME_FORMAT)
private String label
private Date Date
protected String getLabel() {
return label
}
protected void setLabel(String label) {
this.label = label
}
protected Date getDate() {
return Date
}
protected void setDate(Date date) {
this.Date = date
}
}
class Birthday extends Event {
public Birthday (String name, Date dateOfBirth) {
setLabel(name)
Calendar dob = Calendar.getInstance()
dob.setTime(dateOfBirth)
dob.set(Calendar.HOUR, 0)
dob.set(Calendar.MINUTE, 0)
dob.set(Calendar.SECOND, 0)
setDate(dob.getTime())
}
public String getName() {
return getLabel()
}
public Date getDOB() {
return getDate()
}
@Override
public String toString() {
StringBuilder result = new StringBuilder()
result.append(getName())
for (int i = getName().length() / 8 i < 4 i++) {
result.append("\t")
}
result.append("- ")
result.append(DATE_FORMATTER.format(getDOB()))
return result.toString()
}
}
class Meeting extends Event {
private Date finishTime
private String location
public Meeting (String description, Date startTime, Date finishTime,
String location) {
setLabel(description)
setDate(startTime)
this.finishTime = finishTime
this.location = location
}
public String getDescription() {
return getLabel()
}
public void setDescription(String description) {
setLabel(description)
}
public Date getStartTime() {
return getDate()
}
public void setStartTime(Date startTime) {
setDate(startTime)
}
public Date getFinishTime() {
return finishTime
}
public void setFinishTime(Date finishTime) {
this.finishTime = finishTime
}
public String getLocation() {
return location
}
public void setLocation(String location) {
this.location = location
}
@Override
public String toString() {
StringBuilder result = new StringBuilder()
result.append(getDescription())
result.append(":\n")
result.append(DATE_FORMATTER.format(getStartTime()))
result.append(" from ")
result.append(TIME_FORMATTER.format(getStartTime()))
result.append(" to ")
result.append(TIME_FORMATTER.format(getFinishTime()))
result.append("\nAt: ")
result.append(getLocation())
return result.toString()
}
}
***Part IV***
Test case 1: separated meetings
– expected return : False
e.g. A. 09:00 – 10:00 B. 11:00 – 12:00
Test case 2: consequent meetings
– expected return : False
e.g. A. 09:00 – 10:00 B. 10:00 – 11:00
Test case 3: partially overlapped meetings
– expected return : True
e.g. A. 09:00 – 10:00 B. 10:30 – 11:30
Test case 4: partially overlapped meetings (same start time)
– expected return : True
e.g. A. 09:00 – 10:00 B. 09:00 – 09:30
Test case 5: entirely overlapped meetings
– expected return : True
e.g. A. 09:00 – 12:00 B. 10:00 – 11:00
Test case 6: entirely overlapped meetings (same start time)
– expected return : True
e.g. A. 09:00 – 12:00 B. 09:00 – 10:00
Test case 7: exactly overlapped meetings
– expected return : True
e.g. A. 09:00 – 10:00 B. 09:00 – 10:00
***Part V***
All running times listed below are for average case.
running time of methods:
birthdays() O(n)
overlapping() O(n^2)
Recommendations on improvement:
Using sorted data (sort birthdays by date of birth, sort meetings by start time)
which takes O(n log n) to O(n^2) to sort (only needed once).
After sorting and implementing modified CRUD functions,
although create/delete functions will take O(log n) instead of O(1) to finish,
read/update functions will take O(log n) instead of O(n) to finish.
Additionally, birthdays() will take O(log n) instead of O(n) and
overlapping() will take O(n) instead of O(n^2).
In conclusion, applying these recommended improvements would significantly boost on overall performance, especially while dealing with large size datasets.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)