02 2022 档案
摘要:为什么要知道MySQL的执行过程呢?是因为我们要对sql语句进行优化。这个是很要必要的。 客户端发送一条查询给服务器。 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。 服务器端进行SQL解析,预处理,再由优化器生成对应的执行计划。 MySQL根据优化器生成的执
阅读全文
摘要:SQL查询语句先执行SELECT? SELECT 语句的完整语法,如下: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_c
阅读全文
摘要:题目 网上有好多教程,看的我很头大。经过朋友的讲解,豁然顿悟。废话不说。 要做对这道题,首先就是先要搞懂折半查找树是怎样的构建的过程,折半查找,顾名思义,就是通过一次次的折半,来构建树,小的放左边,大的放右边。 构建树,肯定要先有根节点。没有问题吧。所以说先要折半。折半的还有问题,要么正好是中点,要
阅读全文
摘要:冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改 变
阅读全文
摘要:抛出问题 内存和主存的区别 什么是磁盘IO 胡说八道 question 1 内存包括主存(内存条,基于DRAM)与高速缓存(Cache,基于SRAM)两部分。 一、定义上的区别: 主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CP
阅读全文
摘要:今天面试的时候,傻逼了,这可是自己以前看过的,面试官问的时候,我整个一脸傻逼。好痛苦,看的好多东西记不住。感觉面试实习又要凉凉😭。 分析 保证被volatile修饰的共享变量对所有线程总是可见的,也就是当一个线程修改了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知。 //线
阅读全文
摘要:线程之间为什么要进行通信 线程是操作系统调度的最小单位,有自己的栈(JVM中的虚拟机stack)空间,可以按照既定的代码逐步的执行,但是如果每个线程间都孤立的运行,那就会造资源浪费。所以在现实中,我们需要这些线程间可以按照指定的规则共同完成一件任务,所以这些线程之间就需要互相协调,这个过程被称为线程
阅读全文
摘要:链接 前提知识 集合类存放于 Java.util 包中,主要有 3 种:Set(集)、List(列表包含 Queue)和 Map(映射)。 Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 Iterator:迭代器,可以通过迭代器遍历集合中的数据 M
阅读全文
摘要:学习地址推荐 String(字符串类型) String 是 Redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。 String 类型是二进制安全的。Redis 的 String 可以包含任何数据。比如jpg图片或者序列化的对象。 Stri
阅读全文
摘要:5种。链接 使用new关键字: ObjectName obj = new ObjectName(); 使用反射。的java.lang.Class或者java.lang.reflect.Constructor 类的newInstance()方法。 使用对象克隆clone()方法:ObjectName
阅读全文
摘要:概念 成员变量 作用范围是整个类,相当于C中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括实例变量和静态变量(类变量);都存放在堆(Heap)。 实例变量。独立于与方法之外的变量,无static修饰,声明在一个类中,但在方法、构造方法和语句块之外,数值型变量默认值为0,布
阅读全文
摘要:&& &&:逻辑与运算符。当运算符左右两边的表达式都为 true,才返回 true。同时具有短路性,如果第一个表达式为 false,则直接返回 false。 例如在验证用户登录时判定用户名不 是 null 而且不是空字符串,应当写为:username != null && !username.equ
阅读全文
摘要:面向对象的三个基本特征是:封装、继承和多态。 推荐阅读 继承 继承:让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 好处 提高了代码的复用性 提高了代码的维护性 在类与
阅读全文
摘要:重写: 重写(Override)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。 重载: 重载(Overload)是一个类中多态性的一种
阅读全文
摘要:Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了,.post、.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() .ajax({ type: 'POST', url:
阅读全文
摘要:在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何
阅读全文
摘要:延迟队列也是死信队列的一种,也就是当消息TTL过期,对应的一种情况。 概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 应用场景 订单在十分钟之内未支付则自
阅读全文
摘要:死信队列 概念 推荐阅读1 推荐阅读2 推荐阅读3 死信队列全称 Dead-Letter-Exchange 简称 DLX 是 RabbitMQ 中交换器的一种类型,消息在一段时间之后没有被消费就会变成死信被重新 publish 到另一个 DLX 交换器队列中,因此称为死信队列。死信队列用于处理无法被
阅读全文