专栏首页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的作品吧。

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

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

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

本文分享自微信公众号 - Java艺术(javaskill),作者:wujiuye

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dubbo分层架构之服务注册中心层的源码分析(下)

    由于我在实际项目中并未使用Redis作为服务注册中心,所以一直没有关注这个话题。那么,使用Redis作为服务注册中心有哪些缺点,希望本篇文章能给你答案。

    Java艺术
  • 开发也需了解的运维知识之Docker Compose

    Compose是Docker用于定义和运行多容器应用程序的工具。有了Kubernetes之后,我们不需要过多的学习Docker Compose,但也有必须了解下...

    Java艺术
  • 使用Docker部署用于学习的ElasticSearch集群

    关于Docker入门可以看下我写的这篇《开发也需了解的运维知识之Docker》,也介绍了如何在Linux服务器上安装Docker。

    Java艺术
  • 【开源公告】日调用量数万亿 | 分布式缓存系统DCache正式开源

    DCache是腾讯自研的分布式内存型NOSQL存储系统,主要用于高性能分布式缓存。该系统支持k-v,k-k-row,list,set,zset多种数据结构,具备...

    腾讯开源
  • 大牛教你如何搭建一个大数据分析平台?(附赠百集视频学习资料)

    一般的大数据平台从平台搭建到数据分析大概包括以下几个步骤: 1、Linux系统安装

    一起学习大数据
  • GO-数组与切片

    小小咸鱼YwY
  • ol4中实现只能查看用户权限所在区的地图

    我们经常会碰到这样的需求:北京的用户只能查看北京的地图,天津的只能看天津的地图……这里面涉及到了一个地图的访问权限问题,要实现这样的功能如果用服务+过滤的方式比...

    lzugis
  • python实现地址分布可视化

    当你知道某些详细地址信息,该如何利用。本文通过调用百度地图接口,实现用户可视化展示,便于更清楚地了解用户。 注册百度地图开放平台帐号 首先先到http://de...

    小莹莹
  • “两岸四地消费者信心指数”:消费者信心波动

    大数据文摘
  • 用Python进行数据可视化的10种方法

    编译|黄念 校对|丁一 引言 艺术之美根植于其所传达的信息。有时候,现实并非我们所看到或感知到的。达芬奇(Da Vinci)和毕加索(Picass...

    小莹莹

扫码关注云+社区

领取腾讯云代金券