0725设计模式、多线程、Properties配置文件、xml文件处理

观察者、代理、工厂、单例

工厂:

简单工厂(工厂类、产品类,由工厂方法返回产品实例)
1、创建工厂类
2、创建生产方法
3、执行生产方法获得产品实例
抽象工厂
4、产品类加入接口(多个产品类)
5、工厂类加入接口(每个工厂生产不同产品)
6、创建一个总工厂类,根据名称选择工厂生产产品

建造者:( 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示)

Product Builder(产品建造方法)Director
对象由Builder创建
Builder对对象进行调整的方法(属性)
由Director内嵌Builder对象

单态单例:(只能创建唯一实例)

public class Singleton {
    private static Singleton sing;
    private Singleton() {
    }
    public static Singleton getInstance() {
        if (sing == null) {
            sing = new Singleton();
        }
        return sing;
    }
}

原型模式

通过克隆完成实例构建(克隆方法)

3种代理模式

1、java代理
2、JDK代理

stu t= new stu();
		myadd p= (myadd) Proxy.newProxyInstance(stu.class.getClassLoader(),
					stu.class.getInterfaces(), 
					new InvocationHandler() {
						
						@Override
						public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
							System.out.println("代理的额外内容");
							   Object returnValue = method.invoke(t, args);
							 return returnValue;
						}
					});
		p.add();

3、cglib代理

多线程

进程:程序运行资源(操作系统分配)
线程:自上向下的执行过程(main 主线程入口)
多线程:一个程序同时多个执行过程(垃圾回收也是一个线程)
线程同步(协同),线程异步(无业务交叉)
同步线程(排队等待处理,阻塞),异步线程(非阻塞)
thread类+runnable接口
Thread.sleep(500); 将当前进程休眠(毫秒)
Thread.interrupted();中断状态重置为非中断状态
Thread.yield(); 线程让步(其他线程的机会)
Thread.currentThread(); 获取当前线程

	Thread th = new Thread(new Runnable() {
	public void run() {
		//子线程入口
	}
});
th.start();//启动线程

 Thread th = new Thread(); 
 th.start(); 启动线程
 th.setDaemon(true);//设置为守护线程(非守护线程全部结束,将自动结束)
 th.getId() 线程唯一标识
 th.setPriority(12); 设置优先级
 State s = th.getState(); 获取状态
 th.join(); 线程礼让
 th.suspend(); 休眠(lock)
 th.resume(); 唤醒

timer类+TimeTask接口

Timer t = new Timer();
t.schedule(new TimeTask(){
	public void run(){
		System.out.println(111);}
		},2000,1000};

用法

new Thread(new Runnable() {
	public void run() {
		//子线程入口
}.start();

接口玩法:
1、接口实现类 接口使用为类实例对象 (自身类本身)
2、内部匿名类 接口使用为接口实例(重写方法)
3、接口变量定义 接口使用为变量
线程同步:
synchronized wait() notify()
**线程池:**容器,能放多个线程,给个处理状态(空闲、繁忙),不会停止,没给任务就悬挂着等待分配

Properties 配置文件处理(本质=map集合)

生成保存配置:
Properties p = new Properties();//key value只能字符串和数字(文本能识别的,日期也行)
p.put("d", "232");
p.store(new FileOutputStream("c://a.properties"), "人员信息");//保存文件
获取配置:
p.load(new FileInputStream("d://a.properties"));//读取文件
String v = p.getProperty("sex", "女");//获取值,如未配置,提供默认值
System.out.println(v);
中文支持:
p.load(new InputStreamReader(new FileInputStream("d://a.properties"),"utf-8"));

xml文件处理

Document doc =DocumentHelper.createDocument();
Element root=doc.addElement("aaaa");
//add()   节点,属性,备注,文本(接口  ctrl+t 实现类)
Element el1=new DefaultElement("bbbb");
el1.add(new DefaultAttribute("asd", "egg记得给人家"));
root.add(new DefaultText("dddddddddddddd"));
root.add(el1);
XMLWriter writer =new XMLWriter(new FileOutputStream("c:/a.xml"),OutputFormat.createPrettyPrint());
writer.write(doc);
writer.close();
读取:
SAXReader reader=new SAXReader();//创建读取文件内容对象
 document=reader.read("XMLtest.xml");//指定文件并读取

xml的三种java读写方法:
1、w3c.DOM的方式读取
2、以DOM4J的方式读取
3、以JDOM的方式读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值