发表于: 2018-05-20 20:14:09
1 1308
今天完成的事情:
23.将部署自己服务到服务器上,包括Maven,Mysql客户端等。直接用Maven命令跑单元测试。
IDEA使用maven
选择maven模板
在maven的配置文件中添加依赖和功能
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.wh</groupId>
<artifactId>maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 配置对于junit的依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--添加jar包的可执行功能-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>HelloWorld</mainClass>
<!--这里写执行的主类(main函数所在的位置)-->
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
使用maven命令需要指pom.xml文件中添加相关的依赖和插件
创建测试的类
public class Student {
public static String name="student";
public static void out(){
System.out.println("学生测试方法");
}
}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWold "+Student.name);
}
}
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class StudentTest {
@Before
public void BeforeTest(){
System.out.println("Before");
}
@Test
public void outTest() {
Student.out();
}
}
测试maven命令
clean(清除):清除target文件
运行后
validate(验证):验证工程是否正确,所有需要的资源是否可用。
"C:\Program Files\Java\jdk1.7.0_80\bin\java" -Dmaven.multiModuleProjectDirectory=F:\jpress\maven -DarchetypeCatalog=internal -Dmaven.home=F:\Maven\apache-maven-3.5.3\apache-maven-3.5.3 -Dclassworlds.conf=F:\Maven\apache-maven-3.5.3\apache-maven-3.5.3\bin\m2.conf "-javaagent:F:\IntelliJ IDEA 2018.1\lib\idea_rt.jar=50659:F:\IntelliJ IDEA 2018.1\bin" -Dfile.encoding=UTF-8 -classpath F:\Maven\apache-maven-3.5.3\apache-maven-3.5.3\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2018.1 -s F:\Maven\apache-maven-3.5.3\apache-maven-3.5.3\conf\settings.xml validate -f pom.xml
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------------< cn.wh:maven >-----------------------------
[INFO] Building maven 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.106 s
[INFO] Finished at: 2018-05-20T09:26:16+08:00
[INFO] ------------------------------------------------------------------------
compile(编译):编译项目的.java文件,生成.class文件,保存到项目根目录的taeget中
不产生jar包
test(测试):执行单元测试类,单元测试类下的所有测试方法都会执行
测试会进行编译,不会产生jar包
package(打包):在项目根目录下的target中生成一个.war包或者.jar包
打包操作后执行编译与测试的操作
verify(验证):运行任何检查,验证包是否有效且达到质量标准。
install(安装):将当前项目打成对应的包,并保存到本地仓库
在本地仓库中找到相应的包
执行安装操作会执行编译、测试、打包的操作
site(网站):产生site?
deploy(部署):上传到私服?
通过cmd执行maven命令
1.Cmd 进入到项目的 (根目录src的上一级目录)
mvn maven命令
使用maven运行项目的方法
在服务器上使用maven
项目完成后需要把项目放到服务器上
如果是将.jar文件放到服务器上的话,可以使用java –jar 包名.jar来运行项目
如果是将整个项目本身放到服务器上的话,可以在服务器上面配置maven来执行操作
使用7-zip将项目压缩成.tar格式
将压缩文件传输到服务器上
将压缩文件解压,参考资料:http://www.jb51.net/LINUXjishu/43356.html
进入项目的根目录(scr上级目录),运行maven命令
通过maven命令生成jar包
进入生成的target中
通过maven命令运行生成的jar包
25.测试一下不关闭连接池的时候,在Main函数里写1000个循环调用会出现什么情况。
参考资料:https://blog.csdn.net/wenwen091100304/article/details/48035003
参考资料:https://blog.csdn.net/shuaihj/article/details/14223015
查询资料,了解连接池的概念
早期数据库操作
1.原理:一般来说,java应用程序访问数据库的过程是:
①装载数据库驱动程序;
②通过jdbc建立数据库连接;
③访问数据库,执行sql语句;
④断开数据库连接。
3.分析
程序开发过程中,存在很多问题:
首先,每一次web请求都要建立一次数据库连接。
建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。
这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。
可是对于现在的web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。
在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。
不是危言耸听,这就是制约某些电子商务网站发展的技术瓶颈问题。
其次,对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。
还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。
为解决上述问题,可以采用数据库连接池技术。
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。
预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。
更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。
我们自己尝试开发一个连接池,来为上面的查询业务提供数据库连接服务:
① 编写class 实现DataSource 接口
② 在class构造器一次性创建10个连接,将连接保存LinkedList中
③ 实现getConnection 从 LinkedList中返回一个连接
④ 提供将连接放回连接池中方法
这就是数据库连接池的原理,它大大提供了数据库连接的利用率,减小了内存吞吐的开销。
我们在开发过程中,就不需要再关心数据库连接的问题,自然有数据库连接池帮助我们处理,这回放心了吧。
但连接池需要考虑的问题不仅仅如此,下面我们就看看还有哪些问题需要考虑。
明天计划的事情:
测试一下spring与c3p0连接池的使用
遇到的问题:
遇到的问题:使用test命令输出汉字乱码
在maven配置文件中添加
<!--解决test命令,输出中文字符乱码问题-->
<properties>
<argLine>-Dfile.encoding=UTF-8</argLine>
</properties>
评论