持久化

[Abp vNext 源码分析] - 8. 审计日志

倾然丶 夕夏残阳落幕 提交于 2019-11-30 18:12:50
一、简要说明 ABP vNext 当中的审计模块早在 依赖注入与拦截器 一文中有所提及,但没有详细的对其进行分析。 审计模块是 ABP vNext 框架的一个基本组件,它能够提供一些实用日志记录。不过这里的日志不是说系统日志,而是说接口每次调用之后的执行情况(执行时间、传入参数、异常信息、请求 IP)。 除了常规的日志功能以外,关于 实体 和 聚合 的审计字段接口也是存放在审计模块当中的。( 创建人 、 创建时间 、 修改人 、 修改时间 、 删除人 、 删除时间 ) 二、源码分析 2.1. 审计日志拦截器 2.1.1 审计日志拦截器的注册 Volo.Abp.Auditing 的模块定义十分简单,主要是提供了 审计日志拦截器 的注册功能。下面代码即在组件注册的时候,会调用 AuditingInterceptorRegistrar.RegisterIfNeeded 方法来判定是否为实现类型(ImplementationType) 注入审计日志拦截器。 public class AbpAuditingModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.OnRegistred

Redis持久化RDB和AOF区别

半世苍凉 提交于 2019-11-30 10:12:09
RDB和AOF都可以Redis的持久化, 两者有一定的区别: Redis默认是开启RDB的,AOF默认关闭,需要手动开启; RDB和AOF同时开启的情况下,会只加载AOF, 两者都有相应的check命令,来进行检测修复--fix, RDB 由系统fork出一个进程来执行 默认是根据自定义的时间间隔内发生的变化,来触发是否需要生成快照文件进行保存, 当然也可以使用命令来强制立刻保存,如:save...等命令 相关参数配置: save 900 1 save 300 10 save 60 10000 优点: 1)恢复速度快,容易备份; 缺点: 1)由于是根据间隔生成快照,出现故障时会丢失间隔内数据; 2)如果数据过大,每次系统fork进程进行快照生成,相当消耗性能,有可能会导致终止客户端请求。 AOF 将Redis操作指令追加到以.aof结尾的文件中,默认是每秒(everysec)记录一次, 当aof文件超过大小时,系统会fork一个进程来对aof文件进行重写操作,即:auto-aof-rewrite。 相关参数配置: appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof

P3919 【模板】可持久化数组(可持久化线段树/平衡树)

99封情书 提交于 2019-11-30 06:32:33
P3919 【模板】可持久化数组(可持久化线段树/平衡树) 可持久化线段树 不过我对与这一道题有一个想法: 有没有一种可持久化的数组? 带着类似于可持久化线段树的新建节点的想法,我画下了图: 偶们得到了一个初始数组! 接下来修改:pos 1 val 14 那么我们这么做: 这样其实我们就可以On修改On查询了! (那么优秀的O(n 2 )算法,怎么能不爆踩呢) 思考了一下,这个东西好像可以分块,类似这样: 修改都在块内进行,维护一下,可以On√n? 没实现,那位大佬发表一下集训队论文吧 接下来说正经的: 这道题就是一个裸的可持久化线段树 具体网上学 记住这题的ask操作也要生成一个版本,生成一个和他ask版本一毛一样的版本! (我正纳闷:哪来10个版本!) 代码: #include<bits/stdc++.h> using namespace std; const int N=1000005; struct node{ int l; int r; int lson; int rson; int val; }; int n,m; int a[N]; struct Sugment_Tree{ #define mid (l+r)/2 #define il inline int root[N]; node t[N<<4]; int cnt;//线段树节点数 int times;//几次版本

RabbitMQ 的消息持久化与 Spring AMQP 的实现剖析

◇◆丶佛笑我妖孽 提交于 2019-11-30 03:16:30
文章目录 1. 原生的实现方式 2. Spring AMQP 的实现方式 要从奔溃的 RabbitMQ 中恢复的消息,我们需要做消息持久化。如果消息要从 RabbitMQ 奔溃中恢复,那么必须满足三点,且三者缺一不可。 交换器必须是持久化。 队列必须是持久化的。 消息必须是持久化的。 原生的实现方式 原生的 RabbitMQ 客户端需要完成三个步骤。 第一步,交换器的持久化。 // 参数1 exchange :交换器名 // 参数2 type :交换器类型 // 参数3 durable :是否持久化 channel . exchangeDeclare ( EXCHANGE_NAME , "topic" , true ); 第二步,队列的持久化。 // 参数1 queue :队列名 // 参数2 durable :是否持久化 // 参数3 exclusive :仅创建者可以使用的私有队列,断开后自动删除 // 参数4 autoDelete : 当所有消费客户端连接断开后,是否自动删除队列 // 参数5 arguments channel . queueDeclare ( QUEUE_NAME , true , false , false , null ); 第三步,消息的持久化。 // 参数1 exchange :交换器 // 参数2 routingKey : 路由键 // 参数3

【攻克RabbitMQ】常见问题

拟墨画扇 提交于 2019-11-30 01:35:38
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zlt995768025/article/details/81938449 消息什么情况下会丢失?配合mandatory参数或备份交换器来提高程序的健壮性 发送消息的交换器并没有绑定任何队列,消息将会丢失 交换器绑定了某个队列,但是发送消息时的路由键无法与现存的队列匹配 预估队列的使用情况? 在后期运行过程中超过预定的阈值,可以根据实际情况对当前集群进行扩容或者将相应的队列迁移到其他集群。 消费消息? 推模式,拉模式 保证消息的可靠性? RabbitMQ 提供了消息确认机制( message acknowledgement)。 消费者在订阅队列时,可以指定 autoAck 参数,当 autoAck 等于 false 时, RabbitMQ 会等待消费者显式地回复确认信号后才从内存(或者磁盘)中移去消息(实质上 是先打上删除标记,之后再删除)。当 autoAck 等于 true 时, RabbitMQ 会自动把发送出去的 消息置为确认,然后从内存(或者磁盘)中删除,而不管消费者是否真正地消费到了这些消息。 在ack为false的情况下,消费者获取消息迟迟没有发送消费者确认消息的信号或者消费者断开,怎么办? 当 autoAck

Spring笔记8---数据库持久化

…衆ロ難τιáo~ 提交于 2019-11-30 00:46:32
聊聊持久化。 ------------------------Spring的平台无关持久化异常 下面是Spring提供的数据访问模板,分别适用于不同的持久化机制 模板类org.springframework.* 用途 jca.cci.core.CciTemplate JCA CCI连接 jdbc.core.JdbcTemplate JDBC连接 jdbc.core.namedparam.NamedParameterJdbcTemplate 支持命名参数的JDBC连接 jdbc.core.simple.SimpleJdbcTemplate 通过java5简化后的JDBC连接 orm.hibernate.HibernateTemplate Hibernate2.x的session orm.hibernate3.HibernateTemplate Hibernate3.x的session orm.ibatis.SqlMapClientTemplate iBATIS SqlMap客户端 orm.jdo.JdoTemplate Java数据对象(JAVA DATA OBJECT)实现 orm.jpa.JpaTemplate JAVA持久化API的实体管理器 --------------------------------------------------------------------

2--Master主备切换机制原理剖析与源码分析

青春壹個敷衍的年華 提交于 2019-11-30 00:05:53
原理剖析 Master实际上可以配置两个(防止单点故障),那么Spark原生的standalone模式是支持Master主备切换的。也就是说,当Active Master节点挂掉时,可以将StandBy master节点切换为Active Master。 Spark Master主备切换可以基于两种机制,一种是基于文件系统的,一种是基于Zookeeper的。基于文件系统的主备切换机制,需要在Active Master挂掉之后,由我们手动切换到StandBy Master上;而基于Zookeeper的主备切换机制,可以自动实现切换Master。 所以这里说的主备切换机制,实际上指的是在Active Master挂掉之后,切换到StandBy Master时,Master会执行的操作。 流程说明: Standby Master模式 1. 使用持久化引擎读取持久化的storeApps、storeDrivers、storeWorkers,持久化引擎有FileSystemPersistenceEngine和ZookeeperPersistenceEngine 2. 判读如果storedApps、storedDrivers、store的Workers有任何一个非空就继续向后执行. 3. 持久化引擎的Application、Driver

2--Master主备切换机制原理剖析与源码分析

久未见 提交于 2019-11-29 23:47:28
原理剖析 Master实际上可以配置两个(防止单点故障),那么Spark原生的standalone模式是支持Master主备切换的。也就是说,当Active Master节点挂掉时,可以将StandBy master节点切换为Active Master。 Spark Master主备切换可以基于两种机制,一种是基于文件系统的,一种是基于Zookeeper的。基于文件系统的主备切换机制,需要在Active Master挂掉之后,由我们手动切换到StandBy Master上;而基于Zookeeper的主备切换机制,可以自动实现切换Master。 所以这里说的主备切换机制,实际上指的是在Active Master挂掉之后,切换到StandBy Master时,Master会执行的操作。 流程说明: Standby Master模式 1. 使用持久化引擎读取持久化的storeApps、storeDrivers、storeWorkers,持久化引擎有FileSystemPersistenceEngine和ZookeeperPersistenceEngine 2. 判读如果storedApps、storedDrivers、store的Workers有任何一个非空就继续向后执行. 3. 持久化引擎的Application、Driver

redis --持久化rio

爷,独闯天下 提交于 2019-11-29 23:27:24
rio是对流式IO的抽象,提供读写接口,消费/生产具体不同的I/O设备。rdb.c就是使用抽象封装RDB的内存读写和文件读写。rio对象提供以下方法: read:从流读数据 write:向流写数据 tell :获取当前的偏移量 flush : 刷空缓冲区方法 checksum:检查读写的checksum 校验和操作。rio使用了RCR64算法计算校验和,具体实现可以参看crc64.h和crc64.c文件。 IO变量。_rio中的io成员是一个联合体,针对不同的I/O情况进行不同的处理:当执行内存buffer的I/O操作时,使用rio.buffer结构体;当执行文件I/O操作时,使用rio.file结构体;当执行socket的I/O操作时,使用rio.fdset结构体。 /* rio.c is a simple stream-oriented I/O abstraction that provides an interface * to write code that can consume/produce data using different concrete input * and output devices. For instance the same rdb.c code using the rio * abstraction can be used to read

2--Master主备切换机制原理剖析与源码分析

丶灬走出姿态 提交于 2019-11-29 23:26:04
原理剖析 Master实际上可以配置两个(防止单点故障),那么Spark原生的standalone模式是支持Master主备切换的。也就是说,当Active Master节点挂掉时,可以将StandBy master节点切换为Active Master。 Spark Master主备切换可以基于两种机制,一种是基于文件系统的,一种是基于Zookeeper的。基于文件系统的主备切换机制,需要在Active Master挂掉之后,由我们手动切换到StandBy Master上;而基于Zookeeper的主备切换机制,可以自动实现切换Master。 所以这里说的主备切换机制,实际上指的是在Active Master挂掉之后,切换到StandBy Master时,Master会执行的操作。 流程说明: Standby Master模式 1. 使用持久化引擎读取持久化的storeApps、storeDrivers、storeWorkers,持久化引擎有FileSystemPersistenceEngine和ZookeeperPersistenceEngine 2. 判读如果storedApps、storedDrivers、store的Workers有任何一个非空就继续向后执行. 3. 持久化引擎的Application、Driver