自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在 swagger 中支持 asp.net core 可选路由参数

【代码】在 swagger 中支持 asp.net core 可选路由参数。

2025-07-25 16:43:06 38

原创 Explain工具介绍

文档为,核心内容包含及,适用于SQL查询分析与索引优化场景。

2025-07-24 14:40:07 229

原创 JMM的happens-before核心应用场景及实现原理

happens-before规则是多线程编程的基石,通过volatile线程生命周期管理等机制,为开发者提供了可见性和顺序性的保障。在实际应用中,需结合具体场景选择合适的同步策略,并利用传递性规则推导复杂操作间的可见性,同时避免指令重排序和虚假唤醒等陷阱。掌握这些规则能有效提升代码的健壮性和性能。

2025-07-24 14:39:37 790

原创 Go HTTP中间件设计模式与实践

中间件就像三明治的“夹心”,位于HTTP请求(面包)和业务逻辑(馅料)之间,添加日志、认证或限流等“调味料”。定义:中间件是处理HTTP请求和响应的可重用组件,负责在核心逻辑前后执行横切关注点(如日志记录、权限验证)。在Go中,中间件基于接口(定义了ServeHTTP方法),通过包装核心处理器实现功能扩展。这种设计既灵活又与net/http标准库无缝集成。中间件开发如烹饪大餐:选对模式、优化性能才能出佳肴。本节总结实践经验和常见错误。灵活性与性能和goroutine支持高效中间件。多样模式。

2025-07-24 14:37:38 690

原创 美团Java面试题、笔试题(含答案)

本文总结了Java核心知识点,包含Java基础、集合、多线程和JVM四大部分。Java基础部分涵盖八大基本数据类型、三大特性、访问修饰符、hashCode与equals、泛型等;集合部分解析List/Set/Map区别、HashMap原理、ConcurrentHashMap实现等;多线程部分包括线程状态、线程池、锁机制和JMM内存模型;JVM部分涉及类加载机制、双亲委派、内存结构等。文章还对比了关键概念差异,如==与equals、ArrayList与LinkedList、synchronized与Lock等

2025-07-24 14:12:35 550

原创 java实现高并发场景下三级缓存的数据一致性

该实现综合运用了延迟双删、发布订阅、锁机制和TTL等多种策略,保障了高并发场景下三级缓存的数据一致性,尤其适合分布式微服务架构。redisson配置。

2025-07-23 15:05:29 191

原创 Neo4j 在 Spring Boot 中的使用详解

使用注解定义 Neo4j 实体和关系:@Node("Person") // 定义节点标签 public class Person { @Id @GeneratedValue // 定义ID private Long id;@Property("name") // 定义属性 private String name;

2025-07-23 15:04:58 650

原创 AI 如何帮你 “挑” 出适合自动化生成的代码?新手也能轻松上手

代码知识库就像 AI 的 “项目大脑”,让它从 “通用开发者” 进化为 “你的专属程序员”。通过解析现有代码、动态更新规范、复用历史经验,AI 生成的代码将完美融入项目,减少 80% 的重复劳动,让你专注于 20% 的核心业务创新。用类似 Cursor 的提示方式,输入你的需求和代码结构,让 AI 生成可自动化部分,亲身体验 “AI 写模板,人工填核心” 的高效开发模式吧!

2025-07-23 15:04:21 405

原创 全网最强Java面试八股文合集,不接受反驳

本文是一套针对Java求职者的面试题库,涵盖从基础到高级的各类问题,适用于不同经验水平的应聘者。题库包含Java核心、JVM、多线程、MySQL、Redis、Spring框架等高频考点,并标注题目难度和出现频率,帮助求职者高效备考。特色包括真实面试题整理、精选高频问题、难度分级和实用解答,据反馈面试涵盖率高达85%。内容涉及字符串处理、集合框架、JVM调优、并发编程、数据库优化、分布式系统等关键技术点,是Java开发者跳槽涨薪的实用指南。

2025-07-23 14:42:30 875

原创 Java并发机制的底层实现之volatile关键字

对于共享变量,就会存在比较大问题,线程A对共享变量的修改一开始只会将修改结果同步到CPU缓存中,没有写回主内存,这样线程B在读取这个共享变量的时候,就会读取到以前的旧值。因为number++运算,要经历多条CPU指令,如加载number的原始值到寄存器、为原始值加1、将运算结果写会CPU缓存,在多线程的情况下,线程A可能执行到为原始值加1这条指令了,线程B可能正好在执行加载number的原始值到寄存器,这样线程B加载的就是线程A还没有进行加1的值,这样最终的计算结果就会比预想的值要小。

2025-07-22 14:35:30 296

原创 多实例的心跳检测不要用lock锁

虽然 Redis 本身保证了单个命令的原子性,但在多实例环境下,如果多个实例操作的是 同一个 Key,则可能会出现并发问题。在A服务中启用长任务的时候,B服务会查询到执行中的任务,判断服务是否中断,核心逻辑如下: 其中 isInterrupted方法打印出日志发现时B服务把A服务上的长任务中断,原因时map中没有A服务的刷新时间;onceReport()方法中,假设B服务一直拿着锁,导致A服务拿不到从而进一步缓存中没有刷新到A服务的存活时间,进一步B实例认为A实例中断了;

2025-07-22 14:34:55 261

原创 synchronized锁及其原理

提到,volatile修饰的共享变量并不能具有原子性,对一个变量的修改,乃至一段代码的执行,如果想具有原子性的话,需要使用synchronized关键字进行修饰,即对代码块或者方法进行加锁处理,加锁之后,线程只能按照顺序执行这个代码块或者方法。每次在进入到synchronized关键字修饰的代码块或者方法的时候,都会清空这个线程的CPU缓存,代码块或者方法里面的变量值都要去主内存中获取。每次退出synchronized关键字修饰的代码块或者方法的时候,都会将线程在CPU缓存中的内容刷新到主内存中。

2025-07-22 14:33:42 277

原创 2025年 Java 面试八股文(20w字)

本文总结了Java基础、高级和框架相关的核心面试知识点。主要内容包括: Java基础篇 OOP特性:封装、继承、多态 重载与重写的区别 接口与抽象类的区别 深拷贝与浅拷贝 sleep和wait的区别 HashMap底层原理(数组+链表+红黑树) 线程的创建方式及生命周期 JVM内存分区及各区作用 Java高级篇 垃圾回收算法(复制、标记清除、标记整理) 判断对象存活的方法(引用计数、可达性分析) 线程池工作原理及参数设置 并发容器(CopyOnWriteArrayList、ConcurrentHashMap

2025-07-22 14:11:27 1635

原创 拒绝卡顿!揭秘多表联查报表系统的优化方案

一般的做法就是通过定时任务的方式,每天晚上计算所有的统计数据,将最终的结果保存到新表中。建立宽表和临时表具备实时性,就需要保存基础字段,不能保存聚合字段,将所需要的字段全部同步到一张大的宽表里面,让报表的统计变成一张表的操作。数据源常常来源于不同的表,再加上为了方便,查询条件上也可能会涉及不同表的字段,这就需要连表查询。为了满足这些需求,传统的连表查询处理加上大数据量的计算和读写,势必造成性能的拉胯。这种方案的不好的一点就是对于经常变动的数据不友好,已经处理好的数据那些数据变了需要更新则是本方案的难点。

2025-07-21 14:26:33 856

原创 别怪 GC 不回收你:可能是你的内部类太粘人了

引用类型是否清除 referent如何标记状态加入 pending list 方式软引用✅ 是弱引用✅ 是虚引用✅ 是终结引用❌ 否next指向自身(自循环)在Java内存管理的世界里,内部类与引用体系内部类陷阱成员内部类因隐式持有外部类强引用,易引发内存泄漏。优先选用静态内部类,避免非必要耦合。引用体系精要弱引用打破强引用链,允许 GC 回收关键对象Cleaner API 替代 Finalizer,提供安全可靠的资源清理机制。

2025-07-21 14:26:01 710

原创 C#.NET EFCore.BulkExtensions 扩展详解

是一个开源库,用于扩展的功能,提供高效的批量操作()支持。原生EF Core在处理大量数据时性能较差(例如逐条插入 / 更新),而该库通过优化SQL执行,显著提升了批量操作的效率。var mapping = new Dictionary<string, string> { { "ProductName", "Name" }, // CSV中的ProductName映射到实体的Name { "UnitPrice", "Price" } };

2025-07-21 14:25:30 241

原创 2025Java基础篇面试题,八股文篇

Java基础核心知识点总结 摘要:本文总结了Java基础中的核心面试知识点,包括: HTTP请求方法GET与POST的区别 Java多态的实现方式(重载与重写) String、StringBuffer与StringBuilder的区别 ==与equals的区别及hashCode重写必要性 Java基本数据类型及集合框架(List、Set) ArrayList与LinkedList的实现原理与区别 HashMap与Hashtable的线程安全性与实现机制 常见排序算法(冒泡、二分查找、快速排序)实现 异常处理

2025-07-21 13:41:41 872

原创 虚拟线程吃掉了我的内存?一个爬虫的并发之殇!

这场爬虫事故让人深刻明白:虚拟线程并不是平台线程的“更强版”,而是一种需要你亲自管控资源的全新编程模型。在传统线程中,线程池大小天然限制了并发上限,但虚拟线程取消了这种束缚,你得亲手添加“限流器”。在追求极致性能的同时,也别忘了内存、CPU、网络等资源仍然是“有限的”。性能优化永远是“系统性工程”,不是只换一个关键词就能起飞的。在引入虚拟线程前,先清晰评估系统瓶颈;配合Semaphore或任务队列做好并发管控;针对网络型应用,考虑引入背压机制或响应式框架;

2025-07-20 14:25:15 897

原创 python爬虫

User-AgentRefererCookieheader:采用字典数据结构。

2025-07-20 14:24:39 183

原创 this 与 bind:JavaScript 中的“归属感”难题

this是动态绑定的上下文,调用方式决定其指向,可被修改;而bind会返回一个新函数,固定绑定this和参数,不可更改。二者配合使用,可精准控制函数执行环境。简单来说,this是一个灵活但容易迷失的角色,而bind则是它的“指南针”,帮助它找到稳定的归属。在 JavaScript 的世界里,this有时会“走失”,但它并不孤单,bind总是能把它带回正确的轨道。理解this的绑定规则,掌握bind的使用,是每个 JavaScript 开发者必经的成长之路。

2025-07-20 14:24:05 386

原创 2025最新版Java面试八股文大全

反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所 有信息。I 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。应用场景有:要操作权限不够的类属性和方法时、实现自定义注解时、动态加载第三方jar包时、按需加载类,节省编译和初始化时间;获取class对象的方法有:class.forName(类路径),类.class(),对象的getClass()

2025-07-20 13:51:34 864

原创 Java 8 日期时间 API 全面指南:使用技巧与场景实践

的设计缺陷,提供了线程安全**、**直观易用且功能全面的日期时间处理方案。中的日期类用起来不怎么顺手,本文将深入解析核心类、使用技巧及实际场景应用。类,包括计算、格式化、解析等操作。方法,通过当前的秒数+纳秒数+时区的偏移/时区时间来构建。可以获取日期的年、月、日、时、分、秒、纳秒等参数。因为都是关于日期的类,所以他们之间都用几乎相同的。通过合理运用这些工具,可显著提升日期时间处理的。这里需要注意的是,时间间隔的计算不会向上取整。习惯了以前的工具类,反而觉得。日期的比较和之前的差别不大。

2025-07-18 14:49:32 241

原创 .NET 使用 DocNET 库快速高效的操作 PDF 文档

PDF 文档,作为日常工作中不可或缺的文档格式,广泛应用于各类场景。今天我们来讲讲在 .NET 中使用 DocNET 库快速高效的操作 PDF 文档。DocNET 是一个基于 .NET 开源(MIT license)、跨平台(支持Windows、Linux和macOS平台)的旨在提供快速 PDF 编辑和数据提取的操作库。它是基于 Chromium 所使用的 PDFium C++ 库开发的 .NET Standard 2.0 封装库。

2025-07-18 14:48:14 300

原创 订单超时取消的五种解法:从普通商品到秒杀订单,业务不同方案不同!

还记得我刚入职的时候,产品经理语重心长地对我说:“用户下单如果不付款,多久后自动取消?你搞一下哈,很简单的。我当时年轻,头发还浓密,笑着说:“这不就是设置个定时器嘛。结果……我三天三夜没睡好,做了个定时器它炸了三次,订单取消了一批没该取消的,没取消的还都超时了。订单超时取消,看似简单,其实是个技术陷阱。今天这篇文章,我就用八年的摸鱼经验,带大家拨开迷雾,看看订单超时自动取消到底该怎么做。

2025-07-18 14:46:58 259

原创 常见JAVA集合面试题(自用整理,持续更新)

Java集合框架主要分为Collection和Map两大接口体系。Collection包含List(有序可重复)、Set(无序不可重复)和Queue(队列)三个子接口;Map用于存储键值对。主要实现类包括ArrayList、LinkedList、HashMap、TreeSet等,它们在线程安全、数据结构、性能特点上各有不同。如ArrayList基于动态数组适合查询,LinkedList基于链表适合增删;HashMap在JDK1.8后采用数组+链表+红黑树结构优化性能。解决哈希冲突常见方法有链地址法、开放定址

2025-07-18 14:24:33 870

原创 从选择困难到最优策略:我如何用DP搞定“鱼和熊掌兼得”的排程难题(1751. 最多可以参加的会议数目 II)

我定义了一个函数。

2025-07-17 14:30:07 437

原创 Java 线程池的工作原理及实践

线程池是一种用于管理和复用线程的机制。线程池的核心思想是预先创建一定数量的线程,并把它们保存在线程池中,当有任务需要执行时,线程池会从空闲线程中取出一个线程来执行该任务。任务执行完毕后,线程不是被销毁,而是返还给线程池,可以立即或稍后被再次用来执行其他任务。这种机制可以避免因频繁创建和销毁线程而带来的性能开销,同时也能控制同时运行的线程数量,从而提高系统的性能和资源利用率。线程池的主要组成部分包括工作线程、任务队列、线程管理器等。

2025-07-17 14:29:34 814

原创 coding 要停服了, 把所有 CI 迁移到 Github 上 (服务器无需翻墙)

Copy!!

2025-07-17 14:29:02 139

原创 全网最全JAVA面试八股文,终于整理完了

本文总结了Java多线程编程的核心知识点,主要包括:1)线程通信机制(volatile、synchronized、wait/notify);2)锁机制比较(synchronized悲观锁、CAS乐观锁);3)线程控制方法(sleep保持锁、wait释放锁);4)ThreadLocal原理与作用;5)死锁产生条件与避免方法;6)线程池任务处理策略;7)线程调度算法与上下文切换;8)并发工具类(Lock、Semaphore、Executors)。这些内容涵盖了多线程编程中的线程安全、通信、调度等关键问题,是Ja

2025-07-17 14:05:44 768

原创 Python包管理的闪电战:uv全面指南

uvuv。

2025-07-16 15:37:48 240

原创 CMU15445-2024fall-project3踩坑经历

本篇文章记录本人对实验中各个板块的理解以及踩坑, 如果您发现我过多的涉及到了实验的内容, 有违学术诚信, 请告诉我!实现一系列算子以及两个优化器。其中算子有CURD、聚合链接。优化器为:seq_scan->index_scan以及nested_loop -> hashjoin;Task1主要实现CURD算子以及seq_scan->index_scan优化器;Task2主要实现嵌套循环链接和索引循环连接;Task3实现哈希连接,并将循环嵌套链接优化成哈希连接;Task4实现外排序以及限制执行器。

2025-07-16 15:37:06 890

原创 了解Redis String类型

Redis的String类型虽然看起来简单,但它的强大之处在于底层的优化设计和丰富的操作命令。骚话王又来分享知识了!同时,通过动态编码转换,Redis能够根据实际使用场景自动优化存储方式,既保证了灵活性,又兼顾了性能。:无论存储什么类型的数据,Redis在底层都使用相同的SDS结构,但会根据数据内容动态选择最优的编码方式。Redis的String类型在底层采用了三种不同的编码方式来存储数据,这种设计既节省内存又保证了性能。虽然Redis有专门的List类型,但String类型也可以实现简单的消息队列。

2025-07-16 15:34:30 733

原创 java八股文(全网最全)

本文总结了Java编程中的核心知识点,包括面向对象特性、多线程、JVM内存模型和垃圾回收机制等。主要内容有:1.抽象类与普通类的区别,抽象类不能被final修饰;2.接口与抽象类的异同点;3.IO流的分类(BIO/NIO/AIO)及特点;4.集合框架中线程安全类的使用;5.多线程创建方式和同步机制(synchronized、Lock);6.JVM内存分区(堆、栈、方法区等)及垃圾回收算法;7.类加载过程和双亲委派机制;8.对象晋升老年代的条件。文章还涉及死锁避免、CAS乐观锁、深/浅拷贝等常见面试题,涵盖了

2025-07-16 15:04:16 1064

原创 Claude 实战圣经:从终端命令到自动化工作流

掌握了以上所有零件,现在是时候将它们组装成属于你自己的自动化“神兵”了。

2025-07-15 15:33:16 257

原创 HarmonyOS NEXT 智能场景识别实战:让设备主动思考的关键技术揭秘

随着智慧家居、智能办公等场景不断普及,设备之间如何理解用户所处环境、主动做出反应成为关键能力。HarmonyOS NEXT 提供了强大的分布式设备管理与 AI 能力,使得通过传感器数据识别环境场景成为可能。本文将结合传感器数据收集、AI 模型训练与部署、场景识别逻辑编排,带你一步步构建“智能场景识别”功能,并通过可运行代码进行实战演练。答:当然可以。你可以使用 MindSpore Lite 或 ONNX 将模型部署到设备端,通过本地调用进行推理。

2025-07-15 15:32:46 245

原创 一个 Ginkgo 集测优化案例

七牛的测试机房需要搬迁,在 CI 系统迁移之后,发现新机房的集测总是多花 5-10min。一开始没怎么注意,以为只是新机器网络、磁盘慢之类的原因。但深入看了集测日志后,却发现,多出来的时间集中在集测之始,那就有必要好好分析一下了。

2025-07-15 15:32:11 325

原创 Java集合框架面试题(130道)

Java集合框架常见面试题解析 本文总结了Java集合框架中的常见面试问题,主要分为三部分内容: 集合基础 Java集合分为List、Map、Set三种类型 ArrayList和LinkedList的区别(数组vs链表结构) ArrayList的扩容机制(1.5倍扩容)和序列化优化 HashMap核心原理 数据结构演进:JDK1.8引入数组+链表+红黑树 哈希函数设计:扰动函数降低hash碰撞 扩容机制:2的幂次方容量设计优化rehash过程 红黑树转换:阈值8的统计学依据 线程安全方案 快速失败(fail

2025-07-15 15:06:48 896

原创 从 OOM 到秒级导入:EasyExcel 百万级数据优化实战(附可直接跑的工具类)

按数据量选模式:1万行以下用普通模式,1万行以上必须用批量模式动态调整批次大小:根据内存和单条数据大小计算,推荐500-5000行/批事务与重试:每个批次用独立事务,记录失败批次以便重试(如保存到失败表)监控与日志:记录每个批次的处理时间、成功/失败数,方便排查问题极端场景处理:超500万行数据时,先将Excel分片(如用Alibaba的OSS分片上传),再分布式并行处理通过本文的工具类和优化技巧,你可以轻松应对从几千行到几百万行的Excel导入场景,既避免OOM,又能保证处理效率。

2025-07-14 14:44:18 261

原创 用 Python 实现一个 BitTorrent 下载器

Bencoding 支持四种数据类型:torrent 文件是一个 bencode 编码的对象。其中关键的信息如下(这里换用 json 来表示):单文件:bittorrent 把被做种的文件分成了多个 piece,除了最后一个 piece,每个 piece 的长度是固定的 。每个种子还有个重要属性是 ,没有记录在 torrent 文件中,而是直接对 torrent 文件内容计算 sha1。多文件:多文件没有 属性,取而代之的是 列表,记录每个文件的名称和大小。 列表的顺序是重要的,所有文件

2025-07-14 14:41:21 375

原创 基于业务知识和代码库增强的大模型生成代码实践

阶段1 - 基础应用 李明首先整理了团队日常使用大模型的常见场景:•研发人员用AI生成基础代码片段•测试人员用AI编写测试用例•产品经理用AI辅助撰写需求文档 这些基础应用虽然简单,但确实提高了部分工作效率。阶段2 - 知识整合 在取得初步成效后,李明开始着手解决更深层的问题:1.建立了系统维度的知识库模版,确保关键文档都能被有效收录2.开发了智能检索功能,不仅能给出答案,还能定位到具体文档位置3.通过知识库建设,反向推动了各部门完善文档沉淀。

2025-07-14 14:40:54 842

空空如也

空空如也

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

TA关注的人

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