Java资料整理

本文详细介绍了Java的核心特性,包括JDK、JRE和JVM的组成与作用,深入讲解了Java中的数据类型、注解如@RequestBody、@RequestParam、@PathVariable的用途,以及Java在分布式领域的应用如Zookeeper和Dubbo。还涵盖了TCP连接、对象克隆、IO流、反射机制、集合框架、Mybatis和Spring框架的工作原理,以及SQL优化、Tomcat和SpringBoot的调优。此外,文章还讨论了事务管理、Nginx的反向代理与负载均衡、高并发与多线程、Mysql的锁机制等重要概念。

1、Java的诞生:1995年,詹姆斯·高斯林

2、面向对象性,跨平台性,开源性,编译性,动态性

   *JDK:是整个Java的核心,包括了java运行环境JRE、Java工具和Java基础类库

   *JRE:是运行Java程序所需环境的集合,包含了JVM标准实现及Java核心类库

   *JVM:是Java虚拟机,能够运行Java语言写作的程序,是实现跨平台的核心

 

3、==基本数据类型,比较值;引用数据类型,比较地址

equals只能比较引用类型,没重写,比较地址值;重写后,比较对象的内容

 

4、@RequestBody注解:

请求方式:POST

请求参数:请求体中只能有一个参数参加

数据格式:⼀般⽤于处理⾮Content-Type:application/x-www-form-urlencoded编码格式的数据。⽐如application/json、application/xml等。

 

@RequestParam注解:

请求方式:GET

请求参数:请求头中参数名必须相对应赋值,可以为空,必须有参数名

数据格式:@RequestParam三个参数value是参数名(必须配置),required参数在URL中是否为必须存在的,defaultValue默认值可以赋值(一旦赋值,required便为false)

@PathVariable注解:

作用:获取地址中的占位符对应的实际值

 

5、zookeeper分布式应用程序协调服务软件

6、dubbo分布式系统的服务治理框架

 

7、TCP三次握手,第一次客户端请求服务端,第二次服务端请求客户端,第三次客户端接收返回服务端,确认服务器连接正常

 

8、对象的克隆:1、浅克隆,克隆对象的基本类型数据和String类型数据,复制引用对象的引用地址,引用值修改,全部修改,引用数据为两个地址值

2、深克隆,复制基本数据类型,复制引用的对象的本身,引用数据为两个

 

9、IO流:

      1、按照流的方向:输入流和输出流

      2、按照流的单元划分:字节流和字符流

      3、按照流的角色划分:节点流和处理流

 

10、反射:在运行时,对于一个类,动态的获取类中的方法和属性;对于一个对象,可以调用对象的方法

*典型的例子: Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类

反射的优点:1、运行时动态获取实例对象,提高灵活性

                    2、与动态编译相结合

反射的缺点:1、反射降低了性能,因为需要解析字节码文件

 

11、集合:

     1、List:可重复,有序,有索引。ArrayList数组结构,线程不安全,增删慢,查找快;LinkedList链表结构,线程安全,增删快,查找慢。(ArrayList初始值10,自动扩容1.5倍;LinkedList,数据插入链表末尾,无需扩容)

     2、Set:不可重复,无序,无索引。HashSet是由HashMap支持,线程不安全,存储唯一元素并支持空值,根据hashCode值确定元素是否存在,在用equals比较进行存储;TreeSet是由TreeMap支持,线程不安全,根据红黑树实现,它的元素可以自然排序或者比较器排序。

     3、Map:双列集合,k-v键对值结构,无序,无索引,Key唯一。HashMap:线程不安全,基于Hash表+链表实现,在jdk1.8后当链表长度超过8,链表转为红黑树结构,支持一个null键或多个null值;TreeMap:线程不安全,基于红黑树实现,所以它的key可以自然排序或比较器排序。(HsahMap初始值16,扩容为2倍,使用位运算取得hash)

 

12、Mybatis框架:

     (1)是基于Java的,半自动的ORM持久层框架

     (2)作用:它对JDBC操作数据库的过程进行封装,使开发者只需关注SQL本身,提高开发效率

     (3)运行流程或工作原理:1加载全局配置文件,解析配置文件;2创建SqlSessionFactoryBuilder,生产SqlSessionFactory;3用来开启SqlSession,通过执行器接口操作数据库,执行Mapper接口以及其对应的mapper文件;4输入SQL语句所需的参数;5输出返回其映射对象

      (4)#{}是SQL参数占位符;${}是SQL语句拼接符

 

13、Spring框架:

      (1)是轻量级的IOC和AOP的开源容器框架

      (2) 作用:解决企业应用开发的复杂性,使用JavaBean代替EJB,并提供了更多的企业应用功能

      (3) Spring的IOC容器是Spring的核心,SpringAOP是Spring框架的重要组成部分

      (4)IOC:控制反转,利用了工厂模式,对象的创建不需要new()了,可通过容器注入;AOP:面向切面编程,将程序中的交叉或重复业务,封装成切面,织入到需要的目标对象中

 

14、SpringWebMVC框架:

        (1)是Spring框架提供的web层mvc架构的轻量级web框架

        (2)功能或作用:简化Web开发,与Spring其他框架无缝集成,让mvc架构开发更加简单方便

        (3)核心组件:DispatcherServlet

        (4)执行流程:

         *1发送请求,DispatcherServlet前端控制器接收;

         *2解析URL,通过控制器映射器,找到一个控制器、多个拦截器等的对象;

         *3通过控制器适配器,将处理器包装为适配器,从而支持多种类型的处理器;

         *4调用处理器方法,返回数据封装ModelAndView对象,返回DispatcherServlet前端控制器

         *5通过视图解析器,数据视图渲染

         *6DispatcherServlet将响应返回给用户

3e4151187e23458ca1f2f08f6c0a9732.jpg

 

 

15、分布式,是系统部署方式,是将一个系统拆分为多个子系统,并且分布多个服务器上

16、微服务,是面向服务的SOA架构设计方式,是将程序分为一个个微小服务,功能单一可以单独部署,服务间使用RPC交互(SOA,面向服务的架构,是一个组件模型,将程序分为不同的功能服务,并通过定义好的接口和协议连接起来)

 

17、SQL优化:

     (1)良好sql语句以及创建索引优化

     (2)设计良好的数据库表结构

     (3)系统配置优化,如限制数据库连接数、文件打开数等

     (4)硬件配置优化,选择适合数据库服务的cpu及硬件配置

 

18、Tomcat优化:

      (1)JVM虚拟机优化(优化内存模型)

      (2)Tomcat自身配置的优化,如调整并发处理能力,调优线程池,采用动静分离请求访问

 

19、SpringBoot:

       (1)是基于Spring4.0的,快速构建Spring应用的轻量级框架

       (2)功能或作用:通过集成大量的框架使得依赖包的版本冲突和引用的不稳定性得以解决,简化Spring应用开发,减少配置文件编写

 

20、事务:

 一、事务问题:

     1.脏读:指读取到其他事务正在处理的未提交数据

     2.不可重复读:指并发更新“数据”时,另一个事务前后查询相同数据时的数据不符合预期

     3.幻读:指并发新增、删除操作,使数据库产生“数量”的变化,另一个事务前后查询相同数据时的不符合预期

  二、隔离级别:(隔离级别越来越高,并发量处理越来越小)

      1.读未提交,导致脏读、不可重复读和幻读

      2.读已提交,导致不可重复读和幻读

      3.可重复读,导致幻读

      4.可串行化,没有事务问题,向数据库加“范围锁”,提交事务才会释放锁

 

21、Nginx:

      (1)是高性能的Http和反向代理Web服务器

      (2)动静分离:访问静态资源直接访问,动态资源请求到服务器再分发

      (3)反向代理:代理的对象是服务端,在服务器端接收请求,然后把请求分发给具体的服务器

      (4)负载均衡:是通过反向代理实现的,用户请求到Nginx服务器,再从服务器集群里“选择性”的进行请求服务响应(负载均衡配置:默认轮询、权重、最少连接数、ip_hash固定IP访问固定服务、url_hash、fair后端服务器响应时间少的优先)

 

22、高并发与多线程:

     (1)线程是进程中执行运算的最小单位

     (2)创建线程的4中方法:1继承Thread类;2实现Runnable接口,重写run()方法;3实现Callable接口,实现call()方法;4创建线程池获取线程

     (3)线程池创建:1、使用Executors执行器自动创建

                                2、通过ThreadPoolExecutor手动创建

      (4) 自动创建线程池:1、newFixedThreadPool创建定长线程池,超出线程会在队列中等待

2、newCachedThreadPool创建可缓存线程池,可灵活回收空闲线程处理需要,也可创建新线程处理需要

3、newSingleThreadExecutor创建单线程线程池,保证任务按顺序执行

4、newScheduledThreadPool创建定长线程池,定时周期性的执行任务

     (5)手动创建线程池的七大参数:new ThreadPoolExecutor()方法获取ExecutorService对象;核心线程数,最大线程数,存活时间,时间单位,线程工厂,等待队列,拒绝策略

      (6) 高并发的三种解决方式:1、分布式 2、缓存 3、消息队列

 

24、Mysql的锁:

   (1)加锁的原因:高并发下为了保证数据一致性,合理的控制资源的访问规则

   (2)1、按锁的粒度从大到小有:表锁、页锁和行锁

2、按锁级别分类有:共享(读)锁、排他(写)锁、意向共享(读)锁、意向排他(写)锁

3、面向编程的锁思想:悲观锁、乐观锁

cf349a0a5f60423e8910ab447e30d8ed.jpg

2f2b559f397d4eb7b4b2159ecd55b730.jpg

25、Java的锁

c9277a1a939847ed90ea247605cc745f.jpg

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值