自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go语言中函数,方法,接口之间的关系

函数 & 方法 & 接口为什么要有函数?方法又是什么东东?接口?总结附:commonmain.go为什么要有函数?这个问题咋一看,有点SB,函数肯定是写来用的啊,但是我不可以一步一步的执行我的步骤实现功能吗?可以,但是一方面会造成代码冗余,工作量大,另一方面不美观简洁。函数在我看来就是把经常需要使用的功能提炼出来,封装成一个函数,供后续反复调用。反应了一种特性:可复用性。方法又是什么东东?说到方法,得提一下Go语言中的struct结构体,struct结构体其实就是一种对象,方法其实是

2022-03-01 14:22:34 306

原创 Go语言接口的另类理解

文章目录前言理论接口的定义格式:接口变量个人非理论性的理解前言之前学习Go语言的时候,对于接口这块经常犯迷糊。为了能够更好的消化相关的知识点,我换了一个思路去认识Go语言的接口。理论在Go语言中,接口interface是一种类型,一种抽象的类型。interface是一组方法method的集合,是duck-type programming的一种体现。也就是常说的只要带毛的,我都认为你是鸭子。接口的定义格式:type 接口类型名 interface{ 方法名1(参数列表1) 返回值列表1

2021-12-07 12:12:00 148

原创 Go语言中切片的len和cap的关系

Go语言中,切片类型是包含三个属性:1.地址(暂且不在本次讨论范围内) 2.长度 3.容量一.概念说明长度:切片中实际存在元素的数量容量:从切片的起始元素开始到其底层数组中最后一个元素的数量二.切片生成方式从数组生成一个新的切片从切片生成一个新的切片直接生成一个新的切片1.从数组生成一个新的切片测试代码:package my_testimport "testing"func TestSliceLenCap(t *testing.T) { var arr = [5]i.

2021-10-05 00:57:28 1461 1

原创 Go语言:方法,接口的个人理解

我在学习Go语言的时候,感觉方法,接口这块书上都写的很玄乎,不是很好理解,搞得一头雾水,以下是我个人的一些粗浅理解,希望有问题的地方大家能够及时指出。方法方法其实就是某些类型特定的函数,即方法和type绑定,绑定这个这个方法(特殊的函数)也就变成了type的一个属性,可以直接调用,例如:package mainimport ( "fmt")type Person struct{ Name string Age int}func (p *Person) Info() stri.

2021-06-15 18:16:10 214 1

原创 Go语言中方法到底是绑定数值还是绑定指针?

Go语言中,其实方法就是一种特殊的函数,相对于普通函数,方法多了一个接收者。方法其实就是和这个接收者进行捆绑的,捆绑之后,这个方法就变成了接收者的一个属性。1.方法的格式func (receiver type) f([param type]) [type]{ //code}example (以结构体为例,接收者还可以是别的数据类型):type Person struct{ Name string Age int}func (p Person) info() string {.

2021-06-11 15:41:54 176

原创 记一次哭笑不得的诡异事件

今天有个开发跑过来质疑我之前给他们灌输的数据库中尽量避免隐式转换的概念,理由是遇到一个where条件中不做隐式转化的SQL查询不到结果。表结构如下:mysql> desc m;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+----.

2021-06-03 10:29:12 179 2

原创 MySQL redo log和binlog刷盘时机的个人理解

在MySQL中redo log和binlog在数据保护方面有着至关重要的作用,是有需要花点时间去研究一下这两个玩意儿。以下结论是个人一家一见,看官们请酌情观看,有异议之处欢迎进行交流,万分感谢!1.正常情况下两阶段提交配合组提交的流程如下:我个人理解是在双一模式下的流程,每个事务提交时都需要进行fsync刷盘,其执行过程才如上图所示。然而在配合两个参数sync_binlog和innodb_flush_log_at_trx_commit,上图会有所调整。一.innodb_flush_log.

2021-04-08 21:13:05 2481 1

原创 python3 编写冒泡排序

冒泡排序:即前一个数和后一个数进行排序,如果前一个数大于后一个数,则两个数调换位置,否则不调整位置。假设有个列表:a=[9,3,4,34,21,54,32],a[0]是9,a[1]是3,a[2]是4,a[3]是34,a[4]是21,a[5]是54,a[6]是32a[0]先与a[1]比较,a[0]>a[1],进行对调,新的a[1]大于a[2],在进行对调,新的a[2]小于a[3],不处理,后续也是类似处理机制。规律:每一轮的对比不能保证新的数列一定是按照从小到大,但是可以确定的是,数列的最后几个.

2021-03-30 14:25:24 338

原创 python3 实现九九乘法表和斐波那契数列

九九乘法表本身实现很简单,但是作为编程小菜年,警示自己在编程过程中需要保持清醒的思维思路。首先分析一下需求:乘法表是由三部分组成,a,b和a*b的值组成,同时a和b都在范围range(1,10)内,每一行的最后一个元素均是a和b相等,我们可以假设a代表行,b代表列。此时我们采取一个思路:控制变量法:即控制行不变(a不变),列进行遍历(b变化)。#先保持a不变for b in range(1,a+1):##注意range是左闭右开,所以需要额外加一 print(b,'x',a,'=',b*

2021-03-22 17:16:28 165

原创 MySQL8.0 记一次Temporary file write failure

背景:开发同事反馈数据库有报错Temporary file write failure,咋一看临时文件磁盘满了?然鹅并不是~处理过程1.首先我并不是一个特别详细开发的人,要来SQL自己先跑一遍,果然报错复现了ERROR 1878 (HY000): Temporary file write failure.2.检查临时文件路径以及对应的磁盘使用情况:mysql> show variables like 'tmpdir';+---------------+-----------------+.

2020-12-23 16:35:37 869 2

原创 MySQL表关联join方式优化思路

概念引入MRR(Multi-Range Read)处理思路:空间换时间,化随机读为顺序读,优化通过二级索引检索回表的性能问题MySQL中,索引是B+ tree,在叶子节点中,数据是逻辑有序的,如主键索引中,是按照主键列有序排列,而二级索引中,是按照索引列进行有序排列,而二级索引的叶子节点存储的是索引列和主键值,索引列是有序的,此时主键值却不一定是有序的,往往是无序的,此时通过索引列定位到主键值,然后回表往往是离散的读取数据。MRR中就是先在内存中分配read_rnd_buffer空间,先把二级索

2020-11-12 21:29:43 177

原创 记一次MYSQL ERROR 3886 (HY000)处理过程

今天有开发找我反馈表关联的时候有报错,其原因是两个表的排序规则不一致,我一想这还不是三下五除二,改统一不就完事了。然鹅,事情往往不是一帆风顺,处理过程以及报错如下:mysql> alter table prod_dms_center_user.us_user CONVERT TO CHARACTER SET utf8mb4 collate utf8mb4_bin;ERROR 3886 (HY000): Could not change column 'phone' of table 'us_us

2020-11-11 20:20:40 311

原创 Oracle导入数据外键问题

假设表t2的列fk_t2上有外键,依赖于t1表的pk_t1列,t3表的列fk_t3上有外键,依赖于t2表的pk_t2,即表t2既是父表也是子表,当将t2表数据清空重新导入时,很容易遇到外键冲突问题。外键约束的四种状态:(1)ENABLE VALIDATE:约束在创建时,默认就是此状态。此状态会“检查表中原有行和新插入的行”。(2)ENABLE NOVALIDATE:不能输入违反约束的新数据。但是,在创建约束时,并不检查表中原有行。(3)DISABLE VALIDATE:检查表中原有行是否违反约.

2020-11-02 19:30:53 537

原创 sql_require_primary_key参数详解

MySQL 8.0.13版本新引进一个参数,该参数非常实用,要求表有主键,减少了DBA对于代码的审计。官方文件信息:sql_require_primary_key: Whether tables must have a primary key. Added in MySQL 8.0.13.实验Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show variables .

2020-10-12 19:44:55 3894

原创 MySQL 8.0 MGR组复制集群搭建

目录1.MySQL各式同步方式说明2.MySQL MGR搭建前提要求3.搭建步骤1.基础信息2.配置文件相关参数信息3.创建复制账号并安装插件(所有节点)4.单主模式5.切换为多主模式过程所遇到的坑:1.MySQL各式同步方式说明异步复制:主库binlog落盘之后,即返回给客户端,事务已提交。全同步复制:所有从库均已接收到主库的binlog信息,并均已日志应用,才会返回客户端事务已提交,存在一定的性能问题,当主库长事务影响尤甚半同步复制:主库下游有一个从库接收到主库binlog,并写到relay-

2020-09-29 22:20:49 520

原创 MySQL MHA高可用架构搭建

一. 环境信息角色IP主机名网卡MHA node10.210.99.33liupc3ens192master10.210.99.31liupc1ens192slave10.210.99.32liupc2ens192VIP:10.210.99.30二. 配置MySQL node主从复制(该部分不叙述了,详情可以自行百度).三. 配置好相关依赖所有节点安装好依赖(我这边是以非rootOS用户mysql执行的)sudo yum install

2020-09-25 16:25:20 177 2

原创 MySQL 8.0版本 binlog2sql 解析binlog

1.确认MySQL相关配置以及用户权限使用MySQL server必须设置以下参数:[mysqld]server_id = 1log_bin = /var/log/mysql/mysql-bin.logmax_binlog_size = 1Gbinlog_format = rowbinlog_row_image = fulluser需要的最小权限集合:select, super/replication client, replication slave建议授权GRANT SELECT

2020-09-08 19:57:48 1491

原创 Oracle通过触发器审计一张表的DML

1.场景描述:工作中,OGG数据同步的时候发现目标端B库有部分update操作没有同步过去,通过logminer挖掘源端A库发现没同步的操作是ogg配置用户执行操作的,OGG抽取进程中又设置了TRANLOGOPTIONS EXCLUDEUSER参数(防止出现级联同步)排除了OGG配置用户的操作,通过查看发现该同步表未从其他库同步过来(即A库是这张同步表最原始的数据来源)。然而logminer挖掘出来的os_username,machine_name和session_info都是unkown。通过表审计可

2020-08-26 15:36:51 529

原创 MySQL 自增主键不连续测试

日常工作中,是否遇到明明设置了自增主键,结果自增ID却是非连续性的情况呢,今天就通过测试来复现这种情况测试表以及相关参数设置如下:mysql> show variables like '%auto_increment%'; +--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_incremen.

2020-08-24 13:07:34 171

原创 浅谈Oracle B-tree索引扫描方式(下)

上篇再续,书接上一回4.Index Fast Full Scans适用场景:当查询仅访问索引列的情况(逻辑上是无序的),可以理解为需要的数据可以通过访问索引获取,不需要通过回表获取数据。工作方式:数据库多块读取所有分支节点和叶子节点。数据库将忽略分支块和根块,并读取叶块上的索引条目。示例:SYS@pudge> set linesize 200 SYS@pudge> set autotrace onSYS@pudge> select id from.

2020-08-20 18:00:24 228

原创 浅谈Oracle B-TREE索引扫描方式(上)

1.Index Unique Scans适用场景:主键或唯一索引的等值匹配,最多只会返回一行数据,是单块读 索引唯一扫描的工作方式 示例:SYS@pudge> create table xiaom.test1(id number primary key,create_time date default sysdate);Table created.SYS@pudge> begin 2 for i in 1...

2020-08-20 09:54:34 812

原创 mysql_config_editor & my_print_defaults

mysql_config_editor用于给指定的连接和密码生成一个加目录下的隐藏密码文件.mylogin.cnf,避免密码直接暴露(不是绝对保密,后续有解法)

2020-08-18 18:32:21 295

原创 mysqlfrm解析表结构

1.下载并安装相关软件包地址:mysql-utilities-1.6.5.tar.gz下载地址[root@cnsz92vl13410 mysql]# lsmysql-utilities-1.6.5.tar.gz[root@cnsz92vl13410 mysql]# tar -xvf mysql-utilities-1.6.5.tar.gz [root@cnsz92vl13410 ~]# cd /home/mysql/mysql-utilities-1.6.5/[root@cnsz92vl1341

2020-08-18 10:51:19 425

原创 MySQL5.7版本二进制安装

1.安装包下载选择通用型二进制安装包,下载地址:https://downloads.mysql.com/archives/community/我这边选择的5.7.19版本,对应的安装包为:mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz2.服务器上创建相关MySQL用户和路径创建MySQL用户[root@cnsz92vl13410 ~]# groupadd mysql[root@cnsz92vl13410 ~]# useradd mysql -g mysq

2020-08-17 17:10:55 600

空空如也

空空如也

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

TA关注的人

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