Java学习(六)
目录:
1、Redis、MongoDB、json、gson的概念理解:
2、什么是持久化?
3、什么是cookies?
4、什么是session?
5、String的一个常用构造方法:
6、OutputStream的flush方法解析:
7、java中字节数查询:
8、常见的运行时异常:
9、FileInputStream学习:
10、FileOutputStream学习:
11、练习:
1、Redis、MongoDB、json、gson的概念理解:
答:(1)Redis:Redis是一个开源的使用ANSI C语言编写、支持网络,可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API(Application Programming Interface,应用程序编程接口)
(2)MongoDB:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。
主要功能特性有:
a)面向集合存储,易存储对象类型的数据。
b)模式自由。
c)支持动态查询。
d)支持完全索引,包含内部对象。
e)支持查询。
f)支持复制和故障恢复。
g)使用高效的二进制数据存储,包括大型对象(如视频等)。
h)自动处理碎片,以支持云计算层次的扩展性。
i)支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
j)文件存储格式为BSON(一种JSON的扩展)。
k)可通过网络访问。
(3)JSON:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON 数据的书写格式是:名称/值对。
(4)GSON:Gson是一个Java类库,用于将Java对象转换为它们所代表的Json数据,也可以将一个Json字符串转换为对应的Java对象。JSON中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。
2、什么是持久化?
答:持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
持久化是将程序数据在持久状态和瞬时状态间转换的机制。
JDBC就是一种持久化机制。文件IO也是一种持久化机制。
3、什么是cookies?
答:指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookies在计算机中是个存储在浏览器目录中的文本文件,当浏览器运行时,存储在RAM中发挥作用 (此种Cookies 称作sion Cookies),一旦用户从该网站或服务器退出,Cookie 可存储在用户本地的硬盘上(此种Cookies 称作Persistent Cookies)(persistent,长久的)
通常情况下,当用户结束浏览器回话时,系统将终止所有的Cookies。当Web 服务器创建了Cookies后,只要在其有效期内,当用户访问同一个 Web服务器时,浏览器首先要检查本地的Cookies,并将其原样发送给Web 服务器。这种状态信息称作“persistent client state http cookie” ,简称为Cookies。
4、什么是session?
答:(1)Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。
(2)具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。
(3)在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web 页之间跳转时,存储在Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则Web 服务器将自动创建一个Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session 对象中。
注意:会话状态仅在支持cookies的浏览器中保留。
5、String的一个常用构造方法:
答:String(byte[] bytes, int offset, int length)
bytes :要解码为字符的byte
offset :要解码的第一个byte的索引
length:要解码的byte数
6、OutputStream的flush方法解析:
答:什么时候flush()才有效呢?当要将FileOutputStream作为BufferedOutputStream构造函数的参数传入,然后对BufferedOutputStream进行写入操作,才能利用缓冲及flush()。
7、java中字节数查询:
答:String i = “中国”; i.getBytes().length 输出4,说明一个汉字占用两个字节
String i 2= “c”; i2.getBytes().length 输出1,说明一个英文字母占用一个字节
8、常见的运行时异常:
答:(1)IndexOutOfBoundsException:某排序索引(数组,字符串或向量的排序)超出范围时抛出。
(2)NullPointerException:当应用程序试图在需要对象的地方使用null 时,抛出该异常。
这种情况包括:
①调用 null 对象的实例方法。
②访问或修改null 对象的字段。
③将 null 作为一个数组,获得其长度。
④将 null 作为一个数组,访问或修改其时间片。
⑤将 null 作为 Throwable 值抛出。
空指针异常,出现该异常的原因在于某个引用为null,却调用了它的某个方法。这时就会出现该异常。
(3)ArithmeticException:当出现异常的运算条件时,抛出此异常。例如零作为除数
(3)ClassCastException:类转换异常,当试图将对象转换为不是实例的子类时,抛出该异常。
9、FileInputStream学习:
答:(1)继承关系:
Java.lang.Object
--------Java.io.InputStream
----------------Java.io.FileInputStream
(2)方法学习:
①首先在F盘中创建一个FileInputStream.txt文件
图9.1 建立txt文件
②代码示例如下:
(1)在调用该会产生异常的方法所在的方法声明throws Exception:
图9.2 代码示例1
(2)对异常用try,catch,finally进行捕获:
图9.3 代码示例2
③运行结果:
图9.4 运行结果
10、FileOutputStream学习:
(1)继承关系:
java.lang.Object
--------java.io.OutputStream
----------------java.io.FileOutputStream
(2)方法学习:
①代码示例如下:
图10.1 代码示例
②运行结果:
图10.2 运行结果
11、练习:
(1)测试:将A文件内的内容复制到新文件B当中。
①代码如下:
图11.1 代码示例
②运行结果:
(a)在桌面生成了A.txt以及B.txt文件
图11.2 运行结果1
(b)查看两个文件的内容发现A文件的内容已经复制到了B文件上
图11.3 运行结果2
(2)将9*9乘法表放入到一个文件里
①代码如下:
图11.4 第二题代码示例
②运行结果:
在Multiply.txt文件中输出了9 * 9乘法表。
图11.5 第二题运行结果