java服务器应用开发框架?,第1张

随着互联网的不断发展,无服务器应用编程开发成为了程序员学习的又一个发展方向,下面北大青鸟就一起来了解一下,实现无服务器编程开发的框架都有哪些呢。

Nimbus是一个旨在简化FaaS应用程序开发、测试和部署的Java框架。Nimbus提供了一组与云平台无关的公共接口,用于与云提供商的无服务器功能发生交互。

对于那些想要开发简单的应用程序的新手们来说,他们需要面临非常陡峭的学习曲线。他们可能只想要部署一些HTTP端点用来保存数据,但仍然要学习很多与云相关的概念。

Nimbus的主要优势是不需要通过创建配置文件来声明云资源(如AWSSAM或者Serverless框架),这样开发人员“就不会因为忘记了某些参数而犯错”。另外,Nimbus会对部署参数进行编译时检查,以便尽早检测出错误。

Nimbus还支持其他的操作:

WebSocketFunction:用于处理websocket请求;

DocumentStoreFunction:用于执行因文档存储变更而触发的代码;

KeyValueStoreFunction:用于执行因键值存储变更而触发的代码;

NotificationFunction:用于执行由通知触发的代码;

QueueFunction:用于执行因队列变化而触发的代码;

BasicFunction:用于执行不需要触发器的代码;

FileStorageFunction:用于执行基于文件存储事件(文件创建和删除)的代码;

AfterDeploymentFunction:用于执行部署之后需要立即执行的操作。

除了支持各种不同的操作之外,Nimbus还支持几种数据存储类型。

其他支持的数据存储(和客户端)包括:用于存储关系型数据的关系型存储、用于存储键值数据的键值存储和用于存储对象的文件存储(支持静态网站托管和文件上传)。

测试也是构建无服务器应用程序的另一个常见难点。Nimbus提供了单元测试和集成测试支持。在进行单元测试时,可以为上述列表中的任何一个操作创建本地部署,可以接受请求,并验证函数是否被正确调用,或者数据是否被正确保存。Nimbus对集成测试的支持相对有限,只支持基于HTTP的测试。在进行集成测试时,会启动一个本地Web服务器,用于验证请求调用了正确的函数。

import javaio;

import javanet;public class ftpServer extends Thread{ public static void main(String args[]){

String initDir;

initDir = "D:/Ftp";

ServerSocket server;

Socket socket;

String s;

String user;

String password;

user = "root";

password = "123456";

try{

Systemoutprintln("MYFTP服务器启动");

Systemoutprintln("正在等待连接");

//监听21号端口

server = new ServerSocket(21);

socket = serveraccept();

Systemoutprintln("连接成功");

Systemoutprintln("");

Systemoutprintln("");

InputStream in =socketgetInputStream();

OutputStream out = socketgetOutputStream();

DataInputStream din = new DataInputStream(in);

DataOutputStream dout=new DataOutputStream(out);

Systemoutprintln("请等待验证客户信息");

while(true){

s = dinreadUTF();

if(strim()equals("LOGIN "+user)){

s = "请输入密码:";

doutwriteUTF(s);

s = dinreadUTF();

if(strim()equals(password)){

s = "连接成功。";

doutwriteUTF(s);

break;

}

else{s ="密码错误,请重新输入用户名:";<br> doutwriteUTF(s);<br> <br> }

}

else{

s = "您输入的命令不正确或此用户不存在,请重新输入:";

doutwriteUTF(s);

}

}

Systemoutprintln("验证客户信息完毕"); while(true){

Systemoutprintln("");

Systemoutprintln("");

s = dinreadUTF();

if(strim()equals("DIR")){

String output = "";

File file = new File(initDir);

String[] dirStructure = new String[10];

dirStructure= filelist();

for(int i=0;i<dirStructurelength;i++){

output +=dirStructure[i]+"\n";

}

s=output;

doutwriteUTF(s);

}

else if(sstartsWith("GET")){

s = ssubstring(3);

s = strim();

File file = new File(initDir);

String[] dirStructure = new String[10];

dirStructure= filelist();

String e= s;

int i=0;

s ="不存在";

while(true){

if(eequals(dirStructure[i])){

s="存在";

doutwriteUTF(s);

RandomAccessFile outFile = new RandomAccessFile(initDir+"/"+e,"r");

byte byteBuffer[]= new byte[1024];

int amount;

while((amount = outFileread(byteBuffer)) != -1){

doutwrite(byteBuffer, 0, amount);break;

}break;

}

else if(i<dirStructurelength-1){

i++;

}

else{

doutwriteUTF(s);

break;

}

}

}

else if(sstartsWith("PUT")){

s = ssubstring(3);

s = strim();

RandomAccessFile inFile = new RandomAccessFile(initDir+"/"+s,"rw");

byte byteBuffer[] = new byte[1024];

int amount;

while((amount =dinread(byteBuffer) )!= -1){

inFilewrite(byteBuffer, 0, amount);break;

}

}

else if(strim()equals("BYE"))break;

else{

s = "您输入的命令不正确或此用户不存在,请重新输入:";

doutwriteUTF(s);

}

}

dinclose();

doutclose();

inclose();

outclose();

socketclose();

}

catch(Exception e){

Systemoutprintln("MYFTP关闭!"+e);

}

}}

服务端:

ServerSocket serverSocket = new ServerSocket(2008);

while (true) {

Socket socket = serverSocketaccept();

MyThread thread = new MyThread(socket);

threadstart();

}public class MyThread extends Thread {

private Socket socket;

public MyThread(Socket socket) {

thissocket = socket;

}

@Override

public void run() {

superrun();

try {

InputStream is = socketgetInputStream();

BufferedReader bufReader = new BufferedReader(new InputStreamReader(is));

String line = "";

String s = "";

while ((s = bufReaderreadLine()) != null) {

line = line + s;

}

Systemoutprintln("接收到:" + line);

} catch (IOException e) {

eprintStackTrace();

}

}

}

客户端:

public static void main(String[] args) throws UnknownHostException, IOException {

Socket socket=new Socket("1921680101", 2008);

OutputStream out=socketgetOutputStream();

PrintWriter pw=new PrintWriter(new OutputStreamWriter(out));

pwprint("12345上山打老虎");

pwflush();

pwclose();

outclose();

}

随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户端与服务器端。客户端是玩家接触的游戏图像显示端,服务器是处理游戏运行中的各种数据,由于一台服务器要支持众多玩家的请求,所以服务器的性能高低决定了同一个游戏的用户数量。

主要原因是:

1Java是跨平台的,方便部署;

2Java是安全的高级语言,可以提高开发效率;

3Java是面向对象的,代码可以重用;

4Java的分布式应用

/

Created by IntelliJ IDEA

User: Knight_Sun

Date: 2008-5-20

Time: 9:19:09

To change this template use File | Settings | File Templates

/

import javaxswing;

import javaawt;

import javaawteventActionEvent;

import javaawteventActionListener;

import javasqlTimestamp;

import javatextSimpleDateFormat;

public class Showtime extends JFrame implements ActionListener {

private JButton timeBox;

private JTextField timeField;

private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年M月d日 a h时m分s秒");

public Showtime(String title) throws HeadlessException {

super(title);

init();

doLay();

handleEvents();

}

private void init() {

timeBox = new JButton("刷新时间");

timeField = new JTextField(20);

}

private void doLay() {

Container container = getContentPane();

containeradd(timeBox, BorderLayoutNORTH);

containeradd(timeField, BorderLayoutSOUTH);

pack();

setVisible(true);

}

private void handleEvents() {

timeBoxaddActionListener(this);

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e) {

Timestamp nowtime=new Timestamp(SystemcurrentTimeMillis());

timeFieldsetText(dateFormatformat(nowtimegetTime()));

}

public static void main(String[] args) {

new Showtime("Show Time");

}

}

看看是不是你要的效果,一个按钮,点一下就显示最新时间

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java服务器应用开发框架?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情