Class类的
java.lang.Class类的实例可以用于描述java应用程序中类和接口,也就是一种数据类型
该类没有公共构造方法,该类的实例由java虚拟机和类加载器自动构造完成,本质上就是加载到内存中的运时类。
对象为在堆区中的一个区域,还是代表一种数量类型
类也是一种比较特殊的对象
Class类的
java.lang.Class类的实例可以用于描述java应用程序中类和接口,也就是一种数据类型
该类没有公共构造方法,该类的实例由java虚拟机和类加载器自动构造完成,本质上就是加载到内存中的运时类。
对象为在堆区中的一个区域,还是代表一种数量类型
类也是一种比较特殊的对象
Person P = new Person()
表示声明Person类型的引用指向Person类型的对象
p.show() 表示调用Person类中的成员方法show
在编写时,是不知道创建什么样的对象,与调用什么样的方法
通常情况下编写代码都是固定的,无论运行多少次执行的结果也是固定的
在某些特殊场合中编写代码时不确定要创建什么类型的对象,也不确定要调用什么样的方法,这些都是希望通过运行时传递的参数来决定,该机制叫做动态编程技术,也就是反射机制
通俗来说,反射机制就是用于动态创建对象并助动态调用方法的机制
目前主流的框架底层都是采用反射机制实现
启动的时候:先启动接收方
客户端与服务器不断的通信
客户端只输入一个数
实现了,服务器,与客户端之间相互的通信
1、IO流(重点)
概念、分类、
字节流,字符流
输入流,输出流
节点流,包装流
体系结构、相关类的详解等。
以字节为单位,对文件进行读写
以字符为单位,对文件时行读写
RandomAccessFile类
IO流:随着读写操作
如果需在跳跃性操作的时候,
随机的含义:
pos 为 position文件中的操作
用于设置从此文件的
java.RandomAccessFile 类主要支持对随机访问文件的读写操作
r:以只读方式打开
seek(long pos)用于设置以此文件的开头开始测量的文件指针偏移量
seek的写操作,用于信息的更新
RandomAccessFile类的一个优势
序列化机制是通过在运行时判断类的SerialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的
当希望将多个对象写入文件时,通常建议将多个对象放入一个集合中,然后将集合这个整体看做一个对象写入输出流中,此时只需要调用一次readObject方法就可以将整个集合的数据读取出来,从而避免了通过返回值进行是否达到文件末尾的判断
比如这张图为一个对象,万事皆对象
将一个图,保留在磁盘上
图上的信息量很大,有色,有文字,有线条
所以相关信息,组织成有效组织成字节序列的转化过程
组织成字节序列的过程
所谓序列化主要是指将一个对象需要存储的相关信息有效组织成字节序列的转化过程
所谓反序列化 主要指将 有效组织的字节序列恢复为一个对象及相关信息的转化过程
序列化与反序列化
ObjectOutputStream类主要用于将一个对象的所有内容整体写入到输出流中
对象的类型要实现Serializable接口,来启动序列化
图:有文字,有线条,有空白的地方
万物皆对象的理念,图片也保存在上面
将一个对象需在存储的相关信息有效组织成字节序列的转化过程,叫序列化
反序列化主要指将有效组织的字节序列恢复为一个对象及相关信息的转化过程
计算机只能识别二进制数据,早期就是电信号。
为了方便计算机可以识别各个国家的文字,就需要将各个国家的文字采用数字编号的方式进行描述并建立对应关系表,该表就叫
编码表
字符与数字建立关系的表,叫做编码表
ASCII:美国标准信息交换码,使用一个字节的低7位二位进制进行表示
ISO8859:拉丁码表,欧洲码表,使用一个字节的8位二进制表示
GBK:中国的中文编码表升级,融合了更多的中文文字符号,最多使用两个字节16位进制位表示
Unicode:国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码。所有的文字都用两个字节16位二进制来表示
Unicode只是定义了一个庞大的,全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案。
推荐的Unicode编码是UTF-8,UTF-16
UTF-8 :变长的编码方式,可用1-4字节来表示一个字符
打印流,
PrintStream
PrintWriter
缓冲区是可以加快copy的速度
减少了与磁盘IO的次数
文件字符流
FileReader 类主要用于从文本文件读取文本数据内容
FileReader
read() 读取单个字符数据并返回,返咽-1表示读取到末尾
FileWriter类的
字符流的文件输入流与文件输出流
将文本内容,写入文本文件中
字符流的文件输出流,与文件输入流
Writer类主要用于将文本内容写入到文本文件
异常的处理方式:避免,捕获,抛出
抽象类,不能new对象,只能被继承
转换流:字符流与字节流之间的转换
打印流
PrintStream
PrintWriter
物殊流
DataInputStream
DateOutputStream
IO流的概念
1、IO就是Input和Output的简写,也就是输入与输出的含议
2、IO流就是指读写数据时像流水一样从一端流到另外一端,因此得名为”流“。
基本分类:
1、按照读写数据的基本单位不同,分为字节流和字符流
字节流为字节为单位进行读写
字符流为字符为单位进行读写
其中字节流主要指以字节为单位进行数据读写的流,可以读写任意类型的文件
其中字符流主要以字符(2个字节)为单位进行数据读写的流,只能读写文本文件
按照读写数据方向不同,分为输入流和输出流(站在程序的角度)
其中输入流主要指从文件中读取数据内容输入到程序中,也就是读文件
其中输出流
节点流:如果流与文件直接关联,为节点流
处理流:套在其它文件上,间接关联的为处理流
Nosql
Redis是Nosql的一种实现形式
Redis
概念:Redis(Remote Dictionary Server),中文翻译远程字典服务
是用C语言开发的一个开源的高性能键值对(key-value)数据库
特征:
1、数据间没有必然的关联关系
2、内部采用单线程机制进行工作
3、高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/2,写的速度是81000次/s
4、多数据类型支持
字符串类型 string
列表类型 list
散列类型 hash
集合类型 set
有序集合类型 sorted_set
5、持久化支持。可以进行数据突难恢复
Redis的应用
为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
任务队列,如秒杀、抢购、购票排队等
Redis简介
不可回避的问题:
奥运会门票预售系统开放第一天,票务网站被浏览次数达到20000次
一个神奇的网站:
盘点12306:一个总在”崩溃中“的神奇网站
问题现象:
海量用户
高并发
罪魁祸首------关系型数据库
性能瓶劲:磁盘IO性能低下
扩展瓶颈:数据关系复杂,扩展性差,不便于大规则集群
解决思路:
1、 降低磁盘IO次数,越低越好 --- 内存存储
2、去除数据间关系,越简单越好 --
Nosql
NoSQL:即Not-OnlySQL(泛指非关系型的数据库),作为关系型的数据库的补充
作用:应对基于海量用户和海量数据前提下的数据处理问题
特征:
可扩容,可伸缩
大数据量下的高性能;
灵活的数据模型
高可用
常见的Nosql数据库
Redis
memcache
HBase
MongoDB
解决方案(电商场景)
1、商品基本信息
名称
价格
厂商 存在MySQL
商品附加信息
描述
详情
评论 MongoDB
3、图片信息 分布式文件系统
4、搜索关键字 ES、Lucene solr
5、热点信息
高频、波段性
课程计划:
Redis 基础
Redis 入门
数据类型
通用命令
jedis
Redis 高级
持久化
redis.conf
事务
集群
Redis 应用
企业级解决方案