
java
文章平均质量分 78
言之。
点一盏洁白的灯, 照一照漆黑的眠。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
借助ssh实现web服务的安全验证
摘要 通过SSH隧道实现安全的HTTP访问:在公有云服务器上,利用SSH隧道将HTTP服务(80端口)转发到本地8080端口,既避免了直接暴露80端口,又无需HTTPS和客户端证书。只需执行ssh -L 8080:localhost:80 user@server建立隧道,即可通过localhost:8080安全访问服务。该方法通过SSH协议(22端口)传输流量,不影响云安全组对80端口的限制,适合临时授权访问场景。原创 2025-07-09 15:28:39 · 4548 阅读 · 0 评论 -
【面试题】 Java 三年工作经验(2025)
1. 为什么选择 spring boot 框架,它与 Spring 有什么区别?2. spring mvc 的执行流程是什么?3. 如何实现 spring 的 IOC 过程,会用到什么技术?4. spring boot 的自动化配置的原理是什么?5. 如何理解 spring boot 中的 star?6. spring boot 为什么要用嵌入式的 web 容器?原创 2025-01-23 00:30:17 · 11281 阅读 · 0 评论 -
【面试】Java 记录一次面试过程 三年工作经验
方法中,首先获取当前线程,然后获取线程的。实例作为键,要设置的值作为值存入。方法类似,先获取当前线程的。实例作为键获取对应的值。不存在则创建,接着将。原创 2025-01-23 00:07:10 · 10281 阅读 · 0 评论 -
【面试题】Java 多线程编程基础知识
通过对这些多线程编程基础知识的理解和掌握,可以更好地编写高效、稳定的多线程程序。原创 2025-01-23 00:00:07 · 11986 阅读 · 0 评论 -
【面试题】java基础概念
通过以上原理,JIT编译器能够在Java程序运行时,动态地对热点代码进行优化编译,将字节码转换为高效的本地机器码,从而显著提高Java程序的执行性能,使其能够在性能上与一些传统的编译型语言相媲美。原创 2025-01-22 23:57:55 · 11950 阅读 · 0 评论 -
【面试题Java】单例模式
为了防止反射和反序列化破坏单例,可以在单例类的私有构造函数中添加逻辑,判断是否已经创建过实例,如果是则抛出异常。对于对象克隆,可以重写。方法,返回单例实例而不是创建新的实例。对于枚举类型的单例,由于其本身的特性,天然防止了反射、反序列化和对象克隆的破坏。原创 2025-01-22 23:54:24 · 10424 阅读 · 0 评论 -
【Java】内存相关面试题
是自动化内存管理的一部分,用于回收程序中不再使用的对象并释放其占用的内存。Java中的垃圾回收器主要负责回收堆内存中不再被引用的对象,避免内存泄漏,确保应用程序的内存管理高效。Java的垃圾回收机制主要依赖于 JVM 来自动进行对象的内存管理。它会定期扫描堆内存,标记不可达的对象,并回收其占用的内存。Java的垃圾回收采用的是。原创 2025-01-22 13:50:59 · 10071 阅读 · 0 评论 -
【Java】面试中遇到的两个排序
快速排序是一种高效的排序算法,特别适用于大数据集。尽管最坏情况下时间复杂度是O(n^2),但通过选择合适的基准和优化策略,快速排序在实际应用中表现通常非常好。归并排序是一种稳定且高效的排序算法,特别适合于大数据量的排序。它的时间复杂度为O(n log n),在最坏情况下也能保持较好的性能。不过,它的空间复杂度较高,需要额外的空间来存储临时数组。在实际应用中,归并排序适用于处理大规模数据集的排序。原创 2025-01-22 10:17:15 · 10561 阅读 · 0 评论 -
【 Java】 Full GC 一定会 stop the world 吗 ?
由于 Java 堆可能包含大量的对象,并且堆内存的管理涉及到复杂的操作,如对象标记、清理等,为了保证堆内存的一致性和垃圾回收的正确性,在进行 Full GC 时,通常会暂停所有的应用程序线程,这就是所谓的 Stop-The-World。尽管这些并发垃圾回收器在很大程度上减少了 STW 的时间,但在某些关键阶段仍然需要暂停应用程序线程以确保垃圾回收的准确性和堆内存的一致性。如果你希望减少 STW 的影响,可以根据应用程序的特点选择合适的垃圾回收器,并对垃圾回收器的参数进行调优,以达到更好的性能和更低的延迟。原创 2025-01-21 19:26:09 · 11981 阅读 · 0 评论 -
【面试题】技术场景 7、定位系统瓶颈
基本信息:阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。功能定位类从哪个站包加载及相关异常原因,确定某些类的错误。排查代码未执行原因(如分支、git 问题)。实现线上 debug。处理线上用户数据问题。监控系统运行及 dbm 实时状态。生成火焰图。原创 2025-01-10 23:01:53 · 10091 阅读 · 0 评论 -
【面试题】技术场景 6、Java 生产环境 bug 排查
【面试题】技术场景 6、Java 生产环境 bug 排查原创 2025-01-10 22:55:29 · 10409 阅读 · 0 评论 -
【面试题】技术场景 5、日志采集ELK
在实际项目中,ELK 日志采集系统可能会遇到以下问题及对应的解决方法:原创 2025-01-10 22:46:41 · 10533 阅读 · 0 评论 -
【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法
问题为在负责项目时遇到的棘手问题及解决方法,主要考察开发经验与技术水平,回答不佳会影响面试印象。提供四个回答方向,准备其中一个方向即可。此面试题高频出现,需提前准备,选择一个方向深入准备能体现技术水平。主要内容:电商项目用户登录功能,从初始逻辑集中导致维护困难,到引入工厂与策略模式解决问题。核心概念:工厂设计模式用于创建对象,策略模式将算法逻辑封装。关键知识点:理解两种设计模式作用,明白如何结合使用提高代码扩展性与维护性。总结设计模式可优化代码结构,解决业务变更时代码频繁修改问题。原创 2025-01-10 22:22:11 · 11158 阅读 · 0 评论 -
【面试题】技术场景 3、上传数据安全性
对称加密原理:文件加密和解密使用相同的密钥,利用市面上对称加密算法提供的密钥对原始数据进行加密,生成密文传输到后台,后台再用相同密钥解密获取原始数据,加密方和解密方需事先知晓该密钥。优点:加密速度快、效率高。缺点:若加密算法和密钥被他人知晓,可能被破解,不适合保存敏感信息。非对称加密原理:有公开密钥和私有密钥两把密钥,通常公开密钥负责加密,私有密钥负责解密,反之亦可。优点:相较于对称加密,安全性更高。缺点:加密和解密速度较慢。原创 2025-01-10 22:09:45 · 10133 阅读 · 0 评论 -
【面试题】技术场景 2、权限认证 RBAC
权限认证在后台管理系统中难度较大且至关重要,常见的实现方式是 RBAC 权限模型。RBAC 即基于角色的访问控制,主要包含用户、角色和权限三个基础部分。在实际开发中,实现权限认证常借助权限框架。目前流行的有阿帕奇的 Shiro 和 Spring Security,其中 Spring Security 应用最为广泛。原创 2025-01-10 13:59:13 · 10567 阅读 · 0 评论 -
【面试题】技术场景 1、单点登录
首先解释单点登录概念(SSO),即用户登录一次可访问多个信任系统。接着介绍自己项目中是否涉及单点登录,若参与微服务开发大概率涉及;若未涉及,需阐述实现思路,如提及常见实现方案及原理,重点说明 JWT 方式中网关校验 token、登录服务生成 token 及浏览器存储 token 等关键步骤。原创 2025-01-10 13:50:31 · 10503 阅读 · 0 评论 -
【设计模式】工厂方法
简单工厂:并非严格设计模式,是编程习惯。所有产品共用一个工厂,新增产品需改代码,违反开闭原则,但编程思路可借鉴。工厂方法设计模式:为每个产品提供专门工厂生产,遵循开闭原则,在项目中应用广泛。抽象工厂设计模式:适用于多维度产品配合生产,但在企业开发中使用较少。原创 2025-01-10 13:41:28 · 11034 阅读 · 0 评论 -
【微服务】8、分布式事务 ( XA 和 AT )
四件事概述:注册分支事务、记录数据快照、执行业务SQL并提交事务、报告事务状态。与XA模式相比,AT模式在修改数据前生成快照且立即提交事务,提升性能。原创 2025-01-08 13:08:20 · 10825 阅读 · 0 评论 -
【微服务】7、分布式事务
在分布系统中,一个业务由多个服务合作完成,每个服务有自己的事务,多个事务需同时成功或失败,这样的事务称为分布式事务。其中每个服务的事务叫分支事务,整个业务的统一事务叫全局事务。原创 2025-01-07 13:46:46 · 10869 阅读 · 0 评论 -
【微服务】6、限流 熔断
fallback包中创建ItemClientFallbackFactory类,实现FallbackFactory接口,泛型为ItemClient。实现create方法创建ItemClient的Fallback对象,编写查商品接口失败处理逻辑,如查商品失败返回空集合兜底,减库存业务先抛出异常后续处理。完成改造后重启购物车服务,添加流控规则(如限制线程数为5或6),对查商品的远程Feign调用做线程隔离。原创 2025-01-07 13:10:40 · 10074 阅读 · 0 评论 -
【微服务】5、服务保护 Sentinel
控制台可监控微服务接口运行和限流情况,还可通过页面配置限流、熔断等规则并实时推送到微服务。即单机调用链路,是单个微服务内部请求经过被Sentinel监控的资源(默认仅为Spring MVC的Controller接口,即end point)形成的链路。限流、熔断等功能针对簇点链路资源配置。5.- 由于采用restful接口,购物车相关接口路径相同(如增删改查都是/carts),默认按请求路径作为触点资源名称会导致无法区分。需在配置中开启。原创 2025-01-06 13:57:14 · 10196 阅读 · 0 评论 -
【微服务】4、服务保护
微服务中一个小故障可能引发雪崩,如某服务故障处理不当,可能导致整个链路乃至微服务群不可用。原创 2025-01-05 19:27:31 · 10840 阅读 · 0 评论 -
【微服务】3、配置管理
普通Spring Boot项目启动先读取application.yml完成spring application context初始化。但Spring Cloud项目引入配置管理后,启动时先尝试拉取Nacos配置完成spring cloud上下文环境初始化,再进行Spring Boot配置文件加载和上下文初始化,这导致项目启动时不知Nacos地址无法拉取配置的问题。原创 2025-01-05 18:40:52 · 10432 阅读 · 0 评论 -
【微服务】1、引入;注册中心;OpenFeign
【代码】【微服务】1。原创 2025-01-04 12:14:11 · 11034 阅读 · 0 评论 -
理解Java领域中的 DTO、PO 和 VO
PO对象的属性与数据库表的字段通常是一一对应的关系,这种紧密的对应关系使得数据的持久化操作变得直观和方便。同时,PO对象通常会借助ORM框架提供的功能,具备基本的持久化操作方法,如保存(将新的对象数据插入数据库)、更新(修改数据库中对应记录的数据)、删除(从数据库中移除对应记录)等。例如,在博客系统中,展示文章列表时,可能只需要文章的标题、简介和发布时间,这时定义的DTO就只包含这些字段,而不需要完整的文章内容。比如,在博客系统的前端与后端交互时,前端发起创建文章的请求,后端接收数据进行处理。原创 2025-01-04 11:45:03 · 11027 阅读 · 0 评论 -
【Java】面试题 并发安全 (2)
概念:ReentrantLock是可重入锁,同一线程可多次获取该锁。特点可中断:与synchronized不同,ReentrantLock可在获取锁过程中被中断。可设置超时时间:获取锁时可设置超时时间,超时未获取到锁可放弃,避免无限等待。支持公平锁和非公平锁:默认是非公平锁,也可通过构造函数设置为公平锁。公平锁按等待顺序获取锁,非公平锁允许插队,提高性能但可能导致某些线程长时间等待。支持多个条件变量。原创 2024-12-28 20:01:55 · 10828 阅读 · 0 评论 -
【Java】面试题 并发安全 (1)
monitor实现重量级锁的原因monitor是JVM提供的C++实现的锁,线程获取锁时需关联monitor,涉及用户态和内核态切换,资源权限不同,切换成本高,且存在进程上下文切换,性能低,因此被称为重量级锁。JDK1.6引入偏向锁和轻量级锁的原因当一个线程重复获取锁且无竞争时,若一直使用重量级锁monitor,性能低,所以引入偏向锁。例如,一个线程多次进入同一个带锁方法时,偏向锁可提升性能。当多个线程交替获取锁且无竞争时,使用重量级锁monitor性能不高,因此引入轻量级锁。原创 2024-12-28 19:54:57 · 10673 阅读 · 0 评论 -
【Java】线程相关面试题 (基础)
为notify是只随机唤醒一个等待(wait)方法的线程,而notifyAll是唤醒所有等待方法的线程。方法唤醒线程1,线程1被唤醒后重新竞争锁,获取锁后继续执行后续代码。方法唤醒它,或者等待一定的时间(如果指定了超时时间)。方法用于使当前线程等待,直到其他线程调用该对象的。方法进入等待状态,同时释放锁。以下是一个简单的示例,展示了。在上述示例中,线程1获取。原创 2024-12-28 17:02:13 · 10667 阅读 · 0 评论 -
【Java】Spring Bean生命周期讲解
Spring bean生命周期具体步骤面试题回答要点原创 2024-12-28 11:01:29 · 10525 阅读 · 0 评论 -
【Java】Spring事务失效场景及解决方案总结
在面试中,若被问到Spring中事务失效的场景,能说出两三条并详细描述业务情况、产生原因及解决过程即可。如阐述异常捕获处理时,说明业务中可能存在的异常处理逻辑,以及如何因未正确抛出异常导致事务失效,最后强调手动抛出。原创 2024-12-28 10:48:40 · 10671 阅读 · 0 评论 -
【Java】Spring框架中单例bean线程安全问题解析
无状态类无线程安全问题,Spring默认注入无状态对象,所以单例bean在一定程度上又是线程安全的。:user service虽是成员变量,但它是无状态类(成员变量不可修改),无线程安全问题。:单例bean中定义可修改成员变量时需考虑线程安全,默认注入无状态对象时一般无问题。:count是成员变量,多线程下多个请求可同时修改,有线程安全问题。:方法中的形参(如id)是局部变量,一般无线程安全问题。:成员变量不可修改的类,如当前的service或dao。:尽量不定义可修改成员变量。原创 2024-12-28 10:18:00 · 10256 阅读 · 0 评论 -
建造者模式(Builder Pattern)工作原理
首先,定义产品类,描述产品的组成和功能。// 省略构造函数、getter 和 setter 方法创建抽象建造者类,声明构建产品各个部件的抽象方法。实现抽象建造者类,具体实现构建产品各个部件的方法,并负责组装产品。@Override@Override@Override创建指挥者类,用于控制产品的构建过程。原创 2024-07-24 23:50:22 · 11216 阅读 · 0 评论 -
【设计模式】建造者模式
建造者模式是一种创建对象的设计模式,它将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在建造者模式中,有一个导演(Director)类和一个建造者(Builder)抽象类及其具体的建造者子类。导演类负责控制构建产品的流程,而具体的建造者子类负责实现产品的具体构建过程。原创 2024-07-24 23:39:15 · 12209 阅读 · 0 评论