成长之路
文章平均质量分 89
YINZONGCHAO
这个作者很懒,什么都没留下…
展开
-
Java设计模式学习
一.概述熟练掌握各种设计模式,并能在实际编程开发中灵活运用它们,不仅能使代码更规范,重用性更高,同时也能保证代码的可靠性,提高开发效率。这段时间又系统看了设计模式的相关内容,整理学习总结如下:七个设计原则 创建型模式(5种) 结构型模式(7种) 行为型模式(11种)总体来说设计模式分为三大类:(本文着重讲解标红)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...原创 2021-01-08 10:27:10 · 376 阅读 · 0 评论 -
面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解
来自:cnblogs.com/kkbill/p/11381783.html背景首先,来谈谈B树。为什么要使用B树?我们需要明白以下两个事实:【事实1】不同容量的存储器,访问速度差异悬殊。以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的。有个形象的比喻,若一次内存访问需要1秒,则一次外存访问需要1天。所以,现在的存储系统,都是分级组织的。最常用的数据尽可能放在更高层、更小的存储器中,只有在当前层找不到,才向更低层、更大的存储器中寻找。这也就解释了,当处理大规模数转载 2021-01-06 13:25:33 · 276 阅读 · 1 评论 -
面试官:你真的知道 Java 类是如何被加载的吗?
来自:https://yq.aliyun.com/articles/710407一:前言最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader,我确实也好久没写JVM相关的文章了,有点手痒痒,涂了皮炎平也抑制不住。我在向朋友解释的时候是这么说的:双亲委派模型中,ClassLoader在加载类的时候,会先交由它的父ClassLoader加载,只有当父ClassLoader加载失败的情况下,才会尝试自己去加载。这样可以实现部分类的复用,又可以实现部转载 2021-01-05 09:07:58 · 251 阅读 · 0 评论 -
面试官:Redis分布式锁如何解决锁超时问题
一、前言关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完的问题, 这样会导致: A线程超时时间设为10s(为了解决死锁问题), 但代码执行时间可能需要30s, 然后redis服务端10s后将锁删除, 此时, B线程恰好申请锁, redis服务端不存在该锁, 可以申请, 也执行了代码, 那么问题来了, A、B线程都同时获取到锁并执行业务逻辑, 这与分布式锁最基本的性质相违背: 在任意一个时刻, 只有一个客户端持有锁, 即独享。转载 2021-01-05 08:57:17 · 1675 阅读 · 0 评论 -
史上最全的数据库面试题,面试前刷一刷!
一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超键,即没有冗余元素的超键。主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。外键:在一个表中存在的另一个表的主键称此表的外键。2.为什么用自增列作为主键如果我们定义了主键(PRIMARY K转载 2021-01-05 08:52:00 · 1401 阅读 · 0 评论 -
面试官:Java中的finally一定会被执行吗?
一、前言因为这次面试有问到一些同学finally的问题,发现自己这块好像有点记不太清楚了,有的点可能还给人家说错了,一度弄得场面有些尴尬。所以说这篇文章深入研究一下finally的执行情况和返回值的情况。二、finally一定会执行吗?先给答案:肯定不是。我们可以看两种情况:1.在执行try块之前直接return,我们发现finally块是不会执行的publicclassTryCatchTest{privatestaticinttotal(){...转载 2021-01-05 08:50:50 · 242 阅读 · 0 评论 -
我们说StringBuilder是线程不安全的,是什么原因呢?
引言面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。分析在分析这个问题之前我们要知道StringBuilder和StringBuffer的内原创 2021-01-05 08:48:57 · 255 阅读 · 0 评论 -
给你清清楚楚讲明白HTTPS原理
大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA 证书等。但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。HTTPS 的实现原理大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密...原创 2021-01-05 08:42:56 · 894 阅读 · 0 评论 -
Java面试-Redis
Redis篇1.什么是Redis?Redis本质是一直Key-Value类型的内存数据库。因为是纯内存操作所以性能非常好,而且还支持多种数据结构。另外Redis可以对存入的Key-Value设置expire时间。缺点是数据库容量受到物理内存的限制,不能做海量数据的高性能读写。2.Redis支持哪几种数据类型?数据类型 使用场景 String 缓存,计数器,session Hash 存储用户信息,【key,field,value】语法:Hset key field v原创 2020-09-14 09:25:26 · 218 阅读 · 0 评论 -
为什么需要消息队列?使用消息队列有什么好处?
目录一、消息队列的特性二、为什么需要消息队列?三、使用消息队列有什么好处?四、为什么需要分布式?五、分布式环境下需要解决哪些问题?六、如何实现?七、常见消息队列对比和选型一、消息队列的特性业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO,先投递先到达的保证是一个消息队列和一个buffer的本质区别。容灾,对于普适的消息队列组件来说,节点的动态增删和消息的持久化,原创 2020-09-14 09:22:58 · 4052 阅读 · 0 评论 -
Java集合框架 10 连问
首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下。大家看到这些总结,有疑惑的,就赶紧去查一查深入了解一下,当然也欢迎指出文中错误之处。以下是大纲: HashMap和HashTable的区别? 说一下 HashMap 的底层结构? 为什么HashMap是线程不安全的 ArrayList 和 LinkedList 的区别是原创 2020-09-14 09:21:10 · 221 阅读 · 0 评论 -
谈谈为什么要拆分数据库?有哪些方法?
1. 为什么要拆分数据库?单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。就像《淘宝技术这十年》里面说到的,电商业务的数据量增长飞快,所以最开始的PHP+MySQL的架构已经不能满足实际要求了,于是淘宝想到的第一个办法就是把MySQL替换成Oracle。但是没过了多久,在08年前后,单节点的Oracle数据库也不好用了,于是淘宝终于告别了单节点数据库,开始拆分数据库。从一个节点,变成多个节原创 2020-09-14 09:19:06 · 595 阅读 · 0 评论 -
java线程通信方式的理解
多线程和并发,在平时开发中有些小伙伴用的不多,但是有些工作经验的面试中还是容易被问到的,故在之后几期先整理一些常见的多线程面试题供参考。通信方式 ①同步 ②while轮询的方式 ③wait/notify机制 ④管道通信 一,介绍本文总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。二,线程间的通信方式①同步这里讲的同步是指多个线程通过synchronized关键字这种方式来实原创 2020-09-14 09:12:52 · 286 阅读 · 0 评论