ARTS第一周

ARTS是什么?

Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Techni:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章。

Algorithm

题目:爬楼梯

解题思路

首先我们要明确目标,是求爬到某一层楼梯的方法种数,由题意可知爬楼梯的方式有两种:1步走或者2步走,因此我们爬到除1楼以外的任何一层的最后一步都可以有两种方式,也就是从下面一层爬一步,或是从下面两层走两步到达,比如当n=5的时候,要么从4楼爬1步到5楼,要么从3楼爬2步到5楼,再没有第三条路能到5楼,所以我们求到n楼有几种方法的时候只需要把到n-1楼和到n-2楼的方法数加起来即可。

代码

有了上面的思路之后,代码还是比较简单的,只需要注意其中一些细节,比如真正在解题的时候会有效率的限制,递归解法会因为效率低下而被拒绝,如下图
递归版
我们把递推改为循环就能通过,另外,注意一下数组边界问题,在提交代码前多测几个用例也是一个不错的习惯,下图是通过的循环解法
循环版

Review

通过耗子叔的推荐认识了Medium,分享最近看的一篇文章,名字叫《Why Do All Websites Look the Same?》,文章对当前网站都长得类似的现象进行了分析,作者认为出现这种现象的原因有几个,一是现在大多数网站、博客运用的技术框架都是基于模板的,而模板具有内容不可知的特性,不会对具体的内容进行特别的展示;另一个原因是很多网站设计者都是经济型的务实者,不愿意花更多的精力、资源去设计一个特别的网站。然后作者提出了一个观点:如果想设计未来,必须重新发现过去。他在文中回顾了过去的设计方式以及当时的设计背景。最后作者请他的学生对一些当下的网站进行了重新设计,文中还附有新网站的地址可以看到重新设计后充满个性的网站,有兴趣的同学可以去找到这篇文章阅读一下。

Tip/Techni

在本周的项目开发中,遇到了一个问题,背景是我在一个项目里封了一个生成excel文件的dubbo接口,返回值类型是File,供另外一个项目调用(生成excel内容的实现已经存在,我封装了一个dubbo接口),调用成功后把File导出为excel文件,本机以及测试环境(两个项目都部署在同一台测试机上)没问题,可以正常导出excel文件,但是上了预发环境(两个项目在不同的预发机器上)就不行了。

看到这里相信对Java IO只是掌握得比较好的同学已经知道问题出在哪了。是的,问题就是File对象并不包含真正的文件数据,它相当于只是一个文件的引用,没有实际的文件内容,因此返回给接口调用方的只有一个文件路径,并没有文件数据,所以在同一台机器上的时候能找到生成的文件,到了不同的机器上就找不到了,后来把File类型改成了byte[]类型,也就是把文件内容转成了字节数据装在了byte[]数组里,这样调用方就能真正拿到这个文件了。其实这种返回类型的dubbo接口不太推荐,因为文件有可能比较大不适合用默认的dubbo协议来传输,我这里这么做是有特殊原因的,常规做法是直接返回生成excel内容的数据类,在此也是和大家共勉,对于Java基础知识一定要理解得越深刻越好,避免在工作中挖坑。

Share

今天和大家分享一个github项目JavaGuide,这个项目里面归类和Java相关的各方面知识,方便自学查漏补缺。

posted @ 2018-11-18 21:42  陈海翔  阅读(164)  评论(0编辑  收藏  举报