
面试题
文章平均质量分 74
面试题
一直不懂
笔记
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
明明加了唯一索引,为什么还是产生重复数据?
前段时间我踩过一个坑:在mysql8的一张innodb引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。到底怎么回事呢?本文通过一次踩坑经历,聊聊唯一索引,一些有意思的知识点。转载 2022-09-24 15:58:06 · 599 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一个页转载 2022-01-18 23:31:49 · 212 阅读 · 0 评论 -
什么是零拷贝
平时在面试中你肯定会经常碰见的问题就是:RocketMQ为什么快?Kafka为什么快?什么是mmap?这一类的问题都逃不过的一个点就是零拷贝,虽然还有一些其他的原因,但是今天我们的话题主要就是零拷贝。传统IO在开始谈零拷贝之前,首先要对传统的IO方式有一个概念。基于传统的IO方式,底层实际上通过调用read()和write()来实现。通过read()把数据从硬盘读取到内核缓冲区,再复制到用户缓冲区;然后再通过write()写入到socket缓冲区,最后写入网卡设备。整个过程发生了4次用户态和内转载 2021-04-06 16:39:12 · 514 阅读 · 0 评论 -
数字金额转中文大写金额
public static String transAmount2Chinese(long amount) { //每4位一组,每一组多一位分隔符splits String[] unit = {"", "拾", "佰", "仟"}; //个、十、百、千、万、十万、百万、千万、亿、十亿、百亿、千亿 、兆、十兆、百兆、千兆、 //京、十京、百京、千京、垓、十垓、百垓、千垓、秭、十秭、百秭、千秭、穰、十穰、百穰、千穰、沟、十沟、百沟... String[] splits =原创 2021-02-24 00:45:27 · 1849 阅读 · 0 评论 -
查找MySQL查询语句被阻塞阻塞原因
查询长时间不返回,一般碰到这种情况的话,大概率是表t被锁住了。接下来分析原因的时候,一般都是首先执行一下show processlist命令,看看当前语句处于什么状态。然后我们再针对每种状态,去分析它们产生的原因、如何复现,以及如何处理。首先执行一下show processlist命令,看看当前语句处于什么状态。mysql> show processlist;等MDL锁show processlist命令查看State列显示为Waiting for table metadata lock。原创 2020-12-05 14:05:51 · 5597 阅读 · 0 评论 -
如何解决并发关注下是否为好友
业务需求业务上有这样的需求,A、B两个用户,如果互相关注,则成为好友。设计上是有两张表,一个是like表,一个是friend表,like表有user_id、liker_id两个字段,我设置为复合唯一索引即uk_user_id_liker_id。CREATE TABLE `like` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `liker_id` int(11) NOT NULL, PRIMARY原创 2020-12-05 00:25:43 · 564 阅读 · 4 评论 -
这么理解线程生命周期,是不是很简单?
为什么要了解线程的生命周期?之前写过 Spring Bean 生命周期三部曲:Spring Bean生命周期之缘起Spring Bean生命周期之缘尽Spring Aware 到底是什么?有朋友留言说:“了解了它们的生命周期后,使用 Spring Bean 好比看到它们的行动轨迹,现在使用就一点都不慌了”。我和他一样,了解事物的生命周期目的很简单,唯【不慌】也Java 并发系列 已经写了很多,从来还没提起过那个它【Java线程生命周期】。有了前序理论图文的铺垫,在走进源码世界之前,谈论它的时机恰转载 2020-06-05 16:00:25 · 178 阅读 · 0 评论 -
面试问我,创建多少个线程合适?我该怎么说
并发编程适用于什么场景?如果问你选择多线程的原因就是一个【快】字,面试也就不会出那么多幺蛾子了。你有没有问过你自己并发编程在所有场景下都是快的吗?知道它很快,何为快?怎样度量?想知道这两个问题的答案,我们需要一个从【定性】到【定量】的分析过程使用多线程就是在正确的场景下通过设置正确个数的线程来最大化程序的运行速度(我感觉你还是啥也没说)将这句话翻译到硬件级别就是要充分的利用 CPU 和 I/O 的利用率两个正确得到保证,也就能达到最大化利用 CPU 和 I/O的目的了。最关键是,如何做到转载 2020-06-05 15:00:00 · 230 阅读 · 0 评论 -
Https原理及流程
HTTPS通信过程HTTPS协议 = HTTP协议 + SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。SSL的全称是Secure Sockets Layer,即安全套接层协议,是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape发明,后来各个浏览器均支持SSL,其最新的版本是3.0TLS的全称是Transport La转载 2020-05-30 15:52:47 · 471 阅读 · 0 评论 -
面试官,不要再问我三次握手和四次挥手
请画出三次握手和四次挥手的示意图为什么连接的时候是三次握手?什么是半连接队列?ISN(Initial Sequence Number)是固定的吗?三次握手过程中可以携带数据吗?如果第三次握手丢失了,客户端服务端会如何处理?SYN攻击是什么?挥手为什么需要四次?四次挥手释放连接时,等待2MSL的意义?1. 三次握手三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能转载 2020-05-30 14:04:43 · 188 阅读 · 0 评论 -
Java中的String有没有长度限制?
String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的。就如本文我们要讨论的问题:Java中的String有没有长度限制?这个问题要分两个阶段看,分别是编译期和运行期。不同的时期限制不一样。1、编译期首先,我们先来合理的推断一下,当我们在代码中使用String s = "";的形式...转载 2019-08-14 13:56:08 · 566 阅读 · 0 评论 -
Java面试指南
https://github.com/Snailclimb/JavaGuide转载 2019-07-21 16:06:37 · 171 阅读 · 0 评论 -
Java方法的参数是按值传递还是按引用传递?
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是「按值传递」还是「按引用传递」? 答:是按值传递。Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。Java 的参数传递,不管是基本数...转载 2019-06-22 23:25:59 · 535 阅读 · 0 评论 -
谈谈你对Mysql的MVCC的理解?
MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以...转载 2019-06-19 00:09:16 · 864 阅读 · 0 评论 -
Redis面试题刁难大全
=========================此部分为常见问题相信会大力帮到你===========================这一部分一般是会在你的项目中提交,面试官很容易揪着一直问,所以一定要有深度。可以抓取一个点收集一系列的相关问题,我在这里后续也会进行添加。Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。...转载 2019-02-18 22:36:13 · 543 阅读 · 0 评论