java泛型(generics)为jdk5引入的新特性,泛型提供了编译时类型安全检测机制,可以在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。使用泛型的好处它的主要目标是保障java的类型安全,简化编程,泛型可以使编译器知道一个对象限定类型是什么,所有的强制转换都为自动和隐式的。举个简单的栗子public class test1 { public
MyBatis一.MyBatis简介1.什么是MyBatisMyBatis是一款优秀的持久层框架,用于简化 JDBC 开发MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache softwarefoundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github官网:https://mybatis.org/mybati
前面我们介绍了Linux系统的常用命令介绍和文本编辑器vim命令的介绍。那么从这篇博客开始,我们会正式的讲解Linux的系统管理,首先要讲的是Linux的软件包管理。1、Linux软件包分类 一、源码包 源码包能直接看到源码,安装时需要人为手工设置安装位置,一般是/usr/local/软件名/。源码包的升级版——脚本安装包,人为的改动源码使其有安装界面。 优点: ①、开源,
MybatisPlus基础篇@TOC(目录)1.条件构造器Wrapper1.1概述我们在实际操作数据库的时候会涉及到很多的条件。所以MP为我们提供了一个功能强大的条件构造器Wrapper。使用它可以让我们非常方便的构造条件。其继承体系如下:!image20210823105447044(https://s2.51cto.com/images/blog/202302/16141648_63ed
Excel表列序号(数学、字符串)给你一个字符串columnTitle,表示Excel表格中的列名称。返回该列名称对应的列序号。例如,A1B2C3...Z26AA27AB28...示例1:输入:columnTitle="A"输出:1示例2:输入:columnTitle="AB"输出:28示例3:输入:columnTitle="ZY"输出:701示例4:输入:columnTitle="FXSHRXW
一、前言下面让我们就一起看下,当你执行CURD时,InnoDB的Buffer Pool中都发生了什么!以及Buffer Pool的优化!二、Let‘s go你知道的,MySQL对数据的增删改查都是内存中完成的,这块内存就是Buffer Pool。你可以像下面这样查看下你的MySQL的Buffer的Buffer Pool的默认大小上图中的0.125单位为GB,转换成MB就是 1024* 1/8 =
本文内容整理自博学谷狂野架构师,动态代理简介Proxy模式是常用的设计模式,其特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。用户可以更加结构图,自己编码完成Proxy模式。
@TOC(目录)MybatisPlus基础篇1.概述MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。它在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网:https://mp.baomidou.com/2.快速入门2.0准备工作①准备数据mysqlCREATETABLEuser(idbigint(20)NOTNULLAUTO_INCREMENT
大家好,我是王有志。
相信你经常会听到读锁/写锁,公平锁/非公平锁,乐观锁/悲观锁等五花八门的锁,那么每种锁有什么用呢?它们又有什么区别呢?今天我们就一起聊聊并发编程中的各种锁。
本篇教程文章旨在介绍如何使用 Java 灵活读取 Excel 内容。我们将使用 Apache POI 库,这是一个开源的 Java 库,用于读取和写入 Microsoft Office 格式的文档,包括 Excel 文件。本文将首先介绍如何使用 POI 库读取 Excel 文件,并解释如何通过不同的方式读取 Excel 文件中的数据。接着,我们将讨论如何使用 POI 库创建和导出 Excel 文件,包括如何设置单元格样式。最后,我们将提供一个完整的示例代码,演示如何使用 ExcelUtils 类来读取和导出 Excel 文件。该文章旨在帮助读者理解如何使用 Java 读取和写入 Excel 文件,并为读者提供一个实用的工具。
Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发步骤1.导入jar包xml<dependency<groupIdorg.springframework.boot</groupId<artifactIdspringbootstarterjdbc</artifactId</dependency2.创建JdbcTemplate对象。依赖于数据源DataSou
一、原则在之前的开发中,事务代码都是分布在业务代码中,难以重用,调整麻烦。所以,Spring提供了声明事务,将事务代码和业务代码分离,再使用AOP实现,事务代码全部在配置文件中完成。二、步骤再Spring配置文件中导入两个命名空间tx和aop;注册事务管理器对象,DataSourceTransactionManager,需要引用数据源组件;配置事务增强,绑定事务管理器,并为不同事务业务方法设置具体
文章内容整理自博学谷狂野架构师概述什么是函数式接口?简单来说就是只有一个抽象函数的接口。为了使得函数式接口的定义更加规范,java8提供了@FunctionalInterface注解告诉编译器在编译器去检查函数式接口的合法性,以便在编译器在编译出错时给出提示。为了更加规范定义函数接口,给出如下函数式接口定义规则:有且仅有一个抽象函数必须要有@FunctionalInterface注解可以有默认方法
@toc(目录)对象存储服务MinIO1MinIO简介MinIO基于ApacheLicensev2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux,OSX和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化
前面分析了request与handlermethod映射关系的注册,现在再来分析一下SpringMVC是如何根据request来获取对应的handlermethod的?可能有人会说,既然已经将request与handlermethod映射关系注册保存在了AbstractHandlerMethodMapping.MappingRegistryregistry中,那么根据request不就能直接从re
二叉树的锯齿形层序遍历(树、广度优先搜索)给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树3,9,20,null,null,15,7,3/\920/\157返回锯齿形层序遍历如下:3,20,9,15,7解答:javapublicclassTreeNode{intval;TreeNodeleft;TreeNode
一、前言 - webpack热更新Hot Module Replacement,简称HMR,无需完全刷新整个页面的同时,更新模块。HMR的好处,在日常开发工作中体会颇深:节省宝贵的开发时间、提升开发体验。刷新我们一般分为两种:一种是页面刷新,不保留页面状态,就是简单粗暴,直接window.location.reload()。另一种是基于WDS (Webpack-
前一篇博客我们讲解了Linux压缩和解压缩命令,使用的最多的是tar命令,因为现在很多源码包都是.tar.gz的格式,通过 tar -zcvf 能完成解压。然后对于.zip格式的文件,使用gunzip 命令解压,对于.zip格式的文件,使用unzip 命令解压,最后对于比较大的文件,我们使用bunzip2命令来进行解压。 这篇博客是我们讲解Linux命令的最后一篇了——网络和关机重启
1 函数式编程在数学中,函数就是有输入量、输出量的一套计算方案,也就是“用什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式来做。1.1 做什么,而不是怎么做例如:new Thread(new Runnable(){ @Override public void run(){
@TOC(目录)前后端分离项目,如何解决跨域问题跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。什么是跨域问题CORS全称CrossOriginResourceSharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域
1 线程的锁的synchronized、Lock、volatile区别1.1 synchronized 和 volatile 区别用法:volatile 关键字解决的是变量在多个线程之间的可见性;synchronized 关键字解决的是多个线程之间访问共享资源的同步性;多线程访问 volatile 时,程序不会发生阻塞;在访问 synchronized 修饰的方法或代码块时,会出现阻塞;volat
@TOC(目录)函数式接口1.概述只有一个抽象方法的接口我们称之为函数接口。JDK的函数式接口都加上了@FunctionalInterface注解进行标识。但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口。2.常见函数式接口Consumer消费接口根据其中抽象方法的参数列表和返回值类型知道,我们可以在方法中对传入的参数进行消费。!image20211028145622163(
上文提到(https://blog.51cto.com/laowang6/6046850),如果我们自己要实现springmvc框架的话,大致需要实现如下功能:0、将url与Controllermethod的对应关系进行注册1、通过请求的url找到Controllermethod(即url与Controllermethod的映射)2、将请求参数进行绑定,即将入参绑定到Controllermetho
1 异常重试的意义发起一次RPC调用,调用远程的一个服务,如用户的登录操作,先对用户的用户名以及密码进行验证,验证成功后,获取用户基本信息。通过远程的用户服务获取用户基本信息时,恰好网络故障,如突然抖了一下,导致请求失败,而这请求我们希望它能够尽可能执行成功,咋办?需重新发起一次RPC调用,代码中如何处理?catch一下,失败就再发起一次调用?这显然不优雅。考虑RPC框架的重试机制。2 RPC框架
缓存除了过期策略,其实还有刷新和填充策略。刷新策略就是当数值变化时怎么处理,而所谓填充策略,就是将数据保存到缓存的方式。
【Java面试】Runnable和Thread比较