数据持久化

Google10年Java技术栈

旧时模样 提交于 2020-02-12 04:27:43
java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。。。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5

Java 技术栈

荒凉一梦 提交于 2020-02-12 04:20:20
朋友圈看到的,转发一下。 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。。。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5 java内存模型以及垃圾回收算法 5.1 类加载机制,也就是双亲委派模型

持久化

∥☆過路亽.° 提交于 2020-02-11 18:35:55
一、对象持久化 1、扁平文件 (1)文本文件 2、pickle (1)序列化为字符串 pickle.dumps(obj):将对象序列为字符串 pickle.loads(obj):从字符串反序列化对象 例如: import pickle person = {‘name’:‘Tom’,‘age’:20} s = pickle.dumps(person) #将person序列化变成一个字符串 print(s) p =pickle.loads(s) #通过字符串载入对象s print§ (2)序列化对象到文件 pickle.dump(obj,file) pickle.load(file) 例如: import pickle person = {‘name’:‘Tom’,‘age’:20} pickle.dump(person,open(‘pickle_db’,‘wb’)) #将person以二进制的方式写入pickle_db文件里面 p = pickle.load(open(‘pickle_db’,‘rb’)) #以二进制读取pickle_db文件还原序列化对象 print§ 3、shelve (1)创建 shelve.open(‘dbfile’) (2)赋值 db[‘key’] = obj (3)检查长度 len(db) (4)数据的删除 del db[‘key’] 应用一:

Redis的持久化、事务、事件

风流意气都作罢 提交于 2020-02-11 06:33:10
一、持久化 Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。 RDB持久化 将某个时间点的所有数据都存放到硬盘上。 可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。 如果系统发生故障,将会丢失最后一次创建快照之后的数据。 如果数据量很大,保存快照的时间会很长。 AOF持久化 将写命令添加到 AOF 文件(Append Only File)的末尾。 使用 AOF 持久化需要设置同步选项,从而确保写命令同步到磁盘文件上的时机。这是因为对文件进行写入并不会马上将内容同步到磁盘上,而是先存储到缓冲区,然后由操作系统决定什么时候同步到磁盘。有以下同步选项: 选项 同步频率 always 每个写命令都同步 everysec 每秒同步一次 no 让操作系统来决定何时同步 always 选项会严重减低服务器的性能; everysec 选项比较合适,可以保证系统崩溃时只会丢失一秒左右的数据,并且 Redis 每秒执行一次同步对服务器性能几乎没有任何影响; no 选项并不能给服务器性能带来多大的提升,而且也会增加系统崩溃时数据丢失的数量。 随着服务器写请求的增多,AOF 文件会越来越大。Redis 提供了一种将 AOF 重写的特性,能够去除 AOF 文件中的冗余写命令。 二、事务 一个事务包含了多个命令,服务器在执行事务期间

ProxySQL 基础篇

左心房为你撑大大i 提交于 2020-02-10 16:09:03
1、ProxySQL 介绍 ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层, 可以实现 读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 介绍:相关 ProxySQL 的网站 https://www.proxysql.com/ https://github.com/sysown/proxysql/wiki    2、环境准备 全新初始化的实例 IP server-id 数据库版本 备注 10.0.0.160 1603306 MySQL 8.0.18 Master(主库)+ ProxySQL2.0.8 10.0.0.161 1613306 MySQL 8.0.18 Slave1(从库) 10.0.0.162 1623306 MySQL 8.0.18 Slave2(从库) ProxySQL 2.0.x 版本支持 MGR 注: 我的 ProxySQL 和 主库放在一起的,我已近配置好了主从复制状态 。这是我的实验环境,实际环境注意实际情况。一般的代理环境结构如上图。 slave 节点的read_only=1 3、ProxySQL 安装与启动 下载 wget https://github.com/sysown/proxysql

NHibernate文档翻译 第4章 O/R Mapping基础

帅比萌擦擦* 提交于 2020-02-10 06:17:14
第 4 章 O/R Mapping基础 目录 映射声明(Mapping declaration) Schema hibernate-mapping class id 联合ID(composite-id) 识别器(discriminator) 版本(version)(可选) 时间戳(timestamp )(可选) property 多对一(many-to-one) 一对一(one-to-one) 组件(component) 子类(subclass) 连接的子类(joined-subclass) map, set, list, bag 引用(import) NHibernate的类型 实体(Entities)和值(values) 基本值类型 自定义值类型 映射到"任意"(any)类型 SQL中引号包围的标识符 映射文件的模块化(Modular mapping files) 映射声明(Mapping declaration) 对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的,并且可以手工修改。映射语言是以.NET为中心的,意味着映射是按照持久化类的定义来创建的,而非表的定义。 请注意,虽然很多Hibernate用户选择手工定义XML映射文档,也有一些工具来生成映射文档,包括XDoclet,Middlegen和AndroMDA.

[NHibernate]持久化类(Persistent Classes)

只谈情不闲聊 提交于 2020-02-10 06:17:03
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) 引言 对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的,并且拒绝恶意手工修改。映射语言以.NET为中心的,意味着映射是持久化类的定义来创建的,而非表的定义。 请注意,虽然很多Hibernate用户选择手工定义XML映射文档,也有一些工具来生成映射文档,包括XDoclet,Middlegn和AndroMDA(这里是Nhibernate文档中移除没有从Hibernate文档中转换过来的部分),NHibernate中并没有像XDoclet,Middlegn和AndroMDA这样的工具,在运用中,一般使用代码生成器来生成XML配置文档。 一个映射的例子 1 <?xml version="1.0" ?> 2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" 3 namespace="Eg" assembly="Eg"> 4 <class name="Cat" table="CATS" discriminator-value="C"> 5 <id name="Id" column="uid" type=

Hibernate 配置文件与映射文件 总结

▼魔方 西西 提交于 2020-02-10 06:16:21
hibernate 是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架。 一、Hibernate配置文件详解 Hibernate配置文件有两种形式:XML与properties 个人建议使用XML,因为properties中不能配置关联的映射文件,在后续的实现中会带来一些没必要的编码; XML(hibernate.cfg.xml)文件详解: <? xml version= "1.0" encoding= "GBK" ?> <!-- 指定Hibernate配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd" > <!-- hibernate- configuration是连接配置文件的根元素 --> < hibernate-configuration > < session-factory > <!-- 指定连接数据库所用的驱动 --> < property name= "connection.driver_class" >com.mysql.jdbc

RedisⅣ

那年仲夏 提交于 2020-02-09 18:16:43
Redis持久化 redis的高性能是由于它所有的数据都存储在了内存中,为了使redis在重启后仍然能保证数据不丢失,就需要将数据从内存当中同步到硬盘中,这个过程,称之为持久化 两种持久化方式: RDB方式 在指定的时间间隔内将内存中的数据集快照写入到磁盘,默认支持 AOF方式 以日志的形式记录服务器所处理的每一个操作,在redis服务启动之初,它会读取该文件,然后重新去构建我们的数据库,保证启动后的数据是完整的 持久化使用的方式: rdb持久化 aof持久化 不持久化 ,通过配置禁用redis服务器的持久化功能,不持久化的话,redis就仅仅是一个缓存的机制了 同时使用rdb和aof 两种持久化方式:rdb、aof可以单独使用、也可以结合起来使用 来源: CSDN 作者: Oayia 链接: https://blog.csdn.net/qq_36985354/article/details/104221039

Redis持久化

柔情痞子 提交于 2020-02-09 13:07:59
redis提供两种不同的持久化方法来将数据存储到硬盘里面 1)一种方法叫快照,它可以将存储在于某一时刻的所有数据都写入到硬盘里面 根据配置,快照将被写入dbfilename选项指定的文件里面,并存储在dir选项指定的路径上面,如果在新的快照文件创建完毕之前,redis、系统或者硬件这三者之中的任意一个崩溃了,那么redis将丢失最近一次创建快照之后写入的所有数据。 创建快照逻辑: 假设redis目前在内存里面存储了10GB的数据,上一个快照是在下午2:35开始创建的,并且已经创建成功。下午3:06时,Redis又开始创建新的快照,并且在下午3:08快照文件创建完毕之前,有35个键进行了更新,如果在下午3:06至下午3:08期间,系统发生崩溃,导致Redis无法完成新快照的创建工作,那么Redis将丢失下午2:35之后写入的所有数据。另一方面,如果系统恰好在新的快照文件创建完毕之后崩溃,那么Redis将只丢失35个键的更新。 创建快照的方法: 1、客户端可以通过向Redis发送BGSAVE命令来创建一个快照,对于支持BGSAVE命令来的平台来说,Redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求 2、客户端还可以通过向Redis发送SAVE命令创建一个快照,接到SAVE命令的Redis服务器在快照创建完成之前将不再响应任何其他命令