自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

-= 大 明 =- 的专栏

聪明在于勤奋,天才在于积累

  • 博客(153)
  • 资源 (13)
  • 收藏
  • 关注

转载 35岁开始学算法笔记2 -- 时间复杂度

时间复杂度和空间复杂度究竟是什么呢?首先,让我们来想象一个场景。某一天,小灰和大黄同时加入了同一家公司。一天后,小灰和大黄交付了各自的代码,两人的代码实现的功能差不多。大黄的代码运行一次要花 100ms,占用内存 5MB。小灰的代码运行一次要花 100s,占用内存 500MB。于是……在上述场景中,小灰虽然也按照老板的要求实现了功能,但他的代码存在两个很严重的问题。1. 运行时间长运行别人的代码只要 100ms,而运行小灰的代码则要 100s,使用者肯定是无法忍受的。2.

2022-04-10 00:55:24 196

原创 35岁开始学算法笔记1--算法和数据结构

学习:【漫画算法-小灰的算法之旅】算法有高效的,也有拙劣的。在计算机领域,我们同样会遇到各种高效和拙劣的算法。衡量算法好坏的重要标准有两个。时间复杂度 空间复杂度场景:1. 运算例如求出两个数的最大公约数,要做到效率的极致,的确需要动一番脑筋。再如计算两个超大整数的和,按照正常方式来计算肯定会导致变量溢出。这又该如何求解呢?2. 查找当你使用谷歌、百度搜索某一个关键词,或在数据库中执行某一条 SQL 语句时,你有没有思考过数据和信息是如何被查出来的呢?3. 排序排

2022-04-10 00:42:35 260

原创 PG工具大全

参数自动调优https://pgtune.leopard.in.ua/#/

2020-05-11 00:23:01 5528

转载 pg_bulkload 快速批量导入插件

PostgreSQL数据加载工具之pg_bulkloadlottu关注2018.07.16 17:51:03字数 1,056阅读 3271. pg_bulkload介绍PostgreSQL提供了一个copy命令的便利数据加载工具,copy命令源于PostgreSQL数据库,copy命令支持文件与表之间的数据加载和表对文件的数据卸载。pg_bulkload是一种用于Postgre...

2020-04-04 22:48:34 1055

翻译 【翻译】比较Pgpool-II和PgBouncer

凯文·马克沃特(Kevin Markwardt)2019年8月7日发表在:技术轨道标签:PostgreSQL在我为PostgreSQL确定不同的HA解决方案的过程中,Pgpool和PgBouncer多次出现。因此,我决定对它们进行评估,并确定它们可以处理的性能。我这样做是因为我在互联网上看到的大多数博客都是在资源有限的笔记本电脑上进行测试的。在此评估中,我使用我的Goo...

2020-03-16 00:37:25 3143 5

原创 Postgres社区版本策略

大版本策略:每年1个,每个版本只维护5年详见:https://www.postgresql.org/support/versioning/ 9.4~12的情况: Version Current minor Supported First Release Final Rel...

2020-01-10 14:50:27 256

原创 PG12之独立引擎

先引用一段 原文:http://blog.itpub.net/31556440/viewspace-2667228/独立存储引擎就实际来说,MySQL早些年的MyISAM,实现质量并不好,不支持事务,表级别的读写锁。但因为存储引擎独立接口,MySQL等到了InnoDB,InnoDB实现了全套事务存储引擎,且现在已完全取代了MyISAM的地位。而PG本身就实现了事务存储引擎,这个...

2019-12-23 01:59:03 846

原创 友商方案

迁移类:MIGRATING FROM ORACLE TO POSTGRESQLhttps://www.cybertec-postgresql.com/en/services/migrating-to-postgresql/migrating-from-oracle-to-postgresql/多主:POSTGRESQL MULTIMASTER REPLICATION...

2019-12-23 00:55:19 189

原创 “王者对战”之 MySQL 8 vs PostgreSQL 10 知识点解读(未完)

引用“王者对战”之 MySQL 8 vs PostgreSQL 10英文原文:Showdown: MySQL 8 vs PostgreSQL 10中英文对比:https://www.oschina.net/translate/showdown-mysql-8-vs-postgresql-10解读1、线程和进程那个更适合数据库?真正了解的人都会明白他们各自有优缺点。pg连接...

2019-12-22 23:08:45 264

转载 字典树Trie

字典树(Trie)是一种很特别的树状信息检索数据结构,如同其名,它的构成就像一本字典,可以让你快速的进行字符插入、字符串搜索等。Trie一词来自 retrieval,发音为 /tri:/ "tree",也有人读为 /traɪ/ "try"。字典树设计的核心思想是空间换时间,所以数据结构本身比较消耗空间。但它利用了字符串的共同前缀(Common Prefix)作为存储依据,以此来节省存储空...

2019-11-23 16:52:48 264

转载 C语言0长度数组(可变数组/柔性数组)详解

原文链接:https://blog.csdn.net/gatieme/article/details/641313221 零长度数组概念————————————————众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展.多数情况下, 其应用在变长数组中, 其定义如下stru...

2019-11-22 10:13:29 439

转载 CAS算法简介

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/q5706503/article/details/84558343CAS是什么?CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。CA...

2019-11-17 20:31:21 307

转载 乐观锁与悲观锁

何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让...

2019-11-17 20:10:48 79

转载 PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式对比

概述关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不同的实现。MVCC的两种不同实现方式第一种实现方式是将数据记录的多个版本保存在数据库中,当这些不同版本数据不再需要时,垃圾收集器回收这些...

2019-11-17 19:24:15 858 2

转载 PG的两种集群技术:Pgpool-II与Postgres-XL

最近研究了PG的两种集群方案,分别是Pgpool-II和Postgres-XL,在这里总结一下二者的机制、结构、优劣、测试结果等。1、 Pgpool-II和Postgres-XL简介据我目前的了解,Pgpool-II和Postgres-XL是PG集群开源实现中比较成功的两个项目,互联网上相关的介绍也不少,但尚不确定二者在企业生产环境中是否被广泛使用。其中Pgpool-II的前身的Pgpool...

2019-06-08 20:26:39 6256 1

转载 Postgresql之CheckPoint机制

checkpoint又名检查点,一般checkpoint会将某个时间点之前的脏数据全部刷新到磁盘,以实现数据的一致性与完整性。目前各个流行的关系型数据库都具备checkpoint功能,其主要目的是为了缩短崩溃恢复时间,以Oracle为例,在进行数据恢复时,会以最近的checkpoint为参考点执行事务前滚。而在WAL机制的浅析中,也提过PostgreSQL在崩溃恢复时会以最近的checkpoint...

2019-04-14 23:43:56 5536

转载 德哥的PostgreSQL私房菜 - 史上最牛皮的PG资料合集

德哥的PostgreSQL私房菜 - 史上最屌PG资料合集转自:https://yq.aliyun.com/articles/59251?spm=5176.100239.bloglist.95.5S5P9S看完并理解这些文章,相信你会和我一样爱上PostgreSQL,并成为一名PostgreSQL的布道者。资料不断更新中... ...沉稳的外表无法掩饰PG炙热的内心。扩展阅读...

2019-04-07 23:26:39 13266

原创 PostgreSQL Logical Decoding(二)pg_recvlogical工具测试

1、创建slot$ pg_recvlogical -U postgres -d postgres --slot test --create-slot2019-04-05 13:11:35.149 CST [20380] LOG: logical decoding found consistent point at 0/1635DB82019-04-05 13:11:35.149 CS...

2019-04-05 13:42:31 1164

原创 PostgreSQL Logical Decoding(一)

测试前需要先设置2个参数:wal_level=logical,需要重启max_replication_slots 默认10个,够用了,暂时不需要修改。1、创建一个复制槽,名称为logical_slot,使用插件:test_decodingpostgres=# SELECT pg_create_logical_replication_slot('logical_slot', 't...

2019-04-05 13:06:43 3268 1

原创 构建一个简单的数据库系列(十)叶子节点拆分(未完成)

英文原文链接:https://cstack.github.io/db_tutorial/parts/part10.html我们的B-Tree还不是一个真正的B-Tree,因为只有一个节点。为了解决这个问题,我们需要一些代码来实现拆分一个叶子节点。之后,我们需要创建一个内部节点作为两个叶节点的父节点。我们本节的目标是:单节点btree 对此:两级btree首先,让我们...

2019-03-31 23:34:31 297

原创 构建一个简单的数据库系列(九)二分查找和重复key

英文原文链接:https://cstack.github.io/db_tutorial/parts/part9.html上次我们注意到我们仍然按照未排序的顺序存储key。我们将解决该问题,并增加对重复key的检查。当前,我们的execute_insert函数总是选择在表尾插入。但是我们应该先检索到合适的位置,然后再插入。如果key已经存在,则返回error。ExecuteResul...

2019-03-31 23:29:00 155

原创 构建一个简单的数据库系列(八)B-tree叶子节点格式之二

英文原文链接:https://cstack.github.io/db_tutorial/parts/part8.html如何向叶子节点插入数据这一节我们只实现一个单节点树。回想下上节的内容,一颗树是从一颗空的叶子节点数开始演变的。图 空树键值对可以被一直添加直到叶子节点填满。图 1个节点的B-tree当第一次打开数据库时,数据库文件是一个空文件,我们初始化page=...

2019-03-31 20:52:33 253

原创 构建一个简单的数据库系列(八)B-tree叶子节点格式之一

英文原文链接:https://cstack.github.io/db_tutorial/parts/part8.html我们将持续修改表的格式,从未排序的数据改成B-tree。因为改动太大,需要花费几节文章来说明。在这节,我们定义叶子节点层,并支持key/value对插入到单节点树。可选的表格式当前的格式,每页只存储了rows(不包括元数据),因此从空间上讲是非常高效的。数据插入操作非...

2019-03-31 20:46:13 913

原创 构建一个简单的数据库系列(七)引入B-tree

英文链接:https://cstack.github.io/db_tutorial/parts/part7.htmlB-Tree是SQLite用来表示表和索引的数据结构,因此它是一个非常重要的想法。为什么树对数据库来讲是非常合适的数据结构呢?搜索特定值很快(时间复杂度:对数) 插入/删除您已经找到的值很快(重新平衡的时间是常量级的) 遍历一系列值很快(与哈希映射不同)...

2019-03-25 00:17:53 255

原创 构建一个简单的数据库系列(六)cursor抽象

英文连接:https://cstack.github.io/db_tutorial/parts/part6.html为了实现B-tree,这一节先对当前的实现进行一点重构。我们增加一个概念:Cursor(游标),代表了对象在数据库中的位置。那么关于cursor有几件事需要完成1、在表之前创建cursor2、在表之后创建cursor3、访问cursor所指向的行4、访问cur...

2019-03-25 00:15:37 534

原创 读《代码的未来》有感

章节5:支持大数据的数据存储技术使用键值存储的数据库,大多数都在数据查找技术上使用了散列这种数据结构。散列表中的数据量无论如何增大,其查找数据所需的时间几乎是固定不变的,因此也是一种非常合适大规模数据的技术。一、数据库的ACID特性即Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)整体来看,acid非...

2019-03-24 21:39:33 132

原创 构建一个简单的数据库系列(五)持久化到硬盘

英文链接:https://cstack.github.io/db_tutorial/parts/part5.html“Nothing in the world can take the place of persistence.” –Calvin Coolidge像sqlite一样,我们通过保存整个数据库到一个文件到方式进行记录的持久化。我们已经实现了把记录反序列化到页大小到内存块中...

2019-03-24 00:46:41 477

原创 构建一个简单的数据库系列(四)测试用例

英文链接:https://cstack.github.io/db_tutorial/parts/part4.html这一节主要对第三节大代码进行详细的测试这里使用rspec工具进行测试用例编写。http://rspec.info/RSpec是Ruby测试框架,确实不懂,先手工测试下吧本次优化点使用strtok替代scanf,并增加了对输入的校验,详见函数:prepare_ins...

2019-03-18 22:56:48 1145

原创 构建一个简单的数据库系列(三)驻在内存append only的单表数据库

英文链接:https://cstack.github.io/db_tutorial/parts/part3.html假设表定义如下:column type id integer username varchar(32) email varchar(255) insert语句定义为insert column1, column2, colum...

2019-03-18 22:50:45 303

原创 构建一个简单的数据库系列(二)世界上最简单的sql解析器和虚拟机

英文原链接:https://cstack.github.io/db_tutorial/parts/part2.htmlThe “front-end” of sqlite is a SQL compiler that parses a string and outputs an internal representation called bytecode.This bytecode i...

2019-03-17 18:23:10 311

原创 构建一个简单的数据库系列(一)创建一个REPL

原文链接:https://cstack.github.io/db_tutorial/parts/part1.htmlsqlite3框架Code Generator以上归入到前端,以下归入到后端。第1节的目标,实现一个简单的交互式解释器(REPL)--读取(Read)运算(Eval) 输出(Print) 循环(Loop)~ sqlite3SQLite version 3.1...

2019-03-17 08:52:40 323

原创 pg源代码之DefineRelation

调用DefineRelation的地方1 create_ctas_internal - Reference to DefineRelation in createas.c (src\backend\commands) at line 115 --create table as2 DefineSequence - Reference to DefineRelation in sequence....

2019-01-13 23:41:03 568

原创 PG优质资料整理

整体: 德哥:从Oracle DBA到PostgreSQL布道者https://yq.aliyun.com/articles/60153 流式复制:PostgreSQL 10 新特性, 流式接收端在线压缩redo https://yq.aliyun.com/articles/69278?spm=a2c4e.11163080.searchblog.168.65842ec1aysM...

2018-12-31 23:52:12 721

转载 【转:讲得深入浅出】JAVA 内存泄露详解(原因、例子及解决)

 转载请注明出处:http://blog.csdn.net/anxpp/article/details/51325838,谢谢!    Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管理    要了解Jav...

2018-05-06 23:29:36 184

原创 mysql关闭过程

http://blog.csdn.net/slwang001/article/details/53769154

2018-01-02 08:04:33 439

原创 基于关系数据库的纵表、横表及引擎设计(未完)

概念    其实数据库本没有这2个概念,这2个概念是从应用角度、逻辑角度出发诞生的。所谓常见的表都是横表,所以这里重点说下纵表,你就理解这2个概念了。    关系型数据库或者说传统的数据库,建立模型时都需要建立明确模型的属性,而这些属性是作为字段(field)存在的,但是在应用中我们经常面临一个问题就是对象的属性是不确定的,比如我们对客户的属性,我们随着研究关注地深入,需要关注的属性越来越

2016-11-01 11:54:04 2590 1

转载 纵表和横表的概念及其相互转换

横表就是普通的建表方式,如表结构为:主键、字段1、字段2、字段3...。 如果变成纵表后,则表结构为: 主键、字段代码、字段值。而字段代码则为字段1、字段2、字段3...。  具体为电信行业的例子。以用户帐单表为例,一般出账时用户有很多费用,其数据一般存储为:时间,客户ID,费用科目,费用。这种存储结构一般称为纵表,其特点是行数多,字段少。纵表在使用时由于行数多,统计用户数或对用户进行分档时还需要

2016-10-29 21:48:53 3316

转载 约定优于配置

文章来自维基百科约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_so

2016-10-29 21:38:18 393

转载 三种东西永远不要放到数据库里

导读:作者Frank Wiles发表了一篇博文,Frank Wiles曾在很多演讲里说过,改进你的系统的最好的方法是先避免做“蠢事”。并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好的结果的。图片,文件,二进制数据既

2016-10-29 21:34:28 369

转载 值得推荐的C/C++框架和库 【强烈推荐】

值得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。下载链接:https://github.com/libeven

2016-10-22 21:53:58 10219 1

TCP-IP详解卷二:实现

TCP-IP详解卷二:实现,非常经典 版本清晰 非常值得收藏和学习

2012-12-27

GCC编译器选项及优化提示

内容详细,非常有价值,值得收藏 本文作者是一位自由软件爱好者

2012-12-27

valgrind 介绍

valgrind是一款运行在linux下的,用来定位c/c++程序中内存使用方面的错误的工具,包括:内存泄漏、使用未初始化的内存、读/写已释放的内存、读/写内存越界、使用malloc/new/new[]和free/delete/delete[]不匹配,等等。 Valgrind是帮助程序员寻找程序里的bug和改进程序性能的工具。程序通过valgrind运行时,valgrind收集各种有用的信息,通过这些信息可以找到程序中潜在的bug和性能瓶颈。 目录: 一、什么是valgrind 二、valgrind的安装 三、valgrind的工具介绍 四、Valgrind使用方法 五、Valgrind使用参数 六、举例:valigrind在isearch3.2测试中的应用

2012-11-27

socket 编程原理

非常经典的,共享出来。 1 问题的引入 2 套接字编程基本概念 3 基本套接字系统调用

2012-09-07

华为_QoS原理_V1.0.ppt

内容介绍 第一章 QoS 的基本概念 第二章 报文的分类和标记 第三章 流量监管及整形 第四章 拥塞管理及避免

2010-10-28

Oracle语句优化53个规则详解

非常实用,好不容易收集齐的。 1.选用适合的ORACLE优化器 2.访问Table的方式ORACLE 采用两种访问表中记录的方式: 3.共享SQL语句 4.选择最有效率的表名顺序(只在基于规则的优化器中有效) 6.SELECT子句中避免使用 ‘ * ’ 等等,自己看吧!

2010-10-28

OTL 编程指南

OTL是Oracle 和 ODBC 的模板库,它屏蔽数据库操作的底层,提供数据库连接功能,以标准 C++ 流的方式完成嵌入式 SQL 语句、存储过程的执行和光标操作。 OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C++编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库,例如Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。OTL中直接操作Oracle主要是通过Oracle提供的OCI接口进行,进行操作DB2数据库则是通过CLI接口来进行,至于MS的数据库和其它一些数据库,则OTL只提供了ODBC来操作的方式。当然Oracle和DB2也可以由OTL间接使用ODBC的方式来进行操纵。 本为4.0,参见http://otl.sourceforge.net/,下载地址http://otl.sourceforge.net/otlv4_h.zip。 优点: a. 跨平台 b. 运行效率高,与C语言直接调用API相当 c. 开发效率高,起码比ADO.net使用起来更简单,更简洁 d. 部署容易,不需要ADO组件,不需要.net framework 等

2009-08-22

windows C库函数

包括 alloc、ctype、images、math、stdio、stdlib、string、system

2009-08-22

EJB3.0实例教程

适合ejb初学者 pdf格式 希望对大家有所帮助

2008-05-24

JSP即时应用(PDG)

JSP即时应用(PDG)

2008-05-05

java 速查 手册

java 速查 手册 英文版 估计能满足你!

2008-05-05

软件开发文档

软件开发文档 包括十四个子项目 挺不错 可以用来参考

2008-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除