自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 面试问到JVM看这一篇就够了

一、二、三、四、五、六、七、八、九、十、十一、十二、十三、十四、十五、十六、十七、十八、十九、二十、二十一、二十二、二十三、二十四、二十五、二十六、二十七、二十八、二十九、三十、...

2020-03-04 11:42:00 173

原创 面试问到Redis看这一篇就够了

Redis一、NoSql数据库(内存数据库,非关系型数据库)有哪些?1、redis2、mongdb3、memcache4、tair(淘宝自研发)二、什么是Redis?1、Redis是完全开源免费的,是一个高性能的key-value数据库2、Redis是单线程的基于C语言写的3、Redis没有windows版本的只有linux版本的三、关系型数据库和非关系型数据库的区别?关系型...

2020-03-03 10:36:38 898 9

原创 MySQL架构设计(二)

索引优点:缺点:四种实现方式类型优点缺点Hash查询效率非常高无序,范围查询需要遍历全表AVL平衡二叉树查询效率也比较高,可以范围查询范围查询需要回旋比较B树查询效率也比较高,可以范围查询范围查询需要回旋比较B+树层数少,IO次数少,查询效率高,叶子节点范围查询效率高暂无MySQL中的索引alert(“1”)...

2021-01-05 15:07:33 24

原创 面试问到MySQL看这一篇就够了

MySQLMySQL的常见数据类型MySQL架构设计MySQL四层结构客户端连接层server层存储引擎层文件层SQL执行流程连接池查询缓存分析器优化器执行器InnoDB存储引擎内存结构磁盘结构MySQL中的索引ExplainTrace事务锁日志文件MVCC WALSQL优化order byjoincountgroup by函数与隐式转换分库分表集群常见面试题关系型数据库和非关系型数据库的区别?Innodb和mysiam的优缺点比较MySQL的常见数据类型MySQL架构设计MySQL四层结构客户端连

2021-01-04 21:54:11 13

原创 Git的使用

命令(1)git init 创建版本库,在空白文件夹中创建.git(2)git add [filename] 添加文件(3)git commit [filename] 将暂存区内容全部提交到本地库中(4)git log 查看日志(5)git status 查看暂存区状态(6)git reset --hard[局部索引值/版本号前缀]git reset --hard HEAD^ 一个表示后退一步,n个表示后退n步git reset --hard HEAD~n 后退n步git rese

2020-10-20 20:00:23 13

原创 英语-0级别

Unit 1open 睁开letter 字母listen 听partner 学习搭档write 写eyes 眼睛say 说see 看name 名字close 关闭、闭上Close your eyes 闭上你的眼睛Listen to the letters 听字母Open your eyes 睁开眼睛Write and say the letters 写并说出字母Unit 2jeans 牛仔裤socks 袜子ring 戒指jumper 毛衣shoes 鞋子hat 帽子

2020-10-18 21:40:54 105

原创 下午面试

Maven生命周期数据结构数组链表:单向链表、双向链表、双向循环链表栈:栈也有顺序表示和链式表示,分别称作顺序栈和链栈。队列:也存在这两种存储方式,即顺序队列和链式队列字符串:存储结构与线性表相同,也有顺序存储和链式存储两种。树:二叉树、完全二叉树、满二叉树、二叉查找树(也称作二叉搜索树),单词查找树,链式存储法、顺序存储法,前序遍历,中序遍历,后序遍历哈希表:直接定制法、数字分析法、平方取中法、折叠法、除留余数法如何解决哈希冲突:开放定址法(找空位)、链地址法(hashmap)查询算

2020-09-23 10:02:58 49

原创 HashMap

Object equels比较底层是采用==比较地址HashCode相等的两个对象,内容值不一定相等为什么重写了equels要重写HashCode方法?equels相等的HashCode一定相等HashCode相等的两个对象,内容值不一定相等HashCode不相等的两个对象,内容值一定不相等equels和HashCode的关系1、equels相等的HashCode一定相等2、HashCode相等的两个对象,内容值不一定相等3、HashCode不相等的两个对象,内容值一定不相等为什么重.

2020-09-18 12:25:34 31

原创 一篇彻底搞懂synchronized锁原理

synchronized锁原理synchronized什么是synchronized锁synchronized的优缺点synchronized的应用场景synchronized代码示例把Java文件转换成汇编指令获取到SynchronizedDemo.class文件把SynchronizedDemo.class转换成汇编指令monitor对象monitor对象属性分析几个主要的属性Java对象布局64位HotSpot虚拟机中Java对象的内存结构引入jol查看Java对象布局创建并运行MyObject .j

2020-08-22 20:23:52 76

原创 ForkTask

FutureTask依赖于Callable创建,本身是一个runnable。什么是勾子方法notify最好也加锁,不然wait还没执行到就notify就报错了forkjoin:java7时推出的一个并发框架,核心思想是把一个任务分成多个子任务三个线程,每个线程同时执行1000个任务,其中有一个线程提前执行完任务了,就空闲了,这样毕竟浪费cpu资源。传统线程池就是这样的。使用forkjoin可以窃取其他线程的任务,窃取队列尾部,执行是头部先执行RecursiveTask每个子任务有返回结果,Re

2020-08-22 15:46:09 79

原创 分布式基础

分布式理论分布式系统的特点1、分布性2、对等性3、并发性4、缺乏全局时钟5、故障总是会发生分布式架构的演变过程硬负载和软负载分布式系统面临的问题通讯异常(整个网络环境出问题)、网络分区(网络分成多个子网络,子网络通讯正常)、节点故障(服务器宕机)、三态(请求失败、响应超时、完全成功)分布式一致性分布式理论什么是BASE理论?基于CAS理论权衡出来的一种结果,核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,使用适当的方式让系统达到最终一致性BA:当系统出

2020-08-15 18:56:59 127

原创 分布式集群架构场景解决方案

一致性哈希算法Hash算法应用场景1、MD5/SHA等加密算法就是使用的Hash算法2、Nginx的ip_Hash,避免session问题3、分布式存储,redis分片集群,分库分表为什么要使用Hash?Hash算法较多的应用在数据存储和查找领域,最经典的就是Hash表,查询效率非常高。普通hash算法存在的问题集群数量改变:节点宕机或者增加节点,服务器数量不能及时调整。比如x%3,现在只剩下2台节点了,本来要存放到3节点的服务器数据无法命中目标服务器。解决:一致性Hash算法(哈希环)

2020-08-14 17:51:27 172 6

原创 Nginx

第⼀部分:Nginx基础回顾(Nginx是什么?能做什么事情(应⽤在什么场合)?常用命令是什么?)Nginx:高性能的HTTP和反向代理web服务器,占用内存少,并发能力强应用场景:高性能Http服务器(web服务器),支持5万并发反向代理负载均衡:轮询:默认策略,每个请求按时间顺序逐一分配到不同的服务器,如果某一个服务器下线,能自动剔除weight:weight代表权重,默认每⼀个负载的服务器都为1,权重越⾼那么被分配的请求越多(⽤于服务器性能不均衡的场景)ip_h

2020-08-13 17:53:56 31

原创 深入理解Tomcat服务器

Tomcat系统架构与原理剖析目录介绍bin:shutup.bat是windwos脚本文件,shutup.sh是linux或者mac脚本文件conf:配置文件目录logging.properties:日志相关配置server.xml:主要配置文件,配置端口等tomcat-users.xml:定义了tomcat的用户、角色、权限web.xml:web应用的描述文件,每个应用都有一个web.xml,这个web.xml是tomcat的全局配置信息lib:存放jar包,因为tomcat是基于ja

2020-08-12 12:51:06 74

原创 SpringBoot源码分析

为什么sringboot可以省略大量的配置?因为约定优先于配置的软件设计范式,就像红灯行绿灯停一样,在代码中的体现比如一个实体类对应一个表,约定实体类的名字就是表名,就不用配置@table,不一样的时候才配置什么是springboot?springboot让基于spring的开发更快的跑起来,减少了大量的配置文件spring的缺点:使用是轻量级的,配置是重量级的,需要很多的配置springboot的解决spring问题的两个方式1、起步依赖:通过Maven Pom依赖的方式,将某种功能的依赖打包.

2020-08-10 23:08:15 79

原创 SpringMVC源码分析

SpringMVCSpringMVC应用SpringMVC高级技术手写MVC框架SpringMVC源码分析SSM整合面试题1、经典三层和MVC的区别?2、介绍下SpringMVC框架3、SpringMVC的三大组件4、SpringMVC执行流程5、SpringMVC的九大组件HandlerMapping(处理器映射器)HandlerAdapter(处理器适配器)HandlerExceptionResolver(处理器异常处理)ViewResolver(视图解析器)RequestToViewNameTrans

2020-08-08 16:03:50 70

原创 IoC容器设计实现及Spring源码分析

任务一SSM(Spring SpringMVC Mybatis)的前身是SSH(Spring Struts Hibernate),Spring不仅没有被淘汰,还渐渐有了家族式的发展,spring全家桶(最主要的有脚手架框架springboot,微服务框架springcloud等等)先自定义SpringIOC和AOP,再去看源码实现,最后源码分析1、spring的核心思想:控制反转IOC,面向切面编程AOP2、手写IOC和AOP3、IOC和AOP的应用和高级特性:AOP申明式事务4、IOC源码分析

2020-08-05 21:16:32 110

原创 深入理解MyBatis持久层框架(1)-- 自定义MyBatis核心框架

深入理解MyBatis持久层框架为什么有了JDBC还要使用MyBatis框架?传统JDBC访问数据库代码传统JDBC访问数据库存在哪些问题?如何自定义MyBatis框架?自定义MyBatis框架思路1、首先创建数据库连接配置文件SqlMapConfig.xml2、创建sql配置文件Mapper.xml,sql都有哪些配置信息呢?3、为了能够让配置文件只读取一次,我们可以在SqlMapConfig.xml中配置mapper.xml的路径。4、因为内存的读取速度远远大于硬盘的读取速度,所以我们可以把配置文件以字

2020-07-30 15:05:34 106

原创 深入理解MyBatis持久层框架

为什么有了JDBC还要使用Mybatis框架?JDBC存在的问题:1、加载驱动如果要从mybatis换成oracle,必须重新修改代码编译,存在硬编码问题解决:使用配置文件2、频繁创建释放数据库连接,TCP不断进行三次握手和四次挥手,效率低解决:使用连接池:c3p0,drurid3、sql语句、设置参数、获取结果集均存在硬编码问题解决:使用配置文件4、最后还得对结果集进行手动封装,毕竟繁琐解决:反射、内省思考: sql配置文件和数据库驱动配置文件需要放一起吗?答:不需要,数据库驱动不经

2020-07-21 22:18:06 65

原创 深入理解Java虚拟机之高效并发

深入理解Java虚拟机之高效并发Java内存模型与线程概述硬件的效率与一致性Java内存模型与线程        并发处理的广泛应用是Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类压榨计算机运算能力的最有力武器。这两个定律的更替代表了近年来硬件发展从追求处理器频率到追求多核心并行处理的发展过程。简单来说,就是从追求高性能的cpu到追求高利用率的cpu概述      多任务处理在现代计算机操作系统中几乎已

2020-07-08 09:09:28 132

原创 Java动态代理

CGLB是如何调用到目标方法的?FastClass索引机制Jdk动态动态代理走回调拦截 实现接口,使用反射技术执行我们的目标方法Cglib基于字节码技术实现封装Cglib动态代理效率比jdk动态代理高两者的区别1、Jdk动态代理是使用接口的形式生成代理类(拼接、编译、加载);Cglib动态代理是采用继承的模式生成代理类,基于asm字节码技术实现封装2、Jdk动态代理拼接源代码生成class文件;Cglib动态代理是通过字节码技术生成class文件(不需要编译,直接加载就好,生成、加载)

2020-06-24 12:09:06 52

原创 反射机制

什么是反射?通过class文件动态获取类的信息优点:扩展性强缺点:违反了面向对象设计原则,且不安全应用场景:1、JDBC驱动加载2、SpringIOC容器3、自定义注解(aop+反射)4、代码生成器逆向生成java代码5、第三方框架6、破解常用单例写法,使用枚举是不能破解的,所以是最安全的三种获取class对象的方式1、obj.getClass(),用的少2、类.class3、classforName代码生成:1、stringbuffer拼接java源代码2、源代码输出到磁盘

2020-06-22 16:40:24 39

原创 spring事务

spring事务失效之谜事务的作用:保证数据一致性原则,ACID事务的分类:1、声明事务:异常被try捕获之后,事务不会去生效,直接提交,不会回滚,可以在catch中手动回滚事务TransactionAspectSupport.currentTransactionstatus().setRollbackOnly();2、编程事务:项目中去获取事务管理器DalaSourcelransactionManager优点:扩展性强缺点:代码冗余、容易造成死锁在还没提交事务之前数据库是没有数据的,提交之后

2020-06-22 15:24:37 46

原创 深入理解volatile关键字的底层工作原理

前言在并发编程中,我们常常会用到volatile关键字修饰共享变量,来保证这个共享变量在线程之间的可见性。我们来深入了解一下volatile的底层工作原理。volatile常见面试题:1、volatile的三大特性?2、为什么volatile可以保证可见性?3、为什么volatile不可以保证原子性?首先了解一下数据存储等级和JMM内存规范数据存储等级在数据存储中是分为七个等级的,第0级是寄存器,是用汇编语言操作的,第一二三级是CPU的高速缓冲区,用来缓存主内存中的数据。以上的数据存储是更小

2020-06-22 14:30:05 207 2

原创 图文解说Kafka,看不懂你锤我!

什么是Kafka?Kafka有哪些优缺点?什么是分布式消息中间件?为什么要使用分布式消息中间件?Kafka有哪些专业名词?Kafka实现原理?为什么要使用Kafka?Kafka有哪些应用场景?初始状态消息投递副本同步...

2020-05-01 15:31:16 79

原创 Kafka(Java面试题)

1

2020-05-01 13:11:36 98

原创 Redis(Java面试题)

一、什么是Redis?Redis是一种高性能的key-value非关系型数据库,他是基于C语言写的,底层采用NIO多路复用机制,使用一个线程去维护多个不同的socket连接,他只有Linux版本的,没有Windows版本的,Windows版本的Redis是网上大神改写的,因为在Windows中NIO多路复用机制底层使用的是selector选择器,通过for循环去遍历连接,容易造成空轮训,效率比较...

2020-04-29 20:12:23 108

原创 Elasticsearch(Java面试题)

一、什么是Elasticsearch?Elasticsearch简称ES,是一种以JSON格式进行数据存储的分布式搜索引擎二、为什么不使用MySQL查询,而要用ES呢?在一个电商平台项目中,会有非常多的商品,如果使用以往的MySQL进行模糊查询,需要比较长的等待时间,对数据库压力比较大,ES中使用倒排索引,查询效率非常高,可以减轻MySQL压力,而且还能进行分词查询和高亮处理,MySQL是做...

2020-04-29 16:48:12 181

原创 Sentinel(Java面试题)

1、什么是Sentinel?Sentinel是一个面试分布式架构的轻量级服务保护框架,主要以流量控制、熔断降级、系统负载保护等多个维度2、服务接口保护有哪些方案?(1)使用服务保护框架Sentinel,h,进行服务限流、熔断、降级(2)黑白名单限制访问3、什么是服务限流、服务熔断、服务降级、服务雪崩?服务限流:在接口访问超过设置的阈值,走服务降级fallback方法服务熔断:接口出...

2020-04-24 16:23:39 844

原创 Seata(Java面试题)

1、分布式事务产生的背景?在传统的单体项目中,多个不同的业务逻辑使用的都是同一个数据源,使用的都是同一个事务管理器,所以不会存在事务问题。在分布式或者微服务架构中,每个服务都有自己的数据源,使用不同事务管理器,如果A服务去调用B服务,B服务执行失败了,A服务的事务和B服务的事务都会回滚,这时候是不存在事务问题的,但是如果A服务B服务执行成功之后出现异常,A服务的事务会回滚,但是B服务的事务不会...

2020-04-24 15:05:34 1314

原创 SpringBoot(Java面试题)

1、Spring Boot的优缺点?优点(1)快速构建项目,开箱即用(2)内嵌Tomcat服务器,不用额外去部署项目(3)对主流开发框架的无配置集成缺点(1)适合微服务,不适合大型项目2、Spring Boot怎么实现热部署?在application配置文件中配置devtools,development设置为 true3、@SpringBootApplication包含哪些注解,...

2020-04-21 15:46:47 76

原创 Spring(Java面试题)

1、ServletContext概念ServletContext官方叫做Servlet上下文,他的实例就是Application对象服务器会为每一个工程创建一个ServletContext对象,全局唯一,工程内部的所有Servlet都可以共享这个对象。所以也叫全局应用程序共享对象。2、ServletContex作用? 是一个域对象 可以读取全局配置参数 可以搜索当前工程...

2020-04-21 15:45:02 55

原创 Mybatis(Java面试题)

1、Mybatis的一级缓存和二级缓存是如何实现的?2、Mybatis中用到的设计模式有哪些?3、JDK动态代理和CGLIB动态代理有什么区别?4、Mybatis源码分析流程?5、Mybatis的五个优点?(1)sql语句与代码分离,存放于xml配置文件中,降低耦合度,便于维护管理(2)Mybatis是一个持久层框架(写入硬盘)(3)提供XML标签,支持动态sql(例如if else...

2020-04-21 15:22:22 98 2

原创 Mysql(Java面试题)

1、如何去除重复的数据?2、any和all的区别?3、数据库可以如何优化?4、Sql如何优化?5、drop、truncate、delete的区别?6、char和varchar的区别?7、in和exists,not in和not exists的区别?8、内连接、左右连接的区别?9、超键、候选键、主键、外键的区别?10、常见的约束有哪些?11、如何创建视图?12、什么是视图?视图...

2020-04-21 15:17:34 124

原创 Servlet+Jsp(Java面试题)

1、Jsp九大内置对象2、Jsp和servlet的区别?3、servlet的生命周期4、Jsp的生命周期

2020-04-21 15:16:16 67

原创 设计模式(Java面试题)

1、设计模式六大原则2、单例模式有击中实现方式?区别的什么?3、简单工厂、工厂模式、抽象工厂有什么区别?4、什么是建造者模式?5、什么是装饰模式?6、什么是模版方法设计模式?7、什么是策略模式?8、什么是观察者模式?9、什么是责任链模式?10、什么是适配器模式?11、什么是门面模式?12、什么是OPC开闭原则?13、怎么写一个动态代理?...

2020-04-21 15:13:31 55

原创 JVM(Java面试题)

1、什么是JMM规范?JMM是JVM内存模型规范,基本含义是:(1)所有的变量存在主内存中(2)每个线程都有自己的工作内存,其中保存了该线程用到的主内存变量的拷贝(3)线程对变量的操作在工作内存中进行(4)不同线程间变量的传递需要通过主内存2、讲一讲JVM内存模型JVM内存模型可以分为线程共享和线程独有两部分,线程共享分为方法区和堆空间,方法区中存放常量和静态变量和class对象,...

2020-04-21 15:11:08 58

原创 网络编程(Java面试题)

1、Http和Https的区别?2、TCP和UDP的区别?3、TCP的三次握手和四次挥手?4、访问www.baidu.com的流程是什么样的?(1)先查询浏览器DNS缓存(2)DNS本地域名解析,没有就去走运营商DNS解析,获取IP(3)通过ip找到对应的服务器(4)与目标主机建立TCP连接(三次握手)(5)发送http请求(get/post),响应Http请求(6)四次挥手5...

2020-04-21 15:09:32 60

原创 线程池(Java面试题)

1、CachedThreadPool为什么会发生OOM异常?创建了太多线程,内存溢出2、如果一个任务要添加到线程池,处理流程是什么样的?先判断任务阻塞队列是否满了,如果满了就看是实现了哪种拒绝策略,如果没满,则添加到任务阻塞队列中,线程集合去判断是否任务数量大于核心线程数,大于就创建队列,最大不超过最大线程数,小于且线程超过空闲时间就减少线程数量到核心线程数。3、说说线程池的拒绝策略...

2020-04-21 14:54:43 413

原创 并发编程(Java面试题)

1、什么是进程?什么是线程?进程是资源分配的最小单位,线程是CPU调度的最小单位,一个进程包含多个线程2、讲一讲线程的生命周期线程有五种状态:创建、等待、运行、阻塞、结束,线程有三种创建方式,两种没有返回值,一种有返回值,第一种是继承Thread类,第二种是实现Runnable接口,第三种是通过Callable和Future创建(重写Callable类的Call方法,通过get方法获取Cal...

2020-04-21 14:53:29 210

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除