- 博客(92)
- 收藏
- 关注
原创 大白话读懂java对象创建的过程
在 JVM 中对象的创建,我们从⼀个 new 指令开始:⾸先检查这个指令的参数是否能在常量池中定位到⼀个类的符号引用检查这个符号引⽤代表的类是否已被加载、解析和初始化过。如果没有,就先执⾏相应的类加载过程类加载检查通过后,接下来虚拟机将为新⽣对象分配内存。内存分配完成之后,虚拟机将分配到的内存空间(但不包括对象头)都初始化为零值。接下来设置对象头,请求头⾥包含了对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。
2025-03-20 20:50:27
405
原创 Java 代理模式:从静态代理到动态代理
闺蜜在这里就可以看作是新娘的代理对象,代理的行为(方法)是接收和回复新郎的提问。这样做的好处是,我们可以在不修改原目标对象的前提下,扩展目标对象的功能。代理模式不仅可以扩展目标对象的功能,而且在不修改原目标对象的情况下,可以增加一些我们自定义的操作。CGLIB 动态代理通过继承目标类来生成代理类,因此它可以代理未实现任何接口的类。:动态代理更加灵活,不需要针对每个目标类都创建一个代理类,且可以直接代理实现类。我们需要手动为每个目标类创建一个代理类,并在代理类中调用目标类的方法。在 JDK 动态代理中,
2025-03-14 20:27:29
988
原创 Android四大组件详解(大白话版)
1. Activity:负责展示用户界面,就像App的一个个“页面”,用户通过它与应用交互。 2. Service:在后台默默干活的打工人,比如播放音乐或下载文件,没有界面但能长时间运行。 3. BroadcastReceiver:像“收音机”一样接收系统或应用发出的广播消息,比如电量低或网络变化,然后做出响应。 4. ContentProvider:是“数据管家”,管理应用的数据并提供统一接口,让其他应用也能访问这些数据。
2025-03-14 17:13:03
1055
原创 Android开发大牛养成-基础动画与复杂动画实现
Android 动画主要有属性动画、补间动画和帧动画。属性动画可直接改变对象属性,如平移、缩放、旋转、透明等,通过 ValueAnimator 或 ObjectAnimator 实现,可设置时长、插值器等。补间动画包括平移、旋转、缩放、透明度变化,作用于视图,不改变实际属性,有 Animation 类及子类。帧动画则是按顺序播放一系列图片,通过 AnimationDrawable 实现。动画使用时需注意性能优化,避免内存泄漏,合理设置动画参数,以实现流畅且美观的视觉效果。
2025-03-02 18:35:28
825
原创 HTTP 常见状态码技术解析(应用层)
HTTP 状态码是 HTTP 协议中用于描述请求处理结果的三位数字代码,分为五大类:`1xx`(信息性)、`2xx`(成功)、`3xx`(重定向)、`4xx`(客户端错误)、`5xx`(服务端错误)。常见状态码如 `200 OK`(请求成功)、`404 Not Found`(资源未找到)、`500 Internal Server Error`(服务器内部错误)等,分别用于表示请求成功、客户端问题或服务端故障。理解状态码的分类及语义有助于快速定位问题、优化用户体验并遵循 RESTful 设计规范。开发者应结合
2025-02-21 21:37:34
1328
原创 TCP传输可靠性保障:理论讲解→实战面试解析
在数据传输比较顺利,没有太多丢失和乱序的时候,就用累计确认,简单高效地让发送方知道一大段数据都收到了。而当出现数据丢失或者乱序的情况,接收方就用选择确认,给发送方详细地说明具体哪些数据收到了,哪些没收到,让发送方只重新发送真正丢失的数据。有时候,接收方在收到数据后,不用专门马上发一个确认消息给发送方,而是可以趁着自己要给发送方发送数据的时候,顺便把这个确认信息带过去,这就是。A:通过三重确认排除网络抖动因素:1个可能是乱序,2个可能是临时延迟,3个基本确认丢包(概率学验证)想象一下网购时商品运输需要。
2025-02-21 13:05:52
861
原创 TCP 三次握手与四次挥手:构建与终止可靠通信的核心机制
TCP 协议通过三次握手和四次挥手机制,实现可靠连接建立与优雅连接终止,确保数据无损、有序传输。三次握手旨在同步双方初始序列号,验证双向通信能力,客户端与服务端通过交换 SYN、SYN-ACK、ACK 报文,确认彼此发送与接收能力,以最小代价建立全双工可信信道,抵御网络不稳定与恶意攻击。四次挥手则是独立关闭双向数据流,确保传输完整性,主动关闭方发送 FIN,被动方响应 ACK,被动方完成数据发送后再发 FIN,主动方以 ACK 响应并进入 TIME_WAIT 状态,防止报文丢失导致连接残留。
2025-02-20 15:57:08
1383
3
原创 深入浅出Java虚拟机(JVM)核心原理
比如,它会自动帮我们分配内存来存储程序运行时产生的数据,当这些数据不再使用时,JVM 还会自动把它们占用的内存回收掉,这样就不用担心内存不够用或者内存泄漏的问题。(3)虚拟机主要的 5 大块:方法区,堆都为线程共享区域,有线程安全问题,栈和本地方法栈和计数器都是独享区域,不存在线程安全问题,而 JVM 的调优主要就是围绕堆,栈两大块进行。JVM 就负责运行这些字节码文件,它会把字节码翻译成计算机硬件能懂的指令,让程序在不同的操作系统上都能顺利运行。的缩写,简单来说,JVM 就像是一台。
2025-02-20 14:34:14
1955
原创 JVM类加载过程详解:从字节码到内存的蜕变之旅
类加载过程就像一座精密的工厂流水线,将原材料(字节码)加工成可运行的类对象。加载的类可能被卸载。:加载工作由类加载器完成,采用双亲委派机制确保安全。5. 初始化(Initialization):真正的诞生时刻。3. 准备(Preparation):内存分配的预演。将其转化为JVM内存中的数据结构,才能被程序调用。码字不易,希望可以一键三连,我们下期文章再见!1. 加载(Loading):字节码的搬运工。:由系统类加载器加载的类几乎不会被卸载,而。时,最终由启动类加载器完成。一、类加载的意义与整体流程。
2025-02-19 15:59:59
1499
原创 JVM类文件结构深度解析:跨平台基石与字节码探秘
类文件是Java生态的通用中间表示,其精巧设计体现了计算机科学中抽象与实现的完美平衡。掌握这一结构,是我们开发者通向高级Java开发的必经之路!
2025-02-19 14:45:52
982
原创 JVM中的线程池详解:原理→实践
本文详细讲解了JVM中的线程池原理与实践,包括线程池的必要性、与JVM内存模型的关系、核心实现、监控与调优、常见问题排查以及线程池的生命周期管理。文章指出,合理配置和使用线程池是保障系统稳定性的关键,开发者应根据业务场景选择合适的线程池配置,实施全面监控,定期进行压力测试,并及时清理线程资源
2025-02-17 21:19:49
1622
5
原创 Java内存模型(JMM)深度解析:从并发问题到解决方案
本文围绕 Java 内存模型(JMM)展开,深入探讨了其相关概念、原理及在并发编程中的应用,具体内容摘要如下:JMM 产生背景:多核 CPU 时代,并发编程可提升性能,但带来可见性、原子性和有序性三大问题。根源在于 CPU 缓存机制及指令重排序,为解决这些问题引入 JMM。JMM 架构设计内存抽象模型:定义主内存和工作内存,线程间通信需先将本地内存修改同步到主内存,再从主内存读取。不过多线程操作共享变量可能引发线程安全问题。内存交互协议:通过 lock、unlock、read 等 8 种原子操作保证
2025-02-17 20:38:50
1050
原创 基于 2-gram 模型的智能宋词生成系统实现与原理
本文详细介绍了一个宋词生成系统的设计与实现。该系统利用 2-gram 语言模型,结合词牌规则,实现了不同词牌宋词的自动生成。同时,系统还具备词语解释查询、生成结果导出以及历史记录查看等功能。文章从系统架构、原理、代码实现等方面进行了阐述,旨在让读者全面了解该项目的工作机制。
2025-02-16 17:21:17
902
原创 基于N-gram模型的中文文本分析系统设计与实现
在宋词语料上的实验表明,系统不仅能够有效识别"东风"(157次)、"何处"(89次)等关键双字意象,还可通过三字词频分布揭示婉约派"无人会"(24次)、豪放派"千古事"(18次)等流派的用词特征。4.分别统计n-gram(n=1,2,3)的词频,存储到相应的数据结构,该数据结构包括词(词本身)和词的频度(出现次数)N-gram模型基于一个简单的假设:一个词出现的概率只与它前面的n-1个词相关,这个假设称为。对于bigram模型(二元),假设当前词的出现概率只依赖于它前面的一个词。
2025-02-16 15:44:28
955
原创 基于多元高斯分布的异常检测技术原理与实现
本文提出的基于多元高斯分布的异常检测方法,通过概率密度建模和阈值优化,实现了高效可靠的异常识别。代码实现中注重可视化分析和评估指标监控,为实际应用提供了重要参考。
2025-02-15 19:36:43
811
原创 Java并发中的CAS机制:原理、应用与挑战(通俗易懂版)
本文深入介绍了 Java 中的 CAS 机制。以银行账户转账为例,展示了其无锁操作策略。底层通过 `sun.misc.Unsafe` 类调用 CPU 指令实现,如 `AtomicInteger` 就基于此包装。不过,CAS 面临 ABA 问题、自旋开销和多变量原子性等挑战,分别可通过 `AtomicStampedReference`、自适应自旋等应对。在计数器、状态标志等场景适用性高,高并发下性能优于锁。使用时应优先用 JUC 原子类,警惕问题、控制自旋。未来有 VarHandle API、轻量级线程等演进
2025-02-14 22:15:37
1172
原创 基于改进K-Means算法的聚类分析与图像压缩应用研究
K-Means聚类作为无监督学习中的经典算法,在数据挖掘、模式识别等领域具有广泛应用。本文基于面向对象编程范式实现了一种改进的K-Means算法,并通过二维数据聚类和图像压缩两个典型案例验证其有效性。该实现融合了K-means++初始化策略、动态可视化、簇内平方和优化等多种改进措施,显著提升了传统算法的性能。簇:是一组相似的数据点的集合,在同一个簇中的数据点之间的相似度较高,而与其他簇中的数据点相似度较低。:通常使用欧氏距离来衡量数据点之间的相似度。对于两个数据点和。
2025-02-13 17:47:46
724
2
原创 2025.2.13 Android Studio下载安装配置教程(详细版)
引言作为全球占有率超过70%的移动操作系统,Android凭借其开放源代码特性与模块化架构,构建了覆盖智能手机、可穿戴设备、车机系统及物联网终端的庞大生态系统。本文将从系统架构开发范式到工具链全景解析Android技术体系,并深入剖析其官方集成开发环境Android Studio的核心能力,最后附带上Android Studio下载安装配置超详细教程,希望可以帮助大家减少一些安装配置环境上的麻烦,快速上手Android Studio!
2025-02-13 16:02:29
13842
7
原创 基于逻辑回归的二分类问题实现(附完整python代码)
线性回归旨在构建线性模型,通过权重和偏置预测连续输出值。模型公式通常为:其中,y 为预测输出,为输入特征,为模型参数。通过最小化预测值与真实值之间的误差,利用梯度下降等算法估计参数。
2025-02-12 15:51:10
1021
原创 互联网大厂面试高频题-操作系统部分
僵⼫进程⼀般发⽣有⽗⼦关系的进程中,⼀个⼦进程的进程描述符在⼦进程退出时不会释放,只有当⽗进程通过 wait() 或 waitpid() 获取了⼦进程信息后才会释放。然后,从待切换进程的PCB中读取其保存的上下文信息,加载到CPU的相应寄存器中,完成新进程的上下文恢复,最后CPU继续执行新进程的指令。线程:线程调度可以是基于进程的,也可以是独立的,线程之间的调度可能会相互影响,因为它们共享进程资源。:负责程序的执行,包括进程的创建、调度、同步、通信和终止,确保系统资源的高效利用和多个进程的协调运行。
2025-02-11 17:00:07
992
原创 SQL 大厂面试题目(由浅入深)
题目:查询员工姓名(name)及其所属部门名称(dept_name),表结构为 employees(id, name, dept_id)和 departments(id, dept_name)。题目:查询 employees 表中所有薪资(salary)大于 10000 且部门编号(dept_id)为 5 的员工姓名(name)和入职日期(hire_date)。题目:查询没有订单的客户(customers 表的 id 不在 orders 表的 customer_id 中)。
2025-02-10 23:24:54
4232
2
原创 互联网大厂中面试的高频计算机网络问题及详解
DDoS攻击,即分布式拒绝服务攻击,是一种网络攻击手段,其中多个攻击源同时向一个或多个目标发起攻击,或者一个攻击者控制了多个分布在不同地理位置的机器,并利用这些机器对受害者发起协同攻击。鉴于域名劫持通常在特定网络范围内有效,高级用户可通过配置网络设置,将DNS指向可信的服务器,例如,将计算机的首选DNS服务器地址设置为某个可靠的DNS提供商,以确保对目标网站的正常访问。,它不仅标识资源,还提供了找到该资源的方法,即它包含了如何访问资源的信息,如协议(http或https)和网络位置。
2025-02-10 22:41:31
1341
原创 MySQL索引深度解析:从原理到优化
当进行索引检索时,先通过 B+Tree 搜索算法在索引中找到指定Key,获取该Key对应叶子节点data域中的地址,再依据此地址到数据文件中读取相应的数据记录。表数据文件按照 B+Tree 结构组织,形成主索引,且该索引以数据表的主键作为key,叶子节点的data域保存完整的数据记录,这就是 “除主索引外的其他索引为辅助索引,辅助索引叶子节点的data域存储的是相应记录的主键值,而非数据地址。当对表中的数据进行增删改的时候,如果数据有索引,那么索引也需要动态的修改,会降低 SQL 执行效率。
2025-02-09 17:45:04
1050
原创 基于房价预测的线性回归算法原理与python实现(附源代码)
为了找到最小化代价函数 𝐽(𝜃)的参数 𝜃,可以使用梯度下降算法。梯度下降是一种迭代优化算法,其基本思想是沿着代价函数下降最快的方向更新参数。是重要的数据预处理步骤,可以调整数据特征的尺度,使得每个特征的范围大致相似,从而加速算法的收敛速度,提高算法的准确度。同时将结合房价预测的实际案例,从数学角度深入解析线性回归的原理及其Python实现。正规方程直接给出最优解,但计算复杂度为 𝑂(𝑛^3),对于特征维度很高的情况可能会很慢。将特征值转换为具有零均值(μ=0)和单位方差(σ=1)的分布。
2025-02-09 14:19:48
1055
原创 一文读懂MySQL基础
关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系数据库具备以下核心特征数据以行(记录)和列(字段)的矩阵形式存储表结构需预先定义(Schema on Write)Atomicity(原子性):事务操作要么全部成功,要么全部失败Consistency(一致性):保证数据状态符合预定义规则Isolation(隔离性):并发事务互不干扰Durability(持久性)
2025-02-08 16:04:04
838
原创 mysql忘记密码解决方案(亲测有效 2025.2.8)
之前做一个课设项目时需要用到mysql,隔得太久远了,最近又在重温数据库的知识,想登录mysql,发现密码忘了。经常一番探索,现在整理成文章,帮助各位避坑!
2025-02-08 14:30:14
575
10
原创 数据库大牛养成之数据库设计
确定需要存储的数据,如书籍信息(书名、作者、出版社、价格等)、用户信息(用户名、密码、联系方式等)、订单信息(订单号、用户ID、订单日期、订单金额等)以及库存信息(书籍ID、库存数量等)。包括环境准备、数据库创建、用户和权限设置、表结构创建、数据迁移和加载、视图和存储过程的创建、数据完整性和约束设置、备份和恢复策略制定、性能优化、安全性设置、文档编制、测试、用户培训和上线准备等。其中,用户ID是用户表的主键,书籍ID是书籍表和库存表的主键,订单ID是订单表的主键,订单明细ID是订单明细表的主键。
2025-02-07 21:41:50
878
原创 技术面大牛养成之数据库
我们做一个项目的时候一定要试着画 ER 图来捋清数据库设计,这个也是面试官问你项目的时候经常会被问到的。ER 图全称是 Entity Relationship Diagram(实体联系图),提供了表示实体类型、属性和联系的方法。ER 图由下面 3 个要素组成:实体:通常是现实世界的业务对象,当然使用一些逻辑对象也可以。比如对于一个校园管理系统,会涉及学生、教师、课程、班级等等实体。在 ER 图中,实体使用矩形框表示。
2025-02-07 13:43:06
928
原创 Java语法糖详解
语法糖(Syntactic Sugar),也称语法糖衣。是指在编程语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用,能够让程序更加简洁,有更高的可读性,同时也更容易编写程序。我们所熟知的编程语言中几乎都有语法糖。比如python中的列表推导式、JavaScript 中的箭头函数、Go 语言中的多返回值、Java 中的 Lambda 表达式等等。比较有意思的是,在编程领域,除了语法糖,还有语法盐和语法糖精的说法。这里不展开叙述,读者可以自行查阅资料了解。2 语法糖处理流程解析。
2025-02-06 20:50:23
1496
原创 关系模型的数据结构及形式化定义
现实世界的实体以及实体间的各种联系均用关系来表示从用户角度,关系模型中数据的逻辑结构是一张二维表,行代表元组(记录),列代表属性(字段)2 相关定义(1)域(Domain):一组具有相同数据类型的值的集合。例如:整数、实数、介于某个取值范围的整数、指定长度的字符串集合、{‘男’,‘女’}等。{'男', '女'};1~120的整数;。(2)笛卡尔积(Cartesian Product)给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…
2025-02-06 15:44:42
763
原创 数据库技术基础
(1)数据(信息)数据:指已记录或可获取的事实,是数据库存储的最小单元。除文本、数字外,还有图形、图像、声音等。数据由于能为用户利用才被记录和保存的。信息:指用户处于某种目的以某种手段(活动)获取的数据。活动:数据搜索、数据处理、数据操纵。总结起来就是:例:电话号码本--->数据,张三的电话号码--->信息(2)数据库数据库指长期存储在计算机内、有组织、可共享的大量数据的集合。数据库的目的是将数据组织起来,以便用户直接从数据中获得信息。数据库的结构由数据库的元数据解释。
2025-02-05 20:58:50
1062
原创 技术面大牛养成之Linux
SATA 是一种串行接口,用于连接硬盘驱动器、光驱等存储设备。它是 ATA(Advanced Technology Attachment)的串行版本,具有更高的数据传输速率和更远的传输距离。
2025-02-05 14:42:50
577
原创 Java开发者必备知识之shell编程
Shell是一种具备特殊功能的程序,是使用者和kernel间的一个接口Shell脚本是纯文本文件Shell脚本通常以.sh作为后缀名,但不是必须Shell脚本是以行为单位的,在执行脚本的时候 会分解成一行一行依次执行Shell是一种功能强大的解释型编程语言通常用于完成特定的、较复杂的系统管理任务Shell脚本语言非常擅长处理文本类型的数简单来说“Shell 编程就是对一堆 Linux 命令的逻辑化处理”。
2025-02-04 17:49:39
974
原创 Java程序员必备的Linux核心概念与实战命令指南
Linux通过虚拟内存为每个进程提供独立的连续地址空间(32位系统4GB,64位系统理论16EB),实际物理内存通过MMU(内存管理单元)动态映射。对我们Java开发者而言,理解Linux内存管理机制是优化JVM性能、排查OOM(内存溢出)问题的关键基础。当物理内存不足时,内核将不活跃的内存页(Inactive Pages)写入Swap分区/文件,腾出空间给活跃进程。:Swap中的JVM堆内存访问会引发磁盘I/O,导致Stop-The-World时间激增。:实时进程和系统信息(重点关注PID目录)
2025-02-04 15:54:09
837
原创 Java序列化详解
在Java编程实践中,当我们需要持久化Java对象,比如把Java对象保存到文件里,或是在网络中传输Java对象时,序列化机制就发挥着关键作用。序列化:指的是把数据结构或对象转变为可存储、可传输的格式,常见的是二进制字节流;当然,像JSON、XML这类文本格式也可用于序列化。反序列化:则是将序列化过程中生成的数据,还原成原始数据结构或对象的操作。在Java这门典型的面向对象编程语言里,我们序列化的对象,本质上是类(Class)实例化后的产物。
2025-02-02 23:33:19
776
本系统基于 2-gram 模型,设计并实现了一个具有文学创作能力的宋词智能生成系统 该系统融合了规则约束与统计语言模型,采用Python技术架构开发,实现了多词牌自动生成、历史回溯、语义解释等核心功能
2025-02-16
基于N-gram模型的中文文本分析系统设计与实现
2025-02-16
波士顿房价预测(python实现,可作为课设使用!!!)附高分实验报告!!!
2025-02-09
手写数字识别(python实现),可以作为课设使用,附实验报告!!!
2025-02-09
空气污染预测模型(python实现),可作为机器学习课程的课设使用!
2025-02-09
LinearRegression线性回归源代码
2025-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人