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

Java基础复习

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

Java基础复习

文章目录
  • java基础
    • 面向对象
      • 什么是面向对象
      • 封装
      • 继承
      • 多态
      • 抽象
      • final
      • Static
      • 访问控制符
      • 接口
      • 内部类
    • 集合
      • ArrayList
      • linkedList
      • HashMap
      • ConcurrentHashMap
      • linkedHashMap
  • 线程
    • 线程的创建
    • 线程的方法
    • 线程同步 synchronized
    • 生产者消费者模型
    • 等待和通知
    • 线程池
    • ThreadLocal
    • volatile
  • Mysql 数据库
    • 查询优化
    • 创建索引
    • 对查询进行分析
  • ps:以下后续更新
  • 前端
  • Mybatis
  • Springboot
  • Spring
  • Spring MVC
  • Spring Cloud Alibaba
  • Spring Cloud Netflix
  • Redis
  • Nginx
  • 消息服务
  • 分布式事务
  • DevOps - Docker + K8s

java基础 面向对象 什么是面向对象
1.封装、继承、多态
封装
1. 类
2. 对象(实例)
3. 引用
4. 构造方法
5. this
6. 方法重写
7. 隐藏
继承
代码复用、重用
父类中定义的通用代码,子类不用重复编写
创建子类实例
	1. 先创建父类实例,执行父类构造方法
	2. 在创建子类实例,执行子类构造方法
	3. 两个实例绑定,整体作为一个实例
调用成员
	1. 找到子类,再找父类
方法重写
	1. 从父类继承的方法,在子类中重新定义,重新编写
Super
	1. super()-	调用父类构造方法,默认调用无惨,也可以手动调用有参
	2. super.f()-	一般在方法重写时,调用父类中的同一个方法
多态
	1. 基本转换:向上转型、向下转型
	2. 作用:所有子类型都可以被当做一致的父类型处理
	3.  在某种类型需要特殊处理时,需要向下转回成它本身的类型再处理
	4.  instanceof
			1. 运行期类型识别
			2.  对真实类型及其父类型判断都返回true
抽象
	1. 半成品类,未完成的方法由子类实现
final
	1. 常量---不可变
	fina int a = 5;
			a = 6;	// 错
	final Student s = newStudent(5,"张三");
	s.setName("李四");	// 对
	s = new Student(); // 错
	s = null;	// 错
	2. 方法---不能重写
	3. 类---不能继承
			1. System
			2. String		
Static
	1.  静态属于类,不属于实例
	2.  静态不是面向对象的语法
	3.  静态初始化块
	public class A {
		Static{
			类加载时,只执行一次
		}
}
访问控制符
	1. private、[default]、protected、public、
接口
	1. 作用:程序结构设计工具,用来解耦合
内部类
	1.  非静态内部类
	2.  静态内部类
	3.  局部内部类
	4.  匿名内部类
集合 ArrayList
	1. 数组储存数据
	2.  默认初始长度10
	3.  1.5倍增长
	4.  new ArrayList(10000)
linkedList
	1.  双向链表
	2.  两端效率高
	3.  如果只在两端操作数据,使用linkedList
	4.  栈(Stack) -LIFO
			1. push()
			2.  pop()
	5. 队列(Queue)-FIFO
			1. offer()
			2. pick()
			3. pull()
HashMap
	1. 用Entry[]数组存放数据
	2. 数组初始长度默认16
	3. 运算过程
			1. 获得键的哈希值 Key.hashCoode()
			2. 用哈希值计算下标 i
			3. 新建Entry是咧封装键值对,放入下标 i 位置
					1. 如果空位置直接放入
					2. 如果有数据,一次使用equals() 比较键是否相等
							1. 找到相等的键,覆盖值
							2.  没有相等的键,用链表连在一起
			4. 加载因子、负载率0.75
					1.  新建翻倍容量的新数组
					2.  所有数据重新哈希,放入新数组
			5. Jdk1.8
					1. 链表长度到8,能成红黑树
					2. 树上的数据减少到6,转回成链表
ConcurrentHashMap
		1. 分段锁
linkedHashMap
		1. 放入HashMao的数据,再用双向链表连在一起
		2.  有序的HashMap
线程 线程的创建
		1. 继承 Thread
		2.  实现 Runnable
线程的方法
		1.  run()
		2.  start()
		3. Thread.sleep()
		4.  Thread.yield()
		5.  inerrupt()
		6.  join()
线程同步 synchronized
		1. synchronized(对象) {
			}
			 获取指定对象的锁
		2. synchronized void f() {
			}
			 获取当前实例的锁
		3. static synchronized void f() {
			}
			 获取"对象"的锁
生产者消费者模型
		1. 线程想的通信模式
		2. 生产者线程产生数据放入集合
		3. 消费者线程从集合获取数据
等待和通知
		1. 没有数据的情况下,消费者要暂停等待数据
		2. 生产者产生数据后,通知消费者取数据
		3. Object的方法
				1. wait()
				2. notify()
				3. notifyAll()
		4. 线程在集合上等待数据:list.wait()
		5.  线程在集合上发出通知:list.notifyAll
		6.  等待和通知方法必须在synchronized(list) 内才能调用
		7.  等待和通知的对象必须是加锁的对象
线程池
		1. ExecutorServuce---线程池
		2. Executors---辅助创建线程池的工具类
		3.  新建线程池:
				1. Executors.newFixedThreadPool(5)---最多只能创建5个线程
				2. Executors.newCachedThreadPool()---创建足够多的线程,是任务不必等待
				3. Executors.newSingleThreadExecutor()---只创建一个线程
		4. 把Runnable任务丢进线程池
				1. pool.execute(Runnable)
		5. 把Callable任务丢进线程池
				1. Callable ---   1.有返回值		2.可以抛异常
				2. pool.submit(Callable)
					可以使用异步的方式,获取一个线程的执行结果
	// Future 是取餐条
	Future f = pool.submit(Callable)
	// 继续执行其他运算
	// 知道需要计算结果是,用取餐条取餐
	Object result = future.get(); 
ThreadLocal
	1. 线程数据绑定
	2. 把线程当做一条流水线,上游在线程上放入数据,下游可以访问数据
	3.  方法
		1. set()
		2. get()
		3. remove()
volatile
	1. 可见性
			1. 多线程共享数据时,对频繁修改的数据要加volatile,防止数据不可见
	2. 禁止指令重排
			1. CPU会对线程指令顺序进行优化,提高运算效率
			2.  如果这种优化让线程产生错误的运算结果,可以禁用重拍
Mysql 数据库 查询优化
select * from a where title='abc' and describe='def'
创建索引
create index title_index on a(title)

create index title_describe_index on a(title,describe)
对查询进行分析
explain select * from a where title='abc'
1. 是否使用索引过滤
2.  扫描的数据量

分库分表(分件)工具MyCat
数据量过大时,必须分库分类,吧数据分散存放

ps:以下后续更新 前端 Mybatis Springboot Spring Spring MVC Spring Cloud Alibaba Spring Cloud Netflix Redis Nginx 消息服务 分布式事务 DevOps - Docker + K8s
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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