自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringCloud面试题(必看)

一、微服务架构四个核心问题?二、微服务优缺点三、为什么要选择cloud做微服务架构四、cloud深入了解1、所有实体类必须实现序列化,传输汇报错误2、热部署 spring-boot-devtools3、请求接口 Get/postForObject4、RestTemplate{请求接口地址,参数,返回值类型}5、需要通过bean把接口注入进去五、Eureka注册中心六、Ribbon负载均衡七、负载均衡类型八、FeignClient(注入服务名,让别的服务能获取到你的方法)Component FeignClie

2022-09-06 17:03:00 11553

原创 SQL Server 2019详细安装教程(非常靠谱)

一、安装SQL Server 20191、鼠标右击要用管理员身份运行Setup,避免不要的麻烦2、运行以后会跳出一下界面,然后点击图片左边的“安装”选项3、此界面什么都不用管,直接点击下一步 4、然后会跳出以下界面,选择developer,这边各种版本的选择参照网上的参考建议,eveluation版本只有180天的试用期限。选择好以后,点击下一步5、点击我接受,然后下一步6、功能呢是根据自己的需求来选择,必选:数据库引擎服务,和SQL Server复制...

2020-10-19 17:04:28 29983 61

原创 Java六种常用线程池

FixedThreadPool(有限线程数的线程池):线程数是固定的,一旦线程池的大小达到了最大值,新的任务会被放入阻塞队列中等待。适用于需要限制线程数的场景,如服务器端并发请求。CachedThreadPool(无限线程数的线程池):线程数不限制,适用于执行很多短期异步任务的程序,线程数根据需要自动调整,线程空闲超过60秒则自动回收。ScheduledThreadPool(定时线程池):可以定时或延时执行任务的线程池。适用于需要延迟执行或定期执行任务的场景。

2024-01-14 11:15:17 867

原创 Mysql面试题(必看)

• 从物理存储角度 1. 聚集索引(clustered index) 2. 非聚集索引(non-clustered index)• 从数据结构角度 1. 树索引 (O(log(n))) 2. Hash 索引。

2023-10-20 09:01:03 174

原创 SpringBoot整合Minio【项目实战】

Minio是一个开源的对象存储服务器,它与Amazon S3云存储服务兼容。它是一个轻量级的解决方案,旨在在私有云环境中提供高性能的存储服务。Minio允许用户使用标准的S3 API进行数据存储和检索操作,同时提供了一些额外的功能。兼容性:Minio兼容Amazon S3 API,这意味着使用Minio的应用程序可以很容易地迁移到Amazon S3或反之亦然,而无需进行重大修改。高性能:Minio专注于提供高性能的对象存储服务。它可以在分布式环境中运行,可以轻松地扩展以处理大量数据。轻量级。

2023-10-19 07:57:23 174

原创 SpringCloud整合Seata

Seata 是一个开源的分布式事务解决方案,主要用于解决分布式系统中的数据一致性问题。它是阿里巴巴开源的分布式事务框架,可以帮助开发人员简化分布式事务开发流程,提高分布式系统的事务处理能力。事务协调器(Transaction Coordinator):负责事务的协调和管理,包括全局事务的创建、提交、回滚等操作。事务管理器(Transaction Manager):管理分支事务的提交和回滚,与事务协调器协同工作,确保分布式事务的一致性。事务参与者(Resource Manager)

2023-10-17 09:11:28 276

原创 新项目技术选型以及落地实现

官方通告SpringBoot1.5.x及以下版本官方不再提供维护了,建议开发者选择使用SpringBoot2.0.x以上的版本,相对应的SpringCloud版本也最好不要使用。如果springboot项目想使用druid也是可以的,但是需要手动编写配置类并注入到bean中,并加载对应的配置参数;其他依赖的版本号:没有仔细研究,使用我们其他项目中常用的。其实也可以直接去Maven官网上找。作用是一样的,都是连接池提供连接,里边的配置参数都是一样的;但是不建议,明明有现成封装好的jar,就直接使用就好了!

2023-10-16 13:21:57 92

原创 【项目实战】-全局异常处理

ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。这里ControllerAdvice也可以这么理解,其抽象级别应该是用于对Controller进行切面环绕的,而具体的业务织入方式则是通过结合其他的注解来实现的。

2023-10-12 08:06:56 519

原创 Tomcat配置访问日志和线程数

这个参数决定是否需要切换切换日志文件,如果被设置为false,则日志文件不会切换,即所有文件打到同一个日志文件中,并且file-date-format参数也会被忽略。%T - 处理请求的时间,单位为秒%I - 当前请求的线程名(can compare later with stacktraces)%b - 发送的字节数(Bytes sent), 不包括HTTP headers的字节,如果为0则展示’-’%m - 请求的方法(GET, POST等)%p - 接受请求的本地端口。

2023-10-10 15:36:02 1002

原创 【项目实战】-Spring Boot集成Elasticsearch

最近项目中要使用Elasticsearch所以就去简单的学习了一下怎么使用,具体的一些在高级的功能暂时展示不了,能力目前有点限,不过一些基本的需求还是可以满足的。所以就写了一篇整理一下也希望能够指出不足之处})0\"}}")})0\"}}")})0\"}}")})0\"}}")

2023-10-10 15:30:33 561

原创 【项目实战】-Spring-Cloud跨域方案汇总

在开发Spring Cloud和Vue的项目时,涉及到前后端分离的情况下,跨域成为一个常见的问题。本文将介绍跨域问题的背景,并提供了一些解决方案。跨域(Cross-Origin Resource Sharing,CORS)是一种浏览器的安全机制,用于限制从一个源(域、协议或端口)加载的Web页面上的资源如何与来自其他源的资源进行交互。当一个 Web 应用程序尝试从一个源加载来自不同源的资源时,浏览器将执行跨域检查。跨域限制的目的是保护用户隐私和安全,防止恶意网站通过跨域请求来获取用户的敏感信息。

2023-10-10 15:21:29 886

原创 java动态数据源配置

DataSource是和线程绑定的,动态数据源的配置主要是通过继承AbstractRoutingDataSource类实现的,抽象类AbstractRoutingDataSource,通过扩展这个类实现根据不同的请求切换数据源。AbstractRoutingDataSource继承AbstractDataSource,如果声明一个类DynamicDataSource继承AbstractRoutingDataSource后,DynamicDataSource本身就相当于一种数据源。

2023-10-10 15:13:35 1002 1

原创 SpringBoot自动装配原理

真正干活的类,读取META-INF/spring.factories文件内容的类,springboot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入容器,自动配置类就生效,帮我们进行自动配置的工作:spring.factories文件位于springboot-autoconfigure.jar包中。硬编码的缺点大家都懂,假如找不到指定的实现类抛出异常是必然的,

2023-10-10 15:05:04 404

原创 SpringBoot配置Druid

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。Druid 是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件, 被大量业务和技术产品使用或集成,经历过最严苛线上业务场景考验,是你值得信赖的技术产品。

2023-10-09 14:04:24 2181

原创 JVM调优理论与实践最佳结合

垃圾的定义:没有任何引用指向的一个对象或者多个对象(循环引用)

2023-10-09 13:57:35 398

原创 JVM内存模型

堆由老年代和新生代组成,新建的对象一般都是在存放在Eden区,当Eden区不够用时,就会就行Minior GC,回收垃圾对象释放内存空间,当垃圾回收后仍然存活的对象就会放到S0和S1其中一块区域,当再次发生Minior GC时,会把Eden区和有对象的S区中的存活对象移动到另外一块空的S区,这时先前有对象的S区又变成空的S区,所以S0和S1是相互转化的,当S区对象达到一定的阈值时,新生代的对象就会向老年代转移,当老年代的对象达到一定阈值时,就会触发Full GC。一个线程一个栈,一个方法一个栈帧。

2023-10-09 13:42:43 387

原创 JVM类加载机制

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称为虚拟机的类加载机制。Java语言里类型的加载、连接、初始化都是在程序运行期间完成的。例如,编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类,用户可以通过Java预置的或者自定义类加载器,将某个应用程序在运行时从网络或者本机磁盘加载一个二进制流文件作为程序的一部分(比如SPI机制)。这都依赖Java语言运行期类才加载诞生的。/**

2023-10-09 13:36:40 391

原创 nginx使用详解

Nginx是一个轻量级、事件驱动的Web服务器,最初由Igor Sysoev于2004年创建。高性能:Nginx被设计成能够处理大量并发连接和请求,具有出色的性能表现。它的事件驱动架构使得能够高效地处理多个并发请求,而无需为每个请求创建一个新的线程或进程。稳定性:Nginx非常稳定,能够长时间运行而不需要频繁的重启。它的稳定性使得它成为大型高流量网站的首选。灵活性:Nginx是一个高度可配置的服务器,可以通过配置文件进行灵活的定制。它支持模块化的架构,允许添加额外的功能和扩展。反向代理。

2023-10-02 18:50:22 439

原创 Java对象内存分配流程详解

逃逸分析(Escape Analysis)是一种编译器和运行时系统优化技术,用于分析对象的作用域(scope)和生命周期,以确定它们是否逃逸出了分配它们的方法或线程的范围。如果对象没有逃逸,编译器和运行时系统可以执行一些优化,例如栈分配或线程局部分配,以提高程序的性能和减少内存开销。逃逸分析的主要目标是降低程序的内存使用和提高程序的执行效率。局部分析(Local Analysis):编译器会对方法内的对象分配进行分析,以确定对象是否在方法内部使用,并且没有逃逸到方法外部。

2023-10-02 18:41:17 507

原创 SprigBoot-自动装配原理

当涉及到Spring Boot自动装配时,我们通常指的是Spring Boot框架的核心功能之一,即自动装配(Auto-Configuration)。Spring Boot通过自动检测你的项目中的依赖和配置来简化应用程序的构建过程,以提供一个开箱即用的开发体验。本篇博客将介绍Spring Boot自动装配的基本概念,并附带Java代码示例。Spring Boot自动装配(Auto-Configuration)是Spring Boot框架的核心特性之一,旨在简化Spring应用程序的配置和开发流程。

2023-10-02 18:28:18 398

原创 【项目实战】- MybatisPlus逆向工程

逆向工程是一个自动化生成数据库表对应的Java实体类、Mapper接口以及XML映射文件的工具。MyBatis Plus提供了强大的逆向工程功能,可以帮助开发人员快速生成与数据库表对应的代码,从而减少手动编写的工作量。在本篇博客中,我们将介绍如何使用MyBatis Plus逆向工程,并提供相应的Java代码示例。MyBatis Plus逆向工程是一种自动生成MyBatis代码的技术,它可以基于已存在的数据库表结构生成Java实体类、Mapper接口以及XML映射文件。

2023-09-23 22:11:56 3841

原创 MybatisPlus分页工具

当使用MyBatis Plus进行分页操作时,可以大大简化数据库分页查询的过程。在本篇博客中,我们将介绍如何使用MyBatis Plus的分页工具来实现分页查询,并提供相应的Java代码示例。MyBatis Plus是一个优秀的持久层框架,它在MyBatis的基础上进行了扩展,提供了更多的便捷功能,包括分页查询。分页查询是在大多数应用中都会用到的功能,用于处理大量数据的查询和展示。MyBatis Plus的分页工具能够轻松地实现分页查询,而无需手动编写复杂的SQL语句。

2023-09-23 22:08:58 2198

原创 MybatisPlus如何解决SQL注入(必看)

在深入讨论如何防止 SQL 注入之前,让我们首先了解 SQL 注入攻击的工作原理。SQL 注入攻击通常发生在接受用户输入的地方,例如搜索框、登录表单等,攻击者试图在输入中注入恶意 SQL 代码。SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码';如果攻击者输入这将使查询始终返回所有用户的记录,因为'1'='1'始终为真。攻击者可以通过这种方式绕过身份验证,获取或修改敏感数据。

2023-09-22 08:28:28 5124

原创 钉钉实现文本消息发送(java)

通过使用钉钉机器人和Java编程,你可以轻松实现文本消息的发送。钉钉是一款流行的企业即时通讯工具,它提供了强大的消息发送功能,可以用于实现各种通知和提醒。本文将介绍如何使用Java编写一个简单的程序,通过钉钉机器人实现文本消息的发送。下面是一个使用Java编写的程序,用于向钉钉机器人发送文本消息。:你需要拥有一个钉钉企业工作台,并拥有管理员权限,以便能够创建和管理钉钉机器人。:在钉钉工作台中,创建一个机器人并获取Webhook地址,用于向机器人发送消息。如果一切顺利,你将在钉钉群中收到一条文本消息。

2023-09-22 08:23:54 2662

原创 微信公众号实现天气预报通知(java)

随着移动互联网的普及,人们越来越依赖手机来获取各种信息,包括天气预报。为了提供更加便捷的天气信息,可以使用微信公众号来实现天气预报的自动通知功能。本文将介绍如何使用Java编写一个简单的程序,通过微信公众号向用户发送天气预报通知。

2023-09-22 08:18:08 2357

原创 Nacos 实现负载均衡

Nacos是一个多功能的分布式系统基础设施,它提供了服务发现、配置管理、动态 DNS 服务和更多功能。其中,服务发现是 Nacos 最常用的功能之一。服务提供者可以将自己的服务注册到 Nacos 服务器,并且服务消费者可以通过 Nacos 服务器来发现可用的服务。Nacos 提供了强大的服务发现和注册功能,可以用于实现负载均衡。通过将多个服务提供者注册到 Nacos 中,并使用 Nacos 客户端来发现和选择服务实例,你可以轻松实现负载均衡,并确保应用程序的高可用性和性能。

2023-09-22 08:14:32 2953

原创 Elasticsearch实战(必看)

Elasticsearch 是一个分布式、开源的搜索和分析引擎,它构建在 Apache Lucene 基础之上。Elasticsearch 提供了高效的文本搜索、实时分析和复杂的查询功能。它可以处理各种类型的数据,包括文本、数字、地理空间数据等,并且可以轻松扩展以处理大量数据。Elasticsearch 的主要特点包括:分布式架构:Elasticsearch 可以在多个节点上运行,支持数据的分片和复制,以确保高可用性和性能。实时搜索:它能够在毫秒级别内返回搜索结果,非常适合构建实时搜索应用程序。

2023-09-22 08:11:43 2127

原创 跨域问题详解及解决方案

跨域问题(Cross-Origin Resource Sharing,CORS)在Web开发中是一个常见的挑战,它涉及到浏览器的同源策略(Same-Origin Policy)以及如何在不同域之间安全地共享资源。本篇博客将深入探讨跨域问题的背景、原因,以及解决方案,并提供Java代码示例来演示如何在服务器端实现这些解决方案。在Web开发中,同源策略是一项安全措施,它限制了一个网页在一个源(源由协议、域名和端口组成)上加载的文档如何与来自不同源的资源进行交互。

2023-09-22 08:06:38 1690

原创 Java问题诊断和排查工具

在数字世界中,Java作为一种流行的编程语言,广泛应用于开发各种类型的应用程序。然而,在开发过程中,不可避免地会出现各种问题。本文将探讨一些用于诊断和排查Java问题的工具。

2023-09-17 12:57:44 1856

原创 Spring-IOC-深度学习

IoC代表控制反转(Inversion of Control),是一种软件设计原则,它反转了传统的程序控制流。在传统的程序中,应用程序负责控制和管理对象的创建和生命周期。而在IoC中,控制权被反转,对象的创建和管理变为由外部容器(通常是IoC容器)负责。将组件之间的依赖关系从代码中移出,将其配置在外部,由容器来负责管理这些依赖关系。这可以通过构造函数注入、方法注入或属性注入等方式来实现。

2023-09-15 08:37:12 1774

原创 Spring-AOP深度学习

AOP是一种编程范式,旨在将不同关注点(如日志记录、事务管理、性能监视等)与应用程序的核心业务逻辑分离开来。它通过在关注点与业务逻辑之间的交叉点(称为切点)上插入代码来实现这一目标。切点(Pointcut):切点是您选择在哪里插入额外代码的规则或条件。通常,它是一个方法的签名或一个特定的类。通知(Advice):通知是在切点上执行的额外代码块。

2023-09-15 08:34:06 1776

原创 Spring-反射

Java反射是一种在运行时检查和操作类、方法、字段等的机制。它允许您在编译时未知类的情况下,获取类的信息并调用其方法、访问其字段等。反射是Java语言的一个强大特性,但也需要谨慎使用,因为它可能会导致性能问题和代码可读性问题。反射的核心类是Class,它代表了一个类的运行时信息。您可以使用Class对象来获取有关类的信息,如类名、字段、方法等。总结一下,Java反射是一种强大的工具,可以在运行时检查和操作类、方法、字段等。但请注意,谨慎使用反射,避免破坏封装性和引入性能问题。

2023-09-15 08:29:44 1753

原创 如何解决循环依赖

循环依赖指的是两个或多个模块、类或组件之间形成的相互依赖关系环。通常,这些依赖关系是双向的,其中一个模块依赖于另一个模块,同时后者也依赖于前者。难以理解:循环依赖使代码的执行流程变得复杂,难以理解模块之间的关系。难以维护:当一个模块发生变化时,循环依赖可能会导致多个模块需要同时修改,增加了维护的复杂性。难以测试:循环依赖可能导致难以分离单元测试,因为一个模块的测试可能依赖于其他模块的状态。循环依赖是一个常见的问题,但可以通过仔细的设计和合适的解决方法来解决。

2023-09-15 07:20:13 1997

原创 SpringCloud-Gateway鉴权

API 网关是位于客户端和后端服务之间的中间层,负责管理、监控和保护 API。它可以用于实现许多功能,包括路由请求、负载均衡、鉴权、日志记录、缓存和限速等。在这里,我们将重点关注如何使用 API 网关来实现鉴权。API 网关是实现鉴权和安全性的重要工具之一。它可以集中管理鉴权逻辑,提供监控和日志记录功能,同时还具有灵活性和性能优势。在构建微服务架构或任何需要鉴权的应用程序时,考虑使用 API 网关来提高安全性并简化管理。

2023-09-15 07:14:31 2347

原创 设计模式-里氏替换原则

里氏替换原则(Liskov Substitution Principle,LSP)是面向对象编程中的一个重要设计原则,它是SOLID原则中的一部分,旨在确保子类(派生类)可以替代父类(基类)而不引入错误或破坏原有的程序设计和逻辑。这个原则的核心思想是,子类应该是父类的可替代品,它们应该具有相同的行为,或者说子类应该能够在不修改父类的情况下扩展或修改其行为。里氏替换原则是一个有助于设计稳健、可维护的面向对象系统的关键原则。它强调子类可以扩展或修改父类的行为,但不应该破坏父类的契约。

2023-09-15 06:53:49 1810

原创 设计模式-依赖倒置原则

依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象编程中的一项重要设计原则,它强调高层模块不应该依赖于低层模块,二者都应该依赖于抽象。此原则的核心思想是:编程时应该面向接口而不是具体的实现。依赖倒置原则是SOLID原则中的其中一项,由Robert C. Martin提出,旨在提高软件系统的可维护性、可扩展性和可重用性。这个原则的名称中包含了"倒置"一词,意味着高层模块和底层模块的依赖关系发生了颠倒。

2023-09-15 06:51:23 1818

原创 设计模式-单一职责

单一职责原则(Single Responsibility Principle,SRP)是面向对象编程中的一个重要设计原则,它强调一个类应该只有一个修改的理由。这意味着一个类应该只有一个单一的责任或功能。这个原则的核心思想是将一个类的功能限制在一个合理的范围内,以便提高代码的可维护性、可扩展性和可复用性。单一职责原则是面向对象设计中的重要原则之一,它有助于降低类的复杂性,提高代码的可维护性和可扩展性。遵循单一职责原则可以使代码更加清晰、可读,同时也更容易测试和重用。

2023-09-15 06:49:07 1805

原创 Redis过期删除策略

Redis是一个高性能的内存键值存储数据库,常用于缓存和数据存储。Redis具有多种数据过期删除策略,允许您设置数据的生存时间,并在到期时自动删除。在本文中,我们将深入探讨Redis的过期删除策略,以及如何在实际应用中使用它们。Redis的过期删除策略允许您为键设置生存时间,并在到期时自动删除数据。您可以选择使用定时删除策略或惰性删除策略,具体取决于您的需求和应用场景。无论选择哪种策略,Redis的过期删除功能都是管理数据存储的有力工具,有助于释放内存和确保数据的有效性。

2023-09-14 18:55:13 1823

原创 Kafka-深度学习

当我最后更新我的知识时(2021年9月),Apache Kafka是一个流行的分布式消息队列系统,用于可靠地传输和处理大量的实时数据。Kafka的设计目标包括高吞吐量、可扩展性和容错性,使其成为处理实时数据流的理想工具。在本文中,我将为您写一篇关于Kafka的博客,并附上一些Java代码示例,以帮助您入门Kafka。Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后来成为Apache软件基金会的顶级项目。可扩展性。

2023-09-14 18:51:56 1806

原创 MybatisPlus-深度理解

当我最后更新我的知识时(2021年9月),MyBatis Plus是一个流行的持久层框架,它在MyBatis的基础上提供了更多的便利功能,帮助Java开发人员更轻松地与数据库交互。在本文中,我将为您写一篇关于MyBatis Plus的博客,并附上一些Java代码示例,以帮助您入门MyBatis Plus框架。MyBatis Plus是MyBatis的增强工具,旨在简化数据库操作和提高开发效率。

2023-09-14 18:44:14 144

SQL Server 2019详细安装教程(非常靠谱)

SQL Server 2019详细安装教程(非常靠谱)

2022-09-09

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

TA关注的人

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