序列化

Java基础常见面试题最后十题

两盒软妹~` 提交于 2020-02-24 20:15:48
1.为什么等待(wait())和通知(notify())是在 Object 类而不是 Thread 中声明的? 生产者-消费者问题代码实现 ①.生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。 ②.解决办法:要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。同样,也可以让消费者在缓冲区空时进入休眠,等到生产者往缓冲区添加数据之后,再唤醒消费者。通常采用进程间通信的方法解决该问题,常用的方法有信号灯法等。如果解决方法不够完善,则容易出现死锁的情况。出现死锁时,两个线程都会陷入休眠,等待对方唤醒自己。该问题也能被推广到多个生产者和消费者的情形。 void notify() 唤醒在此对象监视器上等待的单个线程 void notifyAll()

drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族、自动补全图片链接

混江龙づ霸主 提交于 2020-02-24 09:40:35
目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 序列化类其他配置(了解) 十大接口 BaseSerializer初始化方法 十大接口序列化总结 单查群查 单增群增 单删群删 单整体改/群整体改 单局部改/群局部改 群增群改配置 十大接口小结 字段提供就校验,不提供拉到 DjangoORM内置优化机制:一次最多查21条数据 models.py response.py serializers.py urls.py 视图家族 视图基类 APIView、GenericAPIView 基于GenericAPIView的十大接口 视图工具类:mixins包 工具视图类 generics工具包:继承指定类 工具 基于generics包下工具视图类的六大基础接口 视图集(开发常用,最高级) 路由组件(繁琐,可以自定义映射关系) 路由组件(简化) 视图组件 views.py 重写删除方法:destroy 群删接口 视图级使用总结 自定义路由组件(了解) 上传文件接口 图片自动补全后台图片链接 自定义只读 自定义只读:Model类中 @property def 字段(self): return "字段值" models.py class Book(BaseModel): name = models

Mybatis 02.java类的结构

只谈情不闲聊 提交于 2020-02-24 04:13:09
Mybatis把一张表当做了一个类, 类的属性是和数据库中的字段名一模一样,连大小写都是一样的 。 其次, 这个类还需要实现序列化接口 (为什么要实现序列化,进程与进程之间需要通信的话,就要用到通过二进制的数据格式放到网络上,来实现交流,序列化是把对象转化成二进制的数据,来传递信息)。 最后,是 java类 ,为实现访问的数据安全性, 属性设置为prviate,封装,用public方法来访问数据 。 重写tostring() ,这个方法是返回 这个类的全限定名+@+类的实例化对象的哈希码,说明 这个类实例化对象的信息。也可以用来返回当前的对象的属性值 ,例如: 来源: CSDN 作者: qq_38757863 链接: https://blog.csdn.net/qq_38757863/article/details/104458625

IO流简要总结

删除回忆录丶 提交于 2020-02-23 11:48:34
IO流小总结 IO流的本质就是用于数据的传输,根据流的方向的不同,有输入流、输出流。根据数据类型的不同,又有字节流、字符流。 字节流 字节输入流 InputStream 字节输出流 OutputStream 字节流:主要用来处理字节或二进制对象。例如:视频、音频、图片等。 字符流:主要用来处理字符、字符数组或者字符串文件。例如html、css、txt等 字节流又称万能流,能处理任何文件,但是在处理字符方面不太擅长,于是就有了字符流。 常用的基本方法 void close() 关闭此输出流并且释放所有与此流有关的系统资源 void flush() 刷新此输出流并强制写出所有缓冲的输出字节 void write(byte[] b,int off,int len) 将指定的byte数组中的指定区域写入此输出流 int read(byte [] b) 一次读取一个字节数组并返回一个读取的长度 int read(byte [] b , int off ,int len) 读取一个字节数组的指定区域并返回读取个数 文件的复制,其实质上就是利用流对文件的输入、输出。 利用流的不同,可以有多中复制文件的方式,但是字符流,不能操作图片视频类的文件,否则会导致相应的文件,结构混乱,无法使用。 缓冲流 IO缓冲流比较基本的IO流,更有效率。普通的IO流,每次写入一个字节,就要读取一个字节,效率十分缓慢

redis存取对象

那年仲夏 提交于 2020-02-23 05:56:02
redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis不能直接存取对象,如何解决呢? 两种方式 1、利用序列化和反序列化的方式 两层对象存取到redis 示例: 序列化工具类 public class SerializeUtil { public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { //序列化 baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { } return null; } public static Object unserialize(byte[] bytes) { ByteArrayInputStream bais = null; try { //反序列化 bais = new ByteArrayInputStream(bytes);

unity遇到的坑----背包篇---强化装备影响其他装备属性

[亡魂溺海] 提交于 2020-02-23 01:36:13
学习完基础的背包系统,发现一个问题。背包里强化装备或者升级装备时,同名装备的属性也会发生变动。 这个问题一度让我十分苦恼,网上也找不到原因。 后来发现初始化背包时,实例化的同名物品指向的地址相同,也就是说所有同名装备都是一个物体,对任意一个装备进行操作都会改变这个装备的同名装备。 解决办法: 序列化克隆每一个装备对象,使他们指向不同地址。 步骤: 第一,在装备类前加上[System.Serializable],使其可序列化 [System.Serializable] //表示该类可以序列化的意思 public class Iventory() { } 第二,装备类对象序列化 //必要的引用 using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class Main() { private arraylist<iventory> list = new arraylist<iventory>(); private Iventory item = new Iventory(); void xuliehua() { /*序列化前:id = 1001 item和it是引用类型,地址相同,改变item,it也会跟着改变*/ item = list[1]; Iventory it = list

IO流(四) --- 特殊操作流

送分小仙女□ 提交于 2020-02-23 01:09:13
IO流中特殊操作流 概述: IO流中的特殊操作流,顾名思义就是有其特殊的作用; 标准输入输出流 概述: 标准输入输出流它们的作用是用于从键盘录入和打印输出;即我们通常使用的 Scanner类 和 System.out.println() ,那我们为什么要去学习它呢?只是为了了解Scanner和输出语句的底层结构; 引入: System类中有两个静态成员变量: public static final InputStream in; : 标准输入流。通常用于键盘录入; public static final PrintStream out; :标准输出流。通常用于打印输出; 标准输入流(InputStream) 概述: 其与Scanner类似,都是用来接收用户的输入; 代码示例一: public class Demo01 { public static void main ( String [ ] args ) throws IOException { // 创建输入流 InputStream in = System . in ; // 具体操作 int len ; while ( ( len = in . read ( ) ) != - 1 ) { System . out . print ( ( char ) len ) ; } } } // 注意:这种方式,该流是关闭不了的

缓冲流、转换流、序列化流

六眼飞鱼酱① 提交于 2020-02-23 01:08:34
主要内容 转换流 缓冲流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能够使用缓冲流的特殊功能 能够阐述编码表的意义 能够使用转换流读取指定编码的文本文件 能够使用转换流写入指定编码的文本文件 能够说出打印流的特点 能够使用序列化流写出对象到文件 能够使用反序列化流读取文件到程序中 第一章 缓冲流 昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样, 相当于是对基本流对象的一种增强 。 1.1 概述 缓冲流是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , BufferedOutputStream 字符缓冲流: BufferedReader , BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写, 减少系统IO次数 ,从而提高读写的效率。 1.2 字节缓冲流 构造方法 public BufferedInputStream ( InputStream in )

DRF之子序列化、model类(四)

会有一股神秘感。 提交于 2020-02-23 00:49:51
一、二次封装Resonse responses.py from rest_framework.response import Response class APIResponse(Response): def __init__(self, status=None, msg=None, http_status=None, *args, **kwargs): data = { 'status': status, 'msg': msg, } if kwargs: data.update(kwargs) super().__init__(status=http_status,data=data) 二、数据库关系分析 ''' 1.相互有关系的两张表,增删改操作会相互影响,导致效率低下,查询操作就是正常的连表操作 2.相互有关的两张表,断开外键关系,但从代码逻辑层面保持原来的联系 - 这样一来,每个表都可以单独操作,提高了增删改查的效率,在开发中要避免由此带来的脏数据,事务 + 代码层面的逻辑约束 - 由于数据没有发生变化,查询的连表操作不会受到影响 3. django的orm支持断关联操作关系表,且所有的操作方式和没有断开关联的操作是一致的(在django2.0以上默认不进行级联更新) ''' 三、orm操作关系 ''' 外键位置: 1.一对多的外键关系,FK毫无疑问建立在多的乙方

Flink的入门

◇◆丶佛笑我妖孽 提交于 2020-02-22 14:34:13
Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注。本文将深入分析Flink的一些关键技术与特性,希望能够帮助读者对Flink有更加深入的了解,对其他大数据系统开发者也能有所裨益。本文假设读者已对MapReduce、Spark及Storm等大数据处理框架有所了解,同时熟悉流处理与批处理的基本概念。 Flink简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务: DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。 DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。 Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。 此外,Flink还针对特定的应用领域提供了领域库,例如: Flink ML,Flink的机器学习库