分类: Java 模块

10 篇文章

设计共享工作空间协作模块
永远不要试图用战术上的勤奋,去掩饰你战略上的懒惰。 ——雷军 背景 在设计团队协作存储模块时,我遇到了很多问题。 许多想法在我脑海中打架: 我想到非结构化的存储在 MinIO 中的文件,它们需要 MySQL 中涉及一个元数据表来进行维护吗? 如果需要,那么涉及到文件夹,文件夹这个抽象的概念又怎么引入这个表呢? 文件从属文件夹的设计又要怎么实现?在代…
最基础的传输控制
考虑至少要实现一个简单的并发控制吧亲! 使用的架构: Java 21 Redis MySQL 使用到的包: Hutool SecureUtil MD5 Java Spring Framework MutilPartFile/TransactionTemplate Redission Lock 使用的协议: HTTP 协议 对于一个使用最基础的 HT…
八股何以成其所是?
对于很多八股题来说,我现在考虑到,那么其实这是一个⌈场景⌋。 什么是场景?这是什么意思呢? 我想表达的是,虽然说现在大家都知道,如果要准备面试,肯定要先准备八股。而八股中会涉及到一些知识点的考察。 例如: MySQL 数据库可能会发生索引失效。为什么?怎么应对? Java 中的线程池有哪些核心参数?它如何调度任务?基于什么数据结构? Redis 的…
线程池源码
你怎么理解线程池? 线程池的设计? 我去读源码,我要先看它的构造函数。我去考虑作者的设计,我去想:作者认为这几个参数是核心的参数,因此将它作为了这个类的构造函数。作者想:如果人们用了我这个类,他们可能需要这些灵活的配置。因此写下了这些构造函数。 我想,在学习编程语言的过程中总要有一种信念,就是:这样的设计一定有它的道理存在。除非我有足够的证据推翻它…
对象模型和锁
我们这里研究的对象模型是线程操作的最基本的对象, 从最基础的代码开始。 在这个实验中,我们探究的主要是 Java 8 的特性,使用了 org.openjdk.jol 包。以无锁状态的对象在内存中的实际存储情况为例作首先的熟悉。 Java 对象在内存的布局分析 接下来根据具体的输出进行分析。 java.lang.Object object inter…
为什么我们需要序列化?
二次编辑: 在 Java 中,我们处理的内容大多是对象。这是我们作为用户层面所感知到的。进一步深究,对象在 JVM 中实际上是在栈中被指针引用,实际数据存储在堆中。也就是说,它是一个复杂的数据结构,有多层调用。 在传输数据的过程中,栈中的引用、指针实际上对于传输数据是没有什么作用的,而且它是一层抽象,仅仅是为了说明该引用实际数据存储的地址。要与硬件…
芋道代码解析-后端(1)-安全与鉴权
主要使用的框架:Spring Boot Security 前置基本术语和知识 网页服务器(Web Server)一词通常包含两个层面的意义: 硬件层面:指一台负责存放网站文件,并透过网络提供服务的电脑。它借由超文本传输协议(HTTP)与客户端(一般是指网页浏览器)进行资料交换。 软件层面:指一个运行于电脑上的服务器程序(如 Apache, Ngin…
芋道代码解析-后端篇(0)
江畔何人初见月?江月何年初照人? 人生代代无穷已,江月年年望相似。 不知江月待何人,但见长江送流水。 ——唐·张若虚《春江花月夜》 先不看所有的租户管理、安全管理和框架部分,先从一个完整的前端请求链路来看芋道中一个最典型的请求的完整后端行为。 Controller 部分 Controller 监听来自客户端的请求,也就是来自前端的 HTTP 请求(…