摘要: 一、Elasticsearch技术简介 Elastic本身也是一个分布式存储系统,如同其他分布式系统一样,我们经常关注的一些特性如下。 数据可靠性:通过分片副本和事务日志机制保障数据安全 服务可用性:在可用性和一致性的取舍方面,默认情况下Elastic更倾向于可用性,只要主分片可用即可执行写入操作 阅读全文
posted @ 2021-07-08 10:00 瓶子coder 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 概述 本文描述下Spring的实例化、初始化、销毁,整个SpringBean生命周期,聊一聊BeanPostProcessor的回调时机、Aware方法的回调时机、初始化方法的回调及其顺序、销毁方法的回调及其顺序、重要的BeanPostProcessor的介绍。 开头是一张我画的调用流转图,然后就是 阅读全文
posted @ 2021-05-18 11:53 瓶子coder 阅读(602) 评论(0) 推荐(2) 编辑
摘要: 一年了 ,希望自己不要没事就emo了,工作生活平衡一下子。 阅读全文
posted @ 2022-11-01 11:22 瓶子coder 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 背景 今天又需要基于Spring扩展点做些事情,来看看自己之前记录的博客,好奇百度页面搜索了下看看能不能搜出我的文章,发现了熟悉的字眼和图片,发现完全就是自己的.... 有的粘贴了我的地址,有的没有。。有的甚至是同一天,是啥脚本扒拉的嘛。。 自己费老劲扣字画图,直接给原封不动copy,也没留个言给咱 阅读全文
posted @ 2022-07-21 19:38 瓶子coder 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 《软技能-代码之外的生存指南》读书笔记 写在前面 最近项目相对松了一些,想静下心来看一些书,买了些DDD的书,记得这本书也是程序员必读的书之一,就凑单也买了纸质的来看看~ 抄录一些觉得不错或者有感触的话。 抄录 第一章 为何这本书与你先前读过的任何数据都迥然不同 你所能犯的最大错误就是相信自己是在为 阅读全文
posted @ 2022-07-12 22:15 瓶子coder 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 写在前面 聊一聊MyBatis的核心概念、Spring相关的核心内容,主要结合源码理解Spring是如何整合MyBatis的。(结合右侧目录了解吧) MyBatis相关核心概念粗略回顾 SqlSessionFactory 创建SqlSession的工厂 SqlSession sql请求的会话,通过S 阅读全文
posted @ 2021-07-29 22:56 瓶子coder 阅读(1501) 评论(0) 推荐(3) 编辑
摘要: 写在前面 聊一聊MyBatis是如何使用装饰者模式的,顺便回顾下缓存的相关知识,可以看看右侧目录一览内容概述。 装饰者模式 这里就不聊它的概念了,总结下就是套娃。利用组合的方式将装饰器组合进来,增强共同的抽象方法(与代理很类似但是又更灵活) MyBatis缓存 回忆下传统手艺 <!-- 先进先出,6 阅读全文
posted @ 2021-07-26 13:51 瓶子coder 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 一、如何优雅关闭线程池 核心API: shutDown shutDownNow awaitTermination 利用JVM钩子函数,在虚拟机关闭时调用相关方法即”优雅关闭线程池”。 先通过shutdown等待线程池自身结束,然后等待一段时间,如果没有成功,再调用shutdownNow将等待I/O的 阅读全文
posted @ 2021-07-06 14:31 瓶子coder 阅读(1257) 评论(0) 推荐(0) 编辑
摘要: 概述 本文沉淀Elasticsearch性能优化方式,包含写入、搜索优化。 推荐结合《Elasticsearch必备原理理解》一起食用~ 一、写入速度优化 在Elasticsearch的默认设置下,是综合考虑数据可靠性、搜索实时性、写入速度等因素的。当离开默认设置、追求极致的写入速度时,很多是以牺牲 阅读全文
posted @ 2021-03-22 16:00 瓶子coder 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 概述 ApolloPortal创建灰度后都做了什么呢?Apollo是如何维护主版本与灰度版本关系的呢? 其实创建灰度非常简单,可以看到下图中“Cluster”表结构中的“ParentClusterId”字段。这个就是维护灰度关系的核心。 在创建灰度的时候,Apollo会根据当前Cluster、Nam 阅读全文
posted @ 2021-03-22 14:17 瓶子coder 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 入口 ApolloApplicationContextInitializer (它实现了 ApplicationContextInitializer接口,并重写了initialize方法)。 ApplicationContextInitializer简单介绍: ApplicationContextI 阅读全文
posted @ 2021-03-22 14:10 瓶子coder 阅读(6026) 评论(0) 推荐(0) 编辑
摘要: 前两篇内容 《深入理解Apollo核心机制之配置读取——前言》 《深入理解Apollo核心机制之配置读取——ConfigService定时扫描》 概述 读取配置除了默认5分钟间隔去轮询接口拉取配置,还有客户端主动长轮询ConfigService,等待通知后主动拉取配置。本文就看看客户端是如何开始客户 阅读全文
posted @ 2021-03-22 13:59 瓶子coder 阅读(804) 评论(0) 推荐(0) 编辑
摘要: #概述 之前我们了解了,客户端会每秒(默认)长轮询Config Service,等待通知,然后去主动拉取配置文件。本文主要跟进Config Service主动轮询ReleaseMessage表,并通知对应监听器的源码,最终终止客户端长轮询的源码。附上之前的链接《深入理解Apollo核心机制之配置读取 阅读全文
posted @ 2021-03-22 13:50 瓶子coder 阅读(810) 评论(0) 推荐(0) 编辑
摘要: #前言 Apollo是当下较为火热的配置中心,顾名思义自然是管理配置的,那么它是如何获取配置的呢?本文会简单介绍相关机制,很多东西自然解释得不到位,后续会有单独章节深追源码看具体实现的。 #配置获取方式 Apollo有两种方式获取配置: 1)客户端定时请求Config Service的配置读取接口; 阅读全文
posted @ 2021-03-22 13:43 瓶子coder 阅读(1475) 评论(0) 推荐(0) 编辑
摘要: #RocketMQ基本API使用 基于原生客户端 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.2.0</version> </depen 阅读全文
posted @ 2021-03-17 16:05 瓶子coder 阅读(506) 评论(0) 推荐(0) 编辑
摘要: RocketMQ基本原理 基础概念 消息模型 RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存储多个Topic 阅读全文
posted @ 2021-03-15 20:47 瓶子coder 阅读(596) 评论(0) 推荐(0) 编辑
摘要: Elasticsearch读写原理 心得: 主分片、副本分片的存在类似各大组件的”主从结构“,需要注意的是,Elasticsearch的写入是针对主分片,而读操作是主分片、副本分片都可以(采用随机轮询策略)。所以——适当增加”副本分片数“将会减缓对主分片的查询压力**,需要注意的是将会消耗同样的内存 阅读全文
posted @ 2021-03-13 16:33 瓶子coder 阅读(302) 评论(0) 推荐(0) 编辑
摘要: #Git常用命令总结 ##Git日志 git log git log --all 查看所有分支的log git log --all --graph 图形化展示 git log --oneline git log --oneline --all git log --oneline --all -n4 阅读全文
posted @ 2021-03-03 11:42 瓶子coder 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 分片 主分片,用以解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点之上。 一个分片是一个运行的Lucene的实例 主分片数在索引创建时指定,后续不允许修改,除非Reindex 副本,用以解决数据高可用的问题。分片是主分片的拷贝 副本分片数,可以动态调整 增加副本数,还可以在一定程 阅读全文
posted @ 2021-03-03 11:20 瓶子coder 阅读(65) 评论(0) 推荐(0) 编辑
摘要: SpringAOP 失效解决方案 SpringAOP是基于代理来对目标方法进行增强,但是有的时候又会出现“增强无效”的情况,比如在@Transactional下的某类中的方法内调用了该类的另一个方法,这种情况下,事务有时候会出现不生效的情况。因为,事务也是基于代理来增强目标对象的目标方法的,我们应该 阅读全文
posted @ 2019-12-26 13:21 瓶子coder 阅读(1205) 评论(0) 推荐(0) 编辑