`
faiinlove
  • 浏览: 57720 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

请您先登录,才能继续操作

Douyu会是SSH构架与JSP/Servlet技术的终结者吗?

    博客分类:
  • Java
阅读更多

 

Douyu是一种完全采取Java语言开发的、运作于JVM以上的新式基础开发平台。 
在web层,Douyu完全遗弃了JSP/Servlet, 
在数据库访问层,Douyu不依赖于任何ORM(对像关系照射)构架(如Hibernate)。


Douyu将Java语言编译器、Http服务器、MVC圆满调整在一起, 
差点儿兑现了ORM全自动化,同时在Java语言层面引出了权限治理模型。


Douyu内置的Java语言编译器基于OpenJDK Javac编译器(b60版), 
并进行了批改和扩张,和Http服务器组合以后能在控制器层发挥出强大的威力, 
你只要批改Java源文件,其后刷新浏览器就能查看运作结果, 
与此同时编译器也是兑现ORM自动化的基石。

Douyu内置的Http服务器是基于NIO技术的, 
是对Tomcat六及com.sun.net.httpserver(一共1300多个Java源文件)进展阔斧大刀的改建后得来的, 
改建后的Http服务器当前唯有60个上下的源文件,支持Http1.0/1.1协议。

Douyu内置的权限治理模型现阶段包孕了效能权限、字段权限两类, 
效能权限正常对应控制器类中的Action步骤,Action步骤可以与表单中的旋钮联系关系, 
字段权限能统制表单中的字段是不是可以查看、批改或掩藏。

Douyu内置的ORM已差一点兑现自动化,你只须建个数据库表(如pet), 
其后在服务器配置文件中配备数据库驱动、并为每个数据库指定一个包名(如my.oracle.table), 
然后就你可以在你的Java源文件顶用import my.oracle.table.Pet导入模型种Pet。 
Douyu还支持横跨多个数据库的事宜,还支持封存点(Savepoint)。

Douyu项目首页现阶段放在: 
http://code.google.com/p/douyu/

底下是一些简略的代码片段:


Hello World

Java代码 
1.@Controller 
二.public class HelloWorld { 
3. public void index(PrintWriter out) { 
4. out.println("Hello World!"); 
5. } 
6.} 
@Controller
public class HelloWorld {
public void index(PrintWriter out) {
out.println("Hello World!");
}
}

自动提取表单参数:

Html代码 
1. 
2. 名称: 
3. 年纪: 
4.  
5.

名称:
年纪:


Java代码 
1.@Controller 
二.public class User { 
3. public void show(String name, int age) { 
4. ... 
5. } 
6.} 
@Controller
public class User {
public void show(String name, int age) {
...
}
}


资料上传

Html代码 
1.

2. 资料一:

三.说明 :

4.  
5.

资料一:

说明 :

Java代码 
一.import com.douyu.http.UploadedFile; 
2. 
3.@Controller 
四.public class FileUpload { 
5. public void index(UploadedFile file一, String description) { 
6. File f = new File("D:/Douyu/temp/uploadedFiles", file一.getSimpleName()); 
7. file一.saveTo(f); 
8. } 
9.} 
import com.douyu.http.UploadedFile;

@Controller
public class FileUpload {
public void index(UploadedFile file一, String description) {
File f = new File("D:/Douyu/temp/uploadedFiles", file一.getSimpleName());
file一.saveTo(f);
}
}


根本的CRUD操作

Java代码 
一.create table pet( 
2. id int not null auto_increment, 
3. name varchar(50) not null, 
4. age int, 
5. primary key(id) 
6.); 
create table pet(
id int not null auto_increment,
name varchar(50) not null,
age int,
primary key(id)
);

Java代码 
一.import com.douyu.main.Context; 
二.import sql.table.mysql.Pet; 
3. 
4.@Controller 
五.public class Crud { 
6. public void index(Context c) { 
7. Pet pet = new Pet(); 
8. pet.name("pet一"); 
9. pet.age(三); 
10. c.insert(pet); 
11. 
12. pet.name("MyPet"); 
13. c.update(pet); 
14. 
15. c.delete(pet); 
16. 
17. Rows rows = new Rows(Pet.class); 
18. rows.offset = 一; 
19. rows.limit = 100; 
20. c.select(rows); 
21. for(Pet p : rows.rowList) { 
22. ... 
23. } 
24. } 
25.} 
import com.douyu.main.Context;
import sql.table.mysql.Pet;

@Controller
public class Crud {
public void index(Context c) {
Pet pet = new Pet();
pet.name("pet一");
pet.age(三);
c.insert(pet);

pet.name("MyPet");
c.update(pet);

c.delete(pet);

Rows rows = new Rows(Pet.class);
rows.offset = 一;
rows.limit = 100;
c.select(rows);
for(Pet p : rows.rowList) {
...
}
}
}

横跨多个数据库的事宜

Java代码 
一.import com.douyu.main.Context; 
二.import my.table.oracle.Table一; 
三.import my.table.mysql.Table二; 
4. 
5.@Controller 
六.public class Transaction { 
7. public void index(Context c) { 
8. Table一 t一 = new Table一(); 
9. t一.f一("1234"); 
10. Table二 t二 = new Table二(); 
11. t二.f二("1234"); 
12. 
13. c.beginTransaction(); 
14. 
15. c.insert(t一); 
16. c.insert(t二); 
17. 
18. c.setSavepoint(); 
19. 
20. t二.f二("abcd"); 
21. c.update(t二); 
22. 
23. c.endTransaction(); 
24. } 
25.} 
import com.douyu.main.Context;
import my.table.oracle.Table一;
import my.table.mysql.Table二;

@Controller
public class Transaction {
public void index(Context c) {
Table一 t一 = new Table一();
t一.f一("1234");
Table二 t二 = new Table二();
t二.f二("1234");

c.beginTransaction();

c.insert(t一);
c.insert(t二);

c.setSavepoint();

t二.f二("abcd");
c.update(t二);

c.endTransaction();
}
}

Douyu将施用两种开源协议:GPL2.0、 Apache License Version 2.0

全部与编译器相关的源代码应用GPL2.0协议(由于OpenJDK Javac编译器是施用这个协议的) 
其余源代码施用Apache License Version 2.0协议开源。


不过现阶段Douyu的版本只是0.1.0,还不稳定,之所以只是提供了二进制版, 
现阶段我也并不推荐你研究Douyu的源代码,由于这可能会铺张你的时间, 
由于Douyu的内部兑现变故很频繁,在一年以内,大大很小版本变化次数已超过100次了, 
源代码中的诠释也十分少,基本就来不急写,等过几个版本稳固先后再公布源代码。

当前Douyu的开发工作惟独我一个人,全凭个人兴趣在家全职开发, 
如若你对Douyu的兑现有兴趣,念参加进去,我也是欢迎的, 
但是你务必对Http协议、JDBC轨范、Java语言编译器有相当程度的理解, 
要不然的话你可能在看Douyu的源代码时很吃力。


要想懂得更多内容请看: 
Without SSH/JSP/Servlet,不走平常谈,Java可以更酷 
http://zhh2009.iteye.com/blog/517796

这篇稿子是昨夜在JavaEye刚刚公布的,详细说了然Douyu的更种用法, 
里边也详细说了然Douyu的很多设计理念以及我个人的很多研究经验。

赶快去见见吧

【原文来自CSDN】

 

分享到:
评论

相关推荐

    斗鱼获取实时弹幕/java代码

    通常,这种接口会提供一个WebSocket服务,因为WebSocket能够实现实时双向通信,适合用于实时数据传输,如弹幕。 在Java中,我们可以使用`java.net.WebSocket`类或第三方库如`javax.websocket`来实现WebSocket连接。...

    DouYu.zip_douyu___douyu\_jumayumi douyu_yubo.douyu.com

    标题中的"DouYu.zip_douyu___douyu\_jumayumi douyu_yubo.douyu.com"表明这是与斗鱼直播(DouYu)相关的项目,可能涉及到一个名为"DouYu"的软件或应用,其中包含了“jumayumi”和“yubo.douyu.com”的元素,后者是...

    AJAX Douyu_0_1_0.rar

    标题"AJAX Douyu_0_1_0.rar"表明这是一个与AJAX技术相关的源码或工具项目,可能与斗鱼(Douyu)直播平台的某个版本或功能有关。AJAX,全称Asynchronous JavaScript and XML,是一种在无需刷新整个网页的情况下,能够...

    Douyu demo

    【标题】"Douyu demo" 是一个与斗鱼平台相关的示例项目,可能是为了演示或教学如何使用斗鱼的API、SDK或者实现某些特定功能而创建的。由于没有具体的描述,我们将通过“源码”和“工具”这两个标签来推测其内容。 ...

    仿斗鱼直播源码DouYu.zip

    【标题】"仿斗鱼直播源码DouYu.zip"揭示了这是一个模仿知名直播平台斗鱼的微信小程序开发项目。在微信小程序的生态环境中,开发者可以创建轻量级的应用,无需用户下载安装,直接在微信内运行,为用户提供便捷的在线...

    douyu-crawler-demo::smiling_face_with_heart-eyes: Go 开发的 Demo 程序用于演示如何解决字体反爬从而爬取斗鱼主播「关注人数」

    Douyu Crawler Demo 斗鱼关注人数爬虫 Demo,具体可以参考这篇博客 。 注意:爬虫程序有很高的时效性,很快就会过时无法使用。Demo 最后测试时间为 2020-07-02 日。 安装 $ go get -v github....

    douyu案例后台模拟数据

    【标题】"斗鱼案例后台模拟数据"是一个与 Flutter 相关的项目,它涉及到使用 Flutter 开发一个类似于斗鱼直播平台的后台模拟数据系统。这个项目可能旨在帮助开发者理解和学习如何在 Flutter 中构建类似的实时数据...

    douyu案例demo

    通常,这样的文件夹结构会包含README文件,介绍项目的用途、安装和运行步骤;lib目录下存放着源码;test目录用于存放单元测试;pubspec.yaml是Flutter项目的配置文件,列出项目依赖的库和其他元数据。此外,可能还有...

    C9MJ-master

    基于 MVP + Glide + Retrofit + RxJava2.0 + butterknife 的C9MJ TV (斗鱼douyu/熊猫panda/战旗zhanqi/虎牙huya/龙珠longhzu/全民quanmin/网易cc/火猫huomao + 英雄联盟LOL/守望先锋OW/DOTA2/炉石传说hs/CSGO)App。...

    python 脚本Douyu.zip

    from scrapy.pipelines.images import ImagesPipeline import scrapy class DouyuPipeline(object): def process_item(self, item, spider): return item class DouyuImagePipeline(ImagesPipeline): ...

    Douyu-danmu-spark:在Douyu_TV直播节目中抓取主持人的danmu信息,并通过SPARK和一些大数据技术进行相应的统计分析

    斗鱼旦木火花版本3.0 ||最终版本介绍与第一个版本的相比,在此存储库中,对Douyu_TV的danmu的分析基于SPARK而不是MYSQL(Pymysql)。环境: Python 3.6 wordcloud模块解霸斯派德火花(Pyspark) Windows10(64位)...

    斗鱼直播源数据的获取

    "写入txt"则表明程序会将获取的数据保存为文本文件,例如douyu_kWEG.txt和douyu_Exwh.txt,便于后续分析。 标签"爬虫"提示我们,这个过程可能使用了Python、Java或其他支持网络爬虫的编程语言。爬虫通常包括发送...

    douyu_spider:斗鱼

    douyu_spider scrapy for douyu

    douyu-app:使用斗鱼api和react写的douyu应用

    技术栈 CSS部分:使用styled-components,css in js方案; Javascript框架:React; http请求:axios,可选es6新特性Promise替代; 路由: React-router。 使用React Redux实现全部(目前处于分支,实现中) 功能实现...

    douyu-assistant:斗鱼小助手

    在开发过程中,开发者可能会使用Ajax技术(XMLHttpRequest或fetch API)从斗鱼服务器获取JSON数据,然后使用JSON.parse()方法解析数据,提取出主播的相关信息。同时,利用DOM操作库如jQuery或者原生的DOM API,将...

    ps4-irc-douyu:ps4直播douyu.tv弹幕转发服务器

    ps4-irc-douyu ps4直播douyu.tv弹幕转发服务器 把irc.twitch.tv下面4个ip做本地映射 Name: irc.twitch.tv Address: 192.16.64.11 Name: irc.twitch.tv Address: 192.16.64.145 Name: irc.twitch.tv Address: 192.16....

    douyutv_demo

    1. **登录与授权**:SDK会提供登录接口,开发者可以通过这些接口实现用户授权,获取用户的个人信息,以便在应用中展示个性化内容。 2. **直播流媒体**:直播的核心在于流媒体技术,SDK可能会包含播放器组件,用于...

    douyu-gifts:每天发送礼物

    【标题】"douyu-gifts:每天发送礼物"是一个与直播平台斗鱼相关的Python项目,其核心功能是自动发送礼物给指定的主播。在直播行业中,观众可以通过购买并赠送虚拟礼物来支持他们喜欢的主播,而这个项目则帮助用户实现...

Global site tag (gtag.js) - Google Analytics