java学习之旅

一,java基础

8种基本数据类型 byte short int long float double boolean char 3中引用数据类型 String  数组 对象

String字符串的常用方法

        indexOf():返回指定字符的索引。
        length():返回字符串长度。
        equals():字符串比较。
        replace():字符串替换。
        trim():去除字符串两端空白。
        split():分割字符串,返回一个分割后的字符串数组。
        toLowerCase():将字符串转成小写字母。
        toUpperCase():将字符串转成大写字符。
        substring():截取字符串。

方法重写和方法重载的区别

== 和equals的区别

string和stringbuffer 和stringbuilder的区别

Java中的集合比较重要  arraylist和linkedlist区别 list 和set区别

反射的实现方式  class.forName(类路径)  类名.class 对象名.getClass

java实现多线程的方式   继承thread类,实现runable接口 用executorservice来创建

sleep和wait的区别

为什么要使用线程池

线程和进程的区别

线程池核心参数

接口和抽象类一般类的区别

java中的锁

乐观锁  悲观锁

synchronized和Lock有什么区别

synchronized是java内置关键字,是jvm层面。lock是接口,

sychronized会自动释放锁,但是无法判断是否获取锁,lock需要在finally手动释放(unlock())锁,能判断是否获取到锁

synchronized 线程a占用锁之后,线程b一直等待,lock不会等待,会直接结束线程

lock式和大量同步的代码同步问题,synchronized适合少量的代码同步问题

二,spring相关

什么是spring:( 大概能说上一些特征,解释一下) 轻量级的ioc和aop容器框架,简化应用程序开发,使得开发者只关注业务需求,常见的配置方式三种,基于xml配置,基于注解配置,基于java配置

mvc 模型  视图  控制器

springmvc的工作原理,大概能说一点 用户发送请求开始到返回view

springbean的生命周期

spring两大核心 ioc和aop 

spring中用到的设计模式 单例 工厂 代理 模板方法 观察者模式

spring中 autowired和resource的区别

springboot核心注解有哪些

spring springmvc springboot的区别

2:mybatis

什么是mybatis:(大概能说上一些特征,解释一下)对象关系映射框架,内部封装了jdbc,开发时只需要处理sql语句本身,不需要处理加载驱动 创建连接,创建statement等繁杂的过程

mybatis优缺点

什么是springboot:springboot简化了spring开发,约定大于配置,使用特定方式properties或者yml文件来进行配置,内嵌tomcat无须部署war文件,简化了maven配置

优点:独立运行,简化配置,自动配置

springcloud  

什么是微服务:一种架构风格,将单一应用程序划分为一小组的服务,每个服务运行在自己的进程中,服务之间相互协调,相互配合,服务之间采用轻量级通信机制(通常基于http或者restful api),可以使用不同的语言编写服务,可以使用不同的数据库存储

cloud项目五大组件

eureke:服务注册与发现 ,自我保护机制,心跳机制

ribbon:负载均衡,有多种负载均衡调用策略

hystrix:熔断降级,实现断路器模式,为依赖服务的出错提供容错能力

feing接口:基于ribbon和hystrix的声明式服务调用组件

zuul:网关 统一管理,对请求提供路由及过滤功能

三,数据库 

mysql

数据库三大范式

数据库引擎 我们公司一直用的innodb 

innodb和myisam区别,innodb支持行锁表锁  事务  myism不支持

数据库事务:acid

数据库索引 主键  唯一 联合索引

sql优化: 避免select *   避免使用子查询,使用关联查询替代,减少使用in not in 使用exists 

or的查询尽量使用union all替代  尽量避免在where后面加 != 或者<> 也不要使用null值判断,创建数据库的时候可以设置默认值

redis

非关系型持久化内存数据库,rdb是redis的默认持久化(把数据从内存同步到硬盘,redis重启之后又把数据从硬盘重新加载到内存,达到恢复数据的目的)方式

持久化实现:单独创建一个fork()进程,将当前父进程中的数据库文件复制到子进程的内存中,然后由子进程写入到临时文件,持久化的过程就结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放

缓存雪崩,解决:将失效时间分散开

缓存穿透:数据库不存在,redis中也就没有,导致每次都查询数据库,解决,采用布隆过滤器,讲所有 可能存在的数据哈希到一个足够大的bitmap中,一定不存在的数据会被bitmap拦截掉,就不会频繁的查询数据库了

redis为什么这么快,基于内存  单线程  非阻塞式 io多路复用

redis5中数据类型 string hash set 和sorted Set 和 liset

四,常用中间件

负载均衡nginx

反向代理和正向代理的区别

主要用来在前后端分离的项目中做负载均衡

缓存中间件redis

任务调度中间件xxl-job

消息中间件 rabbitmq  kafka

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值