ARTS计划2020/46

2020年第46周。本周ARTS计划继续。

Algorithm-链表相关

算法的东西就是如此,不用就会忘记,2年前我做的一些算法题目,我甚至都不知道当初我是怎么通过的,只好再次从头开始思考。

本周做了几个相关得链表题目,链表的题目一般都没有什么复杂算法,就是按照直觉去做就好,最终做出来经过一些修饰,让代码看起来更加简洁明了,就是笔试或者算法面试中出现链表题目的要求。

反转单链表

1
2
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

就直接写就好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode temp_next;
while (cur != null) {
temp_next = cur.next;
cur.next = pre;
pre = cur;
cur = temp_next;
}

return pre;

}
}

1->2->3->4->5->NULL,循环一步步往下

NULL<-1 X 2->3->4->5->NULL

NULL<-1<-2 X 3->4->5->NULL

NULL<-1<-2<-3 X 4->5->NULL

。。。

NULL<-1<-2<-3<-4<-5 X NULL

X标识断裂了,就是使用这种最简单直接的方法就可完成链表反转。

Review

本周阅读英文文档 docker官网

Tips-mysql和java的周

jdk8 日期类处理

我在项目中遇到求日期差,求日期周月等操作,我使用了Calendar来处理方便了很多。

比如

1
2
3
4
5
6
7
8
9
10
11
12
13
// 当前日期 去除掉时分秒
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);

cal.set(Calendar.MONTH, 10); // 实际上这里设置的是11月,只有月是从0开始的,其余的和日常一样

calendar.setFirstDayOfWeek(Calendar.MONDAY); // 设置每周第一天是星期一
calendar.setWeekDate(2020, 46, Calendar.MONDAY); // 2020年46周星期一的日期就设置好了
cal.add(Calendar.MONTH, 1); //往后推一个月
cal.add(Calendar.MINUTE, 100); //往前推100分钟

同时这里也有坑,比如2021年的第一周 恰好跨年了这种,MySQL和java默认的是不一样,需要java改动一些来适配mysql,或者说mysql经过一些改造来适配java。

实验测试当MySQL使用 DATE_FORMAT(test_date,’%x%v’)时,恰好能够使默认的calendar,此时calendar.setFirstDayOfWeek(Calendar.MONDAY); 刚刚好两个适配的挺好,其余的集中我测试之后都有些许问题。

其中MySQL的参数如下,注意V和X的大小写适配问题,不要混用。同时一般情况下禁用java的YYYY,请使用yyyy。

参数 作用
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

Share

分享一个这两天和我的朋友Jr讨论的东西,主要关于从这次嫦娥五号升空看中国航天的宣传。我国的宣传实在跟不上我国的实力,往近了说,年轻人对中国的实力没热情没兴趣;往远了说,未来想当航天员的孩子们可能远不如想当网红的孩子多,20年后怎么发展。我也不说什么话,我就贴一些对比图吧。

我们的周边
我们的周边
对方的周边
对方的周边
我们的官网
我们的网站
对方的官网
敌方的网站

再看下NASA的推特,每天都会发布一个哈勃望远镜拍的照,能不火吗?
希望我们的航空航天的宣传也能跟上我们的实力。加油!
nasa_daily

不过我也看到中国目前在设计方面的提升,比如我们现在登月计划的logo设计也是非常好的,我特意去找了这个图

登月logo

非常棒的设计,无需解释的,只要一眼就能看出来的设计。一眼大开门啊。
希望中国航天越来越强,祖国越来越强