基础知识

4 篇文章
基础知识
双亲委派模型

双亲委派模型

双亲委派模型是Java类加载器的核心设计,确保类加载的安全性与唯一性。其原理是:类加载器收到请求后先委派给父类加载器,逐层向上,只有当父加载器无法加载时,子加载器才尝试自行加载。Java类加载器层级从高到低依次为:启动类加载器(加载核心类库)、扩展类加载器、应用程序类加载器(加载ClassPath下的类)以及自定义类加载器。该模型带来三大优势:防止核心API被篡改(安全性)、保证同一类只加载一次(唯一性)、实现层级隔离避免冲突。但在SPI机制(如JDBC驱动)、Tomcat容器(Web应用隔离)和热部署等场景中会打破该模型,通过线程上下文类加载器或自定义加载器实现反向委派或直接加载。

MySQL 创建仅管理单个数据库的专属用户

MySQL 创建仅管理单个数据库的专属用户

本文详细讲解如何在MySQL中创建用户并授予单个数据库的完整管理权限。核心流程分三步:创建用户(指定localhost或任意IP%)、授予目标库全部权限(增删改查、建表、索引、存储过程等)、刷新权限生效。提供了分步SQL语句及一键脚本,支持本地与远程场景。验证方法包括查看权限和切换用户建表测试。配套操作涵盖修改密码、回收权限和删除用户。关键注意事项:权限严格隔离于指定库,创建用户与授权的地址必须一致,语句适配MySQL8.0+。读者可快速为特定数据库配置专用管理账户,避免全局权限风险。

IO流详解:如何轻松理解输入流和输出流

IO流详解:如何轻松理解输入流和输出流

理解 Java IO 流方向的关键在于以程序或线程为视角:数据进入程序即为输入(Input),程序读取数据;数据离开程序即为输出(Output),程序写入数据。这一原则同样适用于管道流:写线程使用 PipedOutputStream 将数据“输出”到管道,读线程使用 PipedInputStream 从管道“输入”数据。切勿从数据绝对流向判断,而应始终站在各自线程的角度——谁写数据就用 Output,谁读数据就用 Input。掌握该视角即可避免常犯的方向错误,彻底厘清 PipedOutputStream 与 PipedInputStream 的命名逻辑。