RedisTemplate详解 实际上。如果我们的value如果想用自定义序列化成的方式进行存储在实际开发中可能会遇到很多问题。其中问题主要在序列化本身上。仔细想想上面使用StringRedisTemplate本质上和自定义没有区别。实际都是转化为String类型进行存储的,只不过,一个是在程序本身使用ObjectMapper这个工具手动序列化好在给redisTemplate。后者是将对象传入,在RedisTemplate内部通过一系列自定义的配置将其序列化为json字符串存入redis.
JWT 详解 RFC 7519HMACRSAorECDSA 官网地址: https://jwt.io/introduction/翻译: jsonwebtoken(JWT)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。
阿里云服务器(ECS云服务器)安装redis 因此,当你运行ps aux | grep redis时,实际上是在要求系统显示所有运行进程的信息,然后过滤输出,只显示包含"redis"关键字的行。我们需要确认一下redis的监听ip端口等信息,如果我们有外部客户端程序需要访问的话,我们需要确认我们的redis配置中设置了可以监听到该程序的访问。我们使用redis的客户端程序(我这里使用的是Another Redis Desktop Manager)去连接是可以连接上的。我们会发现他监听的是本地的6379端口,没有监听其他端口,所以肯定需要修改。
在配置类属性引用注解:@Value与@ConfigurationProperties的区别与具体应用场景 Value 和 @ConfigurationProperties 是 Spring Boot 中用于获取配置属性的两种主要方式,它们有一些区别,适用于不同的场景。
removeAbandoned is true, not use in production 如果你的应用程序使用 Druid 数据源,并且在配置文件中设置了 removeAbandoned,你可以找到配置文件中关于 Druid 数据源的相关配置,并将 removeAbandoned 的值修改为 false。一般来说,将 removeAbandoned 设置为 true 可能会导致连接池在某些情况下误删除仍在使用的连接,因此在生产环境中通常建议将其设置为 false,以避免不必要的问题。这样应该就解决了警告信息中提到的问题。
java8新特性之-LocalDateTime 首先,我们必须明确,JAVA为什么在有Date这个类的情况下,又引入了LocalDateTime大体上来说。java8引入为了解决旧的java.util.Date和java.util.Calendar等类在处理日期和时间时存在的一些问题,并提供更灵活、清晰、易用的日期时间处理方式。具体来说有以下几个原因。
使用ThreadLocal.withIniti避免初始化为null问题 在上述例子中,counterThreadLocal 是一个 ThreadLocal 变量,初始值是一个 AtomicInteger 计数器。每个线程第一次访问 counterThreadLocal 时,都会调用 AtomicInteger::new 获取一个新的 AtomicInteger 实例作为初始值。每个线程都有自己独立的计数器,互不干扰。如果我们使用 new ThreadLocal();创建 ThreadLocal 实例,它的初始值将为 null。
JAVA8新特性之函数式编程详解 本篇文章主要概述函数式编程相关知识,包括函数式接口详解、Steam流的详解、lambds表达式详解、Optional类的详解。基本覆盖日常开发所需接触到函数式编程的相关知识。
Map和Set详解 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。
Spring MVC MVC 是Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分 为模型、视图和控制器三个基本部分。模型是应用程序中,用于处理应用程序的数据逻辑部分,通常模型对象负责在数据库中存取数据。简单来说model是不仅仅是一个数据模型,也是一个数据访问器,他可以从数据库中存储和读取数据。而View是应用程序中显示数据的部分,通常视图是依据模型数据创建的。
Spring Boot 开发者⾃定义打印⽇志的实现步骤:● 在程序中得到⽇志对象。● 使⽤⽇志对象的相关语法输出要打印的内容。在程序中获取⽇志对象需要使⽤⽇志⼯⼚LoggerFactory这里要注意:Logger 对象是属于org.slf4j 包下的,不要导⼊错包。因为Spring Boot 中内置了⽇志框架slf4j,所以咱们可以直接在程序中调⽤slf4j 来输出⽇志。我们先来看一个例子我们先定义一个类UserController//import org。
Spring的基本概念 Bean在整个Spring框架(项目)中的某种行为模式。这个定义是比较难懂的,没关系,我们看一下下面的实例在model目录下创建User类,然后在Component目录下创建UserBeans类,并且使用User的set方法,构造一个User对象user1并使用Bean注解将其存储入Spring中,然后在Controller目录下创建UserController类,在这个类中,使@ @Autowired注解从Spring获取bean对象(也就是刚刚的user1)将其注入UserController类中。
JVM详解 首先加载一个类的时候,先从ApplicationClassLoader开始,但是他并不是真加载,而是委托给自己的父亲ExtensionClassLoader去加载,但是ExtensionClassLoader也委托给自己的父亲去加载BootstrapClassLoader,当BootstrapClassLoader发现没有上层了,那么就开始自己加载,去所有自己的标准库目录里面的类,如果找到就加载,如果没找到,就有子类加载进行加载。(这是java规范要求提供哪些类,无论哪种jvm的实现,都会提供这些类)
线程的创建方法 Callable 通常需要搭配 FutureTask 来使用. FutureTask 用来保存 Callable 的返回结果. 因为 Callable 往往是在另一个线程中执行的, 啥时候执行完并不确定.FutureTask 就可以负责这个等待结果出来的工作.构建myRunable类实现runable接口,重写run方法,主函数实例化myRunable,将实例化对象作为参数传输new thread,执行start方法;Runnable 描述的是不带返回值的任务.线程池的创建方法非常多,我们这里举例几种。
java的类和对象详解 上述对于洗衣机对象的一些属性的描述就是在定义一个类类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。java中定义类时需要用到class关键字,具体语法如下。
基本变量与引用变量的区别 在arr2赋值给arr1之后,arr1就指向arr2指向的那片数组了,所以其原本指向的那片数组空间{1,2,3,4,5}会被直接释放掉,系统会自动释放,不需要我们手动进行。在上述代码中,a、b、arr,都是函数内部的变量,因此其空间都在main方法对应的栈帧中分配。而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值;a、b是内置类型的变量,因此其空间中保存的就是给该变量初始化的值。
多线程(进阶) 多线程之间,数据的读取方之间不会产生线程安全问题,但数据的写入方互相之间以及和读者之间都需 要进行互斥。如果两种场景下都用同一个锁,就会产生极大的性能损耗。所以读写锁因此而产生。读写锁(readers-writer lock),看英文可以顾名思义,在执行加锁操作时需要额外表明读写意图,复数读者之间并不互斥,而写者则要求与任何人互斥。一个线程对于数据的访问, 主要存在两种操作: 读数据 和 写数据.两个线程都只是读一个数据, 此时并没有线程安全问题. 直接并发的读取即可.