自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP思维导图

2020-12-08 12:04:33 577 1

转载 Golang三色标记、混合写屏障GC模式图文全分析

垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world),STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次的迭代优化来解决这个问题,本文将逐步推进Golang中GC的每次推进,来理解Gc的原理。...

2020-11-20 00:52:50 2726 3

原创 go接口之结构体实现和结构体指针实现

接口也是 Go 语言中的一种类型,它能够出现在变量的定义、函数的入参和返回值中并对它们进行约束,不过 Go 语言中有两种略微不同的接口,一种是带有一组方法的接口,另一种是不带任何方法的interface{}:图 4-7 Go 语言中的两种接口Go 语言使用iface结构体表示第一种接口,使用eface结构体表示第二种空接口,两种接口虽然都使用interface声明,但是由于后者在 Go 语言中非常常见,所以在实现时使用了特殊的类型。需要注意的是,与 C 语言中的void *...

2020-11-01 18:51:53 2805

转载 CockRoachDB分布式事务 - HLC和MVCC的相映成趣

概述计算机科学一直是一门关于trade-off的科学。在数据库领域,事务的隔离级别便是trade-off的直接体现:隔离级别越高,事务的隔离性越好,但是性能也越差。为了在提高性能的同时保证隔离性,计算机科学家们想出了各种方法,但其中最引人注目的莫过于MVCC了,它使得只读事务与读写事务之间不会互相干扰,能够有效地提高事务的并发度。 但是自从分布式数据库出现后,分布式事务引入了额外的复杂性。首先分布式事务需要保证原子性,如何保证事务原子性的同时不丢失可用性和性能?其次分布式节点之间的“时间”不一致,MVC

2020-10-13 14:21:44 1213

转载 Golang ASM简明教程

阅读原文获得最佳体验:Golang ASM简明教程 - Jiajun的编程随想这几天倒腾了一下Go的ASM,然后写了一个简单的汇编代码,记录一下以防忘记。首先要说明的是Go的ASM是一种中间码,或者说是 众多汇编语言的一种抽象体,但是呢,又不完全是抽象,总之,揉合了Go自定义的一部分,和真实汇编语言。这里主要记录的就是 Go自己定义的那部分。首先如果你想查看一段Go代码产生的汇编码,可以这样:$ cat main.gopackage mainfunc add(int64, int64)

2020-09-29 21:19:38 681

转载 基于Redis的Stream类型的完美消息队列解决方案

1 概述Redis5.0带来了Stream类型。从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Message Queue)的完善实现。用过Redis做消息队列的都了解,基于Reids的消息队列实现有很多种,例如:PUB/SUB,订阅/发布模式 基于List的 LPUSH+BRPOP 的实现 基于Sorted-Set的实现每一种实现,都有典型的特点和问题,这个在 Redis 实现消息队列一文中有介绍。基于Redis实现消息队列http://www.hellokang.n

2020-09-22 16:11:08 1902 9

转载 汇编是深入理解 Go 的基础

作者:ivansli,腾讯 IEG 运营开发工程师在深入学习 Golang 的 runtime 和标准库实现的时候发现,如果对 Golang 汇编没有一定了解的话,很难深入了解其底层实现机制。在这里整理总结了一份基础的 Golang 汇编入门知识,通过学习之后能够对其底层实现有一定的认识。0. 为什么写本文平时业务中一直使用 PHP 编写代码,但是一直对 Golang 比较感兴趣,闲暇、周末之余会看一些 Go 底层源码。近日在分析 go 的某些特性底层功能实现时发现:有些又跟 runti

2020-09-07 23:06:36 1650

转载 Raft算法详解

Paxos算法详解一文讲述了晦涩难懂的Paxos算法,以可理解性和易于实现为目标的Raft算法极大的帮助了我们的理解,推动了分布式一致性算法的工程应用,本文试图以通俗易懂的语言讲述Raft算法。一、Raft算法概述不同于Paxos算法直接从分布式一致性问题出发推导出来,Raft算法则是从多副本状态机的角度提出,用于管理多副本状态机的日志复制。Raft实现了和Paxos相同的功能,它将一致性分解为多个子问题:Leader选举(Leader election)、日志同步(Log replication)

2020-05-20 10:04:58 440

原创 Zookeeper与Redis哨兵

Redis选举领头SentinelSentinel是Redis实现高可用的保证。Sentinel系统作用就是监视Redis服务器集群,它可以不停的获得redis集群状态,当一个主节点挂了,故障转移操作会在从节点中选出一个新的主节点,这里故障转移就是由Sentinel来主导完成的。不要把Sentinel想的太复杂,它其实就是一个特殊工作模式的Redis服务器而已,Redis是集群部署的,这里的Sentinel也是要集群部署的,要是非单点部署,你的Sentinel挂了,此时的Redis集群就GG了。

2020-05-19 12:01:36 1506

转载 Golang中Context包深入浅出

转自 :https://www.jianshu.com/p/dcbd87eb1a3f控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context。什么是WaitGroupWaitGroup以前我们在并发的时候介绍过,它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。func main() { var wg sync.WaitGroup wg.Add(2) go func() { .

2020-05-15 16:13:56 330

原创 【Golang实现设计模式】桥接模式

介绍意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。关键代码:抽象类依赖实现类。应用实例:1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化。生灵通过功能的委派,调用肉体对象的功能,使得生灵可以动态地.

2020-05-10 21:54:54 311

原创 【Golang实现设计模式】状态模式

介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何时使用:代码中包含大量与对象状态有关的条件语句。如何解决:将各种具体的状态类抽象出来。关键代码:通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法。而且,状态模式的实现类的方法,一般返回值,或者是改变实例变量的值。也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。状态

2020-05-09 22:36:08 631

原创 【Golang实现设计模式】观察者模式

有道云地址:http://note.youdao.com/noteshare?id=7698953bde45db34664db2b5eb9c6e82&sub=5B37C3046FE14BA09907491096A1321F先贴网上的介绍。当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都

2020-05-08 23:22:17 653 1

转载 Golang设计模式

参考https://design-patterns.readthedocs.io/zh_CN/latest/index.html https://github.com/senghoo/golang-design-pattern设计模式 创建型模式 简单工厂模式( Simple Factory Pattern ) Golang实现 工厂方法模式(Fact...

2020-05-07 22:32:31 320

原创 【Elastic Search权威指南 读书小记8】ES之深入分片

有道云排版好一点:https://note.youdao.com/ynoteshare1/index.html?id=a38978147bd85dd15148027aeadd1c92&type=note倒排索引存储了比包含了一个特定term的文档列表多地多的信息。它可能存储包含每个term的文档数量,一个term出现在指定文档中的频次,每个文档中term的顺序,每个文档的长度,所有...

2020-05-07 17:51:14 1712

原创 【Elastic Search权威指南 读书小记7】ES之索引管理

有道云:http://note.youdao.com/noteshare?id=c71c2939061bcd6d6bb156dcfbb1ba57&sub=DB8AE886EF444AE49D1817D70DD48B86注意:ES的索引只的是INDEX,类似mysql的database,而不是mysql的索引key1.创建删除索引可以被添加时自动创建,也可以手动创建。也可以使用d...

2020-05-06 23:18:55 1860

原创 【Elastic Search权威指南 读书小记6】ES之分布式搜索

有道云笔记:https://note.youdao.com/ynoteshare1/index.html?id=5fe5c88843a8519ca0b258104593f63d&type=note为了充分使用每个节点的性能,查询的时候实际上是分治法到每个节点取一定量的数据,然后通过归并排序等方式在查询节点整合数据并返回。查询阶段查询阶段包含以下三步:1.客户端发送一个 ...

2020-05-06 16:56:22 1907

原创 【Elastic Search权威指南 读书小记5】ES之映射和分析

有道云笔记:http://note.youdao.com/noteshare?id=ebcd395028460a105f45f79e4e5ac7cd映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型( string , number , booleans , date 等)。分析(analysis)机制用于进行全文文本(Full Text)的分词,以建立...

2020-05-06 15:36:34 1985

原创 【Elastic Search权威指南 读书小记4】ES之主从同步

有道云笔记:https://note.youdao.com/ynoteshare1/index.html?id=682ce6287c26572497e56cc1967b9ba5&type=note路由文档到分片shard = hash(routing) % number_of_primary_shardsrouting 值是一个任意字符串,它默认是 _id 但也可以自定义。这个...

2020-05-03 21:45:06 5444

原创 【Elastic Search权威指南 读书小记3】ES之数据操作

什么是文档?通常,我们可以认为对象(object)和文档(document)是等价相通的。不过,他们还是有所差别:对象(Object)是一个JSON结构体——类似于哈希、hashmap、字典或者关联数组;对象(Object)中还可能包含其他对象(Object)。 在Elasticsearch中,文档(document)这个术语有着特殊含义。它特指最顶层结构或者根对象(root obje...

2020-05-03 01:12:28 2131

原创 【Elastic Search权威指南 读书小记2】ES之分布式集群

从我的角度来看,ES相对于mongo这种传统nosql来说,最大优点是全文搜索和扩展性了。因为mongo的性能实在也不咋地,分表之后造成的处理统计麻烦比之mysql更让人头大。而分布式可扩展的ES可以让使用者没有后顾之忧,确实感觉不错。一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的 cluster.name...

2020-05-02 15:04:52 2047

原创 【Elastic Search权威指南 读书小记1】初识es

五一期间抽时间学一下es,写了笔记顺便整理发布一下在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:Relational DB -> Databases -> Tables -> Rows -> ColumnsElasticsearch -> Indi...

2020-05-02 03:37:10 2986

原创 【go小记】切片扩容策略

func growslice(et *_type, old slice, cap int) slice { newcap := old.cap doublecap := newcap + newcap if cap > doublecap { newcap = cap } else { if old.len < 1024 { newcap = doublecap...

2020-03-17 15:40:41 3638

转载 一次完整的HTTP事务是怎样一个过程?

转自https://blog.51cto.com/linux5588/1351007声明:本文章中的说法仅是个人理解总结,不一定完全正确,但是可以有助于理解。当我们在浏览器的地址栏输入www.linux178.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢?以下过程仅是个人理解:域名解析 --> 发起TCP的3次握手 --> 建立TCP...

2019-07-01 16:24:31 3865

转载 【MySQL】当前读、快照读、MVCC

当前读:   select...lock in share mode (共享读锁)  select...for update  update , delete , insert  当前读, 读取的是最新版本, 并且对读取的记录加锁, 阻塞其他事务同时改动相同记录,避免出现安全问题。  例如,假设要update一条记录,但是另一个事务已经delete这条数据并且commit了,如...

2019-06-30 20:15:50 401

转载 网络7层协议,4层,5层?理清容易混淆的几个概念

转自https://blog.youkuaiyun.com/cc1949/article/details/79063439一、7层7层是指OSI七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。各层的作用及...

2019-05-24 11:21:09 524

转载 mysql幻读详解

之前一直以为要锁表才能解决幻读,没想到mvvc和nextkey-locking,组合使用就可以解决了。转自https://www.jianshu.com/p/47e6b959a66eMySQL解决幻读啥是幻读The so-called phantom problem occurs within a transaction when the same query produces di...

2019-05-15 22:52:01 443 1

转载 MYSQL索引优化查询之ICP、MRR、BKA

Index Condition Pushdown(ICP)Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式。ICP原理禁用ICP,存储引擎会通过遍历索引定位基表中的行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。开启ICP,如果部分WHERE条件能使用索引中的字段,MySQL Se...

2019-05-13 23:42:05 595

转载 Redis中3种特殊的数据类型(BitMap、Geo和HyperLogLog)

转自https://www.jb51.net/article/136322.htm这篇文章主要给大家介绍了关于Redis中3种特殊的数据类型(BitMap、GEOADD和GEODIST)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。前言Reids 在 Web 应用的开发中使用非常广泛,几乎所有的后端技术...

2019-05-05 23:22:04 1904

转载 MySQL InnoDB MVCC 机制的原理及实现

链接:https://zhuanlan.zhihu.com/p/64576887什么是 MVCCMVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来,不同事务并发过程中,SEL...

2019-05-04 16:09:21 450

转载 IO多路复用机制详解

转自https://blog.youkuaiyun.com/sehanlingfeng/article/details/78920423服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBL...

2019-05-04 02:17:56 262

转载 redis的五大数据类型和底层数据结构的关系

今天看《Redis设计与实现》的时候想总结一下,但是这哥们已经写得很好了,转载一下转载出处https://www.cnblogs.com/ysocean/p/9102811.html#_label11、对象的类型与编码  Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对...

2019-05-01 22:06:21 1224

转载 通过一个案例分析讲解mysql的auto_increment锁带来的表锁(innodb_autoinc_lock_mode)

学习的时候看到auto_increment锁的问题,已经innodb_autoinc_lock_mode参数的存在,转载一篇不错文章,慢慢品味案例描述:线上一张表有大概2亿条,50个G左右大小的数据,业务进行重新规划,需要将绝大部分数据进行历史归档.当时为了方便,就新建一张相同结构的表,然后快速的rename成线上表,然后将备份表需要导入到线上表的数据进行insert into sel...

2019-04-25 00:11:24 1150

原创 phpmyadmin 连接mysql8 报requested authentication method unknown to the client [caching_sha2_password]

#登录mysqlmysql -u root -pALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';#添加远程登录用户CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!';GRANT ALL PRIVILEGES...

2019-04-19 15:39:25 3602

转载 Mysql怎么利用explain来优化

MySQL 提供了一个 EXPLAIN 命令, 它可以对SELECT语句进行分析, 并输出SELECT执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:EXPLAINSELECT*fromuser_infoWHEREid<300;准备为了接下来方便演示 EXPL...

2019-04-18 17:21:14 476

原创 Docker安装mysql和phpmyadmin

安装的mysql:5.6版本,其他版本修改mysql:5.6就行了,通过docker exec -it mymysql "/bin/sh"可以进入容器直接操作docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql ...

2019-04-16 13:44:23 662

转载 yum安装时出现:Cannot retrieve metalink for repository: epel. Please verify its path and try again

在CentOS 6.3 x86_64下安装php-mcrypt的时候出现了问题:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again,需要安装epel源。解决方法: 一句话:把/etc/yum.repos.d/epel.repo,文件第3行注释去掉,把第四行注释掉。具...

2019-04-12 11:00:43 339

原创 Docker动态给容器修改端口映射

获取虚拟机ip docker inspect test03 | grep IPAddress修改映射 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 31101 -j DNAT --to-destination 192.168.42.2:6379保存映射iptables-save...

2019-04-11 15:12:37 3677

转载 Centos No package golang available 报错处理

问题描述前两天用docker建了个虚拟机,试试在虚拟机安装go居然不行,原来是少装了这个在centos 上使用yum install 命令安装go时,报错“No package golang available”,经查证是缺少缺少EPEL(epel是社区强烈打造的免费开源发行软件包版本库,系统包含大概有1万多个软件包)解决过程安装epel(Extra Packages for En...

2019-04-11 14:43:54 1179

原创 【golang笔记】 切片自定义排序

sort.Slice(b, func(i, j int)bool { return b[i] < b[j] })

2019-04-10 11:36:00 4842

空空如也

空空如也

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

TA关注的人

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