huangziqiang
huangziqiang
全部文章
java
面试(1)
归档
标签
去牛客网
登录
/
注册
huangziqiang的博客
全部文章
/ java
(共45篇)
秒杀项目常问问题之Redis能否用作消息队列?怎么实现?
redis有一个数据类型叫list(列表),它的每个子元素都是 string 类型的双向链表。我们可以通过 push、pop 操作从链表的头部或者尾部添加删除元素。这使得 list 既可以用作栈,也可以用作队列。假如,我们有一个队列系统,把一个个任务放到队列中,另一个进程就把队列中的任务取出来执行。...
2021-09-16
0
480
秒杀项目之项目最大的难点/挑战点是什么?
我觉得比较有挑战的点是判断订单是否超时这块的设计。刚开始的时候我是想到了数据库的轮询,就是通过一个线程定时的取扫描数据库,通过订单时间来判断是不是有超时的订单,然后进行update或者delete操作,这种方案虽然简单易行,但是这种方案对服务器的内存消耗特别大,对服务器的消耗也特别大,并且这样得到的...
2021-09-16
0
701
秒杀项目之缓存穿透、缓存雪崩
缓存穿透 缓存击穿表示恶意用户模拟请求很多缓存中不存在的数据,由于缓存中都没有,导致这些请求短时间内直接落在了数据库上,导致数据库异常。这个我们在实际项目就遇到了,有些抢购活动、秒杀活动的接口API被大量的恶意用户刷,导致短时间内数据库超时了,好在数据库是读写分离,同时也有进行接口限流,hold住了...
2021-09-16
0
773
秒杀项目之缓存一致性问题
缓存一致性问题:数据库更改了数据,Redis里的数据就和数据库不一致了,产生脏读 解决办法:1)做一个job,去定时同步数据库里的数据都redis缓存中,我们的业务请求直接查询redis缓存,无论有或者没有数据都直接返回结果。这样可以避免缓存穿透、缓存雪崩等问题,也能缓解redis缓存和数据库不一...
2021-09-16
0
934
Spring框架的核心
Spring 的核心思想就是:简化 Java 开发。为了达到这个目的,就有了以下的四个策略:基于POJO的轻量级和最小入侵性编程通过依赖注入和面向接口实现松耦合基于切面的惯例进行声明式编程通过切面和模板减少样板式代码 参考链接:https://www.cnblogs.com/xingyys/p/11...
2021-09-15
0
317
Spring Bean的生命周期
四个阶段:实例化 -> 属性赋值 -> 初始化 -> 销毁 实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段https://www.jianshu.com/p/1dec08d290c1 细说的话,有以下这些过程:1、创建(调用构造函数...
2021-09-15
0
390
Spring和SpringBoot的区别
SpringSpring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test,这些模块缩短应...
2021-09-15
0
530
接口和抽象类的区别
抽象类与接口的区别,这是一个经常被问到面试题,区别主要有以下几点,我们可以从几个方面进行分析:(一) 继承方面: (1) 抽象类只能单继承;接口可以多实现(二) 成员属性方面: (1) 抽象类中可以有普通属性,也可以有常量 (2) 接口中的成员变量全部默认是常量,...
2021-09-14
0
501
了解static吗,static数据存在哪?生命周期什么样的
static修饰属性、方法、代码块、内部类 static数据的生命周期就是类的生命周期,Java虚拟机会在加载类的过程中为静态变量分配内存,一个类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段。 静态的优缺点优点:1)对对象的共享数据提供单独空间的存储,节省空间,没有必要每一个...
2021-09-13
0
1203
你真的了解final关键字吗?
final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。 final修饰变量final成员变量表示常量,只能被赋值一次,赋值后值不再改变。1)当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变...
2021-09-13
0
382
首页
上一页
1
2
3
4
5
下一页
末页