自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(199)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式的应用

很明显,这代码太耦合,太多if…else现在只写了3个,实际情况可能几十个几百个if…else,每次添加一个新的品类,又需要修改原来代码添加一个if…这样优化有什么好处?现在新来一个品类,只需要加一个xxxHandler对应的处理方式,其他代码不用修改,代码完全解耦,条理清晰,易于扩展。比如有下面一段业务,一个自动售货机,根据用户选择不同的饮料,出对应的货。这段代码有什么问题?3、定义各种饮料的处理方式类。1、先定义一个策略接口。2、再定义一个饮料工厂。

2024-07-23 10:21:22 24

原创 Redis+Lua脚本+AOP+反射+自定义注解,打造我司内部基础架构限流组件

*** 资源的key,唯一* 作用:不同的接口,不同的流量控制*//*** 最多的访问限制次数*//*** 过期时间(计算窗口时间),单位秒默认30*//*** 默认温馨提示语*/System . out . println("---------环绕通知1111111");

2024-07-22 15:29:04 271

原创 二分查找--简单

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。解释: 9 出现在 nums 中并且下标为 4。解释: 2 不存在 nums 中因此返回 -1。

2024-07-19 09:55:03 378

原创 反转字符串--简单

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输出:[“o”,“l”,“l”,“e”,“h”]

2024-07-19 08:27:58 140

原创 连续递增最长子序列--中等

尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。解释:最长连续递增序列是 [1,3,5], 长度为3。解释:最长连续递增序列是 [2], 长度为1。输入:nums = [1,3,5,4,7]输入:nums = [2,2,2,2,2]

2024-07-18 13:46:26 302

原创 两数之和--简单

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。

2024-07-18 13:42:28 132 1

原创 BigDecimalUtils精确计算

在金融,医疗,数据处理等领域,需要对数据做精确计算,这时候不能直接使用+,-,*,/ 需要用到BigDecimal这个类。这里写一个工具类,让使用BigDecimal更加便捷。

2024-07-17 09:42:55 170

原创 自制一个指定容量缓存,并实现最近使用的最后删除

【代码】自制一个指定容量缓存,并实现最近使用的最后删除。

2024-07-17 09:29:20 664

原创 代码提交错分支了怎么办?

这段注释// AAAAAAAAAAA 本来应该写在dev分支的,现在提交并push到master分支了。你有么有遇到过正在开发的代码,提交到生产环境的分支去,遇到这种情况怎么办?然后就看到代码应用到dev分支了,然后就可以继续愉快的写代码啦。此时代码会被还原,然后切换分支dev Checkout。至此,代码是还原了,难道我之前写的代码不要了吗?现在代码就是未提交的状态了,然后把当前代码暂存一下。然后将暂存的应用到这个分支。现在第一步,撤回提交。

2024-07-06 12:31:24 462

原创 帮找Java Bug,面试,项目,解决Java问题

本人是个Java老程序员,如果你有解决不了的问题,或者面试的时候需要人帮助,或者求职就业上任何问题都可以联系我,下面是我微信,欢迎联系我!

2024-07-03 17:03:02 198

原创 day62--若依框架(基础应用篇)

若依内置的数据字典,用于维护系统中常见的静态数据。例如:性别、状态…功能包括:字典类型管理、字典数据管理若依为定时任务功能提供方便友好的web界面,实现动态管理任务。允许用户通过拖放等可视化操作创建表单,比如用来收集数据的表格或调查问卷。可以自定义表单的各个部分,比如添加不同的输入项和设置验证规则,无需编写代码。提供了导出数据、导入数据、分享表单和设置权限的功能,方便数据管理和共享。ruoyi-vue数据库设计包含了多个表结构,用于支持系统的各种功能模块。

2024-07-02 13:21:47 1190

原创 day61---面试专题(消息中间件面试题-参考回答)

如果有这样的需求的话,我们是可以解决的,把消息都存储同一个分区下就行了,有两种方式都可以进行设置,第一个是发送消息时指定分区号,第二个是发送消息时按照相同的业务设置相同的key,因为默认情况下分区也是通过key的hashcode值来选择分区的,hash值如果一样的话,分区肯定也是一样的。如果已经存在这个数据了,就说明消息重复消费了,我们就不需要再消费了。嗯,这个我们还真遇到过,是这样的,我们当时消费者是设置了自动确认机制,当服务还没来得及给MQ确认的时候,服务宕机了,导致服务重启之后,又消费了一次消息。

2024-07-01 10:02:21 611

原创 day60---面试专题(微服务面试题-参考回答)

我当时做的xx项目,采用就是微服务的架构,因为xx因为,应该会有突发流量,最大QPS可以达到2000,但是服务支撑不住,我们项目都通过压测最多可以支撑1200QPS。我们当时采用的nginx限流操作,nginx使用的漏桶算法来实现过滤,让请求以固定的速率处理请求,可以应对突发流量,我们控制的速率是按照ip进行限流,限制的流量是每秒20。服务雪崩是指一个服务失败,导致整条链路的服务都失败的情形,一般我们在项目解决的话就是两种方案,第一个是服务降级,第二个是服务熔断,如果流量太大的话,可以考虑限流。

2024-07-01 10:01:05 1447

原创 day59---面试专题(MySQL面试题-参考回答)

所以,我们一般使用的都是mysql默认的隔离级别:可重复读。**候选人:**如果一条sql执行很慢的话,我们通常会使用mysql自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过key和key_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描,第三个可以通过extra建议来判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复。

2024-06-30 14:29:35 831

原创 day58---面试专题(Redis面试题-参考回答)

这个是不能的,比如,当线程1加锁成功后,master节点数据会异步复制到slave节点,此时当前持有Redis锁的master节点宕机,slave节点被提升为新的master节点,假如现在来了一个线程2,再次加锁,会在新的master节点上加锁成功,这个时候就会出现两个节点同时持有一把锁的问题。我们当时采用的阿里的canal组件实现数据同步:不需要更改业务代码,部署一个canal服务。:嗯,是这样的,单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。

2024-06-30 14:26:17 740

原创 day57---面试专题(框架篇)

refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refresh 的 12 个步骤:onRefresh。

2024-06-29 09:29:01 765

原创 day56---面试专题(虚拟机篇)

说明从这张图学到三点从这张图可以学到。

2024-06-29 09:11:31 652

原创 day55--面试专题(并发篇)

分别是五种状态的说法来自于操作系统层面的划分。

2024-06-28 15:05:58 719

原创 day54--面试专题(基础篇)

有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 当二分查找值为 48 的结点时,查找成功需要比较的次数。使用二分法在序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96 中查找元素 81 时,需要经过( )次比较。② A[M] > T,中间值右侧的其它元素都大于 T,无需比较,中间索引左边去找,M - 1 设置为右边界,重新查找。将数组分为两个子集,排序的和未排序的,每一轮从未排序的子集中选出最小的元素,放入排序子集。

2024-06-28 15:02:50 1102

原创 day53--ELK搜索

ELK是包含但不限于Elasticsearch(简称es)、Logstash、Kibana 三个开源软件的组成的一个整体。这三个软件合成ELK。是用于数据抽取(Logstash)、搜索分析(Elasticsearch)、数据展现(Kibana)的一整套解决方案,所以也称作ELK stack。本课程从分别对三个组件经行详细介绍,尤其是Elasticsearch,因为它是elk的核心。本课程从es底层对文档、索引、搜索、聚合、集群经行介绍,从搜索和聚合分析实例来展现es的魅力。Logstash从内部如何采集数据

2024-06-27 18:01:34 1098

原创 day52--Docker

*-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps。**-p 8080:8080:**将容器的8080端口映射到主机的8080端口。使用外部机器连接容器中的mysql。

2024-06-27 17:29:29 846

原创 day51---数据结构与算法(六)

下面是的题目都会涉及双指针,除此外,还有两数之和 II-Leetcode 167与 Leetcode 1 的两数之和区别在于,本题的数组是升序排好的本题与之前的两数之和(Leetcode 1 和 Leetcode 167)相比,区别在于两数之和里明确说了,只有一个答案,而本题要找出所有答案本题要考虑去重本题类似于 组合总和 II(Leetcode 40) 区别在于40 题要求列出任意数之和等于 target 的所有组合,而本题要求三数之和等于 target 的所有组合40 题使用

2024-06-26 08:38:11 632

原创 day50---数据结构与算法(五)

图是由顶点(vertex)和边(edge)组成的数据结构,例如ABCD该图有四个顶点:A、B、C、D 以及四条有向边,有向图中,边是单向的如果是无向图,那么边是双向的,下面是一个无向图的例子ABCD度度是指与该顶点相邻的边的数量ABCDEF例如上图中有向图中,细分为入度和出度,参见下图ABCDEFA (2 out / 0 in)B、C、E (1 out / 1 in)D (2 out / 2 in)F (0 out / 2 in)权边可以有权重,代表从源顶点到目标顶点的距离、费用、时

2024-06-26 08:36:54 712

原创 day49---数据结构与算法(四)

查找算法是一种在数据集中寻找特定数据项的方法。通常,数据集是在计算机程序中存储的,例如数组、链表或散列表。在编写程序时,查找算法是非常重要的,它有助于快速找到所需的数据。在本文中,我们将介绍一些基本的查找算法及其特点。线性查找也称为顺序查找,是一种最简单的查找算法。在这种算法中,我们从数据集的开头开始,逐个比较每个数据项,以寻找要查找的数据。如果我们找到了目标数据,查找过程就结束了。如果我们到达数据集的末尾,仍然找不到目标数据,则可以认为它不存在于数据集中。线性查找的时间复杂度是O(n),其中n是数据集的大

2024-06-26 08:26:20 1252

原创 day48---数据结构与算法(三)

双端队列、队列、栈对比定义特点队列一端删除(头)另一端添加(尾)栈一端删除和添加(顶)双端队列两端都可以删除、添加优先级队列优先级高者先出队延时队列根据延时时间确定优先级并发非阻塞队列队列空或满时不阻塞并发阻塞队列队列空时删除阻塞、队列满时添加阻塞Java 中 LinkedList 即为典型双端队列实现,不过它同时实现了 Queue 接口,也提供了栈的 push pop 等方法注2:不同语言,操作双端队列的方法命名有所不同,参见下表操作JavaJavaScript。

2024-06-25 09:53:53 378

原创 day47---数据结构与算法(二)

定义在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来,例如:知道了数组的数据起始地址 BaseAddressBaseAddressBaseAddress,就可以由公式 BaseAddress+i∗sizeBaseAddress + i * sizeBaseAddress+i∗size 计算出索引 iii 元素的地址小测试已知 array 的数据的起始地址是 0x7138f94c8,那么元

2024-06-25 09:52:56 451

原创 day46---数据结构与算法(一)

定义在计算机科学领域,数据结构是一种数据组织、管理和存储格式,通常被选择用来高效访问数据数据结构是一种存储和组织数据的方式,旨在便于访问和修改可以说,程序 = 数据结构 + 算法,它们是每一位程序员的基本功,下来我们通过对一个非常著名的二分查找算法的讲解来认识一下算法。

2024-06-25 09:47:46 1193

原创 day45--RocketMQ(三)

分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。Apache下开源的另外一款MQ—ActiveMQ(默认采用的KahaDB做消息存储)可选用JDBC的方式来做消息持久化,通过简单的xml配置信息即可实现JDBC消息存储。由于,普通关系型数据库(如Mysql)在单表数据量达到千万级别的情况下,其IO读写性能往往会出现瓶颈。在可靠性方面,该种方案非常依赖DB,如果一旦DB出现故障,则MQ的消息就无法落盘存储会导致线上故障文件系统目前业界较为常用的几款产品(RocketMQ/Kafka/RabbitMQ

2024-06-25 08:59:58 754

原创 day44--RocketMQ(二)

模拟电商网站购物场景中的【下单】和【支付】业务用户提交订单后,扣减库存成功、扣减优惠券成功、使用余额成功,但是在确认订单操作失败,需要对库存、库存、余额进行回退。如何保证数据的完整性?使用MQ保证在下单失败后系统数据的完整性用户通过第三方支付平台(支付宝、微信)支付成功后,第三方支付平台要通过回调API异步通知商家支付系统用户支付结果,支付系统根据支付结果修改订单状态、记录支付日志和给用户增加积分。商家支付系统如何保证在收到第三方支付平台的异步通知时,如何快速给第三方支付凭条做出回应?通过MQ进行数据分发,

2024-06-24 10:25:22 412

原创 day43--RocketMQ(一)

bin:启动脚本,包括shell脚本和CMD脚本conf:实例配置文件 ,包括broker配置文件、logback配置文件等lib:依赖jar包,包括Netty、commons-lang、FastJSON等Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举例:各个邮局的管理机构Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;

2024-06-24 10:07:43 1028

原创 day42--Redis(四)原理篇

try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth 123321// 3.2.set name 虎哥sendRequest("set", "name", "虎哥");// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 3.2.set name 虎哥// 4.解析响应// 5.释放连接try {if (reader!if (writer!if (s!

2024-06-23 17:07:29 981

原创 day41--Redis(三)高级篇之最佳实践

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间并不是很慢的查询才是慢查询,而是:在Redis执行时耗时超过某个阈值的命令,称为慢查询。

2024-06-23 12:03:29 962

原创 CPU占用100%的解决办法

这里看有个.logrotate的进程占用CPU最高,这里就需要把这个清理掉。然后再看CPU占有率就下来了。

2024-06-18 16:27:07 390

原创 手术中...

韧带断裂,手术中...停更一周。

2024-06-12 09:01:58 181

原创 day40--Redis(二)实战篇

在这个方案中,他确实可以使用对应路径的拦截,同时刷新登录token令牌的存活时间,但是现在这个拦截器他只是拦截需要被拦截的路径,假设当前用户访问了一些不需要拦截的路径,那么这个拦截器就不会生效,所以此时令牌刷新的动作实际上就不会执行,所以这个方案他是存在问题的前言什么是缓存?就像自行车,越野车的避震器举个例子:越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;

2024-06-07 16:30:08 1553 1

原创 day39--Redis(一)快速入门

存储方式关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些扩展性关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦。

2024-06-07 09:20:03 715

原创 day38--SpringCloud(二)

使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。

2024-06-07 08:42:44 881

原创 day37--SpringCloud(一)

单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。

2024-06-06 16:03:01 848

原创 day36--Maven进阶

-定义自定义属性--> < properties > < spring.version > 5.2.10.RELEASE < junit.version > 4.12

2024-06-06 14:35:57 718

原创 day35--SpringBoot

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序缺点配置繁琐依赖设置繁琐SpringBoot程序优点自动配置起步依赖(简化依赖配置)辅助功能(内置服务器,……)

2024-06-06 14:27:59 1089

Java工作中的一些总结,你肯定也会遇到这些问题,能对你有一些借鉴和帮助

Java工作中的一些总结,你肯定也会遇到这些问题,能对你有一些借鉴和帮助,包括了我们常遇到的Controller层,Service层,Dao层遇到的问题和各种细节,以及各种框架的使用, 包括Mybatis-plus, redis, Hutool, xxl-job,kafka,上传下载, Excel导入导出等功能,工作中肯定能助你一臂之力.

2022-09-14

我的Java学习笔记, 记录学习Java的点点滴滴

我的Java学习笔记, 记录学习Java的点点滴滴,从入门到就业的笔记, 学完这些后开始从事Java方面的工作,包含了java基础, 面向对象, JavaEE,框架, git, svn等所有Java常用知识,比较适合零基础的小白入门Java

2022-09-14

SpringBoot整合es源码

SpringBoot整合es源码, 包括详细的批量操作 bulk, 批量导入, 查询所有, 分页, termQuery:词条查询, matchQuery:词条分词查询, 模糊查询:WildcardQuery, 模糊查询:regexpQuery, 模糊查询:perfixQuery, 范围查询:rangeQuery, 排序, 布尔查询:boolQuery, 聚合查询:桶聚合,分组查询, 高亮查询

2022-07-18

空空如也

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

TA关注的人

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