skynet实现的斗地主服务端源码

skynet实现的斗地主服务端源码,斗地主规则有改动,逻辑用lua实现。

文件:url80.ctfile.com/f/25127180-557022955-328042
(访问密码:551685)


以下内容无关:

JavaWeb是Web开发的重要基础,对Servlet、监听器和过滤器等知识的掌握程度,将会影响到你后面学习SpringWeb框架难易程度。

先了解下我们在学习的东西是干嘛的

B/S模式

B端=浏览器端,可以看作是通用标准的客户端,所有浏览器都基于通用标准去开发的客户端软件;

S端=服务器端,就是我们开发的web服务,在B/S端中我们只需要开发服务端,区别于C/S模式,在C/S模式中我们客户端app和服务端服务都需要我们自己开发完成。

简单理解下浏览器到服务器的过程:

浏览器请求发出http://www.xxxx.com/path1/ser/
通过DNS域名解析找到IP地址
通过IP地址找到部署服务的服务器
通过端口找到服务器中具体的服务程序
因为一个Tomcat(web服务器)可以部署多个项目,所以往往喜欢使用端口后的第一个路径表示要访问的服务(path1路径)
接着就是路径ser,ser表示要访问的servlet,一个项目必然有数不清的servlet入口,分别用于实现不同功能的小程序服务。
那为啥叫小程序服务呢小就有大的咯,哪大的是谁Tomcat服务器咯。可以看作一个Tomcat中有多个独立提供不同功能的小程序服务–servlet。

到此引出了为什么要有servlet,为不同请求独立提供不同的服务。

学习之前记得配好开发环境:两个都要配置

JAVA_HOME配置:C:Program FilesJavajdk1.8.0_181
CLASS_PATH配置:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar
1.Servlet
1.1.简介
Servlet(Server applet),全称Java Servlet,直接意思是Java的小程序服务,是运行在 Web 服务器或应用服务器上的程序。Servlet一般只用来扩展HTTP协议的Web服务。

Servlet的作用:接收用户请求、提供服务处理入口、响应处理结果。

image

Servlet接口源码

public interface Servlet {
void init(ServletConfig var1) throws ServletException;

}
Servlet的生命周期

Servlet生命周期指Servlet的对象从被创建到被销毁的过程。

由Tomcat服务器启动时创建Servlet;
Servlet的配置信息ServletConfig作为参数传递到void init(ServletConfig var1)方法中;
在开发Servlet时,将init方法中的ServletConfig对象赋值给成员变量(放大作用域),再通过getServletConfig() 获取ServletConfig对象;这件事已经由抽象类GenericServlet做了,所以一般自定义Servlet都是继承GenericServlet类或其子类来实现;
每个Servlet请求的入口为service()方法,每次请求都会从这里进去;
Servlet对象销毁前(WEB项目卸载时)调用destroy(),用来做一些收尾工作,释放资源。
关于getServletInfo的方法,再GenericServlet中实现结果时返回空字符串。

两个关键点

init()方法:每个servlet都只会在第1次请求时执行init初始化方法;

service()方法

每次请求进来都会调用service()方法;
Servlet是以单实例多线程方式工作,它是以多线程的方式调用service()方法;
Servlet不是线程安全,所以尽量不要在service()方法中操作全局变量,若非要调用全局变量务必使用关键字volatile修饰,并通过synchronized修饰的方法来操作全局变量。
通过Servlet接口源码可知,ServletConfig接口、ServletContext接口、ServletRequest接口和ServletResponse接口最为重要。

1.2.ServletConfig
Servlet的配置信息,每一个Servlet都有其唯一对应的ServletConfig。

创建:由Tomcat服务器启动时创建

获取:ServletConfig对象作为参数传递到init()方法中,可以在init()方法直接获取。

抽象类GenericServlet已经实现Servlet和ServletConfig接口,所以一般自定义Servlet都是继承GenericServlet类或其子类来实现,可以直接调用ServletConfig接口中的4个方法来获取servlet配置信息。

ServletConfig 接口源码

public interface ServletConfig {
String getServletName();
ServletContext getServletContext();
String getInitParameter(String var1);
Enumeration getInitParameterNames();
}
ServletConfig接口除了ServletName和初始化参数信息,最重要的就是ServletContext对象的获取了。

1.3.ServletContext
一个Web应用对应一个唯一的ServletContext对象(可以在tomcat的server.xml中的Context标签查看)

ServletContext对象在项目启动时创建,并在初始化时提供ServletConfig对象来访问ServletContext,在项目停止或重载配置时销毁。

获取:通过ServletConfig的getServletContext()方法获取。

功能:

1、可以获取整个WEB应用的初始化参数

myContextName xxxxxxvalue 2、可以获取资源的真实路径(物理路径),主要在文件的上传和下载时使用。

3 、可以作为一个域对象在不同的web资源之间共享数据。

1.4.Servlet案例
public class MyFirstServlet implements Servlet{
private ServletConfig servletConfig;

@Override
public void init(ServletConfig config) throws ServletException {
System.out.println(“Servlet1MyFirstServlet–init”);
this.servletConfig = config; //将初始化传进来的Servlet配置对象保存起来
// 获取Servlet初始化时的所有初始化参数名称
Enumeration initParameterNames = this.servletConfig.getInitParameterNames();
// 遍历所有初始化 参数名称 和 参数值
while(initParameterNames.hasMoreElements()) {
String nextElement = initParameterNames.nextElement();
String initParameter = this.servletConfig.getInitParameter(nextElement);
System.out.println(“[param-name=”+ nextElement + “,param-value=” + initParameter +”]”);
}
}

@Override
public ServletConfig getServletConfig() {
return this.servletConfig; // 提供获取ServletConfig方法
}

@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println(“Servlet1MyFirstServlet–service”);
// 查看容器中有多少个Servlet
ServletContext servletContext = getServletConfig().getServletContext();
Map<String, extends ServletRegistration> servletRegistrations = servletContext.getServletRegistrations();
Iterator<extends Map.Entry<String, extends ServletRegistration>> iterator = servletRegistrations.entrySet().iterator();
while(iterator.hasNext()) {
Entry<String, extends ServletRegistration> next = iterator.next();
System.out.println(“key=”+next.getKey()+”,value=”+next.getValue());
}
// 响应浏览器
res.getWriter().write(“200”);
}

@Override
public void destroy() {
System.out.println(“Servlet1MyFirstServlet–destroy”);
}

@Override
public String getServletInfo() {
return “”;
}

}
web.xml 配置

MyFirstServlet com.yty.servlet.MyFirstServlet initParam asdfsdaf MyFirstServlet /myfirstservlet 文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91536 人正在系统学习中

来源:我信张i

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月18日
下一篇 2022年2月18日

相关推荐