发表于: 2017-12-07 21:30:01

2 880


今天完成的事情:
一.整理RMI知识点

1. printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。

2.假如要将服务发布到远程然后还能保证本地能访问到,需要配置两个东西.

++在启动类里指定远程服务ip地址

++pom.xml文件里配置utf-8编码

二.中文乱码问题

1.首先了解file.encoding 和 sun.jnu.encoding两个属性的值

//        获取file.encoding的值
       System.out.println("file.encoding:"+System.getProperty("file.encoding"));
//        获取sun.jnu.encoding的值
       System.out.println("sun.jnu.encoding:"+System.getProperty("sun.jnu.encoding"));

2.验证

编码格式utf-8正常

编码格式GBK,乱码

这样就判断为默认编码是utf8

Ctrl+Alt+s文件编码

用记事本打开.java文件,然后另存为,可以看到文件的编码

Domain.java文件是utf-8格式的

Domain.class文件通过命令行编译是GBK的,然后通过-Dfile.encoding=utf-8修改属性后变成了utf-8格式的.

也就是说,一个java文件是以二进制的形式存储在硬盘中的,我们一开始用utf8的编码存储它,然后手动javac编译,因为我们没有指定编码,编译之前提取文件解析文件系统不知道我们是以什么编码存的,所以只能采用windows系统默认的编码,也就是GBK(如下查看)


963表示默认编码GBK

3.虎头蛇尾吧,项目跑出问题了

++大概就是我在idea里写的源文件存到本地是以utf-8的编码存的,我假如直接在命令行里打包的话,源文件没有指定编码格式,那么机器不知道以什么编码取,那么它就会以默认的本机系统默认的编码来解码,windows就是GBK,那么源文件里原来用utf-8存的中文就会成乱码.所以假如在命令行里编译java文件,要指定编码的话用

而且当java运行的时候也要进行编码指定

java  -Dfile.encoding=utf-8 Domain1

然后才能正确输出中文;

++我们要在pom.xml文件中配置一下编码

    <properties>

         <!--文件拷贝时的编码-->

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

         <!--编译时的编码-->

        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>

    </properties>

把这三个配置一下应该就没什么问题了.不深究了.搞了一晚上

三.System.in,输入输出流

    知识点

1.缓存流

缓存流的思想,首先BurrerReader是为其他Reader提供缓冲功能.创建BufferReader时一般会通过它的构造函数指定我们是为哪个Reader缓冲.BufferReader会将该Reader的数据分批存取,每次读取一部分存到BufferReader的对象中,操作完缓冲中的这部分数据之后,再从Reader中读取下一批数据.

为什么要缓冲,缓冲的数据一般是存在内存里,而原始数据可能保存在硬盘里,内存数据读取一般不硬盘读取快10倍以上

问题:为什么不一次性把数据全部存储在缓冲,原因:1.读取全部数据的时间会很长2.内存价格很贵

2.输入流

暂时了解不深入??
3.扫描控制台

java.util.Scanner是java5的功能,主要是为了简化文本扫描,最实用的时候是获取控制台输入.

通过new Scanner创建一个Scanner实例,控制台会一直等待输入,直到按回车键结束,把所输入的内容传给Scanner对象,作为扫描对象,只要对对象执行scanner.nextLine();方法即可;

Scanner可以存入字符串,输入流,文件.有了Scanner可以逐段扫描整个文本,并对扫描后的 结果进行操作

public class TestScanner(){

         public static void  main (String [] args){

         Scanner scanner=new Scanner();

         System.out.print("请输入字符串:");

//true条件循环表示程序运行过程中一直循环判断控制台输入

         while(true){

         String ss=scanner.nextLine();

         if(ss.equals("exit")){

//System.exit(0);表示结束当前正在运行的虚拟机.0表示正常结束.非0表示异常结束.也就是整个程序终止了;

//break;表示跳出当前循环.但是程序还是真正运行的;

        System.exit(0);

        System.out.println("安全退出成功");

}}}}

明天计划完成的事情:明天搞tuscany

遇到的问题:一天好像也学不了多少
收获:深入理解rmi和了解了一点编码



返回列表 返回列表
评论

    分享到