1 Star 1 Fork 1

java_easy/java-demo

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
Zlib

java-demo

介绍

java demo

这是一个Java基础的测试项目

目录结构

demo.io 测试和io相关的一些类

测试的一些用法:

io流-bio-阻塞式io
  • 字节流的使用
  • 字符流的使用
  • 字节流到字符流的转换
  • 桥转换处理编码
  • 过滤流的使用
  • 文件的输入输出
  • 读写字节到文件
  • 读写中文到文件
  • 读写基础数据类型到文件
  • 读写对象类型数据
  • 文件拷贝/5种
  • 序列化
  • 网络编程-服务端和客户端的基本使用
nio 非阻塞式io
  • nio的基本使用

心得,无法通过单一测试得到

对象序列化
  • 对象如果要放在流上进行传输,需要实现Serializable接口
  • 反序列化时可以不用调构造方法就完成对象的构建
  • 反序列化子对象时,如果子对象实现了Serializable接口,而父对象未实现,父对象有无参构造方法,则子对象反序列化时会调用父对象的无参构造方法构建对象
  • 反序列化子对象时,如果子对象实现了Serializable接口,而父对象未实现,父对象没有无参构造方法,则子对象反序列化时会报错
  • 自定义序列化后,反序列化时会调用无参构造构建对象
对象二次序列化-浅克隆和深克隆
二次序列化
  • 指的是一个对象被同时序列化了两次,通过反序列化后得到的对象地址一样的问题
  • 测试类: demo.io.TestDoubleSerializable
什么是克隆
  • 简单来说,就是复制一个新的对象,各项参数和源对象一致,但是地址不同
  • 指一个对象实现了Cloneable接口,并且覆盖实现了Object方法的clone方法,并将其修饰符改为pulic
  • 实现了Cloneable接口:是为了标识该对象支持克隆
  • 覆盖实现了Object方法的clone方法,并将其修饰符改为pulic:Object的clone方法是不支持直接访问的,所以要覆盖才能使用
什么是浅克隆
  • 打个比喻:通过克隆技术,克隆了一个儿子,克隆完成后,两个儿子共用一个父母,就是指浅克隆
  • 就是指对象内还有一个对象,该对象实现了序列化接口,并且开启了克隆的方法时,该对象内的对象不会被同时克隆.
  • 通过反序列化得到的两个对象虽然实现了克隆,但是其内部的对象的地址池还是会保持一致,这种情况称为浅克隆
  • 例子:demo.io.TestClone.testShadowClone()
什么是深克隆
  • 打个比喻:通过克隆技术,克隆了一个儿子的同时其父母也被克隆,克隆完成后,两个儿子都有自己的父母,就是指深克隆
  • 指对象克隆的同时,其内部对象也同时被克隆
  • 例子:demo.io.TestClone.testDeepClone()
网络编程

socket通信-基于协议的通信,其实也是io流的一些操作

服务端

basedemo:demo.io.BioServer

客户端

basedemo:demo.io.BioClient

###声明 为方便测试,本项目的异常处理是直接抛出,实际开发过程中是要根据具体场景处理异常的,请注意

本项目javadoc访问地址

https://oswl.gitee.io/java-demo

zlib License (C) 2020 wanglei This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.

About

java 基础入门级小项目,完善中。。。 expand collapse
Cancel

Releases

No release

Contributors

All

Language(Optional)

Activities

can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/oswl/java-demo.git
git@gitee.com:oswl/java-demo.git
oswl
java-demo
java-demo
master

Search