面试
azhegps
技术源于不断滴追求!
展开
-
HashMap的原理,底层数据结构,rehash的过程,指针碰撞问题
https://blog.csdn.net/zhang_xiaomeng/article/details/78221677原创 2020-04-18 16:16:41 · 453 阅读 · 0 评论 -
MySQL中的锁(表锁、行锁)
MySQL中的锁(表锁、行锁) 锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。概述 相对...转载 2019-08-07 20:07:36 · 92 阅读 · 0 评论 -
阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用
我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从这一角度来说,锁对于数据库而言就显得尤为重要。MySQL锁概述相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如:MyISAM和MEM...转载 2019-08-07 20:07:10 · 272 阅读 · 0 评论 -
内存溢出和内存泄漏的区别
1.1内存溢出:(Out Of Memory---OOM)系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出例子:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是...转载 2019-08-07 20:08:40 · 318 阅读 · 0 评论 -
Redis、Memcache和MongoDB的区别
>>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。Memcached的局限性:只支持简单的key/value数据结构,不像Redis可以支持丰富...转载 2019-08-08 22:01:11 · 146 阅读 · 0 评论 -
MySQL和Postgresql的区别
一.PostgreSQL相对于MySQL的优势1、在SQL的标准实现上要比MySQL完善,而且功能实现比较严谨;2、存储过程的功能支持要比MySQL好,具备本地缓存执行计划的能力;3、对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;4、PG主表采用堆表存放,MySQL采用索引组织表,能够支持比MySQL更大的数据量。5、PG的主备复制属于物理复制,相对于M...转载 2019-08-08 22:01:48 · 1027 阅读 · 0 评论 -
最通俗易懂的乐观锁与悲观锁原理及实现
一、乐观锁总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取vers...转载 2019-08-09 13:28:25 · 4816 阅读 · 1 评论 -
synchronized和lock比较浅析
synchronized是基于jvm底层实现的数据同步,lock是基于Java编写,主要通过硬件依赖CPU指令实现数据同步。下面一一介绍一、synchronized的实现方案 1.synchronized能够把任何一个非null对象当成锁,实现由两种方式: a.当synchronized作用于非静态方法时,锁住的是当前对象的事例,当synchronized作用于静态方法时,锁住的是...转载 2019-08-09 13:28:28 · 200 阅读 · 0 评论 -
可重入锁和不可重入锁
可重入锁和不可重入锁概念区分当一个线程获得当前实例的锁lock,并且进入了方法A,该线程在方法A没有释放该锁的时候,是否可以再次进入使用该锁的方法B?不可重入锁:在方法A释放锁之前,不可以再次进入方法B可重入锁:在方法A释放该锁之前可以再次进入方法B原理分析不可重入锁的实现:publicclassLock {privatebooleanisLo...转载 2019-08-09 13:28:32 · 369 阅读 · 0 评论 -
索引的作用及索引的数据结构
mysql索引的用途: 保持数据的完整性; 优化数据的访问性能 改进表的链接(join)操作 对结果进行排序 简化聚合数据操作索引的数据结构:B-、B+、R-、散列散列实现对直接查找方式能提供最优的性能,但对一定范围的查找却效率底下。B-树索引实现是一个专门为范围查询设计的。B-树:B-树结构支持插入、控制操作以及通过管理一系列树根状结...转载 2019-08-09 13:28:47 · 1137 阅读 · 0 评论 -
redis的持久化方式RDB和AOF的区别
1、前言最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一...转载 2019-08-10 19:30:26 · 89 阅读 · 0 评论 -
深入浅析Mybatis与Hibernate的区别与用途
1. hibernate是全自动,而mybatis是半自动hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。2. hibernate数据库移植性远大于mybatishibernate通过它强大的映射结构和hql语言...转载 2019-08-10 19:30:52 · 215 阅读 · 0 评论 -
Mybatis常见面试题总结
https://blog.csdn.net/a745233700/article/details/80977133转载 2019-08-12 21:06:25 · 127 阅读 · 0 评论 -
Spring常见面试题总结(超详细回答)
https://blog.csdn.net/a745233700/article/details/80959716转载 2019-08-12 21:06:27 · 326 阅读 · 0 评论 -
史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官
想往高处走,怎么能不懂 Dubbo?Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。1、Dubbo是什么?Dubbo是阿里巴巴开源...转载 2019-08-12 21:06:32 · 7957 阅读 · 2 评论 -
redis面试总结
http://blog.csdn.net/guchuanyun111/article/category/6335900 (1)什么是redis?Redis是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)(2)Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载...转载 2019-09-09 19:24:20 · 159 阅读 · 0 评论 -
多个单列索引和联合索引的区别详解
背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为 5.7.20创建测试表(表记录数为63188):CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) NOT NULL...转载 2019-08-05 22:34:43 · 183 阅读 · 0 评论 -
为什么where条件中使用or索引不起作用?
为什么where条件中使用or索引不起作用?where条件中使用or,索引就会失效,会造成全表扫描 是误区一,要求使用的所有字段,都必须建立索引。二,数据量太少,制定执行计划时发现全表扫描比索引查找更快。三,确保mysql版本5.0以上,且查询优化器开启了index_merge_union=on, 也就是变量optimizer_switch里存在index_merge_union...转载 2019-08-05 22:34:19 · 7494 阅读 · 1 评论 -
设计模式之单例、工厂、代理、观察者、适配器
1、单例设计模式实现的方式有如下四种://单例模式的实现:饿汉式,线程安全但效率比较低 publicclassSingletonTest{ privateSingletonTest(){ } privatestaticfinalSingletonTestinstance=newS...原创 2020-04-25 17:25:29 · 471 阅读 · 0 评论 -
Java中几种常见的排序方式
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。以下常见算法的定义1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关...原创 2020-04-25 17:30:24 · 405 阅读 · 0 评论 -
Lock、ReentrantLock、ReadWriteLock、ReentrantReadWriteLock、
public class LockTest { public static void main(String[] args) { new LockTest().init(); } private void init() { final Outputer outputer = new Outputer(); new Thr...原创 2020-04-25 17:25:52 · 185 阅读 · 0 评论 -
深入理解ReentrantLock与Condition
https://www.cnblogs.com/superfj/p/7543927.html锁的概念从jdk发行1.5版本之后,在原来synchronize的基础上,增加了重入锁ReentrantLock。本文就不介绍synchronize了,有兴趣的同学可以去了解一下,本文重点介绍ReentrantLock。锁是什么?并发编程的时候,比如说有一个业务是读写操作,那多个线程执行...原创 2020-04-25 17:26:14 · 198 阅读 · 0 评论 -
Spring 模拟AOP(JDK和CGLIB动态代理)
1,使用JDK和CGLIB动态代理模拟AOPpackage cn.itcast.service.impl;interface PersonService { public void save(String name); public void update(String name, Integer personid); public String getPersonName(Int...原创 2020-04-25 17:30:09 · 375 阅读 · 0 评论