- 博客(334)
- 收藏
- 关注
原创 Spring 框架中的经典设计模式
Spring框架在Java开发中广泛应用,其成功得益于多种经典设计模式的巧妙运用。单例模式通过减少对象创建和销毁的开销,提升了系统性能;工厂模式通过IoC容器管理Bean,降低了代码耦合度;代理模式通过AOP实现功能增强,如日志记录和事务管理;模板方法模式简化了重复代码,提高了代码复用性;观察者模式通过事件驱动模型实现模块解耦;适配器模式解决了接口不兼容问题;策略模式则提供了灵活多变的算法选择。这些设计模式不仅增强了Spring框架的功能和灵活性,也为开发者提供了高效的开发范式,有助于编写结构清晰、可维护性
2025-05-19 06:00:00
8
原创 Spring 框架线程安全的五大保障策略解析
在高并发互联网应用中,线程安全是系统稳定运行的关键。Spring框架通过多种技术手段为开发者提供了全面的线程安全支持。首先,Spring采用线程安全的数据结构如ConcurrentHashMap,通过分段锁机制提升并发性能并保证数据正确性。其次,Spring利用对象锁定机制,如synchronized关键字,确保多线程环境下对象的操作安全。第三,Spring通过线程池管理线程,减少资源消耗,提高系统稳定性和响应速度。第四,Spring的事务管理功能保障数据一致性,自动回滚异常操作。最后,Spring默认采用
2025-05-18 06:30:00
18
原创 MyBatis 插件机制深度解析:从原理到实践
MyBatis插件机制通过责任链模式和动态代理实现,允许开发者在SQL执行过程中拦截和增强Executor、StatementHandler、ParameterHandler、ResultSetHandler四大核心组件的方法调用。开发者需实现Interceptor接口,并通过@Intercepts和@Signature注解指定拦截方法。插件配置在MyBatis配置文件中注册后,MyBatis在启动时会解析并织入插件。插件通过Proxy.newProxyInstance创建代理对象,在方法调用时执行自定义逻
2025-05-18 06:00:00
22
原创 MyBatis 执行流程深度解析:一文看懂数据流转全过程
MyBatis是Java开发中常用的持久层框架,其执行SQL语句的流程包括四个主要步骤:首先,通过加载配置文件并构建SqlSessionFactory来获取SqlSession,这是与数据库交互的核心接口。其次,通过SqlSession获取Mapper接口的代理对象,并委托Executor执行器处理SQL查询。Executor在执行前会通过StatementHandler设置参数,并执行查询操作。接着,ResultSetHandler根据映射规则将结果集转换为Java对象。最后,完成操作后关闭SqlSess
2025-05-17 20:13:24
25
原创 MyBatis 核心组件源码分析
MyBatis是Java中广泛使用的持久层框架,以其灵活的SQL映射和强大的扩展性受到开发者青睐。本文通过源码分析,深入探讨了MyBatis的四个核心组件:SqlSessionFactory、SqlSession、Executor和MappedStatement。SqlSessionFactory作为入口,负责创建SqlSession,其构建过程涉及配置文件的解析和Configuration对象的填充。SqlSession是数据库操作的入口,通过Executor执行具体的SQL操作。Executor作为SQ
2025-05-17 20:05:36
122
原创 SpringBoot开启事务
在SpringBoot中开启事务管理主要依赖于Spring的声明式事务机制,配置简单且高效。首先,在主应用类上添加@EnableTransactionManagement注解以启用事务管理功能。其次,通过添加JDBC或JPA依赖,SpringBoot会自动配置数据源和事务管理器。接着,在服务层方法上使用@Transactional注解来标记需要事务管理的方法,可以自定义传播行为、隔离级别、超时时间等参数。需要注意的是,@Transactional注解通过Spring AOP代理生效,因此同一类内部的方法调用
2025-05-17 06:00:00
14
原创 Java 接口中实现异步处理的方法
在Java中,接口本身不能直接实现异步逻辑,异步处理需要在实现接口的类中通过多线程、异步框架或回调机制来实现。常见的实现方式包括:1. 多线程:通过创建线程或线程池执行异步任务,适合轻量级场景。2. CompletableFuture:Java 8+ 提供的异步编程工具,支持回调链和流式处理,代码简洁。3. Spring的@Async注解:在Spring项目中,通过注解将方法标记为异步执行,框架自动管理线程池,适合企业级应用。4. 回调机制:定义包含回调方法的接口,异步任务完成后主动调用回调,适用于老版本J
2025-05-16 10:46:20
27
原创 导出mysql表的字段信息
COLUMN_TYPE`:数据类型(如 `varchar(255)`、`int`)若要导出 MySQL 表的字段信息,有多种方法可供选择。2. 选中要导出的表,右键点击后选择"Table Inspector"。`IS_NULLABLE`:是否允许为空(`YES` 或 `NO`)方法一:使用 `SHOW COLUMNS` 查询。1. 使用 `mysqldump` 导出表结构。`COLUMN_COMMENT`:字段注释。`COLUMN_DEFAULT`:默认值。`COLUMN_NAME`:字段名称。
2025-05-14 05:45:00
272
原创 反射技术在 MyBatis 中的应用和源码分析
MyBatis框架中,反射技术是其实现灵活映射和动态代理的核心机制。主要应用场景包括:1. 映射器接口代理:通过JDK动态代理和反射,MyBatis允许开发者通过接口定义数据库操作,无需编写实现类。2. 结果集映射:使用反射动态设置对象属性,将SQL查询结果映射到Java对象。3. 参数处理:通过反射获取参数对象的属性值,设置到SQL语句中。4. 插件机制:通过动态代理和反射实现方法拦截和增强。MyBatis通过Reflector和MetaObject等核心类封装反射操作,提高了反射效率并简化了开发。这些技
2025-05-14 05:30:00
22
原创 反射技术在 Spring DI、IOC 和 AOP 中的应用和源码分析
Spring 的 IOC(控制反转)和 DI(依赖注入)是其核心特性,通过反射机制,Spring 容器可以在运行时动态地创建和管理 Bean 对象,并将依赖关系注入到相应的 Bean 中。在 Spring AOP 中,JdkDynamicAopProxy 类是基于 JDK 动态代理实现的 AOP 代理类,其中 invoke 方法使用反射来调用目标方法和增强方法。通过以上分析可以看出,反射机制是 Spring IOC、DI 和 AOP 实现的重要基础,它使得 Spring 框架具有强大的灵活性和扩展性。
2025-05-13 06:30:00
25
原创 总结一下Java的反射技术和应用场景
Java的反射(Reflection)是指在运行时获取一个类的所有信息(包括成员变量、方法、构造函数等),并且可以在运行时调用对象的方法或操作对象的属性。以下是对Java反射技术及其应用场景的总结:1、反射技术要点实现反射的关键类1.Class类:代表一个类,可通过它获取类的各种信息,如类名、方法、字段等。2. Field类:代表类的成员变量,可用于获取和设置对象的属性值。3. Method类:代表类的方法,可用于调用对象的方法。4. Constructor类:代表类的构造方法,可用于创建对象。
2025-05-13 06:00:00
20
原创 总结Java保证线程安全的方式
CopyOnWriteArrayList:写时复制的 List,在进行写操作时,会先复制一个新的数组,修改完成后再将新数组赋值给原数组,读操作则不需要加锁,适用于读多写少的场景。当线程数量超过许可数量时,其他线程需要等待,从而保证资源的安全使用。ConcurrentHashMap:线程安全的哈希表,采用分段锁机制,允许多个线程同时进行读操作,写操作则需要获取锁。ThreadLocal 为每个线程提供了一个独立的变量副本,每个线程只能访问自己的变量副本,避免了多线程之间的竞争。
2025-05-12 06:00:00
25
原创 Java中的过滤器与拦截器
在 Java Web 开发中,过滤器(Filter)和拦截器(Interceptor)是两个非常重要的概念,它们在请求处理流程中扮演着不同的角色,用于实现诸如日志记录、权限验证、字符编码转换等功能。过滤器和拦截器在 Java Web 开发中都有着重要的作用,它们可以帮助我们实现一些通用的功能,提高代码的复用性和可维护性。拦截器是 Spring MVC 框架中的一部分,它可以在请求处理的不同阶段进行拦截,如请求处理前、请求处理后、视图渲染前等。拦截范围:过滤器可以拦截所有的请求,包括静态资源请求;
2025-05-12 05:15:00
16
原创 Java中线程安全的集合类及其内部原理
ConcurrentSkipListMap 是线程安全的有序映射,ConcurrentSkipListSet 是基于 ConcurrentSkipListMap 实现的线程安全的有序集合,它们借助 CAS 和锁机制来保证线程安全。当进行写操作(如 add、remove)时,会先复制一份新的数组,在新数组上完成修改操作,最后将原数组引用指向新数组。Java 7 及以前:采用分段锁机制,将整个哈希表划分成多个段(Segment),每个段都是一个独立的小哈希表,各段之间的操作可并行进行。
2025-05-11 06:00:00
24
原创 Java 并发情况下,保证数据最终一致性
在 Java 并发场景中,确保数据最终一致性是一项重要的任务,特别是在分布式系统或者多线程环境下。最终一致性指的是在一段时间后,所有副本的数据会达到一致状态。借助消息队列,数据更新操作能异步执行,从而保证最终一致性。消息队列能够实现异步通信,将数据更新操作封装成消息发送到队列,由消费者按顺序处理消息,进而保证数据最终一致。为数据添加版本号,在更新数据时检查版本号,只有版本号匹配才能更新,这样可避免并发更新导致的数据不一致。当更新操作失败时,重试机制会进行多次重试,直至操作成功,以此保证数据最终一致。
2025-05-11 04:00:00
34
原创 Stack Overflow常见场景和解决方法
在复杂程序里,方法间嵌套调用层次过多,每层调用都会在栈上占用一定空间,当调用链长度超出栈容量,就会出现栈溢出。递归函数没有合适的终止条件或者终止条件设置有误,会持续调用自身,不断在栈上创建新的栈帧,使栈空间耗尽。这将栈空间大小设置为 2MB,但这只是临时的解决方案,不能从根本上解决栈溢出问题,并且过大的栈空间可能会导致内存使用不合理。可以将复杂的方法拆分成多个简单的方法,避免过深的嵌套。若方法A调用方法B,方法B又调用方法A,且没有有效的退出机制,会造成无限循环调用,导致栈溢出。2. 过深的方法嵌套调用。
2025-05-10 06:30:00
25
原创 Java内存泄漏的场景和解决方法
使用静态集合类(如`static List`、`static Map`等)来存储对象引用,这些对象可能因为静态集合的生命周期与应用程序相同,即使对象不再被使用,也无法被回收。例如,在一个类中定义了一个静态的`List`,在程序运行过程中不断向其中添加对象,却没有合适的清理机制。例如,在外部类中定义了一个内部类,内部类的方法中访问了外部类的成员变量,并且内部类的实例在外部类实例销毁后仍然存在。场景:当在方法内部创建对象,且该对象的引用被存储在类的成员变量中,在对象不再使用时,引用未被设置为null。
2025-05-10 06:00:00
35
原创 ArrayList和LinkedList对比分析
当元素数量超过数组容量时,会创建一个更大的新数组,并将原数组中的元素复制到新数组中。LinkedList:在链表头部或尾部插入或删除元素时,时间复杂度为 O(1),因为只需要修改节点的引用。ArrayList:由于使用连续的内存空间,会预留一定的容量用于后续元素的添加,可能会造成一定的内存浪费。ArrayList:由于使用数组存储元素,通过索引可以直接访问数组中的元素,时间复杂度为 O(1)。ArrayList:适用于需要频繁随机访问元素,而插入和删除操作主要在数组末尾进行的场景。
2025-05-09 06:00:00
16
原创 Spring 依赖注入源码深度剖析
通过对 Spring 依赖注入源码的深入分析,我们了解了 Spring 如何加载和解析 Bean 定义,如何创建 Bean 实例并进行依赖注入,以及自动装配功能的实现原理。在 populateBean 方法中,会根据 BeanDefinition 中的信息,使用不同的注入方式(如按名称注入、按类型注入)将依赖对象注入到目标对象中。在 autowireByType 方法中,会遍历目标对象的属性,根据属性的类型从 BeanFactory 中查找匹配的 Bean 实例,并将其注入到属性中。
2025-05-09 05:00:00
12
原创 Servlet 源码分析
通过对 Servlet 源码的深入分析,我们了解了 Servlet 的生命周期、核心接口和类的实现,以及 Servlet 容器与 Servlet 之间的交互过程。Servlet 遵循特定的生命周期,从初始化、处理请求到销毁,每个阶段都有明确的行为。Tomcat 首先会根据请求的 URL 找到对应的 Context 对象,然后在 Context 中查找匹配的 ServletMapping,最后根据 ServletMapping 找到对应的 Servlet 实例,并调用其 service 方法处理请求。
2025-05-08 05:45:00
20
原创 Netty 源码分析
ChannelHandler:是处理 Channel 事件的核心接口,它有两个重要的子接口:ChannelInboundHandler 用于处理入站事件(如数据读取),ChannelOutboundHandler 用于处理出站事件(如数据写入)。EventLoop:负责处理注册到它上面的 Channel 的 I/O 事件,它是一个单线程的事件循环,一个 EventLoop 可以处理多个 Channel。Channel:表示一个网络连接的抽象,它提供了一系列的方法用于操作网络连接,如读写数据、关闭连接等。
2025-05-08 05:00:00
366
原创 使用Java NIO 实现一个socket通信框架
使用Java NIO(非阻塞I/O)实现一个Socket通信框架,可以让你构建高性能的网络应用。NIO提供了Channel、Buffer和Selector等核心组件,支持非阻塞模式下的网络编程。下面是一个简单的例子,展示了如何使用Java NIO创建一个基本的服务器端和客户端进行Socket通信。
2025-05-07 16:22:42
125
原创 用Netty实现一个socket通信框架
Netty 是一个基于 NIO(Non-blocking I/O)的客户端-服务器框架,它极大地简化了TCP、UDP、HTTP等协议的网络应用开发。下面我将为你提供一个基本的使用Netty实现Socket通信的例子,包括服务端和客户端的基本代码结构。
2025-05-07 16:15:19
20
原创 kingbase权限管理
以具有足够权限的用户登录后,执行以下 SQL 语句来授予用户对模式的相应权限。假设你要授予用户your_user对模式的使用权限:sql在上述代码中,将your_user替换为实际的用户名,将替换为实际的模式名。
2025-04-14 16:48:44
758
原创 java 递归遍历JSON字符串获取某个字段的值
在 Java 中,若要递归遍历 JSON 字符串并获取特定字段的值,可借助 Jackson 库。以下是一个示例代码,它能实现递归遍历 JSON 字符串并获取指定字段的值。
2025-04-14 16:11:07
395
原创 Java并发编程(26)—— Unsafe类的源码解读以及使用场景
堆外是相对于JVM的内存来说的,通常我们应用程序运行后,创建的对象均在JVM内存中的堆中,堆内存的管理是JVM来管理的,而堆外内存指的是计算机中的直接内存,不受JVM管理。相比C和C++的开发人员,作为一名Java开发人员是十分幸福的,因为在Java中程序员在开发时不需要关注内存的管理,对象的回收,因为JVM全部都帮助我们完成了。对于Java中并发编程,Java的源码里面存着这大量的Unsafe类的使用,主要使用的是和CAS操作相关的三个方法,所以搞清楚这三个方法,对看懂Java并发编程的源码有很大帮助。
2024-09-09 16:05:07
358
原创 Java并发编程(24)—— JUC并发编程类库详解
CyclicBarrier 是一个同步辅助类,用于让一组线程到达一个屏障(barrier)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。这意味着在修改操作发生时,会创建一个新的数组,并将现有的所有元素复制到新数组中,然后在新数组上进行修改。这意味着在修改操作发生时,会创建一个新的数组,然后将现有的所有元素复制到新数组中,并在新数组上进行修改。当一个线程到达交换点时,它会调用 exchange() 方法,该方法会尝试将该线程的数据与另一个线程的数据交换。
2024-09-03 18:53:37
299
原创 Java并发编程(23)—— Volatile在并发编程中的应用
它是CPU或编译器在内存随机访问操作中的一个同步点,确保此点之前的所有读写操作都执行完毕后,才能开始执行此点之后的操作。内存屏障(Memory Barrier)是一种同步机制,用于防止处理器或编译器对内存操作的指令进行重排序。在Java内存模型(JMM)中,每个线程都有自己的工作内存(也称为本地内存),用于存储共享变量的副本。是Java中的一个关键字,用于修饰变量,特别是那些会被多个线程访问和修改的共享变量。变量,JVM会在其读写过程中插入特定的内存屏障指令,以确保其内存语义的正确实现。
2024-08-30 03:45:00
137
原创 Java并发编程(21)—— Atomic 原子类总结
第一步,因为对象的属性修改类型原子类都是抽象类,所以每次使用都必须使用静态方法 newUpdater()创建一个更新器,并且需要设置想要更新的类和属性。该类将整数值与引用关联起来,可用于解决原子的更新数据和数据的版本号,可以解决使用 CAS 进行原子更新时可能出现的 ABA 问题。该类将整数值与引用关联起来,可用于解决原子的更新数据和数据的版本号,可以解决使用 CAS 进行原子更新时可能出现的 ABA 问题。基本类型原子类只能更新一个变量,如果需要原子更新多个变量,需要使用 引用类型原子类。
2024-08-30 03:30:00
141
原创 Java并发编程(22)—— CurrentHashMap源码分析
java 并发包中提供的是一个线程安全且高效的HashMap ,也是面试的高频考点。下面将围绕主题:ConcurrentHashMap 如何实现高效地线程安全?以及在Java8中它从设计实现上有哪些演进?这篇文章一开始我以为会比较简单,但是在深入源码分析时,遇到了很大的阻碍,比前面我们分析AQS以及读写锁的源码要难理解的多,断断续续也写了4天了。如果你看完还是没有理解的话,那我在这里表示深深的歉意,同时也欢迎你和我一起沟通。
2024-08-30 03:00:00
175
原创 PyTorch深度学习实战(27)—— PyTorch分布式训练
分布式训练等价于增大了一次训练的batch_size,传统的批标准化仅是对一个batch上的数据进行操作,在分布式训练中不同进程对不同的数据进行操作,相当于每一个进程的BN层处理的batch。在确保每个进程执行的操作没有问题后,可以尝试先在较小的集群上(例如,单个节点启动两个进程,两个节点启动两个进程等)启动分布式训练,以此验证进程间的同步与协作是否出错,这样的操作可以降低复现错误、调试程序的成本。在分布式训练中,不同进程之间需要通信来完成参数的汇总更新,因此进程间的同步是至关重要的。
2024-08-29 15:45:55
706
原创 PyTorch深度学习实战(26)—— PyTorch与Multi-GPU
至此,网络完成了一次反向传播,网络参数仅在GPU-0上进行更新。在上述流程中,只需要GPU-0将数据与模型加载至多块GPU上,各GPU就可以并行地进行前向传播与反向传播,也就是说并行中的一个epoch完成了单个GPU多个epoch的工作,从而加速了模型的训练。非阻塞通信可以将进程本身的计算时间与进程间的通信时间重叠起来,即在完成计算的同时,交由特定的通信模块完成通信部分。不难发现,在MPI的帮助下,不同进程之间的通信是比较容易的,因此读者应该侧重于理解分布式计算的思想,并将该思想应用在实际的程序设计当中。
2024-08-29 15:39:11
521
原创 MySQL慢查询日志使用与分析
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。由慢查询日志来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒钟的SQL,结合之前explain进行全面分析。1.慢查询的开启并捕获:开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,至少跑1天,看看生产的慢SQL情况,并将它抓取出来。
2024-08-28 09:18:59
518
原创 Java并发编程(20)—— ConcurrentHashMap详解
需要高效的并发性能:相对于 Hashtable 或者 Collections.synchronizedMap() 等同步的哈希表实现,ConcurrentHashMap 在高并发情况下有更好的性能表现。1.锁的颗粒度更小,当数据落在数组上时,使用cas锁头节点,当发生冲突时数据落在节点上时,使用synchronized锁冲突的节点减少了并发冲突。ConcurrentHashMap是Java并发很重要的组件,也是大厂面试经常考察的对象,下面我就全面来详解ConcurrentHashMap。
2024-08-22 04:15:00
110
原创 Java并发编程(19)—— CompletableFuture异步多线程
crud系统真的很少用,一般其实都是中间件类的系统会大量的运用并发编程的知识,各种请求都是异步化的执行,比如说大家可以去看看rocketmq、elasticsearch这一类中间件的源码,他们会经常用到。或者说大家在自己公司里研发一些非crud类的系统,比如说一些公司内自研的一些底层系统,基础系统,中间件系统,其实也会经常用到并发编程,也就是异步编程的模式,那如果大家未来有可能用到异步编程的话,建议还是来了解一下今天的知识点,因为传统的异步编程其实控制你开的那个线程其实真的很麻烦。
2024-08-22 03:45:00
199
原创 Java并发编程(18)—— 常用并发工具类
生产者线程将元素放入队列,消费者线程从队列中取元素,队列为空时消费者线程阻塞。让一组线程到达一个共同的同步点,然后一起继续执行。是一个线程安全的队列,支持阻塞操作,适用于生产者-消费者模式。控制访问资源的线程数,可以用来实现限流或访问控制。适用于需要所有线程在某个点都完成后再继续的场景。适用于主线程需要等待多个子线程完成任务的场景。是一个线程安全且高效的哈希表,支持并发访问。在资源有限的情况下,控制同时访问的线程数量。适用于需要频繁对数值进行无锁操作的场景。一个线程(或多个)等待其他线程完成操作。
2024-08-21 09:24:06
79
原创 PyTorch深度学习实战(25)—— 使用向量化思想解决实际问题
显然,这里需要在左上角和右下角坐标值的基础上构造出$n \times n$ 的结果,然后对feature map进行整数数组索引,从而得到一个$C \times N \times n \times n$ 的结果,最后相乘便完成了ROI Align操作。本文通过三个示例说明了向量化思想在实际场景中的应用,读者应该仔细体会其中的向量化思想,并在解决实际问题时尝试使用向量化思想进行编程,从而提高程序的运行效率。将上一步得到的量化RoI特征进一步细化为量化的空间单元(bin),也就是对每一个单元的边界进行量化。
2024-08-21 04:45:00
489
原创 PyTorch深度学习实战(24)—— 爱因斯坦操作einsum 和 einops
爱因斯坦操作凭借其便捷、直观的特点,在视觉Transformer中得到了广泛的应用,下面以Vision Transformer(ViT)在很多网络结构中,需要提取通道间或者空间像素之间的信息,从而完成通道的部分维度和空间的部分维度之间的转化。注意: 对于res1和res2,虽然它们的shape一样,但是由于提取维度时的顺序不一样,它们的数值并不相同。进行维度间的相互转化时,一定要注意维度的顺序,如果提取的顺序有误,那么无法得到正确的目标结果。除了上面介绍的爱因斯坦求和,其他的爱因斯坦操作都封装在。
2024-08-21 03:00:00
577
原创 PyTorch深度学习实战(23)—— 用高级索引实现卷积
根据卷积的定义,只需要遍历整个图像,依次获取与卷积核相乘的子块,相乘求和后就可以得到卷积的结果。卷积运算还可以从整数数组索引的角度考虑,根据卷积的计算公式,在确定了输入形状和卷积核大小后,输出的Tensor形状也就固定了。本文介绍了一些特殊的索引操作:整数数组索引与布尔数组索引,灵活的运用这些索引操作可以有效地完成数据的变形与转换。的思路,将整张图像提前转换成与卷积核相乘的子块,再把每个子块的维度展平,此时形状从。从上面的示例可以看出,通过整数数组索引完成的卷积操作,它的结果与使用。命令就能得到最终结果。
2024-08-20 00:45:00
269
原创 PyTorch深度学习实战(22)—— 高级索引
从上面的例子可以看出,整数数组索引的机制就是先将索引数组对应位置的数字,组合成源Tensor实例的索引,再根据索引值和Tensor的size、storage_offset和stride属性计算出Storage空间上的真实索引,最后返回结果。当索引数组的个数N等于Tensor的维度数tensor.ndim时,索引输出的形状等价于index的形状(index.shape),输出的每一个元素等价于。,那么直接将所有高级索引所在区域的维度转换成高级索引的维度,Tensor的其他维度按照基本索引正常计算。
2024-08-20 00:15:00
221
【CTF-Misc图片隐写】基于Python的LSB隐写及工具应用:课程设计与实践总结
2025-05-19
【医学影像处理】基于计算机视觉的医学影像辅助诊断系统设计:胸部X光影像疾病检测与分析
2025-05-18
【机器人技术】基于多学科融合的智能分拣机器人开发:从机械结构到软件控制的全流程设计与实现
2025-05-18
前端开发基于TypeScript的贪吃蛇游戏课程设计:实现面向对象编程与游戏开发基础教学
2025-05-18
前端开发基于JavaScript的俄罗斯方块游戏课程设计:功能实现与用户体验优化使用JavaScript开发俄罗斯
2025-05-18
Web开发基于PHP的俄罗斯方块游戏课程设计:PHP俄罗斯方块游戏开发全流程解析与实现
2025-05-18
【Go语言编程】基于模块化设计的超市收银系统:功能实现与数据持久化
2025-05-18
C#编程基于C#的超市收银系统课程设计:实现商品管理、扫码结账及数据持久化功能
2025-05-18
【数字信号处理】基于MATLAB的数字滤波器设计:FIR与IIR滤波器在语音去噪和图像边缘检测中的应用及性能分析
2025-05-18
【计算机科学】基于Python的超市收银系统课程设计:实现商品管理、扫码结账、总价计算与小票生成功能
2025-05-18
Java编程基于面向对象设计的图书管理系统课程设计:链表实现图书管理与持久化存储文档详细描述了一个
2025-05-18
汇编语言基于8086汇编的学生成绩管理系统设计与实现:涵盖信息录入、查询、排序及文件操作功能
2025-05-18
【AI模型部署】DeepSeek本地部署与WebUI可视化:提升数据隐私与交互体验的详细教程如何在本地环境中
2025-05-17
编程语言Python安装与基础使用全攻略:从入门到精通的详细指南介绍了Python编程语言
2025-05-17
【大语言模型部署】DeepSeek本地部署全攻略:保姆级教程详解大模型环境搭建与应用文档的主要内容
2025-05-17
PyTorch深度学习实战常用神经网络层.docx
2024-08-14
基于多任务卷积网络(MTCNN)和Center-Loss的多人实时人脸检测和人脸识别系统.rar
2024-07-22
ChatGPT大模型学习笔记.rar
2024-07-22
Java+Servlet学生信息管理系统全部源码+SQL+课程设计文档.rar
2024-07-22
Java Spring AOP 面向切面编程的4种实现
2024-07-16
CNN深度学习检测胸部疾病的项目数据集
2024-07-10
北京大学人机交互开放实验室发布的PCB缺陷数据集.txt
2024-07-10
混合型晶圆缺陷探测数据集
2024-07-10
单个和混合缺陷模式的晶圆映射数据集
2024-07-10
用于质量检查的铸件产品图像数据
2024-07-10
工业铸造产品缺陷预测图像数据集
2024-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人