- 博客(89)
- 问答 (1)
- 收藏
- 关注

原创 从保研到大厂:如何选择方向、获取信息与规划学习路径?【就业路线分享】
先说一下本人bg:985计算机本科,在放弃保研以后参加秋招,拿到了美团、京东以及华为等大厂的offer,方向是C++/Java后端开发。很多人可能被当前铺天盖地的就业困难报道搞得不知所措,特别是本科xdx,“我该读研还是就业呢?”、“我想就业,但是我现在什么都不会,我也不知道我该怎么学”,这些都是大一大二的同学经常会困惑的问题。本篇文章创作的初衷就是帮助对于就业不太了解的同学了解就业目前现状以及找到自己的路。
2025-03-20 10:30:00
974

原创 从放弃985计科保研到秋招进大厂,我是怎么做的?【秋招经验分享】
先来介绍一下我自己,bg为985计算机本科,我在放弃了计科保研以后,成功拿到了美团等大厂研发岗的offer。目前秋招已经接近尾声了,我想记录一下这段时间的秋招感悟和经验,并且给和我境遇相同的同学一些参考。下面详细讲述一下我的心路历程以及秋招感悟。
2024-11-05 11:44:46
1047
6
原创 【JVM】JVM调优实战
本文详细介绍了JVM调优的实战步骤和案例分析,涵盖性能监控、问题排查、堆内存优化、垃圾回收器选择、JIT编译优化等内容。通过调整堆大小、选择合适的垃圾回收器,可以显著提升系统吞吐量和响应时间。文章还探讨了逃逸分析、标量替换等JIT优化技术对减少GC压力的作用,以及如何通过JMeter压测和工具分析定位性能瓶颈。案例包括调整新生代与老年代比例、排查线程死锁、优化G1GC并发线程数等,展示了如何根据业务负载合理配置JVM参数。最后,文章针对日均百万订单的高并发场景,提出了通过水平扩容和优化内存分配策略来应对。
2025-04-10 18:52:04
1453
原创 【JVM】OOM实例分析
本文系统解析了Java四大内存溢出场景及解决方案:堆内存溢出由大对象分配或内存泄漏引发,通过MAT分析堆转储定位问题;元空间溢出多因动态代理类暴增,需启用类缓存并监控加载状态;GC超限异常反映GC效率低下,结合日志与堆转储排查常驻对象;线程创建失败受系统线程数限制,需调整Xss参数及内核配置。各案例均配套JVM参数(如-XX:+HeapDumpOnOutOfMemoryError)、诊断工具(MAT/JVisualVM)和修复策略(代码优化/资源控制),为OOM问题提供从定位
2025-04-10 10:30:00
985
原创 【JVM】GC日志分析
GC日志分析对JVM性能调优至关重要。本文先介绍GC日志基础,包括常用参数如 -verbose:gc、-XX:+PrintGC等,以及时间戳记录、日志输出控制和高级内存监控等配置。然后详细剖析GC日志格式,按字段解释其含义,并给出Minor GC和Full GC日志的解析示例。最后推荐GCEasy和GCViewer等可视化分析工具,它们能将日志转化为直观图表,助你轻松掌握JVM内存使用、垃圾回收情况等关键信息,为性能优化提供有力支持。
2025-03-29 10:30:00
785
原创 【JVM】运行时参数
本文全面解析了JVM运行时参数,涵盖标准参数、-X参数、-XX参数的定义、特点及常见示例,详细阐述了在Eclipse、IDEA、运行jar包、Tomcat等不同环境下的添加方法,深入介绍了常用参数选项,包括内存设置、垃圾收集器选择、GC日志等,并给出了通过Java代码获取JVM参数的示例。内容丰富实用,适合Java开发者学习参考。
2025-03-27 10:30:00
1700
原创 【JVM】监控及诊断工具——GUI篇
JVM监控及诊断GUI工具通过可视化交互界面,帮助开发者实时观测运行时状态(如堆内存、线程、GC行为),快速定位性能瓶颈(如内存泄漏、CPU热点、锁竞争),并支持对堆转储文件(Heap Dump)的深度离线分析。相较于命令行工具(如jstat、jmap),GUI工具显著降低了操作门槛,提供多维度数据关联与图形化根因推理能力,成为JVM调优的核心手段。
2025-03-26 10:30:00
622
原创 【JVM】监控及诊断工具——命令行篇
JVM(Java Virtual Machine,Java虚拟机)是Java应用程序运行的基础环境。随着应用程序规模的增大,性能问题逐渐显现,开发者和运维人员需要通过一系列的监控和诊断工具,来分析和优化JVM的运行状态。这些工具能够提供有关内存使用、线程状态、垃圾回收情况等详细的信息。本文将介绍一些常用的JVM命令行监控及诊断工具,以及如何使用它们来提升应用程序性能。
2025-03-15 10:30:00
1497
原创 【JVM】性能监控与调优概述篇
本文阐述了JVM性能监控与调优的重要性,分析了生产环境中的常见问题,如高频繁的Full GC、响应时间变长、内存溢出、线程饥饿或死锁等,并指出调优可减少系统停顿、优化内存使用、提高并发能力和降低资源消耗。调优需关注JVM内存、CPU使用率、GC日志等监控依据,遵循发现问题、排查问题、解决问题的步骤,通过调整垃圾回收器、堆内存、线程池等进行性能调优,同时需平衡停顿时间、吞吐量、并发数和内存使用等性能指标间的关系。
2025-03-14 12:03:44
1434
原创 【JVM】类的加载过程详解
类的加载过程包括加载、链接、初始化、使用和卸载五个阶段。加载阶段将类的字节码文件读入内存并构建类模板对象;链接阶段包括验证、准备和解析三个子阶段,确保类的正确性和为静态变量分配内存;初始化阶段执行静态代码块和静态变量赋值;使用阶段通过实例化、调用方法等方式使用类;卸载阶段在类不再被引用且满足条件时,从内存中移除类的元数据和相关对象。整个过程由JVM规范严格定义,确保类的正确加载和使用。
2025-03-13 10:30:00
956
原创 【JVM】字节码指令集
这篇文章介绍了字节码指令集的基本概念、执行模型和指令结构。它详细阐述了字节码指令的组成,包括操作码和操作数,并讨论了不同数据类型的处理方式。指令分为多种类型,如加载与存储指令、算术指令、类型转换指令等,涵盖了从局部变量操作到栈管理、常量池访问等功能。文章还讲解了局部变量表与操作数栈的作用,提供了常见指令的示例,如iconst、bipush、ldc等,重点说明了类型转换指令及其可能的精度损失。
2025-03-07 10:30:00
1065
原创 《开口之后》思维导图:破解沟通困境的核心逻辑
如果这篇文章有帮到你,还请给我一个大拇指👍和小星星⭐️支持一下白晨吧!喜欢白晨【思维导图系列】系列的话,不如关注👀白晨,以便看到最新更新哟!!!我是不太能熬夜的白晨,我们下篇文章见。
2025-01-08 12:10:35
376
原创 为什么你总是说不出口?破解沟通难题的深度指南
沟通的最终目的,并不是成为一个语言大师,而是让我们的内在世界和外在表现一致。当你能够坦然面对自己的情绪和需求,并用真诚的方式表达出来,沟通自然会变得更加顺畅。《开口之后》告诉我们,沟通并不是某个瞬间的行为,而是一种持续的状态。只要我们愿意从“看清事实”“选择善意”“接纳情绪”开始,一步步改善,沟通中的难题就会慢慢消解。
2025-01-08 11:55:11
1087
原创 【Redis】Hash介绍与应用详解
Redis Hash是一个键值对集合,类似于传统编程语言中的哈希表或字典。Redis Hash通过哈希表实现。这意味着它适合用于存储对象,比如一个用户的信息,其中每个字段(如用户名、年龄、邮箱等)都作为键值对存储在哈希表中。每个哈希表可以包含任意数量的字段,并且每个字段都有唯一的键。Redis中本来就是每一个key对应一个value,那Hash类型和String类型的差别在哪呢?在 Redis 中,虽然每个key对应一个value,但是value的类型可以有多种,其中之一就是Hash类型。
2024-06-05 10:39:17
1281
2
原创 【Redis】List源码剖析
在Redis的发展历程中,List数据类型的底层实现经历了几次重要的演变,从最初的双向链表到后来的快速列表。在Redis的早期版本(2.2及以前),List类型的数据结构采用的是双向链表(LinkedList)。这种实现方式的主要优点在于其插入和删除操作的时间复杂度为O(1),非常高效,特别适合频繁插入和删除的场景。然而,每个节点需要额外的指针存储空间,导致内存开销较大,并且对于大量数据的线性扫描性能较低。随着Redis的发展,开发团队意识到需要一种更节省内存的解决方案。因此,在。
2024-06-01 11:00:00
1185
2
原创 【Redis】ziplist与listpack源码剖析:Redis数据存储的演进与优化
ziplist是一种紧凑的字节数组数据结构,适用于存储小型列表。zlbytes:总字节数(4字节)。zltail:到列表尾节点的偏移量(4字节)。zllen:节点数量(2字节)。entry:实际存储的节点。zlend:结束标记(1字节,值为 0xFF)。每个节点包括prevlen(前一个节点的长度)、encoding(编码方式)和entry-data(实际存储内容)。
2024-05-30 15:02:48
1421
1
原创 【Redis】List介绍与应用详解
Redis List是字符串值的链表。Redis List是通过双向链表实现的。这意味着,即使列表内有数百万个元素,在列表头部或尾部添加新元素的操作也能在恒定时间内完成。使用 LPUSH 命令在有 10 个元素的列表头部添加一个新元素的速度,与在有 1000 万个元素的列表头部添加一个元素的速度相同。限制Redis List的最大长度为232−12^{32} - 1232−1 (4,294,967,295) 个元素。性能访问其头部或尾部的列表操作是 O(1),这意味着它们非常高效。
2024-05-23 11:00:00
990
1
原创 【Redis】String源码剖析:512MB大字符串的内存管理之道
Redis中,String类型底层实现的数据结构为int和SDS(简单动态字符串)。为什么不使用C原生的字符数组,而要使用SDS呢?获取字符串长度C字符串获取长度会使用strlen函数,时间复杂度为O(n),其获取字符串长度的逻辑如下图所示:而SDS直接用一个类项记录了字符串长度,获取长度的时间复杂度为O(1)。字符串溢出C字符串对于越界检查不是很完善,会出现内存踩踏的问题:而SDS会记录可用空间,在需要扩容时自动扩容。存储特殊类型数据。
2024-05-19 11:54:21
902
1
原创 【Redis】String的介绍与应用详解
String是Redis最基本的类型,一个key对应一个value。key为标识符,value为key对应的值。String是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。String是Redis中最基本的数据类型,采用key-value形式存储。它是二进制安全的,可以存储任何类型的数据,如图片或序列化的对象。
2024-05-17 15:12:33
1031
3
原创 【Redis】Redis键值存储
首先要强调一点:Redis是key value类型的数据库,Redis所说的数据类型都是key value中的value的数据结构,而key都是字符串。在本文中,我们对Redis的键值存储进行了全面的概述和介绍。首先,我们了解了Redis的五大基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和Zset(有序集合),并探讨了它们各自的特点和用法。
2024-05-15 11:00:00
1546
原创 【Redis】Redis入门概述
首先,我们先来了解什么是Redis。根据官网定义:Redis 是一个内存数据存储,被数百万开发人员用作缓存、向量数据库文档数据库流引擎和消息代理。Redis 具有内置复制和不同级别的磁盘持久性。它支持复杂的数据类型(例如,字符串、哈希、列表、集合、排序集和 JSON),并在这些数据类型上定义了原子操作。首先,我们可以注意到Redis是一个内存数据库,也就是说,它的数据都是直接加载到内存中的。
2024-05-13 11:00:00
1055
原创 【程序员必修】Shell脚本
大家好呀,我是白晨。今天要为大家带来的是一种简单且实用的脚本语言——Shell脚本。Shell脚本是一种在Unix、Linux和其他类Unix系统上编写的脚本语言。它允许您以一种简单而又强大的方式与操作系统进行交互。无论您是系统管理员、开发人员还是普通用户,掌握Shell脚本都是一个有用的技能。在本教程中,我们将从头开始学习Shell脚本编程。Shell脚本的基础知识:了解Shell脚本的基本语法、变量、条件语句和循环等。实用示例:通过实际的示例演示如何编写Shell脚本。高级主题。
2024-04-19 11:00:00
1007
原创 【蓝桥杯】蓝桥杯算法复习(五)
本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。本期是本系列的最后一期,因为在写文章的明天就要蓝桥杯比赛了,祝愿各位都能取得自己满意的成绩🤩。数学期望欧拉函数最短路贪心如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。
2024-04-13 11:00:00
862
原创 【蓝桥杯】蓝桥杯算法复习(四)
本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。区间DP树形DP快速幂最大公约数分解质因数矩阵乘法组合计数如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。如果大家喜欢这个系列,还请大家多多支持啦😋!
2024-04-07 11:00:00
687
原创 【蓝桥杯】蓝桥杯算法复习(三)
本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。如果你想系统性进行复习,可关注白晨的蓝桥杯专栏进行学习。并查集哈希单调栈树状数组状态压缩DP线性DP背包问题如果解析有不对之处还请指正,我会尽快修改,多谢大家的包容。如果大家喜欢这个系列,还请大家多多支持啦😋!
2024-03-28 11:00:00
803
原创 【项目】基于MiniOS的CFS调度和增量式sleep
实现CFS调度策略:参考Linux中实现的完全公平调度算法编写nice系统调用控制不同进程的分配时间片权重增量式sleep,通过维护sleep队列中的等待时间增量实现O(1)弹出,插入为O(n)的sleep实现编写测试程序:创建多个进程,设置每个进程的nice值,观察调度的变化。增加每个进程的统计信息,包括进程的nice值、运行时间等。让多个进程使用增量式sleep等待不同的时间,观察它们被唤醒的时间顺序。在大规模并发的情况下运行程序,检查CFS调度和增量式sleep的性能表现。
2024-03-23 11:00:00
1312
原创 【蓝桥杯】蓝桥杯算法复习(二)
本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。更多本系列文章见蓝桥杯专栏。如果你是新手,可以参考白晨的算法专栏进行学习。
2024-03-21 11:00:00
1405
原创 【蓝桥杯】蓝桥杯算法复习(一)
本文适合有一定算法基础,但是由于各种原因已经很久没有敲代码的同学。本文以复习+练习为主,旨在通过练习算法题快速复习已经遗忘的算法。即使不是参加蓝桥杯的同学,如果符合上面的条件,依然可以参考本文进行复习。如果你是新手,可以参考白晨的算法专栏进行学习。
2024-03-09 11:00:00
1422
原创 【设计模式】设计模式概述
大家好,我是白晨。不知不觉已经🕊了很久了,白晨在这里给大家道个歉。本次为大家带来的是全新的专栏——设计模式,许多同学学习了面向对象的概念,但是面向对象在实际开发中到底好不好用、到底如何使用,这个问题可能很多人都无法回答。同时,在现在的面试中,设计模式被提及的概率越来越高,“你都使用过什么设计模式?”、“在xxx中都使用了哪些设计模式“,这些问题相信有过面试经历的人都会被问到,但是即使是一个编程的老鸟,做到准确无误的使用设计模式和理解设计模式也是非常困难的。
2023-10-20 10:00:00
321
原创 【程序员必修】正则表达式
大家好,我是白晨🤤。今天要和大家分享的是一种非常强大的工具,它广泛的应用于Linux、JS等领域,可以帮助你更快地处理和分析文本数据,也是一个优秀的程序员的必修课,它就是——正则表达式。正则表达式主要用来匹配各种各样的字符串,包括数字、字母、符号等等,并且正则表达式可以非常精确地匹配某个字符串,而不会匹配到其他不需要的字符串。此外,它还可以匹配多个相同的字符串,而不需要手动一个一个地匹配。最重要的是,正则表达式可以根据需要进行扩展,以适应更多的应用场景。
2023-07-31 10:00:00
920
13
原创 【数据结构与算法】常用数据结构(二)
大家好,我是白晨。本次又为大家带来的是常用数据结构的模拟实现,主要用于在算法比赛中快速实现一种常用模拟实现。那为什么不用STL呢?首先,STL为了保证其接口的通用性以及要严格符合一个数据结构的定义,在使用时可能不是非常方便;其次,模拟实现的数据结构在运行速度方面是要快于STL的容器的。上篇文章常用数据结构(一)我们介绍了单链表、双链表、栈、队列以及堆这五种最常用的数据结构的模拟实现,本次白晨将在上篇文章的基础上为大家介绍5种更高级的常用数据结构——单调栈、单调队列、并查集、Trie以及哈希表。
2023-05-08 10:30:00
906
7
原创 【数据结构与算法】常用数据结构(一)
大家好,我是白晨。本次为大家带来的常用数据结构的模拟实现,主要用于在算法比赛中快速实现一种常用模拟实现。那为什么不用STL呢?首先,STL为了保证其接口的通用性以及要严格符合一个数据结构的定义,在使用时可能不是非常方便;其次,模拟实现的数据结构在运行速度方面是要快于STL的容器的。本篇文章将详细介绍单链表、双链表、栈、队列以及堆这五种常见数据结构的模拟实现,由于本次是面向新人的教程,白晨使用大量图片、动图和语言描述详细拆解一个模拟数据结构的实现。
2023-04-23 10:00:00
623
8
原创 【算法】图的遍历
本次白晨带来的是图论中最基础,但也最重要的部分——图的遍历。众所周知,图的存储方式有一般有邻接表和邻接矩阵两种,这两种存储方式的遍历方式也各不相同,但是无非也就是访问出边和入边的方式不同罢了(邻接矩阵之间访问当前行/列,邻接表则访问对应节点的链表),思想还是相同的。本文中对于邻接表的实现方法不过多介绍(以后会专门讲解我这种实现),各位只需要用自己擅长的实现即可,主要的题目中的思想。
2023-03-27 10:00:00
1114
17
原创 【算法】算法基础入门详解:轻松理解和运用基础算法
本次白晨想要分享的是新手学习必会的基础算法,由于这篇文章是新手向的,所以白晨这次对于算法思想尽量讲解的细致生动,代码实现尽量简洁易懂,同时我会贴上练习算法的题目链接,大家看完算法思路一定要自己去动手敲一遍,争取能把基础算法背下来。算法的代码风格是偏向于快速实用的,没有像工程向代码一样严谨缜密、缩进和换行严格要求,两种代码风格各有优势,本篇文章大多数算法代码采用算法风格。
2023-03-11 10:30:00
3662
9
原创 【算法】最短路算法
这次为大家分享的是图论中的最短路算法。考虑到最短路算法的复杂性以及本文新手向的教程,本次算法讲解列举了大量例子并且配上了大量动图。篇文章所有的代码实现都是算法向的,以快速实现和效率为主,如果出现算法向的代码实在看不懂,可以参考白晨的工程向实现的代码
2023-02-25 10:30:00
3758
18
原创 【数据结构与算法】并查集
大家好,我是白晨,这次为大家带来的数据结构是并查集,这是一种能够快速合并两个集合以及快速查询两个元素是否在一个集合中,时间复杂度在大量查询的情况下可以达到O(1)的数据结构,由于实现思路简单,代码短,性质好,经常会在算法题中用到。同时,并查集也在与图相关的算法中出现过很多次,例如,最小生成树Kruskal算法就使用了并查集。并查集 (英文:Disjoint-set data structure,直译为不交集数据结构)是一种数据结构 ,用于。
2023-01-31 10:30:00
3265
4
原创 【数据结构与算法】Trie
本次要带大家认识的的是Trie,这是一个便于快速查询字符串等数据出现次数的数据结构,在算法竞赛中也是一个比较好用的结构。虽然使用也能实现类似功能,但是Trie更加节省空间并且在存储数字等结构,它还有无法代替的优势,这里先买个关子,在下面文章中我会详细讲解。Trie字典树又叫前缀树(prefix tree),用以较快速地进行单词或前缀查询。Trie树本质上就是一棵多叉树,用来存储字符串或者其他数据。
2023-01-12 10:30:00
1720
32
原创 【算法】哈希表
本次为大家带来的是哈希表在算法中的应用与实践,主要讲解哈希表的思路以及在算法题中的应用,本篇文章由于是面向算法党的,对于工程实现部分讲解较为粗糙,以后会在STL中详细讲解工程实现。当然,本篇文章会给出哈希表的两种快速实现,希望大家能将这两个模板理解记忆,方便面试中或者算法竞赛中快速实现。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。
2023-01-07 10:30:00
3108
26
原创 西北工业大学算法实验机试复习
本篇文章送给每一个正在复习算法实验的同学❤️,愿大家都能满分过实验。本篇文章包含了常见算法题目,方便大家查漏补缺。算法实验不能光背代码,理解其中的意义,并且能实现出来才算真的掌握。能找到实验OJ的题目我会给出链接,一定要自己敲上一回,没有在线OJ的也要自己在本地IDE上实现一下。这里要提醒一句,如果你是西工大考生,西工大算法实验考试是在做实验的网站上的,编译
2022-12-06 10:15:00
1832
16
原创 西北工业大学算法理论考试复习
此文章献给正在准备算法考试的学弟学妹,祝你们都能满绩过算法❤️。大O算法定义算法是求解问题的一系列计算步骤,用来将输入数据转换成输出结果。输入性输出性确定性可行性有限性。
2022-11-20 21:42:39
1121
4
空空如也
gitee仓库突然变私有并且无法开源,之前上传的图片现在全部无法外链打开,如何解决?
2022-05-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人