自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2025 阿里巴巴旗下部门饿了吗 面经 八股盛宴

​1. 如何自学Java,学习路径自学Java可以按照以下路径进行:基础语法:首先学习Java的基本语法,包括变量、数据类型、控制结构、面向对象编程(类、对象、继承、多态等)。核心类库:掌握Java核心类库,如字符串处理、集合框架(List、Set、Map等)、输入输出流、多线程编程等。开发工具:学习使用开发工具,如Eclipse、IntelliJ IDEA等,以及版本控制工具Git。数据库:了解数据库基础知识,学习SQL语句,掌握一种关系型数据库如MySQL。Web开发:学习Servlet

2025-06-05 12:38:25 469

原创 蓝桥杯国赛训练 day1

摘要:本文包含三个算法题的Java实现方案:1) "k倍区间"通过前缀和取模与组合数计算解决;2) "舞狮"采用贪心策略排序后分组处理;3) "交换瓶子"使用直接交换策略统计最小交换次数。各解法均注重效率,其中组合数计算使用优化公式,交换瓶子问题采用循环修正方法。代码简洁高效,体现了良好的算法设计和实现能力。(149字)

2025-06-03 18:06:13 670 2

原创 boss登录微信的全过程,背后发生怎样的请求、数据交互

Boss直聘微信登录流程解析:基于OAuth2.0协议实现的安全授权方案。核心流程包括:1)用户点击触发微信授权,2)微信展示授权页面并返回授权码code,3)服务器用code换取access_token,4)可选获取用户基础信息。技术要点:HTTPS加密传输、state参数防CSRF、code单次有效、access_token有效期控制。安全机制涵盖数据加密、权限管控和防重放攻击,确保用户隐私保护。整个流程需严格遵循微信开放平台规范,包括域名备案、参数校验等。

2025-06-03 14:58:05 940 1

原创 ThreadLocal ,底层原理,强引用,弱引用,内存泄漏

摘要:ThreadLocal是Java中实现线程局部变量的工具类,通过ThreadLocalMap存储每个线程的独立变量副本。其底层利用弱引用(WeakReference)作为Entry键,但值仍为强引用,可能导致内存泄漏(如线程池中线程未关闭时)。解决方案包括:1)使用后调用remove()方法清理;2)将ThreadLocal声明为static延长生命周期。示例代码展示了数据库连接的线程隔离及正确的资源释放方式,强调在finally块中调用remove()避免内存泄漏。

2025-06-02 19:07:03 522

原创 中间件redis 功能篇 过期淘汰策略和内存淘汰策略 力扣例题实现LRU

文章摘要: Redis采用过期删除策略和内存淘汰策略管理数据。过期策略包括定时删除、惰性删除和定期删除,Redis结合后两种方式。内存淘汰策略在内存达到上限时触发,分为不淘汰和淘汰策略,后者又分为在过期数据中淘汰(random,ttl,lru,lfu)或在所有数据中淘汰(random,lru,lfu)。Redis改进了传统LRU算法,使用近似LRU和LFU算法解决内存污染问题。文章还提供了Java实现LRU缓存的代码示例,并对比了Redis中两种策略的区别。

2025-05-28 21:50:32 1030

原创 力扣 秋招 打卡第一天 2025年5月28日 Java

本文摘要包含三个编程题解:1)使用双指针法求两个有序数组的中位数,通过指针遍历处理奇偶长度情况;2)两种最长公共前缀解法,初始暴力法通过子串比较,优化后逐个字符比较;3)合并有序数组的暴力解法,直接将B数组合并后排序。每个解法都展示了从基础到优化的过程,涉及双指针、字符串处理和数组合并排序等算法技巧。

2025-05-28 14:54:27 402

原创 2025年5月6日 飞猪Java一面

本文系统探讨了数据库与Redis缓存一致性问题,提出延迟双删和异步更新两种核心方案,并分析了各场景下的适用性。针对缓存穿透/雪崩/击穿问题,给出参数校验、布隆过滤器、互斥锁等解决方案。详细对比Spring与SpringBoot差异,阐述自动配置原理。深入解析Bean生命周期、注入方式及单例模式实现。最后探讨了Session/Cookie/Token安全方案,并提供了200MB内存处理1GB文件的BitSet分治策略。全文涵盖分布式系统核心问题,兼具理论深度与实践指导价值。

2025-05-27 20:49:50 1364 1

原创 写两个hascode和equals的例子

本文通过四个示例演示了Java中hashCode和equals方法的关系:1)默认不重写时比较对象引用;2)仅重写equals会导致内容相同但哈希值不同;3)同时正确重写两个方法确保对象相等时哈希值相同;4)在HashSet中的正确应用。关键规则是:相等的对象必须有相同的哈希值,必须同时重写这两个方法。最佳实践包括使用Objects.hash()辅助计算,并确保equals方法满足自反性、对称性等约定。这些方法对集合操作至关重要。

2025-05-27 13:17:59 390

原创 单例模式,饿汉式,懒汉式,在java和spring中的体现

单例模式确保一个类仅有一个实例,并提供全局访问点。主要分为饿汉式和懒汉式:饿汉式在类加载时创建实例,线程安全但可能浪费资源;懒汉式延迟实例化,需同步机制保证线程安全。Spring框架默认采用单例模式管理bean。饿汉式适合创建成本低且必用的对象,懒汉式适合高成本或不常用的对象。两种模式在Java中广泛应用于日志记录器、连接池等场景。

2025-05-26 21:01:15 658

原创 2022CCPC吉林省赛长春邀请赛 Java 做题记录

该代码库包含多个Java程序,主要用于解决算法竞赛中的问题。每个程序都使用了自定义的IoScanner类来高效处理输入输出。主要程序包括: K.BracketSequence:计算卡特兰数,并结合快速幂取模和逆元计算,解决括号序列问题。 L.SuzuranLovesString:处理字符串问题,计算特定条件下的字符串长度。 B.ArithmeticExercise:进行大数除法运算,输出精确到指定小数位的结果。 E.GreatDetectiveTJC:检查数组中是否存在特定条件的元素对。 A.RandomN

2025-05-20 18:47:11 283

原创 算法竞赛 Java 高精度 大数 小数 模版

在Java中,BigInteger和BigDecimal类用于处理超出基本数据类型范围的大数和高精度小数运算。BigInteger适用于大整数运算,支持加、减、乘、除、取余等操作,并提供了幂运算、绝对值和最大公约数等方法。BigDecimal则用于高精度小数运算,支持加、减、乘、除等操作,除法运算需指定精度和舍入模式。这两个类都是不可变的,每次运算都会返回新对象。典型应用场景包括金融计算、密码学和科学计算。尽管它们提供了高精度计算能力,但性能开销较大,运算速度较慢。

2025-05-19 18:49:38 285

原创 2024CCPC吉林省赛长春邀请赛 Java 做题记录

本文介绍了四个编程问题的解决方案,分别涉及签到题、平台游戏模拟、贪心算法和单调栈数据结构。第一个问题“The Easiest Problem”是一个简单的签到题,直接输出21即可。第二个问题“Platform Game”是一个模拟题,通过自定义比较器对平台进行排序,并根据初始位置和高度计算最终位置。第三个问题“Recharge”是一个贪心算法问题,通过计算小房间和大房间的充能次数来求解最优解。最后一个问题“Connected Components”使用单调栈数据结构来处理区间问题,计算连通分量的数量。每个问

2025-05-19 15:36:28 580

原创 Spring源码之解决循环依赖 三级缓存

Spring通过三级缓存机制解决循环依赖问题。三级缓存包括:一级缓存(存储完全初始化的单例bean)、二级缓存(存储早期曝光的未完全初始化bean)和三级缓存(存储单例工厂对象,用于创建早期曝光的bean)。当发生循环依赖时,Spring通过提前曝光工厂、从缓存获取依赖项以及继续完成初始化等步骤来解决。三级缓存的关键在于通过ObjectFactory延迟创建代理对象,确保AOP的正确性,并维持后置处理器的执行顺序。二级缓存虽然可以解决普通对象的循环依赖,但无法处理代理对象的情况,因此三级缓存是Spring在

2025-05-17 21:11:06 649

原创 Spring之Bean的初始化 Bean的生命周期 全站式解析

Bean的生命周期可以分为五个主要步骤:实例化、属性赋值、初始化、使用和销毁。首先,通过createBeanInstance()方法实例化Bean对象,并将其挂载到BeanWrapper上。接着,使用populateBean()方法进行属性赋值,处理自动装配和BeanPostProcessor的干预。初始化阶段包括检查Aware接口、执行BeanPostProcessor的前置处理、调用InitializingBean的afterPropertiesSet()方法以及执行自定义的init-method方法。

2025-05-17 21:07:34 1123

原创 2025年4月21日 美团一面 非核心部门 一面挂复盘

本文主要探讨了Java中的反射机制、AOP(面向切面编程)及其底层实现、动态代理技术、Bean的生命周期、循环依赖的解决方案、索引的原理与设计、缓存问题(穿透、雪崩、击穿)以及数据库与缓存的数据一致性。反射机制允许程序在运行时动态操作类、方法和字段,但性能较低。AOP通过切面编程实现代码的横向切割,Spring AOP依赖于动态代理技术,包括JDK动态代理和CGLIB动态代理,两者在性能和扩展性上各有优劣。Bean的生命周期涉及实例化、属性赋值、初始化和销毁等步骤。循环依赖通过Spring的三级缓存机制解决

2025-05-17 19:54:48 1000 1

原创 数据库原理及其应用 第六次作业

数据库的安全性涉及保护数据库免受非法使用导致的数据泄露、更改或破坏。通过身份验证、存取控制、视图机制、审计和数据加密等技术确保只有授权用户能访问和操作数据。在SQL中,GRANT和REVOKE语句用于权限管理,GRANT赋予用户或角色对特定表的操作权限,如SELECT、UPDATE等,并可指定是否允许权限传递;REVOKE则用于撤销这些权限。例如,GRANT ALL PRIVILEGES ON TABLE 学生,班级 TO U1 WITH GRANT OPTION; 赋予用户U1对“学生”和“班级”表的所有

2025-05-17 19:31:32 432

原创 场景题 如何Java用内存200M的情况下读取1G文件,并统计重复内容?

在Java中处理1GB大文件并统计重复内容时,需结合流式读取和内存优化技术,特别是在内存限制为200MB的情况下。解决方案包括:1. 使用BufferedReader或Scanner逐行读取文件,避免一次性加载,内存消耗仅约20MB。2. 采用BitSet数据结构进行高效去重,9亿数字仅需约112MB内存。3. 若数字范围过大,可采用哈希分片或布隆过滤器进一步优化内存。4. 通过JVM参数调优和监控工具确保内存使用稳定。完整示例代码展示了如何实现这些技术,确保在有限内存下高效处理大文件。

2025-05-15 20:21:58 431

原创 算法竞赛相关 Java 二分模版

本文介绍了在Java中使用二分查找算法实现与目标值相关的几种方法。通过Arrays.binarySearch()方法,可以快速查找数组中与目标值相关的元素。文章还提供了一个BinarySearchTemplate类,其中包含了四种常见的二分查找变体:upperBound(查找大于目标值的最小值)、lowerBound(查找大于等于目标值的最小值)、floor(查找小于目标值的最大值)和ceiling(查找小于等于目标值的最大值)。这些方法通过二分查找算法高效地定位目标值,并返回相应的结果。此外,文章还提供了

2025-05-13 19:46:20 273

原创 牛客周赛 Round 92 题解 Java

本文介绍了六个编程题目及其解决方案,涉及签到题、模拟题、数学题、数据结构题等。每个题目都提供了详细的Java代码实现,涵盖了从简单构造到复杂算法的多种编程技巧。例如,签到题通过简单的字符串构造解决,模拟题通过路径规划避免陷阱,数学题利用韦达定理和打表法寻找规律,数据结构题则通过逐层构造二叉树来解决问题。这些题目展示了如何通过不同的编程思路和算法技巧来解决实际问题,适合编程竞赛和算法学习的参考。

2025-05-11 21:08:06 913

原创 数据库原理及其应用 第四次作业

本文提供了七个SQL查询示例,涉及供应商、零件和工程项目的数据操作。查询包括:1)获取所有供应商的姓名和城市;2)获取所有零件的名称、颜色和重量;3)找出使用特定供应商零件的工程号码;4)找出特定工程项目使用的零件名称及数量;5)获取上海厂商供应的所有零件号码;6)找出使用上海产零件的工程名称;7)找出未使用天津产零件的工程号码。这些查询展示了如何通过SQL语句从多个表中筛选、连接和提取数据,适用于数据库管理和数据分析场景。

2025-05-10 10:59:35 307 3

原创 Java反射 八股版

Java反射机制是Java编程中的核心特性,允许程序在运行时动态分析和操作类、方法、字段等元信息,突破编译期限制,实现灵活的动态行为。本文详细剖析了Java反射的关键概念、使用场景及实际操作中的注意要点。核心概念包括Class类、Constructor类、Method类和Field类,分别用于表示类型、构造方法、方法和字段。典型应用场景涵盖框架开发、单元测试和JSON序列化/反序列化。性能考量方面,反射存在方法调用开销、安全检查开销和JIT优化受限等问题,建议通过缓存反射对象、使用MethodHandle和

2025-05-09 21:35:39 1186

原创 分布式ID设计 数据库主键自增

本文详细介绍了分布式系统中生成唯一ID的多种方案,重点分析了在分库分表环境下的应用。首先,通过一个电商平台的订单ID生成示例,展示了如何利用MySQL的自增主键和唯一索引特性生成全局唯一ID。接着,探讨了多服务器共享唯一索引的原理,并解释了UUID_SHORT()的高唯一性。针对分库分表场景,提出了四种解决方案:专用ID生成库、号段模式、UUID和雪花算法,并对比了它们的优缺点。最后,总结了分库分表下的最佳实践,建议优先考虑号段模式,并结合数据库分片和监控灾备措施,以确保ID生成的可靠性和性能。

2025-05-09 21:08:39 1357

原创 什么是回调 钩子 Hook机制 钩子函数 异步编程

下面为你分别给出 Java 中回调和 Hook(钩子)机制的示例代码。

2025-05-07 20:52:50 1003

原创 力扣 sql题 day1 180 连续出现的数字 181 超过经理收入的员工 1682 无效的推文 1211 查询结果的质量和占比 595 大的国家

count(*):返回表中满足where条件的行的数量。count(列):返回列值非空的行的数量。这种 AS 的方式进行归类的。

2025-05-02 16:40:49 152

原创 SQL语句练习 自学SQL网 在查询中使用表达式 统计

【代码】SQL语句练习 自学SQL网 在查询中使用表达式 统计。

2025-05-02 15:34:30 435

原创 SQL语句练习 自学SQL网 多表查询

【代码】SQL语句练习 自学SQL网 多表查询。

2025-04-30 19:34:11 1169

原创 SQL语句练习 自学SQL网 基础查询

【代码】SQL语句练习 自学SQL网 基础查询。

2025-04-25 13:00:50 411

原创 Java接口 抽象方法 默认方法 静态方法

接口在 JDK8 之前只有抽象方法在 JDK8 时引入了静态方法和默认方法静态方法可以通过接口名调用 只能通过接口调用默认方法可以由子类实现 可以重写也不可以重写默认方法是解决的接口进行拓展时破坏现有实现类的问题。

2025-04-25 09:38:38 464

原创 布隆过滤器与哈希 用Java手写一个简单的布隆过滤器

如果布隆过滤器返回 false 说明数据一定没出现过。如果布隆过滤器返回 true 说明数据可能出现过。布隆过滤器时检查数据是否出现过的一种方法。

2025-04-23 18:26:29 133

原创 非关系型数据库 八股文 Redis相关 缓存雪崩 击穿 穿透

什么是缓存雪崩、击穿、穿透?| 小林coding。之前我们说的是 缓存雪崩 缓存击穿 这两种情况那么说明还是有数据的 我们只是要求缓存恢复相对应的数据 即可正常运行但是如果 数据库没有数据 缓存也没有数据后续的请求依旧会全部到达缓存 导致数据库压力骤增为什么会存在 数据库中也没有数据 缓存中也没有数据这种情况呢可能的原因业务误操作 删掉了 mysql 和缓存里面的数据黑客恶意攻击 特地访问不存在的数据限制 请求的 访问在 API 的入口处我们要判断请求参数是否合理请求参数是否

2025-04-23 18:08:30 865

原创 Java八股 深入理解Spring的AOP 面向切面编程 底层 保姆级教程 手写例子

AOP 的核心是连接点连接点是我们需要关注的程序拓展点可能是类初始化 方法执行 方法调用 字段调用 异常处理等Spring 支持的连接点是方法执行点切入点是一系列连接点的集合,Spring默认使用AspectJ语法,在AOP中抽象表示为可以进行操作的集合之后就是通知通知就是我们在连接点上执行的行为连接点 切入点 通知组合在一起 就是一个切面把切面映入到其他应用程序或者对象上,创建一个被通知的对象,这些就是织入,Spring 在运行时完成织入 ,在 AOP 中表示为怎么实现的,实现方式。

2025-04-22 17:31:04 1454

原创 力扣hot100 LeetCode 热题 100 Java 哈希篇

【代码】力扣hot100 LeetCode 热题 100 Java 哈希篇。

2025-04-22 12:17:21 359

原创 常见数据结构模版 哈希与链表

【代码】常见数据结构模版 哈希链表。

2025-04-16 22:42:51 80

原创 深入理解 jdk动态代理 cglib动态代理 代码实现

/ jdk的动态代理类// 这个target是代理类中的真实对象/*** proxy :动态生成的代理类* method : 与代理类对象调用的方法相对应* args : 当前 method 方法的参数* 我们会在这个方法里面调用原生方法* invoke() 方法: 当我们的动态代理对象调用原生方法的时候,* 最终实际上调用到的是 invoke() 方法,* 然后 invoke() 方法代替我们去调用了被代理对象的原生方法。

2025-04-15 23:36:50 720

原创 2025年4月15日 百度一面 面经

啥啊 忘了注解就注解 注解是 @ 加上一个接口听到这里 面试官好像笑了...我记得我简历上没有写 JVM 相关的啊...redis 哨兵那边忘了总体而言 觉得有点过于简单了Springboot -> Juc -> 中间件 -> 算法问到代理相关可能是因为然后往下我就写了并发相关的并发编程那边寒假学了 JUC 还没复习题目确实简单 晚上看了一下 但是答的还是很不满意的 再加上 27 届过得概率应该挺小的想死啦。

2025-04-15 23:05:15 1616

原创 JavaWeb开发 Servlet底层 Servlet 过滤器 过滤器和拦截器 手写一个限制访问路径的拦截器

定义过滤器,然后映射到一个 URL 或 Servlet,这与定义 Servlet,然后映射到一个 URL 模式方式大致相同。然后再启动类里面用@ ServletComponentScan 注解 指定到过滤器类也行。是当当请求进入 web 服务器后 在到达 controller 之前。过滤器虽然是 HTTP 请求进入 web 服务器后第一个经过的地方。过滤器是在请求进入 Servlet 容器前对请求进行。但他是基于 Java Servlet 规范实现的。一个是基于配置文件 一个是基于注解。

2025-04-15 21:09:56 840

原创 JavaWeb开发 Servlet底层 从概念到HTTP请求 到web服务器再到servlet

service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。service() 方法是执行实际任务的主要方法。

2025-04-15 20:05:44 863

原创 Java集合框架 源码分析 迭代器 并发修改异常 同步锁解决多线程修改集合问题

Java中的Iterator(迭代器)是集合框架中用于遍历容器元素的统一接口,提供了一种标准化的元素访问方式,无需依赖具体集合类型的实现细节。通过迭代器,开发者可以以统一的方式处理不同类型的集合,同时避免直接操作集合内部结构带来的风险。如需更复杂的遍历(如双向操作),可改用。会给集合内部的一个成员变量 modCount 赋值。当迭代器创建的时候 就会有这个出现这个变量。若遍历过程中通过集合自身方法(非迭代器的。将遍历操作与集合实现分离,适用于所有。表示集合实际上被修改的次数。首先是 集合初始化的时候。

2025-04-14 19:20:04 988

原创 BHUACM吉林省赛集训 4月14日 简单dp背包问题专题

由于动态规划并不是某种具体的算法,而是一种解决特定问题的思想,因此它会出现在各式各样的数据结构中,与之相关的题目种类也更为繁杂。如果有大量的重叠子问题,我们可以用空间将这些子问题的解存储下来,避免重复求解相同的子问题,从而提升效率。能用动态规划解决的问题,需要满足三个条件:最优子结构,无后效性和子问题重叠。动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。,每个阶段对应若干个子问题,提取这些子问题的特征(称之为。已经求解的子问题,不会再受到后续决策的影响。寻找每一个状态的可能。

2025-04-14 16:49:15 286 1

原创 2024第十五届蓝桥杯大赛软件赛省赛Java大学B组 报数游戏 类斐波那契循环数 分布式队列 食堂 最优分组 星际旅行 LITS游戏 拼十字

今天心血来潮把去年的题目又做了一遍...本人去年大一 拿的是全省第五进的国赛而如今的已经是一名 codeforces 1500 分的入门级别的算竞选手了下周又是蓝桥杯了 想起来后又做了一遍仅代表个人做题记录。

2025-04-06 15:03:32 1544 3

navicat v16+v17

navicat v16+v17

2025-03-04

空空如也

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

TA关注的人

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