![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA底层面试问题
文章平均质量分 86
李晓LOVE向阳
这个作者很懒,什么都没留下…
展开
-
20210704 JAVA Redis和Memcached的一些区别
什么是Memcache?Memcache集群环境下缓存解决方案Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。 与Redis区别我们都知道,把一些热数据存到缓存中可以极大的提高速度,那么问题来了,是用Redis好还是Memcached好呢,以下是它们两者之间一些简单的区别与比较:1. R原创 2021-07-04 14:26:29 · 408 阅读 · 0 评论 -
2021-07-02随笔JAVA面试题
List和Set的区别List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List是可以重复的。而Set是不能重复的。List适合经常追加数据,插入,删除数据。但随即取数效率比较低。Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。Redis持久化的方式Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的原创 2021-07-03 14:49:24 · 391 阅读 · 0 评论 -
20210630拦截器和过滤器的区别,关系型数据库与非关系型数据库区别
一、二者理解过滤器(Filter)过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。拦截器(Interceptor)拦截器,是面向切面编程(AOP,Aspect Oriented Pro原创 2021-06-30 13:58:34 · 202 阅读 · 0 评论 -
Mybatis XML中 # 和 $ 哪个可以防止SQL注入
SQL注入是常见的SQL安全问题,防止SQL注入的方式有很多:JDBC方式查询,我们可以利用PreparedStatement,这样不光能提升查询效率,而且他的set方法已经为我们处理好了sql注入的问题。 ibernate方式查询,我们利用name:parameter方式查询。 在查询方法中检查sql,将非法字符,导致sql注入的字符串,过滤掉或者转化。 在页面中限制,我们通过js设置,不让用户输入非法字符。 拦截请求的每一个参数,并将这个参数的非法字符转化。SQL注入是通过把SQL命令插.原创 2020-05-22 15:44:24 · 899 阅读 · 0 评论 -
mybatis与hibernate区别
Hibernate:hibernate是一个标准的ORM框架,不需要写sql语句,维护关系比较复杂,sql语句自动生成,对sql语句优化,修改比较困难。Hibernate的优缺点:优点:面向对象开发,不需要自己写sql语句。如果进行数据库迁移不需要修改sql语句,只需要修改一下方言。缺点:hibernate维护数据表关系比较复杂。完全是有hibernate来管理数据表的关系,对于我们来说完全是透明的,不易维护。Hibernate自动生成sql语句,生成sql语句比较复杂,比较难挑错。Hi原创 2021-06-18 16:37:52 · 190 阅读 · 0 评论 -
kafka介绍和使用
1.1.主要功能根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能: 1:It lets you publish and subscribe to streams of records.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因 2:It lets you store streams of records in a fault-tolerant way.以容错的方式记录消息流,kafka以文件的方式来存储消息流...转载 2021-06-17 13:33:36 · 158 阅读 · 0 评论 -
2021-06-17 java----随记
第一个问题:“==”与equals的区别1. ==可以用来比较基本类型和引用类型,判断内容和内存地址2. equals只能用来比较引用类型,它只判断内容。该函数存在于老祖宗类 java.lang.Objectjava中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。2.复合数据类型(类) 当他们用(==)进行比较的时候,...原创 2021-06-17 10:31:14 · 257 阅读 · 0 评论 -
如何判断线程池中的线程是否全部执行完毕
在使用多线程的时候有时候我们会使用 java.util.concurrent.Executors的线程池,当多个线程异步执行的时候,我们往往不好判断是否线程池中所有的子线程都已经执行完毕,但有时候这种判断却很有用,例如我有个方法的功能是往一个文件异步地写入内容,我需要在所有的子线程写入完毕后在文件末尾写“---END---”及关闭文件流等,这个时候我就需要某个标志位可以告诉我是否线程池中所有的子线程都已经执行完毕,我使用这种方式来判断。————————————————版权声明:本文为CSDN博主「技术人原创 2021-06-15 16:22:55 · 1232 阅读 · 0 评论 -
JAVA——比较难和底层的面试题 - 数据库篇
锁机制介绍:行锁、表锁、排他锁、共享锁;数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁.原创 2020-10-19 17:55:51 · 325 阅读 · 1 评论 -
JAVA——比较难和底层的面试题 - Spring高级部分
Spring AOP的实现原理和场景?概述:最近在开发中遇到了一个刚好可以用AOP实现的例子:自定义注解+AOP实现权限验证,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。会按照如下目录展开:AOP简介 代码中实现举例 AOP实现原理 部分源码解析1. AOP简介相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。这里我用一句话来总结:AOP是能够让我们在不影响原有功能的前提下,为软件横向扩展功能。 那么横向扩展怎么理解呢,我们在WEB项原创 2020-08-27 17:08:24 · 731 阅读 · 0 评论 -
JAVA——比较难和底层的面试题 - JAVA高级部分
JAVA高级部分 红黑树的实现原理和应用场景; NIO是什么?适用于何种场景? https://blog.csdn.net/u013310119/article/details/107958335 Java9比Java8改进了什么; HashMap内部的数据结构是什么?底层是怎么实现的?(还可能会延伸考察ConcurrentHashMap与HashMap、HashTable等,考察对技术细节的深入了解程度); 说说反射的用途及实现,反射是不是很...原创 2020-08-18 16:49:22 · 471 阅读 · 0 评论 -
JAVA——比较难和底层的面试题 - NIO是什么?适用于何种场景?
基础概念1、阻塞与非阻塞阻塞与非阻塞是描述进程在访问某个资源时,数据是否准备就绪的的一种处理方式。当数据没有准备就绪时:阻塞:线程持续等待资源中数据准备完成,直到返回响应结果。 非阻塞:线程直接返回结果,不会持续等待资源准备数据结束后才响应结果。2、同步与异步同步与异步是指访问数据的机制,同步一般指主动请求并等待IO操作完成的方式。 异步则指主动请求数据后便可以继续处理其它任务,随后等待IO操作完毕的通知。3、传统BIO模型传统BIO是一种同步的阻塞IO,IO在进行读写时,该线程原创 2020-08-13 15:06:55 · 417 阅读 · 0 评论 -
java——比较难和底层的面试题 Redis相关
Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set:有序集合)。*String(字符串)String是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。String类型是Redis最基本的数据类型,一个键最大能存储512MB。在以上Dem原创 2020-07-20 15:58:09 · 177 阅读 · 0 评论 -
JAVA——比较难和底层的面试题 JVM内存模型及GC机制
一、JVM简介1.1什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成转载 2020-07-31 15:23:15 · 295 阅读 · 0 评论 -
java——比较难和底层的面试题 多线程相关
多线程相关: 线程池的原理,为什么要创建线程池?创建线程池的方式; 答:线程池的大致原理:就是利用队列保存不能处理的请求,当有可用线程时再处理队列里的请求。为什么要创建线程: 降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控 Jav..原创 2020-07-04 15:31:18 · 363 阅读 · 0 评论