
面试查漏补缺
文章平均质量分 91
兢兢业业的子牙
这个作者很懒,什么都没留下…
展开
-
Redis---Info命令
1、简介Redis提供了info指令,它会返回关于Redis服务器的各种信息和统计数值。在使用Redis时,时常会遇到一些疑难杂症需要我们去排查,这个时候我们可以通过info指令来获取Redis的运行状态,然后进行问题的排查。通过给定可选的参数 section ,可以让命令只返回某一部分的信息:server: Redis服务器的一般信息 clients: 客户端的连接部分 memory: 内存消耗相关信息 persistence: RDB和AOF相关信息 stats: 一般统计 r原创 2021-10-04 22:57:12 · 4316 阅读 · 0 评论 -
MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。MySQL大致可归纳为以下3种锁:表级锁:开销小,加...原创 2021-09-26 20:35:24 · 400 阅读 · 0 评论 -
并发编程看这一篇就够了
线程池线程池:一个管理线程的池子。为什么使用线程池?降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。统一管理线程,避免系统创建大量同类线程而导致消耗完内存。public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQue原创 2021-09-22 21:55:14 · 616 阅读 · 0 评论 -
Spring监听器---ApplicationListener
说到事件监听,想到的肯定是观察者模式。但是这儿主要说下spring中的监听是怎么样的流程。这就不得不说到spring容器的refresh方法,容器启动过程中,listener相关的主要是这个三个方法:initApplicationEventMulticaster方法初始化事件多播器,后续的事件发布都是由多播器来发布的;registerListeners注册监听器到前面初始化好的多播器上面去;finishRefresh容器启动完成最后刷新,发布ContextRefreshedEvent事件。..原创 2021-09-15 21:37:23 · 1337 阅读 · 0 评论 -
Rocketmq源码分析---broker 启动流程
1. 启动入口broker的启动类为org.apache.rocketmq.broker.BrokerStartup,代码如下:public class BrokerStartup { ... public static void main(String[] args) { start(createBrokerController(args)); } ...}在main()方法中,仅有一行代码,这行代码包含了两个操作:createBro原创 2021-09-01 21:24:47 · 330 阅读 · 0 评论 -
Redis分布式锁---Red Lock
1.Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁;官方地址这个锁的算法实现了多redis实例的情况,相对于单redis节点来说,优点在于 防止了 单节点故障造成整个服务停止运行的情况;并且在多节点中锁的设计,及多节点同时崩溃等各种意外情况有自己独特的设计方法前置概念:1.TTL:Time To Live; redis key 的过期时间或有效生存时间2.clock drift:时钟漂移;指两个电脑间时间流速基本相同的情况下,两个电脑原创 2021-08-25 21:47:50 · 859 阅读 · 0 评论 -
一天一道面试题---开源RPC框架技术选型
一.前言RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务.一般RPC框架要实现远程调用,至少要完成三部分的功能:通信框架,通信协议,序列化和反序列化.二.常见的语言平台RPC框架:RPC框架 是否支持跨语言 描述 Dubbo 否 国内最早开源的RPC框架,有阿里巴巴公司开发并于2011年对外开源,只支持Java语言 Motan 否 微博内部使用的RPC...原创 2021-08-05 22:34:08 · 456 阅读 · 0 评论 -
springBoot整合thrift
前言: thrift的基础知识1.Thrift的服务端1.1.引入maven依赖 <parent> <artifactId>com.ajc.demo</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent> <depende原创 2021-06-06 21:34:33 · 657 阅读 · 3 评论 -
redis实现热搜榜
核心需求一个项目中,遇到了搜索热词统计的需求,我使用了 Redis 的五大数据类型之一 Sorted Set 实现。目前有两项数据需要统计:“当日搜索热词 top10”和“当周搜索热词 top10”。关于这两项数据的统计方法,目前想到了两种实现方法:两个 Redis 的 Sorted Set 实现,一个 Sorted Set A 统计当天,0 点 top10 记录进 MySQL,Sorted Set 清零。一个 Sorted Set B 统计当周,每周日 top10 记录进 MySQL,Sorted原创 2021-05-30 12:43:16 · 3930 阅读 · 2 评论 -
过滤器 (Filter) 和 拦截器 (Interceptor)
1.过滤器 (Filter)过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法。init() :该方法在容器启动初始化过滤器时被调用,它在 Filter 的整个生命周期只会被调用一次。注意:这个方法必须执行成功,否则过滤器会不起作用。doFilter() :容器中的每一次请求都会调用该方法, FilterChain 用来调用下一个过滤器 Filter。destroy(): 当容器销毁 过滤器实例时调用原创 2021-04-28 23:28:48 · 5202 阅读 · 12 评论 -
JVM垃圾收集算法和垃圾收集器
1.如何判断对象是否存活在进行垃圾回收的时候如何判断对象是否存活呢?(1)引用计数法给对象添加一个计数器,每引用一次计数器+1,失效就-1,任何时候,计数器=0的对象就是没有被引用的对象,可以被回收。但是这种方法,没办法解决对象之间引用的情况,比如对象A引用了对象B,对象B又引用了对象A,所以又有了 跟搜索算法。(2)跟搜索算法 GC ROOT 可达性算法GC Roots的对象为起点,从这些节点向下开始搜索,搜索的路程成为引用连,当一个对象到GC Roots没有任何引用链的时候,该对象可以被认定为原创 2021-03-31 16:55:09 · 165 阅读 · 0 评论 -
IO(2)---BIO、NIO、AIO编程
1.BIO编程1.1、传统的BIO编程网络编程的基本模型是C/S模型,即两个进程间的通信。服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。简单的描述一下BIO的服务端通信模型:采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责转载 2021-03-24 21:46:49 · 137 阅读 · 0 评论 -
class加载过程
1.class加载过程java虚拟机把描述类的数据从class文件加载到内存,并对数据进行 校验/准备/解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。loading -> linking (verification-> preparation -> resolution )-> initializingloading:把class文件load到内存中,采用双亲委派,主要是为了安全性verification:校验class文件是否符原创 2021-03-17 21:47:57 · 753 阅读 · 2 评论