Java日知录

一个坚持原创,有态度的博客!

0%

在进行表结构设计时,数字类型是最为常见的类型之一,但要用好数字类型并不如想象得那么简单,比如:

  • 怎么设计一个互联网海量并发业务的自增主键?用 INT 就够了?
  • 怎么设计账户的余额?用 DECIMAL 类型就万无一失了吗?

以上全错!

数字类型看似简单,但在表结构架构设计中很容易出现上述“设计上思考不全面”的问题(特别是在海量并发的互联网场景下)。所以我将从业务架构设计的角度带你深入了解数字类型的使用,期待你学完后,能真正用好 MySQL 的数字类型(整型类型、浮点类型和高精度型)。

阅读全文 »

大家好,我是飘渺~

我们都知道,数据非常重要

网上也经常看到一些段子,某公司程序员对工作不满,删库跑路,老板损失惨重,欲哭无泪。这不最近又爆出一例,京东到家程序员离职当天删库跑路!

阅读全文 »

索引是什么?

相信你在面试时,通常会被问到“什么是索引?”而你一定要能脱口而出:索引是提升查询速度的一种数据结构

索引之所以能提升查询速度,在于它在插入时对数据进行了排序(显而易见,它的缺点是影响插入或者更新的性能)。

所以,索引是一门排序的艺术,有效地设计并创建索引,会提升数据库系统的整体性能。在目前的 MySQL 8.0 版本中,InnoDB 存储引擎支持的索引有 B+ 树索引、全文索引、R 树索引。今天我们就先关注使用最为广泛的 B+ 树索引

阅读全文 »

前言

今天内容主要是解决一位粉丝提的问题:在使用 Spring Security OAuth2 时如何自定义认证异常。那么首先我们先以 Password模式为例看看在认证时会出现哪些异常情况。

授权模式错误

这里我们故意将授权模式 password 修改成 password1,认证服务器返回如下所示的异常

阅读全文 »

大家好,我是飘渺~~

今天,跟大家一起聊聊关于JVM内存空间的话题,这也是一线互联网大厂面试中经常被问及的问题,建议小伙伴们收藏后经常拿出来翻阅,重在理解。好了,不多说了,开始今天的正题。
JVM会把内存划分成不同的数据区域,那加载的类是分配到哪里呢?下图是内存的各个区域,包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器。

阅读全文 »

每次规模比较大的漏洞,JNDI好像都不会缺席。最近人尽皆知的Log4j2漏洞也和它有关,让人 不由得怀疑,是不是作者开的后门。

因为JNDI这个玩意,别说用过,很多人连听都没听说过。这么冷门酸爽的东西,有什么理由把它放在一个日志框架里呢?恐怕只有作者想得通。

数据库驱动

很多人接触JNDI,是从数据库的驱动开始的。当然,随着SpringBoot单体发布模式的流行,现在用这种方式来获取数据库配置的古董公司,是越来越少了。

比如,我们可以在tomcat得server.xml里,配置一个叫做xjjdogDB的资源。

阅读全文 »

请求响应日志是日常开发调试定位问题的重要手段,在微服务中引入SpringCloud Gateway后我们希望在网关层统一进行日志的收集。

本节内容将实现以下两个功能:

  1. 获取请求的输入输出参数,封装成自定义日志
  2. 将日志发送到MongoDB进行存储
    阅读全文 »

在微服务开发中中我们首先会通过认证中心获取JWT,然后每次发起后端请求都会将JWT放在请求头中,这时候我们后端需要对这个JWT进行验证判断是否合法及是否有对应请求权限,这一过程主要有两种方案:

  • 服务端自主验签方案
  • API网关统一验签方案
阅读全文 »

前言

在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwt token。前端(如vue)在接收到jwt token后会将token存储到LocalStorage中。

后续每次请求都会将此token放在请求头中传递到后端服务,后端服务会有一个过滤器对token进行拦截校验,校验token是否过期,如果token过期则会让前端跳转到登录页面重新登录。

因为jwt token中一般会包含用户的基础信息,为了保证token的安全性,一般会将token的过期时间设置的比较短。

阅读全文 »