自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术人集结地

技术改变世界,代码创造未来

  • 博客(579)
  • 资源 (5)
  • 收藏
  • 关注

原创 java中的Supplier接口解析

摘要:Java 8引入的Supplier接口是一个无参数函数式接口,通过get()方法延迟计算结果。它适用于按需生成场景,如延迟初始化、配合Optional避免空值、流式计算和工厂模式。相比其他函数式接口,Supplier不接收输入参数,仅返回结果。使用时需注意线程安全、资源管理和异常处理。Supplier在性能优化、异步编程等领域具有重要作用,是Java函数式编程的核心组件之一。

2025-12-05 00:40:57 624

原创 resilience4j与guava详细比较

Resilience4j与Guava对比分析:Resilience4j是专注于微服务容错的轻量级框架,提供断路器、限流器等模块化功能,支持Java8+函数式编程和监控集成;Guava则是通用Java工具库,其RateLimiter仅提供基础限流功能。Resilience4j适用于需要复杂配置和监控的微服务场景,而Guava更适合单机应用的简单限流需求。两者社区均活跃,但Resilience4j更专注于容错领域的功能迭代。

2025-12-04 00:38:21 530

原创 RabbitMQ安装插件

本文详细介绍了在Docker环境下为RabbitMQ安装延时消息插件的完整步骤。主要内容包括:确认RabbitMQ版本并下载对应插件,通过docker命令将插件拷贝至容器并设置权限,在容器内启用插件后重启服务,最后通过管理界面验证插件功能是否正常。整个过程涵盖了从准备到验证的全流程,确保用户能够顺利完成延时消息插件的安装配置。

2025-12-02 01:57:06 879

原创 Rabbitmq在死信队列中的队头阻塞问题

RabbitMQ死信队列的队头阻塞问题源于FIFO机制下首个无法消费的消息会阻塞后续合法消息。常见场景包括消费逻辑缺陷、资源不可用等,导致消息积压、业务延迟等危害。解决方案包括:1)消费端增加异常捕获和校验逻辑;2)按业务/错误类型拆分多死信队列;3)引入优先级队列;4)建立监控告警和手动干预机制。关键在于预防性设计和快速响应机制的结合,确保死信队列的高可用性。

2025-11-29 23:12:07 998 1

原创 Resilience4j框架使用详解

Resilience4j是一个轻量级Java容错框架,提供断路器、限流、重试、超时和舱壁等核心功能。其模块化设计允许按需组合使用,如断路器可统计失败率并熔断请求,重试支持自定义次数和间隔,限流控制请求速率,超时限制执行时间,舱壁隔离资源。框架支持函数式编程和Spring Boot集成,通过注解简化配置。Resilience4j特别适合微服务架构,能有效提升系统弹性和容错能力,防止级联故障。

2025-11-26 02:23:51 768 3

原创 Caffeine本地缓存框架原理与使用详解

Caffeine是一款高性能Java本地缓存框架,采用W-TinyLFU算法结合LRU和LFU优势,通过三段式队列管理和Count-Min Sketch频率统计优化命中率。其无锁读写设计(环形队列读缓冲和Mpsc写缓冲)确保高并发性能,支持灵活的过期策略(写入/访问后过期)、异步缓存(AsyncCache)和丰富的监控统计。内存优化方面提供弱/软引用支持和权重控制。与Vert.x结合使用时,可通过手动/自动同步加载或异步加载方式优化数据访问性能,显著减少外部调用。Caffeine相比Guava Cache在

2025-11-24 01:00:35 679 2

原创 Vert.x学习笔记-同一服务是否需要为每个EventLoop创建WebClient实例

Vert.x中推荐共享WebClient实例而非为每个Verticle单独创建,因其线程安全设计允许复用连接池资源,提升性能并减少内存开销。共享实例能统一管理配置,避免连接分散和端口耗尽风险。Vert.x的异步特性确保WebClient与EventLoop模型兼容,不会引发线程竞争。仅在需要隔离配置或处理超高并发时,才需创建多个实例。最佳实践是在应用启动时初始化全局WebClient,通过统一配置管理超时、连接池等参数,避免重复创建导致的资源浪费。

2025-11-23 16:21:03 989

原创 Vert.x学习笔记-Vert.x 定时器原理与应用详解

Vert.x 4.x的定时器基于事件循环(Event Loop)机制实现,提供单次(setTimer)和周期性(setPeriodic)两种定时任务。其核心特点是:1) 通过事件队列非阻塞执行回调;2) 同一Verticle的回调在同一线程顺序执行保证线程安全;3) 支持取消定时器(cancelTimer)。最佳实践包括避免阻塞Event Loop、合理控制定时器数量、及时取消无用定时器。典型应用场景包括任务调度、超时控制和数据采集。开发者需注意将耗时操作委托至Worker线程池,以保持系统高性能。

2025-11-21 00:52:07 764 1

原创 初识Rust语言

Rust是一种现代系统编程语言,具有内存安全、高性能和并发安全等核心特性。它通过所有权、借用和生命周期机制在编译时消除内存错误,支持零成本抽象和跨平台开发。Rust还提供了现代语法、函数式编程特性以及强大的工具链(如Cargo)。相比Java,Rust采用编译时内存管理而非垃圾回收,性能更高但学习曲线更陡峭,适合开发系统软件和高性能应用。Java则更适合企业级应用开发,拥有更成熟的生态系统和更简单的学习门槛。两者在内存管理、并发模型、性能和应用场景等方面存在显著差异。

2025-11-18 23:12:31 1171 1

原创 ThreadPoolTaskExecutor原理解析与用法讲解

ThreadPoolTaskExecutor是Spring对Java线程池的封装,简化了异步任务执行和管理。其核心原理包括任务提交规则(核心线程、队列、最大线程)、线程生命周期管理(复用与回收)以及与Spring生态的无缝集成。通过配置核心线程数、队列容量等参数,可优化异步处理性能。适用于@Async注解方法、批量任务并行化等场景。使用时需注意队列容量平衡、拒绝策略选择、线程上下文传递等问题,避免资源泄漏。合理配置可提升系统并发能力,确保稳定运行。

2025-11-17 01:13:33 1097

原创 Hystrix架构原理与使用详解

Hystrix是Netflix开源的容错框架,通过断路器、线程隔离和降级机制保护分布式系统。核心组件包括断路器、隔离策略、回退机制等,工作流程涵盖命令执行、资源隔离和指标监控。适用于微服务架构,能防止级联故障,但存在线程开销和配置复杂问题。相比Vert.x和Resilience4j,Hystrix提供了更全面的故障保护方案。

2025-11-16 18:52:04 808 2

原创 Vert.x学习笔记-Vert.x Circuit Breaker使用详解

本文详细介绍了Vert.x框架中的Circuit Breaker组件实现,从六个方面解析其使用方法:依赖配置(Maven/Gradle)、核心参数设置(故障阈值/超时时间等)、基本执行方式(execute方法)、三种状态转换机制(Closed/Open/Half-Open)、监控功能实现,以及扩展应用场景(与Hystrix/Bulkhead模式结合)。该组件通过熔断机制保障异步系统的稳定性,提供失败回调、状态自动切换等功能,适用于构建高韧性的分布式系统。文章附带配置示例代码和状态流转示意图,并推荐了相关学习

2025-11-16 01:08:24 896

原创 Vert.x学习笔记-Resilience4j 原理与使用详解

Resilience4j与Vert.x的集成通过独立线程池和异步控制机制实现容错管理。核心组件包括断路器(基于状态机模型)、超时控制(异步判断)、限流(令牌桶算法)和重试(指数退避策略),均配置为独立线程运行以避免阻塞Vert.x的Event Loop。实现时需将阻塞操作封装在Worker线程中,结合Resilience4j的模块化装饰器(如限流+重试+断路器组合使用)。关键注意事项包括线程隔离、上下文传递和监控集成,确保系统高可用性。通过Vert.x的executeBlocking和独立线程池配置,实现非

2025-11-14 16:21:09 604

原创 Claude Code使用指南

Claude Code是由Anthropic开发的智能编程助手,通过自然语言交互帮助开发者完成代码编写、调试和重构。支持主流操作系统,需订阅账号或通过第三方中转站使用。提供代码生成、调试辅助、文件操作和Git集成等功能,支持深度思考模式和数据库连接等高级特性。最佳实践包括优化提示词、控制成本和团队协作配置。国内用户可通过开源路由工具或本地化部署替代方案使用。安装简单,通过npm全局安装并进行账号认证即可开始使用。

2025-11-14 01:21:14 1307

原创 OpenSpec原理解析与使用详解

OpenSpec是一款AI驱动的规范开发工具,通过结构化流程提升代码质量和效率。其核心采用"规范先行"理念,在编码前明确技术栈、接口定义等需求细节,减少模糊提示导致的返工。工具提供从提案起草到归档的全流程自动化管理,支持版本追溯确保规范与代码同步。结合Claude Code使用时,能基于规范文档生成高质量代码,实现规范驱动的高效开发。适用于规模化项目开发与团队协作,但也需注意规范维护成本和探索性需求的适配。通过Markdown格式的规范文档与命令行工具,OpenSpec在代码生成与验证间

2025-11-12 00:42:39 3147 2

原创 通过Lettuce实现PB3格式对象在Redis中的存储与查询

本文介绍了使用Lettuce客户端在Java中实现Redis存储PB3协议数据的方案,包括连接配置、序列化/反序列化操作,并提供了Python替代方案。同时给出了常见问题处理方法,如依赖安装、连接排查和性能优化建议。文中强调生产环境应启用SSL加密、配置白名单和监控内存使用。配套提供了Protobuf编解码和序列化原理的参考链接,帮助开发者快速实现安全可靠的Redis-PB3存储方案。

2025-11-10 01:26:52 349 1

原创 我与C++的一面之缘

摘要:文章回忆了作者大学选修C++课程的珍贵经历,虽然现在从事Java开发,但C++课程中学习的"类"、构造函数和析构函数等概念,培养了自己严谨的编程思维。这段短暂的学习经历不仅带来了成就感,更成为影响其职业发展的重要启蒙。作者指出,编程不仅是代码编写,更是一种思维训练和问题解决能力的培养,这段与C++的缘分虽短却终身受益。(150字)

2025-11-09 15:47:36 536

原创 avro数据序列化原理与使用详解

Avro是一种高效的跨语言数据序列化系统,基于Schema驱动的二进制编码机制。其核心特点包括:1)使用JSON定义数据结构,实现数据与Schema分离存储;2)采用变长整数、ZigZag等压缩算法优化存储空间;3)支持模式演进,确保新旧版本兼容性。使用流程涵盖环境配置、模式定义、序列化/反序列化操作,既支持代码生成也兼容动态模式处理。Avro凭借高效压缩、跨语言支持和灵活的模式管理优势,广泛应用于大数据存储、消息传输和流处理等领域,是结构化数据处理的重要工具。

2025-11-05 01:04:23 780 2

原创 Vert.x学习笔记-Vertx框架设置定时器时出现线程阻塞问题解析

Vert.x框架中,定时器回调若包含阻塞操作会占用Event Loop线程,导致系统延迟甚至崩溃。解决方案包括:1) 使用executeBlocking将阻塞任务移入Worker线程;2) 通过Worker Verticle隔离阻塞代码;3) 采用异步非阻塞库替代同步操作;4) 动态调整定时器间隔应对高负载。核心原则是保持Event Loop高效运转,推荐结合业务场景选择方案,并通过监控确保系统稳定性。

2025-11-05 00:24:55 771

原创 Java中的虚拟线程的深度解析

Java虚拟线程技术解析 JDK 21推出的虚拟线程采用M:N调度模型,通过轻量级线程(1KB/线程)和Continuation机制实现百万级并发。相比传统线程,其优势包括: 性能提升:I/O密集型场景吞吐量提高2-5倍,延迟降低50% 资源优化:内存占用减少90%(百万线程仅数百MB),用户态切换达纳秒级 使用透明:兼容现有Thread API,通过Executors.newVirtualThreadPerTaskExecutor()快速创建 最佳实践: 适用高并发微服务、Web请求处理等I/O密集型场景

2025-10-24 01:14:24 1168 2

原创 SSP通过API对接流量的原理与实现

摘要:SSP(供应方平台)通过API对接流量的核心在于标准化通信协议(如OpenRTB)与实时竞价机制,实现流程包括流量捕获、竞价请求、广告展示及数据优化。SSP将广告位信息、用户特征等打包发送至ADX,由DSP在100ms内出价,ADX选择最优广告展示。技术实现涉及开源工具(如Google OpenRTB库)、安全认证(OAuth 2.0)、性能优化(内存操作)及反作弊系统。应用场景显示,电商和教育行业通过时段与内容优化可提升转化率28%-30%。合规措施包括数据加密、访问控制及隐私保护,确保符合GDPR

2025-10-23 00:39:24 884 2

原创 Maven中的settings.xml文件配置详解

Maven的settings.xml是核心配置文件,用于全局控制构建行为。文件分为用户级(~/.m2/)和全局级($M2_HOME/conf/),前者优先级更高。主要配置包括:本地仓库路径、代理设置、服务器认证、镜像仓库、环境配置等。典型应用场景包括配置阿里云镜像加速下载、设置JDK编译版本、连接Nexus私服等。配置时需注意安全性(加密敏感信息)、优先级规则和备份原文件,修改后可通过mvn help:effective-settings验证。合理配置能显著提升Maven项目管理效率。

2025-10-12 13:08:59 2138 1

原创 从0开始学vue:vue和react的比较

Vue和React作为主流前端框架,在设计理念、开发体验和适用场景上有显著差异。Vue采用响应式系统和模板语法,学习曲线平缓,适合快速开发中小型项目;React基于组件化和JSX语法,灵活性高但学习成本较大,适合复杂应用。性能上,Vue通过精细更新优化渲染,React则依赖虚拟DOM和手动优化。选择建议:Vue适合追求效率的团队,React更适用于需要长期维护的大型项目。

2025-10-01 00:21:40 928 2

原创 从0开始学vue:npm命令详解

npm常用命令详解 npm是Node.js官方包管理工具,核心功能包括: 1️⃣ 初始化:npm init创建项目,-y跳过交互 2️⃣ 依赖管理: 安装:install支持生产/开发依赖、全局安装及指定版本 卸载:uninstall自动更新package.json 更新:update检查outdated依赖 3️⃣ 脚本执行:run执行package.json中定义的脚本 4️⃣ 包发布:publish发布,deprecate标记弃用 5️⃣ 实用工具: 查看包信息:view 安全管理:audit检测漏洞

2025-09-30 18:53:07 1270

原创 Docker进程中的守护进程原理解析

Docker 守护进程是 Docker 的核心组件,采用 C/S 架构,负责管理容器、镜像、网络和存储。它通过 Unix 套接字或 TCP 端口与客户端通信,支持 REST API 请求处理。功能包括容器生命周期管理、镜像拉取/推送、网络配置和数据持久化。底层依赖 Linux 内核特性(如命名空间、Cgroups)和模块化驱动实现容器隔离与资源限制。默认以 root 权限运行,但可通过安全措施(如 TLS、用户命名空间)加固。相比无守护进程的 Podman,Docker 需要更多资源但功能更成熟。

2025-09-28 21:06:33 1265 4

原创 Podman原理与使用详解

Podman是一款无守护进程的轻量化容器工具,采用Libpod库直接管理容器,无需中间守护进程,提升安全性并降低资源开销。它严格遵循OCI标准,支持Docker镜像和多种运行时,提供rootless模式允许非特权用户运行容器。核心功能包括容器生命周期管理、镜像操作、数据持久化及Pod管理,支持Systemd集成和Kubernetes兼容。与Docker相比,Podman采用无守护进程架构,进程模型更透明,默认支持非root操作,安全性更高。两者命令高度兼容,可通过别名无缝切换。

2025-09-28 20:55:17 762

原创 MaxMind DB原理与使用详解

MMDB(MaxMind Database)是一种高效存储和检索IP地址相关数据的二进制文件格式,其核心包括搜索树、数据段和元数据区,通过IP地址二进制转换和搜索树遍历实现快速查询。MMDB支持地理定位、网络安全、数据分析和广告投放等应用场景。Python库maxminddb提供简单API,支持内存映射和多线程,需要定期更新数据库以确保准确性。MMDB凭借高效性、灵活性和跨平台支持,成为处理IP地理信息的理想工具。

2025-09-19 14:36:19 1033 1

原创 MMDB详解

MMDB具有两种主要含义:一种是MaxMind开发的二进制地理数据库(MMDB),专为高效IP地理位置查询设计,广泛应用于网络定位和数据分析;另一种是主存数据库(MMDB),通过全内存数据驻留实现微秒级响应,主要应用于金融、电信等高性能场景。两者分别采用紧凑二进制存储和内存优化技术,在不同领域实现高效数据访问,但都面临特定的技术挑战,如数据恢复和并发控制。

2025-09-19 14:29:18 581 1

原创 Protobuf序列化机制的核心原理

Protobuf的核心原理是通过预定义Schema和使用TLV二进制编码实现高效序列化。其要求开发者通过.proto文件明确定义数据结构,利用字段编号而非字段名进行二进制编码,采用Tag-Length-Value格式存储数据。这种机制具有体积小、速度快、跨语言支持等优势,同时通过字段编号机制保证向后兼容性。相比JSON和XML,Protobuf在性能和存储效率上表现更优,特别适合分布式系统通信。

2025-09-18 01:38:24 1388 1

原创 Java中Redis的键值对按照Protobuf格式进行存储和查询的原理分析与实践

本文介绍了Redis与Protobuf在Java中的集成应用方案。首先分析了Redis的键值对存储机制和Protobuf的高效序列化原理,然后详细说明了实践步骤:定义Protobuf数据结构、生成Java代码、配置Maven依赖、实现Redis序列化器、配置RedisTemplate以及存储查询示例。最后提出了性能优化建议(批量操作、连接池配置等)和注意事项(键设计、内存管理等)。该方案通过结合Redis的高效存储和Protobuf的紧凑序列化,实现了高性能的数据存储与查询功能。

2025-09-18 01:31:04 1050

原创 Java 11中的Collections类详解

Java的Collections工具类提供静态方法简化集合操作,包括排序、搜索、反转等算法封装,支持线程安全包装与不可变集合创建。常用方法如sort()、binarySearch()、shuffle()及极值查找min()/max()。Java 11新增了List.of()等工厂方法快速构建不可变集合,与Java 8相比优化了GC策略和API设计。最佳实践建议:多线程环境使用同步包装器,优先选择不可变集合提升安全性,根据数据规模合理选择算法

2025-08-19 21:33:16 1317 7

原创 Python3 详解:从基础到进阶的完整指南

Python3核心特性解析:默认UTF-8编码、print()函数、/返回浮点数;统一字符串类型为str和bytes;增强生成器、装饰器等高级特性;改进面向对象和异常处理。与Python2相比,关键差异包括编码、打印、除法和字符串处理等。推荐常用库如NumPy、Pandas、Flask等。迁移指南建议使用2to3工具和future库,注意字符串处理和依赖升级。学习资源推荐官方文档、《流畅的Python》等书籍和在线课程。

2025-08-14 23:56:24 1189 9

原创 python安装指定版本的第三方库

本文详细介绍如何为Python安装指定版本的第三方库。核心方法是通过pip命令的版本指定语法(如pip install 包名==版本号),支持精确版本或范围版本安装。文章还提供了批量安装(使用requirements.txt)、虚拟环境创建、权限处理、版本冲突解决等实用技巧,并推荐了pip-tools和poetry等进阶工具。最后通过示例流程演示完整操作,帮助开发者精准控制库版本,确保项目环境一致性。

2025-08-14 01:20:40 1103 2

原创 SARSA算法详解:从实践到理论的全面解析

摘要: SARSA是一种基于策略的时序差分强化学习算法,通过五元组(状态、动作、奖励、下一状态、下一动作)更新Q值,其核心公式为:$$Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_{t+1} + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right]$$。与Q-learning相比,SARSA采用On-Policy方式,依赖实际动作更新,稳定性更高但收敛较慢,适用于动态环境(如机器人导航、交通控制)。其流程

2025-08-08 23:59:31 2116 3

原创 Spring Integration Redis 使用详解

本文介绍了Spring集成Redis的配置与使用方法。首先说明了Maven和Gradle的依赖配置,包括Spring Integration Redis和Spring Data Redis。接着详细讲解了Redis连接配置,包括基础属性配置和自定义Redis配置类。重点介绍了RedisLockRegistry的创建与使用,展示了如何实现分布式锁机制。此外,还说明了消息通道的配置方法,包括出站/入站通道适配器和RedisMessageStore的使用。最后提供了最佳实践建议,包括版本兼容性、连接池优化、序列化

2025-08-08 13:50:30 748 1

原创 强化学习详解:从理论到前沿的全面解析

强化学习(Reinforcement Learning, RL)是**智能体通过与环境交互,学习最优决策策略以最大化累积奖励**的机器学习方法。其核心目标是在动态环境中实现序列决策的优化,适用于游戏、机器人控制、自动驾驶等领域。

2025-08-07 23:58:08 1056 1

原创 Q-Learning详解:从理论到实践的全面解析

摘要:Q-Learning是一种无模型强化学习算法,通过构建Q表存储状态-动作值函数,采用时间差分方法更新Q值。其核心是贝尔曼最优方程,算法利用ε-Greedy策略平衡探索与利用,具有Off-Policy特性,但受限于维度灾难。Q-Learning在网格世界、游戏AI中应用广泛,是强化学习的基础算法之一。

2025-08-07 23:45:39 1298

原创 Java中的ConcurrentBitSet使用详解

Java标准库未提供线程安全的ConcurrentBitSet,多线程操作原生BitSet会导致数据竞争。推荐使用Eclipse Collections的高性能ConcurrentBitSet,它提供线程安全、高效内存管理和丰富API。对于简单场景,可通过同步包装或AtomicLongArray实现线程安全。方案对比显示,第三方库最适合高并发位操作,而同步方案适用于低并发场景。建议优先使用Eclipse Collections的方案,避免重复造轮子,确保多线程环境下位操作的安全性和性能。

2025-08-06 14:35:15 349

原创 java中的BitSet使用详解

Java中的BitSet类是一个高效的位操作工具类,用于表示可动态扩展的位向量。它具有动态扩容、空间效率高(每位仅占1bit)等特点,但不支持线程安全。基础操作包括设置/清除位、获取状态和翻转位,支持各种位运算(与/或/异或等)。BitSet适用于海量数据标记、集合运算、布隆过滤器等场景,相比boolean数组显著节省内存(1000元素仅需125字节)。使用时需注意索引越界、自动扩容等问题,多线程环境可考虑ConcurrentBitSet。通过合理使用BitSet,能在空间效率和性能间取得良好平衡。

2025-08-06 14:11:36 1030

原创 spring中的ApplicationRunner接口详解

摘要: Spring Boot的ApplicationRunner接口用于在应用启动后执行自定义逻辑,支持参数解析和任务顺序控制。通过实现该接口并标注@Component,可定义初始化任务(如数据加载、服务注册)。相比CommandLineRunner,它提供更强大的参数解析能力(支持--key=value格式)。最佳实践包括拆分任务(用@Order排序)、异常处理和避免阻塞主线程,适用于动态配置加载、启动通知等场景。需注意避免长时间阻塞,并记录任务执行日志。

2025-08-06 09:30:00 2738

常用正则表达式和编程词汇

在我们的开发过程中经常会遇到许多需要通过正则表达式来进行判断的地方,这个文档可以帮助菜鸟很快的找到经常遇到的一些正则表达式,还有一些编程中经常用到的词汇,让我们更好的读懂文档

2014-07-30

eureka server 与eureka client

该项目主要包含了一个springcloud框架中的服务注册与服务发现的常用框架的eureka的实例,共包含eureka-client和eureka-server两个模块,打开项目,先启动eureka-server项目,通过localhost:端口便可访问eureka-server界面,然后启动eureka-client,即可看到一个微服务注册到eureka-server的过程,希望这个实例项目可以帮到大家

2020-04-03

最新poi:poi-3.10.1.jar

这是apr最新稳定版的poijar包,支持office 2007的存取

2014-11-05

JAVA小程序之信息提示音

当我们的一些程序会持续一段时间的话,我们经常无法判断他在什么时候结束,这个时候我们就应该在程序结束的时候加一个提示音,这样就可以更加方便的及时知道程序啥时候结束了

2014-04-04

Linux基础命令

Linux常用命令,Linux初学者不可或缺的必备资料

2014-11-05

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

TA关注的人

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