Java 并发编程要点

使用线程 有三种使用线程的方法: 实现 Runnable 接口; 实现 Callable 接口; 继承 Thread 类。 实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线 ... »

Spring Boot 中使用 Quartz 实现任务调度

Quartz 概述 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目,它可以与 J2EE、 J2SE 应用程序相结合也可以单独使用。Quartz 可以用来创建简单或为运行十个,百个,甚至是好几万个 Jobs 这样复杂的程序。Jobs 可以做成标 ... »

分布式文件系统之 FastDFS

FastDFS 百度百科 FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS 为互联网量身定制,充分考虑了冗余 ... »

Java 持久层框架之 MyBatis

MyBatis 简介 MyBatis 是一个基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需关注 SQL 语句本身,而不用再花费精力去处理诸如注册驱动、创建 Connection、配置 Statement 等繁杂过程。 Mybatis 通过 xml 或注解的方式将要执行的各种 St ... »

分布式 ID 解决方案之美团 Leaf

分布式 ID 在庞大复杂的分布式系统中,通常需要对海量数据进行唯一标识,随着数据日渐增长,对数据分库分表以后需要有一个唯一 ID 来标识一条数据,而数据库的自增 ID 显然不能满足需求,此时就需要有一个能够生成全局唯一 ID 的系统,需要满足以下条件: 全局唯一性:最基本的要求就是不能出现重复的 I ... »

谈谈消息队列的流派

关于 MQ 的定义 Message Queue(MQ)消息队列中间件,通常我们在网上看到的对其定义是将消息的发送和接受分离来实现应用程序的异步和解耦,给人的直觉是 MQ 是异步的,用来解耦的。但这个只是 MQ 的效果,而不是目的。MQ 真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层上 ... »

一站式轻量级框架 Spring

Spring 简介 是一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的。 的核心是控制反转( )和面向切面编程( )。简单来说, 是一个分层的 一站式轻量级开源框架。 的主要作用就是为代码 解耦 ,降低代码间的耦合度。 在一个系统中,根据功能的不同,代码分为 主业务逻辑 与 ... »

一文快速入门 MySQL 索引

什么是索引 MySQL 官方对索引的定义:索引(Index)是帮助 MySQL高效获取数据的数据结构。因此 索引的本质就是数据结构 。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。 可简单理解为 排好序的快速查找数据结构 。在数据之外,数据库系统还维护着 满足特定算法查询的数据结构 ... »

一文快速入门 MySQL 索引

什么是索引 MySQL 官方对索引的定义:索引(Index)是帮助 MySQL高效获取数据的数据结构。因此 索引的本质就是数据结构 。索引的目的在于提高查询效率,可类比字典、书籍的目录等这种形式。 可简单理解为 排好序的快速查找数据结构 。在数据之外,数据库系统还维护着 满足特定算法查询的数据结构 ... »

集成 Spring + Spring MVC + MyBatis 搭建单体应用

这里使用 项目管理工具构建项目 初始化项目 打开 Intellij IDEA,点击 选择 Maven 构建项目 选择 JDK 版本(此处不阐述 JDK 安装的详细步骤,不会的小伙伴戳 "JDK 安装教程" ) 勾选项目模板 选择 模板(Java Web 项目) 填写项目在 Maven 仓库中的坐标( ... »

Java 上传和下载文件(附加密和解密)

使用 服务器实现上传,使用 请求实现下载 引入依赖 在 中添加 相关依赖 创建工具类 测试上传 文章作者:彭超 本文首发于个人博客: "https://antoniopeng.com/2019/04/09/java/Java%E4%B8%8A%E4%BC%A0%E5%92%8C%E4%B8%8B%E ... »