自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 @Valid注解

java @valid注解入参校验。

2022-11-22 14:45:14 222 1

原创 MYSQL排序null排最后

mysql排序,null值排最后倒序:mysql会自动把null放最后-- order by actual_forfeit desc; select * from zto_truck_not_start order by actual_forfeit desc; 正序:-- order by sortField is null,sortField asc; select * from zto_truck_not_start order by actual_forfeit is null,act

2021-12-15 20:10:43 1962

原创 MYSQL索引

索引定义使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。约束和索引有什么区别?约束是对表数据的一种规范,保证数据完整性。包括①主键约束 ②外键约束 ③唯一约束 ④默认约束 ⑤检查约束等。索引是为了提高查询效率的一种结构。约束和索引是两种不同概念的东西。唯一索引允许多个NULL值吗?唯一索引允许NULL,且允许多个NULL值。NULL 的定义 ,是指未知值。 所以多个 NULL,都是未知的,不能说它们是相等的,也不能说是不等,就是未知

2021-12-15 17:40:52 906

原创 三次握手,四次挥手

名词解析**TCP/IP协议:**TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。**IP协议:**网际互连协议(Internet Protocol),是TCP/I

2021-12-15 17:21:33 3391

原创 cookie,session,token

Cookie1.定义某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。也就是说如果知道一个用户的Cookie,并且在Cookie有效的时间内,就可以利用Cookie以这个用户的身份登录这个网站。2.结构Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。3.数量限制各浏览器之间对cookie的不同限制,在进行页面cookie操作的时候,应该尽量

2021-12-15 15:58:40 1192

原创 DBeaver常用快捷键

1.ctrl+enter 执行sql2.ctrl+\ 执行sql,保留之前窗口结果3.ctrl+shift+↑ 向上复制一行4.ctrl+shift+↓ 向下复制一行5.ctrl+alt+F 对sql语句进行格式化,对于很长的sql语句很有用6.ctrl+d 删除当前行7.alt+↑ 向上选定一条sql语句8.alt+↓ 向下选定一条sql语句9.ctrl+/ 行注释10.ctrl+shift+/ 块注释11.ctrl+f 查找、替换12.ctrl+space sql提示(如果写了fr

2021-06-25 16:36:16 5965 1

原创 Java String学习笔记

这里写目录标题1.基本信息2.创建方式3.拼接方式4.常用方法5.String.intern()6.String对象存储位置1.基本信息引用类型,final 修饰的常量,底层 char[]public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; /** Cache the h

2021-06-22 16:07:55 156 4

原创 Redis学习笔记

(一)定义一个开源的,支持CSD协议的,高性能的key-value数据库。特点:①支持数据持久化②支持5种数据格式③支持数据备份,master-slave模式。优势:①性能高,读:11w/s,写:8.1w/s②数据类型多,string,hash,list,set,zset③原子性,单个操作原子性,多个操作支持事务,也是原子性。④丰富的特性,支持发布订阅,key过期等。(二)数据类型Stringredis最基本的数据类型。最大512M。基本存取命令是 SET 和 GET。Has

2021-06-21 15:20:15 195

原创 clone方法是深拷贝还是浅拷贝?

Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?①使用new操作符创建一个对象②使用clone方法复制一个对象那么这两种方式有什么相同和不同呢?new操作符的本意是分配内存。程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构

2021-06-18 16:15:50 4257

原创 IDEA自用插件(持续收集)

前言IDEA插件的能大大提升我们的开发和排错的效率,好用的插件让写代码变成一件舒心的事情。安装方式①settings里的plugins,直接搜索安装②官网 IDEA plugin 搜索下载,在plugins里安装常用插件及作用1.Alibaba Java Coding Guidelines阿里编码规约,可在Tools里开关。2.CamelCase驼峰转换,快捷键Shift + Alt + U。3.CodeGlanceIDEA窗口代码右侧小地图,可快速浏览代码,快捷键Ctrl + Shi

2021-06-15 17:30:48 681

原创 SSO学习笔记

单点登录多个应用系统中,只需登录一次,就可以访问其他相互信任的应用系统。作用:解决多系统登录问题。登录认证机制1.单个系统①用户首次访问,server端记录session,返回web端,写入cookie(用户唯一标识)②用户再次访问,web端http请求带cookie,server端根据cookie找到对应session,验证用户是否登录。2.同域下多个系统同一个域下,可以通过二级域区分不同的系统,实现单点登录。利用 cookie的顶域特征 和 session共享(例如 spring-se

2021-06-15 13:35:30 133 1

原创 MYSQL查询不连续数据

某天夜里,公司IT老大突然让我帮忙写个SQL,查询社保断缴次数,我一想,这是在领导面前展示能力的好机会啊,于是兴致勃勃的开始准备。1.分析问题:社保断缴次数,这个sql的核心不就是查询不连续数据吗。怎么查询不连续的数据呢,不存在下一条符合条件的数据即可。2.建demo,模拟测试:CREATE TABLE `jiaofeibiao` ( `name` varchar(10) DEFAULT NULL, `nianyue` char(6) DEFAULT NULL, `jishu` int

2020-12-09 16:06:40 3232

原创 MYSQL查询表数据量

1.最常用的SELECT COUNT(*) FROM 表名;查的准确,但是数据量大的话(超过100万),比较慢。2.网上找了一种,据说比count(*)快,自测没验证。SELECT SQL_CALC_FOUND_ROWS 1 FROM 表名 limit 1;SELECT found_rows() AS rowcount;以上两种都有弊端,一次只能查询一张表。3.查询当前库所有表数据量SELECT TABLE_NAME,TABLE_ROWS FROM information_schema.

2020-11-25 10:21:57 11633

转载 Spring 事务的传播机制

https://zhuanlan.zhihu.com/p/148504094

2020-11-11 17:21:54 118

转载 IDEA编译报错:程序包不存在(二)

转载地址:https://blog.csdn.net/qq_43705131/article/details/106165960IDEA中Maven依赖包导入失败报红问题总结最有效8种解决方案问题描述:真的,说来话长,这应该是我花最多时间去解决关于Maven依赖包导入的问题,以前粘贴复制导入,自动下载成功了, 这次怎么搞,怎么让他自动下载都还是红红的一片, 花了大半天,各种尝试,只为搏得问题解决!!!真的看着都难受, 但是, 终于, 还是让我搞定了,这次让我汇总所有最有可能解决这依赖问题

2020-09-09 15:55:27 1019

转载 IDEA工具debug模式深入使用

转载地址https://www.cnblogs.com/lisa2016/p/11131160.htmlIDEA中如何使用debug调试项目 一步一步详细教程Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。  所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容:    一、Debug开篇    二、

2020-09-08 14:35:53 248

原创 HashMap底层数据结构详解(解疑)

HashMap底层数据结构详解一、HashMap底层数据结构JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树关于HashMap基本的大家都知道,但是为什么数组的长度必须是2的指数次幂,为什么HashMap的加载因子要设置为0.75,为什么链表长度大于等于8时转成了红黑树?HashMap添加元素分析当添加元素时,会通过哈希值和数组长度计算计算下标来准确定位该元素应该put的位置,通常我们为了使元素时分布均匀会使用取模运算,用一个值去模上总长度,例如:index=hashCo

2020-09-03 11:29:54 569

原创 MYSQL分区

同事离职,从他手里接了一个表分区的任务,以前只是听过分区,懂得一点,现在接了这个活,就深入研究了一下。MySQL数据库在5.1版本时添加了对分区的支持,分区的过程是将一个表或索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。每个分区都是独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都

2020-08-31 15:44:08 126

原创 maven学习笔记

以前做过的项目中,使用过Maven,但是对其理解不深,只知道其作用是用来管理jar 包的。最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目结构只停留在了解阶段,没有深入的使用与理解,刚好最近看了一篇关于Maven的详解;就开始深入学习一下Maven的具体应用。Maven的作用在开发中,为了保证编译通过,我们会到处去寻找jar包,当编译通过了,运行的时候,却发现"ClassNotFoundException",我们想到的是,难道还差jar包?每个Java项目的目录结构都没有一个统

2020-08-25 14:31:45 660 2

原创 HashMap源码全面详细分析

在做 HashSet源码分析 时,发现其底层用的是HashMap,所以今天来研究下 HashMap的源码。1.变量 /** * 默认初始容量16,必须是2的幂 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; /** * 最大容量,2的30次幂 */ static final int MAXIMUM_CAPACITY = 1 << 30; /*

2020-08-24 16:08:10 84

原创 面试准备:HashMap源码分析

简介HashMap最早出现在JDK1.2中,底层基于散列算法实现。HashMap 允许 null 键和 null 值,是非线程安全类,在多线程环境下可能会存在问题。1.8版本的HashMap数据结构:为什么有的是链表有的是红黑树?默认链表长度大于8时转为树结构Node是HhaspMap中的一个静态内部类 ://Node是单向链表,实现了Map.Entry接口staticclassNode<K,V>implementsMap.Entry&lt...

2020-07-29 16:52:57 102

原创 HashSet源码简单分析

刚做完 ArrayList源码全面详细分析 ,又对hashset产生了兴趣,HashSet里的属性和方法可比arraylist少太多了,稍微一分析发现,HashSet底层是HashMap,HashSet的基本所有方法都是去调用HashMap的,看来有必要抽时间好好研究一番HashMap了。HashSet 常用方法 public int size() { return map.size(); } public boolean isEmpty() {

2020-07-29 12:05:55 88

原创 ArrayList源码全面详细分析

昨天在公众号看了一篇 LinkedList源码分析非常感兴趣,于是又自己研究了一下ArrayList的源码。1.常量 /** * 默认初始容量 10 */ private static final int DEFAULT_CAPACITY = 10; /** * 空数组,初始化和赋值为空数组的时候使用 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /

2020-07-29 10:44:41 134

原创 LinkedList源码分析

注:本文所有方法和示例基于jdk1.8概述LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的,是线程不安全的,允许元素为null的双向链表。源码分析1. 变量/***集合元素数量**/transientintsize=0;/***指向第一个节点的指针*Invariant:(first==null&&last==null)||*(f...

2020-07-27 13:54:00 99

原创 JAVA集合和JSON转换

Java集合和json相互转换,可以使用 谷歌的Gson.jar 或者 阿里的fastJson.jar在此记录一下两种方法。 /** * 集合和json相互转换 * 使用阿里的fastJson.jar */ private static void test18() { List<AATestVo> list = new ArrayList<>(); list.add(new AATestVo("s",12

2020-07-17 18:12:18 857

原创 记录两种获取年月日时分秒的方法

前几天改别人代码,有一个业务是从时间中获取年月日时分秒,分别存入数据库的6个字段中,他用了转成yyyyMMddHHmmss的字符串再截取的方式,这么写有点low!Java有现成的工具类可以用,Calendar就可以,最近又发现String.format也可以,所以把两种都整理一下。1.Calendar/** * Calendar获取年月日时分秒 * @param date */ private static void test10(Date date) {

2020-07-13 17:41:42 1144

原创 获取回文字符串

前几天跟朋友聊,他问了我这么一道题:输入一个字符串s,我们可以删除字符串s中的任意字符,让剩下的字符串形成一个对称字符串,且该字符串为最长对称字符串。如:输入google,则找到最长对称字符串为goog;如输入abcda则能找到3个最长对称字符串为aba/aca/ada。若最长对称字符串存在多个,则输出多个相同长度的最长对称字符串,且字符串中不包含特殊字符。思考过后,注意点有三个:1.去除特殊字符(网上一大堆)2.判断字符串是否对称(reverse方法)3.找到该字符串的所有子集中满足回

2020-07-13 16:38:12 300

原创 IDEA编译报错:程序包不存在

好多次切换新项目或者idea版本时,总是在导包这一步浪费很多时间,明明代码不报错,能引到指定的包,编译时就是报错:找不到包。这里有几种解决思路,整理如下:1.检查项目的maven依赖没有问题查看项目的Dependencies中是否有提示报错不存在的依赖包或者该依赖包是否报错,如果不存在或者报错,则检查pom文件中的依赖是否填写正确或者本地仓储是否存在2.检查本地仓库是否存在依赖的jar包“File | Settings | Build, Execution, Deployment | Build

2020-06-23 17:54:12 25457 15

原创 MYSQL常用高级sql

表定义查询:-- 表字段分析select column_name, column_comment from information_schema.columns where table_name = 'deb_userparam';/* 查询数据库表注释 */SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_name = 'deb_userparam';/* 查询数据库表字段注释 */SEL

2020-06-02 18:21:10 211

原创 order by和limit混用隐患

工作中遇到两个bug,一个是分页查询第一页和第二页数据有重复,另一个是导出到EXCEL中的数据顺序和分页查询的顺序不一致。研究发现,隐患产生原因:(1)order by 和 limit 混用(2)order by 后面的字段存在重复 或 null解决方法:order by 多加一个非空且唯一的字段兜底,例如: order by xxx1,xxx2,idid非空且唯一,用它兜底完美解决。至于原因的具体分析,链接如下:添加链接描述...

2020-06-02 18:07:05 194

原创 JAVA分批插入数据库

以mysql为例:mysql的sql语句是有最大长度限制的,默认是1M,可配置,超过最大长度就会报错。在实际工作中遇到批量插入几千条上万条数据的时候,有长度超限隐患,这时可以使用分批插入,代码如下: /** * 分批插入-公共方法 * @param objects:数据集合 * @param subSize:单次插入的条数 */ public static <E> List<List<E>> splitTo(Li

2020-06-02 17:32:47 2900 2

原创 MYSQL联合主键

已知:我有一张表aa_mytest我的目的:id非空且唯一,name非空且唯一,那么给个这两个字段都加上主键能满足我的目的吗?看数据,id和name都有重复,并未达到我的目的这里要明确一点,mysql表是不允许多个主键的,图一所示id和name不是两个主键,而是一个联合主键明确了这一点,就很好解释了,给id和name都设为主键,只能保证 id和name联合起来非空且唯一,并不能保证单个字段的唯一性。解决方法:id为主键,name加一个唯一索引...

2020-05-09 16:15:31 326

原创 MYSQL批量插入更新

插入更新,就是无则插入,有则更新(一)目前以我的了解,mysql有两种方法实现。这两种方式都是通过唯一索引来判断有无的,所以插入的语句中一定要包含有唯一索引的字段1.replace into(不推荐)-- id为主键REPLACE INTO aa_mytest(id,i_name,i_value)VALUES(1,'ass','123')replace into 在遇到唯一索引时,会执行delete和insert,导致除了name,value之外的字段给改成null了,所以不推荐使用。2.

2020-05-09 16:03:21 398

原创 foreach循环中add/remove抛异常java.util.ConcurrentModificationException原因深入分析

我们都知道集合循环删除元素,要使用iterator和while循环,不能用for和foreach。for循环正向遍历不抛异常,但会导致删除不完全,for反向遍历是可以的。foreach会抛出异常java.util.ConcurrentModificationException,具体原因是什么呢?先来看一段代码,摘自阿里巴巴的java开发手册List<String> list =...

2020-05-07 15:11:45 846

原创 优雅地关闭流:try-with-resource

JDK1.7之后有了try-with-resource处理机制。首先被自动关闭的资源需要实现Closeable或者AutoCloseable接口,因为只有实现了这两个接口才可以自动调用close()方法去自动关闭资源。写法为try(){}catch(){},将要关闭的外部资源在try()中创建,catch()捕获处理异常。其实try-with-resource机制是一种语法糖,其底层实现原理仍然是...

2020-04-28 15:10:13 1111

原创 Navicat Premium常用快捷键

1.ctrl+r 运行当前查询窗口的所有sql语句2.ctrl+shift+r 只运行选中的sql语句3.ctrl+/ 注释sql语句4.ctrl+shift +/ 解除注释5.ctrl+q 打开查询窗口6.ctrl+n 打开一个新的查询窗口7.ctrl+w 关闭当前查询窗口8.ctrl+l 删除一行9.Shift+Home 鼠标在当前一行末尾,按快捷选中当前一行F7: 运行从光...

2020-04-27 16:46:41 275

原创 MySQL数据类型与Java数据类型

类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) VARCHAR L+N VARCHAR java.lang.String 12 CHAR N CHAR java.lang.String 1 BLOB L+N BLOB java.lang.byte[] -4 TE...

2020-04-27 16:11:58 306

原创 为什么重写equals方法一定要重写hashcode方法

1.我们在重写equals方法的同时,不对hashcode方法进行重写的话,默认地还是会使用Object类自带的hashcode方法,这样就会出现在某些情况下,明明两个对象的equals方法判断相等了,但是它们的hashcode居然不一样,这是不符合规范的。对于hashcode,Java中有如下规定:两个对象相等,hashcode一定相等两个对象不等,hashcode不一定不等hashco...

2020-04-22 17:05:51 174

原创 MySql中把一个表的数据插入到另一个表中

1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:INSERT INTO 目标表 SELECT * FROM 来源表;insert into insertTest select * from insertTest2;2.如果只希望导入指定字段,可以用这种方法:INSERT INTO 目标表 (`字段1`, `字段2`, ...) SELECT `字段1`, `字段2`, ....

2020-04-22 11:27:49 7571

原创 String.split()高级用法

String.split(String regex) 内部掉用的是String.split(String regex,0)方法 public String[] split(String regex) { return split(regex, 0); }使用String.split(String regex,int limit)按照指定的分隔符regex,分隔字...

2020-04-15 16:26:48 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除