自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Elasticsearch (详细教程)

Elasticsearch是基于Apache Lucene的搜索服务器。它由Shay Banon开发并于2010年出版。现在由Elasticsearch BV维护。它的最新版本是7.0.0。Elasticsearch是一个实时的分布式开放源代码全文本搜索和分析引擎。可从RESTful Web服务界面访问它,并使用无模式的JSON(JavaScript对象表示法)文档存储数据。它基于Java编程语言构建,因此Elasticsearch可以在不同平台上运行。它使用户能够以很高的速度浏览大量的数据。

2025-04-12 19:55:25 994

原创 个人面试题汇总 都是亲生经历

查询快速,用于如果两个对象相同,HashCode一样,HashCode一样,不一定是同一个对象。16.String/StringBuffer/StringBuilder的区别,以及他们的实现。4.ArrayList和LinkedList的内部实现大致是怎样的,他们之前的区别和优缺点。ArrayList基于数组实现,随机查询快,但是插入和删除慢,一段连续的空间。LinkedList基于链表实现,随机查询吗,但是插入和删除块,14.NIO模型,select/epoll的区别,多路复用的原理。

2025-04-07 19:46:12 334

原创 算法、数据结构、JVM高频题目、Java并发高频题目

JAVA的类加载器: AppClassloader -> ExtClassloader -> BootStrap每种类加载器都有他自己的加载目录。JAVA中的类加载器: AppClassLoader , ExtClassLoader -> URLClassLoader -每个类加载器对他加载过的类,都是有一个缓存的。双亲委派:向上委托查找,向下委托加载。作用:保护JAVA的层的类不会被应用程序覆盖。类加载过程: 加载 -》 连接 -》 初始化。

2025-04-07 19:40:31 734

原创 微服务面试题 二 (注册中心)

本章主要学习Nacos中的一些特性和原理,以及与Eureka的功能对比。

2025-04-07 11:32:29 716

原创 微服务面试题

TCC模式的每个阶段是做什么的?Try:资源检查和预留Confirm:业务执行和提交Cancel:预留资源的释放TCC的优点是什么?一阶段完成直接提交事务,释放数据库资源,性能好相比AT模型,无需生成快照,无需使用全局锁,性能最强不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库TCC的缺点是什么?有代码侵入,需要人为编写try、Confirm和Cancel接口,太麻烦软状态,事务是最终一致需要考虑Confirm和Cancel的失败情况,做好幂等处理、事务悬挂和空回滚处理。

2025-04-06 18:52:08 696

原创 MySql安装配置教程(超级详细)

2. 选择安装的产品和功能依次点开“MySQL Servers”、“MySQL Servers”、“MySQL Servers 5.7”、“MySQL Servers 5.7.31 -64”,然后点击绿色箭头将选中的版本移植到右边选中框中。9. 先选中“MySQL Server5.7.31”,若电脑中没有这个环境,会提示安装“Microsoft Visual C++ 2013”环境,点击“Execute”5. 点击“新建”,将MySQL的安装路径添加上去,之后点击“确定”

2025-04-06 11:23:30 1406

原创 mysql docker On+Java redis SpringBoot Spring书籍

给大家介绍基本书 都是萌新程序员 或者进阶程序员看的。

2025-04-04 19:32:11 460

原创 支付框架源码解析

ElegentPay是封装了支付宝和微信支付的支付框架,用户使用该框架,可以用最小的学习成本,在几分钟内快速集成并在项目中使用。为支付宝和微信提供了统一的调用入口。支持native、小程序、H5、APP等多种支付方式,并提供统一入口。提供了统一的dto类作为前端的调用参数,用户使用简便。封装了回调入口和验签逻辑,简化了用户编写支付回调中繁琐的验签逻辑。提供了扩展机制,用户可以自定义其它的支付方式。对支付回调和退款回调提供了幂等性校验。提供了回调补偿功能。

2025-04-04 18:56:31 809

原创 面试介绍项目的最佳方案

【自我介绍公式:基本信息介绍 + 个人优势 + 技术栈 + 最近做的项目】【示例】面试官,您好!我叫XXX,毕业于XXXX,专业是软件工程,本科学历。我有3年的Java开发经验,熟练使用SpringBoot、Mybatis、MYSQL、Redis、Git、SpringCloud等技术,有良好的编码习惯有团队开发经验。我曾经参与过共享洗衣机、、家政无忧、生鲜购等多个项目的开发。最近做的一个项目是共享洗衣机小程序,主要采用了Spring Boot、MyBatis、EMQ等技术。

2025-04-04 18:47:49 485

原创 看完吊打面试官的java八股文面试题

售货机终端在收到这条报文消息后,会在本地记录出货记录(h2嵌入式数据库),通过串口技术(RXTX)调用硬件发货,此时,会有成功和失败两种结果,不管是成功或失败,售货机终端都会组装报文发送到微服务,此时,微服务收到这条报文消息,根据结果进行后续处理:如果成功,则修改订单状态为发货成功,标记出货流水记录为成功;C指的是一致性,A指的是可用性,P指的是分区容错。然后,我们再说一下Redis的分布式锁,,这种锁目前用的比较多,主要是因为Redis具有很强的性能,所以在高并发场景下,用的比较多。

2025-04-03 17:14:41 698

原创 Redis和MySQL保持数据一致性三问三答

无论是先更新数据库再更新缓存,还是先更新缓存后更新数据库,都有可能造成数据不一致。如果先写库,在更新缓存前,写库的线程宕机了,没有更新缓存,也会出现数据不一致的情况。当mysql数据库的数据发生变化时,我们是将redis对应的数据删除,而不是更新。当用户查询数据时,发现缓存中没有数据,再从mysql中查询最新的数据,并加载到缓存中。(两个并发请求,一个请求没有结束,另一个又将修改前的数据再次加载到缓存)所以,我们需要在写mysql数据后,延迟一定时间再做第2次删除。接着,我来解释一下延迟双删。

2025-04-03 17:14:11 299

原创 企业真实JAVA面试题(共七个部分)(亲测大部分都有问到)

SQL 注入是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。下面是避免 SQL 注入的一些方法:1. 避免使用动态SQL避免将用户的输入数据直接放入 SQL 语句中,最好使用准备好的语句和参数化查询,这样更安全。

2025-04-03 17:13:27 555

原创 SpringBoot 实现邮件发送

做项目时有个需求:用公司邮箱给客户发送邮件通知,然后上网冲浪找到一些不错的文章,通过优化并实现功能后,写这篇文章记录一下,也提供给大家做参考。

2025-04-03 15:46:46 747

原创 深度了解 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

Java 的版本从 JDK 8 到 JDK 21,不仅仅是语法糖的增加或标准库的扩展,它反映了 Java 社区对性能提升、并发处理以及开发者体验的深刻理解。每个版本都有其显著的特性,从 JDK 8 的 Lambda 表达式和 Stream API,到 JDK 21 的虚拟线程和模式匹配,Java 正在变得更现代、更高效,开发者也能通过这些新特性写出更加简洁、优雅的代码。

2025-04-03 15:21:32 512

原创 Springboot对接支付宝沙箱支付

进入最开始的沙箱管理界面,点击自定义密钥,点击设置(查看),我们选择的是RSA2密钥选择“公钥”这一选项将上一步骤生成的应用公钥填进来,会得到支付宝公钥这另一个密钥,记住并保存这个支付宝公钥。

2025-01-20 17:19:59 1007 1

原创 宝塔部署JAVA项目(保姆级别)

Springboot项目只需要JDK环境即可部署成功Tomcat内置项目是需要安装Tomcat才能部署成功Tomcat独立项目是需要安装Tomcat才能部署成功。一个项目一个Tomcat独立运行互相不会影响其他的tomcat项目。

2025-01-20 14:59:35 2538 1

原创 docker项目部署

②build是用来构建镜像的,context表示资源路径(点表示当前路径),dockerfile用于寻找我们的Dockerfile文件(默认就是Dockerfile,可以不写,除非将Dockerfile改名了)我们可以看到,两者实际上是一一对应的,这是语法风格不同罢了,其中version:"3.8"是DockerCompose的语法版本。一共需要两个文件(夹),一个是我们的前端项目文件夹,一个是我们的nginx配置文件,将他们都放在linux同一个文件夹下,这个命令中,最后一部分表示在目录中查找名为。

2025-01-20 14:21:30 942

原创 JVM面试题

CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。

2025-01-17 18:11:52 849

原创 SpringMVC面试题

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。

2025-01-17 18:10:15 543

原创 Dubbo面试题

RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。比较关键的一些方面包括:通讯协议、序列化、资源(接口)描述、服务框架、性能、语言支持等。简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

2025-01-17 18:06:30 706

原创 MyBaits面试题

接口绑定,就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。接口绑定有两种实现方式通过注解绑定,就是在接口的方法上面加上 @Select、@Update等注解,里面包含Sql语句来绑定;通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。

2025-01-17 18:04:59 803

原创 Tomcat面试题

至此,我们已经对Tomcat的整体架构有了大致的了解,从图A、B、C、D可以看出来每一个组件的基本要素和作用。我们在脑海里应该有一个大概的轮廓了!如果你面试的时候,让你简单的聊一下Tomcat,上面的内容你能脱口而出吗?当你能够脱口而出的时候,面试官一定会对你刮目相看的!

2025-01-17 17:57:38 991

原创 并发编程面试题

多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。多线程的好处:可以提高 CPU 的利用率。在多线程程序中,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;多线程需要协调和管理,所以需要 CPU 时间跟踪线程;线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题。进程。

2025-01-17 17:56:08 593

原创 Spring面试题

Spring是一个轻量级Java开发框架,最早有创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是。

2025-01-17 17:20:12 616

原创 SpringCloud面试题

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2025-01-17 17:15:13 669

原创 SpringBoot面试题

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:(1)面向对象的配置。

2025-01-17 17:10:36 509

原创 Linux面试题

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。系统内存管理应用程序管理硬件设备管理文件系统管理。

2024-10-09 18:10:13 1096 1

原创 Java集合容器面试题

集合框架:用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。实现:集合接口的具体实现,是重用性很高的数据结构。算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。

2024-10-09 17:37:43 1057

原创 架构设计&分布式&数据结构与算法面试题

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是代码可用性的延伸设计模式分类:创建型模式,结构型模式,行为型模式分布式(distributed)是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段,将一个业务拆分成不同的子业务,分布在不同的机器上执行。服务之间通过远程调用协同工作,对外提供服务。

2024-10-09 17:16:02 1533 1

原创 优化后老程序猿 最新面试总结(附加答案,最细,最全面)

在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以,Java程序运行时相对来说还是高效的(不过,和C、C++,Rust,Go等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。

2024-09-30 18:22:25 3845

原创 服务部署(保姆级)

服务器部署(保姆级教程)小生不才,有啥子 错误 或者 建议 可以私信或者评论区留言,我加以完善和改正 哟有疑问并且我没来得及回复的可以+我wx:CrazyHao369 备注来意!!!无偿解答祝大家远离BUG,永无加班!!!以后会经常发布一些干货文章若有需要资源文档:资源文档。

2024-09-29 18:11:53 3655

原创 Java接入微信支付超详细教程-从入门到精通

*** 自定义微信支付工具类*//*** 发送 http 请求* @param requestUrl 请求路径* @param requestMethod 请求方式(GET/POST/PUT/DELETE/...)* @param outputStr 请求参数体* @return 结果信息*/try {// 设置请求方式(GET/POST)// 当outputStr不为null时向输出流写数据if (null!// 注意编码格式。

2024-09-29 17:27:01 7428 2

原创 vue脚手架创建项目-前后分离

因为项目想要运行,就必须依赖服务器,传统的nodejs可以用express充当服务器;查看是否配置成功npm config get registry安装vue-cli安装最新版本: npm install -g @vue/cli安装指定版本: npm install -g @vue/cli@4.4.1测试是否安装成功:vue --version或者vue -V创建vue项目在你想创建项目的目录下cmd命令框打开,输入vue ui回车,然后再图形化界面操作即可vscode开发vue项目必备的插件Vetur。

2024-09-29 16:52:36 466

原创 Java异常面试题

Java异常面试题程序猿何某面试题06-27 15:53Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。Java异常架构1. ThrowableThrowable 是 Java 语言中所有错

2024-09-29 16:50:44 916

原创 认识多线程

同步锁特点1:锁默认打开,有一个线程进去了,锁自动关闭特点2:里面的代码全部执行完毕,线程出去,锁自动打开为什么使用同步锁?只要你想让多个事情同时运行就需要用到多线程,例如:软件的耗时操作,所有的聊天软件,所有的服务器并发和并行并发:在同一时刻,有多个指令在单个cpu上替换执行并行:在同一时间,有多个指令在多个cpu上同时执行实现多线程方式继承Thread类的方式两个线程抢一个CPU替换执行说明说并发没有返回值!*因为lock是static的,所以它属于类,而不是属于某个对象,

2024-09-29 16:36:48 145

原创 大厂面试题

JVM:1.jre、jdk、jvm的关系:jdk是最小的开发环境,由jre++java工具组成。jre是java运行的最小环境,由jvm+核心类库组成。jvm是虚拟机,是java字节码运行的容器,如果只有jvm是无法运行java的,因为缺少了核心类库。2.java的运行时数据区有哪些:java运行时数据区分为5块:线程共享的模块:方法区和堆空间非线程共享的模块:程序计数器,虚拟机栈,本地方法栈。方法区:存储已经被虚拟机加载的类信息,静态变量,常量,即时编译器编译后的代码等数据。主要可以分为两类:类信息(cl

2024-08-06 16:33:49 1387

原创 Netty面试总结

Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS,使用堆外直接内存进行 Socket 读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行 Socket 读写,JVM 会将堆内存 Buffer 拷贝一份到直接内存中,然后才写入 Socket 中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。

2024-07-31 22:01:44 1078

原创 redis面试总结

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。

2024-07-30 11:13:02 1371

原创 MQ面试题

吞吐量提升:无需等待订阅者处理完成,响应更快速 故障隔离:服务没有直接调用,不存在级联失败问题 调用间没有阻塞,不会造成无效的资源占用 耦合度极低,每个服务都可以灵活插拔,可替换 流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件Broker:代表着一个中间件应用,负责接收消息生产者的消息,然后将消息发送至消息接受者或者其他的broker。

2024-07-30 09:36:22 320 1

原创 Mysql面试总结

记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大。它的设计的目标就是处理大数据容量的数据库系统。),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现"顾客姓名"和"顾客。),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。

2024-07-30 07:50:47 266 1

空空如也

空空如也

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

TA关注的人

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