💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 一、编解码技术,java序列化技术 第一进行网络传输 第二对象持久化 # 二、主流的编解码框架 JBoss的Marshalling包 goole的Protobuf 基于Protobuf的Kyro MessagePack框架 # 三、 在使用client和service分别部署的是否需要注意的问题 序列化的是否需要注意包名和类名必须一致 # 四、Mashshalling使用 public final class MarshallingCodeCFactory { /** * 创建Jboss Marshalling解码器MarshallingDecoder * @return MarshallingDecoder */ public static MarshallingDecoder buildMarshallingDecoder() { //首先通过Marshalling工具类的精通方法获取Marshalling实例对象 参数serial标识创建的是java序列化工厂对象。 final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial"); //创建了MarshallingConfiguration对象,配置了版本号为5 final MarshallingConfiguration configuration = new MarshallingConfiguration(); configuration.setVersion(5); //根据marshallerFactory和configuration创建provider UnmarshallerProvider provider = new DefaultUnmarshallerProvider(marshallerFactory, configuration); //构建Netty的MarshallingDecoder对象,俩个参数分别为provider和单个消息序列化后的最大长度 MarshallingDecoder decoder = new MarshallingDecoder(provider, 1024 * 1024 * 1); return decoder; } /** * 创建Jboss Marshalling编码器MarshallingEncoder * @return MarshallingEncoder */ public static MarshallingEncoder buildMarshallingEncoder() { final MarshallerFactory marshallerFactory = Marshalling.getProvidedMarshallerFactory("serial"); final MarshallingConfiguration configuration = new MarshallingConfiguration(); configuration.setVersion(5); MarshallerProvider provider = new DefaultMarshallerProvider(marshallerFactory, configuration); //构建Netty的MarshallingEncoder对象,MarshallingEncoder用于实现序列化接口的POJO对象序列化为二进制数组 MarshallingEncoder encoder = new MarshallingEncoder(provider); return encoder; } } ## 五、压缩与解压缩 public static byte[] gzip(byte[] data) throws Exception{ ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.write(data); gzip.finish(); gzip.close(); byte[] ret = bos.toByteArray(); bos.close(); return ret; } public static byte[] ungzip(byte[] data) throws Exception{ ByteArrayInputStream bis = new ByteArrayInputStream(data); GZIPInputStream gzip = new GZIPInputStream(bis); byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while((num = gzip.read(buf, 0 , buf.length)) != -1 ){ bos.write(buf, 0, num); } gzip.close(); bis.close(); byte[] ret = bos.toByteArray(); bos.flush(); bos.close(); return ret; } # 六、Netty文件传输 1.压缩文件放入到字节封装好的序列发类中 2.然后通过类进行传输给服务器。 3.服务器解析然后获取到对象,然后解压图片 # 七、java使用过程中获取系统的一些信息 System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 System.out.println("Java提供商名称:" + System.getProperty("java.vendor")); // Java提供商名称 System.out.println("Java提供商网站:" + System.getProperty("java.vendor.url")); // Java提供商网站 System.out.println("jre目录:" + System.getProperty("java.home")); // Java,哦,应该是jre目录 System.out.println("Java虚拟机规范版本号:" + System.getProperty("java.vm.specification.version")); // Java虚 拟机规范版本号 System.out.println("Java虚拟机规范提供商:" + System.getProperty("java.vm.specification.vendor")); // Java虚 拟机规范提供商 System.out.println("Java虚拟机规范名称:" + System.getProperty("java.vm.specification.name")); // Java虚拟机 规范名称 System.out.println("Java虚拟机版本号:" + System.getProperty("java.vm.version")); // Java虚拟机版本号 System.out.println("Java虚拟机提供商:" + System.getProperty("java.vm.vendor")); // Java虚拟机提供商 System.out.println("Java虚拟机名称:" + System.getProperty("java.vm.name")); // Java虚拟机名称 System.out.println("Java规范版本号:" + System.getProperty("java.specification.version")); // Java规范版本号 System.out.println("Java规范提供商:" + System.getProperty("java.specification.vendor")); // Java规范提供商 System.out.println("Java规范名称:" + System.getProperty("java.specification.name")); // Java规范名称 System.out.println("Java类版本号:" + System.getProperty("java.class.version")); // Java类版本号 System.out.println("Java类路径:" + System.getProperty("java.class.path")); // Java类路径 System.out.println("Java lib路径:" + System.getProperty("java.library.path")); // Java lib路径 System.out.println("Java输入输出临时路径:" + System.getProperty("java.io.tmpdir")); // Java输入输出临时路径 System.out.println("Java编译器:" + System.getProperty("java.compiler")); // Java编译器 System.out.println("Java执行路径:" + System.getProperty("java.ext.dirs")); // Java执行路径 System.out.println("操作系统名称:" + System.getProperty("os.name")); // 操作系统名称 System.out.println("操作系统的架构:" + System.getProperty("os.arch")); // 操作系统的架构 System.out.println("操作系统版本号:" + System.getProperty("os.version")); // 操作系统版本号 System.out.println("文件分隔符:" + System.getProperty("file.separator")); // 文件分隔符 System.out.println("路径分隔符:" + System.getProperty("path.separator")); // 路径分隔符 System.out.println("直线分隔符:" + System.getProperty("line.separator")); // 直线分隔符 System.out.println("操作系统用户名:" + System.getProperty("user.name")); // 用户名 System.out.println("操作系统用户的主目录:" + System.getProperty("user.home")); // 用户的主目录 System.out.println("当前程序所在目录:" + System.getProperty("user.dir")); // 当前程序所在目录