0%

2018年 ARTS 周周享 (28)

Algorithm

旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

示例 1:

1
2
3
4
5
6
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]

以下是第一次想出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func rotate(nums []int, k int) []int {
last := len(nums)
if k > last {
k %= last
}
for index := 0; index < k; index ++ {
temp := 0
for i := last ; i >= 0 ; i-- {
if i == last {
temp = nums[i-1]
continue
}
if i == 0 {
nums[0] = temp
continue
}
nums[i] = nums[i-1]
}
}
return nums
}

改进版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func rotate(nums []int, k int) []int {
n := len(nums)
if k > n {
k %= n
}
if k == 0 || k == n {
return nums
}

reverse(nums, 0, n-1)
reverse(nums, 0, k-1)
reverse(nums, k, n-1)
return nums
}

func reverse(nums []int, i, j int) {
for i < j {
nums[i], nums[j] = nums[j], nums[i]
j--
i++
}
}

Review

本周在 golang 的一个中文社区进行文档翻译。 传送门

希望不要误人子弟。本人很多也是多次斟酌,并且还参考了在线翻译, 以及维基百科。尽量做到好理解,不出错。(原谅本人英文水平确实有限)

Tip

本周在使用 laravel 中, 对官网的文档以及其他示例的网站源码学习了一下。

队列

说实话, 使用了这么久的 PHP , 并没有在真实的项目中使用过队列, 本周就把队列加入到服务中了。

laravel 的队列使用比较简单的。

  • 首先它需要一个配置一下连接
  • 比较重要的是, 需要区分 连接 和 队列 。
  • 而连接的另一端便是重要的驱动需求。
  • 配置好了, 接下来就是创建任务了。

任务调度

任务调度让我们不再需要在linux 下直接编写 Cron 项目。

但是你需要这么一条指令来为你的项目增加没分钟的检测。

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

关于此处的东西, 会另开一篇文章来详细说明。

Shares

本周想分享的是在最近面试一个 4 年 PHPer 的感悟。

首先,我一开始入行学的就是 PHP 这门语言了,但是在接下的战场,转战各个语言和框架,大多停留在表面,并未有深入的探究的研究。此次也是由于工作的原因,我又重新拿起了 PHP。

不得不承认的是,作为一个现在化框架的 Laravel,确实拥有的很多值得称赞的东西。他紧追的时间的浪潮,让 PHP7 进入更多开发者视线。并且在组建团队的时候,面试了一个具有4年经验的 PHPer, 发现他一直用的是 PHP 5.4 ,这我并不是说就完全摒弃 PHP5 ,由于历史包袱的原因,我们这儿依旧维护的 PHP 5.6 的一个项目。

但是他给你的感觉就是,PHP 5.4 用惯了,而且也挺好的。为啥要换啊,这你就很无语了,新版本的性能啊什么提高你没看到吗?就算你喜欢 PHP 5 , 那人家 PHP5.6 号称最好的 PHP 5 , 也没有见你用啊。你都没有了解过,就盲目的下结论。至少在我看来,这就是不愿走出舒适区。

当然,这儿说这些话,不是说只喜欢新东西,旧的就是垃圾。主要是他的感觉就是,没啥真才实学。出口要 20k 左右。说的不好听点儿,你就是砖搬得稍微熟练点儿,要说竞争力,那是一毛钱都嫌多。如果你能看到这篇分享,希望你能提高自己,混日子,还想要高薪,可能就只能在梦里。

啊~~ 在梦里。。。(联想邓丽君的《甜蜜蜜》)