栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础————————温故知新系列2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础————————温故知新系列2

目录

设计原则

迪米特法则( LOD)

合成复用原则

共同封闭原则

里氏替换原则

数据库

Mysql

JPA

线程

创建线程的方式

1.继承Thread

2.实现Runnable

3.通过Callable和FutureTask创建线程

4.通过线程池创建线程

线程状态

1.初始(NEW)

2.运行(RUNNABLE)

3.阻塞(BLOCKED)

4. 终止(TERMINATED)

守护线程

线程锁

悲观锁和乐观锁

模拟抢票案例

窗口抢票 


设计原则

迪米特法则( LOD)

迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,降低类之间的耦合(解耦)。

合成复用原则

尽量使用对象组合,而不是通过继承来达到复用的目的。

共同封闭原则

当因为某个原因需要修改应用程序里的代码时,把需要修改的范围限制在一个最小范围内的包里。

里氏替换原则

在父类出现的地方都可以由子类替换

。。。

数据库

Mysql

增删改查

INSERT INTO table_name ( field1, field2,...)
                       VALUES
                       ( value1, value2,...);
UPDATe table_name SET field_name=new-value1, field_name=new-value2 where ...
DELETE FROM table_name WHERe ...

 其他

DISTINCT、UNIOn、ORDER BY、GROUP BY、INNER JOIN、LEFT JOIN、LEFT JOIN、AVG()、COUNT()、SUM()、MAX()、MIN()、IS NOT NULL、curdate()、DATE_ADD(curdate(),INTERVAL -1 DAY) ......

JPA

2个关键时刻很好用的注解

@NotFound(action = NotFoundAction.IGNORE)//找不到外连接对应数据就忽视

@Transient//数据库没有对应字段,用于前后端数据传输

jpa相关文章

线程

创建线程的方式

1.继承Thread

优点:访问当前线程直接使用this即可,无需使用Thread.currentThread()方法

缺点:Java是不支持多继承

2.实现Runnable

优点:可以实现多个接口。

缺点:要访问当前线程必须使用Thread.currentThread()方法。

3.通过Callable和FutureTask创建线程

优点:有返回值、重写的Call方法可以抛出异常。

缺点:存取一些项慢。

4.通过线程池创建线程

优点:可以创建固定大小。

缺点:编程繁琐,不好理解。

线程状态

1.初始(NEW)

新创建还没有调用start()方法的线程对象。


2.运行(RUNNABLE)

        ①就绪(READY):线程对象创建后,有线程调用了该对象的start()方法。就绪(READY)的线程位于可运行线程池中,等待cpu调度。

        ②运行中(RUNNING):cpu调度就绪(READY)的线程,执行程序代码。


3.阻塞(BLOCKED)

等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

同步阻塞:线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;

其他阻塞:通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。


4. 终止(TERMINATED)

线程执行完了或者因异常退出了run()方法,该线程结束生命周期

守护线程

在Java中线程分为两中类型:用户线程 (User Thread)、守护线程 (Daemon Thread)。

一般来说,守护线程经常被用来执行一些后台任务,同时又希望在程序退出( JVM 退出)时,线程能够自动关闭,此时,守护线程是首选。

JVM 中的垃圾回收线程就是典型的守护线程

线程锁

悲观锁和乐观锁

 悲观锁:对于并发间操作产生的线程安全问题持悲观状态,悲观锁认为竞争总是会发生,只要对资源进行操作就会直接上了锁就操作资源了。

 乐观锁:这是一种思想,相比悲观锁,乐观锁认为数据一般情况下不会产生并发冲突,所以在数据提交更新时才会对数据进行检测。

模拟抢票案例
public class TicketThread extends Thread {

	// 总票数,多个线程共享
	private static int ticket = 10;

	// 重写run方法
	@Override
	public void run() {

		// 业务处理
		while (true) {
			// 对象锁
			synchronized (this) {
				// 判断一个条件,出去条件
				if (ticket <= 0) {
					break;
				}

				System.out.println("窗口:" + Thread.currentThread().getName()

						+ ", 剩余票数:" + ticket--);
			}
			// 方法执行太快,减速
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {

				e.printStackTrace();

			}

		}

	}

	// 3个窗口都买这一个票

	public static void main(String[] args) {

		// 目标

		Thread target = new TicketThread();

		for (int i = 0; i < 3; i++) {

			new Thread(target).start();

		}

	}
}

 

 

窗口抢票 
public class window {
	public static void main(String[] args) {

		My2 target = new My2();

		Thread first = new Thread(target, "1号窗口:");

		Thread second = new Thread(target, "2号窗口:");

		Thread third = new Thread(target, "3号窗口:");

		Thread fourth = new Thread(target, "4号窗口:");

		first.start();

		second.start();

		third.start();

		fourth.start();

	}

}

class My2 implements Runnable {

	int sum = 100;

	static ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);

	@Override

	public void run() {

		while (true) {

			// first second third t4都要开门,t有钥匙,进来了出去后,t2再开门干活再锁门

			// synchronized (this) {

			lock.writeLock().lock();

			// sum=1时 first second third t4都进来

			try {

				if (sum > 0) {

					try {

						// first second third t4都睡了
						Thread.sleep(100);

					} catch (InterruptedException e) {

						// TODO Auto-generated catch block

						e.printStackTrace();

					}

					System.out.println(Thread.currentThread().getName() + sum--);

				}

			} catch (Exception e) {
				// TODO Auto-generated catch block

				e.printStackTrace();

			} finally {
				// 防止死锁
				lock.writeLock().unlock();

			}

		}

	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号