发表于: 2017-12-02 22:23:13

1 1108


今天完成的事情:

今天对任务一进行总结:

任务一的知识点在我总结来就以下几点:

 

Java基础语法以及常用类没有什么好讲的,按需学习.

这里放上个人觉得不错的学习资料:

http://how2j.cn/

这个网站涵盖了比较全面的基础语法知识以及常用类的教学,很不错.

 

MySQL:

数据库应该属于任务一体系,甚至整个学习周期里的重点,毕竟后端就是在和数据库就交互操作.

任务一MySQL的学习知识包含了MySQL安装,MySQL语法(DML,DDL,DQL,这三个是需要重点掌握的.),以及后面部署MySQL到远程服务器.

MySQL的安装部署:

http://www.jb51.net/article/82493.htm

MySQL语法大全:

http://www.runoob.com/mysql/mysql-data-types.html

http://www.cnblogs.com/qinqinmeiren/archive/2011/05/21/2151693.html

http://www.cnblogs.com/huangxm/p/5736807.html

MySQL在阿里云服务器上的设置:

http://blog.csdn.net/lorin_ag/article/details/78601191

 

Maven:

maven顾名思义,一款非常专业的管理项目结构以及jar包的专业第三方管理软件.maven在我们的项目中是常用的,

他比ant的手动拷jar包的方式便捷的不是一点两点,只需要轻松的填上jar的仓库地址就可以添加jar包,简单方便.

Maven的学习:

https://www.cnblogs.com/jingmoxukong/p/5591368.html

 

junit:

junit4是测试必备的jar包,他为我们提供直观而强大的测试功能.常用的是@Test标签对类赋予直接运行的功能.

@before标签可以让方法在每次测试之前都执行,@after可以在测试之后执行.

junit学习:

http://www.yiibai.com/junit/

 

JDBC:

任务一正式从各种工具回到java开发的是JDBC这里,JDBCJava DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

JDBC算是从Java层面操作数据库入门的基石,提供了简单而直观的方法操作数据库,加载驱动,获取连接,执行SQL,释放资源,全部都由java程序来完成,虽然程序会比较冗杂,但是思路以及理解上是最直接最简单的.

 

JDBC的学习:

 百教程:http://www.yiibai.com/jdbc/

JDBC详解答:https://www.cnblogs.com/erbing/p/5805727.html

 

代码格式规范,代码格式规范,代码格式规范:

为什么代码格式我要强调3?没错,重要的事情要讲3,在我看来,任务一巴拉巴拉一大推,知识点N,其实最重要的只是这个东西,代码的格式以及规范.  一个合格的程序员应该能写出优雅简单易读的代码.而不是自己看着都头晕的机器码.

代码规范涵盖了哪些东西?


  * 尽量使用完整的英文描述符

  * 采用适用于相关领域的术语

  * 采用大小写混合使名字可读

  * 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一

  * 避免使用长的名字(小于 15 个字母是个好主意)

  * 避免使用类似的名字,或者仅仅是大小写不同的名字

  * 避免使用下划线(除静态常量等)

      ..........

 

还有很多很多,这只是一点点,阿里云最近发布了一套java规范很不错,可以参考.

https://yq.aliyun.com/ziliao/133069

规范下载地址:

https://bbs.aliyun.com/simple/t306592.html

其实说白了,代码这个东西就好比是写文章,写小说一样,一定要写出他应该拥有的生命,代码才能有更长的存活期,

还是那句话,好的程序猿应该具有高水准的代码规范.我会严格要求自己.

 

连接池:

其实我一开始在看JDBC这里的时候,有看过连接池的相关思想,但是因为连接池这块儿的东西有点杂,所有就滤过了,

为什么我又把他列为任务一的重要知识点?就一句话:

连接池可以为并发连接提供更高的性能

连接池基础理解:https://www.cnblogs.com/xdp-gacl/p/4002804.html

连接池的原理:http://blog.csdn.net/shuaihj/article/details/14223015

 

另外一般我们开发流程中是不需要我们去自己写连接池的,一般都是使用第三方的连接池,毕竟别人是大佬,总结出来的东西总是好用的.

这里推荐使用druid或者DBCP的连接池,一个是阿里的一个是spring秃子大佬推荐的,都是好东西,择适而用.

我个人使用的是druid:https://github.com/alibaba/druid


Mybatis:

Mybatis是为了简化我们在JDBC中的一切冗杂的代码操作,让所有的操作数据库的东西边的简单.

Mybatis只需要1个全局配置文件,1个SQL映射文件,1个mapper接口就可以完成JDBC的所有操作.并且MyBatis在SQL上解决了JDBC里预编译拼接SQL的麻烦,可以自动匹配对象中的属性.


Mybatias相关资料;

http://www.cnblogs.com/shanheyongmu/category/877813.html

这个博客基本就涵盖了Mybatis的所有东西,从基本配置到DAO编写,mapper映射接口,动态SQL,高级映射,一应俱全.


Spring IOC/DI


IOD(控制反转):

这个东西光去看概念的确有点生硬难懂,老大也问过几次,IOC到底是什么?几位师兄弟的解释都基本是一个套路,中介.

首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。

  那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。


这个列子的确很完美的表示出了IOC的意思,不过从JAVA本身来说的话,为何叫反转?既然有反那就肯定有正,

我们在没有引入Spring的时候,我们想使用一个对象中的功能,必须通过new来生成这个对象的实例,然后再操作他来完成所需要的功能,如果类多了,相比这个过程就有点痛苦了.非常不易于管理,第二对程序员来说也是对记忆的一个考验,bean类多而繁杂.第二,bean类的生命周期不好控制.通过Spring的IOC就可以将这些操作全部交给一个配置文件来搞定就可以了.

IOC提供了四种方式来生成bean类实例.

①无参构造函数

②静态工厂

③实例工厂

④实例工厂变种 LocalSessionFactoryBean

我们开发中所常用的是使用构造函数的方式生成,简单,易懂.其他几种也有各自的应用场景.需要注意一下的是第四种

package com.myspring.ioc.factory;

import org.springframework.beans.factory.FactoryBean;

/**
* @author Arike
* Create_at 2017/11/28 18:39
*/
public class BeanImp4SessionFactory implements FactoryBean<BeanImp4> {

@Override
   public BeanImp4 getObject() throws Exception {
return new BeanImp4();
   }

@Override
   public Class<?> getObjectType() {
return BeanImp4.class;
   }

@Override
   public boolean isSingleton() {
return true;
   }
}

 

Spring为我们提供了一个FactoryBean接口用以赋予变种工厂功能,这个接口可以和配置文件很好的搭配实现自动话的功能.


IOC的理解:http://blog.csdn.net/qq_22654611/article/details/52606960


DI(依赖注入):

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。


DI的三种方式:http://blog.csdn.net/zljjava/article/details/7530669


log4j:

log4j是用以记录日志的第三方插件,他的作用是将我们的日志保存到一个文件中而长久的存在.

这就是为什么要使用log4j替代system.out的原因,在服务器中我们是没法实时观察到控制台的输出的,

就需要将程序的运行过程以及错误记录在一个文件中,用于之后排查.


log4j的详细配置:http://blog.csdn.net/azheng270/article/details/2173430/

 

 linux服务器:

linux这个东西算是我在任务一种最感兴趣的东西,因为对我来说是一个可玩度比较高的东西.

linux和macos都是unix的衍生产品.具有强大的稳定性以及开源性以及安全性,现在的主流 服务器上一般都才用linux的系统.我们在任务一里所使用linux的东西就是在服务器上进行MySQL的安装,jDK的安装以及配置环境,MAVEN的安装支持. 之后任务里会接触到WEB的东西,我还没接触到,暂时不谈.


ubuntu安装JDK:https://www.cnblogs.com/a2211009/p/4265225.html

ubuntu安装MAVEN:http://blog.csdn.net/qq_24091555/article/details/76039475

ubuntu安装MySQL:http://www.linuxidc.com/Linux/2016-07/133128.htm


我在任务一加上试学总共花了整整30天时间,除开中途有事浪费掉的时间,整个流程花了有22天左右.

任务一知识点有点多,加上我个人有七八年没有学习新东西的关系,学习进度比较慢,不过也还好没有放弃学习的热度,掌握的只是还算是比较扎实,虽然还有所欠缺,不过我相信我在之后的学习中能够加快进度,尽早进入项目中,


明天计划的事情:

完成任务1没有解决的深度思考,以及任务二,进入Spring AOP以及Spring MVC的学习.



 



返回列表 返回列表
评论

    分享到