序列化

二 模块 logging json pickle re

╄→гoц情女王★ 提交于 2020-02-04 04:42:10
1 logging 日志模块 1.1 函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') 默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。 灵活配置日志级别,日志格式,输出位置: import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='/tmp/test.log', filemode='w') logging

logging ,re 模块

别等时光非礼了梦想. 提交于 2020-02-04 04:32:37
一,复习 # random: random() randint() choice() sample() # 序列化:对象需要持久化存储或传送 对象 => 字符串 # json: 用于传输 # -- 1.支持{} [] int float bool str null # -- 2.是{}与[]的嵌套组合,最外层只能有一个根:要么所有数据由{}起始包裹,要么由[]起始包裹,就是单一1支持的类型数据 # -- 3.字符串必须由""包裹 # pickle: 用于存储,支持所有数据类型,采用二进制进行操作 # 序列化:dump dumps # 反序列化:load loads # shelve: 采用字典形式进行序列化与反序列化 shv_dic = shelve.open('序列化文件') # 序列化 shv_dic[key] = value # 反序列化 shv_dic[key] # open('序列化文件', writeback=True) 可以是序列化的值为可变类型,更新其值,能实时同步到文件 # shutil:操作文件与文件夹的模块 # 加密:碰撞解密 # hashlib:lock_obj = hashlib.md5('创建对象时的数据可有可无') # hmac: lock_obj = hmac.new('必须提前给数据') # 更新加密的数据:lock_obj.update(

java学习笔记之IO编程—对象序列化

南楼画角 提交于 2020-02-04 00:51:19
对象序列化就是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或网络传输。 并不是所有的对象都可以被序列化,如果要序列化的对象,那么对象所在的类一定要实现java.io.Serializable父接口,作为序列化的标记,这个接口没有任何方法,描述的是一种类的能力。 java中提供了ObjectOutputStream(序列化) ObjectInputStream(反序列化)两个类 ObjectOutputStream的定义: public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants 构造方法: public ObjectOutputStream​(OutputStream out) throws IOException 主要方法: public final void writeObject​(Object obj) throws IOException ObjectInputStream的定义: public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants 构造方法: public

EJB到底是什么,真的那么神秘吗??

拥有回忆 提交于 2020-02-03 23:12:05
EJB到底是什么,真的那么神秘吗?? 分类: JAVA学习-基础篇 2010-08-02 21:26 37965人阅读 评论 (127) 收藏 举报 ejb 服务器 数据库服务器 网络 分布式计算 数据库 1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务 集群"和"企业级开发"吧! 这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉 广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运 算"指得是"负载均衡"提高系统的运行效率。然而,估计很多人都搞错了,这个"服务群集" 和"分布式运算"并没有根本解决运行负载的问题,尤其是针对数据库的应用系统。 为什么? 我们先把EJB 打回原形给大家来慢慢分析。 2. 把EJB 掰开了揉碎了 我们把EJB 的概念好好的分析一下,看看能发现些什么蛛丝马迹。 3.1 EJB 概念的剖析 我们先看一下,EJB 的官方解释: 商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计 算机语言将他们实现。 …… J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组 件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实

Proto3:编码

最后都变了- 提交于 2020-02-03 18:43:25
本文介绍protocol buffer消息二进制传输格式。在应用程序中使用protocol buffer时,你并不需要了解这些,但它对你了解protocol buffer格式如何影响你的编码消息的大小很有用。 简单消息 我们从一个非常简单的消息定义开始: message Test1 { int32 a = 1; } 在程序中,你可以创建一个 Test1 ,然后设置 a 为150。之后你讲消息序列化到一个输出流。如果你想检查编码的消息,你会看到三个字节: 08 96 01 那么,这些数字代表什么呢?接着往下看。 Base 128 Varints 要了解简单的protocol buffer编码。首先你要了解 varints 。Varints是使用一个或多个字节序列化整数的一种方法。数字越小,占用的字节越少。 Varint中除最后一个字节外的的每个字节,都设置了 最高有效位(most significant bit, msb) -- 这表明还有更多的字节要处理。每个字节的低7位用来存储以7位为一组的数字的补码表示形式, 最不重要的一组优先 。 例如,数字1 -- 单个字节,所以msb未设置: 0000 00001 数字300,更复杂的一个bit: 1010 1100 0000 0010 你如何知道它是300呢?首先,从每个字节中删除msb,因为它只是用来告诉我们是否已经到达数字的末尾

高性能Java序列化框架Fse发布

倖福魔咒の 提交于 2020-02-03 18:01:23
高性能Java序列化框架Fse发布 文章目录 高性能Java序列化框架Fse发布 使用场景 使用说明 开源地址 使用场景 将Java对象序列化为二进制数据进行保存,以及二进制数据反向序列化为Java对象,在很多场景中都有应用。比如将对象序列化后离线存储至其他介质,或者存储于Redis这样的缓存之中。 目前常见的有几种框架可以支撑,比如 Hession ,Kryo,Protobuf,JDK原生等。有一些框架需要提前编写元数据配置文件以支撑跨语言序列化能力,比如 Protobuf 。不过如果团队的技术栈是统一的 Java 体系的话,则能够开箱即用的序列化框架使用起来会更加方便一些,特别有些时候对象特别复杂,编写元数据配置文件也是很繁琐的一个事情。 Fse 框架正是应用于这样的场景,不需要编写元数据配置信息,开箱即用的 Java 序列化框架,对需要序列化的对象没有任何特殊要求。在性能基准测试中,该框架的性能表现显著优于其他框架,下面是测试对比 欢迎加入技术交流群186233599讨论交流,也欢迎关注笔者公众号:风火说。 使用说明 首先在Pom文件中引入依赖,如下 < dependency > < groupId > com.jfireframework </ groupId > < artifactId > fse </ artifactId > < version > aegean-1

transient关键字

隐身守侯 提交于 2020-02-03 04:10:13
transient 关键字用于 Serializable 接口下, 被 transient 关键字修饰的变量不能序列化, 静态变量无论用不用transient 修饰都不能被序列化 来源: CSDN 作者: 小矮多 链接: https://blog.csdn.net/nefss_/article/details/104143449

spring boot框架与Redis整合Unexpected character ('¬' (code 172)): expected a valid value

我们两清 提交于 2020-01-31 22:20:23
一般修改cachemanager之后会出现这个问题,只要删除redis保存的数据即可。 使用redisTemplate默认的序列化规则,改变默认的序列化规则(配置后所有的类保存到redis都会使用json格式,这也是2.0以后的新特性); @Bean public RedisCacheManager MyRedisCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofDays(1)) // 设置缓存过期时间为一天 .disableCachingNullValues() // 禁用缓存空值,不缓存null校验 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); // 设置CacheManager的值序列化方式为json序列化,可加入@Class属性 return RedisCacheManager

Java 之 序列化接口

好久不见. 提交于 2020-01-31 11:27:25
一、java.io.Serializable 接口   类通过实现 java.io.Serializable 接口以启用其序列化功能,未实现此接口的类型将无法使其任何状态序列化或反序列化。    可序列化类的所有子类型本身都是可序列化的。   序列化接口没有方法或字段,仅用于标识可序列化的语义。   如果实现 Serializable 接口,对象如何序列化,各个属性序列化的顺序是什么,都是默认的,程序员本身无法指定,也不用关心。    如果属性前面有 static 和 transient 修饰,该属性不参与序列化。 二、java.io.Externalizable 接口   若某个要完全控制某一对象及其超类型的流格式和内容,则它要实现 Externalizable 接口中的 writeExternal 和 readExternal 方法。   程序员要在 writerExternal 方法中,自己定制哪些属性要序列化,顺序是什么样的。   程序员要在 readExternal 方法中,自己定制哪些属性要反序列化,顺序与 writerExternal 方法中的一致。   Demo:JavaBean 类 1 import java.io.Externalizable; 2 import java.io.IOException; 3 import java.io.ObjectInput;

一.什么是protobuf

南楼画角 提交于 2020-01-31 07:56:34
Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 (翻译自protobuf3官网) 来源: https://www.cnblogs.com/kexianting/p/11507435.html