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

凡科网网站建设资料织梦做的网站首页幻灯片怎么不能显示

凡科网网站建设资料,织梦做的网站首页幻灯片怎么不能显示,wordpress伪静态配置不了,江苏网站建设公司排名学习RPC框架#xff0c;由繁化简#xff0c;了解其本质原理 文章目录项目简介什么是RPC#xff1f;项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC#xff1f; RPC#xff08;Remote Procedure Call#xff09;即远程过程调用由繁化简了解其本质原理 文章目录项目简介什么是RPC项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC RPCRemote Procedure Call即远程过程调用不同于本地调用RPC是指调用远端机器的函数或方法且不需要关心底层的调用细节如网络协议和传输协议等对于调用者来说和调用本地方法没有什么区别。 项目模块 common模块定义了用户接口和实体类Userclient模块调用RPC框架的代理类获取结果server模块 实现common的接口把实现类注册到注册中心中调用RpcServer开启socket根据RpcRequest类的信息获取到注册中心的实现类执行方法返回结果通过socket返回 Rpc framework 注册中心RpcRequest装载类的信息RpcServer创建socket接受客户端的请求 项目代码 common模块 实体类和定义的接口 package com.rpc.common;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** Author: Yangmiao* Date: 2023/2/8 10:37* Desc: 网络中传输的信息*/ Data AllArgsConstructor NoArgsConstructor Builder public class User implements Serializable {private Integer id;private String name;private Integer age;private int sex; } package com.rpc.common;/*** Author: Yangmiao* Date: 2023/2/8 10:38* Desc:*/ public interface IUserService {User getById(Integer id);User getUsername(String userName); } client模块 package com.rpc.client;import com.rpc.common.IUserService; import com.rpc.framework.proxy.RpcProxy;/*** Author: Yangmiao* Date: 2023/2/8 11:39* Desc:*/ public class Client {public static void main(String[] args) {RpcProxy rpcProxy new RpcProxy();IUserService productService (IUserService) rpcProxy.remoteCall(localhost, 10000, IUserService.class);System.out.println(productService productService.getById(10));} } server模块 package com.rpc.server;import com.rpc.common.IUserService; import com.rpc.framework.Registry; import com.rpc.framework.RpcServer;/*** Author: Yangmiao* Date: 2023/2/8 11:37* Desc:* https://www.cnblogs.com/fantongxue/p/16004920.html*/ public class Server {/*** 把接口和实现类注册到RPC的注册中心然后通过RPC的RPCServer开启一个serversocket监听某一个端口。* param args*/public static void main(String[] args) {Registry.put(IUserService.class.getName(), UserServiceImpl.class);new RpcServer().provide(10000);} } package com.rpc.server;import com.rpc.common.User; import com.rpc.common.IUserService;/*** Author: Yangmiao* Date: 2023/2/8 11:35* Desc:*/ public class UserServiceImpl implements IUserService {Overridepublic User getById(Integer id) {return User.builder().id(id).name(yangmiao).age(100).sex(1).build();}Overridepublic User getUsername(String userName) {return User.builder().name(userName).build();} } framework模块 package com.rpc.framework;import java.util.HashMap; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;/*** Author: Yangmiao* Date: 2023/2/8 10:39* Desc: 注册中心*/ public class Registry {private final static HashMapString, Class map new HashMap();private final static ReadWriteLock readWriteLock new ReentrantReadWriteLock();/*** 读缓存* param key* return*/public static Class get(String key){// 读锁Lock writeLock readWriteLock.writeLock();// 写锁Lock readLock readWriteLock.readLock();Class v null;readLock.lock();try {v map.get(key);}finally {readLock.unlock();}if (v ! null){return v;}// 缓存中不存在writeLock.lock();try {v map.get(key);if (vnull){// 1.查询数据库// 2.写入缓存map.put(key,v);}}finally {writeLock.unlock();}return v;}/*** 写缓存* param key* param value* return*/public static Class put(String key, Class value){Lock writeLock readWriteLock.writeLock();writeLock.lock();try {return map.put(key,value);}finally {writeLock.unlock();}}public static boolean containsKey(String key){return map.containsKey(key);}}package com.rpc.framework;import lombok.Data;import java.io.Serializable;/*** Author: Yangmiao* Date: 2023/2/8 10:41* Desc:*/ Data public class RpcRequest implements Serializable {private String className;private String methodName;private Class[] types;private Object[] params;}package com.rpc.framework;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;/*** Author: Yangmiao* Date: 2023/2/8 10:42* Desc:*/ public class RpcServer {/*** 创建线程池*/private ExecutorService executors Executors.newFixedThreadPool(5);public void provide(int port){try {ServerSocket serverSocket new ServerSocket(port);while (true){Socket socket serverSocket.accept();executors.execute(new ProcessHandler(socket));}} catch (IOException e) {e.printStackTrace();}} }package com.rpc.framework;import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.Socket;/*** Author: Yangmiao* Date: 2023/2/8 10:50* Desc: 处理服务端逻辑*/ public class ProcessHandler implements Runnable {private Socket socket;public ProcessHandler(Socket socket) {this.socket socket;}Overridepublic void run() {ObjectInputStream objectInputStream null;ObjectOutputStream objectOutputStream null;try {objectInputStream new ObjectInputStream(socket.getInputStream());RpcRequest rpcRequest (RpcRequest) objectInputStream.readObject();Class clazz null;// 判断是否存在于注册中心中if (Registry.containsKey(rpcRequest.getClassName())){clazz Registry.get(rpcRequest.getClassName());}Method method clazz.getMethod(rpcRequest.getMethodName(), rpcRequest.getTypes());Object result method.invoke(clazz.newInstance(), rpcRequest.getParams());// 返回结果objectOutputStream new ObjectOutputStream(socket.getOutputStream());objectOutputStream.writeObject(result);objectOutputStream.flush();} 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();}finally {try {if (objectInputStream !null){objectInputStream.close();}if (objectOutputStream !null){objectOutputStream.close();}}catch (IOException e){e.printStackTrace();}}} }代理 package com.rpc.framework.proxy;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy;/*** Author: Yangmiao* Date: 2023/2/8 11:18* Desc: 创建动态代理*/ public class RpcProxyT {public T remoteCall(String host,int port,Class clazz){return (T) Proxy.newProxyInstance(clazz.getClassLoader(),(Class?[]) new Class[]{clazz},new RemoteInvocationHandler(host,port,clazz));} }package com.rpc.framework.proxy;import com.rpc.framework.RpcRequest;import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.net.ServerSocket; import java.net.Socket;/*** Author: Yangmiao* Date: 2023/2/8 11:22* Desc: 代理类执行的逻辑*/ public class RemoteInvocationHandler implements InvocationHandler {private String host;private int port;private Class clazz;public RemoteInvocationHandler(String host,int port,Class clazz){this.host host;this.port port;this.clazz clazz;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {RpcRequest rpcRequest new RpcRequest();rpcRequest.setClassName(clazz.getName());rpcRequest.setMethodName(method.getName());rpcRequest.setTypes(method.getParameterTypes());rpcRequest.setParams(args);ObjectOutputStream objectOutputStream null;ObjectInputStream objectInputStream null;try {Socket socket new Socket(host,port);// 发送消息objectOutputStream new ObjectOutputStream(socket.getOutputStream());objectOutputStream.writeObject(rpcRequest);objectOutputStream.flush();// 接受结果objectInputStream new ObjectInputStream(socket.getInputStream());Object readObject objectInputStream.readObject();return readObject;}catch (Exception e){e.printStackTrace();}finally {try {if (objectInputStream !null){objectInputStream.close();}if (objectOutputStream!null){objectOutputStream.close();}}catch (IOException e){e.printStackTrace();}}return null;} }测试
http://www.eeditor.cn/news/121104/

相关文章:

  • 如何做网站海报wordpress加载速度太慢
  • 怎么样制作一个公司网站郑州网站建设网站推广
  • 四川旅游云南网络营销文化优化
  • 银川做网站的公司做网站应该学什么专业
  • iis6.0建立网站网站建设费 科目
  • 网站打开速度电子商城建设
  • 长沙网站建设有限公司物流专线做网站
  • 深圳营销型网站建设公司选择哪家好网络综合设计实验报告
  • 贵州建设监理网站培训通知栏网站创建桌面快捷方式
  • 企业网站策划文案亚马逊跨境电商运营
  • 网站建设网站源码青岛网站制作工具
  • 怎么设计网站可以做水果的团购网站
  • 郑州网站设计 郑州网站开发重庆造价协会官网
  • 建设网站大全企业网站管理系统教程
  • 合肥如何做百度的网站宁波seo公司网站推广
  • 室内设计装修网站网站建设企业服务
  • 网站用什么系统好省建设厅官方网站
  • 建设厅网站生成案卷生成不了wordpress logo img
  • 做英文网站需要多少网站策划书籍推荐
  • 桐梓县工程建设交易网站做简历的网站
  • 怎样在织梦后台里面做网站地图seo是哪个国家
  • 江苏住房和城乡建设厅官方网站6如何创建网页模板
  • 访问的网页正在升级中网站结构优化包括什么
  • 创建一个网站所需的成本快速做网站用什么软件
  • 网站建站哪个好设计制作生态缸
  • 电子商务网站建设工资具有口碑的柳州网站建设公司
  • 我的网站百度怎么搜索不到了iis怎么搭建设计网站
  • 青岛联通网站备案wordpress增加用户
  • 企业网站建设外包做app网站制作
  • 做网站logo的网站商城网站建设公司地址