Java
文章平均质量分 65
Java小生不才
因为无能为力,所以顺其自然。因为心无所恃,所以随遇而安
展开
-
基于插件实现RabbitMQ“延时队列“
在下载rabbitmq_delayed_message_exchange 插件,本文以v3.10.0为例。原创 2024-02-25 21:47:02 · 1247 阅读 · 0 评论 -
在消息属性上设置TTL实现RabbitMQ“延时队列“
延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费应用场景:订单30分钟未支付取消…原创 2024-01-28 16:45:13 · 879 阅读 · 0 评论 -
RabbitMQ死信队列
死信队列是一种特殊的消息队列,用来存储无法被正常消费的消息,常被用来实现延迟处理,异常消息处理等,提高了系统的可伸缩性和容错性,能够应对高并发和异常消息。死信队列中的消息被称为,用来分发死信消息的交换机被称为。延迟等待消息重试机制。原创 2024-01-22 21:39:24 · 699 阅读 · 0 评论 -
RabbitMQ交换机(3)-Topic
RabbitMQ的Topic模式是一种基于主题的消息传递模式。它允许发送者向一个特定的主题(topic)发布消息,同时,订阅者也可以针对自己感兴趣的主题进行订阅。在Topic模式中,主题通过一个由单词和点号组成的字符串来描述。例如,“#.china”表示匹配所有以“china”为结尾的主题,比如“bj.china”或“china”等。( ‘ # ’ 和 ‘ * ’ 会再后面介绍)当一个消息被发布到Topic交换机(Exchange)时,交换机会将消息转发给所有与该主题匹配的队列。原创 2024-01-18 21:29:05 · 1711 阅读 · 2 评论 -
RabbitMQ交换机(2)-Direct
直连(路由)交换机,生产者将消息发送到交换机,并指定消息的Routing Key(路由键)。交换机会将Routing Key与队列绑定进行匹配,如果匹配成功,则将该消息路由到对应的队列中。如果没有匹配成功,该消息将被丢弃或返回给生产者。在Direct模式中,每个消息只能被一个消费者接收。通过使用Exchange和Routing Key来进行消息传输,Direct模式实现了消息的有选择性地路由,提高了消息传输的效率,减少了系统负载.原创 2024-01-15 20:58:23 · 888 阅读 · 0 评论 -
RabbitMQ交换机(1)
RabbitMQ消息传递模型的核心思想是:。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们放到多个队列中还是说应该丢弃它们,这就的由交换机的类型来决定。原创 2024-01-13 21:52:59 · 766 阅读 · 0 评论 -
Lambda表达式
1.Lambda表达式jdk8中允许将函数作为方法的参数进行传递,使代码更简洁.形式: (参数列表) -> {语句块}其中->是lambda表达式的操作符,读作(goes to)2.简单示例package cn.tedu.lambda;import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.function.Consumer;public cla原创 2021-11-30 19:39:53 · 187 阅读 · 0 评论 -
JAVA中object的划分
1.po(persistant object) 持久对象PO 就是对应数据库中某个表中的一条记录,PO 的属性是跟数据库表的字段一一对应的, 多个记录可以用 PO 的集合。 PO 中应该不包含任何对数据库的操作。PO 是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。PO 对象需要实现序列化接口。PO 的生命周期: 是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开原创 2021-11-26 13:53:16 · 118 阅读 · 0 评论 -
二叉树的遍历
1.二叉树模型2.先序遍历2.1.概念先序遍历也叫做先根遍历、前序遍历,可记做根左右(二叉树父结点向下先左后右)。首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返回。2.2.代码实现(JAVA版)二叉树节点类TreeNodepackage cn.tedu.function;/** * @description: 二叉树节点 * @author: zfh * @version: 1.0 * @da原创 2021-11-18 18:14:29 · 620 阅读 · 0 评论 -
对象存储OSS
1.简介阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。您可以通过本文档提供的简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据。基于OSS,您可以搭建出各种多媒体分享网站、网盘、个人和企业数据备份等基于大规模数据的服务。2.资源术语详情请参考OSS官网添加链接描述3.OSS的使用3.1.在Maven项目中加入依赖项在gulimall-product项目中加入<depen原创 2021-11-17 21:00:20 · 1508 阅读 · 1 评论 -
线程与同步
1.Thread的常用方法和总结1.1.通过getName()获取当前线程的名称要获取当前线程的名称,首先要获取当前线程对象:在MyThread类(继承Thread的方式)中获取当前线程对象比较简单,直接在run方法中通过this就可以因为MyThread类就是线程类,创建的MyThread对象就是线程对象,而this表示当前对象,因此当通过MyThread对象调用run方法时,run方法中的this表示调用该方法的对象,也就是当前线程对象在MyThread类中获取当前线程对象以及输出线程名称如原创 2021-11-13 14:19:20 · 3059 阅读 · 0 评论 -
字符输出流与序列化
1. BufferedWriter字符流将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了创建对象BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流测试构造方法以及write方法public static void main(String[] args) { try { // 1.创建FileOutputStream原创 2021-11-06 16:00:07 · 251 阅读 · 0 评论 -
JDK8接口新特性
1.概述JDK8中对接口规范进行了新的定义,允许在接口中定义默认方法(使用default关键字修饰),静态方法,同时还推出了函数式接口(使用@FunctionInterface注解描述)设计2.应用场景基于JDK8中接口新规范的定义,不仅可以扩展接口新功能(新的标准),还能保持接口向前兼容的特性。例如Java API中的集合操作规范3.快速入门分析3.1.default方法设计及实现JDK8中为了对接口业务进行扩展,但又不影响实现类,提供了默认方法。此类型的方法使用default关键字修饰,可以转载 2021-11-04 16:03:14 · 928 阅读 · 0 评论 -
Gateway
1.简述网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而 springcloud gateway作为 SpringCloud 官方推出的第二代网关框架,取代了 Zuul 网关。网关提供 API 全托管服务,丰富的 API 管理功能,辅助企业管理大规模的 API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等功能。Spring Cloud Gateway 旨在提供一种简单而有效的方式来对 API 进行路由,并为他们提供切面,例如:安全性,监控/指标原创 2021-10-25 21:23:36 · 204 阅读 · 0 评论 -
分支结构+循环结构
我们自从开始写Java代码,就一直说方法方法,main方法啦,print方法啦,那到底什么是方法呢,我们现在就来具体学习一下1.流程控制概述第一种: 顺序结构是指按照代码的书写顺序,从上往下执行默认所有代码都是按照顺序结构来执行第二种: 分支结构if分支结构switch分支结构(了解)第三种: 循环结构如果有某一行代码或者某些行代码需要重复的执行若干次,这样的结构叫做循环结构for循环while循环do…while循环(了解)foreach循环(增强for循环)2.分支结构(重点原创 2021-10-14 16:22:28 · 2569 阅读 · 0 评论 -
运算符简述
1.算数运算符操作符描述例子+加法 - 相加运算符两侧的值10 + 20 等于 30-减法 - 左操作数减去右操作数10 – 20 等于 -10*乘法 - 相乘操作符两侧的值10 * 20等于200/除法 - 左操作数除以右操作数20 / 10等于2%取余 - 左操作数除以右操作数的余数20 / 20%10等于0System.out.println( 100 + 20 );//120System.out.println( 100 -原创 2021-10-14 14:56:18 · 329 阅读 · 0 评论 -
人人开源项目的使用
1.码云上直接搜人人开源2.克隆3.数据库脚本初始化-- 菜单CREATE TABLE `sys_menu` ( `menu_id` bigint NOT NULL AUTO_INCREMENT, `parent_id` bigint COMMENT '父菜单ID,一级菜单为0', `name` varchar(50) COMMENT '菜单名称', `url` varchar(200) COMMENT '菜单URL', `perms` varchar(500) COMME原创 2021-10-11 20:47:12 · 933 阅读 · 0 评论 -
jdk安装
1.官网下载oracle官网(https://www.oracle.com/java/technologies/downloads/#java8-windows添加链接描述)2.双击运行3.向导页面4.选择安装目录非C盘5.直接忽略6.安装JRE安装目录非C盘7.安装成功8.配置环境变量此电脑或我的计算机右击—属性点击高级系统设置点击环境变量新建JAVA_HOME,变量值为安装目录编辑path,选择新建%JAVA_HOME%\bin9.验证win原创 2021-10-09 20:25:15 · 269 阅读 · 0 评论 -
个人博客系统pojo部分
1.博客package com.tedu.blog.pojo;import javax.persistence.*;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @description: 博客实体 * @author: zfh * @email: hst1406959716@163.com * @date: Created in 2021/8/26 9:58 * @modif原创 2021-08-29 14:58:31 · 94 阅读 · 0 评论 -
动吧项目AOP加强
1.key写死使用缓存可能造成脏读,这种现象在生活中也比较常见,如12306订票预定时查询显示有票,订票时查询显示没票,原因是预定查询走的是缓存,订票查询访问的是数据库。下面我们在代码中演示一下(目前代码中key是写死的) @Around("doCache()") public Object doAround(ProceedingJoinPoint jp) throws Throwable { System.out.println("Get Data from Cache");原创 2021-08-05 19:10:03 · 268 阅读 · 0 评论 -
MockMvc做单元测试断言中方法报红
1.错误描述断言中方法报红,无法自动导包2.错误分析idea2021.1.3对其引入存在问题(我猜测的,欢迎对此有了解的大佬指正)3.解决方案手动导包import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.conten原创 2021-07-12 14:03:39 · 693 阅读 · 2 评论 -
idea2021.1.3安装(Windows)
1.官网(https://www.jetbrains.com/idea/download/#section=windows)下载2.安装2.1双击2.2点击运行2.3 点击next2.4选择安装目录2.5选择位数2.6 点击install2.7 点击finish3.可选配置原创 2021-07-11 23:14:52 · 5706 阅读 · 2 评论 -
第一个gradle项目
1.网址https://start.spring.io/2.下载解压3.使用gradle build编译之后,项目中多2个文件夹原创 2021-07-11 22:34:40 · 100 阅读 · 0 评论 -
Gradle安装配置
1.官网下载去gradle官网下载对应的gradle,官网下载地址:https://gradle.org/releases/其中binary-only为二进制包,complete为完整包(包含文档)2.解压不含中文和特殊字符非C盘3.配置(必配)与maven配置基本类似GRADLE_HOME安装目录path4.验证cmd中输入gradle -v,出现类似下图的gradle版本信息即为成功5.gradle可选配置GRADLE_USER_HOMEE自定义仓库若是同时安装原创 2021-06-26 22:37:45 · 606 阅读 · 2 评论 -
类加载之双亲委派
前言-类加载类加载是指将类从磁盘或网络中读到jvm内存,交给执行引擎执行类加载类型java中类加载有4种(系统提供3种,自定义1种,因此也有说法称只有2种)Bootstrap classLoader(启动类加载器):由C++编写,负责加载java核心类库,构造ExtClassLoader和AppClassLoader。对应加载的文件是**%JRE_HOME/lib/** 目录下的rt.jar、resources.jar、charsets.jar和class等,开发者无法直接获取到启动类加载器的引用原创 2021-06-16 22:51:01 · 131 阅读 · 0 评论 -
M1安装JDK
官网下载jdk验证原创 2021-06-15 10:39:18 · 2934 阅读 · 1 评论 -
hashCode
简介hashCode()获取哈希码(散列码),返回值为int。Object中hashCode的源码如下/** * Returns a hash code value for the object. This method is * supported for the benefit of hash tables such as those provided by * {@link java.util.HashMap}. * <p> * The general contract of原创 2021-06-11 23:17:13 · 1141 阅读 · 0 评论 -
MobaXterm忘记主密码
1.去https://mobaxterm.mobatek.net/resetmasterpassword.html下载插件2.解压后将插件与MobaXterm放在同一级目录中3.运行插件即可原创 2021-06-10 13:24:51 · 2091 阅读 · 1 评论 -
CopyOnWriteArrayList
前言 CopyOnWrite简称COW机制,是一种程序优化策略(延时懒惰策略).其思路是,一开始共享同一内容,当想对此内容进行修改时,会将此内容复制一份,对复制的内容进行修改,修改之后再将原内容的引用指向修改后的内容。 JDK5并发包提供使用了CopyOnWrite机制实现的并发容器(CopyOnWriteArrayList与CopyOnWriteArraySet),在并发场景中使用较多。CopyOnWrite容器 写时复制的容器,当我们对容器进行操作时原创 2021-06-09 16:50:56 · 474 阅读 · 0 评论 -
JAVA集合串讲
集合与数组区别长度区别: 数组长度固定; 集合长度可变内容区别:数组可存储基础类型,也可存储引用类型; 集合只能存储引用类型存储类型种类:数组只能存储同种类型,集合可存储多种类型ListArrayList底层是Object数组,属于线性结构,随机访问性强(查询快),增删慢,效率高,线程不安全,可存储重复元素(允许多个null元素对象)遍历方式使用iterator或for循环LinkedList底层是双向链表,属于链表结构,随机访问性差(查询慢),增删快,效率低,线程不安全,原创 2021-06-07 18:58:59 · 199 阅读 · 0 评论