- 博客(417)
- 资源 (10)
- 收藏
- 关注
原创 Java I/O 操作最佳实践
在上一篇文章内存映射文件(Memory-Mapped Files)确实能够提供极高的 I/O 性能,但同时也存在一些潜在的风险和局限性。我们需要权衡利弊,评估是否适合采用这项技术。:内存映射文件能够避免频繁的系统调用和数据复制,对于需要频繁随机访问文件的场景具有明显优势。如数据库索引文件、日志文件的随机追加等。:如果文件内容需要长期驻留在内存中被多次访问修改,内存映射文件可以作为一种替代方案,能够减少内存到内存的数据拷贝。:内存映射文件在处理大文件时表现出色,能够避免一次性读取全部文件内容到内存。
2024-06-03 09:18:34
1182
原创 解锁 Java I/O 力量,一站式掌握文件操作、内存映射等黑科技
文件 I/O:主要由File和等类库提供支持,用于文件系统层面的操作。缓冲 I/O:通过等缓冲流类进行封装,提高I/O效率。字符 I/O家族类用于编码解码字符数据,支持跨平台操作。管道/通道 I/O则为高级I/O提供了统一抽象,支持新I/O模型。网络 I/O:由等网络编程类库组成,用于网络资源读写。对象 I/O:通过可直接序列化/反序列化对象。内存映射 I/O则提供了利用内存映射文件提高IO效率的新模式。可以看出,Java I/O 体系设计非常全面,几乎覆盖了所有常见的资源读写场景。
2024-06-03 09:14:00
945
原创 Java 线程诊断实战-全面解锁线程转储分析技巧
在开始之前,我们先简单了解一下什么是线程转储。线程转储是 JVM 用于诊断线程问题的核心工具,它可以导出运行中的线程堆栈信息。这份信息不仅包含了每个线程的调用堆栈,还会展示线程的状态、锁持有情况等诸多细节,为我们分析问题提供了极为宝贵的数据来源。对应到实践中,我们可以通过多种途径获取线程转储快照,如使用 JDK 命令行工具、第三方可视化工具、或在代码中主动触发等。无论采取何种手段,线程转储对于诊断线程相关问题都不可或缺。
2024-06-01 11:39:52
1103
原创 Java OutOfMemoryError 剖析指南-内存分配策略大揭秘
今天,我们来探讨一个 Java 程序员再熟悉不过的话题 —— OutOfMemoryError(OOM)。这种 RuntimeException 在我们的日常工作中屡见不鲜,但你真的了解其根源所在吗?本文将为您深入剖析 OOM 产生的原因,以及 JVM 内存管理和分配的相关机制,并通过实例代码完成形象演示。最后,我将留给大家几个思考题,探讨如何更好地避免和诊断 OOM 问题。那么,让我们开始今天的分享吧!
2024-06-01 10:40:25
731
原创 揭秘Java I/O体系-从装饰者模式到Reader、Writer流
通过上述讲解,相信大家已经对Java I/O体系有了更深入的理解。我们首先剖析了装饰者模式在其中的巧妙应用,随后分别介绍了InputStream/OutputStream和Reader/Writer两大流体系的工作原理。通过示例代码,我们也亲身体会了Java I/O操作的便利之处。当然,本文只是对Java I/O体系的一个概览。在实际开发过程中,我们还需要注意流的正确使用、异常处理、性能优化等诸多细节问题。
2024-05-31 21:12:41
774
原创 深入探索Java SPI机制-动态扩展的艺术
SPI(Service Provider Interface)机制是Java提供的一种服务提供者发现机制。它允许实现者对某个接口提供具体的实现,并在运行时动态地加载和使用这些实现。SPI机制是Java模块化系统的重要组成部分,它使得Java框架可以轻松扩展,同时也支持替换组件。SPI机制为Java应用的模块化和扩展性提供了强大的支持,但随着微服务架构的兴起,传统的SPI机制是否还能满足我们的需求?未来,我们是否需要一种更加灵活、高效的服务发现机制?这些问题,值得我们每一位Java开发者深思。
2024-05-31 10:14:20
926
原创 剖析 ClassLoader 奥秘,探寻 Java 加载黑魔法
是 Java 中用于加载类的一个抽象类。在 Java 程序运行时环境中,负责读取 Java 字节代码(通常存储在.class文件中),并将其转换成对象。每个Class对象都包含有关类的信息,例如类名、字段、方法等。#### 1、Java 虚拟机(JVM)提供了几种类型的 `ClassLoader`引导类加载器(Bootstrap ClassLoader):这是最顶层的加载器,负责加载 Java 核心库,例如。扩展类加载器(Extension ClassLoader)
2024-05-30 18:47:59
1194
1
原创 深入解读 Android Hook 技术-从原理到实践
Hook技术,源自计算机编程中的“钩子”概念,是一种在程序执行过程中动态改变程序行为的技术,是一种允许用户或开发者拦截和处理系统事件或方法调用的技术。它通过在程序执行路径中插入自定义的代码片段,从而能够实现对程序行为的拦截和修改。动态修改: Hook 技术是在程序运行时进行修改,而不是在编译时。这使得它可以灵活地应用于各种场景,而不需要修改程序源码。透明性: 使用 Hook 技术进行修改是透明的,对于程序的其他部分来说是不可见的。这有利于保持程序的整体一致性和稳定性。可扩展性。
2024-05-30 12:06:49
3610
1
原创 精通Java异常机制,写出高质量代码
在我们深入探讨之前,先让我们理解一下什么是异常。异常(Exception)是指程序在执行过程中发生的不正常情况,如文件未找到、网络连接中断、数组越界等。如果不做任何处理,程序将终止运行。除了Java内置的异常类型,我们还可以根据需要自定义异常类型。通常继承Exception或RuntimeException即可。super();throw new MyException("x不能为负数");本文涵盖了异常处理的方方面面,但Java的异常处理机制还有很多值得探讨的地方。
2024-05-29 17:54:47
789
原创 JVM 内存布局深度解析,你所不知道的一面
首先,我们需要定义一个本地方法。这通常在C或C++中完成,并使用JNIEXPORT和Java_// 本地方法实现\n");通过本文,我们深入探究了 JVM 内存布局的方方面面。从最重要的堆内存,到方法区的元数据信息,再到虚拟机栈和本地方法栈中的线程私有区域,相信你现在对 JVM 的内存分配和管理有了全新的认识。不过,JVM内存管理远不止这些。比如上文中提到的垃圾收集器,它是如何判断对象是否需要回收?各种垃圾收集算法的优缺点是什么?分代收集器工作原理又是怎样的?
2024-05-28 09:13:23
945
原创 Java 类加载机制解密一探到底
类的生命周期在Java中指的是从类被加载到虚拟机内存中,到最终被卸载的整个过程。包括以下5个阶段:加载、验证、准备、解析和初始化。其中加载、验证、准备、初始化这4个阶段的顺序是确定的,只有解析阶段在特定情况下可以在初始化之后再开始。通过类全限定名获取定义此类的二进制字节流,是类加载过程的第一步。在这个任务中,Java虚拟机(JVM)需要确定类的名字(即全限定名,包括包名和类名),然后通过某种机制(如文件系统、网络、类路径等)获取到这个类的二进制字节流。
2024-05-28 09:00:22
1114
原创 极致优化之道-JVM字节码调优全揭秘
以上就是本文关于JVM字节码优化的主要内容。后续我还会为您分享更多实战技巧,一同探索字节码优化的广阔领域,为编写高性能Java程序插上腾飞的翅膀!让我们拭目以待!
2024-05-27 12:14:52
1150
原创 探索Java的DNA-JVM字节码深度解析
字节码不仅支持Java语言,还支持所有编译到字节码的JVM语言,如Groovy、Scala、Kotlin等。此外,字节码层面的优化可以显著提高程序性能。字节码是Java程序的灵魂,掌握了字节码,就掌握了程序性能的钥匙。本文深入探讨了Java字节码的内部结构和工作原理,然而,字节码的世界远比我们所见的要深邃。在下一篇文章中,我们将揭开JVM调优的神秘面纱,探索如何通过字节码优化让Java程序运行如飞。敬请期待!
2024-05-27 12:11:04
1183
原创 Java虚拟机揭秘-底层驱动力,性能保障!
Java虚拟机(Java Virtual Machine,JVM)是一个虚拟的计算机,它有自己完善的硬件架构,能够运行Java字节码。JVM有着与硬件无关的指令集,屏蔽了与具体操作系统相关的信息,使得Java语言编译后的字节码可以在多种平台上运行。这正是Java"一次编写,处处运行"的根本所在。JVM 并非只能运行Java语言,而是面向多语言的运行平台,只要遵守JVM的约定(只要编译成.class文件),就可以运行在JVM虚拟机上。
2024-05-25 17:30:01
1305
原创 Java虚拟机原理(下)-Dalvik vs ART-探秘Android虚拟机内在机制
Android系统作为移动端主流平台,其高效的虚拟机无疑是其核心竞争力之一。今天,就让我们一起剥开Dalvik和ART虚拟机的外衣,深入解析它们的工作原理和优缺点,帮助你全面把握Android系统的运行机制。
2024-05-25 10:44:33
1292
原创 Java虚拟机原理(中)-揭开Java内存运作的神秘面纱
主内存是Java虚拟机中的一块共享内存区域,所有线程都可以访问。它主要用于存储线程共享变量,例如实例字段、静态字段等。
2024-05-24 08:24:07
1079
1
原创 Java虚拟机原理(上)-揭秘Java GC黑匣子-知其所以然,从此不再捆手捆脚
以上内容涵盖了GC的常见知识,但Java GC为主题的探讨绝不止于此。比如说,JDK中还引入了全新的ZGC算法,用于低延迟处理;G1作为一种优秀的分代实现,如何工作;怎样有效地配置GC参数…等等,这些都是值得我们去学习和思考的重要话题。
2024-05-24 08:20:09
1045
原创 三种高效Android JSON解析技术,让你的数据传输畅通无阻!
这三种解析JSON的方案各有特点,我们可以根据具体需求和项目复杂程度权衡选择。而在我看来,Google Gson则是大多数应用的不二之选,它Strike了简洁和性能之间最好的平衡。讨论到这里,你是否也有自己的看法和经验?欢迎在评论区继续交流探讨,分享你在JSON解析这条路上的点点心得。
2024-05-23 09:23:37
1763
原创 解锁Android高效数据传输的秘钥 - Parcelable剖析
作为Android开发者,我们经常需要在不同的组件(Activity、Service等)之间传输数据。这里的"传输"往往不仅仅是简单的数据复制,还可能涉及跨进程的内存复制操作。当传输的数据量较大时,这种操作可能会带来严重的性能问题。而Android系统为我们提供了Parcelable这一高效的序列化传输机制,很好地解决了这一痛点。今天,就让我们一起来探讪Parcelable的神奇之处。
2024-05-23 09:19:17
1150
原创 揭开Java序列化的神秘面纱(下)Serializable源码剖析
在上一篇文章中我们明白了 Serializable 的大致用法。感兴趣的朋友,请前往查阅。。本篇文章重点关注 Serializable 序列化的实现 ,一切从源头说起,Java序列化的设计和实现都源于Serializable这个看似简单的接口。作为Java序列化机制的基石,它的由来和精髓值得我们仔细探讨。
2024-05-22 09:27:25
835
原创 揭开Java序列化的神秘面纱(上)Serializable使用详解
自定义序列化逻辑允许开发者控制对象序列化和反序列化的详细过程。在Java中,可以通过重写对象类的和readObject方法来实现自定义序列化。这对于优化性能、处理非可序列化对象、实现版本控制或添加额外的逻辑非常有用。第一步,重写方法这个方法是在对象序列化时被调用的。可以在这里添加自定义的序列化逻辑,比如只序列化对象的某些字段,或者在序列化之前进行某些计算或检查。第二步,重写readObject方法这个方法是在对象反序列化时被调用的。
2024-05-22 09:22:18
1203
原创 解锁AsyncTask-Android异步任务的瑞士军刀
尽管AsyncTask简单任务:对于不需要复杂依赖关系或并行执行的简单后台任务,AsyncTask提供了快速实现的方式。快速原型开发:在快速开发原型或概念验证阶段,AsyncTask可以快速实现后台处理和 UI 更新。教育目的:对于初学者来说,AsyncTask是学习 Android 后台处理和线程间通信的一个好例子。然而,对于更复杂的应用场景,建议使用更灵活和功能强大的并发工具,如包中的FutureCallable等。
2024-05-21 08:52:30
935
原创 响应式拿手好道-RxJava-RxAndroid实战指南
总的来说,掌握了RxJava/RxAndroid这一宝贵的响应式编程利器,必将使我们在移动开发的道路上阔步前行,逐步解锁高阶异步编程的大门。当然,这绝非止步之路,Kotlin协程等新兴技术的涌现,也将给响应式编程领域注入新的活力。保持开放的学习心态,我们定能驾驭更多先进工具,创造出更卓越的作品。
2024-05-21 08:51:31
806
原创 Nginx从入门到精通(一)Nginx 介绍
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。FTP服务器,通常会提供一个上传的功能,其他应用如果需要静态资源就从该静态服务器中获取。
2024-05-20 18:12:17
495
原创 从技术的角度剖析Nginx框架
当然,这里的并发请求,是指未处理完的请求,线程只有一个,所以同时能处理的请求只有一个,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出。异步非阻塞的事件处理机制,具体到系统调用就是像 selectpoll/epoll/kgueue 这样的系统调用 ,可以同时监控多个事件,调用他们是阻塞的,但可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。
2024-05-20 17:46:21
1430
原创 揭秘java线程池-高效利器背后的精髓(下)-进阶多线程-Callable、Future和手写线程池实战
监控和度量: 监控线程池的状态和性能指标,如活跃线程数、任务队列大小等。资源隔离: 对于不同类型的任务,考虑使用不同的线程池,以避免资源争抢。优雅关闭: 在应用程序关闭时,提供足够的时间让线程池中的线程优雅地关闭。持续优化: 根据应用程序的实际运行情况,持续调整线程池参数。通过遵循这些最佳实践,可以有效地提高线程池的性能,减少资源浪费,并确保应用程序的稳定性和可维护性。走过如此漫长的篇幅,我们已将关于Callable、Future和线程池实战的知识版图全景勾勒出来。
2024-05-19 12:36:34
1193
原创 Nginx 从入门到精通-Nginx-Web服务器的瑞士军刀
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它的特点是占有内存少、并发能力强,在高连接并发的情况下,可以使用较少的资源提供较高的访问性能。它具有多种工作模式,其中两种主要模式是作为 Web 服务器和反向代理服务器。Nginx:以其高性能、高并发处理能力、低资源消耗和优秀的静态资源服务而受到青睐,适合作为反向代理和静态资源服务器。Apache:以其强大的功能、模块化和灵活性而闻名,适合处理复杂的 Web 应用和动态内容,但资源消耗相对较高。
2024-05-19 11:52:06
1080
原创 揭秘java线程池-高效利器背后的精髓(中)深度剖析Executor线程池框架源码
想要在高并发的环境下编写出高效稳定的应用程序,线程池的"内功"修炼是必不可少的一课。简单的使用线程池固然可以规避资源浪费、解决线程生命周期开销问题。但要彻底发挥线程池的最大潜能,我们必须对它的核心原理有深刻的理解和把握,才能实现线程管理的精细化调度,资源利用的最大化。让我们一起揭开神秘的面纱,解开线程池的奥秘吧!包中的类,它是线程池的核心,我们先来认识一下类。
2024-05-18 18:10:39
735
原创 揭秘java线程池-高效利器背后的精髓(上)java线程池深度解析
通过本文的深入剖析,我们不仅理解了Java线程池的各个方面,还通过实际代码示例加深了对线程池工作机制的认识。然而,线程池的实现源码中隐藏着更多的秘密等待我们去发掘。在下一篇文章中,我们将深入Java线程池的源码,揭示其内部实现的细节,探索如何进一步优化线程池的性能。敬请期待!
2024-05-18 12:12:26
609
原创 Java并发编程纪实-深入CPU调度,线程同步到线程协作的艰辛之路
本篇博文到这里就告一个段落,我们对线程同步和协作的各种手段做了深入的分析和探讨。希望通过本文,你能更好地理解并发编程的本质,为日后编写健壮、高效的多线程程序奠定扎实的基础。如果你在实践中还有任何疑问或心得,欢迎在评论区留言讨论。
2024-05-17 23:25:36
1013
原创 Java注解之神兵利器-轻量级元数据的终极玩法
自定义注解允许开发者创建新的注解类型,而元注解(Meta-Annotations)是用于注解其他注解的注解。@Retention:定义注解的保留策略,即注解在什么阶段起作用。@Target:定义注解可以被应用到哪些元素上,如类、方法、参数等。:指明注解是否被包含在 JavaDoc 中。@Inherited:指明注解是否被子类继承。自定义注解需要使用@interface关键字声明。首先,我们定义一个元注解,用来指定注解的保留策略。接下来,我们创建一个自定义注解,并使用我们刚刚定义的元注解。
2024-05-17 10:42:38
958
原创 泛型之最-构建类型安全的Java代码神器,精解RxJava的泛型玩法!
泛型的本质是参数化类型,可以在定义类/接口或方法时预留类型位置,在使用时再指定具体的数据类型。// 编译器不会报错,但是存在类型安全隐患// 正确// 编译器会报错,防止了ClassCastException类和接口:在类名或接口名后使用尖括号<>来定义类型参数。方法:在方法的返回类型前使用尖括号<>来定义泛型。通配符:使用?来定义通配符,允许不确定的类型。> list) {// 可以添加任何类型的对象到 list 中。
2024-05-16 23:18:18
816
原创 iis&nginx环境一次奇怪的跨域问题解决经过
报错中看,配置的跨域来源Access-Control-Allow-Origin,value是’*, *',需要检查这个域名api.xxxx.com的Access-Control-Allow-Origin设置项。那根据错误就确定了问题的原因就是:Access-Control-Allow-Origin 响应头重复设置导致跨域设置失败。以上均已配置 Access-Control-Allow-Origin 值为* ,可是为什么还会出现上面那个错误呢?由此,我们可能也是同样的原因,为了验证这个问题。
2024-05-16 12:25:25
708
原创 .NET垃圾回收机制之迷-管理内存的秘密武器,提升应用性能的利器!
GC是.NET运行时(CLR)的一部分,主要负责追踪和管理堆内存的内存分配和回收。它的作用就是持续监控托管堆内存,自动回收应用程序不再使用的对象占用的内存。这种自动内存管理机制极大缓解了开发者的工作负担,让我们能专注于业务代码的实现,而不用操心内存管理的事宜。.NET的GC技术一直在不断改进,以提高性能和功能。比如.NET 6推出了基于Region的新内存模型。那么,在未来会有更先进、更高效的内存管理方式出现吗?让我们拭目以待!本文到此结束,希望通过上述内容,您能够彻底理解.NET中垃圾回收机制的奥秘。
2024-05-15 20:49:59
355
原创 C#中的值类型和引用类型到底有何不同?一文读懂它们的本质差异!
值类型存储在栈内存中,它们在赋值或传参时会复制一份新的副本。常见的值类型有bool、int、float、decimal、struct等。引用类型存储在堆内存中,它们在赋值或传参时,复制的只是一个指向堆内存实例的引用,而不会复制实例本身。常见的引用类型有string、object、array和自定义类等。引用类型的内存泄漏一直是C#开发者需要警惕的一个问题。那么未来是否会有更好的解决方案来解决这一问题呢?让我们拭目以待!本文到此结束,希望通过上述内容,您能够彻底理解C#中值类型和引用类型的区别。
2024-05-15 15:24:51
1777
原创 深入探索Android签名机制:从v1到v3的演进之旅
消息摘要(Message Digest)是一种通过单向散列算法对任意长度的数据进行计算并产生固定长度的小型摘要信息(又称哈希值或指纹)的技术。(1)、消息摘要主要特点压缩性:无论输入的数据有多大,计算出来的消息摘要的长度都是固定的,通常为128位或更长。易计算:给定需要计算摘要的数据,非常容易计算出消息摘要。隐行性:相同的输入必定得到相同的输出,但反过来,由输出极其困难推导出输入值。抗碰撞:理论上不可能找到两个不同的输入计算出相同的消息摘要。常见的消息摘要算法有:MD5、SHA-1、SHA-256等。
2024-05-14 20:00:38
1756
原创 掌握Android Intent与IntentFilter的艺术-深入探索匹配规则与实践技巧
动作匹配Intent中必须包含中声明的至少一个动作。类别匹配Intent中的所有类别必须与中的类别完全一致。数据匹配Intent中的数据必须与中的至少一个数据匹配。假设我们有一个网页浏览器应用,我们希望当用户尝试打开一个http或https协议的网页时,我们的应用能够被系统选中。我们可以在中为相应的Activity定义如下当用户点击一个网页链接时,系统会查找所有能够响应VIEW动作和BROWSABLE类别的组件,并且检查它们的<data>元素是否匹配链接的协议。在这个例子中,我们的将能够响应所有。
2024-05-14 11:50:55
875
原创 Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系
这样不同的线程访问同一个 ThreadLocal 时,获取到的值也就是各个线程存储时对应的值了。size 代表表中的存储数目;在Handler的handleMessage()方法中,我们可以重写自定义的消息处理逻辑,这个方法最终会由Looper.loop()中的msg.target.dispatchMessage(msg)回调执行。在构造Handler实例时,会获取当前线程的Looper,并将Handler的MessageQueue与Looper内部的MessageQueue建立关联。
2024-05-12 12:07:57
1084
1
原创 Android 屏幕适配全攻略(下)-百变屏幕无压力,这才是Android屏幕适配的终极解决方案
但随着智能手机屏幕形态的不断创新,光靠这些基础做法已经不够,开发者们必须进一步掌握更多专业的适配技巧,才能应对屏幕百变的挑战。需要注意的是,不同的可折叠设备可能会有不同的窗口模式支持,开发者需要根据具体的设备和场景进行适配和调整。同时,可以利用 Android Studio 的设备模拟器来进行测试和调试。: 这个 API 可以让开发者获取到屏幕上的"凹槽"区域的信息,包括位置、尺寸等,从而可以更好地适配应用界面。通过这种方式,我们可以确保应用的界面能够完美适配异形全面屏,不会出现内容被"凹槽"遮挡的问题。
2024-05-11 19:57:20
1422
用Android Studio绘制贝塞尔曲线的艺术之旅
2023-09-15
CHATGPT在线聊天网页源码 PHP源码版 支持图片功能 连续对话等(源码+教程)
2023-05-09
3步快速搞定小红书IP定位.zip
2023-04-26
新手零基础1小时快速入门Matlab
2023-03-30
JAVA物业管理系统源代码和文档
2023-03-30
2023java最新面试资料汇总
2023-03-30
2023最新MySQL100道面试题-附答案解析
2023-03-30
13种格式程序员简历模板任你选
2023-03-30
vue2023面试题及答案
2023-03-30
python基础知识教程+源码
2023-03-30
python 实现画樱花树源码
2023-03-29
python 实现微信好友头像墙源码
2023-03-29
python 实现画爱心源码
2023-03-29
python 实现桌面宠物源码
2023-03-29
python 实现音乐播放器源码
2023-03-29
python 实现艺术签名生成器源码
2023-03-29
python 实现五星红旗源码
2023-03-29
python 实现贺卡源码
2023-03-29
python 解压zip文件源码
2023-03-29
python 屏保计时器源码
2023-03-29
python实现 名言查询 源码
2023-03-29
python 截图工具源码
2023-03-29
python 简单计时器源码
2023-03-29
python 根据IP地址查对应的地理信息源码
2023-03-29
python实现翻译软件源码
2023-03-29
python 二维码生成器源码
2023-03-29
python 实现抖音表白源码
2023-03-29
python实现抖音表白源码
2023-03-29
python 查票抢票 源码
2023-03-29
python 实现简易时钟源码
2023-03-29
python 图片识别源码
2023-03-29
asp.net师电子化信息库的设计与实现(源代码+论文)
2023-03-29
asp.net师电子化信息库的设计与实现(源代码+论文)
2023-03-29
ASP.NET视频点播系统的设计与实现(源代码+论文)
2023-03-29
asp.net数据存储与交换系统设计(源代码+论文)
2023-03-29
asp.net数据存储与交换系统设计(源代码+论文)
2023-03-29
ASP.NET实验室预约系统的设计(源代码+论文)
2023-03-29
asp.net某店POS积分管理系统-清除履历表、日志表、月购买额(源代码+论文)
2023-03-29
ASP.NET汽车销售管理系统的设计与开发(源代码+论文)
2023-03-29
基于ASP.NET的班级风采网站的设计(源代码+论文)
2023-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅