Java入门基础
2023-10-27 22:38:58 0 举报
AI智能生成
Java入门基础
作者其他创作
大纲/内容
分布式文件存储中间件
FastDFS
HDFS(大数据)
接入层中间件
LVS
Nginx
数据库分库分表中间件
MyCat
分布式&高并发
概念
分布式
概念
是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多
在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式
两种实现
水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务;
垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。
高并发
概念
相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务,同时有上万人观看。
解决方式
高并发可以通过分布式技术去解决,将并发流量分不到不同的物理服务器上。但除此之外,还可以有很多其他优化手段:比如使用缓存系统,将所有的,静态内容放到CDN等;还可以使用多线程技术将一台服务器的服务能力最大化。
多线程
概念
多线程是指从软件或者硬件上实现多个线程并发执行的技术,它更多的是解决CPU调度多个进程的问题,从而让这些进程看上去是同时执行(实际是交替运行的)
实现方式
这几个概念中,多线程解决的问题是最明确的,手段也是比较单一的,基本上遇到的最大问题就是线程安全。在JAVA语言中,需要对JVM内存模型、指令重排等深入了解,才能写出一份高质量的多线程代码
分布式/高并发/多线程总结
分布式是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常广且难度非常大,有了这个基础,高并发、高吞吐等系统很容易构建
高并发是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程
多线程则聚焦于如何使用编程语言将CPU调度能力最大化
NIO框架Netty
Zookeeper
Dubbo
微服务
SpringBoot
SpringCloud
Dubbo
Docker容器
Java基础
JVM虚拟机
什么是JVM?
为什么要学习JVM?
1、程序调优
2、排查程序运行问题
3、掌握程序执行的根本和原理
4、规避写代码时的一些错误
5、应付面试
6、掌握了其他语言的通过机制
怎样有效的学习JVM?
1、JVM的组成
类加载器(ClassLoader)
运行时数据区(Runtime Data Area)
程序计数器(Program Counter Register)
Java虚拟机栈(Java Virtual Machine Stacks)
本地方法栈(Native Method Stack)
Java堆(Java Heap)
方法区(Methed Area)
执行引擎(Execution Engine)
本地库接口(Native Interface)
2、多种垃圾回收算法
3、多种垃圾收集器
4、JVM分析工具
5、JAVA类加载机制
6、JAVA常用优化配置
Java基础
1、重载和重写的区别
重载
重写
2、String/StringBuffer/StringBuilder区别
可变性
线程安全性
性能
三者总结
3、自动装箱与拆箱
装箱:将基本类型用它们对应的引用类型包装起来;
拆箱:将包装类型转换为基本数据类型;
4、==与equals
区别
特别说明
5、关于final关键字
总结
6、Object常用方法
11个方法
7、Java中的异常
Throwable
Error
Virtual MachineError
StackOverFlowError
OutOfMemoryError
AWTError
Exception
IOException
EOFException
FIleNotFoundException
RunTimeException
ClassNotFoundException
NullPointException
ArrayIndexOutOfBoundsException
异常处理
8、获得键盘输入
通过Scanner
通过BufferedReader
9、接口和抽象类的区别
区别
注意
Java集合
1、ArrayList与LinkedList的区别
是否保证线程安全?
底层的数据结构
插入和删除是否受元素位置影响
是否支持快速随机访问
内存空间占用
List遍历方式选择
2、ArrayList与Vector的区别
3、HashMap的底层实现
JDK1.8之前
JDK1.8之后
推荐阅读
4、HashMap和HashTable的区别
线程是否安全
效率
对null key和null value的支持
初始容量和每次扩充容量大小
底层数据结构
HashMap中带有初始容量的构造函数
5、HashMap 的长度为什么是2的幂次方
6、HashSet 和 HashMap 区别
7、ConcurrentHashMap线程安全的具体实现方式/底层具体实现
JDK1.7
JDK1.8
8、集合框架底层数据结构总结
Collection
List
Set
Map
Java多线程
1、关于Synchronized关键字的5连击
说说对Synchronized关键字的了解
说说在项目中是如何使用Synchronized关键字的
运用在单例模式
讲一下 synchronized 关键字的底层原理
介绍 JDK1.6 之后的synchronized 关键字底层优化
谈谈 synchronized和ReenTrantLock 的区别
2、关于线程池的5连击
synchronized 关键字和 volatile 关键字的区别
为什么要用线程池?
实现Runnable接口和Callable接口的区别
执行execute()方法和submit()方法的区别
如何创建线程池
3、关于Atomic原子类的4连击
介绍一下Atomic 原子类
JUC 包中的原子类是哪4类?
基本类型
数组类型
引用类型
对象的属性修改类型
讲讲 AtomicInteger 的使用
AtomicInteger 类常用方法
AtomicInteger 类的使用示例
简单介绍一下 AtomicInteger 类的原理
4、AQS
AQS 介绍
AQS 原理分析
AQS 原理概览
AQS 对资源的共享方式
AQS底层使用了模板方法模式
AQS总结
Java设计模式
计算机网络
1、TCP、UDP协议
2、浏览器输入URL,显示页面的过程
3、各种协议与http协议之间的关系
4、http长连接、短连接
5、TCP3次握手和4次挥手
常用数据库
Oracle
Mysql
大表的性能优化(Mysql)
缓存中间件Redis
1、Redis简介
2、为什么要用Redis,要用缓存
3、为什么要用 redis 而不用 map/guava 做缓存
4、Redis和Memcached的区别
5、Redis常见数据结构及使用场景
1、String
2、List
3、Set
4、Hash
5、Sorted Set
6、Redis设置过期时间
7、Redis内存淘汰机制
8、Redis持久化机制
9、Redis事务
10、缓存雪崩和缓存穿透问题解决
缓存雪崩
缓存穿透
11、如何解决 Redis 的并发竞争 Key 问题
12、如何保证缓存与数据库双写时的数据一致性
消息中间件
概念
什么是消息队列
为什么要使用消息队列
使用消息队列带来的问题
两种消息协议JMS&AMQP
JMS
JMS简介
JMS两种消息模型
JMS五种不同的消息正文格式
AMQP
JMS与AMQP比较
常见消息中间件
kafka(大数据)
RocketMQ(淘宝)
ActiveMQ(传统)
搜索中间件
Elasticsearch(基于lucene实现)
0 条评论
下一页