还在用calendar操作date?java8都弃用了,还不知道它的这款强大的工具吗?-编程思维

引言 在过去的Java版本中,日期和时间的处理主要依赖于java.util.Date和java.util.Calendar类,然而随着业务系统的复杂以及技术层面的提升,这些传统的日期时间类暴露出了若干显著的不足之处。随着Java8的发布,其引入了一套全新的日期时间API,彻底改变了我们处理日期和时间的方式。 传统的日期时间类 相比较Java8中新引入的java.time包下的时间处理类,传统的日

从单机到分布式微服务,大文件校验上传的通用解决方案-编程思维

一、先说结论 本文将结合我的工作实战经历,总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案,形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等,虽然文中使用的编程语言为Java,但解决问题和优化思路是互通的,适合有一定开发经验的开发者阅读,希望对大家有帮助。 二、引言 文件上传的场景应该都不陌生,不管是C端还是B端,都会有文件

mybatis java 和 mysql数据库 数据类型对应表-编程思维

类型处理器(typeHandlers) MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。 提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。 类型处理器 Java 类型 JDBC 类型

springmvc 使用注解完成登录拦截-编程思维

目录为了实现用户登录拦截你是否写过如下代码呢?1. 基于Filter2. 基于Struts3. 基于SpringMVC如何使用自定义注解完成自定义拦截呢?登录注解SpringMVC 拦截器设置最终 controller 写法1. 不需要登录权限的2. 整个 controller 内都需要登录权限3. controller 某个方法需要登录权限 为了实现用户登录拦截你是否写过如下代码呢? 1. 基

全栈的自我修养: 0005 java 包扫描实现和应用(jar篇)-编程思维

全栈的自我修养: 0005 Java 包扫描实现和应用(Jar篇) It's not the altitude, it's the attitude. 决定一切的不是高度而是态度。 Table of Contents 依赖的 Jar 思路 完整代码 整合后代码 如果你曾经使用过 Spring, 那你已经配过 包扫描路径吧,那包扫描是怎么实现的呢?让我们自己写个包扫描 上篇文章中介绍

java | java 解决跨域问题-编程思维

JAVA | Java 解决跨域问题 Table of Contents 引言 什么是跨域(CORS) 什么情况会跨域 解决方案 前端解决方案 后端解决方案 具体方式 一、使用Filter方式进行设置 二、继承 HandlerInterceptorAdapter 三、实现 WebMvcConfigurer 四、使用Nginx配置 五、使用 @CrossOrgin 注解

缓存 | 从本地缓存到分布式缓存-编程思维

从本地缓存到分布式缓存 目录从本地缓存到分布式缓存第一次接触缓存MAP常见淘汰策略FIFO(first in first out)LFU(less frequently used)LRU(least recently used)其他缓存简单分类缓存的使用Java集合类Guava CacheCaffeineEhcacheMemcachedRedisSpring Cache注意事项参考 本文档

今天 1024,为了不 996,lombok 用起来以及避坑指南-编程思维

Lombok简介、使用、工作原理、优缺点 Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码。 目录Lombok简介、使用、工作原理、优缺点简介使用添加maven依赖安装插件(可选)示例全部注解综合实例综合实例一综合实例二综合实例三Lombok的优缺点解决编译时出错问题避坑指南参考Lombok工作原

java序列化和反序列化机制-编程思维

Java的序列化和反序列化机制 问题导入: 在阅读ArrayList源码的时候,注意到,其内部的成员变量动态数组elementData被Java中的关键字transient修饰 transient关键字意味着Java在序列化时会跳过该字段(不序列化该字段) 而Java在默认情况下会序列化类(实现了Java.io.Serializable接口的类)的所有非瞬态(未被transient关键字修饰)和

阿里一面:java中如何停止线程?-编程思维

引言 在Java多线程编程中,正确且安全地停止线程是一项关键技能。简单粗暴地“杀死”线程不仅可能导致数据不一致性,还可能引发各种难以预测的错误。本文将探讨几种在Java中优雅地停止线程的方法,以确保程序的健壮性和可靠性。 使用标志位(共享变量)停止线程 一种常见的做法是使用一个boolean类型的标志位来控制线程的执行。线程在执行任务的过程中不断检查标志位的状态,当标志位被设置为true时,线程

java 异常处理与正则表达式详解,实例演练及最佳实践-编程思维

Java 异常 - Try...Catch 在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 t

深入理解 java 多线程、lambda 表达式及线程安全最佳实践-编程思维

Java 线程 线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程: public class MyThread extends Thread { public void run() { System.out.p