自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java的类加载过程

了解Java的类加载过程,对于我们理解Java程序的运行原理、排查类加载相关的问题以及进行性能优化都有很大的帮助。在实际开发中,我们可以根据类加载的特点,合理地组织代码,提高程序的运行效率。方法是由编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并产生的。在这个阶段,静态变量会被赋予程序中指定的初始值,静态代码块也会按顺序执行。Java类加载并非程序启动就一蹴而就,而是按需加载。会被赋值为10,同时静态代码块中的打印语句也会执行。初始化是类加载的最后一个阶段,主要是执行类构造器。

2025-02-16 08:30:00 702

原创 Java设计模式——单例模式

单例模式有效避免了资源的重复创建和浪费,同时也极大地方便了对共享资源的管理和控制。例如,在一个数据库连接池的实现中,使用单例模式可以确保整个应用程序只创建一个连接池实例,所有的数据库操作都通过这个唯一的连接池来获取数据库连接,避免了过多的连接创建导致系统资源的耗尽。

2025-02-15 09:00:00 812

原创 Java注解深度解析

注解(Annotation)是Java 5引入的元数据机制,本质是继承的接口。代码级文档说明:替代XML配置,提升代码可读性编译期检查:强制执行代码规范(如@Override)运行时动态处理:支撑框架的依赖注入和AOP实现代码生成支持:Lombok等工具的核心机制面试重点:理解注解的三种保留策略(SOURCE/CLASS/RUNTIME)及其对应的生命周期是面试常见考点/*** 权限校验注解定义* - 运行时保留策略* - 适用于方法级别* - 包含角色列表和权限等级两个元素*/

2025-02-13 07:00:00 766

原创 Java设计模式——责任链模式与策略模式

责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。策略模式:定义了一系列的算法,将每一个算法封装起来,并且使它们可以相互替换。策略模式让算法独立于使用它的客户而变化。比较维度责任链模式策略模式目的将请求的发送和处理解耦,让多个对象都有机会处理请求将算法封装,使算法可相互替换,独立于使用它的客户结构特点由多个处理者对象构成一条链,请求沿链传递。

2025-02-10 16:59:16 1115

原创 ESP32 可用摄像头选型与例程

通过上述的摄像头类型对比和例程分析,我们可以更好地了解 ESP32 摄像头的使用方法。在实际开发中,可以根据项目需求选择合适的摄像头型号,并参考这些例程进行摄像头的初始化和数据获取,为后续的图像应用开发打下坚实的基础。希望本文能帮助你更好地使用 ESP32 摄像头,如果你有任何问题或建议,欢迎留言交流。

2025-01-21 13:31:28 2444 2

原创 乐鑫esp模组选型解析

在物联网和嵌入式开发领域,乐鑫(Espressif)的模组凭借其强大的功能和丰富的产品线占据着重要地位。本文将对乐鑫官网(https://www.espressif.com.cn/zh-hans/products/modules)上的模组信息进行详细解读,帮助开发者深入了解各系列模组的特点与应用场景。

2025-01-21 11:01:14 2669

原创 策略模式:原理、应用与示例

策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法都封装起来,并且使它们之间可以相互替换。策略模式让算法的变化独立于使用算法的客户。简单来说,就是把不同的策略封装成一个个独立的类,这些类实现相同的接口或继承相同的抽象类,这样在需要使用这些策略的地方,可以根据不同的情况灵活地选择和切换具体的策略。策略模式作为一种强大的设计模式,为我们在软件开发中处理算法多样性和行为变化提供了一种优雅的解决方案。通过将算法封装成独立的策略类,实现了算法的可替换性和可扩展性,提高了代码的质量和可维护性。

2025-01-19 08:00:00 920

原创 SAS数据处理基础与实用技巧

以上就是SAS数据工作者在医药行业数据处理工作初期常用的一些SAS语句和函数。当然,SAS的功能远不止于此,随着工作的深入和数据处理需求的增加,大家还会接触到更多高级的功能和技巧。希望这些基础内容能帮助新人们快速入门,在医药数据处理的道路上迈出坚实的第一步。在实际工作中,要多实践、多思考,不断积累经验,逐步提升自己的数据处理能力。

2025-01-18 08:00:00 1097

原创 ConcurrentHashMap 加锁机制:JDK 1.7 与 JDK 1.8 对比

在 JDK 1.7 中,采用了分段锁(Segment)的设计。整个由多个 Segment 组成,每个 Segment 类似于一个独立的HashMap,并且每个 Segment 都拥有自己独立的锁。这种结构使得在并发操作时,不同 Segment 之间的操作可以并行执行,只有当多个线程同时访问同一个 Segment 时才会发生锁竞争,从而在一定程度上提高了并发性能。在 JDK 1.7 和 JDK 1.8 中通过不同的加锁机制和数据结构设计,实现了高效的并发访问性能。

2025-01-14 17:17:57 905

原创 常见单片机微处理器对比

单片机微处理器处理器类型内存特点常用领域计算机视觉应用能力双核Tensilica Xtensa LX6520KB SRAM,支持16MB外部闪存智能家居、可穿戴、物联网网关轻量级图像处理ESP32 - S3双核Tensilica Xtensa LX7512KB SRAM,支持大容量外部闪存智能家电、工业物联网较复杂些的工业视觉检测STM32F103系列工业控制、医疗设备、汽车电子简单工业视觉检测STM32H7系列高端工业控制、智能安防复杂图像算法处理,如目标识别。

2025-01-14 16:45:14 1835

原创 JWT 令牌:原理、应用与安全考量

不同的服务器节点接收到请求后,只需使用相同的密钥和算法验证令牌的签名、检查令牌的过期时间等信息,就可以确定用户的身份和权限,无需与其他服务器节点进行复杂的会话信息同步和共享,大大简化了集群环境下的身份验证和授权流程,提高了系统的整体性能和可扩展性。本文将深入探讨 JWT 令牌与传统方式的区别、JWT 令牌的字段构成、其在集群部署中的优势、存在的缺点、令牌泄露后的应对策略、前端存储方式,并给出相关代码示例,旨在帮助开发者全面掌握 JWT 技术,以便在实际项目中做出合理的技术选型与应用。

2024-12-12 17:56:08 2170

原创 DNS:域名解析的核心技术

当本地 DNS 服务器向权威 DNS 服务器发送查询请求时,权威 DNS 服务器会根据自己的配置和数据库信息,返回域名对应的 IP 地址给本地 DNS 服务器,本地 DNS 服务器再将这个 IP 地址返回给客户端,客户端就可以使用这个 IP 地址与目标服务器建立连接,完成数据的传输和交互。DNS 在互联网通信中扮演着不可或缺的角色,通过其独特的域名解析工作流程、特定的端口以及灵活的传输协议应用,实现了域名与 IP 地址之间的高效转换,为我们便捷地访问互联网资源提供了坚实的保障。

2024-12-12 17:55:29 824

原创 解析 CMS 与 G1 垃圾回收器Java

在 Java 编程世界中,垃圾回收器对于程序的性能和内存管理起着至关重要的作用。CMS(Concurrent Mark Sweep)和 G1(Garbage First)是两种备受瞩目的垃圾回收器,它们各自具有独特的特性和适用场景。理解它们之间的区别、适用情况以及 G1 回收器的特色,并且明晰垃圾回收是否仅针对堆内存,对于优化 Java 应用程序的性能和资源利用具有深远意义。本文将深入探讨这些问题,为 Java 开发者提供全面的知识储备。

2024-12-11 18:02:09 1279

原创 浅谈 Java 垃圾回收机制

同时,随着 Java 技术的不断发展,垃圾回收机制也在不断演进,未来可能会出现更加高效、智能的垃圾回收技术,进一步提升 Java 应用程序的性能和可扩展性。随着时间的推移,内存碎片化会越来越严重,这可能导致即使有足够的空闲内存总量,但由于这些空闲内存不连续,无法满足较大对象的内存分配需求,从而不得不提前触发垃圾回收,甚至可能导致 OutOfMemoryError 错误。例如,在 C 语言中,如果手动释放了一个对象后,没有将指向该对象的指针置为 NULL,后续可能会误操作这个悬空指针,导致严重的程序错误。

2024-12-11 17:59:47 882

原创 Spring 事务相关Java

Spring 事务管理为开发者提供了强大而灵活的方式来处理企业级应用中的事务。通过理解 Spring 事务的基本概念、特性、实现方式、传播行为、隔离级别和回滚规则,并结合实际的示例代码进行学习和实践,能够帮助开发者更好地在 Spring 框架下构建可靠、高效的应用程序,确保数据的一致性和完整性,提高系统的稳定性和可维护性。在实际应用中,需要根据具体的业务需求和场景,合理选择事务管理方式、传播行为、隔离级别等参数,以达到最佳的性能和效果。

2024-12-11 17:59:05 962

原创 Servlet、omcat服务器架构与工作原理

Servlet是运行在服务器端的Java程序,它的主要职责之一是接收并处理来自客户端(如浏览器)的HTTP请求。当客户端发送一个请求到服务器时,Servlet可以解析请求中的信息,例如请求的URL路径、请求方法(GET、POST等)、请求头和请求参数等内容,然后根据这些信息进行相应的业务逻辑处理。例如,在一个简单的用户登录系统中,当用户在浏览器中输入登录信息并提交表单(发送POST请求)后,服务器端的Servlet可以接收这个请求,提取用户名和密码参数,然后在数据库中进行验证,判断用户是否能够成功登录。

2024-12-10 11:30:02 1159

原创 HTTP 常见状态码解析

了解这些常见的 HTTP 状态码,能够帮助我们更好地理解网络请求与响应的过程,快速定位问题所在,无论是在开发过程中优化应用,还是在日常使用网络应用时排查故障,都有着重要的作用。含义:服务器在处理客户端请求时遇到了内部错误,导致无法完成请求的处理,这通常是服务器端代码出现问题,比如程序崩溃、数据库连接异常等,但具体错误原因不会在这个状态码中体现出来。含义:服务器成功处理了客户端的请求,但没有需要返回的内容实体,通常用于响应那些只需要知道操作是否成功,而不需要获取具体数据的请求,比如删除操作。

2024-12-10 11:27:24 1319

原创 面试常见-Java 原生实现常见数据结构

通过以上对常见数据结构的 Java 原生实现,我们可以更深入地理解它们的工作原理、操作方式以及适用场景,为后续学习更复杂的算法和数据处理任务打下坚实的基础。链表是一种线性的数据结构,它由一系列节点组成,每个节点包含数据元素以及指向下一个节点的指针(单链表情况)。与数组不同,链表的元素在内存中不一定是连续存储的,通过指针来串联各个节点,从而实现数据的存储和访问。栈是一种后进先出(LIFO)的数据结构,它只有一个开口,允许进行两种操作:入栈(将元素压入栈顶)和出栈(将栈顶元素弹出)。

2024-12-10 11:10:16 460

原创 数据库分库分表技术

垂直分库和水平分库是数据库分库分表技术中的重要策略,它们各自具有独特的优缺点和适用场景。垂直分库侧重于业务模块的解耦、安全性提升以及管理维护的便利性,但在分布式事务处理和跨库关联查询方面面临挑战;水平分库则擅长分散数据量和负载、提升读写性能,但数据分布和跨库操作的复杂性是其需要克服的难点。在实际应用中,需要根据业务需求、数据特征、性能要求以及系统架构等多方面因素综合考虑,选择合适的分库策略,或者结合使用两种策略,以构建高效、稳定、可扩展的数据库架构,满足日益增长的业务数据处理需求。

2024-12-10 11:06:17 889

原创 Java中的锁各类解析

锁类型优点缺点常见应用场景典型使用结构自旋锁减少线程上下文切换开销浪费 CPU 资源(自旋时间长时)持有锁时间短的场景,如短时间内获取锁的操作无特定知名结构广泛应用,可自定义实现可重入锁支持同一线程多次获取锁,避免死锁,简化复杂同步逻辑无明显特定缺点,相比简单锁实现稍复杂递归调用且涉及共享资源访问,复杂同步逻辑实现类乐观锁提高多读少写场景的并发读性能,高性能且低冲突场景表现佳冲突处理不当可能导致重试或异常处理复杂数据库多读少写查询,分布式缓存数据操作。

2024-12-08 13:15:00 1777

原创 Java中HashMap在高并发下的头插法死循环问题

然后线程A继续执行剩余节点的迁移,当它迁移原链表中的第二个节点时,由于线程B的插入操作改变了链表结构,线程A在迁移过程中会按照新的链表结构进行操作,可能会导致链表形成环。例如,原链表为A -> B,线程B插入节点C后变为C -> A -> B,线程A在迁移时可能会错误地将B的next指针指向A,形成A -> B -> A的死循环。例如,对于上述同样的情况,当插入键值对(“B”, 2)时,它会被添加到链表(“A”, 1)的尾部,形成(“A”, 1) -> (“B”, 2)的结构。

2024-12-08 10:00:00 761

原创 Java中创建不可变集合的方法

Java的类提供了一系列用于创建不可变集合的方法,如等,分别用于创建不可变的列表、集合和映射。这些方法接收一个可变集合作为参数,并返回一个不可变的视图。从Java 9开始,提供了更简洁的创建不可变集合的方法。对于列表,可以使用List.of;对于集合,可以使用Set.of;对于映射,可以使用Map.of及其相关的方法。这些方法返回的集合是不可变的。Guava是一个非常流行的Java第三方库,它提供了等类用于创建不可变集合。这些类提供了丰富的方法来构建不可变集合,并且在性能和功能上都有很好的优化。

2024-12-08 09:00:00 907

原创 Java 设计模式:代理模式、适配器模式与装饰器模式的区别于联系

在软件开发过程中,设计模式起着至关重要的作用,它们能够帮助开发者更高效地解决常见的软件设计问题,提高软件的质量和可维护性。代理模式、适配器模式和装饰器模式是三种较为常用且容易混淆的设计模式,本文将深入剖析它们之间的区别,以帮助读者更好地理解和运用这些设计模式。

2024-12-07 09:00:00 1201

原创 Java中Future、CompletableFuture、异步与回调解析

【代码】Java中Future、CompletableFuture、异步与回调解析。

2024-12-06 11:00:00 1177

原创 Java 中的静态成员与内部类

这样,非静态内部类就可以通过这个外部类引用访问外部类的成员,即使这些成员是私有的。这是编译器在背后自动处理的机制,使得非静态内部类能够方便地与外部类进行交互并访问其成员。这清晰地展示了在创建子类对象时,父类和子类的静态成员先加载,然后再进行子类对象的创建过程,包括父类和子类的非静态部分的初始化和构造函数调用。当非静态内部类访问外部类成员时,编译器会在非静态内部类的构造函数中自动添加一个外部类的引用参数。示例,编译器实际上会将。

2024-12-06 09:00:00 837

原创 某东一面(JAVA)- 如何实现十分钟内同一手机号只能请求三次验证码?

在各类涉及用户账号安全操作的互联网应用场景中,比如电商平台的用户注册、登录找回密码,以及各类需要手机号验证身份的金融类 APP 等,为了防止恶意刷取验证码干扰正常业务流程、浪费短信资源或者尝试暴力破解用户账号等安全风险,对同一手机号在特定短时间内(本题为十分钟)的验证码请求次数加以限制是非常必要的。通过这样的限制,既能保障系统的安全稳定运行,又能确保真正有需求的用户可以正常获取验证码进行相应操作。

2024-12-06 09:00:00 1174

原创 Java 面向对象编程

面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它将现实世界中的事物抽象为对象,通过对象之间的交互来构建程序。与面向过程编程侧重于函数和过程不同,面向对象编程强调数据和对数据操作的封装,使得程序更易于理解、维护和扩展。

2024-12-05 11:00:00 755

原创 Java 重载、重写、抽象类与接口

接口中可以定义抽象方法(Java 8 前只能是抽象方法),从 Java 8 开始还可以定义默认方法(

2024-12-05 10:00:00 1182

原创 Java 数据类型-BigDecimal、装箱拆箱与 Integer

自动装箱和拆箱是 Java 5.0 引入的特性,它在一定程度上方便了基本数据类型和包装类之间的转换,但也需要注意在一些性能敏感的场景中可能带来的性能开销,因为装箱和拆箱操作涉及到对象的创建和销毁。例如,在一些需要将数据作为对象传递的场景中,如方法参数要求为对象类型,或者在使用泛型时,基本数据类型无法直接使用,而包装类可以满足这些需求。这种缓存机制在一些频繁创建和使用小整数对象的场景中,可以减少内存的占用和对象创建的开销,提高程序的性能。的值在缓存范围内,会直接返回缓存中的对象,而不是创建一个新的对象。

2024-12-05 09:00:00 1117

原创 虚拟存储管理

若物理内存未满,可直接从磁盘读取页面。例如,一个文本编辑程序,其代码和数据分布在多个页面,当用户打开文件开始编辑时,一开始只有部分常用页面被调入物理内存,若用户操作到某个功能涉及尚未调入内存的页面(如查看特定的格式设置页面),就会产生缺页中断,系统再将对应的页面从磁盘调入内存供程序使用。例如,在处理大型数据库文件或者多媒体文件时,将文件映射到内存后,应用程序可以直接在映射的内存区域进行数据处理、修改等操作,操作系统会自动在后台将内存中的修改同步到磁盘文件上,提高了文件读写的效率和便利性。

2024-12-04 10:00:00 946

原创 Java 数据类型转换

Java 中的八种基本数据类型在数据处理中起着基础性的作用,各自具有独特的属性与用途。数据类型占用字节数取值范围典型应用场景byte1-128 至 127网络编程中字节流数据处理、小型设备状态标识short2-32768 到 32767特定嵌入式系统数据存储、传感器采集数据(精度要求不高)int4约 -21 亿到 21 亿循环控制变量、数组下标、通用业务逻辑整数数据long8非常大的取值范围时间戳表示、大文件数据处理、大型数据库自增主键(数据量较大时)float4。

2024-12-04 10:00:00 2026

原创 操作系统-内存管理

【代码】操作系统-内存管理。

2024-12-04 09:00:00 757

原创 死锁-考研相关

例如,有进程 A 和进程 B,进程 A 占有资源 R1 且等待被进程 B 占有的资源 R2,而进程 B 占有资源 R2 且等待被进程 A 占有的资源 R1,这样它们就陷入了互相等待的死锁局面,谁都无法继续执行下去。死锁避免是在系统运行过程中,通过动态地检测资源分配状态,确保系统始终处于安全状态,避免进入死锁状态,而不是像死锁预防那样去破坏死锁产生的必要条件。死锁预防是通过破坏死锁产生的四个必要条件中的一个或多个,来确保系统不会进入死锁状态。

2024-12-03 11:00:00 1071

原创 同步与互斥

例如,在生产者 - 消费者问题中,用信号量来控制缓冲区的使用,设置一个信号量表示缓冲区的空闲空间数量(初始化为缓冲区大小),生产者生产一个产品后执行 V 操作来增加空闲空间数量,消费者消费一个产品前执行 P 操作来获取空闲空间,如果没有空闲空间则等待;当执行 P 操作时,先将信号量的值减 1,如果减 1 后的值小于 0,表示当前没有可用资源了(对于互斥来说,就是已经有其他进程或线程进入临界区了),那么执行 P 操作的进程或线程就会被阻塞,放入与该信号量关联的等待队列中等待资源可用。

2024-12-03 10:00:00 969

原创 CPU 调度与上下文切换

例如,在一个多处理机数据库系统中,多个查询任务可能被分配到不同的 CPU 核心上执行,但它们可能会同时访问数据库中的某些数据表,需要通过合适的同步机制(如锁、信号量等)来保证数据的正确性和完整性。CPU 调度是指操作系统在多个进程或线程之间分配 CPU 时间片的过程。例如,在一个多任务操作系统中,同时运行着多个应用程序(如浏览器、音乐播放器、文字处理器等),操作系统的 CPU 调度机制就会决定在某个时刻将 CPU 分配给哪个应用程序的进程或线程,以确保系统资源的合理利用和多任务的并发执行。

2024-12-03 09:00:00 1038

原创 进程与线程

以下是进程和线程状态转换的对比图表:以下是内核支持的线程和线程库支持的线程的对比图表:以下是进程间通信方式的对比图表:

2024-12-02 15:00:00 785

原创 总线和IO系统

在程序查询方式中,CPU 不断地查询 I/O 设备的状态,以确定是否可以进行数据传输。例如,CPU 要从键盘读取数据,就会循环地检查键盘接口的状态寄存器,看是否有数据输入。这种方式的优点是控制简单,缺点是 CPU 利用率低,因为在查询过程中 CPU 处于等待状态,浪费了大量的计算资源。总线是计算机系统中连接各个部件的公共通信线路,它就像是计算机内部的“高速公路”,使得不同的硬件组件能够相互传输数据、地址和控制信息。例如,CPU、内存、I/O 设备等都通过总线进行交互,实现数据的交换与协同工作。

2024-12-02 14:00:00 896

原创 指令流水线与多处理器相关概念

例如,常见的双核、四核或更多核的处理器,这些核心可以共享芯片上的一些资源,如内存控制器、高速缓存(如 L3 缓存)等,但在执行任务时,每个核心都可以独立地运行不同的程序或线程,实现真正的并行处理。在多任务操作系统中,多核处理器可以同时处理多个任务,如在一个计算机系统中,一个核心可以处理视频播放任务,另一个核心可以处理后台的文件下载任务,从而提高系统的整体响应速度和多任务处理能力,并且在多线程应用中,不同的线程可以分配到不同的核心上执行,充分利用多核的并行性,提高应用程序的性能。

2024-12-02 09:55:25 1198

原创 数据结构 - 排序(四):排序算法总结与对比

直接插入排序、折半插入排序、起泡排序、简单选择排序、希尔排序、快速排序、堆排序、二路归并排序:这些算法主要通过比较元素之间的大小关系来确定元素的位置。其中,直接插入排序、折半插入排序和起泡排序是较为简单直观的排序算法,时间复杂度在最坏情况下为 (O(n^2)),适用于小规模数据或数据基本有序的情况。简单选择排序无论数据情况如何,时间复杂度均为 (O(n^2))。希尔排序是对插入排序的改进,通过引入增量序列,在一定程度上提高了排序效率,平均时间复杂度约为 (O(n^{1.3}))。

2024-11-30 11:00:00 1261

原创 计算机组成原理-计算机系统概述:计算机系统的基石

计算机系统由硬件系统和软件系统两大部分组成。硬件系统是计算机的物理实体,包括各种电子元器件、机械装置等,如中央处理器(CPU)、内存、硬盘、显示器、键盘等。这些硬件设备协同工作,为计算机的运行提供了物质基础。而软件系统则是一系列按照特定顺序组织的计算机数据和指令的集合,它可以分为系统软件和应用软件。系统软件负责管理计算机系统的各种资源,如操作系统、语言处理程序等;应用软件则是为了满足用户特定需求而开发的程序,如办公软件、游戏软件等。

2024-11-30 10:00:00 1541

2025-408考研大纲解析

2025-408考研大纲解析 包含考研大纲与2024考研大纲增删对比

2024-12-13

BC28-F 链接电信云平台

BC28-F 链接电信云平台

2024-11-13

空空如也

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

TA关注的人

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