自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java设计模式

1.1 说一说设计模式的六大原则参考答案单一职责原则一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。就一个类而言,应该只专注于做一件事和仅有一个引起变化的原因,这就是所谓的单一职责原则。该原则提出了对对象职责的一种理想期望,对象不应该承担太多职责,正如人不应该一心分为二用。唯有专注,才能保证对象的高内聚;唯有单一,才能保证对象的细粒度。对象的高内聚与细粒度有利于对象的重用。一个庞大的对象承担了太多的职责,当客户端需要该对象的某一个职责时,就不得不将所有的职责都包含进来,从而造成冗余代码。里氏

2022-09-15 15:37:17 211 1

原创 从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化

2014 年3 月 JDK 8 发布,自那以来 JDK 又连续发布了许多版本,直到今日的 JDK 18 是 Java 的第十个版本。借此机会,我们来回顾一下 HotSpot JVM 的垃圾回收器的发展全过程。HotSpot JVM 中负责管理应用程序堆的组件叫做“垃圾回收器”(Garbage Collector,即GC)。GC 负责管理应用程序堆对象的整个生命周期,从应用程序分配内存到内存被回收,都由 GC 负责。从高层来看,JVM 垃圾回收算法的最基本功能如下:当应用程序请求分配内存时,GC 负责提供内存

2022-08-23 19:31:20 255

原创 主流分布式定时任务,你知道哪些?

微服务下,推荐使用xxl-job这一类组件服务将定时任务合理有效的管理起来。而单点的定时任务有其局限性,适用于规模较小、对未来扩展要求不高的服务。相对而言,基于spring task的定时任务最简单快捷,而xxl-job的难度主要体现在集成和调试上。无论是什么样的定时任务,你都需要确保:任务不会因为集群部署而被多次执行。任务发生异常得到有效的处理任务的处理过慢导致大量积压任务应该在预期的时间点执行中间件可以将服务解耦,但增加了复杂度学习更多JAVA知识与技巧,关注与私信博主(555)!

2022-08-23 16:48:11 223

原创 面试八股文》之 MySQL 35卷

5.使用Innodb的情况下,一条更新语句是怎么执行的?23.redolog和binlog的区别是什么?29.删除表数据后表的大小却没有变动,这是为什么?25.一条Sql语句查询一直慢会是什么原因?26.一条Sql语句查询偶尔慢会是什么原因?27.Mysql主从之间是怎么同步数据的?34.bufferpool是做什么的?22.redolog是怎么记录日志的?20.relaylog是做什么的?19.undolog是做什么的?21.redolog是做什么的?...

2022-07-29 14:02:14 131

原创 Redis的数据结构之bitmap

bitmap简称位图,是由多个二进制位组成的数组,数组中的每个二进制位都有与之对应的偏移量,可以通过这些偏移量对位图中指定的一个或多个二进制位进行操作。本文讲解了位图的基本数据结构和操作命令,位图适合于一些特定的场景,我们需要集合实际的业务场景情况,选择合适的数据结构存储能够大大的降低Redis的内存空间说明httpshttpshttpshttpshttpshttpshttpshttpshttps。...

2022-07-28 16:55:21 7194 3

原创 这10道基础Java面试题,虐哭了多少人

举例来说,如果父类中的方法抛出的是IOException,那么子类中重写的方法不能抛出Exception,可以是IOException的子类或者不抛出任何异常。类C同时继承了类A和类B,类C的对象在调用类A和类B中重写的方法时,就不知道该调用类A的方法,还是类B的方法。方法对key进行哈希算法,如果key是相同的,那么哈希后的结果也是相同的,意味着数组中的下标是相同的,新放入的值就会覆盖原来的值。另外,方法重写和方法重载时的规则也不尽相同。...

2022-07-28 15:11:58 117

原创 精选 21道 Redis 最常问面试题!收藏一波 !

redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。...

2022-07-28 15:06:19 4896 1

原创 Redis

解释连续写数据库和缓存,但是操作期间,出现并发了,数据不一致了。先更新数据库,再更新缓存。先删缓存,再更新数据库。先更新数据库,再删除缓存。先更新数据库,再更新缓存。这么做的问题是当有2个请求同时更新数据,那么如果不使用分布式锁,将无法控制最后缓存的值到底是多少。也就是并发写的时候有问题。先删缓存,再更新数据库。这么做的问题如果在删除缓存后,有客户端读数据,将可能读到旧数据,并有可能设置到缓存中,导致缓存中的数据一直是老数据。总的来讲,比较麻烦。先更新数据库,再删除缓存。......

2022-07-28 13:40:19 399

原创 java的特点是什么?

java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等与传统的编程语言,如C、C++相比,java能够更加容易上手,而比之微软平台的开发语言,如VB、MFC等,则有着跨平台运行的能力,尽管java没有能够完全实现最初的一次编程、随处运行的口号,但是java相比於其它较早的编程语言,仍然拥有极高的跨平台能力。1、简单性Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、指针等概念,所以Java语言学习起来更简单,使用起来也更方便。可以节省大量人力物力。...

2022-07-27 21:25:54 7033

原创 40 个 Java 多线程问题总结

前言个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。40个问题汇总1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:

2022-07-27 21:15:38 192

原创 别再用过时的方式了!全新版本Spring Security,这样用才够优雅!

SpringSecurity的升级用法确实够优雅,够简单,而且对之前用法的兼容性也比较好!个人感觉一个成熟的框架不太会在升级过程中大改用法,即使改了也会对之前的用法做兼容,所以对于绝大多数框架来说旧版本会用,新版本照样会用!本次的内容大致的就介绍到这里拉,由于内容太多,只能简单介绍到这里,如有需要以上内容的完整版,大家可以私信我获取哦~~后台关注我后私信回复【555】即可获取httpshttpshttpshttpshttpshttps。...

2022-07-27 20:59:52 527 1

原创 面试题系列:Redis 夺命连环11问

所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机引发雪崩。提前把热key打散到不同的服务器,降低压力加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询缓存击穿缓存击穿的概念就是单个key并发访问过高,过期时导致所有请求直接打到db上,这个和热key的问题比较类似,只是说的点在于过期导致请求全部打到DB上而已。缓存穿透缓存雪崩。...

2022-07-27 20:33:39 171

原创 一说项目就spring,你真的懂spring么?

因此,你会发现,造一辆车需要层层嵌套零部件的生产逻辑而成,使得这家工厂需要面面俱到,而且要级级紧扣,每一个步骤都需要等待前一个步骤完成,这就造成这个家工厂效率低下,而在Java编程思想中,这就叫做产生了高度耦合。由此可见,A工厂就依赖于B工厂的零部件,在这spring的思想里,就是所谓的依赖,也就是说spring是一个容器(B工厂),而我们的项目(A工厂)需要任何的对象,都是从容器中获取,而不需要关心他是怎么来的。按照网上说的是个容器框架,是什么开发框架,是个..。B工厂代理A工厂的零部件生产。...

2022-07-27 20:25:02 127

原创 Java后端学习路线梳理

自动配置、开箱即用-整合Web-整合数据库(事务问题)-整合权限(Shiro、SpringSecurity)-整合各种中间件缓存、MQ、RPC框架、NIO框架等。说明本文限于篇幅,故而只展示部分的面试内容,完整的Java面试学习文档小编已经帮你整理好了,有需要的朋友点赞+关注私信我555免费领取Java、大厂面试学习资料哦!-Redis——5大数据类型、事务、消息通知、管道、持久化、集群-memcache。DNS/HTTP/HTTPS协议。JVM性能监控与故障定位。...

2022-07-27 17:12:22 507

原创 老大难的 Java ClassLoader 再不理解就老了

ClassLoader里面有三个重要的方法loadClass()、findClass()和defineClass()。loadClass()方法是加载目标类的入口,它首先会查找当前ClassLoader以及它的双亲里面是否已经加载了目标类,如果没有找到就会让双亲尝试加载,如果双亲都加载不了,就会调用findClass()让自定义加载器自己来加载目标类。ClassLoader的findClass()方法是需要子类来覆盖的,不同的加载器将使用不同的逻辑来获取目标类的字节码。...

2022-07-27 13:18:39 237

原创 SpringMVC面试中常问到的23道题以及答案

SpingMVC正式的名字为SpringWebMVC,是SpringFramework框架中的其中一个模块,基于ServletAPI构建,同时使用MVC的架构模式,主要用以简化传统的Servlet+JSP进行web开发的工作。URL到controller的映射http请求参数绑定http响应的生成和输出题目1、什么是SpringMvc?答SpringMvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。http"说明。...

2022-07-26 19:08:37 1376

原创 最近面试Java后端开发的感受:如果就以平时项目经验来面试,通过估计很难

如果有,那么你就可以适当描述下项目的需求,然后说,通过读底层代码,我了解了两者的差别,而且在这个实际需求里,我就用了TreeSet,而且我还专门做了对比性试验,发现用TreeSet比HashSet要高xx个百分点。而前者,一直在重复劳动,能力也只一直停留在“会干活”的层面。哪怕你在前三点表现一般,那么至少也能超越将近一般的候选人,尤其当你在SQL优化方面表现非常好,那么你在面试高级开发时,数据库层面一定是达标的,如果你连第四点也回答非常好,那么恭喜你,你在数据库方面的能力甚至达到了初级架构的级别。...

2022-07-26 16:12:20 374

原创 这33道Java集合面试题,你会了吗?

切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视。3、Comparable和Comparator接口的区别?5、Enumeration和Iterator接口的区别?26、ArrayList和LinkedList的区别?10、HashMap与Hashtable的区别?7、List、Set、Map之间的区别是什么?24、常用的线程安全的List集合有哪些?...

2022-07-26 15:05:57 78

原创 面试真题:经典智力题最详汇总(上)

最近各大公司的提前批已经逐渐开始了,同学们除了常规刷题之外,也需要为面试有针对性地进行复习。无论你是技术岗,还是非技术岗,面试的时候往往会遇到一种特殊的题型智力题。智力题有点类似于脑筋急转弯,面试官主要是想考察候选人的思维灵活性。小编刚开始接触智力题的时候,可以说是一脸懵逼了,大脑一片空白(内心这都是在说些啥?)。最后还是得靠刷题的思想来解决智力题,其实面试常见的智力题类型并不多,很多都是类似的变种题。...

2022-07-26 14:26:43 194

原创 不是吧,阿Sir啊,可不可以不用再写finally?

那么问题就来了,各位大佬仔细看,这里的finish方法是可以抛出IO异常的,如果在执行finish()方法时,抛出了IO异常,那么下面的out.close()方法实际上不会被执行的。再看看我上面给出示例中的ByteArrayOutputStream和GZIPOutputStream流,其实已经帮实现了Closeable接口,所以我们再使用的时候,我们借助try-with-source语法糖就能免去使用finally释放资源的那一堆代码了。那么问题到底出在了哪里?...

2022-07-26 14:21:21 89

原创 《我们一起进大厂》系列- Redis基础

在技术面试的时候,不管是Redis还是什么问题,如果你能举出实际的例子,或者是直接说自己开发过程的问题和收获会给面试官的印象分会加很多,回答逻辑性也要强一点,不要东一点西一点,容易把自己都绕晕的。还有一点就是我问你为啥用Redis你不要一上来就直接回答问题了,你可以这样回答帅气的面试官您好,首先我们的项目DB遇到了瓶颈,特别是秒杀和热点数据这样的场景DB基本上就扛不住了,那就需要缓存中间件的加入了,目前市面上有的缓存中间件有Redis和Memcached。...

2022-07-25 21:43:40 98

原创 得物多活架构设计之路由服务设计

这种降级会安排在用户不活跃的时段,往往不会对用户的体验造成太大的影响。如图所示,状态A是变更之前的状态,状态C是变更后的目标状态,状态A与状态C是不能同时出现的,但是状态A变更为状态B,在等待直到所有机房的所有相关机器全部都变更为状态B,那么再从B到状态C,这样就不会出现状态A和状态C同时出现的情况。这里特殊提一下归属的默认优化,我们将某一个机房作为默认机房,所有归属到此机房的用户无需加入路由表,当调用路由服务查询此用户路由时,路由表返回空值,路由服务直接返回默认机房,从而大大降低路由表的大小。...

2022-07-25 21:29:58 1190

原创 Java后端学习路线图,你真的只需要这一张!

作为后台同学,常年被面试官问linux相关的问题,所以觉得学好linux还是蛮重要的,除了基本命令以外,最好还能了解一些shell脚本,甚至是内核相关的知识,这方面是我的一个弱项。如Redis,memcache一类的缓存,作为后端开发者的我们也需要对应掌握,当然,它们的高级特性,以及分布式方案,也是必备的知识点。算法一直是校招同学面前的一座大山,作为后端同学来讲,除了基本的数据结构算法以外,也要会一些高级的算法,譬如dp,搜索,贪心等等。当然,有一些知识点是可选的,并不是说上面有的你都要会啦。...

2022-07-25 21:14:27 1312

原创 如何实现可插拔配置?

最近有个想法把这个系统做成是线上的,可以由各大开发者在推送消息的时候调用我的接口,做成这样一定会很有意思,面临的挑战和需求也会更多。但这还是有问题的每个股东有独立的消费者组,意味着每个股东能消费整个topic的所有消息,这又意味着股东会接受到其他股东的测试消息(明明只想要自己测试的消息,却来了一条其他人发的)。我的股东们是能直接用我的远程服务的Kafka的Topic是共享的,Group消费者也是共享的,在不修改的前提下,直接使用会带来一个问题。我的项目逐渐成型了之后,有挺多小伙伴吐槽过我的项目。...

2022-07-25 21:03:28 133

原创 一篇文章把RabbitMQ、RocketMQ、Kafka三元归一

一个Topic,代表逻辑上的一个业务数据集,比如订单相关操作消息放入订单Topic,用户相关操作消息放入用户Topic,对于大型网站来说,后端数据都是海量的,订单消息很可能是非常巨量的,比如有几百个G甚至达到TB级别,如果把这么多数据都放在一台机器上可定会有容量限制问题,那么就可以在Topic内部划分多个Partition来分片存储数据,不同的Partition可以位于不同的机器上,相当于。但是此时,RocketMQ不会立刻将这个有问题的消息丢弃,而会将其发送到这个消费者组对应的一种特殊队列死信队列。...

2022-07-25 20:42:52 150

原创 分布式 session 的4个解决方案,你觉得哪个最好?

分布式环境session解决的4个方案。

2022-07-25 19:39:53 68

原创 必问的经典68道jvm面试题总结

1.JDK、JRE、JVM关系?2.启动程序如何查看加载了哪些类,以及加载顺序?3. class字节码文件10个主要组成部分?4.画一下jvm内存结构图?

2022-07-25 19:25:09 208

原创 多年Java后端经验 学习路线总结分享,一年自学进大厂

本文旨在梳理整个Java后端的学习路线。想要找到不错的Java后端开发工作,最重要的其实分为四大部分,如下图编程基础、研发工具、应用框架和一些运维知识。第一部分编程基础作为应届生,通过校招的方式入职,最最重要的应该就是编程能力了。很多人往往会有一种误区,Java后端工作Java语言本身应该是最重要的。语言本身固然重要,但是就校招来看,编程四大件+数据库的重要性甚至超过了Java语言本身,一定不要轻视编程基础的学习。ava语言包括基础语法、面向对象部分(封装继承和多态),以及一些非常重要。...

2022-07-25 16:43:54 875

空空如也

空空如也

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

TA关注的人

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