自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Spring超详细面试题

原网页地址1、一般问题1.1. 不同版本的 Spring Framework 有哪些主要功能?Version FeatureSpring 2.5发布于 2007 年。这是第一个支持注解的版本。Spring 3.0发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。Spring 4.0发布于 2013 年。这是...

2020-03-09 22:08:43 188

原创 如何保证RabbitMQ消息的可靠传输?

消息不可靠的情况可能是消息丢失,劫持等原因;丢失又分为:生产者丢失消息、消息列表丢失消息、消费者丢失消息;生产者丢失消息:从生产者弄丢数据这个角度来看,RabbitMQ提供confirm模式来确保生产者不丢消息;confirm模式用的居多:一旦channel进入confirm模式,所有在该信道上发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后;...

2019-11-14 16:12:11 900

转载 对Java面向对象的理解

面向对象是相对面向过程而言面向对象和面向过程都是一种思想面向过程强调的是功能、行为面向对象:将功能封装进对象,强调具备了功能的对象面向对象是基于面向过程的面向过程例子:把大象放进冰箱里分为以下步骤:把冰箱门打开;把大象放进去;关上冰箱门(强调过程和过程中所涉及的行为(强调行为、动作、过程))。用面向对象思想考虑:无论是打开冰箱,放进大象,关闭冰箱,所有操作都是操作冰箱这...

2019-10-11 13:14:54 160

转载 redis的缓存穿透/雪崩/热键问题

一.缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 1.布隆过滤 对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bit...

2019-10-11 13:12:07 863

转载 Spring事务详解

Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要。Spring的事务机制包括声明式事务和编程式事务。编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多。声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关...

2019-10-11 13:09:52 196

原创 JVM调优面试

1、JVM调优主要涉及两方面:堆大小的设置,垃圾回收期的选择,首先要对自己对系统有个定位,是吞吐量优先型系统还是响应优先型系统。 吞吐量优先型系统,一般建议设置一个大的年轻代和一个小的老年代,这样可以尽可能回收掉大部分短期对象,而年老代尽存放长期存活对象。这种系统建议使用吞吐量优先的并行收集器(UseParallelGC),-XX:+UseAdaptiveSizePolicy(大小自适应...

2019-10-10 21:33:13 332

转载 java笔试之6

https://www.cnblogs.com/java1024/p/8622195.html40道Java基础常见面试题及详细答案

2019-10-10 06:51:24 83

转载 JVM调优

https://blog.csdn.net/wfh6732/article/details/57422967堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物...

2019-10-09 19:05:51 70

转载 面试场景关于锁及HashMap等

项目经验面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这些项目的了解程度,因为很多人简历上写的项目并非都是从头到尾都参与的,有些只是参与并实现了其中的一些模块而已,或是接手维护别人的项目,所以在你简历上所写的和面试过程中所说的项目经验,你自己必须能够了解来龙去脉,因为面试官肯定会根据你的项目描述,对项目中的实现原理,或为什么要这样实现进行提问,这时不至...

2019-09-21 17:15:17 99

转载 Java性能调优

对于调优这个事情来说,一般就是三个过程: 性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。 性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具、经验对系统、应用进行瓶颈分析,以求定位到问题原因。 性能调优:经过上一步的分析定位到了问题所在,需要对问题进行解决,使用代码、配置等手段进行优化。 ...

2019-09-21 16:15:56 284

转载 JVM知识点梳理

jvm 总体梳理jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。类的加载机制主要关注点:...

2019-09-18 06:49:37 74

转载 Spring mvc 处理流程

一图顶千言万语,用数据、用图说话,下图是springmvc的工作原理图。SpringMVC工作流程一、 用户发送请求至前端控制器DispatcherServlet。   1.DispatcherServlet它也是servlet,load-on-startup=1,tomcat启动时它也会初始化,初始化参数是contextConfigLocation上下文配置文件位置,参数值...

2019-08-22 16:13:05 191

转载 数据库及spring事务隔离级别与传播机制

数据库事务隔离机制:Read Uncommitted:最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。所有的并发事务问题都会发生。Read Committed:只有在事务提交后,其更新结果才会被其他事务看见。解决脏读问题。Repeated Read:在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以...

2019-08-10 16:01:15 159

转载 Java NIO详解

https://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=2651478970&idx=1&sn=995321473129b47365a8de6c29b0e360&chksm=bd2537c58a52bed33d50e87799c6acbcf8bc05e93f5eac6e280319a97a7eeace5dec2a2...

2019-08-03 17:50:57 80

转载 装饰者模式详解

装饰模式在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。出处:h...

2019-08-03 17:20:33 174

转载 Java技术之AQS详解

AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,这些方法定义了state是如何被获取或释放的。鉴于此,本类中的其他方法执行所有的排队和阻塞机制。子类...

2019-07-05 14:45:20 128

转载 ReentrantLock原理

前几篇文章分析了线程池的原理,接下来研究锁的方面。显式锁ReentrantLock和同步工具类的实现基础都是AQS,所以合起来一齐研究。ReetrantLock原理什么是AQSAQS即是AbstractQueuedSynchronizer,一个用来构建锁和同步工具的框架,包括常用的ReentrantLock、CountDownLatch、Semaphore等。AQS没有锁之类的概念...

2019-06-25 06:16:17 143

转载 CountDownLatch的原理

上一篇通过研究ReentrantLock分析了AQS的独占功能,本文将通过同样是AQS子类的CountDownLatch分析AQS的共享功能。有了前文研究独占功能的基础,再研究共享锁就简单多了。出处:https://www.jianshu.com/p/7c7a5df5bda6?ref=myreadCountDownLatch的使用CountDownLatch是同步工具类之一,可以指定一...

2019-06-25 06:14:34 78

转载 Java 最常见 200+ 面试题全解析:面试必备

序言在本篇文章开始之前,我想先来回答一个问题:我为什么要写这样一篇关于面试的文章?原因有三个:第一,我想为每一个为梦想时刻准备着的“有心人”,尽一份自己的力量,提供一份高度精华的 Java 面试清单;第二,目前市面上的面试题不是答案不准确就是内容覆盖面太窄,所以提供一份经典而又准确的面试题是非常有必要的;第三,本文会对部分面试题提供详细解读和代码案例,让读者知其然并知其所以然,从而学到更多的知...

2019-06-24 22:18:34 142

转载 Java中的23种设计模式详解

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每...

2019-04-01 15:34:26 99

转载 二叉树浅析

目录1、树   树的常用术语 2、二叉树 3、查找节点 4、插入节点 5、遍历树 6、查找最大值和最小值 7、删除节点     ①、删除没有子节点的节点   ②、删除有一个子节点的节点   ③、删除有两个子节点的节点   ④、删除有必要吗? 8、二叉树的效率 9、用数组表示树 10、完整的BinaryTree代码 11、哈夫曼(Huffman)编码...

2019-03-28 17:21:41 177

原创 链表类常见面试/笔试题

链表类常见面试/笔试题:1、链表的反转2、链表是否有环路3、环路的长度4、环路的入口节点5、找到单链表的倒数第k个节点6、合并两个排序的列表7、删除链表中重复的节点8、删除链表中的某个节点9、两个链表中的第一个公共节点1、链表的反转反转前:反转后:下面来谈谈如何对链表进行反转。假设我们现在正在对结点v进行反转操作,即原来结点...

2019-03-25 14:25:03 754

转载 常见Java基础笔试/面试之五

基础篇基本功面向对象特征封装,继承,多态和抽象 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改 变它内部的数据。在 Java 当中,有 3 种修饰符: public, private 和 protected。每一种修饰符 给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的...

2019-03-08 09:29:58 192

转载 Java中AIO/BIO/NIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒...

2019-03-07 08:25:22 173 1

转载 Java线程池的几种实现及常见问题讲解

工作中,经常会涉及到线程。比如有些任务,经常会交与线程去异步执行。抑或服务端程序为每个请求单独建立一个线程处理任务。线程之外的,比如我们用的数据库连接。这些创建销毁或者打开关闭的操作,非常影响系统性能。所以,“池”的用处就凸显出来了。1. 为什么要使用线程池在3.6.1节介绍的实现方式中,对每个客户都分配一个新的工作线程。当工作线程与客户通信结束,这个线程就被销毁。这种实现方式有以下...

2019-03-04 17:32:57 397

转载 Java应用CPU占用100%原因分析

Java应用CPU占用100%原因分析:https://www.cnblogs.com/qiaoshanzi/p/5717275.html1 top命令查看CPU占用情况,获取到占用CPU较高的进程号2 ps -ef|grep 进程号 查看是否能找到对应的java服务2 ps -mp 进程号 -o THREAD,tid,time查看占用CPU较高的线程号,并将线程号转为16进制(prin...

2019-03-04 17:29:19 201

转载 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会进行展开,感兴趣的读者请自行查找相关资料。Java7 HashMapHashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。...

2019-03-04 17:23:03 103

转载 TCP和UDP的优缺点及区别

TCP和UDP的优缺点及区别TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且...

2019-03-04 14:14:17 89

转载 Session与Cookie的区别详解

一. 概念理解你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接。这是因为你浏览某个网页的时候,WEB 服务器会先送一些资料放在你的计算机上,类似于你打的文字,选的一些东西什么的,Cookie 会帮你都纪录下来。当下次你再光临同一个网站,WEB服务器会先看看有没有它上次留下的 Cookie...

2019-03-04 11:39:11 98

转载 哲学家就餐解决方案

哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题。问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法:  1、添加一个服务生,只有当经过服务生同意之后才能拿筷子,服务...

2019-03-04 11:12:19 312

转载 Java中synchronized的用法

synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;...

2019-03-04 11:02:39 93

翻译 常见Java基础笔试/面试之四

1、servlet执行流程客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。...

2019-03-01 16:56:08 82

转载 get和post的区别

POST和GET都是向服务器提交数据,并且都会从服务器获取数据。区别:1、传送方式:get通过地址栏传输,post通过报文传输。2、传送长度:get参数有长度限制(受限于url长度),而post无限制3、GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包长的说:对于GET方式的请求,浏览器会把http header和da...

2019-03-01 16:53:14 147

翻译 Java线程池整理

一、如何构建线程池?我相信多数用过线程池的Java程序员都用过Executors来创建线程池,该类提供了几个静态方法,可以快速创建线程池。如上图所示,可以创建四种类型的线程池 固定线程数量的线程池。 根据需要创建线程的线程池。 执行定时任务的线程池。 单个线程的线程池。 多数情况下,这几种类型的线程池就能满足我们的需要。但是实际...

2019-03-01 16:49:19 107

原创 常用排序算法

1. 冒泡算法//冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度...

2019-02-28 17:33:55 112

转载 常见Java基础笔试/面试题之三

计算机基础知识数据结构1、什么是队列、栈、链表2、什么是树(平衡树,排序树,B树,B+树,R树,红黑树)、堆(大根堆、小根堆)、图(有向图、无向图、拓扑)3、栈和队列的相同和不同之处共同点:都是只允许在端点处插入和删除元素的数据结构;不同点:栈是仅在栈顶进行访问,遵循后进先出的原则(LIFO);队列是在队尾插入数据,在队头删除数据(FIFO)4、栈通常采用的两种存储结构...

2019-02-28 14:13:47 136

转载 常见Java基础笔试题之二

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。2.“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变...

2019-02-28 14:10:46 800

转载 常见Java基础笔试题之一

1. 下面哪些是Thread类的方法()A start() B run() C exit() D getPriority()答案:ABD解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。2. 下面关于java...

2019-02-28 14:04:00 519

转载 WEB项目从浏览器发起交易响应缓慢,简述从哪些方面入手分析

1、查看网络的ping值 ,网络使用情况(主查,服务器到核心交换机的ping 值,当前客户端和核心交换机的ping 值,小于1正常,大于10说明你核心交换机有大负载)。2、查看服务器CPU占用率(主查,服务器的CPU占用率,大于80%说明服务器CPU并发不够)3、查看服务器的内存(内存空闲小于10%时,完全靠硬盘的读写来支撑,肯定慢,这种情况下硬盘寿命也短)4、查看你的数据库占用率(占...

2019-02-26 10:10:01 1207

转载 JVM加载Class的原理机制

在面试java工程师的时候,这道题经常被问到,故需特别注意。      Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。      Java类的加载是动态的,它并不会一次性将所有...

2019-02-25 18:13:51 736

空空如也

空空如也

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

TA关注的人

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