- 博客(335)
- 资源 (33)
- 收藏
- 关注
原创 Docker 容器中使用 Docker - DinD 和 DooD
突然间研究这个来的缘由是正在从 Jenkins 往 Harness 的过度, 而完全用命令来构建 Docker 镜像变得不一样了。在 Jenkins 中 Agent 本身也是一个 Docker Daemon, 所以 Docker 命令执行无障碍,而 Harness 的所谓的 Agent 就是一个个的运行在 Kubernetes 中的 Docker Container (Pod) 了,这其中没有 Docker Daemon, 又不能连接到 Kubernetes 本身的 Docker Daemon。
2023-12-10 11:43:58 233
原创 理解 JUnit, JaCoCo 到 SonarQube 的过程及 Maven 配置
Java 项目需要产生单元测试及代码覆盖率的话一直都是走的 JUnit 单元测试,JaCoCo 基于测试产生测试覆盖率,然后送到 SonarQube 去展示这条路子。当然 SonarQube 还可以帮我们进行代码的静态分析。但对其中的具体使用及过程知晓的并不深,基本就是在 pom.xml 中依葫芦画瓢。本文稍加深入的理解每一步的功效与配置,以 Maven 管理的 Java 项目为例,JUnit 采用是众多旧项目仍然无法摆脱的 JUnit 4。
2023-11-28 00:25:42 556
原创 《100 Java Mistakes and How to Avoid Them》笔记 2
由于 Java 学了 C,也用 0 开始的数字来表示 8 进制数,如 037, 010 分别是十进制的 31 和 8,这与现实不相符。但是 Java 表示 2 进制, 16 进制的方式没有问题的,如 0b10, 0x37。IntelliJ IDEA 看到使用 0 开头的 8 进制数会不建议那么使用. 8 进制数字的范围是 0~8, 所以 09 是错误的, 但是 Java 编译器似乎对此很陌生.现在几乎没有必要使用 0 开始的 8 进制数的方式, 或许还有用的就是表示 Unix 下文件权限, 如。
2023-11-28 00:24:51 275
原创 《100 Java Mistakes and How to Avoid Them》笔记 1
一共讲了 100 个常见错误如何避免(例如,怎么用最新 Java(Java 9 -- Java 21) 语法, API 来改进),以及用静态分析工具,单元测试及早发现。这几日在阅读 Manning 出版社的 《100 Java Mistakes and How to Avoid Them》, 其中列举的确实是一些容易带入到代码中的错误,不少还是通过代码 Review 或单元测试很难发现的问题。也有些看似很弱智,却可能是隐匿许久的定时炸弹,只等某一特定条件出现时即爆。
2023-11-28 00:24:13 503
原创 Lombok @With 的纯弊端及如何避免
比如 Scala 发展出了 case class, Kotlin 的 data class, Python 的 @dataclass,还有 JDK 14 引入的及至 JDK 16 转正的 record, 都是为了自动生成 Java 类的 setter/getter/toSring/hashcode/equals 等方法。听说过 Lombok,但觉得它用了会影响到对源代码的阅读,因为造成代码的行为与源代码所展示的不一致,还可能依赖于特定的 IDE 或构建工具插件,所以一直未真正应用。
2023-11-22 14:17:58 708
原创 postgres in (?,?) 和 =any(?) 用法/性能对比
即如何给 in (?) 条件直接传入一个列表参数,然而本质上是不支持,最终不得不展开为 in (?) 针对每个元素单独设置参数,不定长的参数对于重用已编译 PreparedStatement 语句的帮助不大。那么 JDBC 操作 PostgreSQL 是何种状态呢?展开为多个参数当然是有效的。继续尝试 Spring 提供的 NamedParameterJdbcTemplate 的操作方式。执行后查看到实际执行的语句是。
2023-11-22 14:17:14 392
原创 JDBC 操作 SQL Server 时如何传入列表参数
本文是作为将要对 PostgreSQL 的 in, any() 操作的一个铺垫,也是对先前用 JDBC 操作 SQL Server 的温习。SQL Server 的 PreparedStatement 的实现类 SQLServerPreparedStatement 的 setArray() 未实现,反编译出它的 setArray() 方法是。这里所引用的 SQL Server 的 JDBC 驱动是 com.microsoft.sqlserver:mssql-jdbc:11.2.0.jre8。
2023-11-22 14:16:21 529
原创 AWS Step Function 异步动态调用 Lambda 后汇集结果
但在一个 Lambda 中同步调用其他 Lambda 时就有个费时费钱的问题,虽然我们采用线程池来调用 Lambda2, 由于每个同步调用的耗时不相同, Lambda1 最终要等待最慢的那个调用结束后才能对所有结果进行聚集处理。这就是著名的“长板效应”, Lambda1 多数时候是在无谓的等待当中消耗着你的钱财。分布式计算有这么一个需求,主进程准备好输入数据,然后根据输入中某个 Items 动态调用若干计算进程,待到所有计算完成后再汇集结果。这一需求移植到 AWS 上就像是下面这样子。
2023-11-22 14:15:16 104
原创 AWS Lambda 中使用 Python 并发编程
无论在何处,有多重任务要处理时,并发编程总是要得到考虑的。比如有 IO 等待时的并发或 CPU 密集型时的并行计算,并发通常是指在同一个 CPU 上按时间片轮换执行,并行是任务在不同的 CPU 上执行。能有效使用 CPU 多核的语言可以让线程运行在不同的核上实现并行,如果是启动的子进程能由操作系统运行在其他 CPU 核上。这时候就必须要考虑多进程并行的方式,同时应知晓当前选择的 Lambda 运行环境有多少个 CPU 内核,因为如果是单核的话再多进程也无济于事,没必要启动多于核心数的进程。
2023-05-30 10:57:55 327
原创 实测 AWS Lambda 不同内存配置下的 CPU 核心数
目前(2023-05-25) AWS Lambda 的内存选择区间是 128MB ~ 10240MB, 最长运行时间为 15 分钟,但没有 vCPU 个数的选择。vCPU 的数量是基于所选内存大小而有不同的,如果我们在 Lambda 中需使用多进程充分发挥 CPU 性能的话,有必要了解当前 Lambda 所在运行环境的 CPU 内核数,甚至是单核的频率。组件的方法,可把 psutil 做成 Lambda 层以引用,或与 Lambda 函数代码一同打成 zip 包。
2023-05-30 10:57:13 298
原创 Spring 5 响应式编程研究
Spring 5.0 发布之时(2017-09-28) WebFlux 是它的一大亮点,即响应式 Web 编程。于是多线程编程大致两种模式。Akka Actor 比 CompletableFuture, RxJava,以及本文将要讨论的 Reactor 更高级的是 Akka System 可以分布式部署,Actor 分布在不同的进程,主机上。然而随着云计算的普及,基于消息系统解耦合的任务分解让代码变得更清晰,编码中甚至不用考虑多线程的行为,部署方式能解决任务执行的效率。
2023-05-30 10:56:31 173
原创 配置 FastAPI/Uvicorn/Hypercorn 的访问日志
性能方面普遍是 FastAPI 比 Flask 高,编程方面就各取所好吧,使用 Flask 的时候还是 1.x 的版本,最近用 FastAPI 较多,所以无法对比。FastAPI 本身没提供启动 Web 服务的代码,不像 Flask 还能通过 Flask 对象 或 flask 命令启动一个开发用途的 Web 服务,而 FastAPI 必须用其他的组件(ASGI server)来启动,比如各种 *corn 或 Daphne。
2023-05-30 10:55:52 1074
原创 应用 AWS Lambda 部署 FastAPI
比如说 AWS Lambda 收到请求时快速启动 FastAPI 服务,该服务绑定到 TCP 端口或 Socket 文件都行,然后 Lambda 请求代理到 FastAPI 服务,最后关闭 FastAPI 服务,但是想来都不那么容易实现。又由于是 Rest API, 所以实现部分用了 FastAPI 的装饰器,但不实际启动 FastAPI 的 Web 服务,Lambda 的 handler 方法根据 routeKey 手动映射到 FastAPI 的装饰方法。
2023-05-02 11:05:58 257 1
原创 理解 Java 线程池 ThreadPoolExecutor
使用 JDK 5 的线程池实现有近 20 年的时间了,快速创建一个线程池经常是调用 Executors 中的工厂方法。但是涉及过更精细的线程池管理控制时不得不用 ThreadPoolExecutor 的构造方法,这也就是为什么有些公司不建议用 Executors 的工厂方法创建线程池,而应该直接创建 ThreadPoolExecutor 或 ForkJoinPool 实例。OL, TimeUnit.MILLISECONDS 表示线程创建后只要线程池还在就是永生的;
2023-04-22 13:35:03 90
原创 体验 Python FastAPI 的并发能力及线, 进程模型
对于每一种类型 Web 服务基本的测试是每秒发送 2 个请求,连续发送 1000 个,500 秒发送完所有请求,程序中 API 方法接受到请求后 sleep 800 秒,保证在全部 1000 个请求送出之前一直占着连接,并有充足的时间对连接进行分析。在测试极端并发数时,由于在 Mac OS X 尽管设置了 ulimit 最多也只能创建 4000 多一点线程,所以在模拟更多用户数时,JMeter 在远程 Linux(Docker 或虚拟机) 上运行测试用例。以及它是如何运用线程或进程来处理请求。
2023-04-05 06:48:38 2124
原创 学习使用 AWS Cognito 并 OAuth2 验证
因此通过对 Cognito 的学习的另一个目的是由此了解 OAuth 2.0 协议的相关内容。OAuth 是 Open Authorization 的缩写,是一种开放的可为 Web 或桌面应用进行用户验证和授权的协议。例如,在互联网上的许多应用,可不用额外注册帐户而采用第三方的帐户(Gmail, Apple Id 等)登陆并完成授权,这就有 OAuth 身影。当我们提到 OAuth 的时候,常常会碰到 OAuth 1.0, OAuth 2.0, OpenID, 和 Auth0.
2023-04-05 06:46:52 868
原创 Python __slots__ 的用法笔记
Python 是一个动态语言,可以动态的给实例或类增减属性或方法,给类添加的属性会影响到前后所有创建的实例。属性可以限定类或实例属性和方法,如果没有。的话实例的属性和方法包含在实例的。字典中,类的属性和方法包含在类的。按常规写法可能会出现的问题大概有。
2023-03-01 13:06:24 105
原创 Python Flask 框架的并发能力及线,进程模型
从 JMeter 每半秒发送一个请求,连续发送 1000 个,程序中 API 方法接受到请求后 sleep 800 秒,保证在全部 1000 个请求送出之前一直占着连接,以此来找到同时被处理的请求数目,并且有足够的时间统计当前的 TCP 连接数。在测试极端规模的并发数时,由于在 Mac OS X 很难突破 5000 个线程的限制,这时就让 JMeter 分布到远程 Linux(Docker 或虚拟机) 上执行。虽然网上或许很容易找到它们的默认并发数,但通过实验的方式可以得到更感性的认识。
2023-02-24 22:37:14 1428
原创 AWS SNS 订阅到 HTTP 的过程及消息报文
同邮件列表一样,订阅 SNS 消息也是需要确认的,不然 SNS 消息就可能恶意满天飞。本文试验如何用 HTTP 端点订阅 SNS 消息,订阅确认,以及发送消息到 SNS 主题后消息推送到 HTTP 端点的细节,重点是了解订阅及被推送过来消息时的 HTTP 报文内容。SNS 的 HTTP 端点订阅需要一个公网上的 HTTP URL, 对 SNS 可见,所以我在本地测试时在家中路由器上加一个端口映射,对 Modem 获得的公有 IP 的 8080 端口访问转发到写此文用所用机器的 8080 端口上。
2023-02-24 22:36:42 743
原创 远程方式执行 JMeter 测试
如果能够远程运行 JMeter 的测试就能突破单机上的线程限制了,比如 Mac OS X 不行,找个 Linux 远程机器(可以是虚拟机)来执行,一台机器不够,找多个。想要模拟 15000 个并发用户,测试可分配到 5 台机器上执行,每个节点跑 3000 个用户并发就行,有点操控肉机的感觉。(它也能远程运行测试)。JMeter 的测试可以在本地模拟并发用户,那么为什么要远程执行 JMeter 测试呢?JMeter 是一个极好的测试 Web API 及压力测试的工具,另一个的话就是 Python 版的。
2023-02-24 22:36:15 316
原创 使用 ECS Exec 直通 ECS 容器会话(适用于 Fargate 和 EC2)
基于 EC2 的 ECS 服务,要看看容器内的状态,一直以来都是先 SSM(Simple System Manager) 或 SSH 进到 EC2 实例,然后再。. 但是对使用 Farget 的 ECS 服务就无能为力了,因为找不到 SSM 或 SSH 的主体, 只能通过程序日志来大概了解容器内发生的事了。,连接过程中唯一的不同就是容器中也运行了一个 SSM Agent, 所以这个容器也就无所谓是在 EC2 实例还是在 Fargate 中。允许我们直接连接 Fargate 或 EC2 中的容器会话,见。
2023-02-24 22:33:43 647
原创 Python 基于多环境的配置方式
第一种方式是本人推荐的,其他的方式只是在不同格式的配置文件中,按环境组织不同的配置值,其他方式的不同配置读入内存中基本是体现为字典变量。部署到不同环境的应用会使用到各自的配置,如 Dev, QA, Stg, Prod 有自己的数据库等资源。Spring Boot 可采用 Profile 对应不同的环境,不同 Profile 选择自己的配置文件。本人还是偏爱在同一个文件中分组配置,容易查错与编辑,类如在 application.properties 文件中以下面的方式。
2023-01-18 13:31:08 992
原创 升级到 Spring Boot 3 后 javax.inject.Named 不可用
Spring 6 要求用 JDK 17+, Spring Boot 3 自然也要上 JDK 17+ 才能使用,对于一直死死抱住 JDK 8 不放的要升级到 Spring Boot 3 就是个比较大的挑战。Spring Boot 1 的项目还得老老实实的先升级到 Spring Boot 2,如果是早期的 Spring Boot 2,第一步是升级到 Spring Boot 2.7.x, 一步步来,免得步子大了扯到X。从 Spring Boot 2.x 升级到 Spring Boot 3 的指南请阅官方的文档。
2023-01-18 13:30:18 224
原创 Spring Boot Web 输出 Tomcat 的访问日志到控制台
属性文件中的配置针对的是如何输出访问日志到文件,而我们有时候需要输出访问日志到控制台而不非文件,比如 AWS 上的 ECS 应用,控制台的输出可直接发送到 CloudWatch,这样便于分析日志。在 Spring Web 中可以用 Interceptor 或 Filter 来记录访问日志,但在请求出错时无法准确显示出响应时间和状态码,毕竟 Tomcat 的访问日志在代码的外层,进出 Controller 方法的输入输出信息也就掌握的更清楚。
2022-12-31 00:04:29 1089
原创 HDFS 分布式文件系统的搭建与使用
HDFS 沿袭了传统的 Master/Slave 系统架构,但因目前像传统的计算机名词 PC, CRT 被恶意使用的当下,Master/Slave 相应的更名为 NameNode 和 DataNode。在通常的系统中, Master 兼具协调与数据存储的功能,而 Slave 只存储数据,而 HDFS 的 NameNode 仅保管文件的元信息,数据块存储在 DataNode 中。由于数据块从多个节上存取,也就能突破单点的网络带宽和硬件资源的限制而获得更好的性能;能处理更大的数据,和克服单点故障的问题。
2022-10-11 00:03:57 941
原创 细数 DB2 数据库的 Identity 字段
每种数据都有自己独特的自增列的声明方式,如 Oracle 的 Sequence, SQL Server 的 Identity, MySQL 的 auto_increment, PostgreSQL 的 Sequence 或 Serial。和 PostgreSQL 类似,DB2 也提供两种自增列的声明方式,它们是 Sequence 和 Identity。而本文主要着墨于 DB2 的 Identity 字段,并讲述它与 Sequence 的某种联系,以及它对数据表的导入的影响。
2022-10-11 00:03:15 735
原创 向量间距离/相似度及用 Python 进行计算
计算距离的目的也是为了确定两个向量的相似度,这里的向量可以是纯数学的数组,或者是一系列带有某些可量化特征值的物件。写作本文的原由是需要用 Numpy 计算两个实际对象的相似度,实现代码非常简单,因此更不能满足于此,借此机会多多了解下向量之间距离和相似度的概念,还回顾下一些相关的数学知识。本文主要关注到欧氏距离和余弦相似度这两个数值的求解上。计算两个向量的相似度有许多的方法,如。
2022-10-11 00:00:52 1511
原创 为 S3 中的 CSV 文件创建带 Partition 的 Athena 表
S3 Select 只能针对单个 S3 文件查询,如果要对一组 CSV 文件同时进行查询的话就要用到 Athena。把相同 Schema 的一系列 CSV 文件放到 S3 的某一个目录中,我们可为它们创建一个 Athena 表,然后查询该 Athena 表就会从对应 S3 目录中扫描所有的 CSV 文件。CSV 文件是纯文本的,对人阅读和编辑来说是最友好的描述表格数据的格式。当然 S3 Select 查看任意的文本文件也行,只是把它当成一个不规则的 CSV 文件来对待。如 S3 Select 查询语句。
2022-10-11 00:00:12 288
原创 《HTTP/2 in Action》阅读笔记(二)
HTTP/1.1 的 Pipeling 像 Redis 那样的 pipeline, 通过一个连接传递多个 HTTP 请求,再依次返回结果,但这种方案并未得到支持与应用。显示了使用 HTTP/2 的趋势,和其他数据,如 HTTP/3 的应用趋势。随着互联网的发展,展示一个网页请求的资源越来越多,传输的总字节数在变大,平均近几M -HTTP/1.1 效率较低下,只能同步发送处理请求,即请求,得到响应后才能发下一个请求,一个网会加载许多的资源,如图片, js, css 等。要开始步入 HTTP/2 的,
2022-10-10 23:59:19 603
原创 SpringBoot 启用 GZIP 对响应进行压缩
SpringBoot Web 应用默认是不启用响应数据的压缩,对大的文本类型的响应数据进行压缩是十分必要的,如 JSON, XML 等应用数据,甚至是 JS, CSS 等。(或 application.yml) 配置就行。于是查阅 SpringBoot 2.7.x 的帮助文档。在使用了 SpringBoot 之后,在碰到有压缩响应的需求的时候,第一件事情应该要想到是否能通过在。早先的 Web 应用基本是要配置一个叫做。之类的东西,然后判断请求的。响应类型的数据进行压缩。, 介绍了三个配置项。
2022-10-10 23:58:20 515
原创 Python 实现 RSA 非对称加解密
而非对称加密是用一把钥匙反锁门,但只能用另一把特定的钥匙才能打开它,锁门的叫做公钥,开门的叫做私钥。, 大致就是通过互质的两个数,计算欧拉函数, 模反元素,最终算法公钥和私钥,公钥加密的数据只能用用私钥解密,以当前的算力,只要 RSA 的密钥足够长,如 1024 位以上,私钥是无法通过公钥推断出来的。1977 年三位数学家 Ron。在此之前我理解的非对称加密以为是像 MD5 那种摘要(Digest), 由明文生成的 MD5 摘要信息是无法还原出原始数据的,谬以为那就是所谓的非对称。
2022-10-10 23:57:47 403
原创 《HTTP/2 in Action》阅读笔记(一)
版本 0 ~ 3 是留给实验用的,5 设计为 Intenet 流协议的,例如实时音视频,像 VoIP, 实际上也因为地址数量的限制没被使用。后续的 IP 协议版本 7, 8, 9 都被预定了(比如中国的 IPv9 - 冷),所以再有新的 IP 协议版本的放丈是 IPv10。本书买来有一段时日了,一直还未开始阅读,关于网络上 HTTP/2 的真实使用状态查到以下信息。本书首先介绍的是关于 HTTP 协议从 0.9 到 1.0, 再到 1.1 的变迁史。于此同时,HTTP/3(gQUIC) 也上了议程,作为。
2022-08-23 21:43:19 214
原创 Spring Boot 如何选择 Cache 实现的
来选择自己的 Cache 实例,但对 Spring 是如何确定具体 Cache 实现未作展开。本文将介绍选择 Cache 实现的几种方式。一文的补充,该文中提到了自定 CacheManager 及配置。
2022-08-16 11:09:33 278
原创 Diagram as Code -- 用 Python 画框架图
继一系列 X as X, 如 PaaS, SaaS, IaaS, CaC(Configuration as Code), IaC(Infrastructure as Code) 等,Diagrams 喊出了 Diagram as Code 的口号。熟练的程序员大概不喜欢用可视化设计器来生成 GUI 代码,那会让代码变得极不简洁,而是直接写,眼中看到的是代码,头脑中即时产生映像。Diagrams 就是这样一款写 Python 代码产生架构或流程图的库,它绘制的架构图支持主要的云服务提供商,如。...
2022-08-11 23:24:39 968
原创 学习 Airflow 第一篇章
Airflow 起初是由 Airbnb 开发的, 用于调度和监控工作流的平台,后来开源了, 并于 2019 年 1 月成为了 Apache 的顶级项目。而 Airflow 功能就厉害了, 它可动态管理工作流,易于扩展,可集群化进行伸缩,更有一个漂亮的 UI 用于实时监控任务。基于以上特性 Airflow 是很适于执行数据的 ETL(Extract, Transform, Load) 操作的。除了商业的 Control-M 有调度和监控工作流的功能外,其他的基本只用来调度任务,监控全靠自己的日志。...
2022-08-10 07:31:39 154
原创 Spring 使用 Cache 解析及使用不同类型的 Cache
要在一个Spring应用中开启缓存方法返回结果的功能很简单,不需要额外的依赖,相关的的注解@Cacheable,@CacheConfig,@CachePut,@CacheEvict,@EnableCache等来自spring-context包。实际进行数据缓存时会有更复杂的策略,如元素个数,占用内存,过期时间,何时使用磁盘等,而且不同的数据类型应有不同的缓存策略。因此,除了使用默认的ConcurrentMap作为缓存外,还可通过配置属性。...
2022-07-15 13:45:01 1183
原创 自定义 Spring Web Controller 方法的参数
在 Spring Web Controller 方法中的参数可用 org.springframework.web.bind.annotation 下的各种注解来说明参数值从哪儿获得,比如我们熟知的 @PathVariable, @RequestParam, @RequestHeader, @RequestBody, 还有较少使用的 @ReqeustAttribute, @SessionAttribute, @RequestPart, @MatrixVariable, @ModelAttribute, @Au
2022-07-09 01:33:27 224
原创 Python 中泛型的实现
在学习 Python 3.10 新特性时,其中有个类型别名(TypeAlias), 所举的例子是可写成这让 StrCache 更像是一个类型别名,而不是一个看起来明显就是 的字符串变量(实际上它确实是)。本文不在 TypeAlias 本身,而是从 能看出 Python 似乎也能支持像 Java 那样的泛型, 就像 Python 内置支持的 List[str] 或 list[str] 那样。那么来看 Python 怎么去实现一个只能放入字符串的 Cache, 而不能放入别的类型。 阅读全文 >>...
2022-07-05 13:36:15 487
原创 深度理解 Spring Boot Security + JWT Token 的简单应用
项目中有用到 Spring Security 来控制 API 的访问权限,但对于配置应用它基本上是照葫芦画瓢。至于为什么要调用方法并且能从 HttpServletRequest 中得到 Authentication。还有,只要在 Controller 的方法中添加一个带 @AuthenticationPrincipal 注解的参数之后,decodedJWT 便自动有了值,诸如此类的,此前一概模糊不清。早先配置 spring-security-config 是通过继承 WebSecurityConfigure
2022-07-05 13:33:36 368
原创 Java 调用本地动态库的组件(javah, JNA, JNR-FFI)
还是很 久很久以前,当初有 Java 调用本地动态库需求的时候,尝试过用 javah/native 原生的方式在 Java 中使用动态库,再就是小试了 JNative,它调用动态库只需 Java 端的动作, 它最后的更新日期是 9 年前 2013-04-26,基本是应该选择放弃了。关于 JNative 的使用写过两篇如今想继续发掘下是否有别的更好的调用本地库的 JNI 组件,找到有...
2022-07-05 13:32:25 463
Quartz Job Scheduling Framework 中文版 V1.0.0.chm
2010-10-11
远程桌面批量登陆器,3389 RemoteDeskTop
2010-06-07
nantpad.2.0_with_Crack
2010-06-04
Quartz Job Scheduling Framework 中文版 V0.9.5.chm
2009-02-05
Quartz Job Scheduling Framework 中文版 V0.9.2.chm
2008-10-07
精通 Groovy.chm
2008-09-09
Quartz Job Scheduling Framework 中文版 V0.9.1.chm
2008-08-26
Quartz Job Scheduling Framework 中文版 V0.8.2.chm
2008-08-25
程序开发技巧集(Unmi整理)
2008-05-02
Visual.Assist.X.10.4.1619 + Crack
2007-12-01
华为代码统计工具CCT V2.0
2007-11-22
Perl 语言编程.chm
2007-11-15
CN-DOS批处理精华贴(2007-A)(IE6)
2007-10-16
DOS批处理经典入门教程
2007-10-16
APort
2007-10-15
fport
2007-10-15
Quartz Job Scheduling Framework
2007-10-11
JavaDOCHelper1.5.1_Viewer
2007-10-11
reilly.jboss.a.developers.notebook.jun.2005
2007-10-09
Spring程序高手秘笈--英文原版
2007-10-09
SWT程序高手秘笈--英文原版
2007-10-09
Hibernate:程序高手秘笈--英文原版
2007-10-09
Java 5.0 Tiger程序高手秘笈--英文原版
2007-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人