自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java相关领域

男人又老又丑不要紧,最重要的是要有才华。——秋雅

  • 博客(94)
  • 资源 (37)
  • 收藏
  • 关注

原创 Java技术面试(一面)

如何面试别人

2024-08-16 16:54:26 1054

原创 数据库设计——关系字段放置最佳实践

一对一和一对多使用的最多,他们不需要设计单独的关系表,只有真正的多对多才需要关系表。在实际的实践中,大部分情况下都用不到多对多。有些人把一对多也设计了关系表,这是不合理的,这会导致关系和关系对应的数据隔离,增加查询的复杂性。所以针对一对多,你在怀疑他是不是多对多时,只需要反方向看下是否也是一对多就可以了,如果不是,那么他不是多对多。一个学生可以选择多个课程,一个课程可以被多个学生选择,此时学生选课的关系需要一张单独的表来存储。一对多关系:将外键放在多的一侧,这是标准做法,确保数据完整性和查询效率。

2024-07-17 16:26:34 236

原创 总是给数据库表字段设置默认值的好处

通过设置字段不能为空,可以确保每条记录都包含必要的数据,从而保证了数据的完整性。例如,在用户表中,用户名字段不能为空可以确保每个用户都有一个有效的用户名。避免空值问题在数据库查询和数据处理过程中,空值(NULL)可能会导致各种问题,如计算错误、逻辑错误等。通过设置默认值,可以避免这些潜在问题,使数据处理更加稳定和可靠。通过设置默认值,可以确保在缺少明确值时,字段总是有一个一致的值。例如,如果性别字段的默认值设置为'未指定',就不会出现性别为空的情况,从而保证数据的一致性。优化性能。

2024-06-19 19:18:58 677 2

原创 自定义线程池,实现父线程MDC的自动拷贝

以上两个Wapper,包括这个匿名类线程池,不难看出他们都是代理类,应用了代理模式进行增强。这个匿名类线程池在execute前,把线程用MDCRunnable包装了一个,于是线程就有了自动拷贝MDC的能力,目前这是最简单的一种方式。

2024-05-31 23:52:23 276

原创 Java异常体系

ThrowableException(受检查异常)(非检查异常)Error。

2024-05-31 15:15:13 471

原创 TransmittableThreadLocal原理

TransmittableThreadLocal(简称TTL)是阿里巴巴开源的一个Java库,用于解决线程池中线程本地变量传递的问题。其底层原理主要是基于Java的机制并对其进行扩展,以支持在父子线程间以及线程池中任务切换时,能够传递和继承变量的值。: TTL继承自但与不同的是,TTL解决了在已经存在的线程(如线程池中的线程)之间传递值的问题。: 对于异步任务,TTL确保了即使在异步执行的上下文中,父线程的状态也能被正确地传递给处理该任务的子线程。

2024-05-30 22:57:30 908

原创 Java的序列化接口

当父类实现了接口并且定义了字段,子类是否需要再定义一个字段,取决于具体需求。尽管子类可以继承父类的,但为了确保子类的序列化版本一致性,建议在子类中显式定义字段。这不仅能避免由于自动生成导致的潜在问题,还能提供明确的版本控制。

2024-05-27 14:30:58 408

原创 SpringBoot自动化配置原理

创建配置类定义一个新的配置类,使用注解并包含@Bean方法。添加条件注解根据需要使用各种条件注解来控制配置类的加载。注册自动配置类在文件中注册新的自动配置类。Spring Boot 的自动化配置利用注解及其背后的机制(包括文件和条件注解)实现了在应用启动时自动装配 bean。通过这种方式,开发者可以专注于业务逻辑,而无需手动配置各种基础设施组件。

2024-05-26 00:05:29 411

原创 Spring Boot 如何使用 AOP 防止重复提交

首先,创建一个自定义注解。// 可以定义属性以配置注解,例如设置过期时间等。

2024-05-25 23:44:27 342

原创 在Spring Boot中Redis实现事务有哪些方式?

以上三种方式都可以在Spring Boot中实现对Redis的事务支持。选择哪种方式取决于具体的业务需求和使用场景。通常,使用Spring Data Redis的SessionCallback是较为直接和简便的方法,但对于更复杂的需求,可以考虑使用Lua脚本。

2024-05-20 16:57:11 518

原创 URL的定义建议使用驼峰写法吗?如果不建议好的写法是什么?

在 URL 的定义中,通常不建议使用驼峰写法(CamelCase),因为 URL 应该尽量保持易于阅读和输入。URL 中包含的字母大小写可能会导致访问错误或混淆,因为不是所有的服务器或网络设备都会把 URL 视为大小写不敏感。因此,推荐的好的写法是使用全部小写并通过短划线来分隔单词。这样不仅避免了大小写敏感的问题,也使得 URL 更加清晰易读。

2024-05-11 15:05:58 727

原创 SpringBoot整合MyBatis步骤

在Spring Boot中整合MyBatis可以通过几种方式实现,主要包括使用官方的MyBatis Spring Boot Starter,或者通过手动配置。这是最简单的方式,因为Spring Boot Starter为我们自动配置了大部分的MyBatis设置。

2024-05-09 19:57:54 300

原创 SpringBoot如何实现动态数据源?

接下来,你需要实现,以便根据当前上下文确定应使用哪个数据源。@Override。

2024-05-09 18:55:06 553 1

原创 kubernetes学习

43、Pod详解-亲和性调度-podAntiAffinity。41、Pod详解-亲和性调度-nodeAffinity。42、Pod详解-亲和性调度-podAffinity。52、Pod控制器-Deployment-金丝雀发布。50、Pod控制器-Deployment-升级策略。51、Pod控制器-Deployment-版本回退。49、Pod控制器-Deployment-扩缩容。48、Pod控制器-Deployment-基础。33、Pod详解-生命周期-初始化容器。34、Pod详解-生命周期--钩子函数。

2024-04-19 18:27:03 200

原创 Kubernetes如何实现零停机部署(zero-downtime deployment)?

在 Spring Boot 应用中实现优雅关闭(Graceful Shutdown),可以确保应用在停止之前有机会处理完当前正在执行的任务。通过上述的配置和代码实现,你的 Spring Boot 应用将能够在接收到停止信号时,优雅地完成正在处理的请求,然后再关闭。为了确保服务间的调用不会在更新过程中失败,你可能还需要考虑实现客户端重试机制和断路器模式,这些可以通过 Spring Cloud 的组件如。生命周期钩子可以用来执行关闭前的操作,例如稍微延迟关闭,以确保服务有足够的时间完成请求处理。

2024-04-19 17:35:33 919

原创 一个技术团队需要哪些基础设施?

6、SpringCloud相关:nacos、xxl-job、sentinel。4、一个产品文档PRD管理平台(可以和在线协同文档为同一个)5、技术相关:gitlab、maven私服、devops平台。3、一个Bug/问题处理平台(可以和需求管理平台为同一个)2、一个项目/需求管理平台。1、一个在线协同文档。

2024-04-12 21:47:45 137

原创 Docker学习

compose目前已经完全支持Linux、Mac Os和Windows,在我们安装Compose之前,需要先安装docker。下面我们以编译好的二进制包方式安装在Linux系统中。# 设置文件可执行权限# 查看版本信息。

2024-04-09 23:11:55 1411

原创 Mysql索引失效的情况

MySQL索引的使用能够显著提高查询效率,但在某些情况下,索引可能不会被利用,这就是所谓的索引失效。理解和避免这些情况有助于优化查询性能。

2024-03-31 23:16:05 480

原创 HashMap、LinkedHashMap、TreeMap

HashMap实现了Map接口,并且其底层是基于哈希表(散列表/数组)的数据结构。它使用键(Key)对象的哈希码来确定键值对(Entry)存储的位置。在Java 1.8及以后,当链表长度大于一定阈值(默认是8)时,链表会被转换为红黑树来提高搜索效率。

2024-03-31 21:52:15 1412

原创 12-Factor应用方法论

12-Factor应用方法论侧重于软件开发的最佳实践,确保了应用在任意云平台上都能有良好的可迁移性和减小与底层硬件的耦合度。12-Factor应用方法论是由Heroku的创始人Adam Wiggins提出的,旨在指导开发者构建应用以适应现代云平台,实现高的可移植性、伸缩性和可维护性。应用的进程应该能够迅速启动及优雅停止,从而实现更加快速的部署和弹性的伸缩性。后端服务如数据库、消息队列等,应该可以随时被连接或断开,而不影响应用的运行。应用应该自己提供服务对外的HTTP服务,而不依赖于外部的web服务器。

2024-03-31 17:52:28 597

原创 SpringCloud网关如何做限流?

是一个指向Spring Bean的引用,这个Bean需要实现接口,用于决定限流规则的作用对象(如用户、IP等)。以下是一个按请求路径进行限流的@Bean创建一个Zuul过滤器来实现限流逻辑,你可以使用Hystrix来控制并发量。// 每秒100个请求的速率@Override@Overridereturn -4;// 设置为高优先级@Override// 永远开启过滤@Overrideif (!// 限流发生时,拒绝访问// 返回429状态码// 设置返回的内容。

2024-03-30 11:25:32 1102

原创 SpringBoot启动过程

由于它们运行的时间点较早,容器可能还没有完全初始化,许多Bean可能还未被创建和注册,因此在这些组件中使用@Autowired注入其他的Bean通常是不可行的或者说行为是不确定的。这个列表提供了Spring Boot启动过程的一个相当详尽的视角,但是实际上在实际的应用中,基于不同的配置和自定义的组件,还可能涉及更多的步骤和细节。,它直接操作ApplicationContext的配置,这发生在容器的Bean定义被加载之前,因此此时容器里面还没有Bean可以被注入。

2024-03-30 10:50:20 1041

原创 安装虚拟机

在VMware中安装CentOS7(超详细的图文教程)_在vmware上安装centos-CSDN博客终于有人把VMware虚拟机三种网络模式讲清楚了! - 知乎

2024-03-28 22:52:31 445

原创 为什么响应式编程无法从Threadlocal里获取数据?

响应式编程模型(如 Spring WebFlux)和传统的 Servlet 基于线程的模型(如 Spring MVC)在处理请求的方式上有显著不同。在传统的 Spring MVC 应用中,每个请求都是由一个固定的线程处理的,因此可以便利地使用。然而,在响应式编程模型中,因为处理流程可能在多个线程之间切换,所以无法保证整个请求处理链在同一个线程中执行。是跟随响应式流的,并且可以在响应式链中的不同操作和不同线程间保持数据的连贯性。的数据是绑定到特定线程的,当请求处理跳转到新的线程时,原线程的。

2024-03-28 10:22:26 601

原创 SpringBoot与Prometheus监控整合

参考:springboot实战之prometheus监控整合-腾讯云开发者社区-腾讯云https://www.cnblogs.com/skevin/p/15874139.htmlhttps://www.jianshu.com/p/e5dc2b45c7a4

2024-03-25 14:08:49 242

原创 SpringBoot多模块应用的模块设计

启动模块,所有的Congfig类也建议放在这里。为什么是所有的Config都放在这里,我认为放在这里使得配置类更加的集中,更加的好管理,也能更好的梳理配置,虽然有些配置也可以跟着自己的模块走,但是我还是觉得放在这里好些。有更多体会的建议留言。

2024-03-22 19:44:56 181

原创 如何实高可用性(HA)的 Nginx 集群

一、使用 LVS 将 Nginx 配置为高可用性集群为了实现高可用性(HA)的 Nginx 集群,可以使用 Linux Virtual Server (LVS) 作为负载均衡器。LVS 是 Linux 内核内置的负载均衡软件,它支持多种调度算法,如轮询、加权轮询等,可以将客户端请求分发到多个服务器,从而提高服务的可用性和扩展性。一、使用 LVS 将 Nginx 配置为高可用性集群1. 准备工作2. 安装和配置 LVSLVS 的配置通常涉及到两个层面:内核层面的 IPVS 配置和用户态的管理工具。

2024-03-22 19:22:58 956

原创 在微服务架构中如何使用 Nginx 作为入口控制器或者服务网关

一、在 Kubernetes 中使用 Nginx 作为 Ingress Controller:一、在 Kubernetes 中使用 Nginx 作为 Ingress Controller:在微服务架构和容器化部署中,Nginx 常常被用来作为入口控制器(Ingress Controller)或者服务网关。Kubernetes 社区提供了官方的 Nginx Ingress Controller,你可以通过 Helm 或者直接使用 YAML 文件进行部署。

2024-03-22 18:39:00 1878

原创 Nginx常见面试题以及答案

答: Nginx 的优势在于处理静态文件、高并发连接时性能较好,内存消耗低,配置灵活,并且适合作为负载均衡器和反向代理。答: Nginx 的缓存功能可以存储来自后端服务器的响应结果,并在符合一定条件时直接使用缓存内容响应客户端请求,从而减少后端服务器的压力。它的主要优势包括使用较少的资源处理高并发连接、提供高度的可靠性、支持热部署、提供灵活的配置方式以及良好的负载均衡和缓存功能。location 指令可以匹配请求的URI,并根据不同的匹配结果,应用不同的配置,如代理设置、重写规则或返回不同的内容。

2024-03-22 18:14:19 7196 2

原创 什么是局部性原理?

局部性原理描述了一个倾向,即软件在执行过程中所需要访问的数据和指令,倾向于集中在一小块连续的地址空间内。缓存是一种小容量但速度极快的内存,位于CPU和主内存之间,用来临时存储最近或频繁访问的数据,以减少访问主内存的次数,从而提高整体系统性能。空间局部性(Spatial Locality):空间局部性则是指如果一个数据位置被访问,那么其附近的数据位置很可能很快也会被访问。例如,循环中使用的变量就可能展现出很强的时间局部性,因为在循环过程中,这些变量会被连续多次读取或修改。

2024-03-22 16:30:47 305

原创 FeignClient是否可以配置多个拦截器?

1、做法1、做法在Spring Cloud中,是一个声明式的Web服务客户端,让调用远程服务就像调用本地方法一样简单。拦截器可以用于在发送请求之前或者获得响应之后执行一些操作,比如添加公共的Header、记录日志、做一些统计等。在Feign中,拦截器是通过实现接口来定义的。如果你想为添加多个拦截器,可以声明多个的Bean。下面是如何定义和注册多个拦截器的步骤:1、创建多个实现了3、然后,你可以在接口上使用注解的当Feign准备发起请求时,所有注册的。

2024-03-22 16:23:28 682

原创 什么是Webhook 和 HTTP Endpoint?

当这个预设的事件被触发时,源系统将会向配置的HTTP Endpoint 发送一个HTTP请求(通常是POST请求),这个请求包含了关于事件的信息,如事件类型、关联数据等。简单说,Webhook 是一种自动化的通知机制,它通过HTTP请求将事件信息从一个应用程序传递给另一个应用程序的HTTP Endpoint;在Webhook的上下文中,HTTP Endpoint 是接收事件通知的服务器URL。然而,在更广泛的Web服务上下文中,HTTP Endpoint 可以是任何通过HTTP协议公开的服务接口。

2024-03-22 13:56:25 759

原创 了解云原生

云原生应用开发一般来说主要是广大程序员的事情,云原生应用并不限于某一门编程语言,无论是Java、Python、Golang、PHP、前端开发等,需要掌握的是Docker与容器化(重点)、Kubernetes基础操作(基本入门就行)、微服务、GitOps等相关的内容,所学内容其实并不多,大部分都是交给工具和平台来搞定。云原生开发工程师除了比较核心的操作系统、网络相关的知识外,还需要掌握云原生时代的“C语言”Golang,同时需要了解Kubernetes编程和源码相关的知识。

2024-03-22 11:26:50 856

原创 分布式事务协调器Seata

这是因为,Seata 通过全局事务 ID 和事务上下文的传递,确保所有相关的微服务调用都在同一个全局事务的范围内执行。: 在这个例子中,应用 A 和应用 B 的事务是分离的。应用 A 的数据库操作不会参与到应用 B 的全局事务中,因为全局事务的上下文是在调用链的下游应用 B 中创建的。在这种情况下,应用 B 的全局事务将不会自动包含应用 A 的任何数据库操作,因为全局事务的上下文是在应用 B 中创建的。: TM负责定义事务的范围,即开始和结束全局事务的边界,它会在适当的时机向TC注册并报告全局事务的状态。

2024-03-21 16:08:14 821

原创 Mysql面试题以及答案

1 基础1 基础1.1、MySQL有哪些数据库类型?数值类型有包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示 1 字节、2 字节、3 字节、4 字节、8 字节的整数类型。1)任何整数类型都可以加上 UNSIGNED 属性,表示无符号整数。2)任何整数类型都可以指定长度,但它不会限制数据的合法长度,仅仅限制了显示长度。包括 VARCHAR、CHAR、TEXT、BLOB。CHAR和VARCHARCHARCHARCHARCHAR(10)CHARCHAR。

2024-03-21 12:01:08 1299

原创 如何设计一个订单超过5分钟不支付就自动取消的设计?都有哪些方案?

当创建一个订单时,将这个订单的ID和过期时间(当前时间加上5分钟)一起放入支持延迟消息的消息队列中(如RabbitMQ的Delayed Message Plugin或者Kafka的延迟队列)。应用层定时器(Application-Level Timer): 在应用层面,使用编程语言内置的定时器API(例如Java的ScheduledExecutorService,或者Python的sched模块)来设置一个5分钟后执行的定时任务,任务的责任是检查和取消订单。接口,可以用来实现内存里的延迟队列。

2024-03-20 22:27:32 1179

原创 Redis面试题以及答案

在缓存系统的设计和运维中,"缓存击穿"、"缓存穿透"和"缓存雪崩"是三种常见的问题场景,它们各自描述了不同的异常情况,可能导致缓存系统的效率下降甚至崩溃。

2024-03-20 21:57:01 1155

原创 SpringCloud面试题以及答案

服务降级: 当出现请求超时、资源不足时(线程或者信号量),会进行服务降级,就是去返回fallback方法的结果。服务熔断: 当失败率(网络故障或者超时造成)达到阈值自动触发降级,是一种特殊的降级。服务隔离: 为隔离的服务开启一个独立的线程,这样在高并发情况下,也不会影响该服务。一般使用线程池实现(还有信号量方式实现)。8、服务降级和服务熔断的区别区别: 降级每个请求都会发送过去,而熔断不一定,达到失败率,请求就不会再去发送了。

2024-03-20 17:21:27 2097

原创 在Spring Boot中如何处理跨域请求(CORS)?

当浏览器执行跨源 HTTP 请求时,根据请求的类型,它可能首先发起一个预请求(preflight request),这是一种使用 OPTIONS 方法的 HTTP 请求,用来检查真实请求是否安全。不过,值得注意的是,确保 Nginx 的 CORS 设置与你的应用安全策略保持一致是非常重要的。如果你的 Web 应用中包含从其他源获取资源的需求(例如,前端应用从不同域名的 API 服务器请求数据),同源策略将默认阻止这种跨源 HTTP 请求。的跨域请求,并且允许特定的 HTTP 方法。

2024-03-20 15:29:34 1028

原创 过滤器 拦截器 Aop的区别

在 Spring 框架中,过滤器(Filter)、拦截器(Interceptor)和切面(AOP)都是用于在应用程序的不同层次上进行横切关注点(cross-cutting concerns)处理的技术。对于登录拦截这样的场景,拦截器通常是更好的选择,因为它提供了与 Spring MVC 紧密集成的方式,允许你在控制器方法处理之前执行逻辑,并根据需要控制是否继续处理请求或重定向到登录页面。将会拦截所有路径的请求,但排除了登录页面和静态资源的路径。这样的设置使得拦截器成为实现登录拦截的理想选择。

2024-03-20 15:02:47 956

JavaScript课件PPT下载

JavaScript教程PPT,简单明了,全面,实用,也可当作手册使用

2009-09-26

linq to ado.net PDF电子书

介绍微软.net3.5中的新技术linq,强大的数据处理技术!

2009-09-26

数据结构C#语言版,值得看点!

数据结构C#语言版,一样的精彩,秉承了C系语言的一系列特性!

2009-09-26

诺基亚手机N72常玩游戏

冰冻泡泡,俄罗斯方块,雷电,咆哮金属,手机版CS,古龙群侠转,等等!!

2009-09-26

诺基亚N72手机常用系统软件

例如我的电脑,智能助手,大字体==系统功能拓展软件

2009-09-22

设计模式C#版设计模式

23设计模式,面向对象编程的必备!23设计模式,面向对象编程的必备

2009-09-22

CSS3.0手册指南

介绍css的,web技术必备,网站美化!

2009-09-22

JavaScript高级教程

讲述js脚本语言的高级应用,高手进阶使用的。

2009-06-20

JavaScript特效

常见的JavaScript特效,不必再费脑筋!

2009-06-20

JavaScript简易教程

讲述JavaScript的简单教程,能对JavaScript有个初步的掌握。

2009-06-20

mysql 数据库手册

有关mysql数据库的说明,帮助很好的使用。

2009-06-20

WinRAR中文破解版

真正的可用的破解中文版。永久有效的。装机必备。

2009-05-12

TVants电视蚂蚁

支持搜索的网络电视。能搜很多电视。试试吧。

2009-05-12

photoshop经典案例

看来他你的PS没会的就都会了。会的会更加透彻。不会白下的。

2009-05-12

DebugMode FrameServer 2.5 中文版

视频编辑,制作必备。能和常见的软件如绘声绘影,Adoble PR,玛雅,AE,搭桥使用。

2009-05-12

水晶连连看 小游戏

就是小时候常玩的,挺怀旧,不是源代码!仅供编程累了后休息罢了。

2008-06-16

ExtJS实用开发指南

ExtJS实用开发指南,pdf版本的,写的还可以。。

2011-11-29

sql简单教程

sql简单教程sql简单教程sql简单教程sql简单教程sql简单教程

2011-08-11

毕业论文在线虚线社区系统asp.net实现BBS

论文、任务书、开题报告、翻译、源码、发布说明,一切都有。当时是一边学习,一遍做,所以做的很烂。但也绝对是自主开发的,所以新手应该很很容易能看的懂。本例子仅供新手参考!

2010-06-14

在线虚拟社区asp.net实现BBS源码

简易的BBS系统,实现了常见的功能,用户管理、帖子管理、板块管理等。压缩包里有源码和发布说明,还有详细设计,一切进在里面的文档中。是我毕设时做的,很简单普通,仅供新手参考用。

2010-06-14

计算机网络专业简历,我的简历

我的简历,简约大气型。我的简历,简约大气型。我的简历,简约大气型。我的简历,简约大气型。我的简历,简约大气型。

2010-05-12

集合的并交叉三种运算,C语言实现

集合的并交叉三种运算,C语言实现。课程设计版,有详细的说明。

2010-03-15

sql教程,一边看例子,一边学sql

sql教程,一边看例子,一边学sql,最后几个补充的sql查询的例子,可供联系,思考。

2010-01-08

"一事一议"政府部门之间项目审批应用系统源码

"一事一议"政府部门之间项目审批应用系统源码,数据库:sql2000,工具:VS2005。是上学时几个学生做综合实习的时候做的,都是菜鸟,做的很烂,仅供新手参考。

2010-01-08

sql语句简易教程,常见的简单的sql语句,适合入门和复习

sql语句简易教程,常见的简单的sql语句,适合入门和复习

2009-12-16

.net基础教程PPT

.net基础教程,包含C#语言的介绍,桌面程序的介绍,SqlServer的介绍,asp.net的介绍,适合新手初步学习,能对整个.net框架有个大致的了解。

2009-12-16

c语言常用算法,做程序、笔试必备

都是些C语言常见的算法问题,很经典。有问题描述及答案,不论是学习、做程序、笔试都很实用。

2009-12-16

深入浅出MFC经典书籍

windows平台开发必读,对于了解windows很有帮助!

2009-09-22

SopCast网络电视软件

速度比较快的网络电视,其中体育台比较多,喜欢足球,nba的登体育爱好者不可错过!

2009-09-22

友立GIF5.0安装动态图片处理软件

处理gif动态图片,你可以要他来处理,生成动态图片,放到QQ里当表情!

2009-09-22

daemon虚拟光驱,好用

这个好用,我一直再用的奥!也没有让输入码,不知道是不是本来就是免费的。反正这个是安装可使用!

2009-09-22

AudioDVD Crate 制作DVD音频

制作标准DVD音频的首选软件,小巧而强大

2009-09-22

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

TA关注的人

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