Java 序列化和反序列化

什么是序列化和反序列化?

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。

简单来说:

  • 序列化:将数据结构或对象转换成二进制字节流的过程
  • 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程

对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。

阅读更多

Java代理模式

1. 代理模式

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。

代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。

举个例子:你找了小红来帮你问话,小红就可以看作是代理你的代理对象,代理的行为(方法)是问话。

Understanding the Proxy Design Pattern | by Mithun Sasidharan | Medium

阅读更多

MySQL通过yum源安装最新版本教程

介绍

截至目前,MYSQL最新的版本为4月23号官方发布的8.0.20版本,本文主要讲解CentOS 8 如何通过yum源安装 最新mysql-community-server-8.0.20版本。

安装官方yum源

官方仓库下载yum源安装包

进入MySQL官方仓库^1, 在首页,最近的新版本仓库源安装包都会在这里,如果你对自己的系统了解,你可以直接找到自己Linux平台对应的官方源安装包直接安装。MySQL官方分别管理了yum源和apt源,进入里面,你就可以看到各个MySQL版本的安装包了。我的Linux为CentOS 8.1, arch为 x86_64,进到对应目录 https://repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64/,在这里,看到各种MySQL相关的安装包,其中的mysql80-community-release字样的就是官方yum源的安装包,在首页也能找到,因为是CentOS8系统,直接首页浏览器搜索el8字样,就能看到一样的yum源安装包,最新的是mysql80。

阅读更多

ZooKeeper 概述

一、什么是ZooKeeper

从上面我们也可以发现,好像哪都有ZooKeeper的身影,那什么是ZooKeeper呢?我们先去官网看看介绍:

官网对ZooKeeper的介绍

官网还有另一段话:

ZooKeeper: A Distributed Coordination Service for Distributed Applications

阅读更多

Hibernate 与 Spring 整合

前言

前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合

Spring和Hibernate整合的关键点:

  • SessionFactory对象交给Spring来创建
  • Hibernate的事务交给Spring进行管理

Spring和Hibernate整合步骤

引入jar包

阅读更多

Hibernate 缓存

对象状态

Hibernate中对象的状态:

  • 临时/瞬时状态
  • 持久化状态
  • 游离状态

学习Hibernate的对象状态是为了更清晰地知道Hibernate的设计思想,以及是一级缓存的基础…当然啦,也就一点点知识

临时/瞬时状态

当我们直接new出来的对象就是临时/瞬时状态的..

阅读更多

Hibernate HQL查询, 连接池与逆向工程

前言

在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式….到目前为止,我们都是使用一些简单的主键查询阿…使用HQL查询所有的数据….本博文主要讲解Hibernate的查询操作,连接池,逆向工程的知识点

get/load主键查询

由于主键查询这个方法用得比较多,于是Hibernate专门为我们封装了起来…

阅读更多

Hibernate 映射

前言

前面的我们使用的是一个表的操作,但我们实际的开发中不可能只使用一个表的…因此,本博文主要讲解关联映射

集合映射

需求分析:当用户购买商品,用户可能有多个地址。

数据库表

我们一般如下图一样设计数据库表,一般我们不会在User表设计多个列来保存地址的。因为每个用户的地址个数都不一的,会造成数据冗余

阅读更多

Hibernate inverse 与 cascade

Inverse属性

Inverse属性:表示控制权是否转移..

  • true:控制权已转移【当前一方没有控制权】
  • false:控制权没有转移【当前一方有控制权】

Inverse属性,是在维护关联关系的时候起作用的。只能在“一”的一方中使用该属性!Inverse属性的默认值为fasle,也就是当前一方是有控制权的

阅读更多