A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pangyu 初级黑马   /  2018-12-20 12:29  /  830 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.函数式接口
lambda表达式
函数式接口 有且只有一个抽象方法
适用于函数式编程的接口
只有确保只有一个抽象方法 才能顺利推导

lambda表达式是内部类的语法糖

定义方法 定义接口interface 其中定义一个抽象方法

使用注解 @functionalInterface
只能存在一个抽象方法
编译失败的话 可能存在一个以上方法
或者一个没有
0
自定义方法只能存在一个
然而 在objext中存在的类 则可以直接使用

函数式接口使用方法


日志问题
意义??

lambda表达式 其实就是提升性能

函数式接口参数案例


常用的函数式接口
supplier 被称为生产性接口
指定泛型为什么 那么get方法就会生产什么类型数据
  
消费型接口
Consumer
1.网络通信三要素
软件结构
cs结构 client server
由客户端和服务器构成的结构


bs结构 browser server
浏览器服务器结构

网络协议
TCP协议
TCP、IP协议 (本地连接属性中查看)

TCP和UDP区别
TCP更加安全 存在三次确认的机制 三次握手
传输控制协议
传输之前必须建立连接 再来传输数据提供可靠无差错数据传输
第一次 客户端服务器发送连接请求
二次 服务器给客户端回应 通知收到连接请求
三次 客户端再次发送确认信息 确认连接

UDP不存在  
UDP为无连接通信协议 即两端可以不验证是否存在
即可发送
不能保证完全完整
所以才传输重要数据时 不能使用UDP协议

ip地址

网络编程三要素
协议 IP地址 端口号

ipconfig
ping ip地址
127.0.1本机地址
localhost 本机地址

端口号
通过端口号可以判断发送到哪一个软件上

TCp通信概述

客户端和服务器之间进行通信时
其中包含IO对象
为字节流对象

服务器存在多个客户端时 为了分辨哪一个客户端发送请求
使用accept方法
Socket s1 = server.accept();
-------------------------------------
TCP通信 客户端代码实现
Socket类
参数 主机名称 ip地址    端口号
成员方法
getoutputstream 返回输出
getinput 返回输入

客户端代码实现
socket对象
output 对象
os。write写入
关闭

服务器端代码实现
serverScoket 参数放入端口号
使用ss.accept方法 接受请求 返回socket类型(⊙o⊙)…555445
==========================

文件上传案例

原理 使用客户端读取本地文件
把文件上传到服务器
服务器把上传文件保存到服务器硬盘

存在阻塞问题
阻塞???
调用一个 shutdownoutput即可
在while循环下0.
--------------------------

优化

服务器增加线程

自定义文件命名规则 防止同名文件覆盖
String filename=

让服务器一直处于监听状态
死循环accept方法

使用多线程提高程序运行效率

newThread(new Runnable)

{重新run方法
放入上传方法

}。start

由于重新了run方法 但父类没有抛出异常
所以 这里只能使用trycatch进行使用



¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
浏览器和服务器的连接

复制web进入项目
创建bs服务器
服务器需要回写文件 即一个html页面


ip为互联网协议地址 每个计算机只有一个ip
端口用来为每个进程进行标识

udp协议不能保证数据完整 不论对方是否连接 都会进行传送


tcp协议的三次握手
第一次 客户端发送请求给服务器
第二次 服务器回执信息 收到请求
第三次 客户端确认连接

1.IO流问题
缓冲流 读写文件效率更高
转换流 可以读写各种编码格式文件
序列化流 可以把对象写进文件
打印流 sout
2.字节输入流
  字符输出流
  
  原读取方式 效率低下
  字节缓冲输入流
  BufferedInputStream(new FileInputStream)
  
  建立缓冲区
  
  1.文件IO流
数据流向
硬盘旋转 通过磁头进行读取 永久存储
内存 临时存储 数据会关机清空

一个字符为两个字节
一个字节为八个二进制位7

字节输出流
FileOutStream
字节输入流
FileOutStream

java 程序——jvm——oS擦操作系统——调用写数据的方法
——数据写入到文件中
字节流 如果想输入字符串
则需要加上。getBytes 转为字节数组
   

utf8中 三个字节为一个中文
字符流 与字节流的区别
字符流是先写入到内存中 在转成字节写入
字节流直接写入
文件.

Io异常处理逻辑

必须使用try catch finally 进行处理
但是 使用finally中进行close时候 较为复杂

可以在try后加新的() 括号中放入 新建流对象的式子
在作用域结束后 自动释放 不需要close

关闭必须放进close
有这个资源才需要关闭
所以需要判断这个资源非空

HashTable 线程安全 效率低下
properties 子类 属性集合
唯一一个 读写数据的集合

load 输入流
store 输出流
可以把集合中的临时数据 持久化写入硬盘
使用load 可以从硬盘中进行读取使用


为双列集合 键值默认为字符串

其中包含 setproperty
以及 getproperty

通过 stringPropertynames 方法 获取所有的key

然后利用遍历输出
prop.getproperty(key)进行操作
.、
1.字节流/字符流

数据流向内存则定义为输入流
流出内存则为输出流

java中的io操作主要指io包下的操作
输入可以叫做读取数据、输出为写出数据

2.根据数据流向可以分为 输入流
                                                输出流
        根据数据类型分为 字节流/字符流

        硬盘到内存为输入
        内存到硬盘位输出
       
3.字节输入流 InputStream
        字节输出流 OutputStream
       
        字符流 字符输入流 reader
        字符输出流 Writer
       
       
4.无论什么样数据 底层传输都为二进制数据

5.写出字节流
可以写出 file型以及字节型
       
写出字节
写出字节数组

6.换行输入符
\r \n
return nextline
回到开头 换行
转换成字节数组输入 实现换行

7.new对象 文件名后 true为 保存数据
                                        false为更新数据
       
       
8.读取 FileInputStream

read每次读取一个字节 返回一个字节


9.若不进行关闭
输入数据都存储在缓冲区 没有写入文件

但关闭的同时 无法继续再使用流

所以需要使用flush 刷新缓冲区

flush只是相当于暂时输出
仍然需要close进行关闭

10.


       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       








































  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  





















































0 个回复

您需要登录后才可以回帖 登录 | 加入黑马