当前位置: 首页 > news >正文

动态网站开发与设计毕业论文企业qq一年多少费用

动态网站开发与设计毕业论文,企业qq一年多少费用,商城首页网站,简易动态网站开发背景: 之前一直只考虑用JavaSe进行游戏服务器开发,目前项目使用了Spring,发现还是非常好的,好处如下: 好处1:依赖注入非常方便,我们只使用Spring最基本的功能即可,这样子就算是有一些模块不使用Spring管理…

背景:

之前一直只考虑用JavaSe进行游戏服务器开发,目前项目使用了Spring,发现还是非常好的,好处如下:

        好处1:依赖注入非常方便,我们只使用Spring最基本的功能即可,这样子就算是有一些模块不使用Spring管理也是非常方便的,因为我现在已经能轻松控制住Spring容器的声明周期。

        好处2: 模块之间就像搭建积木即可,又相互配合。 我想支持web也是非常轻松。

        好处3: 这样子再去整合Mybatis、或者其它的一些MQ、ES之类的中间件,就太简单了。

pom.xml   // 项目中使用了lettuce,这里作为演示

       <dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId><version>5.1.8.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><!--(起码1.2.48以上)因为这个版本一下存在漏洞--><version>1.2.48</version></dependency>

1.Application.java

package com.example.springbootgame.application;import org.springframework.context.ApplicationContext;public class Application {private static ApplicationContext applicationContext;public static ApplicationContext getApplicationContext() {return applicationContext;}public static void setApplicationContext(ApplicationContext applicationContext) {Application.applicationContext = applicationContext;}public static <T> T getBean(Class<T> requiredType) {if (applicationContext == null) {return null;}return applicationContext.getBean(requiredType);}}

2.RedisConfig.java // 使用Configuration引入一些自定义的Bean

package com.example.springbootgame.config;import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.sync.RedisCommands;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.time.Duration;
import java.time.temporal.ChronoUnit;@Configuration
public class RedisConfig {@Beanpublic GameRedis getGameRedis() {RedisURI redisURI = RedisURI.builder().withHost("localhost").withPort(6379).withTimeout(Duration.of(10, ChronoUnit.SECONDS)).build();RedisClient redisClient = RedisClient.create(redisURI);return new GameRedis(redisClient.connect().sync());}
}

3.GameRedis.java // 包装器模式。包装出自己的访问接口

package com.example.springbootgame.config;import io.lettuce.core.api.sync.RedisCommands;public class GameRedis {private RedisCommands redisCommands;public GameRedis(RedisCommands redisCommands) {this.redisCommands = redisCommands;}public <K, V> V get(K k) {return (V) redisCommands.get(k);}public <K, V> void set(K k, V v) {redisCommands.set(k, v);}
}

4.LoginHandler.java

package com.example.springbootgame.handler;import com.alibaba.fastjson.JSON;
import com.example.springbootgame.config.GameRedis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;import java.util.HashMap;
import java.util.Map;@Controller
public class LoginHandler {@AutowiredGameRedis gameRedis;/*** 玩家登录*/public void onCSLogin() {// 简单类型gameRedis.set("123", "abc");String v = gameRedis.get("123");System.out.println(v);// 复杂类型Data data = new Data();data.map.put("k", 6666);gameRedis.set("obj", JSON.toJSONString(data));Data obj = JSON.parseObject(gameRedis.get("obj"), Data.class);System.out.println(obj);}private static class Data {public int num = 1;public Map<String, Integer> map = new HashMap<>();@Overridepublic String toString() {return "Data{" +"num=" + num +", map=" + map +'}';}}
}

5.GameServer.java

package com.example.springbootgame;import com.example.springbootgame.application.Application;
import com.example.springbootgame.handler.LoginHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;import java.io.IOException;@SpringBootApplication
@Slf4j
public class GameServer {public static void registerShutdownHook() {Runtime.getRuntime().addShutdownHook(new Thread(() -> {log.info("gs shutdown in {}", Thread.currentThread().getName());// 测试bean的获取LoginHandler loginHandler = Application.getBean(LoginHandler.class);loginHandler.onCSLogin();// 关闭Spring容器ApplicationContext applicationContext = Application.getApplicationContext();if (applicationContext != null) {ConfigurableApplicationContext cac = (ConfigurableApplicationContext) applicationContext;cac.close();}}, "ShutdownHook-GameServer-Thread"));}public static void main(String[] args) {registerShutdownHook();// 启动Spring容器ApplicationContext applicationContext = SpringApplication.run(GameServer.class, args);Application.setApplicationContext(applicationContext);// 初始化各个模块,如:进行handler的扫描// 阻塞关服try {System.in.read();} catch (IOException e) {log.error("exception", e);}}}
  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::               (v2.7.17)2023-11-18 20:56:48.393  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : Starting GameServer using Java 11.0.11 on DESKTOP-JTMBOEI with PID 7056 (D:\2_test_java\SpringBootGame\target\classes started by Administrator in D:\2_test_java\SpringBootGame)
2023-11-18 20:56:48.397  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : No active profile set, falling back to 1 default profile: "default"
2023-11-18 20:56:48.960  INFO 7056 --- [           main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
2023-11-18 20:56:48.961  INFO 7056 --- [           main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
2023-11-18 20:56:49.492  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : Started GameServer in 1.512 seconds (JVM running for 2.701)
1
2023-11-18 20:56:50.723  INFO 7056 --- [meServer-Thread] com.example.springbootgame.GameServer    : gs shutdown in ShutdownHook-GameServer-Thread
abc
Data{num=1, map={k=6666}}

http://www.hkea.cn/news/10759/

相关文章:

  • 湛江建站模板百度排名规则
  • 企业建设网站价格临沂森工木业有限公司
  • 有什么彩票网站做代理好点北京搜索优化排名公司
  • 怎样建设一个英语网站专业seo培训学校
  • 形象类网站市场营销策划包括哪些内容
  • 建立网站需要多少钱萍畜湖南岚鸿首选新网站怎么快速收录
  • 阜南县城乡建设局官方网站设计网站都有哪些
  • 杭州企业建设网站企业百度开户怎么开
  • 十大跨界营销案例seo经验
  • 网站建设内容介绍西安百度推广网站建设
  • 网站建设前的市场分析怎么写信息流广告优化师培训
  • 唐山网站建设拓网络营销策划创意案例点评
  • 网页标准化对网站开发维护者的好处seo搜索引擎优化方法
  • 淄博网站建设多少钱seo整体优化
  • 公司网站建设武汉seo服务多少钱
  • 个人网页设计的意义seo是对网站进行什么优化
  • 洛阳青峰做网站百度推广费用预算表
  • 如何选择网站制作公司模板建站
  • 工程建设分为哪几个阶段百度官方优化指南
  • wordpress那种路径格式容易收录独立站seo优化
  • 美国地接公司怎么在中国网站做推广网络维护
  • 如何做盗版网站百度推广授权代理商
  • 域名解析 网站seo排名优化的网站
  • 泉州网站设计平台重庆seo推广公司
  • 网站域名空间费用免费发布信息网网站
  • 做免费网站重庆电子商务网站seo
  • 红色php企业网站模板网站优化就是搜索引擎优化
  • 大黔门官方网站建设谷歌广告推广网站
  • 如何自己动手做网站我想做地推怎么找渠道
  • 网站建设业务的途径的体会网站开发技术有哪些