七月、八月假期计划完成情况
1. 前言
小时候每当假期,家长都会逼着自己做一个计划,精确到每一天,每个时间段要做什么事。当时自己是很反感的,也不喜欢给自己做计划。因为当时每日任务就只是做作业,充其量只是计划一下,几点到几点写语文,几点到几点做数学罢了。
而现在,人生中不再只是充斥着作业了。太多的事围绕着自己,需要做的事有很多。小时候单一的只需要做作业的时代也一去不复返了。
假期前脑子也很乱,经常一下蹦出一个想法,一下又冒出另一个念头。于是,每当有念头蹦出之时,我便将其记录下来,好在假期里去尝试实现。
暑假也经过这么长时间了,假期前踌躇满志的列出的那 19 20 21 22 23 24 项计划经过这么长的时间有了一定的执行度。我自己来做一个总结。
2. 已完成的计划
1. SpringMVC 的学习
关于 SpringMVC,这个大框架在暑假前制作的“Young 理财”项目中就已有和 Hibernate、Spring 一同使用。当时是直接搬过来用,什么都不知道,什么也不清楚,就连 Spring 也没有接触过。虽说自己在面对老师的时候瞎吹了许多诸如 AOP,IOC,DI 等名词,但自己对这些东西的了解还不够全面。
假期在 Spring 学习网站上跟着教程大致的学了一下 SpringMVC。因为在校内期间就学会了 Spring,并且也因为之前使用过 SpringMVC,所以上手非常快,看着教程一步一步的基本就学会了这个优雅的框架。
2. Redis 和缓存
缓存在学 Hibernate 的时候就有过接触。所谓一级缓存,二级缓存和查询缓存。
现在我的理解就是把一个复杂的、耗时长或者耗内存的、需要经过耗费资源操作的数据以 HashTable 的形式将 key 和其对应的 value 存在内存中。下一次取数据的时候可以很快的在内存中取得。
为什么使用 Redis 作为缓存呢?
- Redis 的数据结构丰富
- Redis 的性能较强
所以在经过 Redis 的学习之后(也谈不上学习,就是知道了有哪些数据结构,知道了大致上怎么用以便于以后真正要用的时候可以快速想起来去哪里查),我学习并尝试使用了 Spring 整合 Redis 作为缓存
而在学完了 Redis 之后,我也利用 Redis 的快速读取的性能,将其作为项目佳皓是个好图床的用户拦截,以拦截在 1 分钟内多次上传图片的用户请求。
但是可惜的是,具体应用 Redis 作为缓存的场景在我所经历的项目中还没有出现。
3. Java8 函数式编程
关于 Java 函数式编程,我是在学习 SpringMVC 时偶然间发现的。
因为经历过 Swift 开发,所以对其的“闭包”有一定的了解。
在发现 Java 也可以拥有 Swift 的“闭包”那样的语法,我马上对其产生了浓厚的兴趣,并上网查阅了 n 多资料。购买了《Java8 函数式编程》一书。大致掌握了 stream(),collect(),forEach(),map(),reduce(),filter()等函数式接口的使用。并在项目中使用其进行重构,修改了不少“裹脚布”式代码。
4. Spring Data JPA
在项目中,对数据库内数据的动态查找一直是我心头的一块乌云挥之不去。我见许多项目使用的 RESTFul 接口常提供多参数、可自定义排列的查询机制,但一直不知道是如何实现的。直到有一天我发现了 Spring Data JPA。
当时的我发现,其可以通过定义 DAO 层接口,方法名遵循一定规范,就可以忽略 DAO 实现层,从而简化程序员对数据持久层的开发之后,大为吃惊,对其马上产生了浓厚的兴趣。于是通过阅读官方文档,我了解到了这个框架的实现机制、应用场景。也在阅读官方文档的时候发现了文档中存在的许多深坑…
最让我惊喜的是,其果然提供了 Web Support,并且可以通过其可以实现动态查询,这让我非常开心!
5. MyBatis 和 mongoDB
mongoDB 是闻其名,但未见其实的一款 NoSQL 的数据库。经常听人谈起它的好用、方便,然后再将他与 MySql 放在一起对比,并且把 MySql 批判一番。很幸运的是这个暑假我终于和 mongoDB 有了初次的接触。我发现这的确是一个很优雅的数据库,具体优雅在哪里我也说不清…就是觉得这款数据库方便,一下就让我上手(很多东西其实都没有记住)。其脚本对 javascript 的支持非常好,掌握起来很快。
我对于 MyBatis 也是久仰大名。见过很多用人单位在招聘的时候都会说"掌握 Struts2 Spring Hibernate/Mabayis",对于这个框架我也很有兴趣。
令我吃惊的是,Mybatis 也可以实现上文提到的动态查询、动态排序之类的功能,其实通过动态生成 SQL 语句实现的。这相当于给我以后对于框架的选择拓宽了另一条路。这个框架支持让程序员自己写 SQL 语句,可以做到更大的自由、更好的优化。而且只要遵循一定的规范,也可以忽略 DAO 实现层,真是太棒了!
6. 简单的 CSS3 动画、交互
大概就是看了很多网上的资料和教程,学了一些 CSS3 的动画与交互,keyframe,transition,transform 之类…
后来为了看看自己的学习情况,我就自己实现了一个之前准备做的项目的官方网站。
7. Linux 基础的学习
对于 Linux 的基础,命令,已经其他一系列的学习。
原先看见 Linux 的黑框框还是有点虚的,现在…完全不虚!
8. Apache
假期里学习了搭建 apache 服务器以及 apache 与 tomcat 整合、apache+https 配置。现在的博客服务器和佳皓是个好图床就是搭建在 apache 与 tomcat 整合 +https 的服务器上的。经测试性能效果都很不错
9. 一只爬虫
这大概是最没节操的一个东西了。
为了满足同学的生产和生活需要,我整理了一系列的 BT 搜索引擎,找出了他们的搜索规律以及对结果的处理规律,经过一系列整合,做出了这个所谓的"资源搜索工具"
这个工具…因为爬取的原因,可以搜索正常资源,也可以搜索"不正常"资源…
目前项目共享在 coding 平台
光看名字就知道很没节操了啊!
10. 图床上传工具
这是对佳皓是个好图床的扩展工具!
使用图床上传工具,可以很方便的批量上传图片,一键复制 URL!
假期前就想过假期里要复习一下 Swift,不能荒废,因为 Swift 是一门我比较喜欢的语言,轻便快捷,虽然坑也有很多而且因为 OC 的原因有一些谜之语法…但是我很看好这门语言!
对于 python 不知道怎么的我有一种莫名的抵触情绪,对其也是不断的学了忘忘了学。但是 Swift 就不会。可能是因为我用过 Swift 开发过项目吧。
目前项目共享在 coding 平台
11. 重构 MOC
MOC 是当时在 3 天之内赶出来的一个项目。他曾经的业务逻辑代码可以用一塌糊涂来形容(虽然比一些参赛项目强)。对于公司里时常变动的需求和不断扩大的 Excel 文件我经常处于一种无法应对的状态。所以在假期里我忍无可忍,学完了一些东西之后马上着手重构 MOC,并且把新学的知识全部应用在其中。
首先是 Spring Data JPA。因为 MOC 的数据库没有复杂的表与表之间的关系,所以 Spring Data JPA 完全满足我的需求。其支持的动态查询正是我求之不得的功能。原先系统也有很大一部分原因是因为我对于 DAO 的实现层掌握的不够好。现在好,我直接抛弃了 DAO 的实现层!Spring Data JPA 在这个项目里帮了我很多。
使用了 Spring Data JPA 之后,对于媒体文件的 DAO 层大概可以精简到这种程度。
第二是 Spring。之前对于 Spring 的 AOP 理解的不够透彻,用它做了很多蠢事。在新项目里我大概知道了 AOP 是在什么条件下用最合适,也发现了很多坑。比如:关于 AOP 切入同类中调用方法无效的问题
在重写前端的时候,我把原来滥用的 jQuery 动画全部改成了 css3 的 keyframe。
在搭建服务器方面,我使用了新学会的 apache+tomcat+https。
在服务器维护方面,我实现了一个 python 脚本来定时监督 tomcat 和 apache 的运行情况。如果发生内存溢出导致的 tomcat 或 apache 异常退出,python 程序会记录日志并马上通知我。
总之,为了我以后能维护的更方便,能更快的定位错误,我可谓是用心良苦…
3. 想说的
很多人说我不像个大学生,暑假了也不到外面去玩玩走走。
确实,这个假期在朋友圈里看到了很多人都出去玩,出省,出国…
的确我好像是浪费了一个为数不多的能“玩”的时间了…
但是撸代码,学习,真的让我很开心,每天过的非常舒适。
而且通过学习,看别人的博客,查各种资料,文档,的确是大大开阔了我的眼界。
走出去玩,不也是为了让日子过的更开心,让自己的眼界更广吗?
所以我无怨无悔这个暑假。
而且,
这会是一个为我的将来奠定基础的暑假,让我以后哪里都能去,想怎么去就这么去的一个暑假。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于