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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guhaowei 初级黑马   /  2018-4-23 16:00  /  1012 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-4-26 13:58 编辑

学习内容总结



File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
构造方法:
        Fill(String paehname):
        File(String parent ,String child):
        File(File parent,String child):

File的常用功能:
创建功能
                boolean createNewFile():指定路径不存在该文件时时创建文件,返回true,否则返回false
                boolean mkdir():当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false  
                boolean mkdirs():当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false
                boolean delete():删除文件或者删除单级文件夹


删除功能
                boolean delete()
判断功能:
                boolean exists():判断指定路径的文件或文件夹是否存在
                boolean isAbsolute():判断当前路路径是否是绝对路径
                boolean isDirectory():判断当前的目录是否存在
                boolean isFile():判断当前路径是否是一个文件
                boolean isHidden():判断当前路径是否是隐藏文件
File类的获取功能和修改名字功能
                 File getAbsoluteFile():获取文件的绝对路径,返回File对象
                 String getAbsolutePath():获取文件的绝对路径,返回路径的字符串
                 String getParent():获取当前路径的父级路径,以字符串形式返回该父级路径
                 File getParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径
                 String getName():获取文件或文件夹的名称
                 String getPath():获取File对象中封装的路径
                 long lastModified():以毫秒值返回最后修改时间
                 long length():返回文件的字节数
                 boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径
·                注意:修改的文件路径不能存在,如果存在则修改失败

File类的其它获取功能
                 String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
                  注意:只有指向文件夹的File对象才可以调用该方法
                  File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
                        static File[] listRoots():获取计算机中所有的盘符        
删除指定的目录(包含子目录)
注意:如果要删除一个目录,则需删除这个目录下的所有文件的子文件和子目录

IO流的分类
** ****************************************************************************************        
                        流向
                                                        输入流        读取数据        FileReader        Reader
                                                        
                                                        输出流        写出数据        FileWriter        Writer
*******************************************************************************************                                                
                         数据类型
                 
                                        字节流        
                                                         字节输入流   读取数据        InputStream
                                                        
                                                         字节输出流   写出数据        OutputStream
                                       
                                        字符流
                                                         字符输入流  读取数据        Reader
                                                         
                                                         字符输出流  写出数据        Writer

*********************************************************************************************
标准输入输出流:
public static final InputStream in:字节输入流,用来读取键盘录入的数据
public static final PrintStream out:字节输出流,将数据输出到命令行

utputStreamWriter:将字节输出流转换为字符输出流        
由于标准输出流是一个字节输出流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组
我们要想通过标准输出流输出字符串,把标准输出流转换成一种字符输出流即可,OutputStreamWriter转换流()


字符打印流:PrintWriter
打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操作

打印流:
                  PrintStream
                  PrintWriter
                          可以自动换行,println()
                          不能输出字节,但是可以输出其他任意类型
                          通过某些配置,可以实现自动刷新(只有在调用 println、printf 或 format才有用)
                          也是包装流,不具备写出功能
                          可以把字节输出流转换成字符输出流
注意:只能输出不能输入        


注意:创建FileWriter对象时boolean参数是是否追加,
          创建打印流对象的boolean类型参数是是否自动刷新        
ObjectInputStream 称为 反序列化流,利用输入流从文件中读取对象
ObjectOutputStream 称为 序列化流,利用输出流向文件中写入对象
注意:        使用对象输出流写出对象,只能使用对象输入流来读取对象        只能将支持 java.io.Serializable 接口的对象写入流中  
Serializable:序列号,是一个标识接口,只起标识作用,没有方法

*************************************************************************************************************************
进程:
        * Process, 一个应用程序在内存中的执行区域

线程:进程中的一个执行控制单元,执行路径

单线程:安全性高,但是效率低
多线程:安全性低,效率高


Thread (线程)   实现runnable接口
创建线程有两种方法,一种是将类声明为Thead的子类。重写Thead的run方法接下来可以分配和启动该类的实例

String getname 返回该线程的名称
        void SetName(String name) 修改线程名称使之与参数name名称相同
        CPU 执行程序的随机性

创建线程的另一种方法是声明实现Runnable接口的类。该类然后实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数
       Thread(Runnable target)

       Static Thread currentThread()
synchronized:同步(锁),可以修饰代码块和方法,被修饰代码块和方法一旦被某个线程访问,则直接锁定,其他的线程将无法访问
同步代码块:
                synchronized(锁对象){        }        
                注意:锁对象需要被所有的线程锁共享

同步:安全性高,效率低
非同步:效率高,但是安全性低

*************************************************************************************************************************************
反射:
字节码文件获取的三种方式:
        1.        对象名.getCalss();  次方法来自于Object  对象已经存在的情况下, 可以使用这种方式
        2.        类名.class         类名.class这是一个静态的属性, 只要知道类名, 就可以获取
        3.        Class.forName(“com.itheima_01.Student”);        通过Class类中的静态方法, 指定字符串, 该字符串是类的全类名(包名+类名)
                此处将会抛出异常都系 ClassNotFoundException 防止传入错误的类名


直接通过Class类中的newInstance()和获取getConstructor()有什么区别?
newInstance()方法, 只能通过空参的构造方法创建对象
getConstructor(Class<T>… parameterTypes)方法, 方法接受一个可变参数, 可以根据传入的类型来匹配对应的构造方法


方法总结
         通过反射获取成员变量并使用  
                         Field[] getFields() --> 返回该类所有(公共)的字段
                         Field getField(String name) --> 返回指定名称字段
                         Field[] getDeclaredFields()--> 暴力反射获取所有字段(包括私有)
                         Field getDeclaredField(String name) --> 暴力反射获取指定名称字段

                          void setAccessible(boolean flag) --> 让jvm不检查权限
Field:
         Object get(Object obj) --> Field对象调用, 返回传入对象的具体字段
         void set(Object obj, Object value) -->  Field对象调用
        参数1: 要修改的对象
        参数2: 将此对象的字段修改为什么值.

BeanUtils的常用方法
        static void    setProperty(Object bean, String name, Object value)  用来给对象中的属性赋值
        static String getProperty(Object bean, String name) 用来获取对象中的属性
        static void    populate(Object bean, Map properties) 用来给对象中的属性赋值

**********************************************************************************************************************
网络通信三要素
        传输协议`: 通信的规则  
        IP地址`: 是一个二进制数字 www.baidu.com  -> DNS -> 10.123.34.1
        端口号`: 标识使用网络通信的进程的逻辑地址, 用于定位一个主机上的具体服务
               
常见协议
           TCP: Transmission Control Protocol, 传输控制协议Transmission Control Protocol
           UDP: User Datagram Protocol, 用户数据报协议User Datagram Protocol





UDP和TCP区别
UDP: USER DATAGRAM PROTOCOL, 用户数据报协议.
       1、无连接的不可靠协议
       2、数据传输大小限制为64K(一个包)
       3、不需要建立连接即可传输
       4、数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据可能有丢包的情况

适用场景:适合实时性要求强的场合, 比如网络电话等环境, 这种协议延迟很小


TCP: TRANSMISSION CONTROL PROTOCOL, 传输控制协议
         1、 需要建立连接的可靠协议
         2、没有数据传输大小的限制
         3、在传输前需要先建立连接(三次握手)
         4、它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大

适用场景:这种方式适合准确性要求强的场合, 比如金融系统, 视频点播, 用户可以等待数据传输但是不能忍受错误


Java.net.InetAddress`类: 用于表示IP地址对象 (InetAddress的实例包含 IP 地址,还可能包含相应的主机名)
静态方法
    static InetAddress getLocalHost()`: 获取本机的InetAddress对象
    static InetAddress getByName(String host)`: 根据**主机名**或**IP的字符串**获取主机的InetAddress对象
    static InetAddress getLoopbackAddress()`: 获取回环地址的InetAddress对象. 即`127.0.0.1`或` localhost`
    static InetAddress getByAddress(byte[] addr)`: 根据IP获取InetAddress对象

成员方法
    String getHostAddress()`: 返回主机的IP地址
    String getHostName()`: 返回主机名


UDP协议发送数据
java.net.DatagramSocket`类: 基于UDP协议的Socket
构造方法
          DatagramSocket()`: 创建DatagramSocket对象, 随机分配端口号
          DatagramSocket(int port)`: 创建DatagramSocket对象, 指定端口号

成员方法
          void send(DatagramPacket p)`: 发送数据包
          void receive(DatagramPacket p)`: 接收数据, 数据保存在DatagramPacket对象中
          void close()`: 关闭通信, 释放资源


java.net.DatagramPacket`类: UDP数据包
构造方法
        DatagramPacket(byte[] msg, int msgLength, InetAddress host, int port)`: 创建数据包对象, 指定数据, 目标主机对象, 端口
        DatagramPacket(byte[] buf, int length)`: 创建数据包对象, 接收数据为length的数据, 存入byte数组中

成员方法
        InetAddress getAddress()`: 获取数据包发送方的InetAddress对象        
        byte[] getData()`: 获取包中的数据, 以byte数组形式
        int getLength()`: 获取数据包中数据的长度, 即byte数组的长度
        int getPort()`: 获取发送方端口号


UDP协议接收数据
UDP不区分发送端和客户端**, 所以都使用DatagramSocket即可
端口绑定异常:
        java.net.BindException: Address already in use: Cannot bind`: 端口已经被占用
       如何解决: 要更改为其他端口号, 或将占用端口的应用关闭


TCP协议发送数据
java.net.Socket`类: 基于TCP协议的Socket, 作为客户端
        构造方法
                Socket(InetAddress add, int port)`: 创建TCP客户端对象
        成员方法
                OutputStream getOutputStream()`: 获取输出流对象, **用于发送数据**
                InputStream getInputStream()`: 获取输入流, **用于接收数据**
                void close()`: 释放资源


TCP协议接收数据
java.net.ServerSocket`: TCP服务端
        构造方法
                ServerSocket(int port)`: 创建一个TCP服务端, 并监听指定端口
        成员方法
                Socket accept()`: 监听数据, 会阻塞. 收到数据后返回Socket对象
                void close()`: 关闭Socket

*********************************************************************************************************************
HTML:Hyper Text Markup Language  --- 超文本标记语言.
标记语言:指的是通过一组标签的形式描述事物的一门语言.
超文本:比普通的文本更强大.


HTML的结构标签
跟标签:<html></html>
    <head>  -- html的头标签
    <body>  -- html的体标签


【HTML的字体标签】
        <font>标签:HTML中的字体标签.


<font>标签的属性:
     <标签 属性名=”属性值” 属性名=”属性值”></标签>
    属性:
        color属性:字体颜色
            英文单词设置:black,red,green,blue...
            使用16进制数设置:#FFFFFF , #FFF(了解)
            size属性:字体的大小
            face属性:字体


HTML的排版标签
标题标签:h标签<h1>...<h6>
                <!-- HTML的标题标签 -->
                <h1>一级标题</h1>
                <h2>二级标题</h2>
                <h3>三级标题</h3>

段落标签:p标签 <p></p>
字体加粗标签:b标签
字体斜体标签:i标签
字体下划线:u标签
居中标签:<center>标签

HTML的图片标签
图片标签:<img>
属性:
        src        :图片的来源.
        width:图片的宽度.
        height:图片的高度.
        alt:图片找不到显示的内容



HTML的列表标签
        有序列表
<ol>
    <li></li>
</ol>
        无序列表
<ul>
    <li></li>
</ul>



HTML的超链接标签:<a>
属性:
      href:链接的路径
      target:打开的方式
      _self        :在自身页面打开
       _blank:新打开一个窗口


无序列表的属性:
type属性
      disc实心点.
      circle:空心圆
      square:方块.

有序列表的属性:
type属性:
         1:数字类型
         a:英文类型
          i:罗马字符
    start属性:从哪开始

超链接的target属性:
     _self
     _blank
     _parent


【HTML的表格标签】
<table>
<tr>
    <td></td>
    <td></td>
</tr>
</table>

属性:
    width        :表格宽度
    height        :表格高度
    border        :边框
    align        :表格水平位置:
        left
        center
        right

<td>的属性:
    colspan=”列数”
    rowspan=”行数”


HTML的表单标签(*****)
HTML的表单标签:<form>
常用属性:
          action属性:提交的路径.默认提交到当前页面
           method属性:请求的方式.GET和POST.默认是GET.
GET方式和POST方式的区别?
                    GET:数据会显示到地址栏中.GET方式提交是有大小的限制.
                   POST:数据不会显示到地址栏中.POST方式提交的是没有大小限制.
HTML中表单元素:
<input type=”text”>:文本框.
常用属性:
        name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
        value:文本框的默认值.
        size:文本框的长度.
        maxlength:文本框输入的最大长度.
        readonly:只读文本框.
<input type=”password”>:密码框.常用属性:
        name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
        value:密码框的默认值.
        size:密码框的长度.
        maxlength:密码框输入的最大长度.


<input type=”radio”>:单选按钮.
    常用的属性:
         name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
        value:单选按钮的默认值.
        checked:单选按钮默认被选中.

<input type=”checkbox”>        :复选按钮.
常用的属性:
        name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
        value:单选按钮的默认值.
        checked:单选按钮默认被选中.

<input type=”button”>:普通按钮.没有任何功能的按钮.
<input type=”submit”>:提交按钮.
<input type=”reset”>:重置按钮.
<input type=”file”>:文件上传的表单项.
<input type=”hidden”>:隐藏字段.
<input type=”image”>:图片按钮

<select>:下拉列表.
<textarea>:文本域.

<input type=”email”>
<input type=”date”>
<input type=”number”>
<input type=”color”>



HTML的框架标签
框架标签:<frameset >,标签与body标签是冲突,有frameset就可以没有body.
属性:
    rows
    cols
使用<frame>标签,frame代表切分的每个部分.


特殊字符的标签:
空格        :                 
<        :<
>        :>












0 个回复

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