前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学生时代,我写过的那些“项目”

学生时代,我写过的那些“项目”

作者头像
吴就业
发布2020-07-10 11:50:38
5960
发布2020-07-10 11:50:38
举报
文章被收录于专栏:Java艺术Java艺术

关注“Java艺术”一起来充电吧!

今天,我看了一遍我在github上开源的“项目”,本来是想删掉这些开源demo的,因为github总是发邮件提醒,xx项目报出漏洞,让我修复,就是更新依赖的jar包的版本,但是,我已经不想理这些demo了。

你们有看过我github的可能也发现了,我开源的demo只有一次提交,就再也没有维护过,因为只是一些demo,并没有任何价值,我肯定是不会花时间去维护这些demo的,说白了,就是学习过程中写下的一些例子。

但是我又不舍得删,而且还把一些之前改为私有的demo,也改回开源状态了。看过后我有一些感慨,其实每一个demo都标志着我在技术这条道路上的一点一滴成长,按时间顺序看,就是我的成长历史,即使再小的demo也是我的一个作品,不能删掉。

我有一张小时候的照片,仅且只有一张!所以,这张照片我无比的珍惜,小心珍藏,生怕腐化。同样的,以前写的demo和作业,我都很好的保存了下来,要么在github,要么在百度网盘。还有以前公司的项目代码,也保存在了网盘,对于公司的项目代码,我会选择烂在百度网盘里。我之前会保存公司项目源码到个人网盘,完全是出于收藏的心理,也有学习的价值。

没有什么比这些demo以及公众号所有的文章,更能总结我在技术上的每一年的成长。因此,我有一个想法,就是写一篇公众号文章,总结一下我在学生时代写过的那些“项目”。

个人学历简介

我大学就读过两所院校。专科就读于广西职业技术学院,专业软件技术;本科就读于桂林电子科技大学,专业网络工程。其实本科的时候没有什么“光辉”事迹,因为经过专科大三一年的实习工作后,我对学校里的那些荣誉已经不在乎了。本科的我,不再追求高分、不再追求成绩专业第一,只有一个目标,就是每科成绩能过75分就行,不多浪费一点时间。

专科

其实选专业我是根据爱好去选的,那时候我根本不懂什么叫编程,只是去网吧上网的时候产生的各种好奇。我第一次玩游戏玩的是“忍者神龟”,小学四年级,因为是在网吧玩,而且是同学带我去的,他就在旁边教我玩,说白了,就是我坐着看他玩,然后我就很好奇,为什么点一下鼠标,按下键盘,这些人物就能动。

后来我还接触到了QQ,我就很好奇,为什么我发一条消息,对方就能收到,而且只有他收到,别人收不到。然后又认识了百度,这个我就特别特别的好奇了,为什么百度什么都知道,我搜什么都能搜索到答案,那时的我,认为百度是无所不知的,所以有什么问题都习惯性的去百度一下。

特别是读初三的时候,我接触到了智能手机,那是我哥花一千多买的第一台智能手机,诺基亚5230,好像是这个型号,记不清了,塞班系统的,能玩网游(手游)。因此,我带着对这些好奇,高考时候选择了软件技术,三个志愿,只有学校不同,选的专业都相同。

大一学的是c语言,第一行代码写的也是printf hello word,感觉非常神奇,而且还是用笔在纸上写的。于是我心理就暗自高兴,我选对专业了。因为感兴趣,所以非常自觉主动的去学习,从高中的厌学状态恢复到儿时对知识渴望的那种态度。

很多同学都觉得学c语言指针特别的痛苦,总是听不懂,但不知道为什么,我就上课听一遍就懂了,我觉得这不是难的问题,而是他们厌学。就好比我学英语,小孩都说简单,可我就是说难,因为我没有心思去学,对的,是不想学,我厌倦背单词。

一个学期过去了,期末成绩c语言92分,总分也是排名班级第一的,即便英语只有65分。这个成绩对那时的我来说,是一种鼓励,这个成绩让我认为自己在这方面,不仅有爱好,也是有点天赋的。第一个学期结束后,听说有什么蓝桥杯比赛,但是学校要求通过考核的才能参加,否则只能自己交钱参加,我也不知道我为什么考得那么差,落选了。但是我不服,于是我骗家里,说学校让我参加比赛,需要交报名费。报名费挺贵的,但我不记得多少钱了。

参加比赛的都需要寒假在学校参加15天的培训,就这样我认识了我的恩师。培训内容就是做各种算法题,那时候我非常不招老师待见,在恩师眼里,我应该是最差的,因为他知道,我是学校考核落选的,是自己交钱参加的。但是经过几天的培训后,恩师所给的练习题目我都能做出来,因此,我好像又成了恩师的宠儿。但其实这一次的比赛,我并未能进入总决赛,要找个理由的话,就是我参考比赛的时候非常紧张,只得了省赛二等奖,还是专科的题目。

但经过那次培训后,我发现我的水平提高了,第二个学期学的是C#,是一门面向对象的编程语言,也是从面向过程到面向对象编程的一个过渡时期。同学期还学了数据结构与算法。就是因为有了前面参加比赛的培训,我学习数据结构与算法这门课感觉非常的轻松,而且我也没觉得从面向过程到面向对象编程思想一个转换有多难。那时候上课,已经开始成班上的“大佬”,同一个专业以及不同专业但一起上过课的,也都认识我了,有点小骄傲。数据结构与算法这门课,我记得我期末考试都不用考,老师说我不用考了,给我打了个98分,因为最后那几次课上“图”的内容时,我把最短路径的算法题写出来了,记得用的是迪杰斯特拉算法解决的。

同学期,我还自学了汇编语言,这门语言就不好学了,我还看了“小甲鱼”的视频教学,看过王爽的x86汇编,也看过其它作者的好几本汇编语言的书,后面还学了window系统的386汇编。是真的难,我花了一年时间去学,大一的第二学期和大二的第一学期。我记得王爽的那本汇编书,我从图书馆借了还还了借,非连续的反复看了三遍。很遗憾,我现在也把汇编语言丢了,但是汇编语言的编程思维没有丢,这就是学会之后忘的与没学过的区别。

大二第一个学期开始学习java,我非常喜欢恩师上课的一点,恩师讲课通熟易懂,不管是c#还是java,作业全是做算法题,这是非常好的抓基础教学方式。这学期,是我第二次参加蓝桥杯,这次没让恩师失望,我成功进入总决赛,花着学校的钱去北京玩了一趟,还完成了人生第一次坐飞机。总决赛的时候,我是直接放弃最后一题的,除了那题我感觉其它题目我都做对了,于是我提前45分钟走出考场。但结果只能了二等奖,我看了下排名,排在第二十名,也就是专科组的全国总决赛第二十名,虽然没拿到一等奖,但也没有第一次参加的那么失落。

大二第二个学期,我们学习安卓开发,于是我对安卓产生了兴趣。我还认识一个学弟,安卓开发非常6,他的作品看上去都很高大上,媲美应用市场上的APP,我也从他那里学了点UI方面的知识,比如如何自定义view,这个学校没有教,老师自己都不会。这学期,在恩师的指导下,我和另一个小伙伴(一起参加过蓝桥杯的)组队参加“软件杯”,完成了我人生第一个上架的作业“同步手绘板”,现在好像被腾讯应用宝下架了。不过非常遗憾,没能获奖。但是这个作品让我收获很多。我用上了几个设计模式,包括单例、策略、观察者模式。

同学期,期末作业还做了一个“校园二手交易平台"APP。不过那时候我还不知道“后端”的概念,因此,我并没有写后端,也没有用到数据库。那数据存哪里?用的是Bmob比目云提供的云数据库,那时候是免费的,但现在是收费的。那时候图片我是转为二进制存到数据库的,非常的傻,我演示的时候还耗费我不少流量。

大一第一个学期,我还参加了数学建模竞赛,那时候是数据老师邀请参加的。总共四个队,每个队三个人,我们队还是老师亲自带的队。但非常遗憾啊,丢人了,没能进入决赛。那个暑假,两个月,我们只得放假15天不到,其它时间都是在学校培训,别提多幸苦了。非常感动的是,学校不开饭,早上因为起得早,买不到早餐,但是到老师办公室后,发现粥都已经煮好了。

其实也有开心的时光,那时候很爱玩英雄联盟,因为电脑被老师骗去办公室后就不得拿回来,我们只能晚上跑去老师办公室开黑,一玩就是玩通宵啊,第二天一样还上课。我还有很疯狂的操作,就是老师布置了一道练习题,我那天晚上一直在想,最后好像想到解题方法了,从宿舍的围墙翻出去,去老师办公室通宵了一晚解决这道题。想想那时候我真大胆,学校就我们十几个人,晚上都睡觉了,我还敢一个人跑去老师办公室,自己一个人待了一晚,也不害怕。可是我现在回想起来,全身都起鸡皮疙瘩。

因为成绩优秀,大二第二个学期结束后,就开始实习了,是去恩师推荐去的一家小公司,这些我就不说了。其实我们还有大三一个学期的课要上,那时候出去实习要写申请,要领导签字才能提前出去实习。所以我大三是几乎不在学校的。实习一年我经历了两张公司,第一家恩师推荐去的,待了4个月,第二家自己找的,待了有10个月吧,毕业那年的8月份辞职的。因为我选择了专升本,我想升本后去大城市闯一闯。

本科

本科的经历非常简单,我也不再参加什么比赛,上课就是能睡且睡,考试前背下老师给的考试范围,除编程课程外,其它课程考试都是75分左右,英语就菜到我连学位证都拿不到了,我也并不后悔,反正都这样了,拿到拿不到对我来说,我觉得是没有多大影响的,我觉得这本学位证并不能阻碍到我给自己想的路。

在校期间结识一位好友,隔壁班的大佬,也是后面我找工作时候帮我很多的朋友。是它让我认识到,原来自己曾经的引以为傲的那些,在别人面前不值一提,于是就好好的谦虚做人吧。

要说在本科期间最大的收获,就是接了一个外包项目做,这个事情我在之前的文章说到过,我就不反复啰嗦了,说多了就不是事了。只是通过这个项目,让我下定决心从此走后端开发,开始学习后端技术,读框架源码。

后面的故事,关注我的朋友,已经清楚了。说了那么多,下面开始回顾下我曾经写过的“项目”。

专科作品

1、同步手绘板

这是我参加“中国软件杯”的一个作品。是一个支持pc端、移动端同步绘图的软件。这跟平常的画图软件没有多大区别,主要实现将android端的绘制结果通过socket技术同步到pc端,绘制结果可以在android端保存,也可以在pc端保存。同时,回退、绘图等所有操作都要支持双端操作,即可以在移动端绘制也可以在pc端绘制,而且绘制过程实时同步。但是要依赖局域网(wifi)环境下使用,还要你在电脑上安全“同步手绘板”的pc端。

难点在于移动端与pc端的socket通信,以及绘图的笔锋效果。什么是笔锋效果,就是根据手指按下的重力以及移动数度,绘制线条的粗细,手指离开的地方是最细的。整个效果要平滑,实现与用笔在纸上画图的那种效果,这个是非常难的,我跟小伙伴花了很多时间去找国外的资料。

2、校园闲置物品交易平台

一个期末作品,考虑到当时在校园卖手机都是通过百度贴吧,于是就想着实现一个二手交易平台,只支持线下面对面交易。这个作品用到的一些技术:自定义view实现侧滑菜单,实现瀑布流商品列表布局,使用Bmob云数据库存储数据,使用百度地图实现周边学校发现,实现摇一摇推荐周边学校物品功能。

3、M.Friend

一个仿微信的聊天软件。那时候用的还是BIO模式,Socket网络编程。实现加好友、聊天、群聊等功能。服务端是用c#写的windwos程序,模拟测试可以支持同时3000人在线聊天。界面做的有些丑,但基本的功能都是实现了的。这也是我专科的毕业设计。

这三个作品是比较具有代表性的,而且代码量都是正常项目级别的。特别是同步手绘板和聊天软件,要写android端,还要写pc端。不过共同的缺点都是界面做得太丑。

4、Simple PS

还想起一个作品,是一个windows应用程序,做的一个简单版本的ps。

这好像是在学习rgb的时候闲着没事干做的。好像学习windows应用程序开发的那个学期写了挺多windows小程序的,有扑克牌游戏、考试系统。毕业那年也写了挺多android小应用的,有驾考APP、股票行情APP。

实习那年也学了php后端开发,因为第二家公司我不仅要做移动端开发,部分后端接口也需要自己写。discuz!是真的难懂,不过think php这个框架很容易学,think php主要用来开发接口的,discuz!用来写论坛的,是一套通用的社区论坛软件系统。

图为我自己写的一个网站,打算用来做安卓自定义控制开源的。其实我还写了很多自定义控件,我很后悔,之前删掉了一些自定义控件的开源项目。不过现在还保存有一个。

效果是这样的。

图片看不出来真正的效果。颜色样式可以自定义,这个风格是我模仿word文档的表格样式的。第一列是固定列,其它列是可以左右滚动的,每一行都是一个ScorllView,整个控制就是一个改造过的ListView,最后通过观察者模式,手指滑动的ScorllView所在的列,通知其它所有行同步滚动。并支持上拉加载下拉刷新。

本科作品

1、QQ加群机器人

这是一个朋友让我帮它写的一个QQ群加群机器人,可以根据设置的关键词自动搜索QQ群,并且自动发送加群申请。避免一个群一个群的去手动添加,那时候我并不关心他是要来做什么的。

实现的功能就是,输入qq群名称关键词后,点击开始开群就可以自动的搜索qq群,一个一个发送申请入群。利用的是微信自动抢红包的原理,android提供一个“无障碍”功能。还有一个难点是列表的滚动,只能通过跨进程模拟触屏事件来实现自动滚动,需要获取系统的root权限。

图为分析qq页面获取控件id的过程

其实我以前对外挂很感兴趣,在第一家公司的时候,公司自己做了一个点餐系统,所有人在系统人点餐,最后由主管负责到饿了吗点餐。我用386汇编写了一个自动点餐的小外挂,每天到点餐时间就自动点餐。用到的就是钩子技术。拿到控件的id,模拟输入内容,拿到按钮id,模拟点击,就这些而已。

2、椰子商城

这是一个仿天猫、必要等电商app的作品,实现的功能有商品推荐、商品分类、商品详情、商品收藏等。后端做的比较简单,因为这是我用三天课余时间完成的作品。我没花心思去做,那时候刚好也是我在学校接外包做的时候。刚好,那时候我发了个朋友圈,有图片保存下来,来欣赏一下吧。

3、MoreLove

这是我本科的毕业设计作品,也是论文答辩时被老师说是毫无意义的一个作品。目前我已经开源到github了,有兴趣的可以去看一下。实现上传相册功能、发表时光动态功能、私密聊天功能,以及纪念日、打卡等功能。确实没什么意义,所以我也不打算维护了,也不打算上架应用市场。我一开始的想法还要实现ios端的,但是被老师泼了冷水之外,觉得没有意义了。来欣赏一组图片吧。

4、忆脉

当前并未开源,因为之前打算做成一个成品上传到应用市场,有很多的创新想法,这或许我会上架,也或许不会。这是基于android8.0的sdk版本开发的。所以目前市场上的所有android手机都可以使用这款app。因为经常接到各种骚扰电话,我才选择自己做这么一个定制化的app的。

该应用实现了通讯录功能、来点秀功能、来电拦截功能。其中最大的亮点就是来点拦截,不仅支持黑名单,还支持模拟匹配拦截,我的想法是支持通过脚本方式让用户实现自定义拦截逻辑。而通话记录不再像以往的系统app的显示方式,更像微信的聊天记录的显示方式。

以上四个,就是本科期间最具有代表性的几个作品了。

总结

你们可能发现了,我的作品几乎都是android作品。当然,我专科+本科几年时间,作品可不只有这些,这些应该算是10分之1的作品吧。

我每去一个地方旅游,都喜欢收藏车票、机票、景点票,这说不出来收藏这些东西有什么意思,可能对别人而言没有意思,但对我来说,其意义等同于我爸妈给我留下的唯一一张我小时候的照片。

我喜欢开源我的作品,包括与公司业务无关的一些工具包、组件、中间件,当然,我希望在公司写的作品能以公司的名义开源,我认为这些不是我个人的作品,严格来说是公司的作品。但是我不知道领导是什么想法,所以到目前为止,我还未开源。

我在百度网盘还保存好多个人的、前公司的作品,偶尔回头看看,对比一年前的作品、两年前的作品、甚至更久的作品,都有哪些进步。除了看到自己技术上的进步,也能看到时代的进步,科技的进步。我也建议大家,不要丢弃自己幸苦写的每一个作品。我们也要像画家对待自己的画一样,去对待自己写的程序。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java艺术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档