序列化

java序列化的作用

谁都会走 提交于 2020-03-16 08:49:17
序列化是什么: 序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例 序列化的什么特点: 如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。 什么时候使用序列化: 一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。 二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。 ======================= 可以看看接口java.io.serializable的中文解释: Serializable public interface Serializable 类通过实现 java.io

序列化与反序列化

十年热恋 提交于 2020-03-16 08:18:17
序列化:将对象写入文件,对象要继承serializable实现接口 private static void xulihua() { Student st = new Student(); st.setId(1000); st.setName("测试"); st.setSex("男"); st.setHp(100); ObjectOutputStream oos = null; try { OutputStream os = new FileOutputStream("f:\\stu.dat"); oos = new ObjectOutputStream(os); st.setHp(50); System.out.println(".....保存游戏进度......"); System.out.println("被弄死了......"); System.out.println("Game over....."); oos.writeObject(st); oos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (oos != null) { try { oos.close();

解决 Jackson反序列化 Unexpected token ... , expected VALUE_STRING: need JSON String that contains type id (for subtype of ...)

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-15 04:05:52
首先检查是否是 objectMapper.enableDefaultTyping(); 的受害者。优先考虑删除该配置。 使用Jackson把数组的json字符串反序列化为List时候报了个JsonMappingException。 java.lang.UnsupportedOperationException: com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.util.List) at [Source: [ ...... 找到问题代码,粗看似乎没什么问题? List<MyObject> objectList = objectMapper.readValue(jsonString, new TypeReference<List<MyObject>>() {}); //jsonString是个json对象的数组 注意到异常信息“need JSON String that contains type id (for subtype of java.util.List)”。想了一会儿,好吧,有答案了。

输入和输出(IO流)

荒凉一梦 提交于 2020-03-14 21:57:31
File类的常用方法: File对象的创建和部分方法使用: File file =new File("file\\我是文本.txt"); System.out.println("相对路径是:"+file.getPath()); //绝对路径 System.out.println("绝对路径是:"+file.getAbsoluteFile()); System.out.println("文件名字是:"+file.getName()); System.out.println("文件字符的长度:"+file.length()); //判断是否是文件,是返回true System.out.println(file.isFile()); File file2=new File("D:/自动创建.txt"); //创建文件时 如果文件不存在则创建文件并返回true,如果文件存在则不再创建并返回false。 boolean createNewFile = file2.createNewFile(); System.out.println(createNewFile); 输出结果: 注: 文件的绝对路径是由程序根据程序当前路径和文本相对路径拼接而成的(可见方法不够智能,需要注意) 流: ① 流是一组有序的数据序列 ② 以先进先出方式发送信息的通道 字节流是 8 位通用字节流,字符流是 16 位

模块简介:(random)(xml,json,pickle,shelve)(time,datetime)(os,sys)(shutil)(pyYamal,configparser)(hashlib)

北城以北 提交于 2020-03-14 09:42:54
Random模块: #!/usr/bin/env python #_*_encoding: utf-8_*_ import random print (random.random()) #0.6445010863311293 #random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 print (random.randint(1,7)) #4 #random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。 # 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b print (random.randrange(1,10)) #5 #random.randrange的函数原型为:random.randrange([start], stop[, step]), # 从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2), # 结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。 # random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。 print(random.choice('liukuni')

Django 缓存、序列化、信号

人盡茶涼 提交于 2020-03-14 06:12:23
一、缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回。 Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) 配置 开发调试 # 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎 'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) 'OPTIONS':{ 'MAX_ENTRIES': 300, # 最大缓存个数(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) }, 'KEY_PREFIX': '', # 缓存key的前缀(默认空) 'VERSION': 1, # 缓存key的版本

JSON序列化器/解析器

时光总嘲笑我的痴心妄想 提交于 2020-03-14 03:24:08
  在JSON库中有一个全局的JSON对象, 包括两2个方法:序列化器即parse() 和 解析器stringify()   下面就介绍一个这两个方法的使用:   1.parse()用于将JSON字符串解析为对象或数组 var jsonText = '{"userName":"zhangsan","password":"123456"}' ;//注: 每个属性名和值都要用双引号, 单引号写在外面, 否则会出现异常. var changeJson = JSON.parse(jsonText); console.log(changeJson);//结果为一个对象, Object {userName: "zhangsan", password: "123456"} 2.stringify()用于将一个对象或数组解析为包含序列化的JSON的文本字符串   var arr = [ 'c', 'b', {test : 'c'}];   var arrchange = JSON.stringify(arr);   console.log(arrchange);//结果为JSON格式的字符串, ["a","b",{"test":"c"}] 来源: https://www.cnblogs.com/hhsy/p/5641788.html

Django序列化

吃可爱长大的小学妹 提交于 2020-03-13 20:53:13
序列化 关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。 1、serializers from django.core import serializers ret = models.BookType.objects.all() data = serializers.serialize("json", ret) 2、json.dumps import json #ret = models.BookType.objects.all().values('caption') ret = models.BookType.objects.all().values_list('caption') ret=list(ret) result = json.dumps(ret) 由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如: import json from datetime import date from datetime import datetime class JsonCustomEncoder(json.JSONEncoder): def default(self, field): if isinstance(field, datetime): return o

序列化

风格不统一 提交于 2020-03-12 14:44:23
1. <?php $arr = array("大理","昆明"); $json = json_encode($arr); ?> <script> var jsarr = <?php echo $json;?>; alert(jsarr[0]); </script> 2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>第一php网提供的教程--向JS传递PHP数组</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"/></script> <script language=javascript> function get_php_arr(arr){ alert(eval(arr))

Java序列化接口的作用总结1

坚强是说给别人听的谎言 提交于 2020-03-12 11:47:49
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了.(存储到硬盘是一个文件,不需要我们去解析,如果用记事本打开解析会出现乱码,解析要用特定的方式,不用我们管. 我们只需要读取). 把对象存储到硬盘上的一个文件中,这个文件的标准扩展名是(.object). 在很多框架中就会有这种.object结尾的文件,因为很多对象都不创建,创建起来太麻烦,直接读取,而且有些对象的值你不知道,框架封存在.object文件中,直接读取这个文件中的这个值就行了,不需要传这个值. 1 import java.io.Serializable; 2 /* 3 * Serializable:用于给被序列化的类加入ID号。 4 * 用于判断类和对象是否是同一个版本。 5 */ 6 public class Person implements Serializable/*标记接口*/ { 7 /** 8 * transient:非静态数据不想被序列化可以使用这个关键字修饰。 9 */ 10 private static final long serialVersionUID = 9527l; 11 // private transient String name; 12