自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 windows下vscode远程连接配置

文章目录remote-ssh插件设置git环境变量配置免密remote-ssh插件vscode安装remote-ssh插件,并进行设置。# Read more about SSH config files: https://linux.die.net/man/5/ssh_configHost 任意 (习惯用ip) HostName ip User 用户名设置git环境变量PATH增加一项(ssh的几个.exe在这个路径下):C:\Program Files\Git\usr\

2020-06-15 15:49:09 1149

原创 数据库集簇、数据库和数据表

文章目录数据库集簇的逻辑结构数据库集簇的物理结构数据库集簇的布局数据库布局表和索引相关文件的布局表空间的布局堆表文件的内部布局读写元组的方式写入堆元组读取堆元组数据库集簇的逻辑结构数据库集簇(database cluster)是一组数据库(database)的集合,由一个PostgreSQL服务器管理。数据库集簇与高可用数据库集群不同,并非意味着“一组数据库服务器”,一个PostgreSQL服务器只会在单机上运行并管理单个数据库集簇。数据库集簇的物理结构数据库集簇本质上就是一个文件目录,即基础目录

2020-05-23 14:24:35 2589

原创 多事务并发更新同一字段,引入锁

文章目录并发更改引发的问题解决方法悲观锁乐观锁总结并发更改引发的问题注意下面的例子:事务1事务2BEGIN;BEGIN;SELECT data FROM test WHERE id = 1;得到 ABSELECT data FROM test WHERE id = 1;得到 ABUPDATE test SET data = ‘CB’ WHERE id = 1;UPDATE test SET data = ‘AD’ WHERE id = 1;

2020-05-20 17:32:09 836

原创 事务与并发控制

文章目录事务概念并发引发的现象脏读不可重复读幻读事务隔离级别并发控制基于锁的并发控制事务概念事务是数据库系统执行过程中最小的逻辑单位。在PostgreSQL中,显示地指定BEGIN…END/COMMIT/ROLLBACK包括的语句块为一个事务,未指定的单条语句也称为一个事务。例如:SELECT now(), now(); now ...

2020-05-08 19:56:49 901

原创 4.1 pg_stat_activity检查实时流量

文章目录视图结构视图结构postgres=# \d+ pg_stat_activity View "pg_catalog.pg_stat_activity" Column | Type | Modifiers | Storage | Description------------...

2020-05-06 23:01:34 438

原创 type switch

文章目录type switch的基本用法在switch中声明变量参考type switch的基本用法type switch是Go语言中一种特殊的switch语句,它比较的是类型而不是具体的值。它判断某个接口变量的类型,然后根据具体类型再做相应处理。注意,在type switch语句的case子句中不能使用fallthrough。用法如下:switch x.(type) {case Typ...

2020-04-30 15:19:46 372

原创 3.3 假想聚集

假想聚集很像标准的有序集。不过,它们能帮助回答一种不同类型的问题:如果一个值在其中,那么结果会怎样?这不是关于数据库内实际存在的值,而是有关一个特定值真实存在时的假想结果。SELECT region, rank(9000) WITHIN GROUP ( ORDER BY production DESC NULLS LAST )...

2020-04-30 09:13:48 151

原创 3.2 使用有序集

文章目录装载测试数据percentile_函数mode函数有序集是一种强大的特性,其想法实际上很简单:数据被正常分组,然后将每个分组中的数据按照给定条件排序,最后在排序好的数据上做计算。装载测试数据测试数据内容见:测试数据oil_ext.txtCREATE TABLE t_oil ( region text, country text, year int, ...

2020-04-30 01:05:40 181

原创 闭包的几个例子

文章目录在闭包内修改引用的变量闭包的记忆效应闭包是引用了自由变量的匿名函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境,自由变量也不会被释放或者删除,在闭包中可以继续使用这个自由变量。函数是编译期静态的概念,而闭包是运行期动态的概念。简单的说:函数 + 引用环境 = 闭包。在闭包内修改引用的变量闭包对它作用域上部变量的引用,可以进行变量修改。package main...

2020-04-29 15:45:59 601

原创 3.1 引入分组集

文章目录装载测试数据应用分组集装载测试数据测试数据内容见:测试数据oil_ext.txtCREATE TABLE t_oil ( region text, country text, year int, production int, consumption int);COPY t_oil FROM PROGRAM 'cat /home/pos...

2020-04-28 17:10:19 135

原创 测试数据oil_ext.txt

oil_ext.txtNorth America USA 1965 9014 11522North America USA 1966 9579 12100North America USA 1967 10219 12567North America USA 1968 10600 13405North America USA 1969 10828 14153North America U...

2020-04-28 11:09:04 170

原创 2.5 组合索引

文章目录测试数据性能对比测试全表扫描c1单索引扫描c2单索引扫描c1+c2索引bitmap扫描组合索引扫描组合索引使用效果总结组合索引使用判断参考有时候查询中会带有多个字段的查询条件,但是其中任何单个字段的选择率都不高,而多个字段组合起来却有比较好的选择率。这种场景是bitmap索引大显身手的地方,但是bitmap索引对更新性能的影响相当大。PostgreSQL不支持bitmap索引,但是有一个...

2020-04-27 10:56:36 142

原创 2.4 理解另外的B-树特性

文章目录函数索引减少空间消耗函数索引PostgreSQL允许创建函数索引。索引并不直接包括值,而是存储一个函数的输出。CREATE TABLE t_test2 ASSELECT *FROMt_test;CREATE INDEX idx_cos ON t_test2 (cos(id));ANALYZE;EXPLAINSELECT id FROM ...

2020-04-26 23:43:38 101

原创 匿名函数的几个例子

文章目录在定义时调用匿名函数将匿名函数赋值给变量匿名函数用作回调函数使用匿名函数实现操作封装在定义时调用匿名函数匿名函数可以在声明后调用:package mainimport ( "fmt")func main() { func(data int) { fmt.Println(data) }(100)}将匿名函数赋值给变量匿名函数体可以被赋值:package ...

2020-04-26 14:47:04 614

原创 函数的参数传递

文章目录切片的传递改变元素值增加元素参考go语言中传入和返回参数在调用和返回时都使用值传递,需要注意的是指针、切片和map等引用型对象指向的内容在参数传递中不会发生复制,而是将指针进行复制,类似于创建一次引用。测试参数传递:package mainimport ( "fmt")// 用于测试值传递效果的结构体type Data struct { complax []int...

2020-04-26 11:30:44 205

原创 字符串的链式处理

用多个函数对字符串进行链式处理:package mainimport ( "fmt" "strings")func removePrefix(str string) string { return strings.TrimPrefix(str, "go")}// 字符串处理函数,传入字符串切片和处理链func StringProcess(list []string, ch...

2020-04-26 10:59:18 426

原创 切片的几点知识

切片在扩容时,是按容量的2倍数进行扩容的。package mainimport ( "fmt")func main() { var numList []int for i := 0; i < 16; i++ { numList = append(numList, i) fmt.Printf("len: %d, cap: %d, pointer: %p\n", le...

2020-04-24 17:59:08 379

原创 fmt占位符

文章目录普通占位符布尔占位符整数占位符浮点数和复数的组成部分(实部和虚部)字符串与字节切片指针其它标记其他定义示例类型和变量:type Human struct { Name string}var people = Human{Name:"zhangsan"}普通占位符占位符说明举例输出%v相应值的默认格式Printf("%v", people...

2020-04-23 19:06:03 169

原创 数据类型的几点知识

go语言在声明变量时,自动对变量对应的内存区域进行初始化。每个变量会初始化为其类型的默认值:整型和浮点型变量默认为0;字符串变量默认为空字符串;布尔型变量默认为false;切片、函数、指针变量默认为nil。package mainimport ( "fmt")func main() { var ( a int b float32 c string d b...

2020-04-23 11:38:46 133

原创 2.3 使用聚簇表改善速度

文章目录聚簇表考虑用户想要读取一整个范围的数据的情况,这个范围可能是一定的时间范围、一些块、ID等。这种查询的运行时间会根据数据量以及数据在磁盘上的物理分布而变化。因此,即便用户运行返回同样数量行的查询,两个系统可能不会在相同的时间跨度内提供回答,因为物理磁盘布局可能会不同。比如:EXPLAIN (analyze true, buffers true, timing true)SELECT...

2020-04-13 23:40:31 169

原创 TLS SNI测试

文章目录概述测试启动服务器客户端发起连接,不指定servername客户端发起连接,指定servername客户端发起连接,指定错误servername概述服务器名称指示(Server Name Indication,缩写:SNI)是TLS的一个扩展协议,首次发布在openssl 0.9.8f版本。在该协议下,在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称。这允许服务器在相同的...

2020-04-02 18:23:02 2179

原创 centos下搭建openssl测试环境

文章目录创建CA进入OPENSSLDIR新建CA创建CA认证的服务器证书创建未经CA认证的服务器证书与服务器CA认证请求文件CA对服务器的CA认证请求文件进行认证生成sslservercert.pem生成CA认证的客户端证书创建未经CA认证的客户端证书与客户端CA认证请求文件CA对客户端的CA认证请求文件进行认证生成sslclientcert.pem客户端与服务器数据交互启动服务器使用客户端发起安...

2020-04-02 17:55:59 1194

原创 TLS协议简述

文章目录概述基本工作方式握手过程1. client_hello2. server_hello + server_certificate + sever_hello_done3. 证书校验4. client_key_exchange + change_cipher_spec + encrypted_handshake_message5. change_cipher_spec + encrypted_...

2020-04-01 00:03:25 7045

原创 2.2 简单的索引

文章目录创建索引使用排序输出一次使用多个索引创建索引发动更多工作进程来扫描非常大的表有时候并不能解决问题。读取整个表只为寻找一行通常也不是什么好主意。因此,我们需要创建索引(PostgreSQL使用Lehman-Yao的高并发性B-树作为标准索引):CREATE INDEX idx_idON t_test (id);SELECT *FROM t_te...

2020-03-27 18:09:26 207

原创 2.1 理解代价模型

文章目录使用EXPLAIN深究代价模型创建测试数据:CREATE TABLE t_test ( id serial, name text);INSERT INTO t_test ( name)SELECT 'hans'FROM generate_series(1, 2000000);INSERT INTO t_test ( n...

2020-03-23 23:10:24 810

原创 1.6 优化存储以及控制清理

文章目录配置VACUUM和autovacuum观察工作中的VACUUM利用snapshot too old对于一个查询,不是每一个人都会得到相同的返回数据。除此之外,DELETE和UPDATE不能直接覆盖数据,因为那样ROLLBACK将无法工作。如果用户恰好处于一次大型DELETE操作的中间,他将不能确定是否能够COMMIT。还有,当用户执行DELETE时,涉及的数据仍然是可见的,甚至有时在修改...

2020-03-22 22:33:52 163

原创 1.5 观察死锁

如果两个事务不得不相互等待,就将会发生一次死锁。首先创建一个测试表:CREATE TABLE t_deadlock ( id int);INSERT INTO t_deadlockVALUES (1), (2);事务1事务 2BEGIN;BEGIN;SELECT * FROM t_deadlock WHERE id = 1 FO...

2020-03-20 15:12:56 334

原创 1.4 理解事务隔离级别

默认情况下,PostgreSQL运行在READ COMMITTED事务隔离模式中。下面有关于事务隔离的一个例子:SELECT *FROM t_account ; id | currency_id | balance----+-------------+--------- 1 | 1 | 100 2 | 1 | ...

2020-03-19 17:16:58 83

原创 1.3 使用FOR UPDATE

文章目录SELECT FOR UPDATESELECT FOR UPDATE NOWAITSELECT FOR UPDATE SKIP LOCKEDSELECT FOR UPDATE有时应用会从数据库选择一些数据,然后对它们做一些处理并且最终将一些被更改的数据存回到数据库。这里的问题是两个人可能选择相同的未处理数据,那么对于那些已处理行的更改将被覆盖。为了解决这一问题,可以使用SELECT ...

2020-03-18 23:24:58 396

原创 1.2 理解基本的锁定

文章目录同时读写同时写避免典型错误和显式锁定锁机制表级锁类型CREATE TABLE test ( id int);CREATE TABLEINSERT INTO test ( id)VALUES ( 1 );INSERT 0 1同时读写事务1事务 2BEGIN;BEGIN;UPDATE test ...

2020-03-02 21:02:46 267

原创 1.1 使用PostgreSQL事务

文章目录使用postgresql事务在事务内部处理错误使用保存点事务性DDL理解基本的锁定使用postgresql事务在pg中,每一个操作都是一个事务。SELECT now(), now(); now | now-------------------------------+----------...

2020-02-29 16:21:05 198

原创 13. 创建和操纵表

文章目录创建表创建表CREATE TABLE products_test ( prod_id char(10) NOT NULL, vend_id char(10) NOT NULL, prod_name char(255) NOT NULL, prod_price decima...

2020-02-28 18:25:49 94

原创 12. 更新和删除数据

文章目录本节使用的表customers更新数据删除数据本节使用的表customerspostgres=# \d customers Table "public.customers" Column | Type | Collation | Nullable | Default--------------+------...

2020-02-23 22:59:47 170

原创 11. 插入数据

文章目录本节使用的表customers插入完整的行本节使用的表customerspostgres=# \d customers Table "public.customers" Column | Type | Collation | Nullable | Default--------------+--------...

2020-02-21 23:06:39 146

原创 10. 组合查询

文章目录本节使用的表customers定义创建组合查询单条语句多个WHEREUNION包含重复的行对组合查询结果排序UNION规则本节使用的表customerspostgres=# \d customers Table "public.customers" Column | Type | Collation | Nu...

2020-02-20 23:07:20 128

原创 9. 创建高级联结

文章目录本节使用的表vendorsproductscustomersordersorderitems使用表别名自联结子查询的方法自联结的方法本节使用的表vendorspostgres=# \d vendors Table "public.vendors" Column | Type | Collation | Null...

2020-02-14 22:43:24 98

原创 8. 联结表

文章目录postgres=# \d vendors Table "public.vendors" Column | Type | Collation | Nullable | Default--------------+---------------+-----------+----------+--------- ve...

2020-02-10 20:20:17 182

原创 7. 使用子查询

文章目录利用子查询进行过滤作为计算字段使用子查询利用子查询进行过滤select order_numfrom orderitemswhere prod_id = 'RGAN01'; order_num----------- 20007 20008(2 rows)select cust_idfrom orderswhere order_num in (200...

2020-02-03 21:51:50 91

原创 将本地系统做成docker镜像

文章目录将系统打包docker import将系统打包tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /docker importdocker import centos7-base.tar centos7:temp$ docker images |grep centos7centos7...

2020-01-23 10:07:17 3420

原创 docker镜像制作方法

文章目录1. docker commit方式1.1 load原来的镜像1.2 docker run1.3 进容器,修改后commit1.4 docker save2. docker export方式2.1 load原来的镜像2.2 docker run2.3 进容器,修改后export2.4 docker import2.5 新建Dockerfile,docker build2.6 docker ...

2020-01-22 17:12:55 304

空空如也

空空如也

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

TA关注的人

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