- 博客(37)
- 收藏
- 关注
原创 spring容器启动时,MappingJackson2HttpMessageConverter进行了初始化
public void run() { runSafely(new ConversionServiceInitializer()); runSafely(new ValidationInitializer()); //第3步 HttpMessageConverter进行了初始化 runSafely(new MessageConverterInitializer()); runSafely(new JacksonInitializer()); runSafely(new Cha..
2020-10-31 20:02:39 1180
原创 spring容器启动时,Validator在什么时候进行了初始化
同样在第1步的转换器的工作完成后,第2步就开始校验器的初始化了。@Overridepublic void run() { //1、转换器初始化 runSafely(new ConversionServiceInitializer()); //2、校验器初始化 runSafely(new ValidationInitializer()); runSafely(new MessageConverterInitializer()); runSafely(new Jack.
2020-10-27 13:33:29 557 1
原创 spring容器启动时,convert在什么时候进行了初始化
在spring容器进行初始化的过程中,每到一个阶段,都会发布相应的SpringApplicationEvent通知监听相应event的listener。BackgroundPreinitializer就是一个ApplicationListener。而BackgroundPreinitializer 后台预初始化器在监听到ApplicationStartingEvent事件时,开始做相应的初始化。初始化的内容包括:@Overridepublic void run() { runSa.
2020-10-25 23:14:41 410 2
原创 jackson如何关闭USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING
为什么要关闭?如果不关闭,框架会将数据放到Tomcat的线程里的threadLocal里。由于Tomcat的线程正常情况不会回收,所以这个占用会一直存在如何关闭?如果是自己定义的ObjectMapper,其实关闭还是比较容易的private static ObjectMapper objMapper = new ObjectMapper(); static { //虽然提示过期了,但是还是生效的 objMapper.getFactory().d
2020-10-21 12:27:50 771
原创 fastjson中JSON.toJSONString内存泄露如何解决
内存泄露将数据写入到了Tomcat线程池管理的线程中产生原因public static String toJSONString(Object object, // SerializeConfig config, // SerializeFilter[] filters, //
2020-10-18 19:40:19 16930 10
原创 elastic search 7.9.0 中的写入模型
官方解释1、概述es中的索引是被分成了分片,分片就是shard。文档是放在分片上的。每个分片有多个副本。这些副本也可以被理解为replication group。当文档新增和删除的时候,他们要保持和主shard的同步。这样读取数据的时候才能准确。上面这个过程叫做数据副本模型,即data replication modeles中的数据副本模型具体是基于primary-backup model。这种模型描述的是在replication group中,从一个索引的角度看,有一个分片是承担主分片的.
2020-09-20 17:19:25 133
原创 elastic search中的索引分片重新分配
https://www.elastic.co/guide/en/elasticsearch/reference/7.9/delayed-allocation.html索引分片重新分配是指的什么呢?正常情况下一个索引的分片肯定会最终分配在一个node上,但是当这个node网络中断,无法与集群保持心跳后,es集群为了保证数据不丢失,就要进行索引重新分配的动作。比如node 5 失联,在这个时候对于所有主分片在node 5上的索引,master节点会将索引的副本分片变为主分片master节点分
2020-09-20 11:14:46 2652
原创 elastic search中的retention leases
https://www.elastic.co/guide/en/elasticsearch/reference/7.9/index-modules-history-retention.htmlelastic·search有的时候需要回放一些在索引上的操作。拿个具体的场景举例,从Lucene的角度来说,没有删除操作,只有新增和删除操作。所谓的更新操作,也是es将删除和更新封装成了一个原子操作。当一个文档放入Lucene时会有回放操作,但是删除的时候没有,为了弥补这种情况,es提供了一个叫做软删除的
2020-09-19 23:44:31 755
原创 【最佳实践】canal与binlog的关系
canal版本1.1.4经过验证在实例的instance.properties的canal.instance.master.journal.name=mysql-bin.002851canal.instance.master.position=167158844meta.dat的内容如下{"clientDatas":[{"clientIdentity":{"clientId":1001,"destination":"example","filter":""},"cursor":{"
2020-09-18 15:54:25 377
原创 [源码解析] elastic search 8.0.0 的查询原理(一)
每个查询请求都是先将request封装为一个task,然后再异步执行,如下所示public <Request extends ActionRequest, Response extends ActionResponse> Task registerAndExecute(String type, TransportAction<Request, Response> action, Request request, B
2020-09-14 23:29:06 362
原创 [源码解析] elastic search 的查询原理(二)
查询是分为query阶段、fetch阶段和expand阶段,共3个阶段。重点是前2个阶段。在上篇文章说的是query阶段,接下来说fetch阶段。fetch是要解析query阶段的result的//比如有5个分片,当所有的分片都查询完后,开始进入下一个阶段private void successfulShardExecution(SearchShardIterator shardsIt) { final int remainingOpsOnIterator; if
2020-09-14 23:16:08 333
原创 [源码解析] canal1.1.5 Mac调试环境搭建
canal的源码构建工具使用的是maven.对国内程序员而言相对比较熟悉,因为我发现kafka、spring、elastic search 这些国外开发的框架使用的构建工具都是gradle。一、下载源码git地址https://github.com/alibaba/canal二、使用idea 构建把git地址贴进去,开始下载三、执行构建命令在canal工程的根目录下执行根目录位置mvn clean install -Dmaven.test.skip=t.
2020-09-11 12:19:20 497
原创 [源码解析] elastic search 的查询原理
当用Chrome浏览器插件elastic header连接es服务器的时候,调用的api是GET /_nodeses服务器内部使用的handler是Netty4HttpRequestHandler看一下核心的堆栈信息图对于该API,es内置对应的操作是NodesInfoAction.INSTANCE对于Admin有2个变量。如下所示private final ClusterAdmin clusterAdmin;private final IndicesAdmin..
2020-09-08 10:18:54 144
原创 [源码解析] elastic search 8.0.0 的启动过程(四)
本文继续分析启动流程1、ShardLimitValidator集群中每个node上分片的数量最大默认是10002、MetadataCreateIndexService主要负责处理创建索引3、ActionModule里面有一个入参IndexScopedSettings表示索引层面一些内置的参数值,共计120个,里面有很多参数是经常接触的。我们选几个典型的。比如index.search.slowlog.threshold.fetch.trace -> {Set.
2020-09-06 23:33:45 224
原创 [源码解析] elastic search 8.0.0 的启动过程(三)
本文继续介绍elastic search启动流程中涉及的内容及自己的分析1、创建SearchModule和query、aggregations、suggesters相关的模块。创建该模块的意思就是将es本身内置的一些term、phrase等查询方式和plugin中提供的与查询相关的规则都注册到es中。内置的高亮规则及plugin中提供的高亮规则内置的一些评分规则及plugin中提供的高亮规则内置的对查询体的parse方式plugin中提供的,比如常见的WildcardQuery、T..
2020-09-05 23:25:22 181
原创 [源码解析] elastic search 8.0.0 的启动过程(二)
将截止到目前为止设计到的所有对象的配置文件收集起来,又是以list集合的方式,final List<Setting<?>> additionalSettings = new ArrayList<>();然后作为参数创建了一个NodeClient对象。如果Node是节点的静态表现方式,那NodeClient就是节点的动态表示方式,将会执行各种action。action是什么呢,我们到相应的场景再说,在这里可以简单理解为查询、新增文档等动作Plugin是es中放
2020-09-01 23:55:02 256
原创 [源码解析] elastic search 8.0.0 的启动过程(一)
启动的时候刚开始没有做啥,真正开始的执行的入口org.elasticsearch.cli.Command#execute1、创建Environment会利用到elasticsearch home中conf的配置文件,必填项在创建Environment之前先准备核心的关键是获取命令行传入进去的path.home的值,放到setting里。因为在创建Environment的时候,要依据该参数将里面的config、plugins、data、logs、bin、lib、modules
2020-08-30 20:54:29 1740
原创 [源码解析] elastic search 8.0.0 Mac调试环境搭建
阅读源码的第一步是搭建调试环境,笔者使用的版本信息是elasticsearch 8.0,Java14 ,IDEA工具,gradle 6.6.1.一、下载elasticsearch 8.0源码https://github.com/elastic/elasticsearch因为家里网速比较慢,使用的是zip包的方式...
2020-08-30 14:22:39 523
原创 【ES 6.6.1】如何优化查询性能--routing
具体在:https://mp.weixin.qq.com/s/msBLxsZbCDArU4BPFvfWxA
2020-07-20 22:55:45 211
原创 【ES 6.6.1】如何优化查询性能--分片
详情参见:https://mp.weixin.qq.com/s/SKF0MeTINbdmnfNJW53Wkw
2020-07-19 15:47:28 109
原创 【ES 6.6.1】Mac10.15 如何搭建ES集群
具体参考https://mp.weixin.qq.com/s/_GX58uymq5WM6iknJjWhfA
2020-07-18 21:27:56 98
原创 kafka进程还在,却连不上broker
具体细节参考:https://mp.weixin.qq.com/s/AkjL4EyzgYWDNWmoHm6Tig
2020-07-09 22:25:39 1332
原创 canal如何设置bin-log
前提条件:这是canal的一个新实例,从未启动过。在/conf/example/instance.properties文件中的position info处设置。
2020-07-06 23:53:17 161 1
原创 Prototype如何使用?
设计模式是阅读源码的先修课。Prototype描述了生成实例的一种场景:通过复制生成实例。具体Demo角色1:client可以通俗的理解为 负责调用public class Manager { private HashMap<String,Product> showCase = new HashMap<>(); public void register(String name,Product product){ showCas.
2020-07-06 23:30:59 336 1
原创 elastic search template 操作demo
PUT /_template/template_test{ "index_patterns": ["*test"], "order": 1, "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "date_detection": false, ...
2020-04-06 20:58:37 169
原创 analyzer使用
POST _analyze{ "tokenizer":"keyword", "char_filter":["html_strip"], "text":"<b>this is my test</b>"}POST _analyze{ "tokenizer": "standard", "char_filter": [{ "typ...
2020-04-06 09:35:54 344
原创 ES如何使用requestbody进行查询
GET kibana_sample_data_ecommerce/_search{ "_source": ["order_date","day_of_week"], "sort":[{"order_date": "desc"}], "from":"10", "size": 2, "query": { "match_all": {} }}如果有一个字段是数...
2020-04-05 22:48:38 217
原创 分词器
ES自带分词器,并通过下面的GET可以查看效果#standard stop simple whitespace keyword patternGET /_analyze{ "analyzer":"simple", "text": "I am a Grown-Color County girl in the running way! 2 flowers"}中文分词器1.do...
2020-04-05 12:01:59 86
原创 Kibana操作命令
POST users/_doc{ "user":"Mike", "post_date":"2019-04-07 09:09:08", "message":"trying out kibana"}PUT users/_doc/2?op_type=create{ "user":"Jack", "post_date":"2019-05-15 09:09:08", "me...
2020-04-04 23:09:11 273
原创 78. Subsets
Given a set ofdistinctintegers,nums, return all possible subsets (the power set).Note:The solution set must not contain duplicate subsets.Example:Input: nums = [1,2,3]Output:[ [3], [1...
2020-01-05 11:00:27 69
原创 938. Range Sum of BST
Given therootnode of a binary search tree, return the sum of values of all nodes with value betweenLandR(inclusive).The binary search tree is guaranteed to have unique values.Example 1:...
2020-01-03 06:30:05 57
原创 215. Kth Largest Element in an Array
Find thekth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.Example 1:Input: [3,2,1,5,6,4] and k = 2Output: 5E...
2019-12-30 06:31:22 55
原创 Path Sum III
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { i...
2019-12-22 20:44:22 57
原创 Path Sum II
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { p...
2019-12-22 20:40:34 47
原创 Path Sum
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { ...
2019-12-22 20:34:53 57
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人