自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis高级

1. 单点故障(Single Point of Failure):当 Redis 运行在单机模式时,如果这台服务器发生故障,整个 Redis 服务将不可用,导致系统中断。这种情况下,没有冗余备份可以立即接管服务,因此单机 Redis 存在单点故障问题。2. 有限的内存容量:单机 Redis 的内存容量受到物理服务器内存的限制,无法无限扩展。当数据量超出内存容量时,可能会导致性能下降或数据丢失的风险。3. 扩展性受限:单机 Redis 的读写性能受到物理服务器的限制,无法线性扩展。随着业务增长,单机 Redi

2024-07-14 20:33:35 651

原创 Redis

"Redis就像是一个超级快速的记事本,可以帮你快速地存储和检索各种信息,就像你在一个魔法笔记本里写下东西,然后随时可以瞬间找到它们一样。Redis是一个开源的内存数据库,它可以被用作缓存、数据库和消息代理。Redis支持多种数据结构,如字符串(Strings)、哈希表(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等。它被广泛应用于各种场景,包括缓存加速、会话存储、消息队列等,因为它具有高性能、灵活性和丰富的功能。

2024-07-10 16:32:57 757

原创 Git版本控制

Git是一种分布式版本控制系统,用于跟踪文件的变化并协作开发代码。

2024-07-02 16:05:36 713

原创 Nacos

Nacos(全称:Dynamic Naming and Configuration Service)是阿里巴巴开源的一款功能强大的动态服务发现、服务配置和服务管理平台。它作为一种云原生的解决方案,旨在帮助开发者更好地构建、管理和发现微服务架构中的各种服务。

2024-07-02 11:01:48 535

原创 Spring MVC

Spring MVC 是 Spring 框架中的一个模块,用于构建基于 Java 的 Web 应用程序。它提供了一种基于 MVC(Model-View-Controller)设计模式的方式来开发 Web 应用,使开发人员能够更好地组织和管理项目代码。

2024-06-28 14:30:32 1056

原创 Spring Boot应用知识梳理

Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的工具。它简化了基于 Spring 的应用程序的配置和部署过程,提供了一种快速、便捷的方式来构建独立的、生产级别的 Spring 应用程序。

2024-06-24 17:58:59 580

原创 Kubernetes

KubeSphere 是一个基于 Kubernetes 的全面容器管理平台,旨在帮助企业实现多云容器管理、微服务应用支持、DevOps 自动化等功能。多云管理:KubeSphere 提供统一的多云容器管理能力,可在各种云环境中部署和管理应用程序。多租户架构:支持多租户隔离,不同团队可以在同一个集群上独立管理应用程序,提供资源隔离和访问控制。应用生命周期管理:提供应用程序的编排、部署、扩展、更新和监控等功能,简化了应用程序的生命周期管理。DevOps 工具链。

2024-02-25 23:58:48 996

原创 Hutool简介和常用类

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。DateUtil。

2024-02-22 16:51:40 1080

原创 docker面试题(一)

这样的设计使得镜像可以共享相同的层,从而节省存储空间并提高镜像的下载速度。因此,Docker CentOS镜像相对于完整的CentOS镜像来说更为轻量级,适用于容器化部署,但可能缺少一些完整操作系统中的组件和功能。主机网络模式(Host Networking Mode):容器与主机共享网络命名空间,使用主机的网络接口和IP地址,因此容器可以通过与主机相同的方式访问网络。主机与容器间通信:可以使用容器的IP地址与容器进行通信,Docker还支持将容器的端口映射到主机上,从而允许主机通过指定的端口与容器通信。

2024-01-24 14:45:41 1492 1

原创 分库分表之sharingjdbc

Sharding-JDBC是一个轻量级的Java数据库中间件,用于实现分库分表。它通过拦截JDBC的调用,根据预先配置的规则将数据进行分片和路由,使应用程序可以透明地访问分布在多个数据库和表中的数据。主要功能包括数据分片、读写分离、分布式事务以及跨库查询的支持。

2024-01-23 16:06:34 1130

原创 javaweb总览

javaweb需要学习哪些技术。

2024-01-23 16:03:28 368

原创 互联网架构演变过程

微服务架构:微服务架构是一种特殊的分布式架构,将应用划分为更小、更独立的服务单元,每个服务单元负责一个特定的业务功能。无服务器部署(Serverless Deployment):将应用程序的业务逻辑部署到无服务器计算平台(如AWS Lambda、Azure Functions等),无需关心底层的服务器和基础设施。无服务器部署(Serverless Deployment):将应用程序的业务逻辑部署到无服务器计算平台(如AWS Lambda、Azure Functions等),无需关心底层的服务器和基础设施。

2024-01-21 23:40:51 1015

原创 MyBatis面试题及高级用法

答案1: MyBatis是一个Java持久层框架,通过将SQL语句映射到对象,简化了数据库访问。它的主要特点包括动态SQL生成、自动参数映射和复杂映射支持。答案7: Mapper接口是定义SQL操作并将其映射到Java方法的接口。它提供了一种更加面向对象的方式来执行数据库操作,并且可以通过注解或XML进行配置。答案25:MyBatis的插件允许在SQL执行过程中进行拦截和修改。插件可以在SQL被执行前后进行拦截,以实现一些自定义逻辑或增加额外功能。要编写自定义插件,需要实现接口,并在插件类上使用。

2024-01-12 11:12:39 1296

原创 读取大文件之分块思想和多线程

变量,表示每个块的大小。当读取文件时,如果已经处理了一个完整的块,我们会等待所有线程完成当前块的处理,然后再继续处理下一个块。这样可以确保不会同时处理太多的数据,提高程序的稳定性和效率。的值,以获得最佳的处理性能。请注意,过小的块大小可能会导致过多的线程切换开销,而过大的块大小可能会导致内存压力增加或处理时间延长。在这种情况下,你可以将文件划分为多个块,并使用多线程并行处理这些块。此外,你还需要适当地配置你的Spring Boot应用程序的线程池和数据库连接等相关设置,以便获得最佳性能。

2024-01-08 16:48:35 495

原创 统一异常处理及其JSR 303

在某些情况下,特别是在复杂的应用程序中或涉及多层调用的情况下,异常可能会被捕获并在调用链上向上传播,导致异常的实际发生位置与最初引发异常的位置不同。另外,如果在统一异常处理过程中没有正确记录和打印详细的异常信息和堆栈跟踪,或者在捕获异常时没有保留原始异常信息,那么可能会导致异常的定位问题。它可以帮助我们集中管理异常逻辑,并对异常进行统一的处理和响应。异常信息的返回:在异常处理器中,根据请求的类型(如 Web 请求、API 请求等),生成适当的错误响应,包括状态码、错误消息、错误详情等,然后返回给客户端。

2023-12-27 14:40:40 752

原创 Nginx和OpenResty面试题及简单示例

负载均衡是一种将网络请求分发到多个服务器上以平衡负载的技术。Nginx可以通过设upstream模块来实现负载均衡。在配置文件中,可以定义多个后端服务器,并使用upstream指令指定这些服务器的地址和权重。Nginx会根据特定的负载均衡算法(如轮询、IP哈希等)将请求分配给后端服务器。OpenResty是一个基于Nginx的增强版,通过集成LuaJIT运行环境和一系列高性能的第三方模块,将Nginx扩展为一个灵活的Web应用服务器。

2023-12-26 10:11:48 1109 1

原创 MySQL引擎和索引相关面试题

MySQL引擎是MySQL数据库系统中的模块,负责数据的存储、检索和管理。不同的存储引擎提供了不同的功能和特性。主键索引用于唯一标识表中的每一行数据,而唯一索引保证列中的值是唯一的。主键索引可以是一个特殊的唯一索引。聚集索引是物理上对表进行排序的索引,决定了表中数据的物理存储顺序。在InnoDB中,主键索引就是聚集索引。非聚集索引则是通过指向实际数据行的指针来组织和访问数据。查询优化器是MySQL中的一部分,负责分析查询语句并选择最佳的执行计划。

2023-12-21 22:03:01 381

原创 有关redis持久化 主从 哨兵 分片 的20道面试题

答案1: Redis的持久化是将内存中的数据保存到硬盘上,以便在重启后可以恢复数据。Redis有两种持久化方式:RDB(Redis Database)和AOF(Append-Only File)。

2023-12-21 17:56:50 936 1

原创 集中化日志管理平台

日志 elk

2023-12-21 16:53:15 894

原创 jvm面试题

JVM(Java虚拟机)是Java程序的运行环境,它由类加载器、执行引擎、垃圾回收器、堆、栈等主要组成部分构成。永久代(PermGen)是旧版JVM中用来存放类信息、常量池等的区域。从JDK 8开始,永久代被元空间(Metaspace)取代。元空间使用本地内存来存储类的元数据,有效避免了永久代出现内存溢出的问题。JVM参数是用于控制JVM行为的配置选项。可以通过命令行参数如-X或-XX来指定JVM参数,也可以在启动脚本或配置文件中进行设置。

2023-12-20 16:41:16 1186

原创 数据库mysql jdbc一些常见面试问题

攻击者可以通过精心构造的恶意输入,将恶意的SQL代码注入到应用程序的数据库查询中,从而执行非授权的操作或者获取敏感信息。最小权限原则:在数据库连接配置中,为应用程序使用的数据库账户分配最小必需的权限,避免使用具有过高权限的账户。安全审计和日志记录:记录应用程序的数据库访问日志,包括查询语句、参数值等信息,以便发现潜在的SQL注入攻击并进行相应的响应和修复。(ORM)框架可以提供更高层次的抽象,自动处理查询参数的转义和过滤,从而减少SQL注入的风险。的字符,或者对输入进行限制长度。使用ORM框架:使用。

2023-12-18 22:01:45 348

原创 Tomcat&Servlet

Tomcat的虚拟主机允许在同一台服务器上托管多个域名和应用程序。可以通过配置虚拟主机来分配不同的域名和应用程序给各个虚拟主机。

2023-12-18 22:01:22 808

原创 Docker

docker

2023-12-18 22:00:50 432

原创 JVM 面试题

答案:JVM是Java平台的关键组成部分,它是一个在计算机上运行Java字节码的虚拟机。它负责将Java字节码解释或编译为本地机器代码,并提供内存管理、垃圾回收、安全性和其他运行时环境支持。答案:垃圾回收是JVM自动管理内存的过程,用于回收不再使用的对象和释放其占用的内存。它通过标记和清除等算法来找到无引用对象并进行回收。垃圾回收器负责从Java堆中识别和回收这些无用对象,并将内存重新分配给其他对象。答案:类加载器是JVM的一部分,负责将字节码(class文件)加载到内存中并定义为类。

2023-12-18 22:00:11 825

原创 mysql运维面试题

答案1:MySQL的读写分离是指将读操作和写操作分别分配给不同的MySQL实例来处理,以提高系统的并发性能和可扩展性。其优点包括减轻主库压力、提高读取性能、增加系统稳定性等。原理是通过在主库上进行写操作,并将写操作的日志同步到从库上,从库负责处理读操作。答案5:MySQL的分库分表是将一个大型数据库按照一定规则划分为多个小型数据库(分库)和数据表(分表)。分库分表的目的是解决单一数据库性能瓶颈和存储限制问题,提高系统的扩展性和吞吐量。同时,分库分表也可以根据业务需求进行数据隔离、负载均衡等操作。

2023-12-15 14:51:35 474

原创 springcloud Feign面试题

Feign是一个声明式的、模板化的HTTP客户端,用于简化基于RESTful服务的通信。它可以将远程服务的调用抽象为Java接口,使得服务间的通信更加简洁和易于维护。是的,Feign支持自定义编码器和解码器。可以通过创建实现了Encoder和Decoder接口的自定义类,并在Feign客户端接口上使用注解来指定自定义编码器和解码器。Feign如何与Spring Cloud配置中心集成,以便动态修改远程服务的URL或其他配置参数?

2023-12-15 10:04:24 289

原创 谷粒商城架构图分析

WebFlux是一个用于构建响应式、非阻塞的Web应用程序的框架。它是Spring Framework 5中引入的一个模块,基于Reactor库实现了反应式编程范式。WebFlux提供了一种异步和非阻塞的方式来处理HTTP请求,并且允许在单个线程上处理大量的并发请求。它支持函数式和注解驱动的编程风格,并且可以与Java 8的CompletableFuture和Reactive Streams等标准API进行集成。

2023-12-09 20:50:12 69

原创 Spring Boot面试题

Spring Boot的Actuator是一个内置的管理和监控工具,它提供了对应用程序运行时状态的监测、管理和操作的功能。与传统的Spring框架相比,Spring Boot提供了自动配置、起步依赖和快速构建的功能,使得开发人员可以更轻松地创建独立的、可执行的、生产级别的Spring应用程序。在开发阶段,当应用程序的源代码、类文件或资源发生改变时,DevTools会自动重新加载应用程序,以便开发人员能够快速查看和验证更改的效果,而无需手动重启应用程序。

2023-12-07 22:59:53 46

原创 消息中间件 rabbitmq 面试题

在RabbitMQ中,Exchange用于接收生产者发送的消息,并根据一定的规则将消息路由到一个或多个队列。如果需要保证消息的顺序性,可以使用单个队列或使用消息分组的方式,将相关的消息放入同一个队列或同一个分组进行处理。可以使用消息的唯一标识符来检查是否已经处理过该消息,或者在消费者端实现幂等性操作,确保多次处理同一条消息的结果是一致的。消息持久化是指将消息标记为持久化,即使服务器重启,也能恢复未被消费的消息。队列是消息的存储地点,生产者将消息发送到队列,消费者从队列中获取消息进行处理。

2023-12-04 22:41:14 45

原创 java并发面试题

在多线程编程中,异常的处理需要额外的关注,因为异常可能会跨越线程边界,导致对共享资源的操作不一致。它的工作原理是,在进行写操作时,会创建一个容器的副本(即拷贝),然后对副本进行修改,完成后再将副本替换原来的容器。它的工作原理是,在进行写操作时,会创建一个容器的副本(即拷贝),然后对副本进行修改,完成后再将副本替换原来的容器。它发生在一个线程在某个共享变量上执行了一次读取操作,然后另一个线程修改该变量的值,最后第一个线程再次执行读取操作时,发现变量的值与之前相同,从而错误地认为变量没有被修改过。

2023-12-04 22:34:51 29

原创 java 集合 面试题

要实现一个只读的集合,可以使用Collections类的unmodifiableXXX方法将现有的集合包装为只读集合。它提供了各种类型的集合,如列表(List)、集合(Set)、映射(Map)等,并且提供了一些通用的操作方法和算法,方便开发者对数据进行管理和处理。为了减少哈希冲突,可以考虑使用合适的哈希算法、调整桶的数量和增加散列值的分布性,以提高HashSet的性能。当发生哈希冲突时,遍历链表或红黑树中的元素,使用equals()方法逐个比较元素,直到找到相等的元素或遍历完整个链表/红黑树。

2023-12-02 18:33:12 67

原创 java基础面试题

这两个方法之间存在一定的关系:根据Java规范,如果两个对象通过equals()方法比较相等,那么它们的hashCode()方法应返回相同的值。通常,如果两个对象通过equals()方法比较相等,它们的hashCode()方法应返回相同的值,以保持一致性。在旧版本的Java中,如果向接口添加新方法,会导致所有已经实现该接口的类出现编译错误,因为它们必须提供新方法的实现。默认情况下,equals()方法比较的是对象的引用,但可以根据需要在自定义类中重写该方法,以根据特定的业务逻辑来判断对象是否相等。

2023-12-02 18:04:24 51

原创 SQL语句优化

批量操作:对于大量的增删改操作,使用批量操作可以减少与数据库的交互次数,提高效率。数据库约束和触发器:在设计数据库时,使用适当的约束(如主键、唯一约束、外键等)和触发器可以确保数据的完整性和一致性,同时也会对增删改操作产生一定的开销。因此,在进行SQL优化之前,建议先了解所使用的数据库系统的特点和最佳实践,并进行性能测试和基准测试,以评估优化效果。总之,增删改操作的优化主要包括批量操作、事务的使用、索引的管理、合理的数据库设计和维护等方面。索引的影响:对于涉及到增删改的表,索引的维护也会对性能产生影响。

2023-11-30 01:19:28 30

原创 Spring框架知识梳理

Spring是一个开源的Java应用开发框架,提供了广泛的功能和特性,用于简化企业级应用程序的开发。以下是关于Spring的一些基本信息:Spring框架的设计目标是使Java开发变得更加轻松、高效,并提供了许多功能强大的工具和库来支持各种应用程序开发需求。它在企业级Java开发中被广泛使用,并持续演进和改进以适应不断变化的技术需求。Spring框架通过采用依赖注入(Dependency Injection)和面向接口编程的方式,有助于解决软件开发中的耦合性问题。

2023-11-30 01:07:56 860

原创 linux

用户可以根据自己的需求选择适合的Linux发行版,如Ubuntu、Debian、CentOS等,这些发行版将Linux内核与其他工具和应用程序打包在一起,形成完整的操作系统。具体的命令选项和输出内容可能因操作系统版本和配置而有所不同,建议查阅命令的手册或使用相应命令的帮助选项来获取更详细的信息。使用性能分析工具:如果以上步骤无法解决问题,可以使用Java性能分析工具(如VisualVM、YourKit Java Profiler等)来分析应用程序的内存使用情况和热点代码,找出潜在的性能瓶颈和内存泄漏问题。

2023-11-27 15:36:38 25

原创 mysql 运维

总体而言,使用MyCAT可以实现MySQL数据库的分库分表和读写分离,提高数据库的扩展性和性能。MySQL读写分离是一种数据库架构设计模式,通过将读操作和写操作分发到不同的数据库实例上,以提高数据库的性能和可扩展性。MySQL主从复制是一种常见的数据库复制技术,用于将一个MySQL数据库服务器(主服务器)上的数据和操作同步到另一个MySQL服务器(从服务器)。需要注意的是,MySQL读写分离存在一定的数据同步延迟,因为从数据库需要复制主数据库的变更,可能会导致从数据库上的数据略微滞后于主数据库。

2023-11-27 12:13:46 40

原创 mysql 进阶

红黑树(Red-Black Tree):是一种自平衡的二叉搜索树,具有如下特性:节点被标记为红色或黑色,根节点和叶子节点(NIL节点)都是黑色,任何红色节点的两个子节点都是黑色,从根节点到叶子节点的所有路径包含相同数量的黑色节点。与B树不同,B+树的非叶子节点只存储键值信息,而不保存具体的数据记录。因此,在具体的数据库系统中,建议参考相应的文档和手册,以了解元数据锁的使用方式和行为特点。根据最左前缀法则,对于一个复合索引(由多个列组成的索引),在查询中只能使用索引的最左边连续的列来实现索引的匹配和查找。

2023-11-27 11:51:12 21

原创 mysql

创建数据库:用于创建一个新的数据库。createnotexists ]数据库名字符集排序规则删除数据库:用于删除已存在的数据库。创建表:用于创建一个新的表格。修改表:用于修改已存在的表格结构,如添加列、修改列数据类型等。删除表:用于删除已存在的表格。创建索引:用于加速表格查询操作。删除索引:用于删除已存在的索引。更改表名:用于修改已存在的表格名称。截断表:用于清空表格中的所有数据。查询所有数据库查询当前数据库selectdatabase();切换数据库use数据库名;表操作。

2023-11-26 20:10:02 24

原创 redis应用(二)

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

2023-11-26 17:33:26 19

原创 MAVEN (二)

版本管理工具:除了使用 Maven 自身的版本管理机制外,还可以使用其他工具来帮助管理项目的版本。构建与部署:通过 Maven 的命令行或集成开发环境(IDE)中的插件,可以对整个项目或单独的模块进行构建、测试和部署操作。Maven 提供了丰富的生命周期和插件,可以简化构建过程的管理。通过使用 Maven 进行分模块开发与设计,可以提高项目的可维护性和复用性,减少重复代码的编写,并使团队成员能够更好地协作开发不同的功能模块。在 Maven 中,版本管理是一种重要的实践,用于管理项目的依赖项和发布版本。

2023-11-25 20:23:35 27

空空如也

空空如也

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

TA关注的人

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