自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 IDEA集成Docker实现快捷部署

在我们手动通过Docker部署项目的时候,都是通过把打包好的jar包放到服务器上并且在服务器上编写对应的DockerFile,然后在通过docker bulid命令根据jar包和Docker File生成对应的镜像,然后通过docker start或者docker run运行镜像产生容器来提供服务。IDEA集成Docker的快捷部署为开发人员提供了更加便捷和高效的开发环境,有助于提升团队的开发效率和协作能力。通过灵活利用这一功能,开发人员可以更快速地开发、调试和部署应用程序,从而提高开发工作的效率和质量。

2024-06-21 17:38:20 644 1

原创 Selenium IED-控制已打开的Chrome浏览器

在我们进行自动化测试的过程中有时候会遇见一个很棘手的问题那就是登录的过程中需要图片验证码,图片验证码设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内。针对这个问题我们就可以使用浏览器复用的方式进行自动化的测试。我们可以让Selenium直接用带有缓存的浏览器,就像我们使用本机浏览器一样,去访问系统。常规系统,比如淘宝、携程,只要完成一次登陆验证,后续登陆是不会再有验证码的。通过Debug模式启动谷歌浏览器,就能达到这个效果。

2024-06-18 21:20:57 807

原创 一文了解什么是RESTful风格

RESTful风格是一种软件架构风格,它是一种设计网络应用程序的方式,可以使系统更加简单、灵活、可扩展和易于维护。RESTful是Representational State Transfer的缩写,它强调使用标准的HTTP方法(如GET、POST、PUT、DELETE)来对资源进行操作,通过URL来定位资源,并使用状态码来表示操作结果。

2024-04-16 16:44:11 905

原创 Redis-布隆过滤器解决穿透详解

布隆过滤器可以帮助我们解决Redis缓存雪崩的问题,那什么是布隆过滤器、布隆过滤器又是如何使用如何解决缓存雪崩的问题的,让我们带着这一系列的问题去详细了解布隆过滤器。布隆过滤器适用于需要快速判断一个元素是否可能存在于集合中的场景,例如网络爬虫中的去重、缓存中的数据判断等。但需要注意的是,布隆过滤器无法删除元素,也无法准确地判断一个元素是否存在于集合中,因此在一些场景下可能会产生误判。🎯🎯。

2024-02-04 11:15:21 1008

原创 Redis-缓存问题及解决方案

在实际应用中,缓存击穿、缓存穿透和缓存雪崩是常见的缓存问题,可以通过合理的缓存策略和技术手段来避免或者减轻这些问题带来的影响。

2024-02-04 10:23:13 1270

原创 Mysql-全局锁、表锁、行锁

全局锁是是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。在实际应用中,需要根据实际需求选择合适的锁定方式,以提高数据库的性能和并发能力,并确保数据的一致性。🎯🎯。

2024-01-21 10:54:13 948

原创 Selenium IED-命令操作

Selenium IDE提供了一些命令,用作录制自动化脚本时获取页面上元素的内容或一些操作来提供服务的。下面给大家说一下Selenium IDE提供的一些命令以及命令的具体作用。Selenium IDE是一个用于自动化测试的浏览器扩展,它允许用户记录和回放用户在浏览器中的交互操作。在使用这些命令时,需要确保指定的元素在页面中存在,并且等待的条件是合理的。如果等待时间过长或者条件不合理,可能会导致测试用例失败或者操作超时。因此在使用这些命令时需要谨慎考虑等待的条件和时间。

2023-12-11 16:12:18 294

原创 Selenium IED-安装及简单使用

Selenium 通过使用 WebDriver 支持市场上所有主流浏览器的自动化。Webdriver 是一个 API 和协议,它定义了一个语言中立的接口,用于控制 web 浏览器的行为。每个浏览器都有一个特定的 WebDriver 实现,称为驱动程序。驱动程序是负责委派给浏览器的组件,并处理与 Selenium 和浏览器之间的通信。这种分离是有意识地努力让浏览器供应商为其浏览器的实现负责的一部分。

2023-12-09 09:19:49 497 1

原创 一文了解多线程实现交替执行

有一个需求是要求多个线程去执行任务,需要每个线程都执行一次之后再继续执行,也就是说每个线程交替去执行任务。举个例子来说,有两个线程,一个输出字母,一个输出数字。交替输出1A2B3C4D5E…来实现这样一个业务场景。对于一个需求的实现方式有很多种,我们可以通过不同的维度,针对于业务的侧重点不同来由不同的实现方式,我们要有无限的思想去思考问题,要有发展的眼光去看待问题。🎯🎯。

2023-11-13 15:39:22 225

原创 手写Hystrix基本原理

Spring Cloud Hystrix 是基于 Netflix 公司的开源组件 Hystrix 实现的,它提供了熔断器功能,能够有效地阻止分布式微服务系统中出现联动故障,以提高微服务系统的弹性。Spring Cloud Hystrix 具有服务降级、服务熔断、线程隔离、请求缓存、请求合并以及实时故障监控等强大功能。Hystrix是一个强大的工具,可以帮助开发人员处理分布式系统中的故障和延迟问题,提高系统的可用性和性能。它的各种功能和特点使得开发人员能够更好地控制和管理系统的运行状态,提供更好的用户体验。

2023-09-29 11:34:12 266

原创 手写Ribbon基本原理

Ribbon 是一个客户端负载均衡器,它是Spring Cloud Netflix开源的一个组件,用于在分布式系统中实现对服务实例的负载均衡。它可以作为一个独立的组件使用,也可以与 Spring Cloud 等微服务框架集成使用。Ribbon 的主要功能是根据一定的负载均衡策略,将客户端请求分配到可用的服务实例上,以提高系统的可用性和性能。它通过周期性地从服务注册中心(如 Eureka)获取可用的服务实例列表,并根据配置的负载均衡策略选择合适的实例来处理请求。

2023-09-05 09:20:33 814

原创 JPA在不写sql的情况下实现模糊查询

在我们的项目中很多的业务都会设计模糊查询,例如按照姓氏去获取人员的信息,按照手机号的前三位去获取人员的信息等。我们除了正常的手写模糊查询的sql语句去获取信息之外,还可以使用JPA自带的API来实现任意字段的模糊查询。JPA已经给我们封装好了。当我们对模糊查询非常熟悉了之后直接拿来时候即可。

2023-08-31 10:01:49 1804 2

原创 ElasticSearch-集成ik分词器

我们在项目中集成了ElasticSearch服务之后,需要对内容进行分词处理。这时候就需要用到分词器。其实ElasticSearch服务自身也会带有分词器。ElasticSearch服务自带的分词器是单个字进行分的。在我们的业务当中要求对整个词进行拆分。这时候就用到了ik分词器。ik分词器是词库分词的分词方式。当然根据我们的业务不同还可以选择其他的分词器。IK分词器在中文分词方面具有较好的准确性和性能,支持自定义词典和拼音分词,适用于各种中文搜索和分析场景。

2023-08-25 09:05:46 1401

原创 SpringBoot项目集成ElasticSearch服务

Spring boot的版本是: 2.3.12ElasticSearch的版本是:7.6.2在我们的项目中经常会遇到对于字符串的一些操作,例如对于字符串的分词,通过一个词去查找对应的原文(全文搜索)。那可能有人就会问了,使用mysql的模糊查询也可以根据一个词去查找对应的原文呀?是的没有问题,Elasticsearch和 MySQL 是两种不同类型的数据库,各自有不同的特点和适用场景。MySQL 适用于关系型数据存储和复杂的关系查询,适合事务性操作和数据一致性要求较高的场景。

2023-08-19 08:49:02 1519

原创 ElasticSearch-安装部署全过程

是一个开源的分布式搜索和分析引擎,它建立在 Apache Lucene 搜索引擎库之上。它提供了一个分布式、多租户的全文搜索引擎,具有强大的实时搜索和分析能力。Elasticsearch 是用 Java 语言编写的,并且提供了 RESTful API,使其易于集成和使用。Kibana 是一个用于数据可视化和分析的开源工具。它提供了一个直观的 Web 界面,可以通过图表、仪表盘和报表等方式展示 Elasticsearch 中的数据。Kibana 支持实时数据可视化,并提供了强大的查询和过滤功能。

2023-08-18 10:01:57 2776

原创 Linux如何开启指定端口号

防火墙用于保护网络安全,通过过滤和阻止网络流量来防止恶意攻击和未经授权的访问;而端口号用于标识网络中的应用程序或服务,使得数据包能够正确传递给目标应用程序或服务。

2023-08-11 16:42:05 2207

原创 JPA实现存储实体类型信息

在我们项目开发的过程中经常会用到继承和多态。当我们向数据库中保存数据的时候保存的都是子类的信息,用了一个字段>来区分数据是什么类型的,也就是说当前这条数据是哪个子类的。但是我们从数据库中查询数据的时候往往不清楚查询出来的是哪个子类类型的数据,所以统一使用父类类型的对象去接收。这样当我们使用从数据库中获取出来的对象的时候就是父类类型。当使用这个对象去执行方法的时候就无法达到多态的效果。对此我们可以使用JPA给我们提供的注解来解决这个问题。

2023-08-09 10:56:22 865

原创 ConcurrentHashMap源码详解

ConcurrentHashMap是一个线程安全的哈希表实现,它通过锁分段技术实现了高效的并发性能,支持高效的并发更新和弱一致性的迭代器。但需要注意的是,ConcurrentHashMap不支持存储null键和null值。在多线程环境下,使用ConcurrentHashMap可以提高并发性能,并且无需额外的同步措施。

2023-07-31 09:02:23 271

原创 线程池详解并解决并发问题

线程池是一种用于管理和复用线程的机制。它由一个线程队列和一组管理线程的方法组成。线程池中的线程可以被重复使用,用于执行提交的任务,而不需要每次都创建和销毁线程。

2023-07-24 09:07:44 1419

原创 如何解决循环引用的问题

循环引用是指在对象之间存在相互引用的情况。具体来说,当一个对象A引用了另一个对象B,而对象B又引用了对象A,它们之间形成了一个循环引用关系。

2023-07-18 20:36:16 1760

原创 JPA实现多对多关系

在两个实体类中使用@ManyToMany注解来表示多对多关系,并通过@JoinTable注解指定中间表的名称和关联字段。JPA会自动创建中间表,并维护两个实体类之间的关联关系。如果需要在中间表中添加其他字段,可以创建一个新的实体类来表示中间表,并在两个实体类中使用@OneToMany和@ManyToOne注解来表示与中间表的一对多关系。

2023-07-16 21:41:39 1774 2

原创 本地安装Linux虚拟机(超详细)

8.这里个人推荐选择 GNOME桌面 带可视化的 但是我想做一个最小的虚拟化主机(不带GUI)这样可以提高性能 根据自己需要 选择。5.这里选择linux 下面的版本就是你下载的linux的镜像版本 我的是 CentOS 7 64位的。7.然后选择安装源 默认的 点一下完成就好了 (我这里不是灰的 就不需要了)点进去给你们看一下。注意以太网后面括号里面的东西 他是你网络配置文件的名字 它默认的就好 不一样没关系没啥影响。10.然后就是 系统的安装位置我这里用的默认的其实可以 下面我讲一下自定义。

2023-07-16 18:26:04 1625

原创 回溯算法详解(Back Tracking)

因为它需要穷举所有可能的解空间。在最坏情况下,回溯法的时间复杂度为指数级别,即O(2^n),其中n为问题的规模。然而,回溯法的效率和稳定性可能受到问题规模的影响。对于规模较大的问题,回溯法可能会耗费大量的时间和空间。回溯法,可以系统的搜索一个问题的所有解或任一解。回溯法通常涉及到对问题状态的深度优先搜索,在搜索过程中,算法尝试一步步地构建解决方案,每次决策都会将问题状态。它通过穷举所有可能的解空间来搜索解,因此在给定的问题中,回溯法能够找到。因此,回溯法的空间复杂度通常是O(n),其中n为问题的规模。

2023-07-15 10:38:02 1850

原创 手写CDN基本原理

CDN是一种通过在全球建立分布式节点服务器,将内容缓存到离用户最近的节点上,提供快速、高效的内容传输和分发服务的技术。CDN通过加速内容传输、负载均衡、提高可用性、增强安全性等功能,提供了更好的用户体验和网站性能。随着互联网的发展,CDN将继续发挥重要作用,为用户提供更快速、可靠的内容访问服务。

2023-07-10 21:28:16 1200 1

原创 Nginx-代理服务器详解

Nginx代理服务器是一种高性能的Web服务器和反向代理服务器,具有负载均衡、缓存加速、SSL终端、静态资源服务等多种功能。它在负载均衡、缓存加速、安全过滤等场景中有着广泛的应用。通过合理配置和使用Nginx代理服务器,可以提高系统的性能、可用性和安全性。

2023-07-07 21:46:41 1337

原创 Java版事件与委托实现自动创建工厂并热加载

- 事件是程序中发生的特定动作或状态的通知,可以是用户操作、系统事件或其他触发条件。 - 委托是一种引用方法的类型,可以将方法作为参数传递、存储和调用。 - 通过事件与委托的机制,可以实现一种松耦合的方式,使不同的组件之间能够进行通信和交互。 - 当事件发生时,会调用注册的委托方法来处理事件,从而实现相应的逻辑。

2023-07-04 11:09:23 867

原创 一文了解Bean的作用域

作用域是Spring框架中用于定义Bean的生命周期和可见性的一种机制。Spring提供了多种作用域来满足不同的需求。通过合理选择和配置Bean的作用域,我们可以控制Bean的生命周期和可见性,以满足不同的需求。

2023-07-04 09:16:02 1174

原创 流及其相关操作

流是一个序列化的数据集合,它可以通过一系列的操作来进行转换和处理。流的操作可以分为中间操作和终端操作。中间操作用于转换和处理数据,终端操作用于输出结果。流的操作是惰性求值的,只有在终端操作被调用时才会执行。流的操作可以链式调用,形成一个流水线,每个操作都会返回一个新的流,可以继续进行下一步操作。

2023-07-04 08:38:28 177

原创 Nginx-安装和部署全过程

Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。​​。

2023-07-01 21:14:21 664

原创 什么是序列化,一文搞懂!

总结起来,序列化和反序列化是在对象和特定格式(如二进制、JSON、XML等)之间进行转换的过程,可以实现数据持久化、数据传输以及跨平台和跨语言通信等功能。不同的序列化方式适用于不同的场景和需求,可以根据具体情况选择合适的方式进行序列化和反序列化操作。

2023-06-29 16:06:35 1245 1

原创 设计模式之结构型模式

结构型设计模式提供了一种灵活、可复用和可扩展的方式来组织和管理对象之间的关系。正确地选择和使用适合的设计模式可以提高代码的可维护性、可读性和可测试性,并帮助我们构建更好的软件系统。🎯🎯。

2023-06-28 23:07:25 864

原创 设计模式之创建型模式

这些创建型设计模式都有各自的优势和适用场景。正确地选择和使用适合的设计模式可以提高代码的可维护性、可读性和可测试性,并帮助我们构建更好的软件系统。总的来说,创建型设计模式提供了一种灵活、可复用和可扩展的方式来创建对象。它们可以帮助我们隐藏对象的创建细节,提供全局访问点,解耦对象的创建与使用,以及实现动态创建对象的能力。正确地应用这些模式可以提高代码的可维护性、可读性和可测试性,并帮助我们构建更好的软件系统。🎯🎯。

2023-06-28 23:07:04 498

原创 设计模式之行为型模式

分类只从每个模式的类图中是否体现了聚合关系,也可以说从他们之间关系的强弱来进行区分,无聚合关系比较弱,有聚合关系就比较强。一:代表只选择一个对象。比如说策略模式,可以有很多的策略但是最后选择的只有一个对象。多:代表需要便利多个对象。比如说中介者模式中的例子,具体中介者可以知道很多的具体的同时,但是同事和同事之间是互相不了解的。对于中介者和同事之见就是一对多的关系。这些行为型设计模式都提供了一种灵活、可复用和可扩展的方式来组织和管理对象之间的交互和通信。

2023-06-28 23:06:37 730

原创 如何配置jdk环境变量

配置JDK环境变量后,你就可以在命令提示符或其他开发工具中使用Java和Javac命令来编译和运行Java程序了。总之,配置环境变量可以提供方便、可移植性和管理系统级配置的好处,使系统和应用程序更易于使用和维护。🎯🎯。

2023-06-28 10:26:16 41934

原创 Docker-DockerFile制定镜像

Docker和Dockerfile是现代化软件开发和部署的重要工具。通过使用Docker,开发人员可以实现快速、可靠和可移植的应用部署。而通过制作高质量的Dockerfile,可以确保镜像的可靠性和可维护性。对于开发人员来说,掌握Docker和Dockerfile的使用和最佳实践,将极大地提高开发和部署效率。🎯🎯。

2023-06-26 17:55:59 1772

原创 Zabbix-客户端部署全过程

zabbix是一个基于web界面的提供分布式系统监控以及网络监视功能的企业级的开源解决方案,zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。Zabbix具有广泛的监控能力,可以监控服务器、网络设备、应用程序、数据库等各种资源。它支持多种监控方式,包括主动监控、被动监控、SNMP监控等。「 灵活的配置选项」:Zabbix提供了丰富的配置选项,可以根据实际需求进行灵活的配置。用户可以定义监控项、触发器、报警方式等,以满足不同的监控需求。

2023-06-26 10:54:17 662

原创 Nginx-负载均衡详解

Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。本文介绍nginx的反向代理,其他内容敬请期待!负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。

2023-06-24 16:59:25 711

原创 操作系统之死锁详解

操作系统死锁是指在并发环境下,由于资源竞争而导致的进程或线程无法继续执行的状态。死锁的产生需要满足一定的条件,可以通过预防、避免、检测和解决等策略来处理死锁问题。了解和掌握死锁相关知识对于设计和优化并发系统非常重要。需要注意的是,死锁并不是必然发生的,它取决于资源的获取顺序和调度器的调度策略。

2023-06-24 10:47:18 932

原创 Nginx-反向代理详解

Nginx 是一个高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点,被广泛用于搭建静态资源服务器、负载均衡、反向代理等场景。本文介绍nginx的反向代理,其他内容敬请期待!反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。简单理解为用户直接访问反向代理服务器就可以获得目标服务器的资源。这一过程叫反向代理​。

2023-06-24 09:28:36 71233 9

原创 Nacos-手写配置中心基本原理

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。

2023-06-23 09:37:44 1633 5

运维-Nginx代理服务器-方向代理-负载均衡-数据缓存

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Aoache服务不错的替代品。Nginx相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势,并且Nginx有反向代理、负载均衡和缓存数据的功能。 反向代理:其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 负载均衡:LB是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。简单来说,就是把多条客户端的请求传给Nginx反向代理服务器,Nginx在把这些请求分别发送而给多个Web服务器,来减少直接对一个Web服务器造成的压力。 缓存数据:数据缓存是客户端第一次访问服务器的时候,nginx会把从服务器返

2022-05-25

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

TA关注的人

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