ALOVN

志当存高远

理解Java中String.intern()方法

java string.intern

String.intern() 的作用 String.intern() 方法可以使得所有含相同内容的字符串都共享同一个内存对象, 它可以减少内存中相同字符串的数量,节省一些内存空间。 JVM 中,存在一个字符串常量池,字符串的值都存放在这个池中。当调用 intern 方法时,如果字符串常量池中已经存在该字符串,那么返回池中的字符串;否则将此字符串添加到字符串常量池中,并返回字符串的引用。 ...

Mac上InteIIij IDEA使用springboot热部署

spring boot devtools

spring-boot-devtools spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是在我们改变了一些代码或者配置文件的时候,应用可以自动重启,这在我们开发的时候,非常有用。 要包含devtools支持,需要将spring-boot-devtools模块依赖添加到项目构建中。 添加依赖 1 2 3 4 5 6 <dependency...

SpringBoot中WebMvcConfigurerAdapter已过时

WebMvcConfigurerAdapter is deprecated

Spring Boot2.0的版本中编译器会提示WebMvcConfigurerAdapter已过时了, 针对这个情况有两种解决方案。 替代方案一 1 2 3 4 5 6 7 8 @Configuration public class WebMvcConfg implements WebMvcConfigurer { //code @Override public...

无重复字符的最长子串

longest-substring-without-repeating-characters

题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1...

RabbitMQ 消息队列

RabbitMQ

概念 RabbitMQ 是一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。RabbitMQ使用的是AMQP协议,它是一种二进制协议。默认启动端口 5672。 AMQP 核心概念 Broker: 简单来说就是消息队列服务器 Virtual Host: 虚拟机,用于进行逻辑隔离,最上层的消息路由。一个Virtual...

设计模式

Design Patterns

设计模式的目的 设计模式是为了更好的代码重用性,可读性,可靠性,可维护性。 设计模式的类型 创建型模式(Creational Patterns) 结构型模式(Structural Patterns) 行为型模式(Behavioral Patterns) 创建型模式 单例模式(Singleton Pattern): 保证一个类仅有一个实例,并提供一个访...

redis 集群

redis cluster

Redis Cluster 设计 Redis集群搭建的方式有多种,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有 节点连接。 其结构特点: 1 2 3 4 5 1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 2、节点的...

redis 的过期策略

redis expiration policies

常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧? 啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个 G 的内存,但是可...

redis 不同数据类型适用的场景

redis data types

redis 都有哪些数据类型?分别在哪些场景下使用比较合适? redis 主要有以下几种数据类型 string hash list set sorted set string 这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 1 set key value hash 这个是类似 map 的一种结构,这个一般就是可以将结构化的数据...

关于缓存的使用、雪崩和穿透

about cache

为什么要用缓存? 用缓存,主要有两个用户: 高性能、高并发。 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? 缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走...