自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (5)
  • 收藏
  • 关注

原创 linux ubuntu 下安装nginx

本文提供了Ubuntu系统下Nginx的完整安装与配置教程。主要内容包括:1)使用apt安装Nginx;2)创建并配置www-data运行用户;3)修改nginx.conf配置文件,设置守护进程模式;4)配置默认站点和权限;5)创建Systemd服务文件;6)测试和启动Nginx服务。教程详细说明了每个步骤的命令和配置参数,确保Nginx以www-data用户身份运行,并采用守护进程方式管理。最后还包含了防火墙配置建议,适用于需要搭建Web服务器的Ubuntu用户。

2025-11-19 21:08:16 352

原创 Flink Watermark(水位线)机制详解

Flink Watermark机制是处理事件时间和乱序数据的核心技术。Watermark作为时间戳标记,表示"所有时间戳≤Watermark的数据已到达",用于确定何时触发窗口计算。核心功能包括:1)处理乱序数据;2)确定窗口触发时机;3)支持多种生成策略(周期性/标点式)。主要实现方式有:forBoundedOutOfOrderness(允许固定延迟)、forMonotonousTimestamps(无乱序)和自定义策略。Watermark通过最大事件时间减去允许延迟来计算,确保延迟数

2025-10-24 16:07:35 1108

原创 Flink DatastreamAPI详解(四)

会话窗口是一种基于数据活跃度动态划分的窗口类型,与固定大小窗口不同,它会在数据停止到达指定时间间隔(gap)后关闭窗口。本文介绍了四种会话窗口实现方式:事件时间/处理时间的静态和动态间隔窗口。核心特点是窗口大小不固定,完全由数据到达模式决定,适用于用户行为分析等场景。通过代码示例展示了如何用10秒间隔划分用户点击事件的会话窗口,统计每个会话的持续时间、点击量和访问路径。与滚动/滑动窗口相比,会话窗口更适合分析非周期性的活动序列。

2025-10-24 14:52:58 583

原创 Flink DatastreamAPI详解(三)

Flink滑动窗口技术解析摘要(149字) Flink滑动窗口通过size和slide参数控制窗口行为,支持事件时间和处理时间两种模式。核心特点是允许窗口重叠,数据可归属多个窗口。典型配置如10秒窗口5秒滑动时,窗口重叠50%;若slide=size则退化为滚动窗口。窗口偏移量参数支持时区调整。示例代码展示了如何统计用户点击事件:7秒数据同时属于[0,10)和[5,15)窗口,11秒数据属于[5,15)和[10,20)窗口。滑动窗口适用于移动平均等需要平滑分析的场景,相比滚动窗口能提供更连续的趋势观测。

2025-10-24 11:54:35 830

原创 Flink DatastreamAPI详解(二)

Flink滚动窗口(Tumbling Window)是固定大小且不重叠的时间窗口,分为事件时间和处理时间两种类型。事件时间窗口基于数据本身的时间戳,支持乱序数据处理,结果具有确定性;处理时间窗口则基于系统时间,延迟低但结果不可重复。窗口语法支持带偏移量配置,可用于时区调整。典型应用包括5秒窗口统计用户交易金额、按天统计业务指标等场景。窗口划分严格遵循左闭右开原则,确保每个数据只属于一个窗口,通过Watermark机制触发计算。

2025-10-23 17:27:13 928

原创 Flink DatastreamAPI 详解(一)

Flink的Reduce操作与KeyBy分组机制详解 摘要:本文详细解析了Apache Flink中Reduce函数和KeyBy分组的核心机制。Reduce是一种增量聚合函数,通过接收并合并窗口内的二元组数据(如<String,Integer>),保留key并累加value值,适用于求和统计等场景。KeyBy则是关键的分区算子,通过指定key(可从POJO对象或Tuple中提取)将相同key的数据路由到同一任务,为后续窗口聚合提供基础。文章通过WordCount等典型示例,展示了如何结合使用Ke

2025-10-23 16:55:59 1098

原创 vscode配置MCP

本文介绍了如何在VS Code中配置MCP来提升AI编程效率。主要步骤包括:1) 安装GitHub Copilot和Copilot Chat插件;2) 安装Copilot MCP插件作为客户端;3) 配置mcp.json全局文件或项目级setting.json文件;4) 在Copilot Chat中选择agent模式并启用MCP工具。配置完成后,用户可通过对话框指令让Copilot自动完成编程任务。MCP提供了文件系统、Git和Web三种服务模式,支持全局或项目级配置,每月10美元可获得更强大的AI编程支持

2025-08-21 09:54:59 1259

原创 cursor+mcp-clickhouse进行数据分析

本文记录了在Cursor中使用MCP Server连接ClickHouse的完整过程。作者首先从魔塔社区获取MCP-ClickHouse集成工具,通过AI指导配置参数,期间遇到连接错误(误连MySQL)和协议问题。经调整CLICKHOUSE_SECURE和CLICKHOUSE_VERIFY参数后,成功建立连接并完成查询测试。整个过程采用对话式AI辅助开发,展示了智能化编程的实用场景,同时也揭示了AI在复杂配置中可能出现的判断失误。最终验证了该方案的可行性。

2025-08-19 13:53:31 472

原创 vagrant导出镜像无法ssh登录的问题

摘要:当导出配置好的Vagrant镜像后,发现无法通过vagrant ssh登录。日志显示SSH密钥对不匹配,原因是新镜像使用标准私钥登录时会重写公钥。解决方法有两种:1)在Vagrantfile中设置config.ssh.insert_key=false禁用密钥重写;2)在导出镜像前手动替换为Vagrant标准密钥对。通过这两种方式可解决镜像导出后的SSH登录问题。

2025-07-24 09:49:14 438

原创 安装nginx+php环境

根据项目配置好nginx.conf文件,按照项目最佳实践,我们一般把通用配置放到nginx.conf,然后再新建一个vhost目录,里面再新建项目的配置文件,比如project.conf.在nginx.conf中include 这个project.conf。nginx安装有个需要注意的点,一般建议启动用户是不用root的,在nginx.conf中添加启动用户。另一个是/etc/php/7.4/fpm/php.ini。1 pid:启动fpm的时候产生的系统进程pid的存储路径,要确保这个路径是存在的。

2025-07-10 15:21:46 349

原创 Apache Flink深度解析:现代流处理引擎

Apache Flink是现代大数据领域先进的流批统一计算引擎。本文深度解析Flink的核心特性与架构设计,包括其精确一次性语义、事件时间处理和有状态计算等技术亮点,详细阐述JobManager/TaskManager架构、时间语义与窗口操作等核心概念。文章还介绍了Flink丰富的连接器生态、容错机制(Checkpoint/Savepoint)以及性能优化技巧,从开发到运维提供全流程最佳实践指南。作为支持高吞吐低延迟的分布式系统,Flink在实时计算、ETL和复杂事件处理等场景展现强大能力,其云原生演进方向

2025-06-23 10:54:31 786

原创 通过CDH安装Flink的详细指南

本文介绍了在CDH环境中安装配置Apache Flink的完整流程。首先列出安装前提条件,包括CDH集群、管理员权限和系统资源等。详细步骤涵盖在Cloudera Manager中添加Flink服务、主机和角色配置、数据库设置、内存及网络参数优化。提供了验证安装的方法和常见问题解决方案,如内存配置、网络连接和性能优化问题。最后强调与Hadoop生态集成的注意事项,并建议参考Cloudera和Flink的官方文档获取更多信息。通过CDH安装Flink可以充分利用Hadoop生态优势,实现高效的流数据处理。

2025-06-23 08:39:18 703

原创 通过CDH安装Spark的详细指南

CDH安装Spark简明指南:首先确保已部署CDH集群并具备管理员权限。通过Cloudera Manager界面添加Spark服务,选择适当主机分配角色(Gateway、History Server等),配置内存参数(建议Executor 4g/Driver 2g)和资源分配策略。启动服务后,可通过运行Spark Pi示例验证安装,检查18080端口的历史服务器界面。常见问题包括内存不足(需调整资源配置)和网络连接问题(检查防火墙)。最佳实践包括定期性能监控、资源优化和版本更新。CDH简化了Spark部署,

2025-06-20 21:18:11 774

原创 CDH部署Hive详细指南

本文详细介绍了使用Cloudera Manager部署Hive组件的完整流程,包括环境准备(系统要求、MySQL配置)、Hive安装(服务添加、角色分配)、配置优化(基础与高级设置)、服务启动(检查与验证)、运维管理(监控与安全)以及性能优化(系统与查询层面)。同时提供了常见故障处理方法,帮助构建稳定高效的数据仓库系统。通过合理的配置和持续优化,可充分发挥Hive在企业数据分析中的价值。

2025-06-20 21:17:48 990 1

原创 Apache Hive技术详解

本文详细介绍了Apache Hive数据仓库工具的架构、功能和应用。主要内容包括:Hive的SQL查询能力、核心组件(用户接口/元数据/查询处理)、数据模型(数据库/表/分区)、DDL/DML操作语法,以及性能优化技术(分区/数据倾斜/存储格式)。文章还涵盖了运维管理(监控/安全)和开发最佳实践(命名规范/设计原则),指导用户充分发挥Hive在大数据分析中的价值。通过合理配置和持续优化,Hive能够为企业提供高效的数据分析服务。

2025-06-19 23:21:18 779

原创 CDH部署HDFS详细指南

本文详细介绍了使用CDH部署HDFS集群的全过程,主要包括五个方面:1) 环境准备,包括硬件、软件和网络配置要求;2) CDH安装步骤,涵盖Cloudera Manager和CDH组件的安装;3) HDFS配置指南,包含基础与高级配置参数;4) 集群管理方法,涉及服务启动、日常维护和故障处理;5) 最佳实践建议,提供性能优化和安全加固方案。该指南为快速构建稳定高效的HDFS集群提供了全面参考,适用于不同规模的部署需求。

2025-06-19 23:18:14 973

原创 Spark技术详解

Apache Spark是一个高效的大规模数据处理引擎,具有内存计算、统一编程模型等核心特性。文章详细解析了Spark的五大核心组件(Core、SQL、Streaming、MLlib、GraphX)及其应用场景,阐述了其集群架构和执行流程,并提供了内存配置、任务并行度等性能优化策略。同时介绍了Spark的监控管理方法,包括系统资源、任务执行和数据处理等多个维度的监控指标。通过合理运用这些组件、优化方案和监控手段,可以构建稳定高效的大数据处理系统,充分发挥Spark在批处理、流计算、机器学习等领域的价值。

2025-06-17 15:20:52 1147

原创 iOS应用混淆技术详解

iOS应用混淆技术详解:150字摘要 本文系统介绍了iOS应用混淆技术,包括代码混淆(标识符替换、控制流变形、字符串加密)、资源混淆(图片和配置文件保护)、运行时保护(反调试、完整性校验)及网络通信保护(加密和证书固定)。文章还对比了开源工具(如Obfuscator-LLVM)和商业工具,提出分层混淆、动态混淆和多维度保护的最佳实践。特别强调需平衡安全性与性能,控制混淆程度以避免崩溃和兼容性问题,同时保留调试支持。通过综合运用这些技术,开发者可以有效保护应用知识产权和安全。

2025-06-17 15:20:28 1535

原创 Hadoop技术详解

Hadoop是一个开源的分布式系统框架,主要用于大规模数据的存储和处理。其核心组件包括HDFS分布式文件系统、MapReduce计算框架和YARN资源管理器。HDFS采用主从架构设计,包含NameNode管理元数据、DataNode存储实际数据块,支持大文件分割存储和副本机制。MapReduce提供并行处理能力,通过Map、Shuffle和Reduce阶段处理数据。YARN负责集群资源调度和管理。此外,Hadoop生态系统还包括HBase、Hive等组件,分别提供实时数据存储和SQL查询功能。本文详细剖析了

2025-06-16 13:47:14 639

原创 大数据平台数据采集方案设计

本文系统介绍了大数据平台的数据采集方案,涵盖日志采集和埋点上报两大核心模块。从数据采集类型、原则出发,详细阐述了日志采集架构(包括Filebeat、Flume等技术选型)和埋点采集实现方式(代码埋点、可视化埋点等),并提供了具体的技术实现示例。文章还涉及数据采集整体架构、数据质量保证措施、安全隐私保护及运维管理方案,最后总结了采集优化、性能优化和成本控制等最佳实践。为构建高效、可靠、安全的大数据采集系统提供了全面指导。

2025-06-16 13:46:49 2695

原创 数据仓库分层模型设计指南

本文系统介绍了数据仓库分层模型的设计方法,包含ODS、DWD、DWS、ADS四个标准层次,分别承担原始数据存储、清洗转换、汇总统计和应用服务等职责。详细阐述了各层的数据特点、命名规范、流转规则,以及数据质量、安全治理等配套规范。文章强调分层设计的核心原则是层次清晰、职责明确、流转规范,并提出分层过度、职责不清等常见问题的解决方案。合理的分层设计有助于提升数据质量、降低维护成本、提高开发效率,是数据治理的重要环节。

2025-06-15 10:41:31 880

原创 千万级日活大数据平台设计方案

本文详细阐述了千万级日活大数据平台的设计方案,涵盖数据采集、存储、计算和应用全流程。系统采用分层架构设计,包括采集层(使用Kafka/Flume)、存储层(HBase/ClickHouse)、计算层(Spark/Flink)和应用层(微服务架构)。关键技术点包括高可用性、可扩展性、数据一致性及成本控制等方面,同时强调完善的监控体系(Prometheus/ELK)和安全防护措施。通过合理的资源调度、任务管理和运维流程,确保平台稳定高效地支撑千万级用户规模,满足实时和离线计算需求,为业务发展提供可靠的数据服务支

2025-06-15 10:41:16 671

原创 MapReduce技术详解

MapReduce是一种分布式计算框架,专为大规模数据并行处理而设计。本文系统介绍了MapReduce的核心概念、工作原理和编程模型,详细分析了Map阶段的输入分片处理、Shuffle阶段的排序合并机制以及Reduce阶段的最终结果输出。文章提供了完整的Java编程示例,包括Mapper、Reducer和Partitioner的实现,并深入探讨了性能优化策略和数据倾斜解决方案。最后总结了开发规范、测试方法和运维实践,帮助读者构建高效可靠的大数据处理应用。MapReduce通过简单的编程模型实现了复杂分布式计

2025-06-14 21:44:08 1274

原创 代码审查最佳实践指南

本文介绍了代码审查在软件开发中的重要性及实施方法。代码审查的主要目标是发现缺陷、确保规范、提高可维护性和促进知识共享。文章详细解析了审查时机、内容、流程和工具选择,包括功能性检查、代码质量评估和架构设计验证等方面。同时提供了审查者和开发者的最佳实践指南,如保持客观态度、及时响应反馈等。针对常见问题如审查效率、沟通障碍和技术分歧提出了解决方案,并建议建立质量与效率指标进行度量。文章强调代码审查不仅是质量控制手段,更是团队协作和成长的机会。

2025-06-14 10:53:34 1171

原创 技术团队管理最佳实践指南

《技术团队管理指南》摘要:本文系统阐述了构建高效技术团队的关键要素。从团队文化、人才管理到项目与技术管理,涵盖了价值观塑造、敏捷实践、技术债务处理等核心内容。特别强调沟通协作机制和持续创新,同时提出风险管理策略和领导力发展路径。有效的技术团队管理需要综合运用这些方法,通过持续学习和改进,打造兼具稳定性与创新力的专业团队。

2025-06-14 09:56:32 645

原创 LoadRunner压力测试工具详解

LoadRunner是一款功能强大的性能测试工具,主要用于Web应用的压力测试。文章详细介绍了其主要组件(VuGen、Controller、Analysis等)和支持的多种协议。重点阐述了测试脚本开发过程,包括录制、参数化和关联技术,并提供了C语言脚本示例。同时讲解了场景设计中的负载模式配置、监控设置以及结果分析方法,通过图表和详细报告评估系统性能。最后总结了最佳实践和常见问题解决方案,强调合理使用LoadRunner的各项功能进行有效性能测试,并提出持续学习高级特性的建议。

2025-06-11 09:47:50 838

原创 Apache JMeter压力测试工具详解

Apache JMeter是一款开源的性能测试工具,支持多种协议测试(HTTP、JDBC、WebSocket等)。本文详细介绍了JMeter的测试计划设计,包括线程组配置、取样器设置以及各类测试元素的使用方法。内容涵盖配置元件(用户变量、HTTP头管理)、前置处理器(CSV数据文件)、后置处理器(正则表达式提取)以及监听器(结果树、聚合报告)等核心功能,通过XML示例展示了配置文件结构。JMeter可用于负载、压力和接口测试,是性能测试领域的重要工具。

2025-06-11 09:47:29 475

原创 Web应用压力测试详解

Web应用压力测试是评估系统性能和稳定性的关键环节,主要包括负载测试、压力测试和并发测试三种类型。文章介绍了主流测试工具(JMeter、Locust、K6)的实际使用示例,以及需要关注的性能指标(响应时间、吞吐量、错误率)和系统指标(CPU/内存/磁盘/网络使用率)。同时提供了基础测试场景和复杂测试场景的设计方法,并详细说明了测试报告应包含的内容结构。通过规范的测试流程和科学的分析方法,可以有效发现系统瓶颈并进行针对性优化。

2025-06-10 21:58:10 1092

原创 Web安全漏洞详解及解决方案

本文详细介绍了8种常见Web安全漏洞及其防护措施,包括SQL注入、XSS攻击、CSRF等。针对每种漏洞分析了攻击原理,并提供了实用的防护方法,如参数化查询、CSRF Token、数据加密等。文章还总结了Web安全最佳实践,强调安全是持续过程,需要开发、运维和安全团队协作。通过了解这些漏洞和防护措施,可有效提升Web应用安全性。

2025-06-10 21:57:43 367

原创 Web应用防刷策略技术实现详解

本文详细介绍了Web应用的多种防刷技术实现方案。在限流策略方面,分别采用计数器算法和滑动窗口算法,通过Redis实现高效请求频率控制。验证码防护部分展示了图形验证码与短信验证码的生成和验证流程。设备指纹采集通过浏览器多种特征创建唯一标识。风控系统则基于用户行为进行风险评估。每种方案均提供了核心代码实现,为开发者构建安全Web应用提供了实用参考。这些技术组合使用可以有效防止恶意刷取行为,保护系统资源。

2025-06-09 01:15:00 603

原创 DDoS攻击防护策略详解

本文详细介绍了DDoS攻击防护策略,包括:1) 常见攻击类型(网络层和应用层攻击);2) 检测方法(流量分析和行为分析);3) 防护实现(流量清洗、限流);4) 多层防护架构设计;5) 最佳实践(基础设施防护、应用层防护和监控告警)。文章提供了Python代码示例,并强调DDoS防护需要技术与管理结合,持续优化防护策略。

2025-06-09 01:00:00 384

原创 Spring Data 完全指南:简化数据访问层开发

摘要: Spring Data 是简化数据访问层开发的框架,支持多种数据库技术(关系型/NoSQL/图数据库等)。核心特性包括:1) 统一的Repository接口提供CRUD操作;2) 方法命名查询自动生成SQL;3) 内置分页排序功能;4) 支持@Query自定义查询。主要模块涵盖JPA、MongoDB和Redis等数据源。最佳实践建议合理使用Repository接口、优化查询性能并正确管理事务。通过减少样板代码和统一访问模式,Spring Data显著提升开发效率,使开发者更专注于业务逻辑实现。(14

2025-06-08 09:35:31 1097

原创 Spring Boot 完全指南:快速构建企业级应用

Spring Boot 是一个基于 Spring 框架的快速开发框架,它通过约定优于配置的理念,极大地简化了 Spring 应用的初始搭建和开发过程。本文将详细介绍 Spring Boot 的核心特性、最佳实践以及实际应用场景。

2025-06-08 09:35:12 528

原创 Spring注解原理深度解析:从入门到精通

本文深入解析Spring注解原理,涵盖从基础概念到底层实现的全方位内容。主要内容包括:1) Spring注解发展历程及其优势,展示了从XML到纯注解配置的演进;2) Java注解基础,详细解析元注解和反射机制的应用;3) Spring核心注解如@Component及其派生注解的用法;4) 注解处理器机制和扫描过程;5) 自定义注解开发方法。文章通过代码示例辅助说明,帮助开发者深入理解注解驱动开发的核心技术,掌握Spring框架中注解的底层实现原理和最佳实践。

2025-06-07 17:58:41 950

原创 Spring Security深度解析:构建企业级安全框架

本文深入解析Spring Security框架在企业级应用中的关键技术与实现。文章首先概述了Spring Security的发展历程和核心特性,包括认证、授权和攻击防护等功能。随后详细剖析了其核心架构与原理,包括安全上下文、认证管理器、访问决策机制和过滤器链设计,并提供了自定义JWT过滤器的代码示例。文章还涵盖了内存认证等基础认证机制,展示如何通过简洁的Java配置实现安全控制。全文通过代码示例与架构分析相结合的方式,系统性地介绍了Spring Security的关键技术点和最佳实践。

2025-06-07 17:58:18 1023

原创 Spring Boot 类加载机制深度解析

本文深入解析了Spring Boot的类加载机制。首先回顾了Java类加载基础,包括类加载器层次结构和双亲委派模型。然后重点分析了Spring Boot特有的类加载特点,如Fat JAR结构和LaunchedURLClassLoader的实现。文章详细阐述了启动流程中的类加载顺序、优先级,并提供了常见问题的解决方案。最后给出最佳实践和性能优化建议,包括依赖管理、自定义类加载器实现和调试工具使用。对于深入理解Spring Boot运行机制和提高应用性能具有重要参考价值。

2025-06-06 13:42:25 1559

原创 Spring MVC 详解:原理、组件与实战

本文全面介绍了Spring MVC框架的核心内容,包括MVC设计模式、主要组件(DispatcherServlet、HandlerMapping等)及其协同工作原理。详细解析了请求处理流程、常用注解(@Controller、@RequestMapping等)、视图技术、拦截器使用等开发要点,并提供了RESTful API开发示例。文章还涵盖了最佳实践建议和常见问题调试方法,帮助开发者掌握Spring MVC在企业级Web开发中的高效应用。作为Spring生态的核心Web模块,Spring MVC以高扩展性和

2025-06-06 13:41:53 907

原创 Spring IoC 详解:原理、实现与实战

本文系统介绍了Spring IoC的核心概念与实现机制。首先解释了IoC(控制反转)和DI(依赖注入)的关系,梳理了Bean、容器、作用域等核心概念。详细分析了XML、注解和Java Config三种配置方式,深入解读了IoC容器的工作原理和Bean生命周期。文章还提供了常见应用场景、源码机制简析、最佳实践和常见问题解答,强调IoC在系统解耦、配置管理等方面的优势。通过掌握这些内容,开发者能更有效地构建灵活、健壮的Spring应用。

2025-06-05 20:13:53 1466 1

原创 Spring AOP 详解:从入门到实战

本文详细介绍了Spring AOP的核心概念与实际应用。Spring AOP通过面向切面编程解决了企业应用中的横切关注点问题,与传统OOP形成互补。文章阐述了AOP的基本术语(切面、连接点、切点等)和五种通知类型,对比了注解和XML两种配置方式。重点分析了execution切点表达式语法,并通过代码示例展示了如何实现日志、事务和安全等常见切面功能。Spring AOP基于代理实现运行时织入,相比AspectJ更轻量但功能稍有限制。

2025-06-05 20:13:22 1084

原创 Java多线程编程详解

本文系统介绍了Java多线程编程的核心内容,包括线程创建方式(继承Thread类、实现Runnable/Callable接口、线程池)、生命周期管理、同步机制(synchronized、Lock、volatile、原子类)以及常用并发工具类(CountDownLatch、CyclicBarrier、Semaphore)。通过代码示例展示了各种多线程技术的实际应用,帮助开发者理解并发编程的关键概念和技术实现。文章涵盖从基础到进阶的多线程知识,为Java开发者提供了全面的并发编程指导。

2025-06-03 17:19:04 950

DOM4J

DOM4J使用简介,很实用的指南

2008-07-09

struts标签文档

struts标签帮助文档

2008-07-09

Spring in Action.pdf

介绍SPRING结合STRUTS的使用

2008-07-09

JSTL帮助文档

JSTL帮助文档,chm格式

2008-07-09

java设计模式

java设计模式详细介绍

2008-07-09

空空如也

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

TA关注的人

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