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