深入理解:持久化、序列化,引用变量(超值知识点,通俗易懂)

本文主要是介绍深入理解:持久化、序列化,引用变量(超值知识点,通俗易懂),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.  持久化


       最早的时候听说持久化是JDBC,数据库的连接,老师说JDBC是一个持久层的框架。当时听的一知半解。

       现在我们一起去探讨吧! 

     个人总结,凡是编程语言:大方向只有两个:输入和输出,中间的什么库啊,框架啊等都是为其服务的。(如果错误,请大神指正!)

     拿下它 ! 一定要搞懂!这是基础!!还不会!!心慌!!

     不放过一个技术积累的机会!


①  什么是持久化 ?

      将程序数据从瞬时状态装换为永久状态的机制过程或者是说装换结果的状态。

      通俗的讲,就是将内存中的程序的数据永久保存在磁盘中,或者数据库中,云盘等等,能长久保存的存储结构。

②  怎么实现持久化 ?

      就目前了解程度来看:

  1.  JDBC技术,CP30等连接池技术,将数据保存在数据库中
  2.  IO技术,将程序的数据存储在数据IO流中

③  序列化、持久化

     1. 关于序列化的相关知识     

我们在写实体类的时候,往往会添加这一行代码:

public class S implements Serializable

     这段代码完成了类S的实现序列化,将其装换为字节流,然后在网络上传送。反序列化就是从字节流回复称对象。其实在我们进行远程通信的时候,我们传输图片和文件等等,传输的过程先将传输的文件以二进制流的形式在网络上传送。反序列化就是当接收方从网上流的形式接收,再恢复成整个文件的形式,就是反序列化。

     2. 序列化和持久化之间的关系

       序列化是为了解决对象之间进行传输的问题,传输的方式可以是线程之间,进程之间,内外存之间,主机之间的正常进行。持久化包含序列化,持久化将数据永久性的保存。序列化解决了数据对象之间的传输,持久化可以是数据库方案,文件方案,对象方案等等。


二. 引用变量,可以说用引用变量操作对象.

     当我们对一个对象操作时候,真正操作的是对对象的引用。


     先看一行代码:

String s;

     相信大家对这行代码肯定很熟悉,String s; s是String类型的一个引用,什么是引用,就是在作用域有效的情况下,s的数据类型就是String,String引用了s作为自己的变量类型。因为这样创建s没有和任何事物相连,因此一个安全的做法就是将其进行初始化。

Demo demo = new Demo();

    简单的解释平时创建的对象:new Demo():创建一个Demo对象,demo是Demo的引用变量,存放在栈内存,将对象引用指向新的对象,无参构造函数初始化对象。


分享技术心得,希望和大家共同进步!有想法的伙伴们可以私信和留言!

这篇关于深入理解:持久化、序列化,引用变量(超值知识点,通俗易懂)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/728163

相关文章

嵌入式软件工程师应聘知识点

嵌入式软件工程师应聘 修改浏览权限 | 删除 数据结构(C语言)部分常考的知识点: 1、局部变量能、全局变量和静态变量 2、堆和栈 3、Const、volatile、define、typedef的用途 4、链表(比如链表的插入、删除和排序) 5、排序(考查冒泡法的较多) 6、可重入函数 、malloc函数 7、指针(常考函数指针,函数指针,数组指针,指针数组和

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

如何理解redis是单线程的

写在文章开头 在面试时我们经常会问到这样一道题 你刚刚说redis是单线程的,那你能不能告诉我它是如何基于单个线程完成指令接收与连接接入的? 这时候我们经常会得到沉默,所以对于这道题,笔者会直接通过3.0.0源码分析的角度来剖析一下redis单线程的设计与实现。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载: 进入官网MySQLhttps://www.mysql.com/  找到download 滑动到最下方:有一个开源社区版的链接地址: 然后就下载完成了 安装: 双击: 一直next 一直next这一步: 一直next到这里: 等待加载完成: 一直下一步到这里

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var