今天主要是总结前面的知识点:
1.环境的配置那些都是最基础的要求--->
开发环境要注意jdk和jre的区别(jdk(Java Development Kit )是java开发环境而jre(Java Runtime Environment)是java运行环境)
2.就是mysql的表的设计,字段的选取(在开始我出现的一个问题就是mysql里面desc是mysql内部自己定义的一个,我自己定义了一个字段,就冲突了,后面查询和对数据库的操作一直不成功)所以在字段的设计的时候要注意选取合适的字段这个错误不容易发现而且很难找到,还有在对应的字段的长度还有适用什么样的类型是long、int还是varchar,对于不同长度的也要精确不要太大,也不要太小,太小会溢出。还有id设计成自增的好处还有那些时候不是设计id自增,在做分布式数据库时,要求数据同步时,这种自增ID就会出现严重的问题,因为你无法用该ID来唯一标识记录。同时在数据库做移植时,也会出现各种问题,总之,对此自增ID有依赖的情况,都有可能出现问题。
一般分布式的不会用id自增
3.还有索引的提高查询的性能,合适的设计索引外键的关联,这样可以简化查询的时间,可以提高查询的效率,在昨天 想数据库里面插入3000万条记录的时候,没有建立索引的时候,查询的效率比较低,查询一般在30秒左右,在建立索引后,查询的时间就只有0.2秒左右就可以查询,这样大大的通告查询的效率
4.关于maven的知识,maven项目管理的工具,主要是在java的jar的管理,主要是在pom.xml里面配置对应的jar包的版本,maven可以同时管理多个项目一起管理,还有本地厂库的配置.m2的本地厂库,这个时候maven项目下面mvn install运行就会在target下面有一个项目对应的XXX.war包,这个和后面的远程maven项目的服务器里面跑起来,就是要讲XXX.war包放在服务器里面的tomcat下面的webapps里面解压,就可以在tomcat/bin下面启动./startup.sh 启动tomcat,就可以在网页中访问项目的地址(还有java项目怎么打成war包--->这个要这么知道)
5.还有spring的基本知识IOC控制反转,减少代码的耦合性,主要是解耦的,主要是java bean的配置,还有注解的方式,简化java的代码的注入,结构更加的清晰,文件修改也比较方便,基本上XML里面要修改的.还有AOP面向切面的编程,就是核心功能和切面的一些打印的测试或者是一些信息,切面可以分别的运行相互不影响,各自完成自己的功能部分,就是讲核心功能和周边功能分开同时同时可以完成,spring基本上通过XML的配置和注解的方式,简化java的代码,增加代码的稳固性,代码的修改性也提高了,代码的解耦也做到了,提高代码的内聚和降低代码间的耦合性.
6.就是mybatis的链接数据库,开始用原生的jdbctemplate连接数据库,开始把这个流程走通,这个对后面的mybatis的链接数据库有帮助,开始原生的jdbc连接数据库,基本上java代码的SQL语句的操作,mybatis主要是XML的配置,还有配置映射的文件,在后面的mybatis的连接池C3P0的操作中,也是主要的jdbc的连接配置,还有sqlsession的配置,还有java bean的配置,还有类引入的注解的文件注入XML的配置文件,还有连接池的基本配置,还有对最大和最小的数量的配置.还有连接池的超时的时间设置,基本mybatis的连接数据库,一个简单的我jdbc连接和连接池的,连接池就是资源开销利用要好一些.
7.Junit的单元测试---->这个开始感觉不好用,担心项目里面不可能多要写一个pvsm(main)-->这个时候单元测试Junit就比较好用,这个时候单元测试的优越性就体现出来了,主要要注意的是单元测试的时候,按个测试的代码是不会影响你代码的整体的.还有那个学会断点debug的测试,在这个过程中要学会怎么查看每一步字段运转的时候,值的改变值的变化,单步的值的改变.
8.接下来就是在云端的服务器的环境的配置,还有基本的linux命令的操作,在购买阿里云的过程中,最开始就是简单的java的环境的配置安装jdk主要是配置文件使用vim编辑如果强制退出会产生,隐藏文件,文件的信息没有保存,正确的退出vim编辑先按esc 在shift+ZZ ---->就可以退出没有隐藏文件的生成,在其他的vim修改配置文件的时候也可以用这个方式,接下来的tomcat的基本陪也是差不多的,就是在外部访问8080端口,要在阿里云里面开启端口,开启端口3306的远程DB的连接数据库,这个时候最好是要关闭防火墙Firewall,需要用的时候再开启,在开启远程DB的时候,主要是my.cnf 里面的配置,注释掉本地的bind_address,还有设置mysql的访问的用户名和密码的设置,这样才能外部能够远程的DB的访问,还有maven的安装配置,主要是那个etc/file配置,还有仓库的配置,一般mvn test 就可以啦.最后就是开始远程的svn服务器失败了,我就换了一种方式
开始本地的git提交到GitHub上面 后面在服务器上面clone GitHub上的项目--->这样就解决了怎么将项目的版本的管理和托管,将项目放在托管平台.对服务器还有一点,就是要熟悉linux的基本的命令的熟悉,那上面没有界面,全部是命令行的操作,环境 配置 应用的安装都是,所以linux的命令行的基础要转变充实.
9.最后就是要注意代码的规范,如果DB的表单有变化,我们的java代码要竟可能的少修改,基本都是配置文件XML这样提高了代码的强度,不会有一点的变动就要修改java的代码.最后还有log4j的打印日志的记录,日志出现的问题还是异常的记录好找文件的错误的地方.就是查看了深度思考里面我的log4j的日志打印没有怎么弄;下面就补一下知识;
开始下载log4j的支持的jar包
log4j--->日志不同的级别
logger.trace("跟踪信息");
logger.debug("调试信息");
http://logger.info("输出信息");
logger.warn("警告信息");
logger.error("错误信息");
logger.fatal("致命信息");
1. 基于类的名称获取日志对象
static Logger logger = Logger.getLogger(TestLog4j.class);
2. 进行默认配置
BasicConfigurator.configure();
3. 设置日志输出级别
logger.setLevel(Level.DEBUG);
log4j 的指定的配置
与 Log4j入门 中的BasicConfigurator.configure();方式不同,采用指定配置文件
PropertyConfigurator.configure("D:\\eclipse for javase\\spring_mybatis\\src\\log4j.xml");
Log4j的配置方式按照log4j.properties中的设置进行
具体的log4j 的properties的具体配置
设置日志输出的等级为debug,低于debug就不会输出了
设置日志输出到两种地方,分别叫做 stdout和 R
log4j.rootLogger=debug, stdout, R
第一个地方stdout, 输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
输出格式是 %5p [%t] (%F:%L) - %m%n, 格式解释在下个步骤讲解
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
第二个地方R, 以滚动的方式输出到文件,文件名是example.log,文件最大100k, 最多滚动5个文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=5
输出格式是 %p %t %c - %m%n, 格式解释在下个步骤讲解
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j日志输出格式一览:
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
所以:
%5p [%t] (%F:%L) - %m%n 就表示
宽度是5的优先等级 线程名称 (文件名:行号) - 信息 回车换行
除了使用log4j.properties,也可以使用xml格式进行配置。
在src目录下装备log4j.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/>
</layout>
</appender>
<!-- specify the logging level for loggers from other libraries -->
<logger name="com.opensymphony">
<level value="ERROR" />
</logger>
<logger name="org.apache">
<level value="ERROR" />
</logger>
<logger name="org.hibernate">
<level value="ERROR" />
</logger>
<!-- for all other loggers log only debug and above log messages -->
<root>
<priority value="ERROR"/>
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
其他的配置文件怎么注入都是一样的-->log4j怎么打印记录日志
接下来就是深度思考里面的---->maven是什么,和Ant有什么区别?
maven前面已经总结了,介绍要知道ant个maven的区别
Ant和Maven都是基于Java的构建(build)工具。理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。
Ant特点
没有一个约定的目录结构
必须明确让ant做什么,什么时候做,然后编译,打包
没有生命周期,必须定义目标及其实现的任务序列
没有集成依赖管理
Maven特点
拥有约定,知道你的代码在哪里,放到哪里去
拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
拥有依赖管理,仓库管理
还有maven的测试怎么跳过Junit单元测试
https://www.cnblogs.com/garfieldcgf/p/5486473.html
maven-surefire-plugin的插件提供了对测试目录的配置,想要细看的或者学习更多东西的可以去
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.17</version>
<configuration> <includes> <include>**/Test1.java</include> <include>**/Test2.java</include> </includes> <excludes> <exclude>**/Test3.java</exclude> <exclude>**/Test4.java</exclude> </excludes> </configuration>
</plugin>
或者是
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> <configuration> <includes> <include>com/test/action/*Test.java</include>
</includes> <excludes> <exclude>com/test/action2/*Test.java</exclude> </excludes> </configuration> </plugin>
clean,install,package,deploy分别代表什么含义?
maven package:打包到本项目,一般是在项目target目录下。如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错。
maven install:打包到本地仓库,如果没有设置过maven本地仓库,一般在用户/.m2目录下。如果a项目依赖于b项目,那么install b时,会在本地仓库同时生成pom文件和jar文件,可以看install b的日志:
[INFO] — maven-install-plugin:2.5.2:install (default-install) @ b —
[INFO] Installing D:\java\workspace\b\target\b-2.7.4.RELEASE.jar to C:\mavenRepository\com**\b\2.7.4.RELEASE\b-2.7.4.RELEASE.jar
[INFO] Installing D:\java\workspace\b\pom.xml to C:\mavenRepository\com**\b\2.7.4.RELEASE\b-2.7.4.RELEASE.pom
maven deploy:打包上传到远程仓库,如:私服nexus等,需要配置pom文件
maven clean:mvn clean可将根目录下生成的target文件移除