ARTS 01 - 技术人的理想主义
ARTS是左耳朵耗子提出来的一个打卡任务。每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!我希望这个事可以给大家得到相应的算法、代码、技术和影响力的训练。
这是我的第一周打卡,标题为“技术人的理想主义”,取自我要分享的文章《爱因互动 CTO 洪强宁:当别人用月薪去衡量程序员时,我们自己应该谈点理想》
Algorithm
描述:
给定一个整数数组
nums
和一个目标值target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
题解:
思路一:暴力循环法
暴力循环法的思路很简单,也比较符合大家的惯性思维。双层数组遍历,外层循环遍历nums
数组,内层循环判断数组余下的值是否存在相加等于target
的元素
时间复杂度:O(n^2)
思路二:两遍散列表
对于这种问题,在算法中首先想到的是用散列表来实现,把O(n)的问题转换成O(1)的问题来实现。在这里,我们只是使用散列表的思想,在Javascript里面没有散列表这种数据类型,我们可以使用Map
来实现。
时间复杂度:O(n)
思路三:一遍散列表
在思路二的基础上做的优化。我们没必要一开始就对整个nums
数组做一遍散列函数转换。在迭代nums
数组的时候,我们把元素插入到Map
的同时,会首先检查Map
中是否已存在满足条件的目标元素。如果存在,直接返回结果;不存在,就插入到Map
里面
时间复杂度:O(n)
Review
How to structure your Vue project for the long term
最近一直在找关于怎么用Vue
来构建一个大型的企业级应用的资料。相关文章和视频翻阅了不少,对于这种问题,行业的实践还是比较少的。这篇文章中作者给出了自己的一些思路。
首先,对于一个需要长期开发的应用来说,它的体量是越来越大的。我们尤其要关注的是Scalability
(可扩展性)和 Maintainability
(可维护性)。其次,每个项目的业务场景和团队工作的方式都不尽相同,所以不存在一个最佳的项目架构。软件开发是没有银弹的。但是我们还是可以找出解决复杂项目的一些通用思想。比如作者提出的几点:
Source code navigation(源代码可导航)
Testability(易于测试)
Monitoring + Observability(监控和观察)
Debugging(调试)
Collaboration(协作)
具体的实现措施,这篇文章大篇幅讲的都是使用基于模块而非文件的项目结构。vue-cli
提供的项目结构对于小型的项目来说,可以达到开箱即用的效果。但是对于中大型的项目,这种组织方式并不太好。作者推荐的是根据业务模块划分成不同的module
,每个module
里包含对应的components
、services
、router
、store
等等。
然后就是要做到模块的隔离,这个可以参考SOLID
原则来设计。在大型项目中,不同的组件之间经常需要进行交互,隔离模块的内部实现细节是非常重要的。
最后有一点大家比较容易忽视,就是技术文档的撰写。对于大型项目来说,一个好的README.md
文件可以带来很多的方便。
Tip
最近从Ubuntu
转到了Mac
平台来做开发,自己折腾摸索了不少关于Mac
上实用的技巧。
1. .zshrc
配置
有些常用的命令可以配置在.zshrc
终端环境中,比如
可以实现ll
命令
让代理直接在命令行生效
2. SCROLL REVERSER实现鼠标的滚轮表现形式跟触摸板不同
用Mac
外接鼠标后发现滚轮跟在Windows
上的表现形式是相反的,很不习惯,发现这款软件可以自定义鼠标和触摸板的方向设置,很不错。
3. 外接双显示器
公司用的是双显示器,买了一个扩展坞发现同时接上HDMI
和VGA
会被识别成一个显示器。后来发现要插两个不同的雷电接口才能被识别成两台显示器。解决方案是买两个扩展坞或再专门买一个Type-C
转HDMI/VGA
的高清转换器。
Share
分享文章:爱因互动 CTO 洪强宁:当别人用月薪去衡量程序员时,我们自己应该谈点理想
每当在这条路上坚持不下去的时候,重新再看一下洪强宁的这篇文章,又坚定了信心,继续跟自己死磕。
InfoQ的二叉树上有一个关于他的采访视频,也很值得一看:
洪强宁:编程三十年,因 Python 结识豆瓣,想用技术改变世界
版权声明: 本文为 InfoQ 作者【jerry.mei】的原创文章。
原文链接:【http://xie.infoq.cn/article/cc5faca3c47aa8d063ba31c44】。文章转载请联系作者。
评论 (3 条评论)