1 / 36

靳国杰

自主决定命运 , 创新成就未来 www.loongson.cn. 龙芯 Java 培训. (二)高级应用篇. 靳国杰. 总述. 龙芯JDK是龙芯服务器产品线的重要软件。 本课程共分为两节,第一节是基础应用,第二节是高级应用。 本节课程是龙芯JDK的高级教学,重点介绍龙芯JDK在使用过程中的常见问题。. 课程目标. 掌握在Linux中解决UTF8乱码问题 掌握搭建MySQL数据库,并且在Tomcat中编写JAVA程序访问数据库 掌握使用主流的Java框架 掌握搭建负载平衡机群. 内 容. 乱码问题. MySQL 数据库. Java 框架. 负载平衡.

Download Presentation

靳国杰

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 自主决定命运,创新成就未来www.loongson.cn 龙芯Java培训 (二)高级应用篇 靳国杰

  2. 总述 龙芯JDK是龙芯服务器产品线的重要软件。 本课程共分为两节,第一节是基础应用,第二节是高级应用。 本节课程是龙芯JDK的高级教学,重点介绍龙芯JDK在使用过程中的常见问题。

  3. 课程目标 • 掌握在Linux中解决UTF8乱码问题 • 掌握搭建MySQL数据库,并且在Tomcat中编写JAVA程序访问数据库 • 掌握使用主流的Java框架 • 掌握搭建负载平衡机群

  4. 内 容 乱码问题 MySQL数据库 Java框架 负载平衡

  5. 乱码问题的由来 • 龙芯操作系统:Linux均使用UTF8语言编码 • UTF8:全球语言字符集 • 而在实际应用环境中,大量使用Windows做为开发环境 • Windows使用GB2312编码 • 来自于Windows的文本文件,在Linux中处理时,必须进行字符集转换,否则将出现乱码问题

  6. 一个实例 • 在Windows上,使用记事本建立一个含有中文字符的文件 gb.txt • 将gb.txt传送到龙芯机器上,编写 Java程序显示这个文件的内容 /* TestUtf8.java:展示乱码错误 */ import java.io.File; import java.io.FileReader; import java.io.BufferedReader; public class TestUtf8 { public static void main(String[] args) { File file = new File("gb.txt"); String buf = "", temp; try { BufferedReader reader = new BufferedReader(new FileReader(file)); // 一次读入一行 while ((temp = reader.readLine()) != null) { buf += temp; } System.out.println(buf); } catch (Exception e) { e.printStackTrace(); } } }

  7. 乱码现象 • 在Windows下显示的文件内容: • TestUtf8.java在龙芯上的运行结果:

  8. 在Java中进行语言编码的转换 • 由于Linux使用的是Utf8编码,因此在读入文件的时刻,必须进行由GB2312到UTF8编码的转换 /* TestUtf8.java:能够在龙芯机器上正确显示gb2312编码的文件 */ import java.io.File; import java.io.*; public class TestUtf8 { public static void main(String[] args) { File file = new File("gb.txt"); try { byte[] bytes = new byte[512]; FileInputStream fs = new FileInputStream(file); fs.read(bytes); // 读入原始的二进制字节流 System.out.println(new String(bytes, "GB2312")); //转换成UTF8字符 } catch (Exception e) { e.printStackTrace(); } } }

  9. 效果:乱码现象消除! • 正确的显示汉字:

  10. 提 示 • 由于历史原因,在Linux中产生乱码的现象频繁出现 • 远程终端显示汉字乱码 • Tomcat中页面显示乱码 • 文件名/目录名乱码 • 解决方式需要针对具体情况而处理

  11. 内 容 乱码问题 MySQL数据库 Java框架 负载平衡

  12. MySql简介 • Linux上使用最广泛的开源数据库 • 龙芯上首选的数据库 • 基于“客户端-服务器”结构 • 兼容标准的SQL查询语法 • 功能足够完备,能够满足典型中小企业应用 • 与Java配合良好

  13. 安装Mysql • 以Debian系统为例 $ sudo apt-get install mysql-server安装过程中会提示输入数据库服务器的管理密码 • 其它发行版可能有细微区别

  14. 启动Mysql服务器 • 启动 $ /etc/init.d/mysql start • 停止 $ /etc/init.d/mysql stop

  15. 登录数据库 • 输入命令$ mysql –uroot -ppassword • 其中password为安装时设置的密码

  16. 创建数据库、数据表 • 创建新库mysql> create database logintest; • 创建新表mysql> use logintest;mysql> create table user (id text, name text, pwd text); • 显示所有数据库mysql> show databases;

  17. 数据的查询和修改 • MySQL支持标准的sql语言 • 添加记录insert into user values ('1', 'gin', 'cpu'); • 查询 select * From <表名>; • 删除 delete from <表名> where <条件>; • 修改 update <表名> set <字段名> = <值>;

  18. 在Java程序中访问Mysql数据库 • 下载jdbc的驱动库http://dev.mysql.com/downloads/connector/得到mysql-connector-5.1.8.jar • 安装:将.jar包放入Tomcat的lib文件夹下

  19. 程序实例 • 演示功能:在网页中输入用户名和密码,提交后在服务器端检查是否有合法记录

  20. 数据库的内容 • user表中,插入一行记录,包含一个用户名和密码

  21. 步骤1:建立一个到数据库的Connection String user = "root"; String password = "password"; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/logintest"; Class.forName(driver).newInstance(); Connection conn = DriverManager.getConnection(url, user,password);

  22. 步骤2:检索数据 • 查询数据库,验证用户名和密码 String sql = "select * from user where name = ? and pwd = ?"; PreparedStatement pstmt; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); // 查询获得结果集 ResultSet rs = pstmt.executeQuery(); if (rs.next()) { suc = true; /* 登录成功*/ }

  23. 插入新记录 • 向表中插入新的用户信息 String sql = "insert into user values('2', 'abc', '123456')"; Statement st; st = conn.createStatement(); st.executeUpdate(sql);

  24. 内 容 乱码问题 MySQL数据库 Java框架 负载平衡

  25. 龙芯支持全部主流Java框架 • 安装、使用方法与PC机完全相同 root@/opt/apache-tomcat-7.0.25/webapps/bbs# ls WEB-INF/lib/ activation-1.1.1.jar httpcore-4.1.jar slf4j-api-1.6.1.jar antlr-2.7.6.jar javassist-3.9.0.jar smtp-1.4.2.jar aopalliance.jar jcaptcha-1.0.jar spring.aop-3.0.5.jar apache-ant-zip-1.8.0.jar jcl-over-slf4j-1.6.1.jar spring.asm-3.0.5.jar c3p0-0.9.1.2.jarjmagick.jar spring.beans-3.0.5.jar commons-codec-1.3.jar json.jar spring.context-3.0.5.jar commons-collections-3.1.jar jta-1.1.jar spring.context.support-3.0.5.jar commons-fileupload-1.2.1.jar jug-2.0.0.jar spring.core-3.0.5.jar commons-io-1.4.jar log4j-over-slf4j-1.6.1.jarspring.expression-3.0.5.jar commons-lang-2.4.jar logback-classic-0.9.27.jar spring.jdbc-3.0.5.jar commons-net-ftp-2.0.jar logback-core-0.9.27.jar spring.orm-3.0.5.jar dom4j-1.6.1.jar lucene-core-3.0.3.jar spring.transaction-3.0.5.jar ehcache-1.6.2.jar mailapi-1.4.2.jar spring.web-3.0.5.jar freemarker-2.3.16.jar memcachedclient-2.0.1.jar spring.web.servlet-3.0.5.jar hibernate-3.3.2.jarmysql-connector-5.1.8.jar spymemcached-2.3.1.jar htmlparser-1.6.jarquartz-1.6.5.jar httpclient-4.0.3.jar

  26. 内 容 乱码问题 MySQL数据库 Java框架 负载平衡

  27. 负载平衡技术 • Web主机数量的横向扩容 • 几十个服务器做为一个Web站点

  28. 安装环境 • Tomcat:Web服务器(多个) • apache:负载平衡服务器(1个) • Tomcat connector:Apache插件(1个),用于将Web请求分发到各Tomcat

  29. 安装步骤(1) • 安装apache、Tomcat connector (以Debian为例) $ aptitude install apache2 $ aptitude install apache2-mpm-worker $ aptitude install apache2-utils $ aptitude install apache2.2-bin $ aptitude install apache2.2-common $ aptitude install libapache2-mod-jk

  30. 安装步骤(2) • 复制两份tomcat目录 • 例如/opt/tomcat1、/opt/tomcat2 • 修改每个tomcat中的conf/server.xml • Server port改为不同的端口号 • Connector port改为不同的端口号 • Engine name的jvmRoute改为不同名称

  31. 安装步骤(3) • 配置Apache [/etc/apache2/httpd.conf] 最后加入 ProxyPass / balancer://tomcatcluster/ lbmethod=byrequests nofailover=Off stickysession=JSESSIONIDtimeout=5 maxattempts=3 ProxyRequests off ProxyPassReverse / balancer://tomcatcluster/ <proxy balancer://tomcatcluster> BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1 BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2 </proxy> • 重启Apache

  32. 测试(1) • 在两个Tomcat中分别建立test.jsp,里面任意输出不同的字符串 • 在另外一个机器中,使用浏览器访问http://<服务器IP>/test.jsp • 每次刷新页面,能够交替出现来自于两个Tomcat的页面内容

  33. 测试(2) • 在另外一个机器中,安装WEB压力测试工具Load Runner • 分别对Apache、两个Tomcat进行压力测试,可以看到负载平衡的能力远高于单个Tomcat

  34. 课后习题 • 在Java程序中,怎样将GB2312编码的文本转换成UTF8编码? • JDBC都包含哪些主要函数? • 尝试在龙芯平台上安装一种JAVA框架,并且编写程序测试 • 搭建负载均衡方案的主要步骤?

  35. http://www.loongson.cn/dev/wiki/JAVA-HELP 参考资料

  36. 北京市海淀区中关村科学院南路10号100190 No.10 Kexueyuan South Road,zhongguancun Haidian District,beijing 100190,china

More Related