自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (3)
  • 收藏
  • 关注

原创 线程与协程

深入分析 Java、Kotlin、Go 的线程和协程

2021-10-21 11:37:35 716

原创 redis cluster 容器环境搭建

要点一docker 容器间通过下面命令通信:docker network create redis-net容器启动式,添加参数:–net redis-net要点二redis 通过另外一个端口进行有关redis cluster 模式的通信, 比如 6379 用于同redis-cli 通信, 16379 用于redis cluster.坑1redis 容器启动命令: 使用绝对路径命令, /user/local/bin/redis-serve , 不然因为文件权限的问题报错,是一个bug, 原因参

2021-10-08 16:14:48 120

原创 redis 测试集群搭建

最近因为服务需要,在测试环境搭建了redis cluster 模式的测试集群。坑一redis.conf 配置文件中的 port 配置为 0.0.0.0 , 而不是127.0.0.1 , 二者区别在于:IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。在

2021-10-07 12:37:02 187

原创 go生态下的http请求接收与发送流程

一 http 原生框架二 gin 框架

2020-10-05 18:10:53 714

原创 Go学习笔记(四)

channel 关闭导致的问题因为向关闭的channel 中传递数据导致 panic, 代码如下:func GetToken(ctx context.Context) (t string, err error) { ctxTimeout, cancel := context.WithTimeout(context.TODO(), 500*time.Millisecond) defer cancel() var token string signal := make(chan struct{}

2020-09-28 11:02:50 177

原创 Go语言学习笔记(3)

1 go的协程本质上还是系统的线程调用,而Python中的协程是eventloop模型实现,所以虽然都叫协程,但并不是一个东西;

2020-08-18 11:47:09 128

原创 Go 学习笔记(1)

Context看了几篇文章:应用场景:https://studygolang.com/articles/18316?fr=sidebar原理理解:https://blog.lab99.org/post/golang-2017-10-27-video-how-to-correctly-use-package-context.html#shi-pin-xin-xihttps://bytek...

2020-08-18 11:46:43 118

原创 看资料的一个坑

influxdb 踩的坑项目讨论的时候,涉及到了对influxdb访问加鉴权的问题,就研究了一下influxdb相关部分的文档:influxdb Authentication文档描述了JWT 的交互方式,但是我看的过程很困惑。 疑惑原因:JWT 的具体实现有多种签名方式,但是文档里提到只是需要配置一个key , 就可以交互。我猜测是不是influxdb 可以自动识别所有相关签名方式,分类验证签名,这样好像很先进, 但是会咋实现呢???而且还有不对称加密的鉴权呢,类似RSA一类,只配置一个key 咋行

2020-05-22 23:42:19 196

原创 Hadoop 生态认知

HDFS不适合交互场景;大吞吐量;HBaseKey-Value Store, 适合存储半结构化数据,例如: 图片数据 ;对于同一个key, Value可以具有多个列column, 每个列可以具有不同时间纬度下的值,也就是说可以拿到某个key 对应value随时间变化的值;HBase适合大数据场景存储,数据量要足够大, PB级别;Nosql数据库,不支持sql 作为查询语言;强一致性...

2020-04-06 16:20:25 161

原创 各类数据库使用场景比较

clickhouse数据采用列式存储,其具有以下特点:适合OLAP(on line analytical process)场景;大多数为读请求;数据批量写入;没有完整的事务支持;修改与删除数据能力不足;OLAP VS OLTPOLTP(on line transaction process)场景, 适合该场景的数据库:mysql 等OLAP(on line analytical ...

2020-04-06 16:19:32 6944

原创 Influxdb 知识总结(4)-- seriesfile

查询过程1 索引: measurement/tagkey/tagvalue ---------> series ID2 series file : series ID -------> series key3 TSM: series key --------> 读取对应的数据...

2020-03-19 21:59:27 869

原创 influxdb知识总结(3)

Memory-Based IndexseriesByTagKeyValue: map<tagkey, map<tagValue, List< seriesID > > >seriesByID: map< seriesID, *series>Disk-Based Indexinfluxdb中的倒排索引与时序数据都使用了相同的存储机制——LSM...

2019-11-18 17:19:18 373

原创 influxdb知识总结(2)--- influxdb 中的重要概念

RP(Retention Policy)RP是数据库级别,核心作用:1 指定数据的过期时间2 指定数据副本数量3 指定shardgroup durationshardgroup每个shardgroup中包含多个shard,每个shardgroup只存储指定时间段的数据。shardgroup起到的作用是将时序数据按时间分区,便于根据时间纬度选择目标数据分区。shardshard是i...

2019-11-18 10:13:09 905

原创 influxdb知识总结(1)---背景知识

LSMLSM优化了数据库写性能,而因此弱化了数据库的读性能。在某些应用场景下,对写性能要求较高,而对读性能要求不高。此外,可以通过优化缓存的方式来提高数据库的读性能,并且硬件上内存的提升很容易带来读性能的提高。LSM的实现逻辑就是已经写好的文件不再修改,更新操作只会写入新的文件中(计算机硬盘或SSD顺序写很快,而随机写则很慢,这样可以最多化提升写性能)。写入的每个文件是内部有序的(也就是SST...

2019-11-17 17:08:07 326

原创 kitc执行流程分析

kitc是kite框架的客户端实现thrift作用kitc的调用流程

2019-11-11 23:10:26 2355

原创 rpc框架使用总结

目前开源的rpc框架有很多,比较知名的有:grpc, thrift, dubbo等。rpc框架一般需要三部分:1 服务发现(需要发现内部服务部署的主机IP与端口号,常见的实现有zookeeper, consul, etcd等)2 通信协议(包含结构体数据编码序列化过程,以及如何发送与接收调用信息等等,可以参考文献thrift通信过程 , thrift编码协议)3 传输层(也即transpor...

2019-11-11 20:16:18 1006

原创 gin 路由树的实现

gin 框架路由的实现使用了压缩字典树,压缩字典树是变种的字典树,相比字典树而言,使用压缩字典树可以降低树的层数。下面介绍gin 框架路由树的实现,路由树节点的定义:type node struct { // 相对路径 path string // 索引 indices string // 子节点 children []*node // 处理器函数 handle...

2019-11-11 10:48:59 2181

原创 Go学习笔记(2)

1 uintptr类型一种特殊的整型。2 一个类型转换问题( String => [ ] byte)var a = []byte("hello boy")  var b = string(a)转换后 [ ]byte 底层数组与原 string 内部指针并不相同,以此可确定数据被复制。可以直接进行类型转换,以此来提高效率,如下:func str2bytes(s string)...

2019-11-06 10:06:06 166

原创 分布式限流的实现

系统的运行过程中,需要对外部请求进行限流。限流有本地限流与分布式限流,本文现在对项目实践过程中使用的分布式限流中间件进行介绍。该分布式限流中间件实现的原理是每次从远端(远端的redis)消费掉固定数量的配额,待消费完后,再从远端申请。 // rate.go// 定义了限流的频次 type Rate struct { Period int64 // 秒级别 Limit int64...

2019-11-04 09:29:47 363

原创 总结一下常用的go 指令

一 go get通过代码管理工具远程拉取或更新代码包及其依赖包,并自动完成编译与安装。使用示例:go get -u -v xxxxxx/xxxx/xxx-u 强制使用网络去更新包及其依赖包。二 golang 包管理工具 govendor安装:go get -u -v github.com/kardianos/govendor使用举例:#初始化vendor目录govendor ...

2019-10-31 10:49:20 1499

原创 总结一下常用的git 命令

git clone "xxxxx.git" // 克隆仓库,当克隆一个仓库时,它通常会自动地创建一个跟踪origin/master的master分支git pull // 当所处分支为跟踪分支时,不管它是显式地设置还是通过clone或checkout命令为你创建的,它会自动下载远程分支 // 数据并与本地跟踪分支合并。git pull origin ...

2019-10-29 11:11:18 377

原创 一致性哈希的实现

一 kitc 环实现二 谷歌哈希算法

2019-10-28 23:35:16 230

原创 go 中指针的特殊使用场景记录

一 slice 作为函数参数在go 中,slice 结构体如下:type slice struct { // uintptr 是一种特殊的无符号整型,实际占一个机器字大小(32位系统占有4个字 //节,64位系统占有8个字节),而指针类型*T同样占一个机器字大小,所以uintptr // 足以存储一个指针 Data uintptr Len int Cap int}在下...

2019-10-28 19:34:09 531

原创 缓存的使用(2)

在rpc框架中,kitc客户端中需要对访问的服务IP进行缓存与更新,本章谈一谈kitc对服务信息的缓存与更新机制。kitc获取服务信息是通过请求的方式向 consul服务来获取特定服务的IP地址,为了避免kitc在启动时对同一个Key并发地访问,这里引入一个结构来对重复函数调用进行限制:type call struct { wg sync.WaitGroup val interface{}...

2019-10-28 08:54:55 187

原创 缓存的使用(1)

LRUcache自建缓存更新以kitc 为例

2019-10-27 17:41:25 340

原创 总结一下部门网关系统的作用

1 API访问的入口1 微服务体系下,部门的服务越来越多,网关可以起到聚合服务的作用,规范统一API服务的访问与返回形式,优化使用者的开发体验。2 大多服务采用集群部署,发生网络故障或者服务部署的机器数增多,网关借助内部的服务发现,流量管控等功能,为用户屏蔽了后端的干扰,同时为用户提供规范稳定的访问体验。2 服务治理1 提供频控配额的功能,限制用户访问频率,限制服务端接受访问的频率2 提...

2019-08-15 10:14:02 520

原创 入职以来踩过的坑

1 在.zshrc中配置变量时,变量配置等号处多打了一个空格,导致系统Path错误,很多命令无法使用,最后在大佬的帮助下,才恢复系统。2 配置Path变量,要把需要添加的部分放到前面,避免被覆盖,例如:PATH=GOPATH:{GOPATH}:GOPATH:{PATH}3 使用Linux系统的经验之谈:需要什么就安装什么,不要随意地使用他人提供的安装配置脚本,不然一旦脚本安装错误,系统莫名被...

2019-06-20 08:54:48 777 1

原创 关于未来的一点思考

最近赶上互联网裁员大潮,人心惶惶,让你不由得不仔细思考一下未来究竟该咋办。回想了一下自己的情况,家里穷,小县城出身,真的回家,小县城绝不是一个好选择。退而求其次,回郑州,武汉,西安这类城市,但其实这些城市的房价也不低,生活成本不低。真的回到这些地方,生活也会比较窘迫,房子照样买不起。对我而言,因为本来就买不起房(小县城除外),其实在哪工作根本无所谓。选择一个工资相对高的,发展前景相对好的才比较重...

2019-03-13 21:15:23 154

原创 《繁荣的真相》读书笔记

摘录1 : 影响储蓄过剩的关键因素不是利率,而是收入分配政策。具体就是一个国家的福利水平,收入水平,贫富差距等等。一个国家的福利水平越高,对财富的调节越强,则民众的储蓄作用也越低,该国的消费者也越来越乐于消费。另一方面,贫富收入差距过大的国家,由于收入集中度过高,社会的总储蓄额也越高,在这种情况下要减小储蓄必须要缩小贫富差距。摘录2 : 通货紧缩的原因在于实体经济的储蓄过剩。假如社会一年实体经济...

2019-02-25 10:59:59 312

原创 2018年末感想

最近比较颓废,最大的原因是找完工作后,丧失了生活的目标。反思了一下,人最重要的就是自制力。如果你颓废地度过一天又一天,你就会越来越颓废。反之,每天有规划,日日有目标,充实地度过每一天,你的生活就越来越有动力。新的一年,我自己给自己定了一个闹钟:早上8:30, 下午2:20 。坚持下来,保持自己生活的节奏。...

2019-01-03 10:43:53 251

原创 就业方向的感想

今天中午,在知乎看到一个很有意思的帖子:如何看待大量土木工程从业者选择转行。文中主要介绍了土木专业的发展及就业情况,对于土木工程这个专业而言,发展的红利基本被80,90后占用,新入门的人要付出更多,而回报却变少。后面的时间又抽空浏览了别的相关帖子:曾经的王牌专业电气专业如今也被大量人嫌弃,工资缩水,房价却在上涨,国网的待遇也不是那么可观了。时代在发展,旱涝保收的如意饭碗越来越少,大多数人的收入水...

2018-11-26 15:58:47 368

转载 ThreadLocal源码解读

https://www.cnblogs.com/micrari/p/6790229.html

2018-10-03 17:13:54 122

转载 ConcurrentHashMap源码解读

参考:https://blog.csdn.net/fjse51/article/details/55260493ConcurrentHashMap能完全替代HashTable吗? hash table虽然性能上不如ConcurrentHashMap,但并不能完全被取代,两者的迭代器的一致性不同的,hash table的迭代器是强一致性的,而concurrenthashmap是弱一致的。 Co...

2018-09-17 16:41:49 141

原创 gradle 项目遇到的一个bug

在Eclipse中导入别人的一个gradle项目,报错:org.gradle.tooling.BuildException: Could not fetch model of type 'GradleBuild' using Gradle distribution 'https://services.gradle.org/distributions/gradle-3.4.1-bin.zip...

2018-09-16 08:59:31 2191 2

转载 TCP 流量控制

滑动窗口:针对发送方与接收方。 拥塞窗口:针对网络情况。 慢开始,拥塞避免,快重传,快恢复。 https://www.cnblogs.com/losbyday/p/5847041.html

2018-09-10 17:15:44 146

转载 HashMap 源码解读

https://segmentfault.com/a/1190000012926722#articleHeader4

2018-09-05 16:58:26 103

原创 PAXOS算法读书笔记

一 概述paxos 是一种提高分布式系统容错性的一致性算法。二 算法理解1 问题描述假设一组可以提出提案的进程集合,对于一个一致性算法来说,需要满足以下几点:在这些提出的提案中,只有一个会被选定如果没有提案被提出,就不会有被选定的题案如果一个提案被选定后,进程应该可以获取被选定的提案信息。从整体上说,paxos算法的目标是保证最终会有一个提案被选定,当提案...

2018-08-12 12:57:56 211

转载 Hibernate 与 Mybatis 映射关系

一 OneToMany一对多可以存在两种映射实现:外键关联或表关联。create table customer ( id int(20) not null auto_increment, name varchar(100), primary key(id))create table address ( id int(20) not null auto_increm...

2018-07-30 15:57:15 335

转载 Spring Data JPA

一 JPAJPA是Java官方提出的、随Java EE 5 规范一同发布的。在此之前,已经存在很多ORM框架了,他们都有不同的实现,这也是JAP出现的必然条件。 JAP规范,正式为了解决这个问题:规范ORM框架,是ORM框架有统一的接口和用法。二 Spring DataSpring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并...

2018-07-30 12:51:08 144

转载 Innodb 与 MyISAM

一 锁差异 MyISAM:只支持表级锁,只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁。 InnodB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表, 例如updat...

2018-07-27 16:26:18 154

工作常用web网页分享

2022-03-28

2022google常用页面

2022-03-05

互联网工作俩年所积累的网页.html

首份工作,工作俩年所积累的知识库,离职之际保留。

2021-06-17

空空如也

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

TA关注的人

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