自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 水壶问题记录

https://leetcode.cn/problems/water-and-jug-problem/description/?envType=study-plan-v2&envId=2024-spring-sprint-100

2024-09-12 20:23:23 191

原创 对于消息队列的一些思考

RabbitMQ 支持消息和队列的持久化,通过设置消息的持久性 deliveryMode=2 和队列的持久性 durable=true,可以确保队列和消息在 RabbitMQ 重启后不会丢失。生产者到消息队列:ACK 机制的使用,生产者发送消息后等待消息队列的确认,确保消息成功到达队列。消息队列到消费者:使用 消费者的ACK 机制,关闭自动ACK(即 autoAck=false),确保消费者在成功处理消息后才会发送ACK给RabbitMQ,这样未被成功处理的消息不会被RabbitMQ删除,避免消息丢失。

2024-09-09 11:26:33 548

原创 Arthas工具使用,分析线上问题好帮手

trace:命令会追踪方法的执行轨迹,并在 n 次调用后返回跟踪信息。watch:命令回监控方法的调用参数、返回结果和异常。

2024-09-05 20:21:58 299

原创 RabbitMq和Kafka架构异同分析:

在Kafka中,消息是基于消费者组被订阅的,消费者组中的一个消费者只会消费一个topic中的一个partition的消息,也保证了消息只会被一个消费者消费。在RabbitMq中,消费者通过监听队列消费消息,当出现读个消费者监听同一个队列的情况时,RabbitMq中的轮询机制会保证消息只会被一个消费者消费。

2024-09-05 13:51:30 400

转载 docker安装zookeeper和kafka

【Docker安装部署Kafka+Zookeeper详细教程】

2024-09-04 11:30:05 61

原创 ES中对于时间聚合的一些总结

在ES中,对于时间字段,最好使用多字段类型,而不是单一的long字段(由于 long 类型的时间戳不包含时区信息,Elasticsearch 可能在聚合或展示时间时,将这些时间戳按照默认的 UTC 时区解释并显示,导致时间范围出现不匹配)官方文档给出的时间类型定义方式在 date_histogram 聚合中明确指定时区,以避免聚合结果与查询时间范围不匹配的问题。

2024-09-03 11:19:52 1178

原创 TCP、HTTP以及RPC的梳理

RPC (Remote Procedure Call):是一种通信协议,允许在网络上调用远程服务器上的函数或过程。RPC 本身不是一个具体的协议,而是一种模式,可以使用多种底层协议来实现,如 HTTP、gRPC、Thrift 等。HTTP 和 RPC 的关系:RPC 可以使用 HTTP 作为传输协议(例如,JSON-RPC 和 XML-RPC),或者使用其他协议(如 gRPC 使用 HTTP/2)。HTTP/2 引入了二进制分帧、流量控制和头部压缩等改进,进一步优化了性能。

2024-08-26 11:15:22 752

原创 Activity工作流框架——生成数据表

【代码】Activity工作流框架——生成数据表。

2024-07-16 16:22:46 197

原创 jdk动态代理与cglib动态代理:

最近在用java实现redis,在使用动态代理时遇到了一点问题,即使用jdk动态代理(Invocationhandler)时,如果代理对象是一个接口的实现类,那么此时动态代理获取到的method对象是接口中的,而不是实现类的,现象是:我在实现类中对接口方法上新增了注解,但是此刻method反射获取不到注解信息,于是大概整理了一下这两者的区别:获取的是接口中的方法信息,因此如果注解是在实现类上定义的,通过代理对象获取不到这些注解。:获取的是目标类中的方法信息,因此可以获取到实现类上的注解。

2024-07-11 17:28:51 322

原创 对MVC的理解以及如何实现一个简单的MVC

null;/*** 对参数进行解析,并设置参数类型、参数名、参数默认值*/0 : 1);if (pv!= null) {= null) {= null) {} else {throw new ServerErrorException("请给参数标记注解,不支持的参数类型 " + classType + " at method " + method);

2024-07-02 20:44:50 407

原创 java中的值传递和引用传递理解

它们是引用传递,但由于它们是不可变的(immutable),一旦创建后值不会改变。

2024-06-28 15:32:23 337

原创 对于业务中的一些生效时间处理理解

在业务中常会遇到对于一些事件、规则等等有设置生效时间,它们无非也就两种大类型。前端传值类型为(1,2,3)表示周一周二周三 和 hh:mm。这种类型可以采取的方式有很多,比如可以直接转换为时间戳比较。前端传值类型 yyyy-mm-dd 和 hh:mm:ss。这种类型处理起来相对比较复杂,需要对周几和时间段单独判断。生效时间判断,判断当前时间是否在时效内。判断当前时间是否处于合法时间段内。直接转换为时间戳进行判断即可。数据库用两个字符类型存储。数据库类型选用Date。判断是否处于周内时间段。

2024-06-28 15:30:59 498

原创 对代理模式和动态代理以及AOP的一些理解

代理模式和动态代理各有优劣,具体使用时需要根据需求选择合适的方式。静态代理适用于结构较为简单且明确的场景,而动态代理则适用于需要灵活扩展和动态处理的复杂场景。

2024-06-27 12:17:22 565

原创 对泛型的一些总结理解

泛型(Generic)是Java编程语言的一项特性,允许类、接口和方法在定义时使用类型参数,从而可以在不确定具体类型的情况下编写代码。泛型的主要目的是提高代码的重用性和类型安全性。

2024-06-26 16:44:07 408

原创 使用ThreadLocal存储当前用户信息

【代码】使用ThreadLocal存储当前用户信息。

2024-06-18 16:26:32 389

原创 从数据库中查找工作流部署进去的文件

ACT_RU_*: 'RU’表示runtime。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。ACT_HI_*: 'HI’表示history。这些表包含历史数据,比如历史流程实例, 变量,任务等等。ACT_ID_*: 'ID’表示identity。这些表包含身份信息,比如用户,组等等。ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

2024-06-04 15:29:00 202

原创 Activity7框架使用学习记录

工作流的学习心得

2024-05-11 14:01:48 2923

原创 【根据消息类型实现订阅发布模型】

基于消息类型的订阅发布者模型

2024-04-22 20:32:53 345 2

原创 观察者模式

它允许一个对象(称为主题或可观察对象)维护一系列依赖于它的对象(称为观察者),并在自身状态变化时通知这些观察者。这种模式用于建立对象之间的一对多依赖关系,使得一个对象的状态变化能够自动通知所有依赖它的对象。他和发布订阅者模式类似,都是当对象状态发生变化时,由发布者通知订阅者。

2024-01-02 16:06:07 414 1

原创 装饰器模式

假设有一个咖啡店,顾客可以根据自己的喜好选择不同的咖啡和添加不同的配料(比如糖和奶油)。将需要装饰的主方法作为某种参数传递,然后对其进行装饰。

2023-12-13 17:24:05 522

原创 策略模式实现

​ 工厂模式和策略模式在形式上比较相似,但是在实际使用场景中有很大的不同,工厂模式用在能通过某些条件得到确定的实现类,策略模式用在需要我们来判断所需的实现类。

2023-12-12 10:48:58 747

原创 工厂方法模式

工厂方法模式是直接创建出需要的实例,即通过继承父类的方式,来实现扩展,需要通过访问具体的工厂来获得实例,也就是需要记住所有的工厂。简单工厂是需要通过一些条件(switch判断),然后由工厂来返回具体的实例。

2023-12-12 10:36:32 556

原创 工厂模式实现

设计模式

2023-12-12 10:25:51 396

翻译 nvm安装以及使用

链接:https://github.com/coreybutler/nvm-windows/releases。nvm-noinstall.zip:绿色免安装版,但使用时需要进行配置。nvm-setup.zip:安装版,推荐使用。windows系统下的nvm 安装。

2023-10-07 13:53:11 127

原创 深度搜索——n皇后

n皇后问题就是在n*n的棋盘上放置n个皇后,使她们之间不在同一行同一列,且不在同一个对角线上问:共有多少种摆法?首先分析问题:直观的来说,我们可以想到直接使用暴力回溯出符合条件的解如何暴力? 从第一行开始以此遍历每一个格子,再继续向上层遍历 比如:对于一个4*4的棋盘,可以先确定第一行的[1,1],再继续遍历第二行,确定第二行的位置,重复此过程 确定了回溯的过程,那么接下来就只需要一个判断函数,即判断当前格子是否符合条件下面开始实现:首先明确的是,对于每一行

2022-04-01 20:31:41 252

原创 关于学校的子网划分

划分子网:从主机号部分借用一部分作为子网号,以此将网络继续划分成多个子网(IP 地址) AND (子网掩码) = 网络地址校园网的IP是172.22.5.***子网掩码是255.255.224.0网关是 172.22.31.***由此可见校园网进行了子网划分,那如何保证网关和分配的ip地址仍在同一个网段下呢?可以通过验算来证明证明如下:首先,因为ip地址第一位是172,所以该ip是第二类ip,前两位为网络号再将第三位 224 转换为2进制表示是 1110 0000故该网段从主机号中借了

2022-03-31 07:52:37 2128

原创 大顶堆的构造&&堆排序的实现

/** * 堆排序的实现 */public class heapsort { /** * 将数组arr从下标第i个开始构造成一个大顶堆 * @param arr 目标数组 * @param i 从第i个开始构造(i的意思也就是需要保证从i开始后面的数已经是大顶堆了) * @param n 数组的大小 */ public static void construct_heap(int[] arr,int i,int n){ .

2021-10-18 10:58:58 244

原创 桶排序&&基数排序的实现(细致到极致)

希望大家在看代码之前先去看看图解,我在这里就只实现了代码也可以在底下留言,我会慢慢讲解的/** * 桶排序和基数排序的实现 */public class bucketsort { /** * 实现一个最简易桶排序 * 主要思想是创建一个超级大的桶,再将每个数按大小放入桶中 * 最后再对桶遍历一下就完成了排序 */ public static void bucket_test1(int[] arr){ int[] bucke

2021-10-17 20:04:37 108

原创 快速排序(逐行讲解)

首先需要声明,我这这里并没有图例,所以将以各位小伙伴先去了解此算法的思想再回过来看代码/** * 实现快速排序 */public class quicksort { /** * 快速排序的核心思想其实也是交换 * 设立两个指针左指针和右指针,分别指向头和尾,再从数组中选定一个用来比较的值(基准值) * 让左指针向右移动,右指针向左移动 * 当左指针指向的值大于基准值,就停下 * 当右指针指向的值小于基准值,就停下 * 此时将左

2021-10-17 15:14:56 95

原创 二叉搜索数的实现——JAVA

package tree;public class BinarySearchTree<T extends Comparable<T>> { BSTNode<T> myroot; public class BSTNode<T extends Comparable<T>> { T key; BSTNode<T> leftchild; BSTNode<T>

2021-09-27 22:25:09 99

原创 用链表实现LinkedList

public class myLinkedList implements Iterable { private int thesize; //存储当前链表的长度 private int modcount = 0; private Node beginMarker; //链表的头节点,其next指向链表的第一个节点 private Node endMarker; //链表的尾节点,其prev指向链表的最后一个节点 public myLinkedLi.

2021-09-24 20:25:14 87

原创 用数组的方式实现ArrayList

/** * this is my ArrayList * @param <Object> */public class myarraylist<Object> implements Iterable<Object> { private static final int DEFAULT_CAPACITY = 10; //用来定义默认数组的长度 private int thesize; //用来控制theitems数组的长度(实际也就是.

2021-09-24 20:24:24 147

原创 归并排序(逐行注释!) 递归的使用

合并两个有序的数组的归并排序 /** * this is the function of merge sort * * @param arr * @param l * @param m * @param r */ public static void merge(int[] arr, int l, int m, int r) { int[] left = Arrays.copyOfRange(arr, l, m

2021-09-24 20:23:08 74

原创 插入排序and希尔排序(逐行讲解!)

希尔排序的实现是在插入排序的基础上进行的将数组按照等差的步长分成若干个小数组,再分别对小数组进行插入排序/** * this is a shell sort * * @param arr */ public static void shell_sort(int[] arr) { int i, j, k; int n = arr.length; for (k = n / 2; k > 0; k /= 2)

2021-09-24 20:21:00 79

原创 插入排序的实现

类似冒泡的实现 /** * this is a insert sort * * @param arr */ public static void insert_sort(int[] arr) { for (int i = 1; i < arr.length; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j

2021-09-24 20:17:52 55

原创 JAVA—Jdbc学习

使用Jdbc连接数据库//1:加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //2:用户信息和url String url="jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=true"; //对于mysql8版本,serve

2021-05-19 23:07:23 99

原创 Springboot国际化(中文与英语的切换)

国际化1)、编写国际化配置文件;2)、使用ResourceBundleMessageSource管理国际化资源文件3)、在页面使用fmt:message取出国际化内容步骤:1)、编写国际化配置文件,抽取页面需要显示的国际化消息三个配置文件分别对应默认状态,英文状态和中文状态下的显示在application配置文件中加上spring.messages.basename=i18n/login接着进入login.pro配置文件进行配置一个个配置好属性2)、file->setti

2020-06-15 15:01:15 1080

原创 thymeleaf模板引擎引入及使用

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> 2.1.6 </dependency> 切换thymeleaf版本 如果你是使用的springboot2.0及以上版本,那系统默认的thymeleaf就是3.以上的,一下就

2020-06-15 14:44:00 1374

原创 SSM整合(从导包到配置)

首先创建maven项目,开始导包注意:我的MySQL是MySQL8版本 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.co

2020-06-05 20:05:40 164

原创 Jackson和fastjson将Java对象转成JSON 与乱码解决

Jackson代码public String json1() throws JsonProcessingException { //创建一个jackson的对象映射器,用来解析数据 ObjectMapper mapper = new ObjectMapper(); //创建一个对象 User user = new User("秦疆1号", 3, "男"); //将我们的对象解析成为json格式 String str = m

2020-06-04 23:37:13 3128

空空如也

空空如也

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

TA关注的人

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