获得徽章 1
赞了这篇文章
赞了这篇文章
赞了这篇文章
如沐春风的一个issue,讨论了从twemproxy转换到envoy的时候可能发生的问题和一些解决方案,现在envoy应该也能给redis cluster做proxy了,感觉redis cluster+envoy proxy在cluster规模不大时是一个不错的选择. 不过好像redis cluster节点多了后仍会有性能问题,这个没具体调查过
评论
点赞
#青训营笔记创作活动#
2月22日 打卡day14
又是手机打卡的一天。。。。
今天的打卡阅读文章主要讲的是java中的optional,和它的用法解析,但是这个库是为了配合java的流处理而特意设计的,但是java中的流设计实在是用得不多,而且很多人也认为optional在java中的设计是不够好的甚至是失败的,因此我也就是谨慎了解了一下,他跟rust设计就很不同,在safe的情况下是不允许出现任何null的,并且还可以用unwrap或是unwrapor进行便捷的操作.
2月22日 打卡day14
又是手机打卡的一天。。。。
今天的打卡阅读文章主要讲的是java中的optional,和它的用法解析,但是这个库是为了配合java的流处理而特意设计的,但是java中的流设计实在是用得不多,而且很多人也认为optional在java中的设计是不够好的甚至是失败的,因此我也就是谨慎了解了一下,他跟rust设计就很不同,在safe的情况下是不允许出现任何null的,并且还可以用unwrap或是unwrapor进行便捷的操作.
展开
评论
点赞
#青训营笔记创作活动#
手机打卡的倒计时天数。。。。
2月21日 打卡day13
今天的打卡文章还是讲秒杀系统的设计的,但是它比之前讲的文章在一些要解决的问题上更加详细一些并且给出了可行的解决方案,例如秒杀商品的定时预热入缓存和定时移出缓存,同时还给出了各种方式进行非法流量的限制如单用户多请求多用户单ip多请求.还给出了如何在熔断的情况下进行请求的限流,使用消息队列暂存订单异步写会数据库和消息队列出问题时的解决方案。对我还是非常有用的。
手机打卡的倒计时天数。。。。
2月21日 打卡day13
今天的打卡文章还是讲秒杀系统的设计的,但是它比之前讲的文章在一些要解决的问题上更加详细一些并且给出了可行的解决方案,例如秒杀商品的定时预热入缓存和定时移出缓存,同时还给出了各种方式进行非法流量的限制如单用户多请求多用户单ip多请求.还给出了如何在熔断的情况下进行请求的限流,使用消息队列暂存订单异步写会数据库和消息队列出问题时的解决方案。对我还是非常有用的。
展开
评论
点赞
#青训营笔记创作活动#
2月20日 打卡day12
又是手机打卡的一天。。。。大项目有点儿做不明白了。。。
今天的打卡阅读文章还是介绍缓存一致性的文章,对我现在的大项目还是有一定的指导意义的,它在文中明确提出了应该使用数据库更新成功后删除缓存,和保证缓存删除的重试策略等保证一个较高一致性的缓存系统,但是由于我负责的部分是视频评论部分,其特点是对数据的实时性要求并不是像订单这样的记录需要高一致性和实时性,并且是读多写少的,因此我仍然使用的是数据库更新成功后更新缓存的策略,并且由于我们的项目一开始定义为大单体项目所以我使用的是本地缓存的构建,不过后来组员们又决定使用redis了可能还会有修改.
2月20日 打卡day12
又是手机打卡的一天。。。。大项目有点儿做不明白了。。。
今天的打卡阅读文章还是介绍缓存一致性的文章,对我现在的大项目还是有一定的指导意义的,它在文中明确提出了应该使用数据库更新成功后删除缓存,和保证缓存删除的重试策略等保证一个较高一致性的缓存系统,但是由于我负责的部分是视频评论部分,其特点是对数据的实时性要求并不是像订单这样的记录需要高一致性和实时性,并且是读多写少的,因此我仍然使用的是数据库更新成功后更新缓存的策略,并且由于我们的项目一开始定义为大单体项目所以我使用的是本地缓存的构建,不过后来组员们又决定使用redis了可能还会有修改.
展开
评论
点赞
#青训营笔记创作活动#
2月19日 打卡day11
手机打卡饿啊啊啊啊啊。。。。
今天的打卡阅读文章主要讲的是各种go语言中比较容易忽视的使用点,对于理解go语言的运行机制和规范使用go语言进行编程防止踩坑导致难以排查的bug比较有用,可以收藏起来每隔一段时间温习一遍.其中它简单介绍了interface在赋值其他类型的值的nil时,就不再代表一个nil值了,而是存储了相应类型值的类型,只是这个类型的值取值为nil,也就是interface会保存赋值给他的值的类型和类型对应的值,以便之后通过类型断言判断存储值的类型,本文还介绍了map的大概底层结构,其也是使用现在比较流行的增量式扩容的方式减少一次操作带来的执行时间.
2月19日 打卡day11
手机打卡饿啊啊啊啊啊。。。。
今天的打卡阅读文章主要讲的是各种go语言中比较容易忽视的使用点,对于理解go语言的运行机制和规范使用go语言进行编程防止踩坑导致难以排查的bug比较有用,可以收藏起来每隔一段时间温习一遍.其中它简单介绍了interface在赋值其他类型的值的nil时,就不再代表一个nil值了,而是存储了相应类型值的类型,只是这个类型的值取值为nil,也就是interface会保存赋值给他的值的类型和类型对应的值,以便之后通过类型断言判断存储值的类型,本文还介绍了map的大概底层结构,其也是使用现在比较流行的增量式扩容的方式减少一次操作带来的执行时间.
展开
评论
点赞
#青训营笔记创作活动#
2月18日 打卡day10
。。。又是手机打卡的一天,希望是有效打卡吧。。。。
今天的打卡阅读文章与本次的青训内容和大项目还是比较契合的,主要就是使用hertz框架和它提供的已有的中间件来完成一个使用jwt进行的注册和登录验证鉴权的代码例子,还是介绍得比较全面的,使用到了hertz-jwt,其通过注册一个struct给router来完成中间件的注册,其中这个struct中就可以设置如何在未发送jwt时检索登录操作所需的参数并进行登录验证和返回相应的有一定有效期的token,并在请求给出jwt时检查jwt的时效性和正确性,并将正确的内容从token中提取出来存入context中方便接下来的controller/handler使用,如果验证失败返回相应的验证失败消息.虽然我们在大项目中使用的是gin和go-jwt但是基本思路还是类似的,但是感觉还是hertz的框架更加方便和明晰一些,而且hertz提供的hz生成通信框架代码的方式还是非常便捷的,以后应该使用一下.
2月18日 打卡day10
。。。又是手机打卡的一天,希望是有效打卡吧。。。。
今天的打卡阅读文章与本次的青训内容和大项目还是比较契合的,主要就是使用hertz框架和它提供的已有的中间件来完成一个使用jwt进行的注册和登录验证鉴权的代码例子,还是介绍得比较全面的,使用到了hertz-jwt,其通过注册一个struct给router来完成中间件的注册,其中这个struct中就可以设置如何在未发送jwt时检索登录操作所需的参数并进行登录验证和返回相应的有一定有效期的token,并在请求给出jwt时检查jwt的时效性和正确性,并将正确的内容从token中提取出来存入context中方便接下来的controller/handler使用,如果验证失败返回相应的验证失败消息.虽然我们在大项目中使用的是gin和go-jwt但是基本思路还是类似的,但是感觉还是hertz的框架更加方便和明晰一些,而且hertz提供的hz生成通信框架代码的方式还是非常便捷的,以后应该使用一下.
展开
评论
点赞
#青训营笔记创作活动#
2月17日 打卡day9
又是手机打卡的一天,我也不知道有没有用。。。
今天的打卡文章前面对于索引的叙述还是比较基础的,基本上属于学过数据结构和数据库就已经知道的内容,但是后面讲到了InnoDB和MyISAM之间外存存储结构之间的区别就比较有趣了,这部分讲了InnoDB会基于主键建立b+树然后行内容就直接存储在叶节点中,这种就认为是聚簇索引因为在叶节点中是比较有序的了.而在MyISAM中就跟PostgresSQL比较像会有隐藏的rowid通过在叶子结点存储rowid这样在存储方面每行数据不是有序的了是非聚簇索引了.当然两者也互有优劣,像InnoDB中非主键的索引依然是非聚簇的索引,在不是在最终映射到主键的情况下一般都需要回表.这也是为什么会在其他的索引中要做各种优化来减少回表.
2月17日 打卡day9
又是手机打卡的一天,我也不知道有没有用。。。
今天的打卡文章前面对于索引的叙述还是比较基础的,基本上属于学过数据结构和数据库就已经知道的内容,但是后面讲到了InnoDB和MyISAM之间外存存储结构之间的区别就比较有趣了,这部分讲了InnoDB会基于主键建立b+树然后行内容就直接存储在叶节点中,这种就认为是聚簇索引因为在叶节点中是比较有序的了.而在MyISAM中就跟PostgresSQL比较像会有隐藏的rowid通过在叶子结点存储rowid这样在存储方面每行数据不是有序的了是非聚簇索引了.当然两者也互有优劣,像InnoDB中非主键的索引依然是非聚簇的索引,在不是在最终映射到主键的情况下一般都需要回表.这也是为什么会在其他的索引中要做各种优化来减少回表.
展开
评论
点赞
#青训营笔记创作活动#
2月16日 打卡day33
昨天在电脑上的打卡天数还写错了,虽然在电脑上打卡本来也没什么用就是了....
今天的打卡阅读文章和之前的一篇文章讲一个表为什么不应该超过2000w条数据,和其原因的文章的大致内容是一样的,主要从主键构成的b+树进行分析,从树中的节点都为16k的页为起点,根据主键内容计算非叶节点可以存储的子节点数,再通过计算整条行数据的数据大小推出叶节点可以存储的行数,有了这两个信息就可以计算出任意层数的b+树能够容纳的数据行数量,一般认为b+树在3层及以内是比较好的,再多的层数在数据从外存读取的速度就太慢了,因此才推得一般行数据量大小为1k左右的表能存储的数据1行数大约在2000w左右,对我当前大项目的分析还是比较有用的.
2月16日 打卡day33
昨天在电脑上的打卡天数还写错了,虽然在电脑上打卡本来也没什么用就是了....
今天的打卡阅读文章和之前的一篇文章讲一个表为什么不应该超过2000w条数据,和其原因的文章的大致内容是一样的,主要从主键构成的b+树进行分析,从树中的节点都为16k的页为起点,根据主键内容计算非叶节点可以存储的子节点数,再通过计算整条行数据的数据大小推出叶节点可以存储的行数,有了这两个信息就可以计算出任意层数的b+树能够容纳的数据行数量,一般认为b+树在3层及以内是比较好的,再多的层数在数据从外存读取的速度就太慢了,因此才推得一般行数据量大小为1k左右的表能存储的数据1行数大约在2000w左右,对我当前大项目的分析还是比较有用的.
展开
评论
点赞
#青训营笔记创作活动#
2月16日 打卡day8
又是从电脑写完移到手机上的,好烦。。。。。
今天的打卡阅读文章和之前的一篇文章讲一个表为什么不应该超过2000w条数据,和其原因的文章的大致内容是一样的,主要从主键构成的b+树进行分析,从树中的节点都为16k的页为起点,根据主键内容计算非叶节点可以存储的子节点数,再通过计算整条行数据的数据大小推出叶节点可以存储的行数,有了这两个信息就可以计算出任意层数的b+树能够容纳的数据行数量,一般认为b+树在3层及以内是比较好的,再多的层数在数据从外存读取的速度就太慢了,因此才推得一般行数据量大小为1k左右的表能存储的数据1行数大约在2000w左右,对我当前大项目的分析还是比较有用的.
2月16日 打卡day8
又是从电脑写完移到手机上的,好烦。。。。。
今天的打卡阅读文章和之前的一篇文章讲一个表为什么不应该超过2000w条数据,和其原因的文章的大致内容是一样的,主要从主键构成的b+树进行分析,从树中的节点都为16k的页为起点,根据主键内容计算非叶节点可以存储的子节点数,再通过计算整条行数据的数据大小推出叶节点可以存储的行数,有了这两个信息就可以计算出任意层数的b+树能够容纳的数据行数量,一般认为b+树在3层及以内是比较好的,再多的层数在数据从外存读取的速度就太慢了,因此才推得一般行数据量大小为1k左右的表能存储的数据1行数大约在2000w左右,对我当前大项目的分析还是比较有用的.
展开
评论
点赞
#青训营笔记创作活动#
2月15日 打卡day7
今天的打卡文章属于字典文章,介绍各种MySQL的命令,包括使用show命令来查看MySQL当前运行的一些元信息,如运行参数正在运行的处理有哪些数据库和表等,还有一些DDL操作,更改数据库的字符编码等,表相关的操作就是CRUD这些,还有可以用analyze/check/optimize对表中进行一些分析和优化和他们的原理,还有在crud中比较常用的数学函数时间函数字符串函数和聚合函数如何groupby和join,MySQL支持哪几种数据类型,索引,事务和锁,用户权限,视图和临时表等内容.还有如何解读错误码也是比较有用的.
2月15日 打卡day7
今天的打卡文章属于字典文章,介绍各种MySQL的命令,包括使用show命令来查看MySQL当前运行的一些元信息,如运行参数正在运行的处理有哪些数据库和表等,还有一些DDL操作,更改数据库的字符编码等,表相关的操作就是CRUD这些,还有可以用analyze/check/optimize对表中进行一些分析和优化和他们的原理,还有在crud中比较常用的数学函数时间函数字符串函数和聚合函数如何groupby和join,MySQL支持哪几种数据类型,索引,事务和锁,用户权限,视图和临时表等内容.还有如何解读错误码也是比较有用的.
展开
评论
点赞
#青训营笔记创作活动#
2月15日 打卡day7
今天也是手机打卡的一天,昨天打卡还写错了日期。。。
今天的打卡文章属于字典文章,介绍各种MySQL的命令,包括使用show命令来查看MySQL当前运行的一些元信息,如运行参数正在运行的处理有哪些数据库和表等,还有一些DDL操作,更改数据库的字符编码等,表相关的操作就是CRUD这些,还有可以用analyze/check/optimize对表中进行一些分析和优化和他们的原理,还有在crud中比较常用的数学函数时间函数字符串函数和聚合函数如何groupby和join,MySQL支持哪几种数据类型,索引,事务和锁,用户权限,视图和临时表等内容.还有如何解读错误码也是比较有用的.
2月15日 打卡day7
今天也是手机打卡的一天,昨天打卡还写错了日期。。。
今天的打卡文章属于字典文章,介绍各种MySQL的命令,包括使用show命令来查看MySQL当前运行的一些元信息,如运行参数正在运行的处理有哪些数据库和表等,还有一些DDL操作,更改数据库的字符编码等,表相关的操作就是CRUD这些,还有可以用analyze/check/optimize对表中进行一些分析和优化和他们的原理,还有在crud中比较常用的数学函数时间函数字符串函数和聚合函数如何groupby和join,MySQL支持哪几种数据类型,索引,事务和锁,用户权限,视图和临时表等内容.还有如何解读错误码也是比较有用的.
展开
评论
点赞
#青训营笔记创作活动#
2月16日 打卡day31
今天的打卡文章主要是,讲解了为什么我们要在业务中引入锁,为什么本地锁已经无法满足当今的架构,由此引出分布式锁,给出了分布式锁的几种实现方式,然后详细介绍了使用redis实现单机分布式锁,如何用java中常见的redison来更便捷的使用redis实现redis锁.最后又介绍了redlock和大牛对他的反驳,给出了程序暂停和网络分区带来的分布式锁不可靠的问题并提出zookeeper的znode序号来当做版本号保证所失效后的修改不会生效,我现在主要是需要找到方便的go语言的redis操作库
2月16日 打卡day31
今天的打卡文章主要是,讲解了为什么我们要在业务中引入锁,为什么本地锁已经无法满足当今的架构,由此引出分布式锁,给出了分布式锁的几种实现方式,然后详细介绍了使用redis实现单机分布式锁,如何用java中常见的redison来更便捷的使用redis实现redis锁.最后又介绍了redlock和大牛对他的反驳,给出了程序暂停和网络分区带来的分布式锁不可靠的问题并提出zookeeper的znode序号来当做版本号保证所失效后的修改不会生效,我现在主要是需要找到方便的go语言的redis操作库
展开
评论
点赞
#青训营笔记创作活动#
2月16日 打卡day6
今天也是必须手机打卡的一天。。。。还有情人节快乐。。。
今天的打卡文章主要是,讲解了为什么我们要在业务中引入锁,为什么本地锁已经无法满足当今的架构,由此引出分布式锁,给出了分布式锁的几种实现方式,然后详细介绍了使用redis实现单机分布式锁,如何用java中常见的redison来更便捷的使用redis实现redis锁.最后又介绍了redlock和大牛对他的反驳,给出了程序暂停和网络分区带来的分布式锁不可靠的问题并提出zookeeper的znode序号来当做版本号保证所失效后的修改不会生效,我现在主要是需要找到方便的go语言的redis操作库
2月16日 打卡day6
今天也是必须手机打卡的一天。。。。还有情人节快乐。。。
今天的打卡文章主要是,讲解了为什么我们要在业务中引入锁,为什么本地锁已经无法满足当今的架构,由此引出分布式锁,给出了分布式锁的几种实现方式,然后详细介绍了使用redis实现单机分布式锁,如何用java中常见的redison来更便捷的使用redis实现redis锁.最后又介绍了redlock和大牛对他的反驳,给出了程序暂停和网络分区带来的分布式锁不可靠的问题并提出zookeeper的znode序号来当做版本号保证所失效后的修改不会生效,我现在主要是需要找到方便的go语言的redis操作库
展开
评论
点赞
#青训营笔记创作活动#
2月13日 打卡day5
掘金打卡非得用手机烦啊。。。必须用手机打卡所以专门写一下....
今天的打卡阅读文章是讲跨域访问的问题的,这个问题在我之前写spring项目时也遇到过,但是当时我不知道这是怎么一回事,只是单纯地在网上搜了解决方法,这篇文章向我阐明了这是一种浏览器保证用户的访问不被篡改的防御方式,所以才能在服务端通过给返回体添加相应的跨域允许字段匹配时使跨域操作得到允许,主要是响应端指明自己可以从哪个跨域访问到达,方止用户在一个被劫持的网站上访问到自己而不知道.
2月13日 打卡day5
掘金打卡非得用手机烦啊。。。必须用手机打卡所以专门写一下....
今天的打卡阅读文章是讲跨域访问的问题的,这个问题在我之前写spring项目时也遇到过,但是当时我不知道这是怎么一回事,只是单纯地在网上搜了解决方法,这篇文章向我阐明了这是一种浏览器保证用户的访问不被篡改的防御方式,所以才能在服务端通过给返回体添加相应的跨域允许字段匹配时使跨域操作得到允许,主要是响应端指明自己可以从哪个跨域访问到达,方止用户在一个被劫持的网站上访问到自己而不知道.
展开
评论
点赞
#青训营笔记创作活动#
2月13日 打卡day30
必须用手机打卡所以专门写一下....
今天的打卡阅读文章是讲跨域访问的问题的,这个问题在我之前写spring项目时也遇到过,但是当时我不知道这是怎么一回事,只是单纯地在网上搜了解决方法,这篇文章向我阐明了这是一种浏览器保证用户的访问不被篡改的防御方式,所以才能在服务端通过给返回体添加相应的跨域允许字段匹配时使跨域操作得到允许,主要是响应端指明自己可以从哪个跨域访问到达,方止用户在一个被劫持的网站上访问到自己而不知道.
2月13日 打卡day30
必须用手机打卡所以专门写一下....
今天的打卡阅读文章是讲跨域访问的问题的,这个问题在我之前写spring项目时也遇到过,但是当时我不知道这是怎么一回事,只是单纯地在网上搜了解决方法,这篇文章向我阐明了这是一种浏览器保证用户的访问不被篡改的防御方式,所以才能在服务端通过给返回体添加相应的跨域允许字段匹配时使跨域操作得到允许,主要是响应端指明自己可以从哪个跨域访问到达,方止用户在一个被劫持的网站上访问到自己而不知道.
展开
评论
点赞