自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mreden的博客

喜欢各种程序的sao操作!

  • 博客(128)
  • 收藏
  • 关注

原创 mysql schema设计规范

1.尽量避免过度设计;2.使用小而简单的合适数据类型,除非真的需要,否则应尽可能避免使用 NULL;3.尽量使用相同的数据类型存储相似或相关的值,尤其是要在关联条件中使用的列;4.注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存;5.尽量使用整型定义标识列;6.避免使用 MySQL 已经遗弃的特性,例如指定浮点数的精度,或者整型的显示宽度;7.小心使用 ENUM 和 SET;8.最好避免使用 BIT。...

2020-12-26 17:41:38 244

原创 MySQL常见的三种锁以及特性

打卡(2020-05-07)锁问题的由来锁是计算机协调多个线程并发访问某一资源的机制,在数据库中除了io,cpu的抢用以外,数据也是一种允许供许多个用户共享的资源。如何保证并发的一致性,有效性是数据必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。常见的三种锁,锁的特性如下表级锁:开销小,加锁快;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。页面锁:开...

2020-05-07 23:39:02 1772

原创 MySQL优化表的数据类型

打卡(2020-05-05)优化表的数据类型我们知道表的字段使用何种数据类型需要根据应用使用的场景来进行判断,表的字段设计可以留出一点冗余,但是不应该冗余过程,过长就会太浪费表的空间。 // 查出指定需要优化的列 select * from tbl_name PROCEDURE ANALYZE();; // 查看表的数据结构 desc tbl_name...

2020-05-05 22:16:56 329 1

原创 MySQL巧用RAND()提取随机行

打卡(2020-05-05)巧用RAND()提取随机行 // 随机排序 然后取出6条数据 select * from category order by rand() limit 6;寄语:望着青灯古佛的夜晚,在想你面庞的夜晚!...

2020-05-05 22:16:15 518

原创 MySQL常见的正则表达式的使用

打卡(2020-05-04)MySQL常见的正则表达式的使用1.^在字符串的开始处进行匹配,返回1表示匹配成功,返回0表示不匹配。 select 'abcdefg' regexp '^a'; // 这个是返回值是1因为这个是从开始处匹配的。$在字符的末尾处进行匹配,返回1表示匹配成功,返回0表示不匹配。 select 'abcdefg' regexp 'g$';...

2020-05-04 00:17:55 225

原创 MySQL使用SQL提示优化

打卡(2020-05-03)使用SQL提示常见的一些sql提示use index在查询中表名的后面,添加use index来提供希望MySQL去参考的索引列表,就可以让MySQL不在考虑其他可用的索引。 select count(*) from rental use index (idx_rental_date); // 这样就可以指定使用的索引2.ignore in...

2020-05-03 22:56:07 220

原创 MySQL如何优化分页查询

打卡(2020-05-02)MySQL如何优化分页查询一般分页查询是创建覆盖索引能够比较好的提升性能。第一种优化思路在索引上完成分页操作,最后根据主键关联回原表查询所需要的其他列内容 // 未优化之前的sql,这个相当于是全表扫描 select film_id,description from film order by title limit 50,5; ...

2020-05-01 17:52:51 695

原创 MySQL如何优化or条件

打卡(2020-05-01) 陌生人的你为了将来的自己,是否还在努力!mysql如何去优化or条件对于含有or的查询子句,如果要利用索引则or之间的每个条件列都必须用到索引;如果没有我们就需要考虑增加索引。 // 查看索引的方式 show index form 表名;上面是一个简洁的优化方式,有更好的方式可以提出来...

2020-05-01 16:39:05 903

原创 MySQL优化GROUP BY语句

打卡(2020-04-29)优化GROUP BY语句 // group by 的使用 GROUP BY col1 col2,... // 如果查询group by但用户想要避免排序结果的消耗,可以指定order by null禁止排序 // `ORDER BY NULL` //禁止排序...

2020-04-29 21:53:37 171

原创 MySQL优化order by语句

打卡(2020-04-27)优化order by语句mysql的两种排序方式1.第一种就是通过有序索引顺序扫描直接返回数据,常见的是使用explain分析查询Extra显示Using index,这种情况不需要额外的排序,高效率。2.通过返回数据进行排序,通常是使用explain分析查询语句使用Extra表示FilesortFilesort只是表示排序名字,至于是怎么排序是在内存中排序...

2020-04-27 21:49:49 205

原创 MySQL常见的SQL的优化大批量插入数据

打卡(2020-04-26)1.大批量插入数据时候1.第一种 // 当我们使用load命令大量导入数据的时候,可以修改设置提高导入速度。 // 关闭 alter table 表名 DISABLE KEYS; // 开启 alter table 表名 ENABLE KEYS; // 解释:DISABLE KEYS和ENABLE KEYS用来打开或者...

2020-04-26 21:11:44 534

原创 MySQL索引匹配规则以及常见的两个简单实用的优化办法

打卡(2020-04-25)MySQL如何使用索引B-Tree注意的点b-trre不是binary tree 而是balance treeb-tree查询类型分为:匹配全值查询。匹配区间值查询。匹配最左前缀查询(这个是首要原则)。仅仅对索引进行查询这样的效率会更高。匹配列的前缀,仅仅使用索引中的第一列,包含索引第一列的开头一部分查找。能够实现索引匹配部分精确而其他部分进行范...

2020-04-25 22:23:48 353

原创 MySQL确定了SQL问题并采取相应的优化措施

打卡(2020-04-23)确定了问题并采取相应的优化措施一般的情况下采取的建立索引来解决检索问题B-Tree索引:使我们最常见的索引类型,大部分引擎都支持Hash索引:只有memory引擎上支持(主要是建立在Memory/Heap)R-Tree:空间索引 主要使用在地理位置使用Full-text:全文索引,myisam引擎使用索引MyISAM引擎InnoDB引擎M...

2020-04-23 20:59:15 124

原创 MySQL通过trace分析优化器如何选择执行计划

MySQL优化(2020-04-22)通过trace分析优化器如何选择执行计划mysql 5.6提供了对sql跟踪trace,我们可以通过trace查看可以清楚的知道优化器执行过程,从而知道优化器的行为,可以帮助我们理解优化。使用方式 // 首先得打开trace设置显示格式我json格式,以及设置trace最大的可以使用的大小,设置这个原因默认大小比较小,会显示不完整影响分析。 ...

2020-04-22 20:08:05 321

原创 MySQL通过show profile分析SQL

通过show profile 分析SQL // 我们可以使用命令检查是否支持show profile select @@have_profiling; // 返回 yes 或者 no // profiling 默认当前session是关闭的:0 关闭 1 开启 select @@profiling; //查询是否开启profiling ...

2020-04-21 19:42:20 210

转载 Go 语言如何实现反射

interface,它是 Go 语言实现抽象的一个非常强大的工具。当向接口变量赋予一个实体类型的时候,接口会存储实体的类型信息,反射就是通过接口的类型信息实现的,反射建立在类型的基础上。Go 语言在 reflect 包里定义了各种类型,实现了反射的各种函数,通过它们可以在运行时检测类型的信息、改变类型的值。types 和 interfaceGo 语言中,每个变量都有一个静态类型,在编译阶段就...

2020-04-20 21:41:15 396

原创 通过explain分析低效sql的执行计划

MySQL优化(2020-04-20)通过explain分析低效sql的执行计划表示列中文含义取值select_type表示的查询类型sumple(简单表,不使用表的链接查询和子查询) primary_key(主查询) union(union中后面的查询) subquery(子查询)table查询的表表名type查询的类型all(全表扫描)/ind...

2020-04-20 21:28:32 271

转载 如何利用反射比较两个对象完全相同

Go 语言中提供了一个函数可以完成此项功能:func DeepEqual(x, y interface{}) boolDeepEqual 函数的参数是两个 interface,实际上也就是可以输入任意类型,输出 true 或者 flase 表示输入的两个变量是否是“深度”相等。先明白一点,如果是不同的类型,即使是底层类型相同,相应的值也相同,那么两者也不是“深度”相等。type MyIn...

2020-04-20 19:00:46 561

转载 什么情况下需要使用反射

使用反射的常见场景有以下两种:不能明确接口调用哪个函数,需要根据传入的参数在运行时决定。不能明确传入函数的参数类型,需要在运行时处理任意对象。【引申1】不推荐使用反射的理由有哪些?与反射相关的代码,经常是难以阅读的。在软件工程中,代码可读性也是一个非常重要的指标。Go 语言作为一门静态语言,编码过程中,编译器能提前发现一些类型错误,但是对于反射代码是无能为力的。所以包含反射相关的代...

2020-04-18 21:10:22 4908 1

转载 什么是反射

维基百科上反射的定义:在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。难道不用反射就不能在运行时访问、检测和修改它本身的状态和行为吗?问题的回答,其实要首先理解什么叫访问、检测和修改它本身状态或行为,它的本质是什么?实际上,它的本质是程序在运行期探知对象的类...

2020-04-18 21:00:46 1799

原创 context.Value 的查找过程是怎样的

type valueCtx struct { Context key, val interface{}}它实现了两个方法:func (c *valueCtx) String() string { return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)}func (c *valueCtx) Val...

2020-04-18 20:24:44 1125

原创 context 如何被取消

context 包的代码并不长,context.go 文件总共不到 500 行,其中还有很多大段的注释,代码可能也就 200 行左右的样子,是一个非常值得研究的代码库。类型名称作用Context接口定义了 Context 接口的四个方法emptyCtx结构体实现了 Context 接口,它其实是个空的 contextCancelFunc函数取消函数...

2020-04-18 19:32:50 1008

原创 context 有什么作用

Go 常用来写后台服务,通常只需要几行代码,就可以搭建一个 http server。在 Go 的 server 里,通常每来一个请求都会启动若干个 goroutine 同时工作:有些去数据库拿数据,有些调用下游接口获取相关数据……这些 goroutine 需要共享这个请求的基本数据,例如登陆的 token,处理请求的最大超时时间(如果超过此值再返回数据,请求方因为超时接收不到)等等。当请求被...

2020-04-17 22:21:23 1938

原创 golang context 是什么

Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。随着 context 包的引入,标准库中很多接口因此加上了 context 参数,例如 database/sql 包。c...

2020-04-17 22:16:16 212

转载 如何实现字符串和byte切片的零拷贝转换

这是一个非常精典的例子。实现字符串和 bytes 切片之间的转换,要求是 zero-copy。想一下,一般的做法,都需要遍历字符串或 bytes 切片,再挨个赋值。完成这个任务,我们需要了解 slice 和 string 的底层数据结构:type StringHeader struct { Data uintptr Len int}type SliceHeader struct {...

2020-04-17 22:03:35 610 1

转载 如何利用unsafe获取slice&map的长度

获取 slice 长度通过前面关于 slice 的文章,我们知道了 slice header 的结构体定义:// runtime/slice.gotype slice struct { array unsafe.Pointer // 元素指针 len int // 长度 cap int // 容量}调用 make 函数新建一个 slice,底层调用的是...

2020-04-17 21:58:12 461

转载 如何利用unsafe包修改私有成员

对于一个结构体,通过 offset 函数可以获取结构体成员的偏移量,进而获取成员的地址,读写该地址的内存,就可以达到改变成员值的目的。这里有一个内存分配相关的事实:结构体会被分配一块连续的内存,结构体的地址也代表了第一个成员的地址。我们来看一个例子:package mainimport ( "fmt" "unsafe")type Programmer struct { nam...

2020-04-17 21:50:13 418

转载 Go指针和unsafe.Pointer有什么区别

Go 语言的作者之一 Ken Thompson 也是 C 语言的作者。所以,Go 可以看作 C 系语言,它的很多特性都和 C 类似,指针就是其中之一。然而,Go 语言的指针相比 C 的指针有很多限制。这当然是为了安全考虑,要知道像 Java/Python 这些现代语言,生怕程序员出错,哪有什么指针(这里指的是显式的指针)?更别说像 C/C++ 还需要程序员自己清理“垃圾”。所以对于 Go 来说,...

2020-04-17 21:45:39 383

转载 面向并发的内存模型

8.26打卡学习记录1.5 面向并发的内存模型在早期,CPU都是以单核的形式顺序执行机器指令。Go语言的祖先C语言正是这种顺序编程语言的代表。顺序编程语言中的顺序是指:所有的指令都是以串行的方式执行,在相同的时刻有且仅有一个CPU在顺序执行程序的指令。随着处理器技术的发展,单核时代以提升处理器频率来提高运行效率的方式遇到了瓶颈,目前各种主流的CPU频率基本被锁定在了3GHZ附近。单核CPU的...

2019-08-26 11:54:44 182

转载 函数、方法和接口

8.25打卡学习记录1.4 函数、方法和接口函数对应操作序列,是程序的基本组成元素。Go语言中的函数有具名和匿名之分:具名函数一般对应于包级的函数,是匿名函数的一种特例,当匿名函数引用了外部作用域中的变量时就成了闭包函数,闭包函数是函数式编程语言的核心。方法是绑定到一个具体类型的特殊函数,Go语言中的方法是依托于类型的,必须在编译时静态绑定。接口定义了方法的集合,这些方法依托于运行时的接口对象...

2019-08-24 16:50:58 9342 1

转载 数组、字符串和切片

1.3 数组、字符串和切片在主流的编程语言中数组及其相关的数据结构是使用得最为频繁的,只有在它(们)不能满足时才会考虑链表、hash表(hash表可以看作是数组和链表的混合体)和更复杂的自定义数据结构。Go语言中数组、字符串和切片三者是密切相关的数据结构。这三种数据类型,在底层原始数据有着相同的内存结构,在上层,因为语法的限制而有着不同的行为表现。首先,Go语言的数组是一种值类型,虽然数组的元...

2019-08-24 16:42:56 3338

转载 Hello, World 的革命

1.2 Hello, World 的革命在创世纪章节中我们简单介绍了Go语言的演化基因族谱,对其中来自于贝尔实验室的特有并发编程基因做了重点介绍,最后引出了Go语言版的“Hello, World”程序。其实“Hello, World”程序是展示各种语言特性的最好的例子,是通向该语言的一个窗口。这一节我们将沿着各个编程语言演化的时间轴,简单回顾下“Hello, World”程序是如何逐步演化到目前...

2019-08-24 16:39:02 261

转载 Go语言创世纪

文章转载于:https://www.goroutine.me/2019/08/19/genesis.htmlGo语言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明,设计新语言的最初的洪荒之力来自于对超级复杂的C++11特性的吹捧报告的鄙视,最终的目标是设计网络和多核时代的C语言。到2008年中期,语言的大部分特...

2019-08-24 16:31:33 485

原创 phpstorm格式化代码快捷键

phpstorm快速美化代码快捷键`Windows快捷键:Ctrl+Alt+L``Macos快捷键:Command+Option+L`

2019-07-05 18:32:23 2288

原创 计算两个时间中的每个周的开始时间和结束时间

计算两个时间中的每个周的开始时间和开始时间场景中文描述计算两个时间中的每个周的开始时间和开始时间代码示例计算两个时间中的每个周的开始时间和开始时间 //计算周 private function _week($sDate, $eDate) { $range_arr = array(); // 检查日期有效性 $this-&g...

2019-06-18 18:35:53 1223

原创 计算两个时间中的每个月的月初和月末

计算两个时间中的每个月的月初和月末场景中文描述计算两个时间中的每个月的月初和月末代码示例计算指定月份的月初和月末//计算指定月份的月初和月末private function _getCtime($month){ $month_start = strtotime($month); //指定年月份月初时间戳 $BeginDate = date('Y...

2019-06-18 16:21:34 2423

原创 数据结构-队列操作-用数组实现队列基本操作

数据结构中的队列基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取队列的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等!1、 场景1.1、 中文描述数据结构中的...

2019-06-13 22:09:29 1414

原创 数据结构-栈操作-用链表实现栈基本操作

原文链接:https://www.goroutine.me/datastructure/2019/06/11/data-structure-stack-based-on-linkedlist-01.html数据结构中的栈基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取栈的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等!1、 场景1.1、 中文描述数据结...

2019-06-13 18:15:07 5410

原创 数据结构-栈操作-用数组实现栈基本操作

数据结构中的栈基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取栈的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等!1、 场景1.1、 中文描述数据结构中的栈基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取栈的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等!2、 代码示例2.1、 基于数组使用栈的操作基于数组使用...

2019-06-13 17:56:50 1168

原创 数据结构-栈操作接口定义

原文链接:https://www.goroutine.me/datastructure/2019/06/05/data-structure-stack-interface.html数据结构中的栈基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取栈的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等!1、 场景1.1、 中文描述数据结构中的栈基本操作,我这里是...

2019-06-12 17:47:03 1001

空空如也

空空如也

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

TA关注的人

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