05 2022 档案
摘要:消息应答机制:消费者在接收到消息并且处理该消息之后,告诉rabbitmq他已经处理了,rabbitmq可以把该消息删除了。 自动应答:生产者消息发出,就认为发送消息成功。消费者如果消费失败,这条数据就丢失了。--适合高吞吐量但数据安全性不高的。 手动应答:消费者确认消费了,才将这条信息进行删除 交换
阅读全文
摘要:SpringBootTest如何测试? 1.@RunWith(SpringRunner.class):让自动注入的注解生效 2.其次是测试类要和该项目下的启动类的目录保持一致。 package com.wxy; import com.wxy.config; import org.junit.Test
阅读全文
摘要:生产者: 1.创建生产者SpringBoot工程 2.引入坐标依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </depende
阅读全文
摘要:堆是分配对象存储的唯一选择吗? 不是,在Java虚拟机中,对象在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。 就是方法的创建在方法里面,也没有通过返回值返回出去,从而不会造成引用传递,所以这
阅读全文
摘要:堆: 一个main方法对应一个进程,一个进程对应一个JVM实例,也就是运行时数据区(Runtime Data Area),对应只有一个方法区和堆。但一个进程可以有多个线程,每个线程对应一个程序计数器、本地方法栈、虚拟机栈。在线程中,共享方法区和堆。 -Xms10m 用来设置对空间的初始内存大小 -X
阅读全文
摘要:Java虚拟机:就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,java虚拟机规范中都有详细定义。 特点:一次编译,到处运行;自动内存管理;自动垃圾回收功能。 JVM的整体结构 Java代码执行流程 JVM的生命周期 1.虚拟机的启动:通
阅读全文
摘要:上文讲到了hashmap的底层源码分析,可以了解到hashmap是线程不安全的。比如在场景多个线程同时调用put方法,会出现将前一个值给覆盖的现象。 在JDK1.7版本中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,主要实现原理是实现了锁分离的
阅读全文
摘要:数据结构 数组+单向链表+双向链表+红黑树 数组:static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key
阅读全文
摘要:给你一个字符串 s,找到 s 中最长的回文子串。 示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"来源:力扣(LeetCode) public class Test005 { class Solution
阅读全文
摘要:Redis 事务定义 Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队 Multi、Exec、discard Redis 事务中有 Multi、Ex
阅读全文
摘要:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为
阅读全文