2020-10-23

计算机理论界的泰斗——埃德斯佳·狄克斯特拉   1972年图灵奖授予荷兰的计算机科学家埃德斯佳·狄克斯特拉(Edsgar Wybe Dijkstra)。狄克斯特拉因最早指出“goto是有害的”以及首创结构化程序设计而闻名。在算法和算法理论、编译器、操作系统诸多方面,狄克斯特拉做出了杰出贡献。1983年,ACM为纪念Communications of ACM创刊25周年,评选出1958-1982年的四分之一世纪中在该杂志上发表的25篇有里程碑意义的论文,每年一篇,狄克斯特拉一人就有两篇入选,是仅有的两位学者之一。

        狄克斯特拉1930年出生,1948年进莱顿大学学习数学与物理。1951年,他自费赴英参加了剑桥大学的一个程序设计培训班,这使他成为世界上第一批程序员之一。1956年,他成功地设计并实现在有障碍物的两个地点之间找出一条最短路径的高效算法,这个算法被命名为“狄克斯特拉算法”,至今仍被广泛应用。1962年,狄克斯特拉在艾恩德霍芬技术大学参加了X8计算机的开发,设计与实现了具有多道程序运行能力的操作系统,他提出的一系列方法和技术奠定了计算机现代操作系统的基础,为了防止两个进程并发时产生错误,狄克斯特拉设计了一种同步机制叫“PV操作”,P操作和V操作是执行时不被打断的两个操作系统原语。在荷兰文中,“通过”为passeren,“释放”为vrijgeven,PV操作因此得名。这是在计算机术语中不是用英语表达的极少数的例子之一。

        1968年3月,Communications of ACM登出了狄克斯特拉的一封信,在信中他根据自己编程的实际经验和大量观察,得出如下结论:一个程序的易读性和易理解性同其中所包含的无条件转移控制的个数成反比关系,转向语句的个数愈多,程序愈难读、难懂。因此他认为“goto是有害的",从而启发了结构化程序设计的思想。1972年,他与英国计算机科学家、1980年图灵奖获得者霍尔(C.A.R.Hoare)提出了另一个著名的论断:“程序测试只能用来证明有错,绝不能证明无错!”

可以通过Java中的日期时间类 `LocalDate` 和 `LocalDateTime` 来实现该功能。 首先,我们需要将时间段转换为 `LocalDateTime` 对象,然后将时间部分设置为 00:00:00 或 23:59:59,最后遍历每一天,获取每一天的开始时间和结束时间。 以下是代码示例: ```java import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; public class TimeUtils { public static void main(String[] args) { String startStr = "2020-11-20 09:09:09"; String endStr = "2021-10-09 10:10:10"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime start = LocalDateTime.parse(startStr, formatter); LocalDateTime end = LocalDateTime.parse(endStr, formatter); // 将时间部分设置为 00:00:00 或 23:59:59 LocalDateTime startOfDay = start.with(LocalTime.MIN); LocalDateTime endOfDay = end.with(LocalTime.MAX); // 遍历每一天,获取每一天的开始时间和结束时间 LocalDate startDate = startOfDay.toLocalDate(); LocalDate endDate = endOfDay.toLocalDate(); while (!startDate.isAfter(endDate)) { LocalDateTime startOfDayOfDate = startDate.atStartOfDay(); LocalDateTime endOfDayOfDate = startDate.atTime(LocalTime.MAX); System.out.println("Start time of " + startDate + ": " + startOfDayOfDate); System.out.println("End time of " + startDate + ": " + endOfDayOfDate); startDate = startDate.plusDays(1); } } } ``` 输出结果如下: ``` Start time of 2020-11-20: 2020-11-20T00:00 End time of 2020-11-20: 2020-11-20T23:59:59.999999999 Start time of 2020-11-21: 2020-11-21T00:00 End time of 2020-11-21: 2020-11-21T23:59:59.999999999 ... Start time of 2021-10-09: 2021-10-09T00:00 End time of 2021-10-09: 2021-10-09T23:59:59.999999999 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值