自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tang7mj的博客

在无序中寻找有序

  • 博客(1803)
  • 收藏
  • 关注

原创 Day35 Java进阶 - 1. 反射

反射是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法。这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。利用反射创建的对象可以无视修饰符调用类里面的内容。可以跟配置文件结合起来使用,把要创建的对象信息和方法写在配置文件中:读取到什么类,就创建什么类的对象。读取到什么方法,就调用什么方法。这样当需求变更时,不需要修改代码,只要修改配置文件即可。

2025-05-05 11:22:35 84

原创 Day33 Java 进阶 - 1. 网络编程入门

指将地理位置不同的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的系统。在网络通信协议下,不同计算机上运行的程序可以进行数据传输的开发方式。

2025-05-05 10:52:09 213

原创 DAY01 - JVM - 垃圾回收机制详解 - 4. 垃圾回收

在这类语言中,没有内置的垃圾回收机制。程序员需要,否则就会造成。内存泄漏是指,如果长时间积累,会导致,甚至程序崩溃。在这段代码中,程序通过死循环不停创建Test类的对象,每次循环结束后对象就已经不再使用了,但没有主动删除它们,最终造成内存泄漏。在这段代码中,程序显式调用delete删除对象,避免了内存泄漏。我们称这种回收过程为。在 C/C++ 中,这属于。

2025-05-05 10:39:06 351

原创 DAY01 - JVM - 字节码文件详解

核心组件是,它负责将.class字节码文件中的内容加载到内存中,使 JVM 能找到类和接口信息。JVM 管理的内存区域,所有创建出来的对象、类的信息、运行时数据都会存放在这里。例如方法区、堆、虚拟机栈、本地方法栈、程序计数器等都属于它的范畴。包含。执行引擎的职责是:使用解释器将字节码指令转为机器码;使用 JIT 提高执行性能;使用 GC 垃圾回收器释放无用对象。允许 Java 代码调用本地方法(C/C++ 编译的),Java 中用native修饰的就是本地方法。

2025-05-04 20:59:35 483

原创 DAY01 - JVM - 基础篇 - 1.初始化JVM - 1.3 常见的JVM

Java虚拟机规范》是 Oracle 制定的标准,描述了虚拟机如何加载、解析和执行 .class 字节码文件,规范了虚拟机的内存结构(堆、栈、方法区等)、类加载机制、指令集等内容。其核心作用是保证“跨平台”兼容性,不同 JVM 实现者需严格遵守这个规范来确保一致性。

2025-05-04 20:38:03 710

原创 JUC并发编程 - 原理篇 - 指令级并行原理

主频的概念大家接触的比较多,而 CPU 的 Clock Cycle Time(时钟周期时间),等于主频的倒数,意思是 CPU 能够识别的最小时间单位,比如说 4G 主频的 CPU 的 Clock Cycle Time 就是 0.25 ns,作为对比,我们墙上挂钟的 Cycle Time 是 1s。例如,运行一条加法指令一般需要一个时钟周期时间。

2025-05-04 17:06:16 436

原创 JUC并发编程 - 应用篇 - 多线程高效利用CPU

为了对比多线程在不同 CPU 核数下的表现,本次测试选择了专业的基准测试工具。它能够实现:程序预热(避免首次调用影响测试结果)多次测试并自动计算平均值方法一:使用虚拟机,分配合适的 CPU 核数方法二:通过msconfig修改 CPU 核数(缺点:需要重启)最初尝试使用,但发现它调度不可控,容易带来问题改为手动创建ThreadFutureTask,实现简单高效的并行🧠高效利用多线程前,首先要搭建。

2025-05-04 16:42:40 484

原创 JUC并发编程 - 解决方案模式篇 - 线程安全单例:JVM 内存监控

单例模式是一种常见的创建型设计模式,确保在整个程序运行期间,某个类只能被实例化一次,并提供一个全局访问点。这些实现方法各有优缺点,核心考虑点包括线程安全、性能、延迟加载、以及反射和反序列化的安全性。

2025-05-04 16:09:40 604

原创 JUC并发编程 - 解决方案模式篇 - 同步模式之保护性暂停

💬场景题(阿里)现象:你在项目中发现,主线程需要等待一个子线程下载文件完成后才能继续处理,但偶尔会出现“永远挂起不结束”的现象。问题:请分析原因,并说明如何用保护性暂停解决。✅参考答案原因分析:主线程直接wait()等待,子线程负责下载完毕后notify();出现“永远挂起”的原因:子线程未正确notify();主线程wait()时未用while包裹检查条件,可能遇到虚假唤醒;或者锁对象不一致,导致通知失败。解决方案:用 GuardedObject 封装等待逻辑,主线程调用get()

2025-05-04 15:47:37 812

原创 JUC并发编程 - 4.2 synchronized 解决方案

采用互斥机制:让同一时刻最多只有一个线程持有对象锁,其它线程如果想获取锁,就会被阻塞。这样就能保证持有锁的线程安全执行临界区代码,不受上下文切换干扰。的基本原理互斥与同步的区别如何用对象锁保护共享资源面向对象的加锁思路任何时候,锁对象要统一,否则加锁就形同虚设。的本质是用锁机制实现线程安全的“原子性”。

2025-05-04 15:25:00 793

原创 JUC并发编程 - 4. 共享模型之管程 - 4.1 共享带来的问题

这一节我们通过一个有趣的小故事,讲清楚了:线程共享模型的本质为什么会出现线程安全问题临界区 & 竞态条件的概念以及 Java 中经典的竞态演示在并发编程中,共享资源 + 多线程修改是 bug 的温床!下一节我们将进入解决方案 👊。

2025-05-04 14:53:45 738

原创 JUC并发编程 - 3.12 五种状态(增强版)

这一节深入解析了线程的五种基本状态初始状态可运行状态运行状态阻塞状态终止状态并扩展了Java Thread.State 状态细节调优视角和大厂级应用背景,让你既懂理论也看清实战问题。

2025-05-04 14:40:28 543

原创 JUC并发编程 - 3.4 原理之线程运行(增强版)

本节从理论到实战全面解析了「线程的运行原理」,补充了:栈帧结构细节上下文切换的细节与优化程序计数器的核心作用多核调度的企业级视角远程监控的安全配置👉 这节课不仅让你看懂 JVM 是怎么调度线程的,还让你具备大厂级的实战视野✅。

2025-05-04 13:57:28 617

原创 JUC并发编程 - 3.3 查看进程线程的方法

任务管理器可以查看进程和线程数,也可以用来杀死进程。查看进程(可以查找包含"java"的所有进程)杀死进程表示强制关闭,12345是进程号。🔎任务管理器 → 详细信息 → 右键列 → 选择“线程数”列,可看到每个进程的线程数。更深入分析线程:使用(微软官方工具),支持查看线程栈。🧠 理论理解Windows 提供了多种查看进程和线程的方法,核心工具包括任务管理器、命令行工具(tasklisttaskkill。

2025-05-04 13:36:41 412

原创 JUC并发编程 - 2.3 应用

以调用方角度场景描述同步调用必须等待结果返回,才能继续执行异步调用不需要等待结果返回,立刻继续执行你可以理解为:异步 = 不用干等,任务在后台悄悄做。这一节我们介绍了:多线程的两个典型应用:1️⃣提升程序的响应性,不阻塞主流程2️⃣让 CPU 多核并行跑任务,减少总耗时多线程并不总能提升效率,要具体问题具体分析学会辨别场景,用对线程,才能让程序更高效!

2025-05-04 13:08:05 498

原创 JUC并发编程 - 1. 概览

这门课中的「并发」涵盖了:程序的执行实例,拥有独立的内存空间。:进程内独立执行的最小单位,多个线程共享同一个进程的内存。:多个任务交替执行,利用单核CPU切换上下文实现“同时执行”的效果。:多个任务真正同时执行,通常基于多核CPU。此外,这门课还包括:Java的与;其他领域的并发知识拓展,比如和。

2025-05-04 12:52:48 209

原创 Java进阶DAY32-03-JUC扩展 5 并发工具类

其他线程都会阻塞等待;如果有线程中途异常/提前退出,没有调用。

2025-05-04 11:44:12 508

原创 Java进阶DAY32-03-JUC扩展 4 原子性

原子性指操作是“不可中断的整体”。一次或多次操作,要么全部执行完毕,要么完全不执行,中间不会被线程切换打断。在并发场景中,如果多个线程同时修改同一个变量,没有原子性保障,就会导致数据竞争、丢失更新、状态不一致等问题,造成系统异常。

2025-05-04 10:07:45 713

原创 Java进阶DAY32-03-JUC扩展 3 volatile关键字

分析如下程序,说出在控制台的输出结果。Thread的子类测试类控制台输出结果前面是false,过了一段时间之后就变成了true按照我们的分析,当我们把volatileThread线程启动起来以后,那么volatileThread线程开始执行。在volatileThread线程的run方法中,线程休眠1s,休眠一秒以后那么flag的值应该为true,此时我们在主线程中不停的获取flag的值。发现前面释放false,后面是true信息,那么这是为什么呢?要想知道原因,那么我们就需要学习一下JMM。

2025-05-03 23:02:45 574

原创 Java进阶DAY32-03-JUC扩展 2 线程池

此时就说明线程池中的线程"pool-1-thread-1"被线程池回收了,成为了空闲线程,当我们再次提交任务的时候,该线程就去执行新的任务。线程池在启动的时,会创建大量空闲线程,当我们向线程池提交任务的时,线程池就。线程池会再次在非核心线程池区域去创建新工作线程来执行任务,直到当前线程池总线程数量超过最大线程数时,就是按照指定的任务处理策略处理多余的任务。会启动一个线程来执行该任务。通过控制台的输出,我们可以看到次策略没有通过线程池中的线程执行任务,而是直接调用任务的run()方法绕过线程池直接执行。

2025-05-03 22:43:25 652

原创 Java进阶DAY32-03-JUC扩展 1 线程状态

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程/* 新建 */NEW ,​/* 可运行状态 */RUNNABLE ,​/* 阻塞状态 */BLOCKED ,​/* 无限等待状态 */WAITING ,​/* 计时等待 */​/* 终止 */TERMINATED;// 获取当前线程的状态。

2025-05-03 20:54:57 273

原创 Java进阶DAY32 - 02 - 多线程综合练习

所谓的原子性是指在一次操作或者多次操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行,多个操作是一个不可以分割的整体。

2025-05-03 20:32:46 488

原创 Java进阶DAY32-01-线程池

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程状态被定义在了java.lang.Thread.State枚举类中,State枚举类的源码如下:/* 新建 */NEW ,​/* 可运行状态 */RUNNABLE ,​/* 阻塞状态 */BLOCKED ,​/* 无限等待状态 */WAITING ,​/* 计时等待 */​/* 终止 */

2025-05-03 19:45:36 651

原创 Java进阶DAY31- 03 - 生产者消费者

概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者消费者问题,实际上主要是包含了两类线程:一类是生产者线程用于生产数据一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为Object类的等待和唤醒方法方法名说明。

2025-05-03 19:22:58 525

原创 Java进阶DAY31-02-线程同步

虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。弊端:当线程很多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。创建三个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称。synchronized(任意对象):就相当于给代码加锁了,任意对象就可以看成是一把锁。synchronized(任意对象) {

2025-05-03 19:11:30 719

原创 Java进阶DAY31-01-实现多线程

独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 并发性:任何进程都可以同其他进程一起并发执行。抢占式调度模型:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些。是更灵活的多线程实现方式,允许任务类继承其他类,解耦了“任务逻辑”和“线程对象”,非常适合配合线程池使用,是企业开发的首选方式。方法是最基础的多线程实现方式,适合小型任务。

2025-05-03 18:53:33 587

原创 SSM框架 - Spring_day01: 5.DI相关内容

IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。

2025-05-02 21:07:46 645

原创 SSM框架 - Spring_day01: 4.IOC相关内容

这也是我们以后比较常用的一种方式。需要注意的一点是,构造方法在类中默认会提供,但是如果重写了构造方法,默认的就会消失,在使用的过程中需要注意,如果需要重写构造方法,最好把默认的构造方法也重写下。看到这,可能有人会问了,你这种方式在工厂类中不也是直接new对象的,和我自己直接new没什么太大的区别,而且静态工厂的方式反而更复杂,这种方式的意义是什么?方法三:没有被重写,因为它已经给了默认值,从方法名中可以看出其作用是设置对象是否为单例,默认true,从意思上来看,我们猜想默认应该是单例,如何来验证呢?

2025-05-02 20:34:36 782

原创 SSM框架 - Spring_day01: 3.入门案例

🧠 理论理解XML配置文件的作用是。

2025-05-02 20:09:04 823

原创 SSM框架 - SpringMVC_day01:4.请求与响应

SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户。返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖==@ResponseBody==注解和==@EnableWebMvc==注解。请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数?

2025-05-02 16:50:02 968

原创 MySQL - 进阶篇 - 6. InnoDB引擎

MySQL 5.5开始默认使用InnoDB存储引擎,它擅长事务处理,具备崩溃恢复特性,是日常开发中最常用的存储引擎。InnoDB架构分为内存结构和磁盘结构。回滚日志(Undo Log)在INSERTUPDATEDELETE操作时产生,是一份便于数据回滚的日志。对于INSERT操作:产生的Undo Log仅在回滚时使用,事务提交后可以立即删除,因为历史版本不需要了。对于UPDATEDELETE操作:产生的Undo Log不仅在回滚时使用,同时还在快照读(MVCC)时使用。

2025-05-02 15:51:30 941

原创 MySQL - 基础篇 - 5. 多表查询

多表查询就是指从多张表中联合查询数据。在企业应用中,数据之间很少是孤立存在的,例如:员工需要知道所属的部门;订单需要关联用户信息;学生成绩单要关联选课表。在数学中,两个集合 A、B 的笛卡尔积是 A 中的每个元素与 B 中的每个元素组合起来,形成的所有有序对。示意图👇emp.idemp.name...dept.iddept.name1金庸...1研发部1金庸...2市场部...............这种数据大多数是无效的组合。

2025-05-02 15:07:03 594

原创 SSM框架 - SpringMVC_day01:2.SpringMVC入门案例

一次性工作创建工程,设置服务器,加载工程导入坐标创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean)多次工作定义处理请求的控制器类定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

2025-04-30 21:23:34 747

原创 Day15 - 接口 -2.1 概述

我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,构造方法,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接口同样是不能创建对象的。接口使用interface关键字声明,接口名应符合“首字母大写 + 驼峰命名”的规范。//接口的定义格式:interface 接口名称{// 抽象方法​// 接口的声明:interface// 接口名称:首字母大写,满足“驼峰模式”类与接口的关系为实现关系,即类实现接口。

2025-04-30 20:38:10 603

原创 Day03 - 抽象类 - 1.1 概述

abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。

2025-04-30 20:24:55 780

原创 Day01 - RabbitMQ - 1.初识MQ

微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为,也可以叫。但在很多场景下,我们可能需要采用的方式,为什么呢?我们先来看看什么是同步通讯和异步通讯。如图:解读:同步通讯:就如同打视频电话,双方的交互都是实时的。因此同一时刻你只能跟一个人打视频电话。

2025-04-29 17:25:08 955

原创 苍穹外卖-day01

其实,在真实的企业开发中,接口设计过程其实是一个非常漫长的过程,可能需要多次开会讨论调整,甚至在开发的过程中才会发现某些接口定义还需要再调整,这种情况其实是非常常见的,但是由于项目时间原因,所以选择一次性导入所有的接口,在开发业务功能过程当中,也会带着大家一起来分析一下对应的接口是怎么确定下来的,为什么要这样定义,从而培养同学们的接口设计能力。作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。

2025-04-29 16:44:03 897

原创 Day01 - Nginx环境准备

Nginx的官方网站为:nginx打开源码可以看到如下的页面内容Nginx的官方下载网站为,当然你也可以之间在首页选中右边的download进入版本下载网页。在下载页面我们会看到如下内容:Nginx的安装方式有两种分别是:通过Nginx源码通过Nginx源码简单安装 (1)通过Nginx源码复杂安装 (3)通过yum安装 (2)

2025-04-29 15:55:14 871

原创 深度学习 - 5.3. 前向传播、后向传播与计算图

到目前为止,我们已经使用小批量随机梯度下降训练了模型。然而,在实现时,我们只需要关心如何通过前向传播和后向传播计算损失和梯度。深度学习中,梯度的自动计算极大简化了算法实现。在早期,即使模型有微小更改,也需手动推导复杂的导数。而现代自动微分(autograd)机制,让我们能够专注于模型设计本身。不过,要真正深入理解深度学习,掌握前向传播、后向传播和计算图的细节是不可或缺的。

2025-04-29 10:27:52 1130

原创 动手学深度学习 - 5.2 多层感知器的实现

小节内容总结5.2.1 从头实现MLP初始化权重偏置,自己写ReLU与前向传播5.2.2 简洁实现MLP使用Sequential快速搭建网络5.2.3 小结从单层到多层,训练过程保持一致,模型设计为关键焦点。

2025-04-29 10:16:46 983

数值计算方法实验报告四

希望能帮到有需要的人,如果有错误请大家多多指正,数值计算方法本身就是一门比较难的课,要不挂比较容易但是要想考高分如果不深入理解其中的原理,除非是多看网课能有几率的高分,多数情况还是很难的除非数学基础很好,而实验报告也会占一定分数,这个资源主要是给你们一个参考,实验报告还是得自己认真做的。

2023-05-14

数值计算方法实验报告3

希望能帮到有需要的人,如果有错误请大家多多指正,数值计算方法本身就是一门比较难的课,要不挂比较容易但是要想考高分如果不深入理解其中的原理,除非是多看网课能有几率的高分,多数情况还是很难的除非数学基础很好,而实验报告也会占一定分数,这个资源主要是给你们一个参考,实验报告还是得自己认真做的。

2023-05-14

数值计算方法实验报告二

希望能帮到有需要的人,如果有错误请大家多多指正,数值计算方法本身就是一门比较难的课,要不挂比较容易但是要想考高分如果不深入理解其中的原理,除非是多看网课能有几率的高分,多数情况还是很难的除非数学基础很好,而实验报告也会占一定分数,这个资源主要是给你们一个参考,实验报告还是得自己认真做的。

2023-05-14

华北水利水电大学数值计算方法实验报告实验一

希望能帮到有需要的人,如果有错误请大家多多指正,数值计算方法本身就是一门比较难的课,要不挂比较容易但是要想考高分如果不深入理解其中的原理,除非是多看网课能有几率的高分,多数情况还是很难的除非数学基础很好,而实验报告也会占一定分数,这个资源主要是给你们一个参考,实验报告还是得自己认真做的。

2023-05-14

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

TA关注的人

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