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

南昌市 做网站的公司嘉兴网页设计

南昌市 做网站的公司,嘉兴网页设计,网站是怎么赢利的,网站建设360rpc框架搭建 consumer 消费者应用 provider 提供的服务 Provider-common 公共类模块 rpc 架构 service-Registration 服务发现 nacos nacos配置中心 load-balancing 负载均衡 redis-trench 手写redis实现和链接 package com.trench.protocol;import com.trench.enumUtil.Redis…rpc框架搭建 consumer 消费者应用 provider 提供的服务 Provider-common 公共类模块 rpc 架构 service-Registration 服务发现 nacos nacos配置中心 load-balancing 负载均衡 redis-trench 手写redis实现和链接 package com.trench.protocol;import com.trench.enumUtil.RedisRepEnum; import redis.clients.jedis.util.SafeEncoder;import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays;public class Protocol {public static final String DOLLAR$;public static final String STAR*;public static final String BLANK\r\n;public static void sendCommand(OutputStream outputStream, RedisRepEnum redisRepEnum,byte [] ... args){StringBuffer strnew StringBuffer();str.append(STAR).append(args.length-1).append(BLANK);str.append(DOLLAR).append(redisRepEnum.name().length()).append(BLANK);str.append(redisRepEnum).append(BLANK);Arrays.stream(args).forEach(arg-{str.append(DOLLAR).append(arg.length).append(BLANK);str.append(new String(arg)).append(BLANK);});try {outputStream.write(str.toString().getBytes(StandardCharsets.UTF_8));} catch (IOException e) {e.printStackTrace();}}public static final byte[] toByteArray(long value) {return SafeEncoder.encode(String.valueOf(value));} } package com.trench.api;import com.trench.connection.Connetion; import com.trench.enumUtil.RedisRepEnum; import com.trench.protocol.Protocol; import com.trench.util.SerializeUtils; import redis.clients.jedis.BuilderFactory;import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Set;public class Client {Connetion connetion;public Client(String host,Integer port){connetionnew Connetion(port,host);}public void set(final String key, final String values){connetion.sendCommand( RedisRepEnum.SET,key.getBytes(StandardCharsets.UTF_8), SerializeUtils.serialize(values));}public Object get(final String key){connetion.sendCommand(RedisRepEnum.GET,key.getBytes(StandardCharsets.UTF_8));return connetion.getData();}public void delete(final String key){connetion.sendCommand(RedisRepEnum.GETDEL,key.getBytes(StandardCharsets.UTF_8));}//封装redis的过期时间public void expire(String key, long seconds){connetion.sendCommand(RedisRepEnum.EXISTS, key.getBytes(StandardCharsets.UTF_8), Protocol.toByteArray(seconds));}//是否存在keypublic boolean exists(final String key) {connetion.sendCommand(RedisRepEnum.EXISTS, key.getBytes(StandardCharsets.UTF_8));return (Long)connetion.getData()1L;}//查找key中set包含public SetString keys(final String key){connetion.sendCommand(RedisRepEnum.KEYS,key.getBytes(StandardCharsets.UTF_8));return (Set) BuilderFactory.STRING_SET.build((List)connetion.getData());} } rpc框架核心代码 package com.trench.protocol;import com.trench.SerializeUtils; import com.trench.frawork.Invocation; import com.trench.nacos.dome.NacosHttp; import org.apache.commons.io.IOUtils;import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets;public class HttpClient {public String send(String hostName, Integer port, Invocation invocation) throws IOException {//读取nacos中的配置用户的请求方式。如http POST get等NacosHttp nacosHttpnew NacosHttp();try {URL urlnew URL(nacosHttp.getHttp(),hostName,port,nacosHttp.getFile());HttpURLConnection httpURLConnection (HttpURLConnection)url.openConnection();httpURLConnection.setRequestMethod(nacosHttp.getRequestMethod());httpURLConnection.setDoOutput(true);//配置OutputStream outputStreamhttpURLConnection.getOutputStream();ObjectOutputStream oss new ObjectOutputStream(outputStream);oss.writeObject(SerializeUtils.serialize(invocation));oss.flush();oss.close();InputStream inputStream httpURLConnection.getInputStream();return (String) SerializeUtils.deSerialize(IOUtils.toString(inputStream).getBytes(StandardCharsets.UTF_8));} catch (MalformedURLException e) {throw e;} catch (IOException e) {throw e;}} } 启动tomcat package com.trench.protocol;import org.apache.catalina.*; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.StandardContext; import org.apache.catalina.core.StandardEngine; import org.apache.catalina.core.StandardHost; import org.apache.catalina.startup.Tomcat;public class HttpServer {public void start(String hostname,Integer port){//读取用户配置Tomcat tomcatnew Tomcat();Server server tomcat.getServer();Service service server.findService(Tomcat);Connector connectornew Connector();connector.setPort(port);Engine enginenew StandardEngine();engine.setDefaultHost(hostname);Host hostnew StandardHost();host.setName(hostname);String contextPash;Context contextnew StandardContext();context.setPath(contextPash);context.addLifecycleListener(new Tomcat.FixContextListener());host.addChild(context);engine.addChild(host);service.setContainer(engine);service.addConnector(connector);tomcat.addServlet(contextPash,dispatcher,new DispatcherServlet());context.addServletMappingDecoded(/*,dispatcher);try {tomcat.start();tomcat.getServer().await();}catch (LifecycleException e){e.printStackTrace();}} } package com.trench.protocol;import com.trench.frawork.Invocation; import com.trench.register.LocalRegister; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils;import java.io.IOException; import java.io.ObjectInputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets;public class HttpServerHandler extends HttpServer {public void handler(HttpServletRequest request, HttpServletResponse response){//可自行添加为心跳监听等操作//处理请求try {Invocation invocation (Invocation)new ObjectInputStream(request.getInputStream()).readObject();String interfaceName invocation.getInterfaceName();//接口名称Class aClass LocalRegister.get(interfaceName,invocation.getVersion());Method method aClass.getMethod(invocation.getMethodName(), invocation.getParameterTypes());String invoke (String) method.invoke(aClass.newInstance(), invocation.getParameter());IOUtils.write(invoke.getBytes(StandardCharsets.UTF_8),response.getOutputStream());} catch (IOException e) {e.printStackTrace();}catch (ClassNotFoundException e){e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();}} } 相关的gitub仓库地址(https://github.com/zhaoyiwen-wuxian/RpcTrench.git) master分支进行切换分支到master
http://www.pierceye.com/news/29974/

相关文章:

  • 什么网站可以做海报揭阳网站制作教程
  • 建网站的公司深圳wordpress建站门户
  • 商务网站建设内容柳州网站seo
  • python 做网站开发公司运营管理方案
  • 单品商城网站源码wordpress主题 d8 4.1
  • 网站建设实训报告册h5移动端网站开发
  • 网站里添加斗鱼直播的视频怎么做前端面试
  • 邯郸企业网站团队网站做的好不好数据
  • p2p网站开发用什么平台魔方优化大师官网
  • 人才网站建设如何做销售网站
  • 游览有关小城镇建设的网站兰州市城市建设设计院官方网站
  • 信誉好的免费网站建设做网站 请示
  • 苏州高新区网站建设导购类网站备案
  • 网站网页设计模板c2c网站管理系统下载
  • 欧美一级a做爰片免费网站如何做企业文化培训
  • 厦门网站建设慕枫深圳建网站哪个好
  • 网站开发基础与提高合肥房产网安居客
  • 电子商务网站开发与建设试卷网站扫码怎么做的
  • 温州网站升级云南住房与建设厅网站
  • 网站功能模版大庆油田建设集团网站
  • 顺义广州网站建设c 怎么做网站开发
  • 南海网站设计手工制作帽子 小学生
  • 优惠网站代理怎么做品牌网上和实体店质量一样吗
  • 淘宝标题优化网站装修公司网站怎么做的
  • 房地产行情最新消息网站建设价格很 好乐云seo
  • 阿里云网站建设 部署与发布考试如何使用域名访问网站
  • 东北建站页面优化算法
  • 网址大全免费网站榆林市网站seo
  • 网站自动提交收录注册网站请签署意见是写无
  • 平度那里有做网站的qq赞网站推广免费