
编程
文章平均质量分 77
严文文-Chris
这个作者很懒,什么都没留下…
展开
-
【为什么内核线程调度切换成本高?】
Go语言的Goroutine、Java的虚拟线程(Project Loom),通过用户级调度实现高并发。:线程切换后,新线程访问的内存区域与旧线程不同,导致CPU缓存(L1/L2/L3)中的数据失效。:用户线程库(如Go的GMP模型)可针对应用场景优化调度策略,避免内核全局调制的开销。:内核线程可能属于不同进程,切换时需刷新TLB(如进程间切换),导致内存访问延迟。:内核线程的调度需要从用户态切换到内核态(通过系统调用),执行完再切换回用户态。:切换线程时需更新内核中的任务队列、计时器、信号处理表等。原创 2025-04-10 14:25:21 · 645 阅读 · 0 评论 -
【系统分析师-第二遍(19-22)】
通过参加考试,训练学习能力,而非单纯以拿证为目的。1.在复习过程中,训练快速阅读能力、掌握三遍读书法、运用番茄工作法。2.从底层逻辑角度理解知识点,避免死记硬背。3.通过考试验证学习效果。原创 2025-04-09 22:00:21 · 352 阅读 · 0 评论 -
【系统分析师-第二遍(14-18)】
通过参加考试,训练学习能力,而非单纯以拿证为目的。1.在复习过程中,训练快速阅读能力、掌握三遍读书法、运用番茄工作法。2.从底层逻辑角度理解知识点,避免死记硬背。3.通过考试验证学习效果。原创 2025-04-09 09:15:53 · 265 阅读 · 0 评论 -
【系统分析师-第二遍-(7-13)】
三化:系统化:研究对象的兄弟节点;全局化:研究对象所有的组成部分;结构化:研究对象的组成部分间可能的关系。快速阅读每个章节后一定要结构化章节,刻意练习三化,结构化章节。不断提问题,从多个维度去学习研究对象。原创 2025-04-08 10:00:47 · 202 阅读 · 0 评论 -
【注解简化配置的原理是什么】
通过声明式编程让框架或工具自动处理这些元数据,从而减少手动配置的复杂度。编译器或注解处理器(Annotation Processor)读取注解,生成额外代码(如。框架通过反射(Reflection)扫描类路径,检测注解并动态构建对象关系(如。在编译时或运行时解析注解并生成对应的行为。:配置与代码分离,维护困难,容易出错,且缺乏类型安全。注解(Annotation)简化配置的核心原理是。:开发者从繁琐的配置中解放,专注于业务逻辑实现。:配置与代码合一,直观且类型安全。,遵循约定减少显式配置。原创 2025-04-06 17:14:21 · 614 阅读 · 0 评论 -
【注解小结】
是一种为代码添加**元数据(Metadata)**的机制,它本身不会直接影响程序的逻辑,而是为编译器、框架或运行时环境提供额外的信息。:类似于标签,贴在代码上,告诉工具或框架如何处理这段代码。:定义注解的生命周期(源码、编译时、运行时)。:指定注解可应用的目标(类、方法、字段等)。:编译检查、代码生成、框架集成、文档生成等。:简化配置、增强可读性、支持工具链集成。:是否将注解包含在Javadoc中。定义注解,可包含属性和默认值。:是否允许子类继承父类的注解。:注解声明、元注解、属性。:代码的元数据标签。原创 2025-04-06 17:10:50 · 412 阅读 · 0 评论 -
【系统分析师-第二遍-(1-6)】
通过参加考试,训练学习能力,而非单纯以拿证为目的。1.在复习过程中,训练快速阅读能力、掌握三遍读书法、运用番茄工作法。2.从底层逻辑角度理解知识点,避免死记硬背。3.通过考试验证学习效果。原创 2025-04-03 20:03:48 · 345 阅读 · 0 评论 -
【实例方法一定能被覆盖(Override)吗?】
理解这些规则有助于写出更健壮的面向对象代码。Java 5+ 允许覆盖方法的返回类型是父类方法返回类型的。,但某些情况下会被限制。在 Java 中,实例方法(非。Java 要求覆盖方法的访问权限。(子类可以定义同名方法,但这是。满足以下条件时,实例方法。方法对子类不可见,因此。静态方法属于类级别,原创 2025-04-03 11:22:13 · 387 阅读 · 0 评论 -
【static 方法可以被覆盖(Override)吗?】
因此不能被覆盖(Override)。方法不能被覆盖,但子类可以定义一个。原创 2025-04-03 11:19:18 · 355 阅读 · 0 评论 -
【String不可变是什么意思?为什么要设置成不可变的?有什么方法可变呢?】
高频字符串操作优先用。原创 2025-04-03 11:06:35 · 504 阅读 · 0 评论 -
【为什么静态方法可以调用静态变量,不能调用实例变量?为什么main方式的静态的?】
必须通过对象实例访问。就初始化,不依赖于任何对象实例。可以,因为实例方法默认持有。实例变量(非静态变量)属于。原创 2025-04-03 11:03:32 · 295 阅读 · 0 评论 -
【为什么基本数据类型不能存储在集合、泛型中?】
虽然有一定性能开销,但通过自动装箱和优化库(如。,基本类型和引用类型严格区分,避免混淆。设计的,后续版本为了兼容性没有改变。设计的,基本类型由于不是对象,必须通过。这主要与 Java 的。Java 1.0 的集合(如。如果对性能要求极高,可以使用。Java 的集合和泛型是为。Java 的集合类(如。中,而必须使用它们的。由于泛型在运行时只认。,而基本数据类型(如。,在运行时会被擦除(,所以无法直接存储。原创 2025-04-03 09:27:49 · 307 阅读 · 0 评论 -
【为什么Java中有基本数据类型、包装类型?两者的区别是什么?】
各有用途,它们的出现是为了解决不同场景下的需求。下面详细解释它们的区别以及为什么需要包装类型。这使得代码更简洁,但仍然需要注意性能问题(频繁装箱/拆箱可能影响效率)。在实际开发中,应根据需求选择合适的数据类型。频繁的装箱/拆箱(如循环中使用。,使得基本类型和包装类型可以。Java 的基本数据类型(Java 5 引入了。原创 2025-04-03 09:25:07 · 523 阅读 · 0 评论 -
【有状态类一定是多例吗?无状态类一定是单例吗?】
它们可以自由组合,具体如何设计取决于业务需求。有状态类和无状态类与单例/多例模式是。原创 2025-03-27 15:35:42 · 400 阅读 · 0 评论 -
【什么是事件?事件有什么组成部分?事件流程是什么?使用事件的场景有什么?】
事件是事件驱动编程的核心概念,用于描述系统中发生的特定动作或状态变化。事件由事件源、事件类型、事件数据和事件监听器等部分组成,其流程包括触发、捕获、处理和冒泡等阶段。事件广泛应用于用户界面交互、网络通信、系统事件处理等场景,具有响应式设计、解耦和灵活性等优势。事件驱动编程(Event-Driven Programming)**的核心概念,程序通过监听和处理事件来响应外部或内部的变化。在计算机科学和软件开发中,**事件(Event)原创 2025-03-25 11:19:33 · 1046 阅读 · 0 评论 -
【二、八、十、十六之间的进制转换】
使用除以16取余法,将十进制数不断除以16,记录余数,直到商为0,然后将余数倒序排列。由于16是2的4次方,所以可以将二进制数从右到左每四位一组,不足四位的左边补零,然后将每组转换为对应的十六进制数。由于8是2的3次方,所以可以将二进制数从右到左每三位一组,不足三位的左边补零,然后将每组转换为对应的八进制数。类似于二进制到十进制的转换,将八进制数的每一位与其对应的8的幂次方相乘,然后将所有结果相加。使用除以2取余法,将十进制数不断除以2,记录余数,直到商为0,然后将余数倒序排列。原创 2025-03-25 09:40:44 · 299 阅读 · 0 评论 -
【Java三种聚合方式之生命周期】
在 Java 中,**聚合(Aggregation)**关系体现的是一种较弱的包含关系。被聚合的对象的生命周期独立于容器对象,即容器对象并不管理被聚合对象的创建和销毁。无论是通过构造函数、setter 方法,还是集合类型,,由外部代码控制,可以在多个容器对象(如多个。对象的引用,并利用它来执行功能。对象的生命周期独立于。原创 2025-03-08 09:58:13 · 501 阅读 · 0 评论 -
【Java组合两种方式及区别】
在 Java 中,Engine和Engine在功能上是相似的,但它们之间在生命周期、初始化顺序、以及代码结构上存在一些细微的区别。我们逐一分析这两种方式的不同之处。原创 2025-03-08 09:55:01 · 546 阅读 · 0 评论 -
引用是什么?在不同语言中的应用?尤其是Java中的应用?
是许多编程语言中用于表示数据间接访问的一种机制。引用在不同编程语言中的具体实现和语法有所不同,但其核心概念基本相同:引用允许通过别名(指向数据的引用)来间接访问和修改数据。原创 2025-02-19 18:42:09 · 336 阅读 · 0 评论 -
【类文件是什么?有什么作用?流程是什么?】
包括类或接口的名称、父类、接口、访问权限(如 public、private)、字段、方法等。原创 2025-01-22 08:50:39 · 376 阅读 · 0 评论 -
【汇编器和编译器的区别】
都是程序开发过程中将高级或低级代码转换为机器可执行代码的工具,但它们的功能和工作原理有所不同。转换为计算机可执行的低级代码,两者的作用和目标不同。原创 2025-01-16 14:45:32 · 1515 阅读 · 0 评论 -
【双分派小结】
双分派(Double Dispatch)是一种面向对象编程中的设计模式,通常用于实现多态性,尤其是在涉及多个对象交互时。它的基本思想是通过两个不同的对象来确定方法调用,而不仅仅是依赖于一个对象。原创 2024-12-06 16:16:28 · 487 阅读 · 0 评论 -
【静态初始化块、静态变量、静态方法的赋值赋值时机】
在 Java 中,的赋值或执行时机与类加载密切相关。下面详细说明它们的赋值时机和执行顺序。是属于类本身的变量,在类加载过程中完成初始化。(类加载的0falsenull(类加载的在类加载的执行,用于对类进行额外的初始化操作。是在类级别定义的,可以通过类名直接调用,而不需要实例化对象。原创 2024-11-16 10:19:14 · 601 阅读 · 0 评论 -
【B+树特点】
B+树和B树的主要区别在于数据存储的位置和查询效率。B+树通过将数据存储在叶子节点并利用链表连接叶子节点,极大地优化了范围查询和顺序扫描的效率。相比之下,B树将数据分布在整个树的节点中,虽然结构较为简单,但在处理大量数据时,查询效率不如B+树。因此,B+树被广泛应用于数据库和文件系统中,尤其是在需要频繁进行范围查询和顺序访问的应用场景中。参考视频链接:https://www.bilibili.com/video/BV1bs421u7pY?原创 2024-11-14 15:04:40 · 959 阅读 · 0 评论 -
B-树特点以及插入、删除数据过程
查找插入位置:通过树的层级结构,从根节点到叶子节点进行查找,确定插入位置。插入元素:如果目标叶子节点有空间,直接插入元素。节点分裂:如果插入导致节点超出最大容量,将节点分裂并将中间元素推送到父节点。递归分裂:如果父节点也满了,递归地进行分裂,直到找到可以容纳元素的父节点,或者根节点发生分裂,增加树的高度。插入操作保证了B树的平衡性,使得查询、插入和删除操作始终保持对数时间复杂度O(log n)。原创 2024-11-14 14:34:27 · 1584 阅读 · 0 评论 -
【UML图】
类图是UML中最常用的结构图之一,主要用于描述系统的静态结构,展示系统中类的定义以及它们之间的关系(如继承、关联、依赖等)。类(Class):类名、属性、方法。关系关联(Association):表示类之间的逻辑连接,通常用直线表示。继承(Inheritance):表示一个类继承另一个类的属性和方法,用空心箭头表示。实现(Implementation):表示一个类实现某个接口,用虚线和空心箭头表示。依赖(Dependency):表示类之间的依赖关系,用带箭头的虚线表示。原创 2024-11-13 09:54:18 · 924 阅读 · 0 评论 -
【分派和双分派】
分派是指在运行时或编译时根据对象的类型选择适当的代码块(如方法或函数)执行。分派机制确保程序根据对象的实际类型调用正确的函数,实现多态的动态绑定。分派分为静态分派和动态分派静态分派(Static Dispatch):分派在编译阶段完成。编译器根据方法签名选择调用哪个方法,主要应用在方法重载中。静态分派不依赖对象的运行时类型,而是基于参数的静态类型。动态分派(Dynamic Dispatch):分派在运行时完成。根据对象的实际类型选择调用的具体方法,应用在方法重写中。原创 2024-10-26 15:04:10 · 680 阅读 · 0 评论 -
深拷贝和浅拷贝
深浅拷贝是两种对象复制方式,它们的区别在于复制的对象和其引用的成员之间的处理方式。在编程中,这两种拷贝方式对于如何复制对象的属性,特别是那些引用类型的属性,具有不同的行为。原创 2024-10-20 11:32:04 · 799 阅读 · 0 评论