随笔分类 -  面试题

摘要:前言 当多线程访问共享且可变的数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要ThreadLocal出场了。 ThreadLocal又称线程本地变量,使用其能够将数据封闭在各自的线程中,每一个ThreadLocal能够存放一个线程级别的变量且它本身能够被多个线程共享使用, 阅读全文
posted @ 2023-11-09 07:41 IT6889
摘要:前言 昨天微信群里有人面试,被问到:“HTTP请求拦截器是基于反射又基于动态代理来实现的?”。 群里不少人回答错误,有人说:“拦截器是基于反射实现的”;也有人说:“基于动态代理实现的”。 话说拦截器,功力不够,体会不到哪里用到了反射或者动态代理,用反射也就是 Spring 创建拦截器对象的时候,不能 阅读全文
posted @ 2023-11-09 07:36 IT6889
摘要:一道面试题 我一年前写过这篇文章《有的线程它死了,于是它变成一道面试题》,这是早期作品,遣词造句,排版行文都有一点稚嫩,但是不知咋地,还是有很多人看过。 甚至已经进入了某网红公司的面试题库里面。 所以我后面应该会重写一下,翻新翻新,再补充一点新的东西进去。 现在先回顾一下这篇文章抛出的问题和问题的答 阅读全文
posted @ 2023-11-09 06:48 IT6889
摘要:前言 从最开始的,SSH到SpringMVC,随着Spring的发展,使得开发越来越容易了,SpringBoot已经成为Java程序员必会的一项,以下给小伙伴整理了30道相关面试题,也可以作为知识点,学习收藏起来。 1.什么是SpringBoot? 通过Spring Boot,可以轻松地创建独立的, 阅读全文
posted @ 2022-05-24 23:03 IT6889 阅读(1286) 评论(0) 推荐(0)
摘要:Java在J2SE 5.0后开始增加了泛型(Generics)功能,并且许多API都根据这个新的功能被重新改写了,例如List、Map、Set等与数据结构相关的类。如果我们不想使用泛型功能,也可以用J2SE 1.4或以前的版本的语法来使用这些类,但编译的时候就会出现一些警告。如果对泛型了解不足,那么 阅读全文
posted @ 2022-01-21 11:37 IT6889 阅读(106) 评论(0) 推荐(0)
摘要:如何优化提升接口的性能问题?这个问题虽然问的很广,没有一个标准答案,但回答者需要根据以往的工作经验或学习经验来进行回答,根据作答的深浅情况可以反映一个程序员的大致水平。 导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。 本文我总结了一些行之有效的,优化接口性能的办法: 一、优 阅读全文
posted @ 2022-01-19 09:53 IT6889 阅读(827) 评论(0) 推荐(1)
摘要:对于大流量高并发常见的手段:缓存,中间件削峰,限流,降级 1.缓存 常见的加缓存的方式有: 2.中间件削峰 3.限流 限流概念:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。 常见的限流手段:常用的限流 阅读全文
posted @ 2021-12-23 11:29 IT6889 阅读(269) 评论(0) 推荐(0)
摘要:前言高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。 秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成 阅读全文
posted @ 2021-12-22 14:38 IT6889 阅读(106) 评论(0) 推荐(0)
摘要:一、MySQL对于千万级的大表如何优化? 分库分表,优化索引,读写分离,增加热数据缓存 面对上千万数据的大表时候,我们应该如何优化?总所周知,这个时候索引肯定必须要有的,分库分表肯定也要搞起来的,那么我们如何去搞呢?这就涉及到了一个分库分表和索引的问题,而总所周知,索引建立不好是有问题的,分库分表搞 阅读全文
posted @ 2021-12-02 14:57 IT6889 阅读(83) 评论(0) 推荐(0)
摘要:一、前言 分库分表需要应对的技术难题有如下几个: 1. 分布式全局唯一id 2. 分片规则和策略 3. 跨分片技术问题 4. 跨分片事物问题 下面我们来看一下Mycat是如何解决分布式全局唯一id的问题的 二、Mycat全局序列号 Mycat保证id唯一的方式有如下几个: 1)本地文件方式 2)数据 阅读全文
posted @ 2021-11-30 10:30 IT6889 阅读(232) 评论(0) 推荐(0)
摘要:一、概念 二、为什么有CAS? 三、CAS解决了什么问题? 四、CAS如何去使用? 阅读全文
posted @ 2021-08-20 07:42 IT6889 阅读(222) 评论(0) 推荐(0)
摘要:ssss 阅读全文
posted @ 2021-08-18 07:35 IT6889 阅读(23) 评论(0) 推荐(0)
摘要:ssss 阅读全文
posted @ 2021-08-18 07:34 IT6889 阅读(27) 评论(0) 推荐(0)
摘要:我们以汽车分类管理程序为例来介绍合成复用原则的应用。 分析:汽车按“动力源”划分可分为汽油汽车、电动汽车等;按“颜色”划分可分为白色汽车、黑色汽车和红色汽车等。如果同时考虑这两种分类,其组合就很多。如图所示是用继淨:关系实现的汽车分类的类图。 从图中可以看出用继承关系实现会产生很多子类,而且增加新的 阅读全文
posted @ 2021-07-31 18:36 IT6889 阅读(161) 评论(0) 推荐(0)
摘要:如一个明星与经纪人的关系实例。明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则,其类图如图所示。 程序代码如下: public class LoDtest { public 阅读全文
posted @ 2021-07-31 18:35 IT6889 阅读(254) 评论(0) 推荐(0)
摘要:以一个关于课程的例子展示开闭原则: /** * 定义课程接口 */ public interface ICourse { String getName(); // 获取课程名称 Double getPrice(); // 获取课程价格 Integer getType(); // 获取课程类型 } / 阅读全文
posted @ 2021-07-31 18:33 IT6889 阅读(384) 评论(0) 推荐(0)
摘要:里氏替换原则强调的是设计和实现要依赖于抽象而非具体;子类只能去扩展基类,而不是隐藏或者覆盖基类,它包含4层含义. 一、里氏替换4原则 1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法,父类中凡是已经实现好的方法(相对于抽象方法而言), 阅读全文
posted @ 2021-07-31 18:32 IT6889 阅读(238) 评论(0) 推荐(0)
摘要:我们来写一个关于司机开车的示例,假设我们现在有个司机,可以开车,然后有一辆奔驰,于是就可以让车跑起来。 public class Driver { // 司机职责就是驾驶汽车 public void drive(Benz benz) { benz.run(); } } public class Be 阅读全文
posted @ 2021-07-31 18:31 IT6889 阅读(218) 评论(0) 推荐(0)
摘要:如本例学生成绩管理程序,学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中,其类图如图所示: 源码如下: public cla 阅读全文
posted @ 2021-07-31 18:30 IT6889 阅读(118) 评论(0) 推荐(0)
摘要:在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据一些原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 我们常见有 7 条原则,设计模式之禅这本书中概括为6原则,我们本博客就以7原则来进行说明: 开闭原则 单一职责原则 里氏替换原则 依 阅读全文
posted @ 2021-07-31 18:28 IT6889 阅读(137) 评论(0) 推荐(0)