2023年2月17日

分布式事务管理器dtm第四篇:TCC模式

摘要: TCC:T是Try,第一个C是Confirm,第二C是Cancel。 AP向dtm注册全局事务后, 阅读全文

posted @ 2023-02-17 00:00 koushr 阅读(151) 评论(0) 推荐(0)

2023年2月2日

分布式事务管理器dtm第三篇:二阶段消息模式

摘要: 二阶段消息的英文是2-phase message。 AP先向dtm发送prepare消息,如果成功,则继续执行本地事务,如果成功,则继续向dtm发送submit消息。如果成功,则dtm调用各RM的接口,如果成功,则全局事务成功。 时序图如下: dtm服务端处理prepare时,会在dtm_barri 阅读全文

posted @ 2023-02-02 21:00 koushr 阅读(353) 评论(0) 推荐(0)

分布式事务管理器dtm第二篇:saga模式

摘要: 参考官方中文文档:https://dtm.pub/practice/saga.html saga核心思想是把一个长事务拆分多个短事务,由dtm协调,如果每个短事务都成功提交,那么全局事务就正常完成,如果某个步骤失败,则根据相反顺序调用补偿操作。 以转账为例,saga的时序图如下: AP把事务的编排信 阅读全文

posted @ 2023-02-02 20:10 koushr 阅读(287) 评论(0) 推荐(0)

2023年1月31日

分布式事务管理器dtm第一篇:介绍

摘要: https://dtm.pub/guide/start.html dtm全称是distributed transaction manager。dtm是cs架构。 dtm服务端部署: docker run --name dtm -p 36789:36789 -p 36790:36790 -e STOR 阅读全文

posted @ 2023-01-31 11:46 koushr 阅读(632) 评论(0) 推荐(0)

2022年9月8日

redis基础第四篇:script、function

摘要: redis执行lua脚本涉及到的命令: 1、eval 语法:eval "脚本" numkeys [key [key ...]] [arg [arg ...]] numkeys是key的个数,redis服务端通过这个参数知悉脚本后面哪些参数是key,哪些参数是arg。在脚本中,通过KEYS[1]、KE 阅读全文

posted @ 2022-09-08 20:05 koushr 阅读(251) 评论(0) 推荐(0)

2021年10月13日

第八篇:小顶堆、大顶堆及习题

摘要: 力扣215、数组中的第K个最大元素 要求时间复杂度不高于O(n)。 阅读全文

posted @ 2021-10-13 14:37 koushr 阅读(40) 评论(0) 推荐(0)

2021年7月6日

go基础第四篇:常见开发错误

摘要: 1、入参数组修改不了 一个无返回值的函数,入参是一个基本数据类型的数组,在函数中修改数组的值,是不会生效的。想要生效,需要把入参由数组改为数组指针或者slice。 如果数组的元素不是基本数据类型,而是自定义的struct类型,那么入参由普通数组改成指针数组也行。 需要再次确认下。 2、入参数组app 阅读全文

posted @ 2021-07-06 10:21 koushr 阅读(64) 评论(0) 推荐(0)

2021年6月28日

时序数据库

摘要: 时序数据库是专门用于存储和管理时间序列数据的数据库。时序数据库和传统关系库一样,是行式数据库,而不是列式数据库。时序数据库,开源代表是InfluxDB。 InfluxDB采用rust语言编写,占用内存较小。 阅读全文

posted @ 2021-06-28 23:29 koushr 阅读(81) 评论(0) 推荐(0)

2021年6月3日

d

摘要: d 阅读全文

posted @ 2021-06-03 19:28 koushr 阅读(27) 评论(0) 推荐(0)

2021年5月31日

列数据库

摘要: 行数据库用于OLTP,联机事务处理。而列数据库用于OLAP,联机分析处理。 开源的列数据库有ClickHouse和Druid。 ClickHouse是俄罗斯一家公司开源的,c++语言开发,占用内存较小,docker部署方便。docker run --name clickhouse -e TZ=Asi 阅读全文

posted @ 2021-05-31 22:38 koushr 阅读(115) 评论(0) 推荐(0)

2021年3月11日

go基础第三篇:context

摘要: 1、带取消的context context.WithCancel(parent Context) (ctx Context, cancel CancelFunc) 传入一个父context,返回一个可以手动取消的子context及其取消函数。 我们可以手动调用cancel()函数来取消子contex 阅读全文

posted @ 2021-03-11 11:01 koushr 阅读(116) 评论(0) 推荐(0)

2020年11月16日

IO多路复用

摘要: IO多路复用是一种同步IO模型,旨在实现一个线程可以监视多个文件句柄。一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作。没有文件句柄就绪就会阻塞应用程序,交出CPU。多路是指网络连接,复用指的是同一个线程。 多路复用有三种实现方式: 1、select实现 select仅仅知道有IO发生了, 阅读全文

posted @ 2020-11-16 20:05 koushr 阅读(567) 评论(0) 推荐(0)

2020年10月20日

linux基础第五篇:curl、wget、grep使用

摘要: curl curl -v -X GET http://127.0.0.1:9000/helloWorld curl -v -H "Content-Type:application/json" -X POST --data '{"name":"zhangsan"}' http://127.0.0.1: 阅读全文

posted @ 2020-10-20 12:31 koushr 阅读(364) 评论(0) 推荐(0)

2020年10月1日

d

摘要: d 阅读全文

posted @ 2020-10-01 16:01 koushr 阅读(301) 评论(0) 推荐(0)

2020年9月29日

linux基础第四篇:查看linux机器cpu、内存、内核等系统信息

摘要: linux服务器的cpu信息在/proc/cpuinfo文件中,内存信息在/proc/meminfo文件中。 通过文件可以获得物理cpu的个数、cpu的核数、逻辑cpu的个数 查看物理cpu个数: cat /proc/cpuinfo | grep "physical id" | sort | uni 阅读全文

posted @ 2020-09-29 20:09 koushr 阅读(603) 评论(0) 推荐(0)

2020年9月7日

redis基础第三篇:redis为什么那么快

摘要: 1、纯内存操作。 2、高效的数据结构。 3、使用I/O多路复用模型epoll。 见https://www.cnblogs.com/koushr/p/13986873.html 阅读全文

posted @ 2020-09-07 00:44 koushr 阅读(107) 评论(0) 推荐(0)

2020年9月4日

websocket协议及应用

摘要: websocket协议是一个应用层协议,地位和http协议是一样的。 websocket最主要的作用是实现 <!DOCTYPE html> <html lang="en"> <script> // 向后端发送一个websocket连接请求 let ws = new WebSocket('ws://1 阅读全文

posted @ 2020-09-04 09:57 koushr 阅读(192) 评论(0) 推荐(0)

2020年8月6日

第七篇:单调栈和前缀和

摘要: 单调栈 力扣316、去除重复字母 第一遍,看了题解,做了一下午,也没做正确。 阅读全文

posted @ 2020-08-06 19:32 koushr 阅读(133) 评论(0) 推荐(0)

2020年7月29日

go基础第二篇:利用pprof定位cpu和内存问题

摘要: 在项目的main.go文件中引入 _ "net/http/pprof" 在main函数中加入: go func() { _ = http.ListenAndServe(":6060", nil) }() 保证6060端口能访问到,如在容器中部署的话,别忘了添加端口映射。如果有防火墙的话,别忘了放开端 阅读全文

posted @ 2020-07-29 14:45 koushr 阅读(711) 评论(0) 推荐(0)

2020年7月27日

go基础第一篇:并发之channel

摘要: go不推荐使用共享内存机制,而是推荐使用CSP并发模型机制。 CSP全称是Communicating Sequential Processes,可以翻译成通信顺序进程(Communicating翻译成通信的意思)。简单解释就是,CSP模型由并发执行的实体组成,实体之间通过发送消息进行通信,发送消息时 阅读全文

posted @ 2020-07-27 19:05 koushr 阅读(240) 评论(0) 推荐(0)

2020年5月22日

docker第二篇:自定义Dockerfile文件

摘要: Dockerfile文件内容至少要有这么几项: 1、用FROM指定基础镜像 如FROM nginx 2、用COPY把宿主机上的文件复制到镜像中 如COPY ./aa.jar /path/ COPY后面跟的宿主机文件的路径不能是绝对路径,而只能是build上下文的相对路径。把aa.jar复制到path 阅读全文

posted @ 2020-05-22 18:16 koushr 阅读(429) 评论(0) 推荐(0)

2020年3月22日

kafka基本概念

摘要: 1、主题 Kafka将一组消息抽象归纳为一个主题(topic),也就是说,一个主题就是对消息的一个分类。生产者将消息发送到特定主题,消费者订阅主题或主题的某些分区进行消费。 2、消息 消息是Kafka通信的基本单位,由一个固定长度的消息头和一个可变长度的消息体构成。每一条消息称为Record。 3、 阅读全文

posted @ 2020-03-22 13:33 koushr 阅读(348) 评论(0) 推荐(0)

2020年1月10日

shell第六篇:

摘要: RT 阅读全文

posted @ 2020-01-10 23:10 koushr 阅读(235) 评论(0) 推荐(0)

2019年11月26日

grpc第四篇:grpc-go、grpc-java桩代码生成及服务端、客户端开发

摘要: 假设有一个proto文件,内容同https://github.com/grpc/grpc-go/blob/master/examples/helloworld/helloworld/helloworld.proto,如何生成golang或者java的桩代码? 生成golang桩代码: 1、安装pro 阅读全文

posted @ 2019-11-26 20:55 koushr 阅读(336) 评论(0) 推荐(0)

kafka副本同步机制

摘要: kafka的复制机制,既不是单纯的同步复制,也不是单纯的异步复制。同步复制要求所有的follower都复制完,这条消息才会被commit,这种复制方式对吞吐率影响较大。异步复制,数据只要被leader写入log就认为已经commit,这种情况下,如果follower都还没有复制完,leader突然宕 阅读全文

posted @ 2019-11-26 18:44 koushr 阅读(256) 评论(0) 推荐(0)

2019年11月5日

线性表、栈、队列、串、树、图

摘要: 1、线性表 线性表是由n个数据元素组成的有限序列。n定义为线性表的长度,n=0时,称为空表。 线性表的存储结构分为顺序表和链表。 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。 链表也是一种线性表,但是它不会按线性的顺序存储数据,而是在每一个 阅读全文

posted @ 2019-11-05 16:18 koushr 阅读(384) 评论(0) 推荐(0)

2019年10月28日

第六篇:滑动窗口算法及习题

摘要: 滑动窗口算法的基本思路是维护一个窗口,通过移动窗口的两个边界来处理问题。 具体来说,搞2个指针,一个指针代表窗口的左边界,一个指针代表窗口的右边界。 先保持左指针不动,一直移动右指针(扩大窗口),直到窗口不满足条件。此时把左指针往右移动一下(缩小窗口),再次一直移动右指针,直到窗口不满足条件。直到右 阅读全文

posted @ 2019-10-28 22:29 koushr 阅读(6475) 评论(0) 推荐(1)

2019年10月9日

第五篇:递归及尾递归

摘要: 尾递归是指 阅读全文

posted @ 2019-10-09 14:55 koushr 阅读(673) 评论(0) 推荐(0)

2019年8月29日

shell第五篇:

摘要: RT 阅读全文

posted @ 2019-08-29 11:50 koushr 阅读(364) 评论(0) 推荐(0)

grpc第一篇:What is gRPC

摘要: 本文将介绍gRPC和protocol buffers。gRPC可以利用protocol buffers作为其接口定义语言(Interface Definition Language,IDL)和信息交换格式。 预览 在gRPC中,一个客户端应用可以直接调用不同机器上的服务端应用的方法,就好像调用本地方 阅读全文

posted @ 2019-08-29 11:39 koushr 阅读(207) 评论(0) 推荐(0)

2019年7月3日

事务

摘要: ACID A是atomicity,原子性。 C是consistency,一致性。 I是isolation,隔离性。隔离级别很重要,脏读、不可重复读、幻读,都是隔离级别相关的问题。 D是durability,持久性。 下面以mysql数据库详细讲解一下隔离级别。 隔离级别有4种,由低到高,依次为Rea 阅读全文

posted @ 2019-07-03 19:45 koushr 阅读(704) 评论(0) 推荐(0)

2019年6月19日

EFK第一篇:

摘要: https://juejin.cn/post/7088314722432319524 阅读全文

posted @ 2019-06-19 11:53 koushr 阅读(326) 评论(0) 推荐(0)

2019年6月18日

分布式锁

摘要: 分布式锁的使用场景是什么呢? 之前红包需求的时候,有一个场景要用到分布式锁。同一个openid,最多只能抢到一个子红包。 1、先判断这个openid在不在该红包对应的已抢openid hash中 String hget(String key, String field); 2、如果在,就返回。如果不 阅读全文

posted @ 2019-06-18 23:14 koushr 阅读(710) 评论(0) 推荐(0)

2019年6月2日

kafka服务端

摘要: kafka服务端的节点称为broker,一个kafka集群有多个broker。每个topic都可以有多个分区,每个分区都可以有多个副本。broker数、分区数、副本数随时可以扩容,这是典型的分布式多副本冗余机制。 通过zookeeper从各broker中选出一个作为controller,contro 阅读全文

posted @ 2019-06-02 18:51 koushr 阅读(4505) 评论(0) 推荐(0)

2018年8月15日

linux基础第二篇:TCP SOCKET的状态

摘要: 建立TCP连接的三次握手: 1、client向处于LISTEN状态的server发送SYN后,变为SYN_SENT状态。 2、server收到SYN后,变为SYN_RECV状态,并向client返回SYN_ACK。 3、client收到SYN_ACK后,变为ESTABLISHED状态,并向serve 阅读全文

posted @ 2018-08-15 20:31 koushr 阅读(4887) 评论(0) 推荐(0)

2018年7月19日

linux基础第一篇:ss、lsof、watch命令使用

摘要: ss ss命令和netstat命令的作用一样,参数也差不多,比netstat快。 ss是Socket Statistics的缩写,意思是套接字统计。 lsof lsof -i:8080 watch watch -n 1 'free -h' 每隔1s执行一次命令 阅读全文

posted @ 2018-07-19 09:13 koushr 阅读(562) 评论(0) 推荐(0)

2018年6月15日

lua基础第一篇:and、or运算

摘要: lua中的and和or是短路逻辑运算符,虽说是逻辑运算符,但他们返回的不是布尔值,而是操作数本身: a and b:如果a为false或nil,会返回a,否则返回b。 a or b:如果a为非nil且非false,会返回a,否则返回b。 阅读全文

posted @ 2018-06-15 18:44 koushr 阅读(176) 评论(0) 推荐(0)

2018年6月7日

case when使用

摘要: case when可以用在select后面,也可以用在order后面,也可以用在update后面。 case when语法: case when condition1 then result1 when condition2 then result2 when conditionn then res 阅读全文

posted @ 2018-06-07 21:03 koushr 阅读(634) 评论(0) 推荐(0)

sql笔试题

摘要: 题目一、表t_score,数据如下 name subject score 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 对应ddl及dml语句如下: CREATE TABLE `t_score` ( `id` int 阅读全文

posted @ 2018-06-07 16:54 koushr 阅读(186) 评论(0) 推荐(0)

2017年12月17日

case when语法以及与group by的配合使用

摘要: 一:case when语法: case when有两种语法: 语法1: case 某字段 when 值1 then 伪值1 when 值2 then 伪值2 ...... else 伪值n end 注意,when之间没有任何标点符号,且最后要以end结尾,否则会报语法错误。 如有一种常见情况是,数据 阅读全文

posted @ 2017-12-17 17:58 koushr 阅读(6923) 评论(0) 推荐(0)

导航