宽表为什么横行?

2023-02-15
阅读 5 分钟
631
宽表在BI业务中比比皆是,每次建设BI系统时首先要做的就是准备宽表。有时系统中的宽表可能会有上千个字段,经常因为“过宽”超过了数据库表字段数量限制还要再拆分。

为什么用元空间替代永久代?

2023-02-13
阅读 2 分钟
678
永久代和元空间都是 HotSpot 虚拟机中的概念,HotSpot 虚拟机是 Sun JDK 和 Open JDK 中自带的虚拟机,也是目前使用范围最广泛的 Java 虚拟机,当我们提到虚拟机时,大概率指的就是 HotSpot 虚拟机。

对线面试官:浅聊一下 Java 虚拟机栈?

2023-02-09
阅读 5 分钟
783
对于 JVM(Java 虚拟机)来说,它有两个非常重要的区域,一个是栈(Java 虚拟机栈),另一个是堆。堆是 JVM 的存储单位,所有的对象和数组都是存储在此区域的;而栈是 JVM 的运行单位,它主管 Java 程序运行的。那么为什么它有这样的魔力?它存储的又是什么数据?接下来,我们一起来看。
封面图

面试必问:说一下 Java 虚拟机的内存布局?

2023-02-06
阅读 13 分钟
1.1k
我们通常所说的 Java 虚拟机(JVM)的内存布局,一般是指 Java 虚拟机的运行时数据区(Runtime Data Area),也就是当字节码被类加载器加载之后的执行区域划分。当然它通常是 JVM 模块的第一个面试问题,所以,接下来我们一起来看它里面包含了哪些内容。
封面图

面试官:什么是双亲委派模型?

2023-02-03
阅读 3 分钟
909
双亲委派模型是 Java 类加载器的一种工作模式,通过这种工作模式,Java 虚拟机将类文件加载到内存中,这样就保证了 Java 程序能够正常的运行起来。那么双亲委派模型究竟说的是啥呢?接下来我们一起来看。

类是如何加载的?

2023-01-28
阅读 2 分钟
751
在 Java 中,类加载的流程有一个专门的机制叫做“类加载机制”。类加载机制是指一个类在 Java 虚拟机(JVM)中的执行流程,它也是 Java 程序能够正常执行的关键所在,那它的具体执行流程是啥?接下来我们一起来看。

SQL 嵌套 N 层太长太难写怎么办?

2023-01-17
阅读 7 分钟
509
我们工作中写SQL处理数据是家常便饭,不管是应用内数据处理还是临时查询分析都可以用SQL完成,相对其他技术(如Java等高级语言)也更简单。不过,SQL的简单只限于简单需求,有些复杂计算场景SQL写起来却很难,嵌套N层以至于达到几百上千行,说SQL代码长度时通常不会以行计而是以KB计。这种情况并不少见,相信经常写SQL的...

2022年终总结:不再用“拼命”来应对极度的不安全感

2022-12-31
阅读 3 分钟
1.4k
今年的状态和以往的每年都不同,以往的每年都感觉在“疲于奔命”中度过,连呼吸都感觉在浪费时间,所以就拼命的工作、拼命的写文章、拼命的学技术、拼命的看书、拼命的成长......并且只有在拼命时,才会觉得踏实,但现在回头再看,只不过是用“拼命”来应对心中极度的不安全感,这可能就是佛教讲的“执着”。

ClickHouse 挺快,esProc SPL 更快

2022-12-15
阅读 6 分钟
642
先用ClickHouse(简称CH)、Oracle数据库(简称ORA)一起在相同的软硬件环境下做对比测试。测试基准使用国际广泛认可的TPC-H,针对8张表,完成22条SQL语句定义的计算需求(Q1到Q22)。测试采用单机12线程,数据总规模100G。TPC-H对应的SQL都比较长,这里就不详细列出了。

列存数据仓库怎样更高效

2022-11-10
阅读 4 分钟
592
很多数据仓库产品都采用了列式存储。如果数据表的总列数很多而计算涉及的列很少,采用列存就只读取需要的列即可,能够减少硬盘访问量,提高性能。特别是数据量非常大时,硬盘扫描和读取的时间占比很大,这时候列存的优势会很明显。

有没有完全自主的国产化数据库技术

2022-10-24
阅读 5 分钟
614
数据库号称IT领域三大核心之一(其他两个是CPU和操作系统),一直以来都被国际巨头垄断,人家控制着核心,想什么时候锁喉就什么时候锁,你一点办法都没有。

面试突击91:MD5 加密安全吗?

2022-10-18
阅读 4 分钟
674
MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法。MD5 可以将任意字符串,通过不可逆的字符串变换算法,生成一个唯一的 MD5 信息摘要,这个信息摘要也就是我们通常所说的 MD5 字符串。那么问题来了,MD5 加密安全吗?
封面图

面试突击90:过滤器和拦截器有什么区别?

2022-10-16
阅读 5 分钟
927
过滤器(Filter)和拦截器(Interceptor)都是基于 AOP(Aspect Oriented Programming,面向切面编程)思想实现的,用来解决项目中某一类问题的两种“工具”,但二者有着明显的差距,接下来我们一起来看。
封面图

面试突击89:事务隔离级别和传播机制有什么区别?

2022-10-09
阅读 3 分钟
952
事务隔离级别和事务传播机制都是对事务行为的规范,但二者描述的侧重点却不同。本文这里所说的事务隔离级别和事务传播机制指的是 Spring 框架中的机制。
封面图

面试突击88:加入事务和嵌套事务有什么区别?

2022-10-07
阅读 4 分钟
971
加入事务和嵌套事务是指在 Spring 事务传播机制中的加入事务(REQUIRED)和嵌套事务(NESTED)的区别,二者看似很像,实则截然不同,那么它们有什么区别呢?接下来我们一起来看。
封面图

面试突击87:说一下 Spring 事务传播机制?

2022-09-27
阅读 5 分钟
930
既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?...
封面图

面试突击86:SpringBoot 事务不回滚?怎么解决?

2022-09-25
阅读 3 分钟
957
在 Spring Boot 中,造成事务不自动回滚的场景有很多,比如以下这些:非 public 修饰的方法中的事务不自动回滚;当 @Transactional 遇上 try/catch 事务不自动回滚;调用类内部的 @Transactional 方法事务不自动回滚;抛出检查异常时事务不自动回滚;数据库不支持事务,事务也不会自动回滚。那么对于上面的这些场景,我...
封面图

面试突击85:为什么事务@Transactional会失效?

2022-09-20
阅读 4 分钟
1.1k
导致 @Transactional 失效的常见场景有以下 5 个:非 public 修饰的方法;timeout 超时时间设置过小;代码中使用 try/catch 处理异常;调用类内部的 @Transactional 方法;数据库不支持事务。很多人只知道答案但不知道原因,这就像只谈恋爱不结婚一样,是不能让人接受的,所以本篇我们就来讨论一下,导致事务失效的背后...
封面图

面试突击84:Spring 有几种事务隔离级别?

2022-09-18
阅读 2 分钟
868
Spring 中的事务隔离级别和数据库中的事务隔离级别稍有不同,以 MySQL 为例,MySQL 的 InnoDB 引擎中的事务隔离级别有 4 种,而 Spring 中却包含了 5 种事务隔离级别。
封面图

面试突击83:什么情况会导致@Transactional事务失效?

2022-09-14
阅读 4 分钟
920
一个程序中不可能没有事务,而 Spring 中,事务的实现方式分为两种:编程式事务和声明式事务,又因为编程式事务实现相对麻烦,而声明式事务实现极其简单,所以在日常项目中,我们都会使用声明式事务 @Transactional 来实现事务。
封面图

面试突击82:SpringBoot 中如何操作事务?

2022-09-12
阅读 2 分钟
906
在 Spring Boot 中操作事务有两种方式:编程式事务或声明式事务,接下来我们一起来看二者的具体实现。1.编程式事务在 Spring Boot 中实现编程式事务又有两种实现方法:使用 TransactionTemplate 对象实现编程式事务;使用更加底层的 TransactionManager 对象实现编程式事务。它们的具体实现代码如下。1.1 TransactionTem...
封面图

面试突击81:什么是跨域问题?如何解决?

2022-09-07
阅读 8 分钟
1.1k
跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。 但这个保护机制也带来了新的问题,它的问题是给不同站点之间的正常调用,也带来的阻碍,那怎么解决这个问题呢?接下来我们一起来看。
封面图

面试突击80:说一下 Spring 中 Bean 的生命周期?

2022-09-05
阅读 4 分钟
1.2k
Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时,无需通过 new 来创建对象,只需要通过 DI(依赖注入),从 Spring 中取出要使用的对象即可。那么 Spring 中,Bean 的生命周期又有哪些呢?接下来,我们...
封面图

面试突击79:Bean 作用域是啥?它有几种类型?

2022-08-31
阅读 3 分钟
870
Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看。
封面图

一文快速上手 Nacos 注册中心+配置中心!

2022-08-30
阅读 8 分钟
1k
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心,我们今天来了解和实现一下二者。

面试突击78:@Autowired 和 @Resource 有什么区别?

2022-08-29
阅读 4 分钟
1k
@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它。@Autowired 和 @Resource 的区别主要体现在以下 5 点:
封面图

快速搭建 SpringCloud Alibaba Nacos 配置中心!

2022-08-28
阅读 5 分钟
947
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。
封面图

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

2022-08-24
阅读 4 分钟
892
IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC(Inversion of Control)为控制反转的思想,而 DI(Dependency Injection)依赖注入为其(IoC)具体实现。那么 DI 实现依赖注入的方式有几种?这些注入方式又有什么不同?接下来,我们一起来看。
封面图

面试突击76:${} 和 #{} 有什么区别?

2022-08-23
阅读 4 分钟
854
${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,接下来我们一起来看。
封面图

面试突击75:SpringBoot 有几种读取配置文件的方法?

2022-08-17
阅读 5 分钟
1k
Spring Boot 中读取配置文件有以下 5 种方法:使用 @Value 读取配置文件。使用 @ConfigurationProperties 读取配置文件。使用 Environment 读取配置文件。使用 @PropertySource 读取配置文件。使用原生方式读取配置文件。它们的具体使用方法如下,为了方便测试,我们在 Spring Boot 配置文件 application.properties 添...
封面图