本帖最后由 小石姐姐 于 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()方法)
反射:获取/运行任意一个类的构造方法,属性和方法. 获取类字节码: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; <:< >:> ":"
|