{"id":16906262,"url":"https://github.com/zhuangjiaju/easytools","last_synced_at":"2026-02-18T13:34:19.944Z","repository":{"id":247398853,"uuid":"599385275","full_name":"zhuangjiaju/easytools","owner":"zhuangjiaju","description":"java卓越工程实战, 让你的代码变得更加优雅。","archived":false,"fork":false,"pushed_at":"2024-07-26T12:54:34.000Z","size":478,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T15:25:59.355Z","etag":null,"topics":["java","spring","template"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhuangjiaju.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-09T02:45:23.000Z","updated_at":"2025-03-02T08:22:56.000Z","dependencies_parsed_at":"2025-02-19T15:49:48.094Z","dependency_job_id":null,"html_url":"https://github.com/zhuangjiaju/easytools","commit_stats":null,"previous_names":["zhuangjiaju/easytools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zhuangjiaju/easytools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuangjiaju%2Feasytools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuangjiaju%2Feasytools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuangjiaju%2Feasytools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuangjiaju%2Feasytools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhuangjiaju","download_url":"https://codeload.github.com/zhuangjiaju/easytools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuangjiaju%2Feasytools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29580808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T08:38:15.585Z","status":"ssl_error","status_checked_at":"2026-02-18T08:38:14.917Z","response_time":162,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","spring","template"],"created_at":"2024-10-13T18:41:57.039Z","updated_at":"2026-02-18T13:34:14.936Z","avatar_url":"https://github.com/zhuangjiaju.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EasyTools\n\njava卓越工程实战, 让你的代码变得更加优雅。\n\n# 这个项目解决了什么问题\n\n* 带领大家看到大厂的一些代码规范\n* 大家代码规范统一，提高代码的可读性\n* 提供各种实战案例，提升你的编码能力\n\n# 本项目地址\n\n* [GitHub](https://github.com/zhuangjiaju/easytools)\n* [gitee](https://gitee.com/zhuangjiaju/easytools)\n* [CSDN](https://blog.csdn.net/fish7790714)\n\n# 帮忙点个⭐Star\n\n开源不易，如果觉得EasyTools对您的工作还是有帮助的话，请帮忙在\u003ca target=\"_blank\" href='https://github.com/zhuangjiaju/easytools'\u003e\u003cimg src=\"https://img.shields.io/github/stars/zhuangjiaju/easytools.svg?style=flat-square\u0026label=Stars\u0026logo=github\" alt=\"github star\"/\u003e\u003c/a\u003e\n的右上角点个⭐Star，您的支持是使EasyTools变得更好最大的动力。\n\n# 目录\n\n## 项目规范\n\n* [使用统一 `Reuslt` 对象去封装返回值](doc/result-package.md)\n* [告别代码中遍地的 try-catch，使用 spring 全局统一异常处理](doc/controller-exception-handler.md)\n* [基于hibernate-validator,java前端入参校验最佳实践](doc/hibernate-validator.md)\n* [java 开源项目是如何将多个 module 版本统一配置的？](doc/flatten-maven-plugin.md)\n* 项目中使用traceId 来整个链路最终\n* 一个好的项目目录结构是什么样子的？\n* 不使用join 到底是怎么写sql的？\n\n## 源码解析\n\n* [大厂面试必备系列：一文彻底搞懂 Cglib 代理](doc/cglib-proxy.md)\n* [大厂面试必备系列：一文彻底搞懂 Jdk 动态代理](doc/jdk-proxy.md)\n* [Java对象复制系列一: Apache 这么常用的工具类，性能居然如此差？](doc/bean-utils-test.md)\n* [Java对象复制系列二: 手把手带你写一个 Apache BeanUtils](doc/bean-utils-apache.md)\n* [Java对象复制系列三: 手把手带你写一个 Spring BeanUtils](doc/bean-utils-spring.md)\n* [Java对象复制系列四: 还在使用 Spring BeanUtils 复制属性？这个工具性能秒杀它](doc/mapper-struct-demo.md)\n* [Java对象复制系列五: 最快速度、方便的对象复制工具 Mapper Struct 的高阶应用](doc/mapper-struct-spring.md)\n* [Java对象复制系列六: 史上最快的对象复制工具 Mapper Struct 原理浅析](doc/mapper-struct-detail.md)\n* [手把手带你写一个精简版 HashMap 的 put 方法](doc/hash-map-put.md)\n* [手把手带你写一个精简版 HashMap 的 get 方法](doc/hash-map-get.md)\n* [史上最详细的 HashMap 的 put 方法的源码注释](doc/hash-map-put-source.md)\n* [史上最详细的 HashMap 的 get 方法的源码注释](doc/hash-map-get-source.md)\n* [java 中 i++ 到底是否线程安全？](doc/ipp-demo.md)\n* jdk21 虚拟线程\n* jdk8 lambda\n\n## EasyExcel 源码解析\n\n* 了解csv 、xls、xlsx的区别\n* 设计原理\n* 手写读excel\n* 手写写excel\n\n## 以下是水文\n\n* [还在代码中写DateUtil?是时候说再见啦](doc/hutool-date-util.md)\n* [还在代码中写HttpUtil?是时候说再见啦](doc/hutool-http-util.md)\n* [java 如何一行代码生成随机数据？](doc/hutool-random-util.md)\n* [用 Hutool 一行代码搞定压缩、解压缩](doc/hutool-zip-util.md)\n* [Java 如何不用再每次新建线程，直接使用公共线程池](doc/hutool-thread-util.md)\n* [Java 图片缩放、裁剪、水印神器](doc/hutool-img-util.md)\n* [Java 如何快速根据 key 获取枚举的值？](doc/hutool-enum-util.md)\n* [Java 一行代码如何扫描一个包下面所有的类？](doc/hutool-class-util.md)\n* [还在用 System.currentTimeMillis() 计时？试试 Hutool 的 TimeInterval](doc/hutool-time-interval.md)\n* [Java 中怎么解决 0.1 + 0.2 不等于 0.3？](doc/hutool-number-util.md)\n* [Java 中最全的 hash 算法集合](doc/hutool-hash-util.md)\n* [Java 中快速生成唯一id](doc/hutool-id-util.md)\n* [Java 如何提取身份证中的生日](doc/hutool-idcard-util.md)\n* [Java 中如何获取一个中文的拼音](doc/hutool-pinyin-util.md)\n* [Java 中如何支持任意格式的压缩和解压缩](doc/hutool-compress-util.md)\n* [Java 中如何快速读取 CSV 文件](doc/hutool-csv-util.md)\n* [Java 如何获取一个 class 的所有属性和方法](doc/hutool-reflect-util.md)\n* [Java 中如何执行命令行方法](doc/hutool-runtime-util.md)\n* [Java 如何快速实现一个先入先出的缓存(FIFO Cache)？](doc/hutool-fifo-cache.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhuangjiaju%2Feasytools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhuangjiaju%2Feasytools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhuangjiaju%2Feasytools/lists"}