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
Docker容器
微服务
什么是JVM?
1、程序调优
2、排查程序运行问题
3、掌握程序执行的根本和原理
4、规避写代码时的一些错误
5、应付面试
6、掌握了其他语言的通过机制
为什么要学习JVM?
类加载器(ClassLoader)
程序计数器(Program Counter Register)
Java虚拟机栈(Java Virtual Machine Stacks)
本地方法栈(Native Method Stack)
Java堆(Java Heap)
方法区(Methed Area)
运行时数据区(Runtime Data Area)
执行引擎(Execution Engine)
本地库接口(Native Interface)
1、JVM的组成
2、多种垃圾回收算法
3、多种垃圾收集器
4、JVM分析工具
5、JAVA类加载机制
6、JAVA常用优化配置
怎样有效的学习JVM?
JVM虚拟机
重载
重写
1、重载和重写的区别
可变性
线程安全性
性能
三者总结
2、String/StringBuffer/StringBuilder区别
装箱:将基本类型用它们对应的引用类型包装起来;
拆箱:将包装类型转换为基本数据类型;
3、自动装箱与拆箱
区别
特别说明
4、==与equals
总结
5、关于final关键字
11个方法
6、Object常用方法
StackOverFlowError
OutOfMemoryError
Virtual MachineError
AWTError
Error
EOFException
FIleNotFoundException
IOException
ClassNotFoundException
NullPointException
ArrayIndexOutOfBoundsException
RunTimeException
Exception
Throwable
异常处理
7、Java中的异常
通过Scanner
通过BufferedReader
8、获得键盘输入
注意
9、接口和抽象类的区别
Java基础
是否保证线程安全?
底层的数据结构
插入和删除是否受元素位置影响
是否支持快速随机访问
内存空间占用
List遍历方式选择
1、ArrayList与LinkedList的区别
2、ArrayList与Vector的区别
JDK1.8之前
JDK1.8之后
推荐阅读
3、HashMap的底层实现
线程是否安全
效率
对null key和null value的支持
初始容量和每次扩充容量大小
底层数据结构
HashMap中带有初始容量的构造函数
4、HashMap和HashTable的区别
5、HashMap 的长度为什么是2的幂次方
6、HashSet 和 HashMap 区别
JDK1.7
JDK1.8
7、ConcurrentHashMap线程安全的具体实现方式/底层具体实现
List
Set
Collection
Map
8、集合框架底层数据结构总结
Java集合
说说对Synchronized关键字的了解
运用在单例模式
说说在项目中是如何使用Synchronized关键字的
讲一下 synchronized 关键字的底层原理
介绍 JDK1.6 之后的synchronized 关键字底层优化
谈谈 synchronized和ReenTrantLock 的区别
1、关于Synchronized关键字的5连击
synchronized 关键字和 volatile 关键字的区别
为什么要用线程池?
实现Runnable接口和Callable接口的区别
执行execute()方法和submit()方法的区别
如何创建线程池
2、关于线程池的5连击
介绍一下Atomic 原子类
基本类型
数组类型
引用类型
对象的属性修改类型
JUC 包中的原子类是哪4类?
AtomicInteger 类常用方法
AtomicInteger 类的使用示例
讲讲 AtomicInteger 的使用
简单介绍一下 AtomicInteger 类的原理
3、关于Atomic原子类的4连击
AQS 介绍
AQS 原理概览
AQS 对资源的共享方式
AQS底层使用了模板方法模式
AQS 原理分析
AQS总结
4、AQS
Java多线程
Java设计模式
1、TCP、UDP协议
2、浏览器输入URL,显示页面的过程
3、各种协议与http协议之间的关系
4、http长连接、短连接
5、TCP3次握手和4次挥手
计算机网络
Oracle
大表的性能优化(Mysql)
Mysql
常用数据库
1、Redis简介
3、为什么要用 redis 而不用 map/guava 做缓存
4、Redis和Memcached的区别
1、String
2、List
3、Set
4、Hash
5、Sorted Set
5、Redis常见数据结构及使用场景
6、Redis设置过期时间
7、Redis内存淘汰机制
8、Redis持久化机制
9、Redis事务
缓存雪崩
缓存穿透
10、缓存雪崩和缓存穿透问题解决
11、如何解决 Redis 的并发竞争 Key 问题
12、如何保证缓存与数据库双写时的数据一致性
缓存中间件Redis
什么是消息队列
为什么要使用消息队列
使用消息队列带来的问题
JMS简介
JMS两种消息模型
JMS五种不同的消息正文格式
JMS
AMQP
JMS与AMQP比较
两种消息协议JMS&AMQP
kafka(大数据)
RocketMQ(淘宝)
ActiveMQ(传统)
常见消息中间件
消息中间件
Elasticsearch(基于lucene实现)
搜索中间件
JAVA入门基础
0 条评论
回复 删除
下一页