自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RedisTemplate详解

实际上。如果我们的value如果想用自定义序列化成的方式进行存储在实际开发中可能会遇到很多问题。其中问题主要在序列化本身上。仔细想想上面使用StringRedisTemplate本质上和自定义没有区别。实际都是转化为String类型进行存储的,只不过,一个是在程序本身使用ObjectMapper这个工具手动序列化好在给redisTemplate。后者是将对象传入,在RedisTemplate内部通过一系列自定义的配置将其序列化为json字符串存入redis.

2024-01-10 18:56:37 1325 1

原创 JWT 详解

RFC 7519HMACRSAorECDSA​ 官网地址: https://jwt.io/introduction/翻译: jsonwebtoken(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。

2024-01-07 14:39:24 932

原创 阿里云服务器(ECS云服务器)安装redis

因此,当你运行ps aux | grep redis时,实际上是在要求系统显示所有运行进程的信息,然后过滤输出,只显示包含"redis"关键字的行。我们需要确认一下redis的监听ip端口等信息,如果我们有外部客户端程序需要访问的话,我们需要确认我们的redis配置中设置了可以监听到该程序的访问。我们使用redis的客户端程序(我这里使用的是Another Redis Desktop Manager)去连接是可以连接上的。我们会发现他监听的是本地的6379端口,没有监听其他端口,所以肯定需要修改。

2024-01-04 13:51:46 1941

原创 在配置类属性引用注解:@Value与@ConfigurationProperties的区别与具体应用场景

Value 和 @ConfigurationProperties 是 Spring Boot 中用于获取配置属性的两种主要方式,它们有一些区别,适用于不同的场景。

2024-01-03 10:59:28 501

原创 removeAbandoned is true, not use in production

如果你的应用程序使用 Druid 数据源,并且在配置文件中设置了 removeAbandoned,你可以找到配置文件中关于 Druid 数据源的相关配置,并将 removeAbandoned 的值修改为 false。一般来说,将 removeAbandoned 设置为 true 可能会导致连接池在某些情况下误删除仍在使用的连接,因此在生产环境中通常建议将其设置为 false,以避免不必要的问题。这样应该就解决了警告信息中提到的问题。

2023-12-19 11:39:38 1774

原创 java8新特性之-LocalDateTime

首先,我们必须明确,JAVA为什么在有Date这个类的情况下,又引入了LocalDateTime大体上来说。java8引入为了解决旧的java.util.Date和java.util.Calendar等类在处理日期和时间时存在的一些问题,并提供更灵活、清晰、易用的日期时间处理方式。具体来说有以下几个原因。

2023-12-17 21:51:55 254

原创 myBatis-plus自动填充插件

在 MyBatis-Plus 3.x 中,自动填充的插件方式发生了变化。现在推荐使用 MetaObjectHandler 接口的实现类来定义字段的填充逻辑。

2023-12-17 21:49:12 230

原创 使用ThreadLocal.withIniti避免初始化为null问题

在上述例子中,counterThreadLocal 是一个 ThreadLocal 变量,初始值是一个 AtomicInteger 计数器。每个线程第一次访问 counterThreadLocal 时,都会调用 AtomicInteger::new 获取一个新的 AtomicInteger 实例作为初始值。每个线程都有自己独立的计数器,互不干扰。如果我们使用 new ThreadLocal();创建 ThreadLocal 实例,它的初始值将为 null。

2023-12-14 11:12:50 195

原创 JAVA8新特性之函数式编程详解

本篇文章主要概述函数式编程相关知识,包括函数式接口详解、Steam流的详解、lambds表达式详解、Optional类的详解。基本覆盖日常开发所需接触到函数式编程的相关知识。

2023-12-10 18:18:36 191

原创 Map和Set详解

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。

2023-08-22 19:31:33 119

原创 Spring MVC

MVC 是Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分 为模型、视图和控制器三个基本部分。模型是应用程序中,用于处理应用程序的数据逻辑部分,通常模型对象负责在数据库中存取数据。简单来说model是不仅仅是一个数据模型,也是一个数据访问器,他可以从数据库中存储和读取数据。而View是应用程序中显示数据的部分,通常视图是依据模型数据创建的。

2023-08-21 21:58:52 755

原创 Spring Boot

开发者⾃定义打印⽇志的实现步骤:● 在程序中得到⽇志对象。● 使⽤⽇志对象的相关语法输出要打印的内容。在程序中获取⽇志对象需要使⽤⽇志⼯⼚LoggerFactory这里要注意:Logger 对象是属于org.slf4j 包下的,不要导⼊错包。因为Spring Boot 中内置了⽇志框架slf4j,所以咱们可以直接在程序中调⽤slf4j 来输出⽇志。我们先来看一个例子我们先定义一个类UserController//import org。

2023-08-21 21:29:53 967

原创 Spring的基本概念

Bean在整个Spring框架(项目)中的某种行为模式。这个定义是比较难懂的,没关系,我们看一下下面的实例在model目录下创建User类,然后在Component目录下创建UserBeans类,并且使用User的set方法,构造一个User对象user1并使用Bean注解将其存储入Spring中,然后在Controller目录下创建UserController类,在这个类中,使@ @Autowired注解从Spring获取bean对象(也就是刚刚的user1)将其注入UserController类中。

2023-08-21 20:29:41 453

原创 java内部类详解

在外部类中,内部类定义位置与外部类成员所处的位置相同,因此称为成员内部类。

2023-08-20 12:15:37 183

原创 JVM详解

首先加载一个类的时候,先从ApplicationClassLoader开始,但是他并不是真加载,而是委托给自己的父亲ExtensionClassLoader去加载,但是ExtensionClassLoader也委托给自己的父亲去加载BootstrapClassLoader,当BootstrapClassLoader发现没有上层了,那么就开始自己加载,去所有自己的标准库目录里面的类,如果找到就加载,如果没找到,就有子类加载进行加载。(这是java规范要求提供哪些类,无论哪种jvm的实现,都会提供这些类)

2023-08-17 10:21:56 546

原创 线程的创建方法

Callable 通常需要搭配 FutureTask 来使用. FutureTask 用来保存 Callable 的返回结果. 因为 Callable 往往是在另一个线程中执行的, 啥时候执行完并不确定.FutureTask 就可以负责这个等待结果出来的工作.构建myRunable类实现runable接口,重写run方法,主函数实例化myRunable,将实例化对象作为参数传输new thread,执行start方法;Runnable 描述的是不带返回值的任务.线程池的创建方法非常多,我们这里举例几种。

2023-08-17 10:19:56 89

原创 java的类和对象详解

上述对于洗衣机对象的一些属性的描述就是在定义一个类类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。java中定义类时需要用到class关键字,具体语法如下。

2023-08-16 00:51:41 170

转载 获取类对象的方法

java程序在计算机中运行有,三个主要的阶段,代码阶段/编译阶段,Class类阶段(加载阶段),runtime运行阶段。在不同的阶段我们可以通过不同的方法来获取class对象。

2023-08-15 21:20:50 363

原创 基本变量与引用变量的区别

在arr2赋值给arr1之后,arr1就指向arr2指向的那片数组了,所以其原本指向的那片数组空间{1,2,3,4,5}会被直接释放掉,系统会自动释放,不需要我们手动进行。在上述代码中,a、b、arr,都是函数内部的变量,因此其空间都在main方法对应的栈帧中分配。而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值;a、b是内置类型的变量,因此其空间中保存的就是给该变量初始化的值。

2023-08-15 17:44:41 200

原创 多线程(进阶)

多线程之间,数据的读取方之间不会产生线程安全问题,但数据的写入方互相之间以及和读者之间都需 要进行互斥。如果两种场景下都用同一个锁,就会产生极大的性能损耗。所以读写锁因此而产生。读写锁(readers-writer lock),看英文可以顾名思义,在执行加锁操作时需要额外表明读写意图,复数读者之间并不互斥,而写者则要求与任何人互斥。一个线程对于数据的访问, 主要存在两种操作: 读数据 和 写数据.两个线程都只是读一个数据, 此时并没有线程安全问题. 直接并发的读取即可.

2023-08-14 17:45:19 125

原创 基于javeSprict的WebAPI详解

这个是 HTML5 新增的, IE9 及以上版本才能使用.前面的几种方式获取元素的时候都比较麻烦. 而使用 querySelector 能够完全复用前面学过的 CSS 选择 器知识, 达到更快捷更精准的方式获取到元素对象.electors 包含一个或多个要匹配的选择器的 DOM字符串 DOMString。该字符串必须是有效的 CSS选择器字符串(常见的ID选择器#a;类选择器.a;子选择器 a b;标签选择器a);如果不是,则引发 SYNTAX_ERR异常。

2023-07-29 14:47:29 219

原创 CSS详解

我们使用 R (red), G (green), B (blue) 的方式表示颜色(色光三原色). 三种颜色按照不同的比例搭配, 就能混合出各种五彩斑斓的效果.计算机中针对 R, G, B 三个分量, 分别使用一个字节表示(8个比特位, 表示的范围是 0-255, 十六进制表示 为 00-FF).表示 上5px, 右10px, 下20px, 左30px (顺时针)HTML中页面的每个元素,都可以设置唯一的一个id,作为身份标识,给元素安排了id之后,就可以通过id来选中对应的元素了。

2023-07-14 08:34:34 436

原创 javaTCP数据报套接字编程

TCP提供的API主要有两个类:一个是专门给服务器用的SeverSocket对象,一个是既可以给服务器端用也可以给客户端用的Socket对象。

2023-07-10 08:45:51 221

原创 javaUDP数据报套接字编程

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报。java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用DatagramPacket 作为发送或接收的UDP数据报。对于一次发送及接收UDP数据报的流程如下:以上只是一次发送端的UDP数据报发送,及接收端的数据报接收,并没有返回的数据。也就是只有请求,没有响应。

2023-07-09 20:23:56 216

原创 java文件系统

我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。同时,随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,一种合乎自然的想法出现了,就是按照层级结构进行组织 —— 也就是我们数据结构中学习过的树形结构。这样,一。

2023-07-06 08:08:49 860

原创 java多线程(初阶)详解

java多线程详解1. 线程的基本概述1.1 什么是线程1.2 为什么要有线程1.3 进程与线程的区别2. java中如何进行多线程编程2.1 最基本的多线程模型2.2 查看当前进程下的所有线程3. java创建线程方法3.1 方法1 继承Thread类并重写run3.2 方法2 实现Runnable接口3.3 方法3 使用匿名内部类3.4 lambda 表达式创建 Runnable 子类对象4.Thread 类及常见方法4.1构造方法4.2Thread类的成员属性4.3 中断线程4.3.1通过共享的标记来

2023-07-03 12:55:12 266

原创 java 堆(优先级队列)详解

如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki = K2i+2) i = 0,1,2…,则称为 小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。

2023-06-29 11:42:39 2129

原创 java中对象的比较详解

我们先来看这样一个背景,如果有一个学生类,成员属性有姓名name(String),年龄age(int),分数score(double).那么我们如果想要比较相关学生的年龄该如何比较呢?如果想寻找分数相同的同学我们该如何去寻找呢?这就涉及到java里面对象的比较java中 == 、>、 或者 < 方式进行比较。 那为什么= =可以比较?因为:对于用户实现自定义类型,

2023-06-28 18:11:52 834

转载 java迭代器的基本使用方法

https://www.runoob.com/java/java-iterator.html?eqid=92072ef4000257d80000000664598c90

2023-06-28 06:49:11 49

原创 MySQL的JDBC编程详解

在实际项目中,我们对于数据库的操作大部分是通过代码来完成的,各种数据库在开发的时候,都会提供一组编程接口API。所以不同公司使用不同的数据库软件,那么程序员学习成本是非常大的,因为要学习不同数据库对应的编程风格和相关语法。所以在java层面就进行了统一,这就是JDBC。各大数据库厂商在自身原生的API接口的基础上进行封装,形成数据库驱动包,在由各个数据库的数据库驱动包集合形成JDBC。JDBC,即Java Database Connectivity,java数据库连接。

2023-06-09 14:53:52 1205

原创 MySQL的事务详解

准备测试用例比如说,小白打两千块钱到小黑的账户上去,对应的操作应该是小白账户上金额少2000,小黑账户上金额多2000。假如在执行以上第一句SQL时,出现网络错误,或是数据库挂掉了,小白的账户会减少2000,但是 小黑的账户上就没有了增加的金额。但是计算机底层并不可能是真的不执行,只能是执行了,执行了一半发现了错误,恢复现场,把数据还原成未执行之前的状态。

2023-06-09 06:33:51 269

原创 MySQL的索引详解

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。所以索引归根结底只是在做一件事,添加了索引的数据,查询起来会更快。我们可以把索引理解成书籍的目录。

2023-06-09 00:31:52 944

原创 MySQL所有基本操作详解

一.MySQL的基本操作首先sql操作中的关键字的是大小写不敏感的,create 和CREATE是一样的。1.库操作1. 1查看数据库show databases;show 和databases 之间有一个或者多个空格注意是databases而不是database结尾分号是英文形式,分号在SQL中是表示一行执行+代码的,如果语句后面么有分号,那么默认是要一句代码分多行来写(如下图)下图中是每次执行完一个sql语句之后,会得到的一个反馈,反馈会告诉我们,当前结果有多少行记录,以及

2023-06-08 14:00:26 6174 2

原创 MySQ基本操作详解

首先sql操作中的关键字的是大小写不敏感的,create 和CREATE是一样的。

2023-06-06 07:56:19 283

原创 java判断一颗树是不是完全二叉树

给定一个二叉树的头结点TreeNode root,要求返回true或者false。完全二叉树的定义就不说了,那么我们如何判断一颗树是普通树还是完全二叉树呢。实际就是用层序遍历的思想。

2023-06-02 21:19:35 170

原创 java根据前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

2023-05-31 02:02:24 132

原创 java寻找二叉树的两个结点的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x的深度尽可能大(一个节点也可以是它自己的祖先)。

2023-05-30 21:45:23 213

原创 java根据前序遍历构建二叉树

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入包括1行字符串,长度不超过100。可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。

2023-05-30 18:20:11 401

原创 java二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。

2023-05-30 17:18:24 46

原创 java判断一个二叉树是不是轴对称

给你一个二叉树的根节点 root , 检查它是否轴对称。

2023-05-30 16:03:49 60

空空如也

空空如也

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

TA关注的人

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