黑马程序员技术交流社区
标题: [石家庄校区]课上笔记 [打印本页]
作者: 笑也要笑疯狂 时间: 2018-4-23 15:08
标题: [石家庄校区]课上笔记
本帖最后由 小石姐姐 于 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; <:< >:> ":"
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |