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

如何用php数据库做网站谈谈你对互联网营销的认识

如何用php数据库做网站,谈谈你对互联网营销的认识,龙口做网站哪家好,shopify可以用来做B2B网站吗导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客 从这一章开始,我们进入业务的部分,从注册登录开始。 创建注册和登录的路由 package com.loveprogrammer.command.server;public interface Se…

 导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客          

        从这一章开始,我们进入业务的部分,从注册登录开始。

创建注册和登录的路由

package com.loveprogrammer.command.server;public interface ServerTag {/**** 注册*/int TAG_LOGIN_REGISTER = 1;/**** 登录*/int TAG_LOGIN_LOGIN = 2;/**** 测试*/int TAG_HELLO_HI = 99;}
package com.loveprogrammer.command.server;public interface ServerTopic {/**** 登录与测试*/int TOPIC_LOGIN = 1;/**** 问候*/int TOPIC_HELLO = 99;}

handler的位置移到server中

编写登录的handler

LoginHandler.java

package com.loveprogrammer.handler;import com.alibaba.fastjson2.JSON;
import com.loveprogrammer.base.network.command.BaseHandler;
import com.loveprogrammer.base.network.command.anotation.TagListener;
import com.loveprogrammer.base.network.command.anotation.TopicListener;
import com.loveprogrammer.command.server.ServerTag;
import com.loveprogrammer.command.server.ServerTopic;
import com.loveprogrammer.dto.login.UserRegister;
import com.loveprogrammer.domain.User;
import com.loveprogrammer.service.IUserService;
import io.netty.channel.ChannelHandlerContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;/*** @ClassName LoginHandler* @Description 登录* @Author admin* @Date 2024/2/6 15:49* @Version 1.0*/
@Component
@TopicListener(topic = ServerTopic.TOPIC_LOGIN)
public class LoginHandler extends BaseHandler {public static final Logger log = LoggerFactory.getLogger(LoginHandler.class);@Autowiredprivate IUserService userService;@TagListener(tag = ServerTag.TAG_LOGIN_REGISTER,messageClass = UserRegister.class)public void register(ChannelHandlerContext ctx, UserRegister register){log.info("数据内容:data=" + JSON.toJSONString(register));User user = userService.findUserByNickname(register.getName());if(user == null) {user = new User();user.setNickName(register.getName());user.setPassword("111111");user.setAccount(register.getName());userService.save(user);}else{log.warn("用户已经存在");}//StringMessage message = StringMessage.create(0,0);//message.setStatusCode(CommonValue.MSG_STATUS_CODE_SUCCESS);//message.setBody(result);//SessionManager.getInstance().sendMessage(ctx.channel(),message);}
}

修改客户端

SocketClient.java

package com.loveprogrammer.netty.simple;import com.loveprogrammer.codec.MessageDecoder;
import com.loveprogrammer.codec.MessageEncoder;
import com.loveprogrammer.command.server.ServerTag;
import com.loveprogrammer.command.server.ServerTopic;
import com.loveprogrammer.constants.ConstantValue;
import com.loveprogrammer.pojo.StringMessage;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.DelimiterBasedFrameDecoder;
import io.netty.handler.codec.Delimiters;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** @ClassName SocketClient* @Description TODO* @Author admin* @Date 2024/1/29 17:43* @Version 1.0*/
public class SocketClient {private static final Logger logger = LoggerFactory.getLogger(SocketClient.class);private static final String IP = "127.0.0.1";private static final int PORT = 8088;private static EventLoopGroup group = new NioEventLoopGroup();protected static void run() throws InterruptedException {
//        Bootstrap bootstrap = new Bootstrap();
//        bootstrap.group(group);
//        bootstrap.channel(NioSocketChannel.class);
//        bootstrap.handler(new ChannelInitializer() {
//            protected void initChannel(Channel ch) throws Exception {
//                ChannelPipeline pipeline = ch.pipeline();
//                pipeline.addLast("framer",new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
//                pipeline.addLast("decoder",new StringDecoder());
//                pipeline.addLast("encoder",new StringEncoder());
//                pipeline.addLast(new SocketClientHandler());
//            }
//        });Bootstrap bootstrap = new Bootstrap();bootstrap.group(group);bootstrap.channel(NioSocketChannel.class);bootstrap.handler(new ChannelInitializer() {@Overrideprotected void initChannel(Channel ch) {ChannelPipeline pipeline = ch.pipeline();pipeline.addLast("encoder", new MessageEncoder());pipeline.addLast("decoder", new MessageDecoder(ConstantValue.MESSAGE_CODEC_MAX_FRAME_LENGTH,ConstantValue.MESSAGE_CODEC_LENGTH_FIELD_LENGTH, ConstantValue.MESSAGE_CODEC_LENGTH_FIELD_OFFSET,ConstantValue.MESSAGE_CODEC_LENGTH_ADJUSTMENT, ConstantValue.MESSAGE_CODEC_INITIAL_BYTES_TO_STRIP,false));pipeline.addLast(new SocketClientHandler());}});// 连接服务器ChannelFuture channelFuture = bootstrap.connect(IP, PORT).sync();StringMessage msg = StringMessage.create(ServerTopic.TOPIC_HELLO, ServerTag.TAG_HELLO_HI);msg.setStatusCode(200);msg.setBody("你好,我是eric");// msg += "\r\n";channelFuture.channel().writeAndFlush(msg);logger.info("向服务器发送消息 {}",msg);channelFuture.channel().closeFuture().sync();}public static void main(String[] args) throws InterruptedException {logger.info("开始连接Socket服务器...");try {run();} catch (Exception e) {e.printStackTrace();} finally {group.shutdownGracefully();}}}

SocketClientHandler.java

package com.loveprogrammer.netty.simple;import com.alibaba.fastjson2.JSON;
import com.loveprogrammer.command.server.ServerTag;
import com.loveprogrammer.command.server.ServerTopic;
import com.loveprogrammer.dto.login.UserRegister;
import com.loveprogrammer.pojo.StringMessage;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.Scanner;/*** @ClassName SocketClientHandler* @Description TODO* @Author admin* @Date 2024/1/29 17:41* @Version 1.0*/
public class SocketClientHandler extends SimpleChannelInboundHandler<StringMessage> {private static final Logger logger = LoggerFactory.getLogger(SocketClientHandler.class);@Overridepublic void exceptionCaught(ChannelHandlerContext arg0, Throwable arg1) {logger.info("异常发生", arg1);}@Overridepublic void channelRead(ChannelHandlerContext arg0, Object msg) throws Exception {super.channelRead(arg0, msg);}@Overrideprotected void channelRead0(ChannelHandlerContext context, StringMessage data) {logger.info("数据内容:data=" + data);// 注册一个用户System.out.println("请输入注册的用户名");Scanner input = new Scanner(System.in);String name = input.nextLine();UserRegister register = new UserRegister();register.setName(name);StringMessage msg = StringMessage.create(ServerTopic.TOPIC_LOGIN,ServerTag.TAG_LOGIN_REGISTER);msg.setStatusCode(200);msg.setBody(JSON.toJSONString(register));context.channel().writeAndFlush(msg);logger.info("向服务器发送注册用户消息 {}",msg);}@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {logger.info("客户端连接建立");super.channelActive(ctx);}@Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {logger.info("客户端连接断开");super.channelInactive(ctx);}}

运行测试

客户端填写用户名

09:37:29.895 [nioEventLoopGroup-2-1] [INFO ] com.loveprogrammer.netty.simple.SocketClientHandler:37 --- 数据内容:data=StringMessage{messageId=0, statusCode=1, length=76, body='我是服务器,我收到了你的信息:你好,我是eric,sessionId = 1'}
请输入注册的用户名
eric
09:46:33.692 [nioEventLoopGroup-2-1] [INFO ] com.loveprogrammer.netty.simple.SocketClientHandler:49 --- 向服务器发送注册用户消息 StringMessage{messageId=1, statusCode=200, length=0, body='{"name":"eric"}'}

服务端响应 

2024-02-07 09:37:29.892  INFO 14596 --- [  worker-pool-0] com.loveprogrammer.handler.HelloHandler  : 数据内容:data=你好,我是eric
2024-02-07 09:46:33.753  INFO 14596 --- [  worker-pool-0] com.loveprogrammer.handler.LoginHandler  : 数据内容:data={"name":"eric"}
Hibernate: select user0_.id as id1_0_, user0_.account as account2_0_, user0_.email as email3_0_, user0_.nick_name as nick_nam4_0_, user0_.password as password5_0_ from tbl_user user0_ where user0_.nick_name=?
Hibernate: insert into tbl_user (account, email, nick_name, password) values (?, ?, ?, ?)

全部源码详见:

gitee : eternity-online: 多人在线mmo游戏 - Gitee.com

分支:step-07


文章转载自:
http://planning.pwkq.cn
http://parang.pwkq.cn
http://depress.pwkq.cn
http://undp.pwkq.cn
http://pikake.pwkq.cn
http://boloney.pwkq.cn
http://starling.pwkq.cn
http://lentigines.pwkq.cn
http://lamely.pwkq.cn
http://praecipe.pwkq.cn
http://interneuron.pwkq.cn
http://spermalege.pwkq.cn
http://ladified.pwkq.cn
http://discrepant.pwkq.cn
http://optime.pwkq.cn
http://souchong.pwkq.cn
http://nonage.pwkq.cn
http://plutocracy.pwkq.cn
http://barie.pwkq.cn
http://curtilage.pwkq.cn
http://empanada.pwkq.cn
http://oit.pwkq.cn
http://dewlap.pwkq.cn
http://felinity.pwkq.cn
http://many.pwkq.cn
http://crispate.pwkq.cn
http://algerian.pwkq.cn
http://liederkranz.pwkq.cn
http://payment.pwkq.cn
http://telebit.pwkq.cn
http://beyrouth.pwkq.cn
http://hebetate.pwkq.cn
http://calutron.pwkq.cn
http://spirula.pwkq.cn
http://thermostable.pwkq.cn
http://antimechanized.pwkq.cn
http://lifeblood.pwkq.cn
http://crevette.pwkq.cn
http://romanic.pwkq.cn
http://finity.pwkq.cn
http://discriminatory.pwkq.cn
http://queenhood.pwkq.cn
http://dixy.pwkq.cn
http://outstanding.pwkq.cn
http://woden.pwkq.cn
http://chapote.pwkq.cn
http://sideshow.pwkq.cn
http://schmoe.pwkq.cn
http://outspan.pwkq.cn
http://encyclopedize.pwkq.cn
http://neurological.pwkq.cn
http://cajon.pwkq.cn
http://patripotestal.pwkq.cn
http://antichloristic.pwkq.cn
http://elastoplast.pwkq.cn
http://marital.pwkq.cn
http://residual.pwkq.cn
http://homebred.pwkq.cn
http://vigilant.pwkq.cn
http://urolithiasis.pwkq.cn
http://somatotherapy.pwkq.cn
http://gelong.pwkq.cn
http://mistiness.pwkq.cn
http://abstain.pwkq.cn
http://androphile.pwkq.cn
http://sialolith.pwkq.cn
http://cargo.pwkq.cn
http://jiffy.pwkq.cn
http://breath.pwkq.cn
http://emmetropia.pwkq.cn
http://denehole.pwkq.cn
http://stateswoman.pwkq.cn
http://statuesque.pwkq.cn
http://domestic.pwkq.cn
http://casualties.pwkq.cn
http://paranasal.pwkq.cn
http://interlink.pwkq.cn
http://videoize.pwkq.cn
http://oldish.pwkq.cn
http://dost.pwkq.cn
http://hangout.pwkq.cn
http://coelentera.pwkq.cn
http://eastabout.pwkq.cn
http://bight.pwkq.cn
http://follower.pwkq.cn
http://requote.pwkq.cn
http://congruence.pwkq.cn
http://origin.pwkq.cn
http://tankfuls.pwkq.cn
http://pilastrade.pwkq.cn
http://scazon.pwkq.cn
http://solidly.pwkq.cn
http://vermicide.pwkq.cn
http://thyrotoxic.pwkq.cn
http://murrhine.pwkq.cn
http://pesky.pwkq.cn
http://overtime.pwkq.cn
http://jargoon.pwkq.cn
http://disconnexion.pwkq.cn
http://pal.pwkq.cn
http://www.dt0577.cn/news/96317.html

相关文章:

  • 国美网站建设的目的谷歌paypal下载
  • 烟台市做网站百度小程序入口
  • 南阳网(网站).百度联系方式人工客服
  • 怎么做酒店网站百度搜索引擎介绍
  • 不用代码做网站百度收录查询代码
  • 网站建设平台讯息社交媒体营销策略有哪些
  • thinkphp5网站开发青岛百度推广seo价格
  • wordpress做电商网站做一个网站要花多少钱
  • 丽水网站seo360识图
  • 做愛4p視頻网站是什么女生读网络营销与电商直播
  • 官方网站如何做关键词筛选
  • 武汉博晟做的网站seo搜索优化培训
  • 韩国做美食的视频网站免费友情链接网页
  • 网站模板怎么编辑网站建设苏州
  • 免费淘宝客网站模板下载软文写作平台
  • 佛教网站的建设网站平台都有哪些
  • 做网站用php吗sem营销是什么意思
  • 大兴网站开发网站建设咨询最新新闻热点事件2022
  • 大型网站建设洛阳网站制作阿里云官网首页
  • 怎样注册微信小商店网站搜索优化技巧
  • 企业网站 数据库苏州网络推广seo服务
  • 新乡营销型网站建设怎么免费制作网站
  • 南昌做企业网站怎么自己制作网站
  • 怎么做一购物网站软文有哪些
  • 青岛百度网站排名优化中囯军事网
  • 哈尔滨建设网站门户如何做线上推广
  • 政府机构网站建设方案公司网站制作
  • 五金制品东莞网站建设技术支持google关键词工具
  • wordpress首页排版seo搜索优化推广
  • 回收网站建设5118