DMA 与零拷贝技术

内存拷贝是比较耗时操作,零拷贝是常用优化手段,今天分享的文章就是Linux系统零拷贝技术,KafkaMySQL开源组件都用到这个核心技术,希望大家可以掌握。

DMA 与零拷贝技术

注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。

作者:Spongecaptain

原文:https://spongecaptain.cool/SimpleClearFileIO/

1. 数据的四次拷贝与四次上下文切换

很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用:

  1. File.read(file, buf, len);
  2. S[……]

    查看更多……

PM与IPD、CMMI大比拼

无论是项目管理体系,还是IPD、CMMI,它们都不等于管理的全部,就像是“管理从林”中的一棵棵树木。

越来越多的企业开始重视产品开发流程、过程的规范化,借以沉淀企业知识,使其快速面对市场,满足客户需求,进而引入IPD、CMMI、PM等先进的管理方法与工具,但这些管理体系之间的联系与区别却是企业人员经常困惑的热点问题。

基本概念各有所重

PM(Project Management),中文译为“项目管理”,是一套通用的管理技术与方法。近年来,己经被公认为是一种有生命力并能实现复杂的企业目标的良好方法。

IPD,是Integrated Product Development的[……]

查看更多……

破解Gitlab EE

29 JUL 2020 • 2 MIN READ

安装完gitlab ee之后

安装ruby:yum install ruby

ruby版本需要2.3或以上。

生成许可证

gem install gitlab-license
创建一个rb文件

license.rb

生成 GitLabBV.gitlab-license license_key license_key.pub 这三个文件。

使用许可证

用 license_key.pub 文件替换&[……]

查看更多……

键盘扫描码

1.键盘扫描码

键盘上的数据主要以扫描代码的形式出现,这些扫描代码由按键产生或在计算机协议中使用。( 键盘固件在内部使用了不同的代码,并且还存在几 组扫描代码。在本节中,我们仅讨论默认代码-来自转换后的扫描代码集2的默认代码。下面讨论一些不太常见的模式 。)每次按键和释放键会产生0到6个扫描码。

1.1密钥发布

下面我仅提及按键的扫描代码(“ make”)。通过设置高位(加0x80 = 128)可以从中获得密钥释放(“ break”)的扫描代码。因此,Esc印刷机产生扫描码01,Esc释放扫描码81(十六进制)。对于序列,情况相似:键盘-/&nb[……]

查看更多……

在PostgreSQL和Autovacuum内部调优Autovacuum

死元组会损害PostgreSQL数据库的性能,因为它们会继续占用空间并导致膨胀。我们在较早的博客文章中介绍了VACUUM和膨胀但是,现在是时候看看postgres的autovacuum了,以及为维护苛刻的应用程序所需的高性能PostgreSQL数据库而需要了解的内部知识。

什么是自动真空?

Autovacuum是启动PostgreSQL时自动启动的后台实用程序进程之一。如下面的日志所示,pid 2862的postmaster(父PostgreSQL进程)已使用pid 2868启动了autovacuum启动器进程。要启动autovacuum,必须将参数autovacuum设置为ON[……]

查看更多……

pg事务篇(二)—— 事务ID回卷与事务冻结(freeze)

一、 什么是事务ID回卷

前篇文章留下了一个问题,旧事务不应看见新事务修改结果,txid通过比较大小来判断是否可见,任何事务只可见txid<其自身txid的事务修改结果。但txid是无符号的32位整型,它并不是无限的,当42亿数据用尽之后又应该如何判断可见性?

https://blog.csdn.net/Hehuyi_In/article/details/102868231

pg将txid空间视为一个环,若不进行特殊处理,txid到达最大值后又会从3开始分配(0-2保留),如果进行简单的比大小,之前的事务就可以看到这个新事务创建的元组,而新事务不能看到之前事务创建的元组,这违[……]

查看更多……

pg事务篇(一)—— 事务与多版本并发控制MVCC

一、 MVCC常用实现方法

一般MVCC有2种实现方法:

  • 写新数据时,把旧数据快照存入其他位置(如oracle的回滚段、sqlserver的tempdb)。当读数据时,读的是快照的旧数据。
  • 写新数据时,旧数据不删除,直接插入新数据。PostgreSQL就是使用的这种实现方法。

1. PostgreSQL的MVCC实现方式优缺点

优点

  • 无论事务进行了多少操作,事务回滚可以立即完成
  • 数据可以进行很多更新,不必像Oracle和MySQL的Innodb引擎需要保证回滚段不会被用完,也不会经常遇到“ORA-1555”错误的困扰

缺点

OWASP top 10漏洞原理及防御(2017版官方)

文章目录

一、OWASP top 10简介

1.OWASP介绍
OWASP:开放式Web应用程序安全项目(Open Web Application Security Project),OWASP是一家[……]

查看更多……

网络安全之学习体系的重要性

如果你分享的内容过于真实,你就没有发表机会,你要完全假了呢,又没有读者去看,你可以在这个通道里,真一会儿假一会儿地往前走,最重要的还是要往前走。——Micropoor

古人半部论语治天下,读书考功只须熟读四书,而四书加起来不过区区5万字。可见网络安全学习知识体系的建立是重中之重。

古人将一个职业划分为7个阶段,既:

奴:自愿和靠人监督的人

徒:能力不足,肯自愿学习的人

工:老老实实,按规矩做事的人

匠:精通一门技艺或手艺的人

师:掌握了规律,又能将其传授给他人的人

家:有固定的信念,让别人生活的更好的人

圣:精通事理,通达万物的人

同[……]

查看更多……

架构设计之「数据库从主备到主主的高可用方案」

在互联网项目中,当业务规模越来越大,数据越来越多,随之而来的就是数据库压力会越来越大。慢慢就会发现,数据库层可能已经成为了整个系统的关键点和性能瓶颈了,因此实现数据层的高可用就成为了我们项目中经常要解决的问题。

本文我们就来聊一聊如何实现数据存储层的高可用方案。在保障数据层的高性能与高稳定方面,最容易想到的方式就是对数据进行分片、多份、冗余等,很多架构的本质其实也是基于这几点来实现的。

这里先不看细节,即先不管底层数据源是什么数据库,我们先只聊架构方案,因为无论底层是关系型数据库,还是NoSQL数据库,无论是 Mysql 还是 RedisMongoDB,我们在架构设计上都是相通[……]

查看更多……