自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 资源 (12)
  • 收藏
  • 关注

原创 CAS 的三大问题与解决方案

CAS 在实际应用中,它存在三个核心问题: ABA 问题 、 循环时间长开销大 、 只能保证单个变量原子操作 。这些问题在高并发场景下可能会引发难以排查的 Bug,甚至严重影响系统性能。本文将带你逐一拆解这三大问题的本质、危害,并给出针对性的解决方案,让你在使用 CAS 时能避坑、用好。

2026-02-02 13:15:34 306

原创 最大报酬问题

小明每周上班都会拿到自己的工作清单,工作清单内包含n项工作,每项工作都有对应的耗时时间(单位h)和报酬,工作的总报酬为所有已完成工作的报酬之和,那么请你帮小明安排一下工作,保证小明在指定的工作时间内工作收入最大化。

2026-02-02 12:59:07 70

原创 Java 中 CAS 的底层实现与 Unsafe 类解析

本文将带你拨开迷雾,深入 Java CAS 的底层实现,核心解析 Unsafe 类的作用,以及 CPU 硬件如何为 CAS 提供支撑,让你彻底搞懂 Java CAS 的实现链路。

2026-02-01 15:13:42 691

原创 荒岛求生问题

一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口,大家需要逃往两端的港口才可逃生。假定每个人移动的速度一样,且只可选择向左或向右逃生。若两个人相遇,则进行决斗,战斗力强的能够活下来,并损失掉与对方相同的战斗力;若战斗力相同,则两人同归于尽。

2026-02-01 15:01:44 315

原创 计算疫情扩散时间

在一个地图中(地图由n*n个区域组成),有部分区域被感染病菌。 感染区域每天都会把周围(上下左右)的4个区域感染。请根据给定的地图计算,多少天以后,全部区域都会被感染。 如果初始地图上所有区域全部都被感染,或者没有被感染区域,返回-1

2026-01-31 13:48:00 444

原创 什么是 CAS?并发编程的 “无锁基石”

在 Java 并发编程的世界里,我们总是在和 “线程安全”“性能优化” 打交道。传统的锁机制虽然能解决线程安全问题,但也带来了不少性能损耗。而今天要介绍的 Compare and Swap(简称 CAS),作为无锁编程的核心思想,正在为高并发场景提供更高效的解决方案。本文将从锁的困境出发,带你全面认识 CAS 的本质、原理、特性,并通过实战代码验证其价值。

2026-01-31 13:47:19 727

原创 Java 并发程序性能优化:思路、方法与实践

在高并发业务场景下(如电商秒杀、直播带货、金融交易),Java 并发程序的性能直接决定了系统的吞吐量、响应时间和稳定性。很多时候,简单的线程安全实现(如无脑加锁)虽然能保证数据一致性,但会带来严重的性能瓶颈 —— 锁竞争导致线程阻塞、上下文切换开销飙升、CPU 利用率不足等问题。本文将从性能优化的核心思路出发,拆解具体优化方法,并结合实战案例讲解如何落地这些优化手段,帮助大家构建 “高性能 + 线程安全” 的并发程序。

2026-01-29 08:23:26 1021

原创 最长的顺子

斗地主起源于湖北十堰房县,据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的,如今已风靡整个中国,并流行于互联网上。牌型:单顺,又称顺子,最少5张牌,最多12张牌(3…A)不能有2,也不能有大小王,不计花色。例如: 3-4-5-6-7-8,7-8-9-10-J-Q,3-4-5-6-7-8-9-10-J-Q-K-A可用的牌 3<4<5<6<7<8<9<10<J<Q<K<A<2<B(小王)<C(大王),每种牌除大小王外有四种花色(共有13×4+2张牌)

2026-01-29 08:22:48 773

原创 Java 并发常见问题:死锁 / 活锁 / 饥饿的排查与解决方案

在多线程并发编程中,除了数据安全问题,线程协作异常是另一类高频问题,其中死锁、活锁、饥饿是最典型的三类问题。这些问题会导致线程无法正常执行、系统性能下降甚至服务不可用,且排查难度高 —— 死锁可能隐藏数月,在高并发场景下才会触发。本文将深入剖析这三类问题的产生原因、典型场景、排查方法,并提供可落地的解决方案与避坑指南。

2026-01-28 09:42:23 1121

原创 最小循环子数组

给定一个由若干整数组成的数组nums,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。

2026-01-28 09:42:08 327

原创 Java 线程池:核心原理、参数配置与实战应用

在高并发场景下,频繁创建和销毁线程会带来巨大的性能开销 —— 线程的创建需要分配栈空间、寄存器等系统资源,销毁需要回收这些资源,大量的线程还会引发 CPU 上下文切换的成本飙升。线程池作为 Java 并发编程的核心工具,通过复用线程 、 控制并发数 、 管理任务队列,有效解决了上述问题,是提升高并发程序性能的关键手段。本文将深入剖析线程池的核心原理、 ThreadPoolExecutor 的 7 个核心参数、工作流程,并结合实战案例讲解线程池的配置与使用。

2026-01-27 08:47:49 948

原创 最佳植树距离

按照环保公司要求,小明需要在沙化严重的地区进行植树防沙工作,初步目标是种植一条直线的树带。由于有些区域目前不适合种植树木,所以只能在一些可以种植的点来种植树木。在树苗有限的情况下,要达到最佳效果,就要尽量散开种植,不同树苗之间的最小间距要尽量大。给你一个适合种情树木的点坐标和一个树苗的数量,请帮小明选择一个最佳的最小种植间距。

2026-01-27 08:47:11 231

原创 线程通信:wait/notify、Condition、CountDownLatch

在多线程并发编程中,线程并非孤立执行,常常需要协同工作完成复杂任务。例如生产者线程生产数据,消费者线程消费数据,二者需要通过通信协调生产和消费的节奏,避免数据积压或消费空数据。Java 提供了多种线程通信工具,本文将从基础的 wait/notify 机制,到进阶的 Condition 接口,再到实用的并发工具类( CountDownLatch 、 CyclicBarrier 等),全面解析线程通信的实现原理与实战场景。

2026-01-26 12:51:00 981

原创 组装最大可靠性设备

一个设备由N种类型元器件组成(每种类型元器件只需要一个,类型type编号从0~N-1),每个元器件均有可靠性属性reliability,可靠性越高的器件其价格price越贵。而设备的可靠性由组成设备的所有器件中可靠性最低的器件决定。给定预算S,购买N种元器件( 每种类型元器件都需要购买一个),在不超过预算的情况下,请给出能够组成的设备的最大可靠性。

2026-01-26 12:50:16 593

原创 并发三大特性:原子性、可见性、有序性

在 Java 并发编程中,原子性 、 可见性 、 有序性是保证多线程程序正确运行的三大核心特性。如果不能满足这三个特性,多线程操作共享资源时就会出现数据错乱、结果不一致等问题。本文将深入剖析每个特性的本质,通过代码案例验证问题场景与解决方案,帮助大家从根源理解并发问题的产生原因。

2026-01-24 14:27:12 877

原创 组装新的数组

给你一个整数M和数组N,N中的元素为连续整数,要求根据N中的元素组装成新的数组R,组装规则:1、R中元素总和加起来等于M2、R中的元素可以从N中重复选取3、R中的元素最多只能有1个不在N中,且比N中的数字都要小(不能为负数)

2026-01-24 14:26:49 300

原创 优雅子数组

如果一个数组中出现次数最多的元素出现大于等于K次,被称为 k-优雅数组 ,k也可以被称为优雅阈值。例如,数组1,2,3,1、2,3,1,它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组[1, 2, 3, 1, 2]就不是一个3-优雅数组,因为其中出现次数最多的元素是1和2,只出现了2次。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。子数组是数组中一个或多个连续元素组成的数组。

2026-01-23 15:07:37 478

原创 Java 线程生命周期与状态转换

在上一篇文章中,我们学习了 Java 中创建线程的 5 种方式,掌握了线程的基础创建与启动逻辑。但线程从创建到销毁并非一成不变,而是会在不同状态之间转换。理解线程的生命周期和状态转换,是解决多线程并发问题的关键。本文将从理论到实践,深入解析 Java 线程的 6 种状态,演示状态转换的核心路径,并通过工具分析线程状态,帮助大家彻底掌握这一核心知识点。

2026-01-23 15:07:24 971

原创 Java线程解析:5种线程创建方法及应用场景

上一篇文章我们介绍了 Java 多线程的基础概念,并且演示了两种创建线程的基础方式:继承 Thread 类和实现 Runnable 接口。但在实际开发中,这两种方式并不能满足所有场景需求,比如需要获取线程执行结果、需要统一管理线程生命周期等。本文将全面讲解 Java 中创建线程的5种方式,分析它们的优缺点和适用场景,并通过代码案例帮助大家掌握实际用法。

2026-01-22 12:50:41 1375

原创 中文分词模拟器

给定一个连续不包含空格的字符串,该字符串仅包含英文小写字母及英文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。说明:1、精确分词:字符串分词后,不会出现重叠。2、标点符号不成词,仅用于断句3、词库:根据外部知识库统计出来的常用词汇例4、分词原则:采用分词顺序优先且最长匹配原则

2026-01-22 12:50:15 1023

原创 多线程入门:为什么需要多线程?

在单核 CPU 时代,程序的执行是串行的,代码按顺序一步步执行,前一个任务完成后才能开始下一个任务。但随着硬件技术的发展,多核 CPU 成为主流,串行执行的方式已经无法充分利用硬件资源。Java 多线程技术应运而生,它能让程序 “同时” 执行多个任务,极大提升程序的运行效率和响应速度。本文将带大家走进 Java 多线程的世界,从核心概念入手,理解多线程的价值,并实现第一个多线程程序。

2026-01-21 06:21:13 852

原创 信道分配问题

算法工程师小明面对着这样一个问题 ,需要将通信用的信道分配给尽量多的用户:信道的条件及分配规则如下:所有信道都有属性:”阶”。阶为 r的信道的容量为 2^r比特;所有用户需要传输的数据量都一样:D比特;一个用户可以分配多个信道,但每个信道只能分配给一个用户;只有当分配给一个用户的所有信道的容量和>=D,用户才能传输数据;给出一组信道资源,最多可以为多少用户传输数据?

2026-01-21 06:20:37 568

原创 volatile 高频考点模拟面试过程

本文围绕Java中的volatile关键字展开讨论,主要涵盖以下要点: volatile的核心特性是保证可见性和有序性,但不保证原子性; 通过内存屏障机制实现禁止指令重排序; 在DCL单例模式中必须使用volatile避免指令重排序问题; 最适合单一赋值、多线程读取的场景; 常见使用误区及解决方案; 与synchronized和Atomic类的区别及适用场景选择。 文章通过面试问答形式,系统讲解了volatile的原理、实现机制和实际应用场景。

2026-01-20 21:58:23 398

原创 羊、狼、农夫过河

羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。只计算农夫去对岸的次数,回程时农夫不会运送羊和狼。备注:农夫在或农夫离开后羊的数量大于狼的数量时狼不会攻击羊。

2026-01-20 21:57:45 892

原创 volatile 面试高频考点篇 —— 真题解析与答题技巧

在上一篇文章中,我们梳理了 volatile 与 synchronized 、 Atomic 类的选型逻辑。对于 Java 后端开发者而言, volatile 是并发编程面试的必考知识点,面试官会从基础特性、底层原理、实战应用、选型对比四个维度层层深入提问。本文精选面试高频真题,结合标准答案与答题思路,帮你掌握答题技巧,轻松通关面试。

2026-01-19 13:17:59 941

原创 寻找最大价值的矿堆

给你一个由 '0' (空地)、'1' (银矿)、'2'(金矿) 组成的的地图,矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。假设银矿价值1,金矿价值2 ,请你找出地图中最大价值的矿堆并输出该矿堆的价值。

2026-01-19 13:17:20 549

原创 文本统计分析

有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。规则如下:文本以”;”分隔,最后一条可以没有”;”,但空文本不能算语句。注意,无字符/空白字符/制表符都算作”空”文本;文本可以跨行,比如下面,是一条文本,而不是三条;文本支持字符串,字符串为成对的单引号(')或者成对的双引号(“),字符串可能出现用转义字符()处理的单双引号(“your input is””)和转义字符本身。支持注释,可以出现在字符串之外的任意位置注释以”–“开头,到换行结束。

2026-01-17 07:44:01 893

原创 天然蓄水库

公元2919年,人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天热蓄水库,如何选取水库边界,使蓄水量最大?要求:山脉用正整数数组s表示,每个元素代表山脉的高度。选取山脉上两个点作为蓄水库的边界,则边界内的区域可以蓄水,蓄水量需排除山脉占用的空间蓄水量的高度为两边界的最小值。如果出现多个满足条件的边界,应选取距离最近的一组边界。

2026-01-17 07:43:36 658

原创 volatile 选型对比篇 —— 与 synchronized/Atomic 类的核心差异

在实际开发中,并发编程的需求往往更加复杂:有时需要保证原子性,有时需要兼顾性能,这时候就需要在 volatile 、 synchronized 、 Atomic 类之间做出选择。本篇文章将从核心特性、底层实现、适用场景三个维度,全面对比三者的差异,帮你建立清晰的选型决策逻辑。

2026-01-16 08:40:28 1097

原创 volatile 实战应用篇 —— 典型场景

本篇文章将聚焦 volatile 的实战应用,带你掌握它的核心适用场景、避坑指南,以及与其他同步方案的性能对比。

2026-01-16 08:40:02 1054

原创 volatile 底层原理篇 —— 内存屏障与 JMM 交互机制

 本篇文章将带你深入底层,从 Java 内存模型(JMM)的核心规则出发,揭秘 volatile 的实现原理 —— 内存屏障 。

2026-01-15 18:05:40 1257

原创 无向图染色

给一个无向图染色,可以填红黑两种颜色,必须保证相邻两个节点不能同时为红色,输出有多少种不同的染色方案?

2026-01-15 18:04:58 566

原创 volatile 基础认知篇 —— 从入门到核心特性

在 Java 并发编程领域,volatile 是一个高频出现的关键字,它常常与 synchronized 一同被提及,却又有着截然不同的定位和作用。很多开发者在初学时容易混淆两者的适用场景,甚至误以为 volatile 可以替代 synchronized 解决所有线程安全问题。本文将从并发编程的核心痛点出发,带你入门 volatile ,掌握它的核心特性、基本用法,以及与 synchronized 的本质区别。

2026-01-14 07:58:35 797

原创 贪吃的猴子

一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香蕉,每次都只能从行的开头或者末尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉。

2026-01-14 07:57:58 726

原创 书籍叠放问题

书籍的长、宽都是整数对应 (l,w)。如果书A的长宽度都比B长宽大时,则允许将B排列放在A上面。现在有一组规格的书籍,书籍叠放时要求书籍不能做旋转,请计算最多能有多少个规格书籍能叠放在一起。

2026-01-13 16:23:53 483

原创 ReentrantLock vs synchronized:性能对比与选型策略

本文将从功能特性对比 、 多版本性能测试 、 核心选型策略三个维度,为开发者提供清晰的锁选择依据,实现 “场景匹配、性能最优” 的并发编程目标。

2026-01-13 16:23:37 1201

原创 synchronized高频考点模拟面试过程

本文详细探讨了Java并发编程中synchronized关键字的核心概念与应用。synchronized通过保证原子性、可见性和有序性解决线程安全问题,具有三种用法:实例方法锁、静态方法锁和代码块锁。其底层实现依赖对象头MarkWord和monitor机制,JDK1.6引入偏向锁、轻量级锁和重量级锁优化性能。文章还分析了锁升级流程、死锁预防方法,对比了synchronized与volatile、ReentrantLock的异同,并提供了线程安全单例模式的实现方案。

2026-01-12 23:19:14 610

原创 竖直四子棋

竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。一方的4个棋子横、竖或者斜方向连成一线时获胜。现给定一个棋盘和红蓝对弈双方的下子步骤,判断红方或蓝方是否在某一步获胜。

2026-01-12 23:18:34 1037

原创 ReentrantLock实战:典型应用场景与避坑指南

本文将从典型应用场景 、 实战避坑指南 、 性能优化最佳实践三个维度,结合真实业务案例,帮大家打通 “理论” 到 “实战” 的最后一公里,让 ReentrantLock 真正成为解决并发问题的利器。

2026-01-10 14:43:47 1072

原创 士兵过河问题

一支N个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河。敌军在T的时长后到达河面,没到过对岸的士兵都会被消灭。现在军队只找到了1只小船,这船最多能同时坐上2个士兵。当1个士兵划船过河,用时为 a[i];0 <= i < N当2个士兵坐船同时划船过河时,用时为max(a[j],a[i])两士兵中用时最长的。当2个士兵坐船1个士兵划船时,用时为 a[i]*10;a[i]为划船士兵用时。如果士兵下河游泳,则会被湍急水流直接带走,算作死亡。请帮忙给出一种解决方案,保证存活的士兵最多,且过河用时最短。

2026-01-10 14:43:27 721

电子图书馆网站课程设计

网站的建设要求能接入Internet;站点的设计要求有100个以上的站点,内部采用1000M主干网,100M到点;至少要划分4个以上的子网;站点需要提供DNS、DHCP、WEB、FTP等服务;编写简单的WEB主页。

2011-04-22

50个典型应用电路实例详解

50个典型应用电路实例详解 详细讲解了每个电路的原理及设计方法

2011-04-22

数电课程设计之数字电子钟的设计

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

2011-04-22

图书管理系统课程设计

本论文的第一章简要地综述图书(销售)管理系统的开发背景和实现该系统所需的功能;第二章是对系统的需求进行综合地分析;第三章从系统功能设计、数据库设计和界面设计等方面详细介绍该系统的设计;第四章介绍相关技术与工具和主要程序实现及数据库的备份;第五章讨论系统测试方法和该系统的不足之处;第六章为本次毕业设计的总结及学习心得。

2011-04-22

课程设计之电子万年历设计

本系统采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LED显示电路、键盘电路,使人机交互简便易行,此外结合音乐闹铃电路、看门狗和供电电路。本方案设计出的万年历可以显示日期时间、世界时、农历,设置闹铃功能。

2011-04-22

数字电子电路课程设计双路防盗报警器

该报警器适用于家庭防盗,也适用于中小企业事业单位。其特点是灵敏、可靠,一触即发,可以立即报警;也可以延时1-35秒再报警,以增加报警的突然性与隐蔽性。报警时除可以发出类似公安警车的报警声之外,两只警灯还可以同时交替闪亮,增加对犯罪分子的威慑气氛。

2010-06-28

计算机校园网络课程设计

校园网最终必须是一个集计算机网络技术、多项信息管理、办公自动化与信息发布等功能于一体的综合信息平台,并能够有效促进现有的管理体制与管理方法,提高学校办公质量与效率,以促进学校整体教学水平的提高

2011-04-22

课程设计VB图书管理系统(BS和CS完整版)(附源码)

图书管理系统是典型的信息管理系统,其开发主要方面包括前台的应用程序的开发和后台数据库的建立和维护。本图书管理系统分为两个版本,分别为 浏览器/服务器版 和 客户端/服务器版。浏览器/服务器版的图书管理系统采用的是Jsp + JavaBean两层开发模式,客户端/服务器版采用微软公司的Visual Basic 6.0 工具进行开发。作为图书管理系统的核心,数据库系统采用了微软公司功能强大的Microsoft SQL Server 2000作为数据库服务器。开发过程中不断修改和改进,最终形成界面美观、功能实用、操作简便的图书管理系统。

2011-04-22

课程设计之Java版的图书管理系统

课程设计之Java版的图书管理系统里面有课程设计的源代码和论文。都有详细的说明。

2011-04-22

J2ME地图编辑器mappy

编辑地图既方便又实用,里有部分地图样品,供大家参考以及编辑其他的地图。

2010-03-26

数据结构课程设计八皇后源代码

(1)巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。 (2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软 件设计的能力。 (3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设 计的基本能力。

2011-04-22

空空如也

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

TA关注的人

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