Hasor 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Hasor 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Hasor 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Hasor 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Hasor 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 哈库纳
适用人群 未知
收录时间 2013-07-09

软件简介

    Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、切必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。

设计思想

    Hasor 提倡开发者充分利用编程语言的优势进行三方整合和模块化设计。同时 Hasor 也主要是通过这种“微内核+插件”的方式丰富开发所需的所有功能。

    决定避开 COC 原则的原因是,COC 虽然已约定的方式降低了整个框架的设计复杂度,但同时也最大限度的牺牲了框架的灵活性。缺少灵活性的框架在应用场景上会受到极大的制约。而 Hasor 的设计则更加面向底层,因此需要更多的灵活性。

    Hasor 强大的灵活性表现在模块整合能力上,对于某一个领域开发方面 Hasor 依然强调并力推 COC 。小而美的核心,大而全的生态圈是 Hasor 的目标。

架构

特性

  • 01. IoC/Aop编程模型,设计精巧,使用简单
  • 02. COC原则的最佳实践,‘零’配置文件
  • 03. 微内核 + 扩展,基于内核已发展出 DB、Web、Restful 三大独立的基础框架
  • 04. 真正的零开发,解析项目特有的自定义 Xml 配置
  • 05. 支持模板化配置文件,程序打包之后一套配置通吃(日常、预发、线上)以及其它各种环境
  • 06. 完备的 JDBC 操作接口,支持 Result -> Object 映射
  • 07. 提供三种途径控制事务,支持七种事务传播属性,标准的事务隔离级别
  • 08. 支持多数据源、及多数据源下的事务控制(非JPA)
  • 09. 内置事件机制,方便进行业务深度解耦,使业务逻辑更佳清晰
  • 10. 支持 Web 类型项目开发,提供 restful 风格的 mvc 开发方式
  • 11. 支持Form表单验证、支持场景化验证
  • 12. 提供开放的模版渲染接口,支持各种类型的模版引擎
  • 13. 提供丰富的工具箱,帮助您快速开发,有了它您甚至不需要 apache-commons
  • 14. 支持log4j、logback等多种主流日志框架
  • 15. 体积小,无第三方依赖

内置插件

  • 01. @Aop注解插件,提供精确到方法级的注解化Aop配置
  • 02. @Event注解插件,注解化事件监听器,无需编写代码进行注册事件监听器
  • 03. Spring集成插件,在 Spring 和 Hasor 可以双向无障碍的使用
  • 04. Startup插件,程序的快速启动入口

相关资源

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (120)

加载中
最近看到有magic-api、rocket-api两个开源项目,请教一下hasor与他们的异同点有哪些
03/04 18:03
回复
举报
哈库纳软件作者
你可以在几个项目之间深入的用一用,自然就有结果了。
03/14 22:09
回复
举报
哈库纳软件作者
https://my.oschina.net/u/1166271/blog/1329819 《强大好好用的查询语言 DataQL,首次曝光执行机制》#Hasor#
2017/07/11 11:08
回复
举报
哈库纳软件作者
#Hasor# Simple GraphQL 改良升级为 DataQL https://my.oschina.net/u/1166271/blog/918804
2017/06/12 16:56
回复
举报
哈库纳软件作者
打分: 力荐
Hasor开发手册上线拉:http://www.hasor.net/docs/hasor/guide/
2017/03/17 17:54
回复
举报
哈库纳软件作者
3个月开发,1个月在写手册。。。 Hasor
2013/08/27 19:39
回复
举报
哈库纳软件作者
2013/08/27 19:41
回复
举报
哈库纳软件作者
第一章内容,其他内容还在校对http://my.oschina.net/u/1166271/blog/155461 Hasor
2013/08/27 19:41
回复
举报
哈库纳软件作者
动弹动弹 Hasor
2013/08/29 15:07
回复
举报
哈库纳软件作者
手册的校对快要完成了,Hasor的发布之日可待了。 Hasor
2013/08/29 23:18
回复
举报
哈库纳软件作者
项目首页内容更新。 Hasor
2013/08/31 17:45
回复
举报
更多评论
发表了资讯
02/27 13:49

Hasor 4.2.3 发布,支持 YAML、分页方言支持 20+、DataQL 新增 assert 指令

Hasor-DB 方言的实现升级为 db 项目的顶层模块。 jdbc.mapping 由于和 types 走的比较近因此 jdbc.mapping 移动到 types 下成为其一个子模块。 增强方言,加入了分页的方言实现。分页能力整合进 JdbcTemplate。 修复隔离级别中 DEFAULT 映射错误。 applyConnection、setAccessorApply 兼容EFunction。 loggerErrors 属性删除。 lambda 部分动态生成的 SQL 会直接拼成 ? 而不是拼成 map key。 net.hasor.db.types.mapping 包的内...

3
6
发表于数据库专区
01/21 14:28

Hasor 4.2.2 发布,hasor-db 新增 lambda 、TypeHandler 能力

Hasor-DB 数据库访问框架 提供了一套和 MyBatis 一样的 TypeHandler,同时类型支持上比 MyBatis 更加完整。 全面支持 JDBC 4.2 各种数据类型 全面支持 Java8 中的各种时间类型 提供一套单表 ORM 能力。 单测覆盖率提升到 82% 增加对 存储过程 的支持。 JdbcTemplate 新增 lambda 能力,可以像 MybatisPlus 那样通过代码方式来生成查询语句。 JdbcTemplate 新增多 SQL 语句多返回值的获取。 JdbcAccessor 增加 dsApply 方式,可以...

2
6
发表于开发技能专区
2020/10/17 11:12

Hasor 4.2.1 发布,小范围优化和改进,Dataway 修复 Bug

新增 InputStreamSettings 添加两个 addReader 方法。 xxx-hconfig.xml 的加载增加去重逻辑。 hasor-core 新增动态属性能力,利用 PropertyDelegate 接口可以动态的给 Bean 增加一个从未存在的属性,并为其生成对应的 get/set。 优化 如果出现多个 @ConstructorBy 注解配置,那么将会按照 构造方法参数个数排序取参数数量最少的那个构造方法。 Module 的 loadModule 方法中可以通过抛出 IgnoreModuleException 异常来跳过 Modu...

0
1
2020/02/04 15:40

Hasor 4.1.0 发布,稳定性大幅提升并提供了 all-in-one

基于 Java 应用开发框架,无论是应用类程序还是框架类工具。Hasor都会是一个强有力的基石。 本次更新主要带来的方面是 稳定性提升,core\web\db\dataql\tconsole 这些组件的单测覆盖率大幅提升,并且这次更新还发布了 覆盖率报告 hasor-core 开始全面兼容 jsr332 向标准靠齐 另外这次新增了 tConsole 和 DataQL 两个子框架。 最后新增了 all-in-one 包,只需要依赖一个 jar 包。就可以实现 hasor 全系引入。 下面是本次更新的详...

1
16
2018/01/02 17:59

Hasor 3.2.2 正式发布,携带了大量更新

Hasor v3.2.2 (2018-01-02) 新增 01. AppContextWarp 类,提供 AppContext 包装工具。 02. DataQL UDF 新增 manager 接口方便管理和注册。 03. DataQL 新增了 import 语法,现在可以导入另外一个 QL 查询作为 udf 导入到当前 QL 中了。 04. @ValidBy注解新增boolean类型属性inherited控制注解是否被继承。 05. 新增doValidation验证器验证策略ValidStrategy,用于控制是否执行后面的验证器。 06. RSF-Center 的内存数据存储器新增...

1
5
发表了资讯
2017/10/15 19:11

Hasor 3.2.0 版本发布,新添服务查询引擎新成员

Hasor-Core v3.2.0 发布了。 新增 新增内置 Freemarker 渲染器,如想使用该渲染引擎开发者还需要额外依赖 freemarker 的 jar 包。 新增内置 DataQL,服务查询引擎,全面提供 “数据库 + 服务” 整合查询,并为查询结果提供全面的数据整合能力。 新增内置 Json 渲染器,JSON 渲染引擎会按照下面顺序尝试寻找可用的json库:fastjson、Gson 内置JSON渲染引擎,可以通过 apiBinder.bind(JsonRenderEngine.class) 方式绕过内部查找机...

2
3
发表了资讯
2017/02/20 10:20

Hasor 3.1.2 发布,DB 框架升级、验证框架升级、Web 框架升级

Hasor 3.1.2 发布了,本地发布主要对DB框架、验证框架进行升级操作。此外Web框架的站点文件布局改为默认不启用。 新增 01.Hasor类在处理用户设置的环境参数时,设定为两种分类:框架环境变量、用户环境变量。 02.在框架层面:无论是否设置框架层面的环境变量参数,Hasor都会将继续尝试执行加载 env.config。 03.用户层面:如果配置了用户层面的环境参数,那么Hasor将放弃加载 env.config。 04.db框架新增 BeanSqlParameterSour...

0
22
发表了资讯
2017/02/17 07:53

Hasor 3.1.1 发布,修复设置环境参数放弃加载 env.config

修复  01.当Hasor通过 Hasor.create 创建容器之后,如果开发者设置了环境参数。那么Hasor将放弃加载 env.config。 Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它...

3
2
发表了资讯
2017/02/15 23:30

Hasor 3.1.0 发布,修复 jdk1.8 下 VerifyError 错误

Hasor 3.1.0发布了。本次更新如下: 改进: 当依赖注入遇到父子类重名字段引发,duplicate异常时候,打印出冲突的字段名。 环境变量名不区分大小写。 AbstractEnvironment,改进“env.config”配置文件的加载改为:先在WORK_HOME下查找,找不到在加载classpath下的。 启动日志中,打印出“env.config”中所加载的所有信息。 原 org.more 包内的工具仅保留使用到的工具类,同时移动到net.hasor.core包中,瘦身约三分之一。 classc...

1
7
发表了资讯
2017/02/03 10:04

Hasor 3.0.2 发布,Bug 修复更新

Hasor 3.0.2 更新,本次发布主要是在 3.0 新版本上进行 Bug 修复。 ===== Hasor-Core v3.0.2 (2017-01-30) * 新增:     01.新增 ProviderType 接口,用于确定 Provider 接口的返回值类型。     02.MappingToBuilder 新增 3 个 findBindType 方法用于确定 bindType 类型。 * 修复:     01.Fix RuntimeFilter入口类,当没有配置 request/ressponse 编码时引发的异常。 ===== Hasor-Core ...

0
4
发表了资讯
2017/01/12 13:57

Hasor 3.0.0 革新扩展机制,Web&Restful 框架合并

Hasor 3.0.0 正式发布了。 相关变更 ===== Hasor-Core v3.0.0 (2017-01-12) * 新增: 01.新增 ApiBinder 扩展机制。开发者可以通过 net.hasor.core.binder.ApiBinderCreater 接口可以自定义 ApiBinder。 02.WebApiBinder 新增可以设置(请求/响应)编码方法。 03.通过 ContainerCreater 可以扩展 Hasor 的上帝类了。 04.新增 @AopIgnore 注解,用于忽略Hasor的Aop动态代理功能。当标记到包上时表示整个包都忽略动态代理。该功能可以...

1
9
发表了资讯
2016/12/01 15:07

Hasor 2.5.2 发布,新增 MyBatis 内置插件

Hasor 2.5.2 正式发布了。 相关变更 ===== Hasor-Core v2.5.2 (2016-12-01) * 新增:     01.新增 MyBatis 插件,该插件会依赖 DBModule。 * 改进:     01.整理出一个 Provider 实现工具类包。     02.BindInfoBuilder 接口迁移位置。 MyBatis 插件使用方式为: apiBinder.installModule(new MyBatisModule("ibatis-sqlmap.xml")); 使用MyBatis接口 @Inject() private SqlExecutorOperations executo...

0
18
发表了资讯
2016/11/08 19:00

Hasor 2.5.1 发布,支持 JFinal 整合

Hasor 2.5.1 正式发布了。Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核...

3
36
发表了资讯
2016/10/27 00:00

Hasor 2.5.0 发布,Binder功能优化

Hasor 2.5.0 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核...

0
18
发表了资讯
2016/10/07 00:00

Hasor 2.4.6 发布,优化更新

Hasor 2.4.6 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核...

1
10
发表了资讯
2016/09/28 00:00

Hasor 2.4.5 发布,支持环境变量进行依赖注入

Hasor 2.4.5 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核...

3
11
发表了资讯
2016/09/05 00:00

Hasor 2.4.4 发布,宽泛的Servlet版本内置文件上传

===== Hasor-Core v2.4.4 (2016-09-05) * 新增:     01.宽泛的Servlet版本支持 servlet 2.3 到 servlet 3.1。     02.新增支持文件上传功能支持。     03.新增 @Async 注解,用于标记 request 请求是否以 异步 servlet 方式执行。(需要容器支持 servlet 3 ,否则无效)     04.如果容器支持 Servlet 3 那么 Hasor 会自动启用 Servlet 3.0 特性。     05.servlet3: 基于 web-fra...

2
21
发表了资讯
2016/08/19 00:00

Hasor-2.4.3 发布,使用表单验证

Hasor 2.4.3 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。而所有内置插件,在初始化的时都做了智能加载,只有用到了它们才会被加载到框架中。否则这些内置插件在初始化期间就会放弃加载自己。基于目前 Hasor 内核...

2
43
发表了资讯
2016/08/01 00:00

Hasor 2.4.0 发布,大量更新 & 强化 Web 开发能力

Hasor 2.4.0 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、切必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。同时 Hasor 的各种内置插件也会帮助开发者进行快速开发。 文档首页:http://hasor-guide.mydoc.io/ 项目首页:http://www.hasor.net ===== Hasor-Core v2.4.1 (2016-08-01) * 改进:     01.@Inject,注解...

0
17
发表了资讯
2016/04/07 00:00

Hasor 2.3.0 正式发布,增强注解配置

Hasor 2.3.0 正式发布。 * 新增: 01.新增“.hasor.default.asEagerSingleton”配置用来配置默认情况下,类型是以单例模式运行还是以原型方式运行。(默认单例模式) 02.ApiBinder接口新增“asEagerPrototype”方法用来强制以原型方式注册。到目前为止可以选择的方式有:“asEagerSingleton”、“asEagerPrototype” 03.新增注解配置:@Singleton、@Prototype 04.单例类如果配置了@Init注解,则在注册到Hasor容器时,会在容器启动...

10
18
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2013/07/10 19:35

Hasor:生命周期

首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途不仅仅限于多模块项目开发。从简单性、松耦合性的角度而言,任何Java应用都可以从中受益。Hasor与Struts,Hibernate等单层框架不同,它可以提供一个以统一、高效的、友好的方式构造整个应用程序。并且可以将这些单层框架建立起一个连贯的体...

18
24
发表于开发技能专区
2013/11/11 14:17

Hasor 的思前想后

这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章,本文主要絮叨絮叨 关于 Hasor 的一些想法,欢迎大家品评。 首先很抱歉各位关注这一些列文章的朋友,Hasor 这一系列文章更新速度并不是很快。其中主要是因为工作的缘故。 关于 Hasor 我想有很多人并不了解这一款框架究竟是做什么的,我自己也承认在最初计划开发 Hasor 的时候也并没有想到会发展到何种程度。但是还是要感谢关注我的各位朋友,没有大家的支持和建议...

2
11
发表了博客
2013/11/11 17:50

Hasor 的技术选型

这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章,本文主要介绍 Hasor 框架的技术选型。 前面已经介绍了 Hasor 的目的是为了打造一款轻量化的 Java 开发框架。这款框架首先不考虑 SSH JFinal 这类框架作为模板,因为 Hasor 的基础部分定位和这些框架有少许出入。但是它们的经典设计是可以用来参考的。 首先 Hasor 并不是轮子,恐怕也很难找到一款类似的框架。至少作者目前尚未发现,所以暂且列为独创或者原创把。...

7
10
2016/10/06 13:14

用 Hasor 实现文件上传

Hasor 采用了与 JFinal 类似的方式提供 API,底层的上传机制是来自 apache commons fileupload 并将其进行大量简化后内置到 Hasor 自身。 因此在 Hasor 中使用文件上传功能无需引入任何第三方 jar 包您就可以使用该功能,先从一个简单的例子说起。 @MappingTo("/fileupload.do") public class FileupLoad extends WebController { public void execute() throws IOException { FileItem multipart = this.getOneMu...

0
0
发表于软件架构专区
2013/12/21 10:03

Hasor 核心架构设计

这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章,写了好多有关 Hasor 的文章发现却没有一篇是从整体上介绍 Hasor 是如何设计的,在这里正好补上。 一、主要软件包和插件 设计 Hasor 我觉得并不很简单,但是一旦体系设计清晰之后 Hasor 看上去就比较清晰。如果没有一个好的设计 Hasor 不会有现在这么大的一个规模。首先通过下面这张图来袅揽一下 Hasor 目前已开发完成的主要模块。 Hasor-Core 软件包: 这是整个 ...

4
41
发表于开发技能专区
2013/07/13 12:35

Hasor:在简化开发上的设计

首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途不仅仅限于多模块项目开发。从简单性、松耦合性的角度而言,任何Java应用都可以从中受益。Hasor与Struts,Hibernate等单层框架不同,它可以提供一个以统一、高效的、友好的方式构造整个应用程序。并且可以将这些单层框架建立起一个连贯的体...

0
13
2013/12/31 23:59

Hasor 的 Xml 配置文件解析详解

我觉得 Xml 作为配置文件最大的好处是结构化,对程序配置信息可以有结构有组织的进行描述。但是使用 Xml 作为配置文件带给我们的问题是我们需要程序自己去解析Xml配置文件结构。这显得有点多余且啰嗦。 因此通常我们的配置文件都使用 java 提供的属性文件,属性文件虽然没有 Xml 文件那样清晰的结构化,但只要标注好注释属性文件还是可以胜任这份工作的。 Hasor 使用 Xml 作为其配置文件,但是可以像属性文件一样去访问它。 首先...

4
15
发表于服务端专区
2013/10/31 18:57

为什么 Hasor 的设计强调模块?

前段时间公司组织旅游再加上国庆放假,基本上一个月等同于懒散状态也就无心照料 Blog ,今天算是打起精神继续写这一系列博文把,欢迎大家继续板砖。这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章。 提起 Java 开发框架,我想在座的一定会在脑海里第一时间跳出 Spring JFinal 之类的成型产品。所以我也不在多说废话了。 在上一篇文章中提到了一些有关这个框架的设计要求,在这里顺便在详细说一说。其中绿色字体标...

11
37
发表于服务端专区
2016/10/06 13:37

使用 Hasor 实现 模版化配置文件

Hasor 不光小巧还很精良,这一片文章我们来讲一讲 “模版化配置文件”。 首先在了解模版化配置文件之前先看一下我们的实际开发中的问题。现在假设你有一个小团队,大家分别开发同一个项目的不同功能。通常情况下我们会为项目划分几个大模块,然后为每个模块建立一个自己的配置文件。或者干脆所有项目的配置都放到一个配置文件中。 在这些配置信息中一般会包涵例如:文件上传路、数据库连接、远程接口服务器地址 这些配置,这些配...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/06/18 15:27

使用DataQL查询如果找不到记录如何返回错误码

目前找不到统一返回是: { "success": true, "message": "OK", "code": 0, "lifeCycleTime": 13, "executionTime": 8, "value": null } 如果找不到记录,我希望返回: { "success": false, "message": "can not find XXX", "code": 100, "lifeCycleTime": 13, "executionTime": 8, "value": null } 怎么实现,能不能直接在DataQL上面实现...

1
0
2020/05/21 16:36

Spring Web 项目配置Dataway启动报错,显示dataway is disable

我把dataway属性配置写在了spring的application.properties里面,但是web项目启动的时候显示dataway is disable,我看文档上面说hasor是自动关联spring配置文件的,想请问下这是什么原因? application.properties配置: HASOR_DATAQL_DATAWAY=true HASOR_DATAQL_DATAWAY_ADMIN=true HASOR_DATAQL_DATAWAY_API_URL=/api/ HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/ HASOR_DATAQL_FX_PAGE_DIALECT=oracle applicationConte...

15
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
120 评论
330 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部