自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何优雅的使用锁

本项目基于 Spring AOP 实现,通过注解的方式简化了锁的使用,并对锁的使用方式进行了统一管理,而且还可与 Spring 的一起使用,默认提供了单机锁和分布式锁实现。

2024-01-22 11:48:26 855

原创 当 Spring 事务遇到锁

近期项目遇到不少并发问题,解决的方式就是加锁,但是错误的加锁方式遇到 Spring 事务可能并不能达到预期效果。

2024-01-05 17:02:51 860 1

原创 Java 处理重复文件名(类似谷歌下载重复文件处理) - leetcode 缺失的第一个正数 应用

最近在刷 leetcode 的时候遇到了一道算法题缺失的第一个正数,发现正好可以应用到最近的一个小功能里,功能很简单,就是类似于谷歌浏览器下载重复文件会在重复的文件后面加序号 “(1)”,用这个算法刚好可以实现。

2023-10-31 10:34:11 254

原创 Linux 常用命令

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器。VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与VI编辑器完全兼容。

2023-10-21 11:33:51 202

原创 JVM 基础工具

*基础工具:**用于支持基本的程序创建和运行**安全:**用于程序签名、设置安全测试等**国际化:**用于创建本地语言文件**远程方法调用:**用于跨Web或网络的服务交互**Java IDL与RMI-IIOP:**在JDK 11中结束了十余年的CORBA支持,这些工具不再提供**部署工具:**用于程序打包、发布和部署性能监控和故障处理工具**WebService工具:**与CORBA一起在JDK 11中被移除REPL 和脚本工具。

2023-10-21 11:29:38 100

原创 Elastic Search 中文拼音搜索补全实战

搜索提示是搜索框一个比较基础的功能,他赋予了搜索框生命,提高了用户的搜索体验。本文通过仿写 boss 直聘首页职位公司搜索,来实现一个自己搜索提示功能。

2023-07-03 17:49:56 2887 1

原创 中文搜索补全常用自定义分词器

中文搜索补全常用自定义分词器

2023-07-03 10:39:28 66

原创 关于加索引把数据库搞崩这件事

关于加索引把数据库搞崩这件事

2023-04-26 22:29:35 611

原创 canal rabbitmq elasticsearch 整合

canal rabbitmq elasticsearch 整合

2023-03-01 10:54:44 397

原创 Spring Filter 学习

title: Spring Filter 学习date: 2022-6-30tags:实现 接口后实现其三个方法,业务逻辑写在方法内即可。2.2 将 Filter 注入到 Spring 中2.2.1 方式一:通过 + 注入步骤一:在自定义 Filter 中添加 注解步骤二:在启动类上加上 注解,使 Spring 可以扫描到自己定义的 Filter。2.2.2 方式二:通过 + 的方式自己注入Filter步骤一:在 Filter 上添加 注解。步骤二:将该过滤器注入到 Spring

2022-07-01 23:38:57 374

原创 springcloud学习(十)-Sleuth(服务的追踪)

title: springcloud学习(十)-Sleuth(服务的追踪)date: 2021-2-2在整个微服务架构中,微服务很多,一个请求可能需要调用很多很多的服务,最终才能完成一个功能,如果说,整个功能出现了问题,在这么多的服务中,很难定位到问题的所在点,出现问题的原因是什么,所以我们可以通过 Sleuth 来解决这个问题。Zipkin 官网 https://zipkin.io/pages/quickstart。2.2 编写配置文件2.3 测试[外链图片转存失败,源站可能有防盗链机制,建议将

2022-06-15 00:09:41 258

原创 springcloud学习(九)-Config(服务的动态配置)

title: springcloud学习(九)-Config(服务的动态配置)date: 2021-1-31tags:Config 可以解决的问题:创建一个名为 07-config 的 Maven 子项目。2.3 编写启动类添加 @EnableConfigServer 注解来开启 Config 服务。2.4 编写配置文件2.5 测试访问路径 http://localhost:8083/master/customer-xxx.yml。修改 Coustomer ,使其连接 Config Serv

2022-06-15 00:09:18 816

原创 springcloud学习(八)-Stream(服务间消息传递)

title: springcloud学习(八)-Stream(服务间消息传递)date: 2021-1-30tags:Stream 就是在消息队列的基础上,对其进行封装,可以是我们更方便的去使用。Spring Cloud Stream应用由第三方的中间件组成。应用间的通信通过输入通道(input channel)和输出通道(output channel)完成。这些通道是有Spring Cloud Stream 注入的。而通道与外部的代理(可以理解为上文所说的数据中心)的连接又是通过Binder实现的。

2022-06-15 00:09:09 956

原创 springcloud学习(七)-Sidecar(多语言支持)

title: springcloud学习(七)-Sidecar(多语言支持)date: 2021-1-28tags:在 SpringCloud 的项目中,需要接入一些非 java 程序或第三方接口(无法接入eureka,hystrix,feign等组件的程序)。所以我们可以通过启动一个代理的微服务去和非 java 的程序或第三方接口进行交流,然后再把代理的微服务计入 SpringCloud 的相关组件中。将一组紧密结合的任务与主应用程序共同放在一台主机(Host)中,但会将它们部署在各自的进程或容器中。

2022-06-15 00:09:01 1951 1

原创 Spring Cloud-Gateway(网关)

title: Spring Cloud-Gateway(网关)date: 2021-4-28tags:SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cl

2022-06-15 00:08:39 672

原创 springcloud学习(六)-Zuul(网关)

title: springcloud学习(六)-Zuul(网关)date: 2021-1-26tags:Zuul 是 Netflix OSS 中的一员,是一个基于 JVM 路由和服务端的负载均衡器。提供路由、监控、弹性、安全等方面的服务框架。Zuul 能够与 Eureka、Ribbon、Hystrix 等组件配合使用。Zuul 的核心是过滤器,通过这些过滤器我们可以扩展出很多功能,比如:动态路由动态地将客户端的请求路由到后端不同的服务,做一些逻辑处理,比如聚合多个服务的数据返回。请求监控可以对整个系统的

2022-06-14 23:57:06 422

原创 springcloud学习(五)-Hystrix(服务的隔离及熔断器)

title: springcloud学习(五)-Hystrix(服务的隔离及熔断器)date: 2021-1-25tags:Hystrix 是 Netflix 针对微服务分布式系统采用的熔断保护中间件,相当于电路中的保险丝。在分布式环境中,许多服务依赖项中的一些必然会失败。Hystrix 是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix 通过隔离服务之间的访问点、停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性。在微服务架构下,很多服务都相

2022-06-14 23:54:17 425

原创 springcloud学习(四)-Feign(服务间的调用)

title: springcloud学习(四)-Feign(服务间的调用)date: 2021-1-20tags:Feign 可以帮助我们实现面向接口编程,就直接调用其他服务,简化开发。Feign 是一个声明式的 REST 客户端,它能让 REST 调用更加简单。Feign 供了 HTTP 请求的模板,通过编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、格式、地址等信息。而 Feign 则会完全代理 HTTP 请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。Spring

2022-06-14 23:52:50 517

原创 springcloud学习(三)-Ribbon(负载均衡器)

title: springcloud学习(三)-Ribbon(负载均衡器)date: 2021-1-18tags:Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于 Netflix Ribbon 实现。通过 Spring Cloud 的封装,可以让我们轻松地将面向服务的 REST 模版请求自动转换成客户端负载均衡的服务调用。Robbin是帮助我们实现服务与服务之间的负载均衡。通过 Run/Debug Configurations 启动两个 Search

2022-06-14 23:52:09 133

原创 springcloud学习(二)-Eureka(服务的注册与发现)

title: springcloud学习(二)-Eureka(服务的注册与发现)date: 2021-1-16tags:Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka 做了二次封装,主要负责实现微服务架构中的服务治理功能。Eureka可以帮助我们维护所有服务的信息,以便服务之间的相互调用。创建一个 springboot 父工程,并命名为 first-springcloud 。2.2创建 Eureka 的 Se

2022-06-14 23:51:18 320

原创 springcloud学习(一)-spring cloud简介

title: springcloud学习(一)-spring cloud简介date: 2021-1-13tags:“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。简而言之,微服务体系结构是一种将单个应用程序开发为一组小型服务的方法,每个应用程序在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)通信。这些服务围绕业务功能构建,可通过全

2022-06-14 23:50:02 123

原创 算法中常用的数据类型 Java 实现类

title: 算法中常用的数据类型 Java 实现类date: 2022-4-29updated: 2022-4-29tags:算法中常用的数据类型 Java 实现类

2022-06-14 23:43:50 96

原创 Java优先级队列(Priority Queue)

title: Java优先级队列(Priority Queue)date: 2021-6-13updated: 2021-6-13tags:优先级队列是逻辑结构是小根堆,存储结构是动态数组(到达上限,容量自动加一)的集合类。添加(插入):查看(只返回根节点元素,不删除):取出(返回根节点元素,会删除源数据):删除(如果有多个相同元素,只会删除第一个):还有就是一些 collection 类通有的方法,不多说了记住!!!所有会破坏堆的特性的方法(比如插入删除等)的源码里最后都会加一个建堆方法( sift

2022-06-14 23:43:34 1341

原创 RabbitMQ-延迟队列

title: RabbitMQ-延迟队列date: 2021-1-15tags:,首先,它是一种队列,队列意味着内部的元素是的,元素出队和入队是有方向性的,元素从一端进入,从另一端取出。其次,,最重要的特性就体现在它的属性上,跟普通的队列不一样的是,,所以延时队列中的元素是都是带时间属性的,通常来说是需要被处理的消息或者任务。简单来说,延迟队列存储的对象是对应的延时消息,所谓“延时消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。是 RabbitM

2022-06-14 23:39:57 202

原创 RabbitMQ学习(五)-RabbitMQ的应用

title: RabbitMQ学习(五)-RabbitMQ的应用date: 2021-1-13tags:将之前的 spring boot 整合 ElasticSearch 的项目再整合上 RabbitMQ。1.2 编写配置文件1.3 编写配置类1.4 修改 Service 层从之前通过 RestTemplate 传递信息,变为 通过 RabbitMQ 传递消息。二、修改 search 模块2.1 导入相关依赖同上。同上。同上。添加一个将 json 转为对象的静态方法。.........

2022-06-14 23:39:39 102

原创 RabbitMQ学习(四)-RabbitMQ的其它操作

title: RabbitMQ学习(四)-RabbitMQ的其它操作date: 2021-1-12tags:RabbitMQ的事务:事务可以保证消息的100%传递,可以通过事务回滚去记录日志,后面定时再发送当前消息。但是事务的操作效率太低,加入事务后效率比不加事务慢至少100倍。可以确保生产者将消息发动到exchange中,但并不能保证消息发送到queue中。2.2 批量Confirm方式channel.waitForConfirmsOrDie():当你发送的全部消息,有一个失败时,则直接全部失败,

2022-06-13 00:03:17 274 1

原创 RabbitMQ学习(三)-springboot整合RabbitMQ

title: RabbitMQ学习(三)-springboot整合RabbitMQdate: 2021-1-11tags:创建一个名为springboot-rabbitmq的springboot项目。1.3 编写配置文件二、具体实现2.1 编写RabbitMQ的配置类编写一个名为RabbitMQConfig的配置类,进行exchange和queue的声明和绑定。2.1 发布消息通过rabbitTemplate的convertAndSend()方法进行消息的发布,他需要三个参数:2.2 监

2022-06-13 00:03:04 219

原创 RabbitMQ学习(二)-Rabbit的使用

title: RabbitMQ学习(二)-Rabbit的使用date: 2020-12-14tags:2.3 创建工具类连接RabbitMQ2.4 测试最简单的消息模型:一个生产者、一个默认交换机、一个队列和一个消费者。3.2 创建消费者步骤:通过getConnection静态方法获取连接对象通过连接对象获取channel管道通过channel的queueDeclare()方法创建一个队列,此方法需要五个参数:参数1 String queue 指定要创建的队列的名称参数2 b

2022-06-13 00:02:57 674

原创 RabbitMQ学习(一)-介绍与安装

title: RabbitMQ学习(一)-介绍与安装date: 2020-12-13tags:Rabbit的使用解决了两个问题:消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。从上面描述

2022-06-13 00:02:42 111

原创 重写 equal() 时为什么也得重写 hashCode() 分析

title: 重写equal()时为什么也得重写hashCode()分析date: 2021-6-12updated: 2021-6-12tags:说起 equals 方法,我们都知道是超类 Object 中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在 Object 类中这个方法实际上是判断两个对象是否具有相同的引用,如果有,它们就一定相等。其源码如下:实际上我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时 “==” 比较两个对象的的内存地址,所以说 Object 的 e

2022-06-13 00:02:22 65

原创 Java 深入理解深拷贝和浅拷贝区别

title: Java 深入理解深拷贝和浅拷贝区别date: 2021-6-19updated: 2021-6-19tags:创建一个指向对象的引用变量的拷贝。输出结果:结果分析:由输出结果可以看出,它们的地址值是相同的,那么它们肯定是同一个对象。teacher 和 otherTeacher 的只是引用而已,他们都指向了一个相同的对象 。 这就叫做引用拷贝。创建对象本身的一个副本。输出结果:结果分析:由输出结果可以看出,它们的地址是不同的,也就是说创建了新的对象, 而不是把原对象的地址赋给了一

2022-06-13 00:02:12 1241

原创 集群、分布式和微服务概念和区别

title: 集群、分布式和微服务概念和区别date: 2021-6-19updated: 2021-6-19tags:所谓分布式系统,是指一个完整的应用系统被拆分后,分别部署到不同的网络节点中,这样的系统往往是一些大型的系统。这种做法的好处是,可以提高系统的运算能力。与分布式系统相对应的就是 单体应用系统,单体应用系统的思想是 all in one 思想, 就是全部在一起,一个系统的全部服务都集中在一个网络节点上。集群顾名思义,就是同一个任务被部署(放)在了多台服务器上面。所以这里面有一个重要的概念

2022-06-13 00:01:59 129

原创 Java面试题(三)

title: Java面试题(三)date: 2021-6-14updated: 2021-6-14tags:Throwable 包含了错误(Error)和异常(Exception 两类)Exception 类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception),(1) Error 类一般是指与虚拟机相关的问题, 如 OutOfMemoryError、stackoverflow 等等,对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,

2022-06-13 00:01:37 313

原创 Java面试题(二)

title: Java面试题(二)date: 2021-6-12updated: 2021-6-12tags:答案一:迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java 中的 Iterator 功能比较简单,并且只能单向移动:使用方法 iterator() 要求容器返回一个Iterator。第一次调用 Iterator 的 next() 方法时,它返回序列的第一个元素。注意:iterato

2022-06-13 00:01:24 525

原创 内部比较器(Comparable接口)和外部比较器(Comparator接口)

title: 内部比较器(Comparable接口)和外部比较器(Comparator接口)date: 2021-6-13updated: 2021-6-13tags:说到比较器我们第一时间会想到 equals ,但是 equals 是用来比较是否相等的,Comparator 或者 Comparable 是用来比较顺序的(也就是排序)。确定两个对象之间的大小关系及排列顺序称为比较,能实现这个比较功能的类或方法称之为比较器,在 java 中只有两种比较器。内部比较器(Comparable接口)和外部比较

2022-06-13 00:01:06 823

原创 Java面试题(一)

title: Java面试题(一)date: 2021-6-10updated: 2021-6-12tags:答案一:Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。答案二:Java 的跨平台不是Java 源程序的跨平台 ,如果是这样,那么所以语言都是跨平台的, J

2022-06-12 22:00:07 370

原创 ssm 框架整合

title: ssm框架整合date: 2019-07-10tags:创建一个存放书籍数据的数据库表二、基本环境搭建1. 创建一个Maven项目!ssmbuild,添加web的支持。2. 导入相关的pom依赖3. 创建基本结构和配置框架创建各层需要的包(pojo、dao、service、controller)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7Utlug1-1655042160798)(ssm%E6%A1%86%E6%9E%B6%E6%95%B

2022-06-12 21:56:40 107

原创 Swagger 整合 Spring Boot

title: Swagger 整合 Spring Bootdate: 2021-10-1tags:Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。:用在类上,说明该类的作用。:注解来给API增加方法说明。 : 用在方法上包含一组参数说明。:用来注解来给方法入参增加说明。参数::用于表示一组响应:用在 @ApiRe

2022-06-12 21:54:03 673

原创 Spring Boot整合Mybatis

title: springboot整合Mybatisdate: 2020-10-7tags:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPIjf0KM-1655041459974)(http://qiniu.zhouhongyin.top/2022/06/12/1655041452-image-20201007203125456.png)]...

2022-06-12 21:45:20 65

原创 Spring Boot整合Mybatis

title: springboot整合Mybatisdate: 2020-10-7tags:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPIjf0KM-1655041459974)(http://qiniu.zhouhongyin.top/2022/06/12/1655041452-image-20201007203125456.png)]...

2022-06-12 21:44:43 278

空空如也

空空如也

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

TA关注的人

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