3590-孙同学-Java学科 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

抽象类,不能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 应用

       企业级解决方案

[展开全文]

File类

java.IO.File类主要描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息

只能获取特征信息,对文件本身的信息不能获取

IO流,才能获取文件本身的信息

先判断文件是否存在,如果存在获取名称

[展开全文]

历史遗留问题

方法重写的时候,

1、

2、访问权限不能变小,可以相同或是变大

3、不能抛出更多的异常

 

该课程必要的时候,要重新温习

[展开全文]

异常的避免

异常的捕获

捕获完了之后,仍然处理不了这个异常

 

异常的抛出:好比感冒抛出去,交给医院的医生处理,为异常的抛出

throws FileNotFoundException

抛出

[展开全文]

finally,无论有没有异常,都需要执行的代码

try,catch对于异常的捕获,把异常的发生甩到了运行阶段

注意事项:

a.当需要编写多个catch分支时,切记小类型应该放在大类型的前面;

b.懒人的写法:

catch(Exception e){}

c.finally 通常用于进行善后处理,如:关闭已经打开的文件等。

 

 

 

 

 

[展开全文]

异常的发生可以避免,用if语句

如果避免不了异常,需要对异常进行捕获

[展开全文]

异常的就是一种不正常的情况

在编程的过程中,要避免异常的发生

 

在以后的开发中尽量使用if条件来判断来避免异常的发生

但是过多的if条件判断会导致程序的代码加长,臃肿、可读性差

编程中的异常情况

 

[展开全文]

RuntimeException 运行时异常,也叫做非检测性异常

IOException 和其它异常---其它异常,也叫做检测性异常,所谓检测性异常就是在编译阶段能被编译器检测出来的异常

当程序执行过程中发生异常但又没有手动处理时,则由java虚拟机采用默认方式处理异常,而默认处理方式就是:打印异常的名称、异常发生的原因、异常发生的位置以及终止程序

 

一定要背会的几个异常:

ArithmeticException ---算术异常

ArrayIndexOutOfBoundsException类---数组下标越界异常

NullPointerException ---空指针异常

ClassCastException---类型转换异常

NumberFormatException---数字格式异常

 

在编译阶段,就是能检测出的异常,叫做检测性异常

注意事项:当程序执行过程中发生异常但又没有手动处理时,则收java虚拟机采用默认方式处理异常,而默认处理方式就是:打印异常的名称,异常发生的原因,异常发生的位置以及终止程序

[展开全文]

异常机制

异常就是不正常的含义,在java语言中主要指程序执行中发生的不正常情况

java.lang.Throwable 类是java语言中错误Error和异常

其中Error类主要用于描述java虚拟机无法解决的严重错误,通常无法编码解决,如:jVM挂掉了等。

其中Exception类主要用于描述因编程错误或偶然外在因素导致的轻微错误,通常可以编码解决,如:0作为除数等;

 

异常,就是“不正常”的含义,在java语言中主要指程序执行中发生的不正常情况

 

java.lang.Throable类是Java语中错误Error和异常的超类

class Error

class Exception

其中Error类主要用于描述java虚拟机无法解 决的严重错误,通常无法编码解决,如:jvm挂掉了等

其中Exception类主要用于描述因编程或偶然外在因素导致的轻微错误,通常可以编码解决,如:0作为除数等

[展开全文]

基于TCP协议模型的框架实现

 

[展开全文]

基于TCP协议的编程模型

如何理解TCP协议的编程模型

服务器:Server

1、准备一个大插排

2、坐等客户上门

3、不断地充电

4、下班回家了

客户端:Client

1、取下充电器

2、不断地充电

3、取下充电器交钱走人

在大插排处,保持空闲状态,能够诱惹更多的用户

 

在C/S模式下客户向服务器发出服务请求,服务器接收请求后提供服务

例如:在一个酒店中,顾客找报务员点菜,服务员把点菜单通知厨师,厨师按点菜单做好菜后让服务员端给客户,这就是一种C/S工作方式。

如果把酒店看作一个系统,服务员就是客户端,厨师就是服务器。这种系统分工和协同工作的方式就是C/S的工作方式

客户端部分:为每个用户所专有的、负责执行前台功能

服务器部分:由多个用户共享的信息与功能,招待后台服务

 

 

 

 

 

 

[展开全文]

IP地址:绝大多数路由器的登录地址,主要配置用户名和密码以及mac过滤

 

IP地址是互联网中的唯一地址标识,本质上是32位二进制组成的整数,叫做IPv4,当然也有128位二进制组成的整数,叫做IPv6,16个字节。

目前主流的,还是IPv4

日常生活中采用点分十进制表示法来进行IP地址的描述,将每个字节的二进制转化为一个十进制整数,不同整数之间采用小数点隔开

点分十进制

特殊的地址:

本地回环地址 hostAddress :127.0.0.1 代表本机

主机名(hostName) :localhost

IP地址:可以定位到具体的某一台设备

端口号:可以定位到该设备中具体某一个进程

端口号本质上是16位二进制组成的整数,表示范围是:0~65535,其中0~1024之间的端口号通常被系统占用,建议编程从1025开始使用

特殊的端口:

HTTP:80

FTP:21

Oracle:1521

MySQL:3306

Tomcat :8080

网络编程需要提供:IP地址+端口号,组合在一起叫做网络套接字:Socket 

网络套接字:Socket

 

 

[展开全文]

相关的协议:

以前写的代码与本地计算机使用。网络编程,不仅在当前计算机的内部通信,与外部计算机通信

 

就像:与自己聊天,什么语言都无所谓

与外国人聊,就需要双方都听得懂的语言

 

协议;让计算机之间进行统一通信的规则;

 

什么叫协议:计算机在网络中实现通信就必须有一些约定或者规则,这种约定和规则就叫做通信协议

通信协议可以对速率、传输代码、代码结构、传输控制步骤、出错控制等制定统一的标准。

 

TCP协议:是一种面向连接的协议,类似于打电话

1、建立连接--->进行通信--->断开连接

2、在传输前采用“三次握手”方式

3、在通信的整个过程中全程保持连接、形成数据传输通道

4、保证了数据传输的可靠性和有序性

5、是一种全双工的字节流通信方式、可以进行大数据量的传输

6、传输完毕后需要释放已建立连接,发送数据的效率比较低

全双工,可以一边说一边听。

 

UDP协议:

用户数据报协议,是一种非面向连接的协议,类拟于写信

1、在通信的整个过程中不需要保持连接,其实是不需要建立连接

2、不保证数据传输的可靠性和有序性

3、是一种全双工的数据报通信方式,每个数据报的大小限制在64k内

4、发送数据完毕后无需释放资源、开销小,发送数据的效率比较高,速度快。

 

一个打电话,一个写信的之间的区别

1、TCP保证数据传输的可靠、有序、发送效率低

2、UDP发送的效率比较高

丢数据,能忍,用的UDP。

保证数据的绝对安全。

医疗方面的,军事方面的,用TCP

连接的时候:三次握手

断开的时候:四次挥手

 

 

[展开全文]

网络编程:基于物联网的通信编程

java写一个代码与其它的计算机通信

网络通讯软件

OSI Open System Interconnect ,即开放式系统互联。

五层模型:应用层、传输层、网络层、数据链路层、物理层

传输层:TCP/UDP

网络层:TCP/IP

七层模型:应用层:应用层、表示层、会话层

 

相同的顺序,逐层的包装;

机反的顺序,逐层的拆包;

 

当发送数据时,需要对发送的内容按照上述七层模型进行层层加包后发送出去

当接收数据时,需要对接收的内容,按照上述七层模型相反的次序层层拆包并显示出来

java官方才j

 

 

[展开全文]

当程序结果可知:当两个线程同时对同一个账户进行取款时,导致最终的账户余额不合理

 

引发原因:线程一执行取款时还没有来得及将取款后的余额写入后台,线程二就已经开始取款

 

解决方案:让线程一执行完毕取款操作后,再让线程二执行即可,将线程的并发操作改为串行操作

 

线程同步:是改并行为串行么???

开发中,不提倡使用。

 

实现方式:

在java语言中使用synchronized关键字来实现同步/对象锁机制从而保证线程执行的原子性,具体方式如下:

原子性:线程执行的单位是最小单元,不能再划分了。

要么不执行,要不执行完,不能打断

 

一个文件中就一个类,类名与文件名相同

Public修饰的公共类必须只有一个,与文件名相同。

 

[展开全文]

线程同步机制:把原来多线程的并发操作改成现在的串行操作

 

当两个人对同一个帐户取款时,

[展开全文]