- 博客(138)
- 收藏
- 关注
原创 J2EE相关-----真实面试题大厂汇总
面试题1. servlet的执行流程?(从一个请求过来开始说)(1)Servlet的加载和实例因为Servlet是运行在Servlet容器(其实就是Web应用的Context容器)中,首先当Servlet容器启动的时候,容器会去进行检测如果是否需要创建一个Servlet对象去响应请求的时候,这是时就会去进行通过Java的反射API来创建 Servlet实例,调用的是Servlet的默认构造方...
2019-03-25 16:06:26 747
原创 Redis基础-----真实面试题汇总(含答案)
面试题1. 知道redis为什么这么快吗?面试题2. 说一下Redis的持久化的方式?面试题3. 如果不想让Redis中的数据在持久话的时候一秒的数据都不丢失怎么办?面试题4. 说一下Redis中的RDB的是具体如何实现的?...
2019-03-22 23:41:49 3022 4
原创 Spring常问的------真实大厂面试题汇总(含答案)
面试题1. Spring循环依赖怎么解决?面试题2. Spring中bean的加载过程?面试题3. Spring中bean的生命周期?面试题4. 说一下Spring中的IOC核心思想?面试题5. 说说Spring中的几种事务和隔离级别?...
2019-03-06 21:32:52 10221 4
原创 Java基础------真实大厂面试题汇总(含答案)
面试题1. 按值传递和按引用传递的区别?面试题2. Java的Object类中有哪些方法,各自的用途?面试题3. 深拷贝和浅拷贝的区别,怎么实现深拷贝?面试题4. Final, finally, finalize的区别?面试题5. 讲一讲泛型,有没有在jdk源码层面研究过泛型面试题6. .说一说java的异常体系, java是如何处理异常的?面试题7. Public、private、p...
2019-02-16 17:24:21 27024 16
原创 Java集合-----真实大厂面试题汇总(含答案)
面试题1. HashMap的扩容?面话题2. 一个ArrayList在循环过程中删除,会不会出问题,为什么?面试题3. HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么面试题4. hashmap和treemap时间复杂度。面试题5. linkedList与arrayList区别 适用场景面试题6. Arraylist是如何扩容的?面试题7. hashset...
2019-02-01 22:26:27 3742 1
原创 Java并发多线程-----真实大厂面试题汇总(含答案)
1、 说一说自己对于 synchronized 关键字的了解2、说说自己是怎么使用 synchronized 关键字3、讲一下 synchronized 关键字的底层原理4、谈谈 synchronized和ReenTrantLock 的区别...
2019-01-22 23:02:53 4532 2
原创 JVM方面-----面试汇总大全(未完待续)
JVM内存模型为什么要有双亲委派模型GC的过程GC涉及了什么算法对象分配过程哪些对象是GCRoots了解哪几种收集器CMS工作原理,会stop the world吗?为什么JVM垃圾回收过程,CMS在哪个阶段会停顿,哪个阶段停顿的时间最长?如何判断一个对象存活,如果要让对象不被回收该怎么办?gc的原理,有哪些垃圾收集器,优缺点,有哪些垃圾收集算法,优缺点gc内存管理类加载...
2018-11-11 14:00:23 1548
原创 数据库方面-----面试真题汇总(含答案)
全部是各大厂的数据方面的真是面试题MySQL的union all和union有什么区别MySQL的引擎讲一下,有什么区别,使用场景呢。mysql的索引讲一下,一级和二级索引的区别,什么时候可以不用查一级索引MySQL的事务性质怎么实现的,其中的持久性和隔离性说一下。隔离级别有哪些,解决哪些问题,默认级别是哪个,通过什么实现的MySQL索引的实现,innodb的索引,b+树索引是怎么实现...
2018-10-05 15:16:14 3345
原创 计算机网络-----真实面试题汇总(含答案)
(一)TCP相关的1.ip数据包存在的问题?怎么解决?2.tcp有哪些机制?校验和、序列号、确认机制、超时重传(默认1s)、窗口机制、流量控制、拥塞控制、连接管理3.一个数据包大小怎么确定?mss在三次握手时确认?4.延时确认机制(200ms)、nagle算法 、快速重传5.拥塞控制的过程:慢启动算法、拥塞避免、快速重传、快速恢复6.为什么tcp有首部长度而udp没有?7.tcp包的...
2018-09-29 10:41:23 1682 2
原创 如何理解Raft算法的实现原理?
(一)Raft的基本流程过程:首先在整个过程中只有三种状态:首先是LeaderFollower (一开始都是这种状态)Candidate然后进行开始整个流程:start up:起始状态,节点刚启动的时候自动进入的是follower状态。 times out, starts election:follower在启动之后,将开启一个选举超时的定时器,当这个定时器到期时,将切换到candidate状态发起选举。times out, starts election:follower在启动之后,
2020-09-08 17:09:03 625
原创 为什么Netty中对FastThreadLocal比ThreadLocal的性能更好,解密FastThreadLocal原理?
(1)首先看一下ThreadLocal的实现原理?在当一个ThreadLocalMap进行get()的时候,其实是先去从当前线程获取到ThreadLocalMap对象,然后再去【this中对应的ThreadLocal的HashCode】根据获取这个线程中的对象值。如果出现hash冲突的话,就会使用hash线性探测算法,知道找到没有冲突的槽位 public T get() { Thread t = Thread.currentThread(); ThreadL
2020-08-31 12:25:17 833
原创 深入理解零拷贝技术实现原理(从表象到Linux内核文件管理机制的底层实现)
(一)先了解一下什么是零拷贝,以及零拷贝的优点?(1 )零拷贝其实就是从用户端发起一次需要用到磁盘文件的请求的时候,会通过网络IO进行后去你想要的文件,但是你要知道程序都是运行在Linux机器上的,而且这件事情也是又程序去做的,因为传统的IO需要拷贝四次,所以就有了网络IO的问题,那么瓶颈也就出了。为了优化这一操作,把IO四次拷贝通过优化到2 次拷贝,就称为“零拷贝”,传统的具体的传统流程是:1. 用户程序需要去请求服务器上磁盘的资源,然后Linux内核会去调用DMA去拷贝磁盘文件复制到Linux内核空
2020-08-21 17:45:41 801
原创 (三)Druid数据库连接池如何回收线程源码分析和高级参数优化
(1)销毁连接线程核心逻辑:首先需要先知道几个关键的对象代表的含义: DruidConnectionHolder[] evictConnections对象中的connection都是准备关闭的,放进去就说明准备最后一起批量关闭, 参数 keepAliveCount 表示的是保活的连接数量 参数 evictCount 代表的是evictConnections数组中的需要关闭Conection的数量第一大步,首先是先加锁,然后遍历DruidConnectionHolder中当前池子中所有的连接
2020-07-06 20:51:01 2403
原创 (二)Druid数据库连接池如何获取Connection原理和源码分析?
(1)获取连接方法getConnectionDirect()线程:这里是Druid的三个核心线程的交互逻辑图⚠️这里是init();初始化在这一步:主要核心就是创建这几个线程createAndLogThread(); //打印日志线程其实就是统计监控信息createAndStartCreatorThread(); //创建连接的线程createAndStartDestroyThread(); //销毁连接的线程首先第一大步骤就是先去获取DruidPooledConnection,通过g
2020-07-01 17:24:35 3349
原创 Presto如何开发自定义聚合函数
(一)先了解一下什么是自定义聚合函数其实就是根据你自己的业务去进行定义你自己想要实现的方法,比如说Mysql中的sum() 方法,就是求某个字段的累加之和,那么你就可以自己实现自己的 比如说 add() 自定义聚合函数方法(二)如何开发自定义聚合函数首先需要实现Presto提供的Plugin接口,然后把要实现的聚合函数所在的类添加到集合中package com.tapdb.analytics.presto.udaf;import com.google.common.collect.Imm
2020-06-23 16:08:22 1288 1
原创 (一)使用Presto中的Druid报错:recyle error 和 abandon connection 来深入研究Druid的底层实现原理
(1)本文主要是使用Druid作为Presto的连接池,所遇到的问题,以及的错误和解决方法先看一下我的Druid的配置 - druidDataSource.setTestWhileIdle(true); - druidDataSource.setTestOnBorrow(true); - druidDataSource.setTestOnReturn(false); - druid...
2020-03-18 16:36:29 3896
原创 (四)Dubbo的SPI机制的底层是如何实现的?
(一)什么是SPI机制?Java中的SPI机制是如何实现的?(1)首先先说一下JavaSPI机制(Service Provider Interface)其实说白了就是定义一个接口,但是可以有多个实现该接口的实现类,其实也是一种服务发现机制。其实SPI机制的本质就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类(2)那么D...
2019-09-28 23:13:32 709
原创 (十)关于final实现的底层原理
(1)对于final域,编译器和处理器要遵守两个重排序规则在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。(2)写final域的重排序规则禁止把final域的写重排序到构造函数之外。这个规则的实现包含两个方面JMM禁止编译器把f...
2019-09-05 00:28:47 2850
原创 (九)聊一下并发中的自增原子操作的AtomicLong在JDK1.8之后是如何优化成LongAdder的,为什么要优化自增原子类?
(一)先聊聊AtomicLong的基本概念,然后聊一下他的缺陷问题,然后引出LongAdder的优点(1)大家都使用过AtomicInteger、AtomicLong等这几类原子性的工具类,具体怎么用我就不说了,就说一下他们的大概的基本实现原理其实这些基本的原子操作的思想大体都是, expect 表示当前内存中你所预期望的值,update 是你想要更新的值 public fin...
2019-08-18 14:40:10 2477 1
原创 (三)Dubbo是如何进行远程服务调用的?(源码流程跟踪)
首先会分析Dubbo是如何进行远程服务调用的,如果不了解dubbo的服务暴露和服务调用,请去看前两篇dubbo的文章,然后后面我还会说一下dubbo的SPI机制Dubbo的远程服务调用Dubbo中的SPI机制的使用和分析...
2019-07-07 17:26:47 7834
原创 如何用Redis实现分布式锁的(含和Zookeeper分布式锁实现的对比)?
首先你得知道什么是分布式锁吧?,然后你得知道在什么场景下需要去用到分布式锁吧?,然后你应该知道如何在你的业务中去利用Redis的分布式锁吧?最后你得知道Redis的分布式锁的实现方式和其他的Zookeeper或则数据库实现分布式锁有什么区别吧?然后他们之间的优缺点和好处吧?然后本文主要是围绕这几个问题逐一带你了解分布式锁的玩法,以及分布式锁的扩展知识点。(1)什么是分布式锁?(2)在什么场景...
2019-07-06 16:22:54 679
原创 如何通过Docker启动Nginx部署前端项目,包括Nginx的详细配置和踩坑教程?
首先说明一下,我的目标是要通过Docker拉取一个新的Nginx镜像然后启动Nginx,然后映射出来的浏览器的地址端口要为http://10.1.2.10:8989,当如果需要请求后端数据的时候,需要把数据转发到后端的ip端口为:http://10.1.2.10:8999。中间Nginx配置踩了好多坑(1)首先你需要从DockerHub上拉取一个Nginx的官方镜像(这里我没有直接写Docker...
2019-07-01 00:30:22 10178
原创 为什么MySQL使用B+而不是使用B树、二叉树、AVL树呢?(来龙去脉的去理解)
当你回答使用B+ 怎么怎么好的时候,其实这道面试题你就注定答不满分了,你应该是从一步步如果演变到使用B+来做MySQL的数据结构,下面就一步一步从二叉树——>AVL(平衡二叉树)——>B Tree(多路平衡查找树)——>B+ Tree的一个演变的过程来进行分析,为什么使用B+ Tree的?(1)先从二叉树开始说起:首先你得知道二叉树是什么吧:看下面的图一你就该很熟悉了吧然...
2019-06-30 17:42:10 6599 15
原创 如何通过Dockerfil制作出一个镜像,然后完整的通过镜像部署后端项目?
如何通过Dockerfil制作出一个镜像,然后完整的通过镜像部署项目到Linux上的整个流程?(1)首先你得先有一个自己写好的Dockerfile,这里我就不具体细说Dockerfile怎么编写了,大概说一下思路:首先编写Dockerfile一般都是以一个官方的镜像为基础镜像(当然用自己的镜像例外)然后需要注意Dockerfile一般都放在一个文件夹下,然后再文件夹下运行docker bu...
2019-06-29 00:26:51 626
原创 (二)在项目中如何使用ActiveMQ的具体用法(一些常见的踩坑)?
(1)首先一般在项目中的使用无非不就是把消息发送到ActiveMQ中的消息队列中去,先要考虑是使用点对点的模式,还是使用topic发布订阅的模式来进行发送的。然后就是结合自己的业务,看你放到ActiveMQ中的是什么类型的数据,然后采用不同的Message类型TextMessageMapMessageBytesMessage(我这里项目中采用的是字节数组类型的)StreamMessage...
2019-06-09 13:49:31 1504
原创 如何使用在Linux下搭建一个SFTP服务器的踩坑分享?
(1)创建一个名字为sftp分组,使用命令groupadd sftp(2)创建用户 admin 并且密码也是admin,使用命令useradd -g sftp -s /sbin/nologin -M admin(3)创建一个sftp的保存目录文件 ,使用命令mkdir /home/sftp/admin(4)修改文件夹的拥有者,使用命令 chown -R admin:sftp /home/sf...
2019-06-02 14:33:10 904
原创 如何在本地VMware上搭建服务器并能用shell连接工具连接到服务器(用sourceCTR或者Xshell)?
(1)首先第一步你需要做的就是先去VMware开机,然后使用命令行ifconfig去查看本机的IP地址,如果能查到IP地址最好,如果不能的话就继续下一步**(2)然后先去输入这个命令去更改里面的一个参数,cd /etc/sysconfig/network-scripts/,若果这个目录下没有ifcfg-eth0(我的这个没有eth0)这个文件,那么就是肯定有下面ifcfg-ens33这个文件,...
2019-06-02 14:16:22 810
原创 (一)关于ActiveMQ的入门使用和实战
(1)关于ActiveMQ的入门基础概念的理解首先是ActiveMQ的核心两种消息发送模式的概念:第一种就是点对点的消息发送模式第二种就是基于生产者消费者模式的消息发布和订阅的模式...
2019-05-26 12:35:53 361
原创 (二)Netty中的Channel和ChannelPipeline的运行流程和底层原理
(1)Netty中的ChannelPipeline和Channel分别在Netty中起到什么作用首先你需要知道在BIO中是面向字节流或者字符流进行传输的,而且BIO中的数据传输还是单向的而在NIO中传输数据的时候是面向块的效率比较高,而且还是双向的传输,并且是面向channel通道进行的最后在Netty中的是面向管道的,其实就是包装之后的NIO,一个 Channel 包含了一个 Channe...
2019-05-13 16:17:27 1965
原创 SpringBoot底层的启动原理的流程是如何实现的呢?
SpringBoot的启动原理的底层流程这个是如何按到Spring.factories的这个文件的这个是和上面的那个图是对应的:图片来自大佬的:http://www.cnblogs.com/xiaoxi/p/7999885.html#top...
2019-05-10 11:23:16 1499
原创 (一)Netty是什么和Netty的基本原理架构
Netty是基于CS架构的一种模式,分为Client端和Server端(1)先从Server端开始,先看一下Netty服务端的运行原理图:首先你得知道下面的几个主要的角色:serverBootstrapNioEventLoopGroup (这个是专门负责接收client端的请求的)NioEventLoopGroup (这个是专门负责干活的)NioServerSocketChanne...
2019-05-09 11:58:37 1427
原创 如何在IDEA中导入一个项目中的多个不同的modules?
如果你想在IDEA中导入springcloud项目中的过个module的话或者是多个不同的服务,从github上导入的话,可以参考首先第一步先在本地建立一个总的项目工程文件夹,然后直接在本地创建的这个文件夹中进行clone这个项目clone完成之后,我们再去使用IDEA去打开这个项目,然后导入这个模块File—》Project-Structure–下面这个图到这里如果clone的mod...
2019-03-29 15:00:55 9829
原创 阿里菜鸟java后台开发电话面试
阿里菜鸟部门的Java后台实习面经首先上来是怼我项目,问我为什么kafka比其他的activieMq的吞吐效率要高?然后问我如果业务是金融方面的业务,使用redis的话,如果是宕机的话,会不会出现数据不一致问题,那怎么能保证redis和MySQL中的数据一致性问ArrayList和linkedList之间有什么区别?然后又是问场景,怎么能用一种数据结构存一个学生类,然后还要能通过学生类的...
2019-03-21 14:04:04 2340 1
原创 (二)Dubbo底层实现的原理------服务的调用
Dubbo原理的实现之服务的调用首先 ReferenceConfig 类的init方法调用 Protocol 的 refer方法生成 Invoker 实例(如上图中的红色部分),这是服务消费的关键。接下来把 Invoker 转换为客户端需要的接口(如:HelloWorld)。关于每种协议如 RMI/Dubbo/Web service 等它们在调用 refer 方法生成Invoker 实例的细节...
2019-03-17 13:10:16 1564
原创 (一)Dubbo底层实现的原理------服务的暴露
Dubbo原理的实现之服务的暴露首先由于博主的精力和知识有限,我这里是站在大佬的肩膀上和自己的资源来更好的为大家清晰的梳理一下Dubbo的源码的实现流程,具体的可以自己去Debug来去过一下流程。一共分为几个大步骤,然后每个大步骤下面再继续拆分为具体的核心功能的小步骤。(1)暴露本地服务(2)暴露远程服务(3)启动Netty(4)连接到Zookeeper服务器(5)监听Zookeepe...
2019-03-15 18:36:49 1575
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人