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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-24 17:12 编辑

线程
进程:当前正在运行的程序,一个应用程序在内存中的执行区域.
线程:线程依赖于进程,进程中的一个执行控制单元,执行路径
一个进程可以有一个线程,也可以有多个线程
单线程:安全性高,效率低
多线程:安全性低,效率高
同步:一步一步的执行,不是同时.单线程
异步:同时执行多步.多线程
创建新线程的方式:
​        1.将类声明为Thread的子类.子类可直接调用start()方法.
​        2.将类实现Runnable的接口.必须将该类当做参数传入Thread.
​                Thread t=new Thread(实现Runnable接口的子类);t.start();
​                实现Runnable接口的类可以看做是Thread的一个任务.
Thread类:
​        getName()返回线程名称
​        setName(String name) 修改线程名称.
​        静态方法:Thread.currentThread()
​                        Thread.sleep()
同步代码块:
​        synchronized(锁对象){
​                ............................
​        }
同步方法:
​        非静态同步方法的锁对象是this.
​        静态的同步方法的锁对象是类的字节码对象.
线程生命周期:创建,就绪,运行,阻塞,销毁
wait()方法,线程等待,并释放锁,只有被notify()/notifyAll()唤醒.
网络编程

传输协议三要素:传输协议,IP地址,端口号
TCP:传输控制协议
UDP:用户数据报协议
端口号:(0~65535),查看端口号netstat  -an
​        80:HTTP服务
​        443:HTTPS服务,安全加密HTTP
​        21:FTP服务,文件传输
​        22:SSH服务,安全加密的远程登录
​        23:Telnet服务,远程登录
InetAddress类:表示IP地址或主机名.
​        getLocalHost()静态方法,获取本地(主机名/IP地址)
​        getByName(String host)返回 IP地址对象.静态方法.
​        getLoopbackAddress()静态方法
​        getHostName()获取InetAddress对象的主机名
​        getHostAddress()获取InetAddress对象的IP地址
UDP协议发送数据:
​        DatagramSocket()        DatagramSocket(int port)
​        send(DatagramPacket p)发        receive(DatagramPacket p)接
​        DatagramPacket(byte[] msg,int msgLength,InetAddress host, int port)发
​        DatagramPacket(byte[] msg,int msgLength)接
​        getAddress()        getData()        getLength()        getPort()
​        1.创建对象DatagramSocket
​        2.创建数据并打包DatagramPacket
​        3.发送数据send
​        4.释放资源close
UDP协议接收数据:
​        1.创建对象DatagramSocket(int port)
​        2.接收数据DatagramPacket(byte[] msg,int msgLength)        receive
​        3.解析数据getAddress()        getData()        getLength()        getPort()
​        4.输出数据
​        5.释放资源close
TCP协议发送数据:
​        Socket(InetAddress add,int port)构造方法(接收方的地址和端口号)
​        getOutputStream用于发送数据
​        getInputStream用于接收数据
​        1.创建发送端Socket对象(创建连接)Socket(InetAddress add,int port)
​        2.获取输出流对象getOutputStream
​        3.发送数据(输出流对象write(byte[] )方法)
​        4.释放资源close
TCP协议接收数据:
​        ServerSocket(int port)构造方法
​        accept()返回Socket对象,相当于拿到了客户端对象.
​        1.创建接收端Socket对象 ServerSocket(int port)
​        2.监听(阻塞)accept
​        3.获取输入流对象getInputStream
​        4.获取数据(输入流read()方法)
​        5.释放资源close
反射


反射:获取/运行任意一个类的构造方法,属性和方法.
​        获取类字节码:1.类对象.getClass()
​                        2.类名.class;
​                        3.Class.forName(类全名);
获取构造方法:
​        getConstructors():获取public修饰的,返回Constructor类型数组
​        getDeclaredConstructors():获取所有权限的.
​        getConstructor(Class<?>...parameterTypes):获取有特定参数的构造方法.参数为:(参数类型.class)
​        getDeclaredConstructor(Class<?>...parameterTypes):
创建对象:newInstance():class.newInstance()只能是无参的构造方法创建对象.
Constructor类:
​        newInstance()
​        newInstance(Object...initargs):传入的参数类型必须与构造方法类型一致.
​        setAccessible(Boolean bool):为true时,暴力访问.屏蔽权限检查.
获取成员变量:
​        getFields():返回所有public修饰的成员变量
​        getDeclaredFields():返回所有权限的成员变量
​        getField(String fieldName):获取指定名字的成员变量
​        getDeclaredField(String fieldName)
Field类:
​        get(Object obj):获取指定对象的的属性值
​        set(Object obj,Object value):修改指定对象的属性值
​        setAccessible(Boolean bool)
获取成员方法:
​        getMethods()
​        getDeclaredMethods()
​        getMethod(String name,Class<?>...parameterTypes)
​        getDeclaredMethod(String name,Class<?>...parameterTypes)
Method类:
​        Object invoke(Object obj,Object...args):调用指定对象的成员方法
​                没有参数的,返回的Object为null.
​        setAccessible(Boolean bool)
​        注意:getDeclaredMethod(String name,Class<?>...parameterTypes)与Object invoke(Object obj,Object...args)配合使用分为四种:
​//无参无返回值               
Method method = clazz.getMethod("sleep");               
method.invoke(stu);               
//有参无返回值               
Method method2 = clazz.getMethod("setAge", int.class);               
method2.invoke(stu,33);               
System.out.println(stu);               
//无参有返回值               
Method method3 = clazz.getMethod("getAge");               
Object object = method3.invoke(stu);               
System.out.println(object);               
//有参有返回值               
Method method4 = clazz.getMethod("eat", int.class);               
Object object2 = method4.invoke(stu, 22);               
System.out.println(object2);
setAccessable():修改没有权限的数据时必须设置.

JavaBean:用于封装数据
​        类使用公共进行修饰
​        提供私有修饰的成员变量
​        为成员变量提供公共getter和setter方法
​        提供公共无参的构造
​        实现序列号接口
BeanUtils:Apache commons提供的一个组件.
​        setProperty(Object bean,String name,Object value):给属性赋值
​        getProperty(Object bean,String name):取属性的值
​        populate(Object bean, Map properties):批量给属性赋值,Map的key是属性名,value是属性值.(每次给一个bean对象的属性赋值)
Html

HTML:超文本标记语言
扩展名:.html        .htm
结构标签:<html>        <head>        <body>
        <head>中有<meta charset="utf-8">,<title>
字体标签:<font color="颜色" size="大小" face="字体"></font>
标题标签:<h1>..由大到小..<h6>
段落:<p>        加粗:<b>        斜体:<i>        下划线:<u>        居中:<center>        删除线:<del>
分割线:<hr/>        预编译标签:<pre>  回车:<br/>
图片标签:<img src="路径" width="宽度" height="高度" alt="提示信息"/>
有序列表:<ol type="1 | a | A | i |I" start="起始位置" >               
                        <li></li>
                </ol>
无序列表:<ul type="disc | circle | square" start="起始位置">
                        <li></li>
                </ul>
超链接:<a href="链接地址" target="_self | _blank | _parent">
表格:<table width="" height="" border="" align="left | center | right">
                <thead>
                        <th></th>
                </thead>
                <tbody>
                        <tr>
                                <td colspan="查列数,横向合表格" rowspan="查行数,纵向合表格"></td>
                        </tr>
                </tbody>
        </table>
表单:<form action="提交地址" method="get | post">
                默认提交地址为本页面;
                get:不安全,数据大小受限
                post:安全,数据大小不受限
        </form>
表单元素:
        文本/密码:<input type="text | password" id="" name="" value="" size="" maxlength="" readonly="readonly" disabled="disabled"/>
        单选:<input type="radio" checked="checked"> 多个单选,名字唯一.</input>
        复选:<input type="checkbox" checked="checked">多个复选,名字唯一.</input>
        按钮:<input type="button | submit | reset | hidden | image图片按钮"/>                文件:<input type="file"/>
        下拉列表:<select>
                        <option></option>
                        </select>
        文本域:<textarea rows="行数" cols="列数">
        H5扩展标签:        <input type="email | date | number | color"/>
框架:<frameset rows="" cols="" >
                列数和行数可用多个百分比表示.
                <frame src="" noresize="noresize">边框固定,不可随意拉动</frame>
        </frameset>
特殊字符:
        空格:&nbsb;                <:<                >:>                ":"

0 个回复

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