当前位置: 首页 > 软件库 > Web应用开发 > J2EE框架 >

Java-Sparrow

零依赖高性能的 Java 框架
授权协议 Apache
开发语言 Java
所属分类 Web应用开发、 J2EE框架
软件类型 开源软件
地区 国产
投 递 者 耿弘阔
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

sparrow 是一个全新的低耦合、0依赖的高性能 java 基础框架,它的名称源自中国俗语“麻雀虽小,但五脏俱全”。

  • 有没有发现我们的工程代码其实很臃肿?
  • 有没有发现我们依赖了很多没有用的jar包?
  • 有没有发现在项目中因为jar 冲突而折腾很久?
  • 有没有想过我只依赖jdk 就实现一个WEB工程?
  • 有没有发现其实我们只需要一小块功能,而需要引入一个大框架?
  • 有没有发现其实有些功能非常简单,而被框架限制了?
  • 有没有发现其实有些功能原理不复杂,而框架实现很庞杂?因为不相信程序员!
  • 有没有发现相似的框架提供的业务功能是一致的?但对外的接口是不同的?想不想统一?
  • 有没有想过自己也实现一套JAVA-WEB 框架?

如果你也一样? 那么sparrow 非常适合你!

为此基于oop的基本思想,构建一层api,最大化的解耦。

架构图

框架特点

  • 相信程序员

通过对原理有了更深入的了解,对写程序来讲会更简单,高效,很多框架之所以很重,很重要的一个原因是不相信程序员,这个框架从jdk出发,尽量不依赖第三方jar 包,让程序能跑起来,让程序更快。

  • 从0开始

人脑思维是发散的,如果中间某个知识点断掉,可能就会产生知识盲点,这个盲点可能产生的影响很大的,尤其是技术更象是一层窗户纸,捅破了,简单,捅不破,如隔山。 所以我们从0开始,让知识连贯起来,消除盲点,不只让程序变得高效,更让程序员变得高效。

  • 0依赖

框架实现最简单的,最核心的功能,尽量不依赖任何框架,包括spring。

  • 解耦/隔离

sparrow模块 只定义了一些接口,具体实现在其他的模块中,是否依赖由业务端决定,最大化解耦。

  • 扩展

遵循开闭原则,对业务提供扩展点。

项目架构及远期规划

架构中大部分功能已具基本的使用框架,但还需要进一步完善和优化,具体内容可查看架构详细介绍

jedis和rocket mq 客户端已具备基本的生产环境使用条件

其它模块还需进一步完善,欢迎有兴趣的小伙伴,一起加入 email:zh_harry#163.com

Quick start

cd sparrow-bom
mvn clean install -Dmaven.test.skip
cd ..
mvn clean install -Dmaven.test.skip

项目demo演示

#13

我们的愿景和未来

让程序员脱离spring, 也能写代码,而且更快,更优雅

  • 学习总结 首先,利用 Spark 对 MovieLens 原始数据进行了处理,生成了训练样本和特征,样本供 TensorFlow 进行模型训练,特征存入 Redis 供线上推断使用。 在 TensorFlow 平台上,以 NeuralCF 模型为例,训练并导出了 NeuralCF 的模型文件。然后使用 TensorFlow Serving 载入模型文件,建立线上模型服务 API。推荐服务器的排序层

  • 推荐系统工程师需要我又有深度,又有广度。 推荐系统每个模块都有很深的技术纵横,都需要持续性的研究和实践才能成为领域专家。 问题汇总tips 关于推荐系统岗位的定位: 纯粹的算法工作PHD竞争就已经很激烈了。 对于像我这样转行的人,应把重点放在: 机器学习工程框架; 推荐系统的线上系统; 相关大数据pipline等方向上。 上述方向同样重要,并对模型创新要求没那么高。 在8、9千万数量级用户中,深度

  • sparrow 框架 麻雀虽小,但五脏俱全 为什么要写这个框架? 这个框架我从11年开始写,中间重构了n遍,最原始的代码可能都找不到了,之所以坚持写,不是想新造轮子。 主要是从中学习基础原理。 经过近十年的打磨,有些设计思想和理念,是值得学习的,比如spring mvc 的设计模式,orm ico 等等。 虽然很多朋友们都了解,但要真正自己实现起来也并不是那么容易。而这个过程对原来的深入理解是很帮

  • 1. 泛型类 public class Cone<E> { double height; E bottom;///只能调用object中的类 public Cone(E b) { bottom=b; } public void setHeight(double h) { height=h; } public double computerVolume() { St

  • java 17 新特性:密封类 继承中, 需要明确, 可以随意的继承 。 为了限制肆无忌惮的继承, 产生了密封类。 特点:指定某些类可以继承。 语法 sealed class 类名 permits 子类{} 每个被允许的子类都需要使用修饰符来描述如何往下传递密封行为。 一共有3种选择: final修饰的类:声明为final来禁止继续继承 final 子类 类名 extends 父类{} 子类声

 相关资料
  • 问题内容: 我需要一些想法来实现Java的(真正)高性能内存数据库/存储机制。在存储20,000+个Java对象的范围内,每5秒钟左右更新一次。 我愿意接受的一些选择: 纯JDBC /数据库组合 JDO JPA / ORM /数据库组合 对象数据库 其他存储机制 我最好的选择是什么?你有什么经验? 编辑:我还需要能够查询这些对象 问题答案: 您可以尝试使用Prevayler之类的工具(基本上是一个

  • 1. 基于HTML5标准,无插件,跨平台  2. 无法独立运行,依赖于浏览器 3. 浏览器基于HTTP协议,所以Cesium要正确运行必须有HTTP Server 4. HTTP Server的实现不限于开发语言和服务器

  • 我得到了一个线程问题,它说“无效的框架维度(负的或非有限的)。” 以下是我的代码: 代码运行得很好,它似乎做了它应该做的事情,所以我很困惑为什么它会给我线程问题。为什么代码运行时没有有限的宽度/高度,这与Apple Docs相矛盾?(见下文“一些阅读”部分) 这段代码很好地修复了这个问题,但我仍然希望理解为什么前面的代码不会崩溃或创建错误。 就我所知,它给了我线程问题,因为我告诉,我想要一个不是有

  • 本文向大家介绍深入解析Java的Spring框架中bean的依赖注入,包括了深入解析Java的Spring框架中bean的依赖注入的使用技巧和注意事项,需要的朋友参考一下 每一个基于java的应用程序都有一个共同工作来展示给用户看到的内容作为工作的应用几个对象。当编写一个复杂的Java应用程序,应用程序类应该尽可能独立其他Java类来增加重复使用这些类,并独立于其他类别的测试它们,而这样做单元测试

  • 问题内容: 我们使用了maven工件,这些工件又取决于其他内部工件。我正在迁移到Java的9,并打算先将所有内容迁移到Java 9,而无需对代码进行模块化(即在未命名的模块中)。 我遇到的问题是我们依赖,现在默认模块中未包含。有没有一种“正确的”方式来表达对的依赖? 问题答案: 该模块系统讲的无名模块作为在从类路径加载应用的情况下构建模块图的方式。此外,从文档本身来看: 当编译器在未命名模块中编译

  • 问题内容: 我有以下课程。 和 可以清楚地看到,这些类之间存在循环依赖关系。如果尝试运行A类,最终会得到。 如果创建了一个依赖图,其中节点是类,则可以轻松地识别这种依赖关系(至少对于节点很少的图)。那么,为什么JVM至少在运行时无法识别此身份?JVM至少可以在开始执行之前发出警告,而不是抛出。 [更新] 某些语言不能具有循环依赖关系,因为这样就无法构建源代码。和可接受的答案。如果循环依赖性是C#的