- 博客(329)
- 资源 (23)
- 问答 (1)
- 收藏
- 关注

原创 【性能优化实战】一段高性能代码的诞生之旅——如何写出高性能代码
本文通过对一段简单、低效的代码从多个不同层面逐步对其进行性能优化,力求把这段代码的性能提升到最大。以此演示我在工作中常用的几种性能优化手段。
2022-07-10 21:49:14
1186
6
原创 计算机架构的总线协议中的等待状态是什么?
摘要: 等待状态是总线事务中插入的额外时钟周期,用于协调高速CPU与低速外设(如内存)的速度差异。通过“就绪”信号握手机制,CPU在设备未准备好时自动插入等待周期,确保数据可靠传输。虽然等待状态会降低性能(CPU空转),但允许使用低成本慢速设备。现代系统通过缓存和智能内存控制器优化等待状态,但其核心原理不变,即在性能与成本间寻求平衡。
2025-09-18 22:45:50
1021
原创 电磁干扰EMI (Electromagnetic Interference)是什么?
电磁干扰(EMI)是外部电磁能量对电子设备的有害干扰,分为传导(通过导线)和辐射(通过空气)两类。干扰源包括自然现象(如雷电)和人造设备(如手机、工业机械)。敏感设备(如医疗仪器)易受影响。抑制方法包括屏蔽、滤波、接地等,以确保电磁兼容性(EMC)。电子产品需通过EMC认证(如CE、FCC)以符合标准。EMI是干扰问题,EMC是解决干扰的能力。
2025-09-18 22:21:32
506
原创 状态保留功耗门控 SRPG (State Retention Power Gating)
状态保留功耗门控(SRPG)是一种先进的集成电路电源管理技术,通过选择性关闭模块电源同时保留关键寄存器数据,实现超低功耗与快速唤醒的平衡。该技术结合功耗门控(消除静态功耗)和状态保留(保存关键数据)两大功能,解决了纳米工艺下漏电流导致的静态功耗问题,同时满足物联网设备、移动处理器等对快速恢复的需求。虽然SRPG会增加设计复杂性和芯片面积,但其在降低90%以上待机功耗、实现毫秒级恢复方面的优势,使其成为现代超低功耗芯片设计的核心技术,广泛应用于可穿戴设备、智能手机处理器等领域。
2025-09-17 21:39:40
961
原创 唤醒中断控制器WIC(Wake-up Interrupt Controller)
**唤醒中断控制器(WIC)**是ARM Cortex-M处理器中专为超低功耗应用设计的硬件模块。它允许CPU和NVIC在深度睡眠时完全断电,由极低功耗的WIC监控中断信号。当检测到有效中断时,WIC会触发唤醒流程,恢复CPU和NVIC供电使其正常处理中断。WIC实现了近乎零功耗的待机,同时保持完整中断处理能力,对软件完全透明。这种设计特别适合需要超长待机的物联网设备、便携医疗仪器等电池供电应用,是突破传统低功耗极限的关键技术。
2025-09-17 18:30:00
740
原创 计算机体系结构中的 Flash Memory (闪存)是什么?
闪存(Flash Memory)是一种非易失性电子存储介质,兼具高速和持久性特点。它分为NAND(大容量存储,如SSD)和NOR(代码存储,支持XIP)两种类型,在现代计算机存储层次中连接DRAM和HDD。闪存通过浮栅晶体管存储数据,但存在读写不对称、寿命有限等挑战,需依赖损耗均衡和纠错技术。其广泛应用(SSD、固件芯片等)显著提升了系统性能,推动了超薄设备和智能手机的发展。
2025-09-16 22:20:13
740
原创 ARM芯片的调试访问端口 DAP(Debug Access Port)
DAP是一个硬件模块,集成在基于ARM核心的芯片中。它遵循ARM的CoreSight调试架构标准。为外部调试器(如J-Link, ST-Link)提供访问芯片内部所有可调试资源的标准化接口。简单来说,没有DAP,调试器就无法连接和控制芯片。它是调试器与芯片内部世界(如处理器寄存器、内存、外设等)之间的桥梁或网关。DAP是ARM芯片上调试功能的唯一硬件入口和路由器,它对外提供标准的SWD/JTAG接口,对内将调试器的访问请求路由到处理器内核、内存或片上外设。安全门卫。
2025-09-16 22:00:52
805
原创 私有外设总线PPB(Private Peripheral Bus)
摘要: PPB(Private Peripheral Bus)是ARM Cortex-M架构中的私有外设总线,位于固定地址空间(0xE000_0000-0xE00F_FFFF),专用于访问内核核心功能组件(如NVIC、SCB、SysTick及调试单元)。其特点包括: 私有性:仅管理内核级寄存器,与芯片厂商外设总线(如APB)隔离; 特权访问:需CPU处于特权模式,保障系统安全; 标准化映射:地址由ARM预定义,确保跨芯片兼容性。 PPB是处理器内部控制的核心通道,对底层开发、OS移植和调试至关重要。
2025-09-15 22:12:39
982
原创 嵌入式跟踪宏单元ETM(Embedded Trace Macrocell)
摘要: 嵌入式跟踪宏单元(ETM)是ARM处理器中的硬件调试组件,用于无干扰地实时记录指令执行路径。其核心功能是通过压缩算法生成程序执行轨迹,经专用接口输出并由外部工具重建分析。与ITM相比,ETM无需代码插桩,能完整捕获所有指令流,但需要更高带宽和硬件支持。ETM主要用于调试偶发故障、性能优化及安全关键场景,是解决复杂实时问题的终极工具,但需额外硬件投入。这种"黑匣子"式跟踪机制为开发者提供了精确的程序行为再现能力。
2025-09-15 22:00:28
1201
原创 ARM Cortex-M 中的 I-CODE 总线、D-CODE 总线和系统总线
这篇文章介绍了ARM Cortex-M处理器中的三种主要总线架构:I-CODE总线、D-CODE总线和系统总线。I-CODE总线专用于从Flash存储器中获取指令,确保指令流的连续性;D-CODE总线用于数据访问和调试操作,主要处理Flash中的常量读取;系统总线则负责所有其他内存和I/O操作,包括SRAM访问和外设控制。这种多总线并行架构提高了处理器的整体性能,实现了指令获取、数据访问和系统操作的同时进行,确保了实时性和能效。文章通过厨房类比形象地解释了三种总线的分工协作关系。
2025-09-14 13:39:06
1046
1
原创 CPU架构中的取指缓冲(Instruction Fetch Buffer)是什么?
取指缓冲是CPU中用于临时存储预取指令的高速存储组件,旨在解决CPU与内存的速度差异问题。它通过提前读取指令并快速供给流水线,减少停滞时间,提高执行效率。这一设计能有效隐藏内存访问延迟,支持分支预测,是现代CPU提升性能的关键微架构元素,通常与指令缓存协同工作。
2025-09-14 08:00:00
917
原创 ARM架构立即数机制全解析:从编码规则到实战技巧
本文深入解析ARM架构立即数机制,比较ARM32与ARM64的差异。ARM32采用"8位位图+旋转"方案,而ARM64使用更直观的12位编码。文章详细介绍了合法/非法立即数的判断方法,处理非法立即数的解决方案(伪指令LDR或分步加载),以及ARM64特有的MOVZ/MOVK指令组合。通过对比表格展示两种架构的关键区别,并提供最佳实践建议:优先使用伪指令、理解指令限制、考虑性能优化。最后列举硬件编程、位操作等实际应用场景,强调掌握立即数机制对ARM系统编程的重要性。
2025-09-13 21:31:24
870
原创 ARM 架构的存储器模型
ARM架构采用弱一致性内存模型,允许大量内存访问重排序以提升性能。与x86的强序模型不同,ARM需要显式使用内存屏障指令(DMB/DSB/ISB)来保证多核环境下的内存访问顺序和可见性。这些屏障通过控制共享域(ISH/NSH等)范围来协调不同核心间的数据同步。高级语言中的并发原语会自动生成适当屏障指令,但底层编程需要深入理解该模型以确保正确性。ARM的弱序设计在提供更高性能的同时,也增加了多线程编程的复杂性。
2025-09-13 20:35:23
697
原创 ARM 架构的异常模型(Exception Model)
ARM 架构的异常模型是处理中断和故障的核心机制。异常是打断程序正常执行的任何事件,包括中断、陷阱和故障。处理器通过异常向量表跳转到对应处理程序,处理完成后返回。ARM 提供多种特权模式,每种模式有独立的寄存器组,异常发生时自动切换模式并保存状态。关键组件包括 CPSR/SPSR 状态寄存器、Banked 寄存器和硬件自动保存机制。以 IRQ 为例,硬件自动保存现场、切换模式并跳转,处理程序完成处理后通过特殊指令恢复现场。该模型通过模式隔离、硬件自动保存和独有寄存器设计实现了高效异常处理。
2025-09-11 22:30:20
1015
原创 ARM指令集(Instruction Set)细节
本文详细解析了ARM指令集架构,重点对比了32位(AArch32)和64位(AArch64)两种执行状态。AArch32包含ARM、Thumb和Thumb-2指令集,支持条件执行和灵活操作数;AArch64采用固定32位指令长度,简化条件执行并引入31个通用寄存器。文章还分类介绍了数据处理、加载存储、分支控制等核心指令,特别强调了AArch32独特的条件执行机制。ARM指令集遵循RISC设计原则,具有规整指令格式、加载-存储架构和多寄存器特性,在性能和代码密度间取得平衡。
2025-09-11 21:50:22
706
原创 ARM调试架构(Debug Architecture)
ARM调试架构概述 ARM调试架构是一个复杂的系统,由调试访问和追踪两大功能组成。调试访问通过JTAG/SWD接口连接芯片,利用调试端口(DP)和访问端口(AP)控制系统总线和内核状态。追踪功能则通过ETM/PTM等组件实时捕获执行流程和数据访问信息,支持并行和串行输出方式。该架构为ARM处理器提供了全面的调试能力,从基础控制到高级性能分析。在Cortex-M芯片中,这一架构通过SWD/SWO等接口实现经济高效的调试方案。
2025-09-10 21:17:33
1292
原创 Http1.1、Http2 和 Http3
HTTP协议演进对比摘要: HTTP/1.1(1997):基于TCP,存在严重队头阻塞,需建立多个连接,明文传输低效。 HTTP/2(2015):引入二进制分帧和单连接多路复用,使用HPACK压缩头部,支持服务器推送,但仍存在TCP层队头阻塞。 HTTP/3(2022):改用QUIC协议(UDP),彻底解决队头阻塞,实现0-RTT快速连接和网络切换时的连接迁移,采用QPACK头部压缩。 当前HTTP/2是主流标准,HTTP/3正在快速普及,特别适用于高要求场景。
2025-09-10 17:30:00
1418
原创 Nginx如何部署HTTP/3
本文介绍了在Nginx中部署HTTP/3(基于QUIC协议)的详细步骤。由于标准版Nginx尚未原生支持HTTP/3,需使用Cloudflare维护的QUIC分支版本。部署过程包括:安装编译依赖库、构建BoringSSL加密库、获取Nginx QUIC分支代码、编译安装Nginx,并在配置文件中启用HTTP/3监听和Alt-Svc响应头。关键要注意开放UDP 443端口,并确保SSL证书有效。完成部署后,可通过在线工具或浏览器开发者工具验证HTTP/3是否生效。目前HTTP/3部署仍需要手动编译,待功能正式
2025-09-09 21:22:10
633
原创 前后端分离架构中,Node.js的底层实现原理与线程池饥饿问题解析
本文分析了Node.js在Vue+Java/.NET架构中的实现原理与线程池饥饿问题。Node.js作为BFF或SSR层,通过V8引擎和libuv库实现事件驱动和非阻塞I/O模型,其单线程事件循环配合4线程的线程池处理高并发请求。但文件I/O、加密等操作可能导致线程池饥饿,使响应延迟。解决方案包括:增加线程池容量、优化代码使用流处理、架构上卸载CPU密集型任务到后端,以及实施监控。在整体架构中,Vue负责UI,Node.js处理高I/O并发,Java/.NET处理核心业务,各技术栈优势互补。
2025-09-09 21:04:05
727
原创 Quartz.NET 中的[DisallowConcurrentExecution]特性
[DisallowConcurrentExecution]是Quartz.NET中的特性,用于防止同一作业类的多个实例并发执行。当作业执行时间可能超过触发间隔时,该特性确保当前实例完成前不会启动新实例,避免数据竞争和操作冲突。需注意它只作用于相同JobKey的作业实例,且常与[PersistJobDataAfterExecution]配合使用。适用于处理共享资源或需要保证数据一致性的作业场景。
2025-09-09 17:00:00
636
原创 32位CPU架构是如何完成两数(32位)相加的指令的?
摘要:本文详细解析32位CPU架构执行加法指令ADD eax, ebx的完整过程。该指令通过经典的5级流水线完成:取指(IF)从内存获取指令,译码(ID)解析指令含义,执行(EX)阶段由ALU进行实际加法运算并设置标志位,访存(MEM)阶段空闲,最后写回(WB)将结果保存至寄存器。整个过程展示了寄存器文件、ALU、控制单元等核心组件的高效协作,体现了计算机架构的分工与流水线设计理念,为理解更复杂的现代CPU技术奠定了基础。(149字)
2025-09-08 22:31:07
1019
原创 32CPU架构如何处理64位数据?
32位CPU通过软件仿真和有限硬件支持处理64位数据,将64位操作分解为多个32位指令完成。主要方式包括:纯软件仿真(性能较差)、硬件辅助(部分指令加速)以及操作系统协作(如PAE扩展内存)。虽然能实现功能,但效率远低于原生64位CPU,尤其在复杂运算和大内存访问时差距明显。这种方法体现了"分而治之"的计算思想,但性能瓶颈推动了64位架构的普及。
2025-09-08 22:26:24
1006
原创 如何建立针对 .NET Core web 程序的线程池的长期监控
本文介绍了如何建立针对.NET Core Web应用程序线程池的长期监控系统。核心思路是将线程池监控与应用程序整体性能指标相结合分析,包括线程数量、工作项队列长度、已完成工作项和线程注入速率等关键指标。文章提供了三种主流技术方案:基于Prometheus+Grafana的云原生方案、Azure生态的Application Insights方案,以及企业级APM工具方案。重点讲解了第一种方案的具体实施步骤,包括暴露指标端点、创建后台服务收集线程池指标、部署监控基础设施和创建可视化仪表板等。通过系统化的监控,可
2025-09-07 22:46:20
1024
原创 webhook(Web 钩子)是什么?
Webhook(Web钩子)是一种基于事件的反向API机制,采用"订阅-通知"模式实现高效跨应用通信。与传统API需要主动轮询不同,Webhook由服务方在事件触发时主动向预设URL推送数据,具有实时性强、资源消耗低的优势。其典型应用包括GitHub代码提交通知、支付状态更新等场景。开发Webhook接收端需注意快速响应、来源验证、幂等处理等关键点。这种"事件驱动"的通信方式已成为现代网络开发中服务集成的核心解决方案。
2025-09-07 16:05:10
1073
原创 持续集成和持续交付 (CI/CD) 工具——Jenkins
Jenkins是一款开源的CI/CD工具,可自动化软件开发的构建、测试和部署流程。它支持持续集成(频繁代码合并与自动测试)和持续交付/部署(自动发布到生产环境),通过可编程的流水线(Pipeline)协调多阶段任务。核心优势包括丰富的插件生态、分布式构建能力及Pipeline as Code特性。作为DevOps的核心工具,Jenkins被开发、测试和运维团队广泛使用,帮助提升软件交付效率和质量。其开源免费、跨平台等特点使其成为企业实现自动化软件交付的首选方案之一。
2025-09-06 23:37:32
935
原创 .NET Core 应用部署深度解析:从 IIS 到 Docker+Kestrel 的迁移与性能优化实战
本文深入对比了.NET Core在Windows IIS和Linux Docker+Kestrel两种部署架构的差异,提供了详细的迁移指南。重点分析了线程池饥饿这一关键性能问题,给出代码优化方案和诊断工具建议,帮助开发者规避迁移风险。文章包含配置迁移、Dockerfile优化、异步代码最佳实践等核心内容,并附有迁移检查清单,为.NET Core应用现代化部署提供全面指导。
2025-09-06 08:00:00
434
原创 开源容器管理平台Rancher
Rancher 是一个开源的容器管理平台,用于简化 Kubernetes 和 Docker 的部署与运维。其核心功能包括多集群管理、开发者工具(如 Helm 支持)、安全合规及混合云/边缘计算支持。Rancher 提供轻量级发行版(如 k3s)和企业级工具,适用于多云环境、微服务及边缘场景。架构包含 Rancher Server、Cluster Agent 和节点驱动。用户可通过 Docker 快速部署免费开源版或选择商业版 Rancher Prime。由 SUSE 维护,是 CNCF 生态中流行的 Kub
2025-09-05 19:00:00
557
原创 数据旁路(Data Bypassing)是什么?
数据旁路(Data Bypassing)是CPU解决数据冒险的关键硬件优化技术。它通过建立额外的短路路径,将前一条指令在EX或MEM阶段产生的结果直接转发给后续需要该数据的指令,避免等待结果写回寄存器而导致的流水线停顿。这种技术能有效处理RAW冒险,但不能完全消除加载-使用冒险所需的1个时钟周期停顿。数据旁路是现代高性能CPU实现深度流水线和乱序执行的基础功能之一,通过硬件自动完成,无需程序员干预。
2025-09-04 22:46:07
576
原创 CPU设计范式(Design Paradigms)有哪些?
CPU设计范式主要包括四类:1) 核心指令集范式(CISC与RISC的根本区分);2) 执行范式(标量、流水线、超标量、乱序/按序执行);3) 并行范式(单核、多核、多线程);4) 特定计算范式(向量处理/SIMD、数据流)。现代高性能CPU往往融合多种范式,如x86处理器采用CISC指令集但内部转为RISC微操作,结合超标量乱序执行、多核与SIMD等技术。这些设计选择需要在性能、功耗、成本和应用场景之间进行权衡。
2025-09-04 22:32:10
1443
原创 “企业版维基百科”Confluence
Confluence是Atlassian开发的企业级团队协作与知识管理平台,相当于"企业版维基百科"。它通过创建页面、组织空间、提供模板等功能,帮助团队集中管理文档、项目需求和知识资产。核心优势包括强大的协作功能(评论、@提及)、版本控制、精细权限管理,以及与Jira等工具的深度集成。主要服务于研发、产品、HR等部门,提供云版和自托管部署方案,是企业实现知识沉淀、打破信息孤岛的高效工具。
2025-09-03 22:31:51
407
原创 基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是。
2025-09-03 22:30:50
963
原创 现代CPU设计哲学——加载/存储(Load-Store)架构
现代CPU普遍采用加载/存储(Load-Store)架构,其核心特点是:CPU只能通过专门的加载/存储指令访问内存,所有算术运算必须在寄存器中完成。这种设计通过分离数据访问与运算操作,显著提升了性能:寄存器访问比内存快几个数量级,简化了指令集,便于硬件优化。相比之下,x86等CISC架构允许直接操作内存,但执行效率较低。现代高性能芯片(包括CPU、GPU等)都遵循这一基础设计原则,通过限制运算操作仅发生在寄存器上来实现更高效的执行。
2025-09-02 22:24:09
1140
原创 计算机体系结构(Computer Architecture)所有核心概念一览表
计算机体系结构核心概念摘要:冯·诺依曼架构(存储程序)、哈佛架构(指令数据分离)、ISA(RISC/CISC)、处理器微架构(流水线/超标量/乱序执行)、存储器层次(缓存/虚拟内存)、I/O系统(DMA/中断)、并行处理(多核/SIMD)等。这些概念构成计算机从底层硬件到系统设计的完整知识体系,是现代计算技术的基础。
2025-09-02 19:45:00
1173
原创 ARM的编程模型
ARM处理器采用精简高效的编程模型,主要包括寄存器组、数据类型、内存访问方式和执行状态等核心组件。关键特性包括:1) 加载/存储架构,数据处理指令仅操作寄存器;2) 条件执行机制,减少分支指令;3) 集成桶式移位器提升运算效率;4) 提供Thumb/Thumb-2指令集优化代码密度。ARMv8进一步发展为AArch64/AArch32双执行状态,引入异常级别(EL)模型支持复杂应用场景。该编程模型通过规整的寄存器文件、Banked寄存器快速切换等设计,实现了高性能与低功耗的平衡。
2025-09-01 21:15:42
2032
3
原创 MCU(微控制器)中的FPU(浮点运算单元):从硬件演进到代码实践
文章摘要:MCU中FPU(浮点运算单元)经历了从纯软件模拟到标配硬件的发展历程。早期MCU靠软件模拟浮点运算,性能低下;随着Cortex-M4等内核出现,FPU成为可选配件;如今高性能MCU已将FPU设为标配。程序员需注意编译器配置(soft/softfp/hard)和启动代码差异,但源代码可保持兼容。FPU的普及反映了嵌入式系统向智能边缘计算的发展趋势,开发者需掌握FPU特性以优化性能和产品竞争力。(149字)
2025-09-01 17:30:00
783
原创 .NET Core Web 程序中的 PhysicalFileProvider 是什么?
本文介绍了.NET Core中的PhysicalFileProvider类,它是IFileProvider接口的物理文件系统实现,用于提供统一抽象的文件操作方式。文章解释了其必要性(解决紧耦合、提升可测试性、简化变更监控),并详细说明了其主要功能:基于根路径操作文件、读取内容、枚举目录和监听变更。常见应用场景包括静态文件中间件、Razor视图引擎和自定义文件操作。文中还对比了其他文件提供程序实现,强调PhysicalFileProvider作为连接应用程序与物理文件系统的桥梁,在构建现代Web应用中的基础性
2025-08-31 08:00:00
575
原创 ARM处理器架构?
ARMARM公司它不生产任何芯片,而是通过授权其处理器架构和核心设计给其他公司(如苹果、高通、三星、英伟达等)来盈利。ARM架构:一种基于精简指令集(RISC)原则的处理器架构。与Intel和AMD使用的复杂指令集(CISC)架构x86/x64形成竞争和互补关系。ARM不仅仅是一种处理器架构,更是一个生态系统和一种设计哲学。RISC设计带来的高能效比。灵活的授权模式催生了庞大的产业联盟。清晰的产品路线图覆盖了从微毫瓦到高性能计算的所有场景。
2025-08-31 08:00:00
858
原创 内存模型(Memory Model)是什么?
内存模型是定义多线程程序中内存访问行为的核心规则,主要解决两个问题:1)线程写操作对其他线程的可见性;2)内存操作的重排序限制。现代计算机因缓存一致性和指令重排序(编译器/CPU优化)导致并发访问复杂化,内存模型通过硬件层(如x86/ARM差异)和语言层(如Java/C++抽象)建立统一契约。关键概念包括内存序(顺序一致/获取-释放/松散),通过内存屏障和原子操作平衡性能与正确性,使多线程程序行为可预测。
2025-08-30 15:26:13
958
原创 弱内存模型和强内存模型架构(Weak/Strong Memory Model)
这两种模型定义了处理器为了提升性能而对内存操作(读/写)进行重排序的自由度。强内存模型:规则严格。处理器保证指令执行的顺序与程序代码编写的顺序高度一致。重排序较少,对程序员更友好。弱内存模型:规则宽松。处理器为了性能,会广泛地重排内存操作的顺序。程序的最终结果正确性需要程序员通过内存屏障来显式地保证。强模型:像严格的交警,要求车辆几乎必须按道行驶,顺序前进。弱模型:像繁忙的交叉路口,车辆可以见缝插针地行驶,但需要司机自己(程序员)设置红绿灯(内存屏障)来避免事故。移动时代的主导。
2025-08-30 14:57:45
1066
原创 处理器(CPU/MPU)的双发射是什么?
处理器双发射技术是现代高性能CPU提升性能的关键设计。它允许CPU在一个时钟周期内同时解码并派发两条独立指令到不同的执行单元,实现指令级并行。双发射处理器的译码器会检查指令间的数据依赖性和资源冲突,无冲突时可并行执行两条指令。相比单发射设计,双发射能显著提高吞吐量(理想CPI<1),但需要更复杂的硬件支持(多执行单元、依赖检测等)。该技术广泛应用于Cortex-M7等高端MCU,性能可达单发射的近两倍,但要求代码具有较高并行度才能充分发挥优势。
2025-08-29 18:00:00
320
IIS负载均衡扩展插件ARR(Application Request Router)
2023-06-16
本Demo将演示一段随机挑选函数代码的性能升级之旅
2022-07-11
多媒体视频处理工具FFmpeg
2022-04-20
如何对一个系统中所有接口的Response进行响应压缩.net mvc
2022-04-13
ckfinder_java_2.4.zip
2015-03-02
eclipse主题皮肤(不仅仅是配色方案)黑色系
2015-03-20
tomorrow-theme-master
2015-01-30
graphviz4net
2015-01-23
hibernate说明文档
2014-12-02
国外可视化数据结构教学软件及其比较
2014-10-06
graphviz-2.38
2015-01-23
ckeditor_4.3_full.zip
2015-03-02
ckeditor-java-core-3.5.3.zip
2015-03-02
dom4j的jar包以及说明文档
2014-09-20
C++中文参考手册——标准库
2014-07-31
网站接口响应时间随着使用时间越来越差
2022-07-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人