做c++开发很多年了,从早年windows vc6.0 做客户端程序开发,这些年后台流媒体服务器后台开发。随着时代变迁,移动互联逐渐兴起,直到现在,移动互联的风头早已盖过传统互联网应用,因而传统后台开发似乎日渐式微。如今要找工作的话,android,IOS等开发的职位不但数量远远多于c++,而且报酬也要比c++高很多,如果在移动开发上做过三年以上,年薪25W以上的机会多的是,但是对于c++ 要达到这个数,工作经验一般多得六七年,同时,技术要求比做移动互联网要高很多。因此,一直寻思着,要转行到移动开发,但由于对c++感情较深,转行的实施一直不温不火,直到有一次看到滴滴招聘,招三年经验的android开发,年薪可开到50W, 这一刺激让我彻底下定决心转行,毕竟做人没必要和钱过不去嘛。
为了搞清楚,好公司在招android开发时,一般需要怎样的条件,我在拉钩上转了一圈,将年薪20W以上的android开发要求总结了一下:
1. 有android开发3年以上的经验。
2. 精通java ,c++, 有扎实的算法和数据结构功底。
3. 精通软件架构,良好的代码习惯。
4. 精通android UI 开发, 多线程,以及网络协议原理。
经过一段时间的研究和实践,觉得自己似乎已掌握了android开发的技术,但问题在于,我多年来是做c++的,项目经验也是c++为主,怎样让市场认可我的android开发能力呢?想来想去,得到的办法是我自个做一个满足上述条件的app, 我想,没有比拿出作品来证明自己能力的更好办法了。
这个App可以说麻雀虽小,五脏具全,基本上能较好的显示出以上几点要求。其实它就是beyond comparer的安卓版,当用户选定两篇文本后,app会将文本内容的异同比较出来。
首先看看app的启动界面:
界面的结构简单,上头是两个textview控件,下方是一个按钮工具栏,在textview控件长按住,会调用出文件选择界面,让用户选择要比对的文件,由于android本身没有自带的文件选择框,所以这个界面也是自己开发的(借鉴了网上一位朋友的设计,但在代码设计上做了一些改进):
当用户分别通过长按上下textview, 调出文本选择框,并选择相应文本后,文本的内容会显示在textview中,同时,程序会调用文本比对算法找出两个文本的最大共同子串,文本比对算法用的是Hirschberg博士改进的lcs算法,算法将原lcs算法的存储复杂度将O(n^2)改进成O(n), 在后续文章,我们会研究该算法。当比对后,文本中差异的部分会用红色高亮,相同的部分以黑色字体显示:
在底部工具栏按钮,点击向下,或向上箭头会依次将文本相对应的不同的地方,以背景高亮显示:
程序功能虽然简单,但我感觉比较实用,同时该app基本上满足了上述的几点要求,既有界面的设计,又有算法的设计实现,同时在文本选择框的设计中使用到了一些设计模式的技术,这点能满足“ 精通软件架构,良好的代码习惯“这一要求吧,最重要的,当人家问我拿出作品时展示时,我有东西拿的出来。后续我会把代码上传到csdn,希望籍此能和各位朋友探讨移动开发的技术,如果能得到大牛们的指点,那小的真是感激不尽了!
标签:App,c++,算法,开发,android,文本,app From: https://blog.51cto.com/u_16160261/6476246