ARTS 05 - 使用 Ecto.Migration 来做数据库迁移
ARTS是左耳朵耗子提出来的一个打卡任务。每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!我希望这个事可以给大家得到相应的算法、代码、技术和影响力的训练。
这是我的第五周打卡。这周使用新的语言
Elixir
开始在项目中慢慢实践了起来,期间发现由于语言跟整个生态的不熟悉,开发经常受阻。但同时,在实践中有目的性的去学习,整个学习的速度会快很多。
Algorithm
描述:
题解:
之前写过链表的节点删除,不过是传入 index 值。这道题与众不同的地方是传入的就是删除的节点,而且函数不能返回任何结果。所以一开始比较难以理解的就是参数中为什么没有 head。
理解题意后,发现这道题想表述的是在只给定被删除节点的情况下,删除该节点。而且题目中强调了给定的节点为非末尾节点并且一定是链表中的一个有效节点。
那么有意思的地方就来了。我们只需要将当前被删除的节点变成它的下一个节点,就间接地实现了删除该节点的功能。
ES6
时间复杂度:O(1)
空间复杂度:O(1)
Review
Preparing for a Tech Talk, Part 1: Motivation
这篇文章是一个关于准备技术演讲系列教程的开篇,主要讲的是技术演讲的动机。
关于动机,作者分为外部动机和内部动机来分别说明。外部动机大家都比较清楚,可以获取业内更多认可以便找到更好的工作或加薪等等。内部动机的话对于每个人来说也许都不尽相同。对于作者的话,他总结了两点:
喜欢分享自己的想法
喜欢以更简单的方式重新解释事物
选择一个与自己动机相符的演讲会对我们有很多帮助:
选择一个主题比较容易
在讲台上不那么恐怖
更令人信服
Tip
使用 Ecto.Migration
来做数据库迁移
数据库迁移语句在很多后端的框架中基本都有实现。它的好处是实现了数据库的版本控制,可以让团队更容易修改和共享数据库结构。这周主要体验了一下Ecto.Migration在实际生产中的用法。
使用 mix ecto.gen.migration xxx
可以生成一个数据库迁移文件,它是以当前创建时间作为前缀来命名的,比如:priv/repo/migrations/20190417140000_add_weather_table.exs
在数据库迁移文件中,主要用到的两个函数是 up
和 down
。up
语句负责向前迁移数据库,down
负责回滚操作。所以 down
里面的内容必须保持跟 up
是完全相反的。比如:
up
语句里创建了一个 weather
表,那么 down
里面需要做的就是删除该表。通常对于建表语句框架知道回滚操作就是 drop table
,所以对于建表语句的话我们只需要实现一个 change
方法即可
当数据库迁移语句写好后,我们执行下面的操作就可以执行迁移和回滚操作了
Share
这是在语雀里发掘的一个很好的专栏,里面分享了国内关于互联网创业的点点滴滴,很值得每个互联网人去阅读。
版权声明: 本文为 InfoQ 作者【jerry.mei】的原创文章。
原文链接:【http://xie.infoq.cn/article/bad43606231cdbbc77901e8cb】。文章转载请联系作者。
评论