自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (8)
  • 收藏
  • 关注

原创 笔记-Spring事物传播行为理解

Spring事物传播行为使用前提:A方法具备事务,B方法也具备事务,C方法也具备事务,此时A方法调用B方法与C方法,针对B,C方法事务的不同传播行为,BC会进行不同的操作。PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORT...

2020-01-15 15:44:40 181

原创 数据结构-堆排序

堆排序:学习网站:https://www.cs.usfca.edu/~galles/visualization/HeapSort.html//先了解两个概念// 大顶堆:每个节点的值都大于或者等于它的左右子节点的值。// 小顶堆:每个节点的值都小于或者等于它的左右子节点的值。//堆排序的基本思想是:// 1、将带排序的序列构造成一个大顶堆,根据大顶堆的性质,当前堆的根节点(堆顶)...

2020-01-15 10:58:36 115

原创 数据结构-归并排序 nlogn,空间换时间

归并排序://归并排序,首先把一个数组中的元素,按照某一方法,先拆分了// 之后,按照一定的顺序各自排列,然后再归并到一起,// 使得归并后依然是有一定顺序的 。// 归并排序平均时间复杂度:O(nlogn),最坏时间复杂度:O(nlogn),辅助存储O(n)。package com.suirui.sort.mergesort;/** * Created by ...

2020-01-15 10:57:09 192

原创 数据结构-快速排序 最优nlogn 最差n^2

快速排序原理://基本思想:通过一趟快速排序将待排数组分割成独立的两份部分;//其中一部分数组的值均比另一部分数组的值小,则可分别对着两部分数组继续进行排序,以达到整个序列有序。// 快排的平均时间复杂度为n*log(n),最坏的时间复杂度为 n^2。package com.suirui.sort.quicksort;import com.suirui.sort.SwapE...

2020-01-15 10:55:25 701

原创 Elasticsearch学习笔记-第71节:Java API初步使用_员工管理案例:基于Java实现员工信息的增删改查

课程大纲强调一下,我们的es讲课的风格1、es这门技术有点特殊,跟比如其他的像纯java的课程,比如分布式课程,或者大数据类的课程,比如hadoop,spark,storm等。不太一样2、es非常重要的一个api,是它的restful api,你自己思考一下,掌握这个es的restful api,可以让你执行一些核心的运维管理的操作,比如说创建索引,维护索引,执行各种refresh、f...

2020-01-14 10:16:42 119

原创 Elasticsearch学习笔记-第70节:内核原理探秘_最后优化写入流程实现海量磁盘文件合并(segment merge,optimize)

课程大纲每秒一个segment file,文件过多,而且每次search都要搜索所有的segment,很耗时默认会在后台执行segment merge操作,在merge的时候,被标记为deleted的document也会被彻底物理删除每次merge操作的执行流程(1)选择一些有相似大小的segment,merge成一个大的segment(2)将新的segment flush到磁盘...

2020-01-14 10:16:36 70

转载 Elasticsearch学习笔记-第69节:内核原理探秘_继续优化写入流程实现durability可靠存储(translog,flush)

课程大纲再次优化的写入流程(1)数据写入buffer缓冲和translog日志文件(2)每隔一秒钟,buffer中的数据被写入新的segment file,并进入os cache,此时segment被打开并供search使用(3)buffer被清空(4)重复1~3,新的segment不断添加,buffer不断被清空,而translog中的数据不断累加(5)当translog长度达到...

2020-01-14 10:16:28 95

转载 Elasticsearch学习笔记-第68节:内核原理探秘_优化写入流程实现NRT近实时(filesystem cache,refresh)

课程大纲现有流程的问题,每次都必须等待fsync将segment刷入磁盘,才能将segment打开供search使用,这样的话,从一个document写入,到它可以被搜索,可能会超过1分钟!!!这就不是近实时的搜索了!!!主要瓶颈在于fsync实际发生磁盘IO写数据进磁盘,是很耗时的。写入流程别改进如下:(1)数据写入buffer(2)每隔一定时间,buffer中的数据被写入segm...

2020-01-13 16:19:43 143

原创 Elasticsearch学习笔记-第67节:内核原理探秘_深度图解剖析document写入原理(buffer,segment,commit)

课程大纲(1)数据写入buffer(2)commit point(3)buffer中的数据写入新的index segment(4)等待在os cache中的index segment被fsync强制刷到磁盘上(5)新的index sgement被打开,供search使用(6)buffer被清空每次commit point时,会有一个.del文件,标记了哪些segment中的哪些d...

2020-01-13 16:10:59 86 1

原创 Elasticsearch学习笔记-第66节:内核原理探秘_倒排索引组成结构以及其索引不可变原因揭秘

课程大纲倒排索引,是适合用于进行搜索的倒排索引的结构(1)包含这个关键词的document list(2)包含这个关键词的所有document的数量:IDF(inverse document frequency)(3)这个关键词在每个document中出现的次数:TF(term frequency)(4)这个关键词在这个document中的次序(5)每个document的长度:...

2020-01-13 16:07:45 210 1

原创 Elasticsearch学习笔记-第65节:索引管理_复杂上机实验:基于scoll+bulk+索引别名实现零停机重建索引

课程大纲1、重建索引一个field的设置是不能被修改的,如果要修改一个Field,那么应该重新按照新的mapping,建立一个index,然后将数据批量查询出来,重新用bulk api写入index中批量查询的时候,建议采用scroll api,并且采用多线程并发的方式来reindex数据,每次scoll就查询指定日期的一段数据,交给一个线程即可(1)一开始,依靠dynamic m...

2020-01-13 15:56:51 240

原创 Elasticsearch学习笔记-第64节:索引管理_定制化自己的dynamic mapping策略

课程大纲1、定制dynamic策略true:遇到陌生字段,就进行dynamic mappingfalse:遇到陌生字段,就忽略strict:遇到陌生字段,就报错PUT /my_index{ "mappings": { "my_type": { "dynamic": "strict", "properties": { "title...

2020-01-13 15:55:22 707

原创 Elasticsearch学习笔记-第63节:索引管理_mapping root object深入剖析

课程大纲1、root object就是某个type对应的mapping json,包括了properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all)PUT /my_index{ "mappings": { "my_type": { "properti...

2020-01-13 15:45:20 71

原创 Elasticsearch学习笔记-第62节:索引管理_内核级知识点:深入探秘type底层数据结构

课程大纲type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器field的value,在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的lucene是没有type的概念的,在document中,实际上将type作为一个document的field来存储,即_type,es通过_t...

2020-01-13 15:39:37 99

原创 Elasticsearch学习笔记-第61节:索引管理_快速上机动手实战修改分词器以及定制自己的分词器

课程大纲1、默认的分词器standardstandard tokenizer:以单词边界进行切分standard token filter:什么都不做lowercase token filter:将所有字母转换为小写stop token filer(默认被禁用):移除停用词,比如a the it等等2、修改分词器的设置启用english停用词token filterP...

2020-01-13 15:34:36 90

原创 Elasticsearch学习笔记-第60节:索引管理_快速上机动手实战创建、修改以及删除索引

课程大纲1、为什么我们要手动创建索引?2、创建索引创建索引的语法PUT /my_index{ "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ... }, "type_two": { ... any mappings...

2020-01-13 15:26:51 85

原创 数据结构-二叉搜索树的增删与遍历

1、二叉搜索树概念:二叉搜索树是一种节点值之间具有一定数量级次序的二叉树,对于树中每个节点:若其左子树存在,则其左子树中每个节点的值都不大于该节点值; 若其右子树存在,则其右子树中每个节点的值都不小于该节点值。性能分析查询复杂度、构造复杂度和删除复杂度三种操作的时间复杂度皆为。的存在是应为二叉树有可能出现线性结构:下面分析线性结构的三种操作复杂度,以二分法为例:查询...

2020-01-13 14:54:35 154

原创 JAVA基础-集合-11.HashTable介绍

1、Hashtable介绍Hashtable 简介和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null...

2020-01-10 13:37:59 96

转载 Elasticsearch学习笔记-第59节:初识搜索引擎_上机动手实战基于scoll技术滚动搜索大量数据

课程大纲如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scoll滚动查询,一批一批的查,直到所有数据都查询完处理完使用scoll滚动搜索,可以先搜索一批数据,然后下次再搜索一批数据,以此类推,直到搜索出全部的数据来scoll搜索会在第一次搜索的时候,保存一个当时的视图快照,之后只会基于该旧的视图快照提供数据搜索,如果这个期间数据变更,是不会让用户看到的采用基于_d...

2020-01-10 10:31:03 76

转载 Elasticsearch学习笔记-第58节:初识搜索引擎_搜索相关参数梳理以及bouncing results问题解决方案

课程大纲1、preference决定了哪些shard会被用来执行搜索操作_primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3bouncing results问题,两个document排序,field值相同;不同的shard上,可能排序不同;每次请求轮询打到不同的replica ...

2020-01-10 10:30:57 75

原创 Elasticsearch学习笔记-第56节:初识搜索引擎_分布式搜索引擎内核解密之query phase

课程大纲1、query phase(1)搜索请求发送到某一个coordinate node,构构建一个priority queue,长度以paging操作from和size为准,默认为10(2)coordinate node将请求转发到所有shard,每个shard本地搜索,并构建一个本地的priority queue(3)各个shard将自己的priority queue返回给coo...

2020-01-10 10:30:43 90

原创 Elasticsearch学习笔记-第57节:初识搜索引擎_分布式搜索引擎内核解密之fetch phase

课程大纲1、fetch phase工作流程(1)coordinate node构建完priority queue之后,就发送mget请求去所有shard上获取对应的document(2)各个shard将document返回给coordinate node(3)coordinate node将合并后的document结果返回给client客户端2、一般搜索,如果不加from和size...

2020-01-10 10:30:41 102

原创 Elasticsearch学习笔记-第55节:初识搜索引擎_内核级知识点之doc value初步探秘

课程大纲搜索的时候,要依靠倒排索引;排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values在建立索引的时候,一方面会建立倒排索引,以供搜索用;一方面会建立正排索引,也就是doc values,以供排序,聚合,过滤等操作使用doc values是被保存在磁盘上的,此时如果内存足够,os会自动将其缓存在内存中,性能...

2020-01-09 16:03:28 84

原创 Elasticsearch学习笔记-第54节:初识搜索引擎_相关度评分TF&IDF算法独家解密

课程大纲1、算法介绍relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法Term frequency:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关...

2020-01-09 16:02:02 299

原创 Elasticsearch学习笔记-第53节:初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题

课程大纲如果对一个string field进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个string field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT /website{ "mappings": { "article": { "properties": { "t...

2020-01-09 15:51:53 120 1

原创 Elasticsearch学习笔记-第52节:初识搜素引擎_上机动手实战如何定制搜索结果的排序规则

课程大纲1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET /_search{ "query" : { "bool" : { "filter" : { "term" : { "autho...

2020-01-09 15:41:31 76

原创 JAVA基础-集合-10.HashMap介绍

1、HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。...

2020-01-09 14:30:12 77

原创 JAVA基础-集合-9.Map架构

1、概要前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。首先,我们看看Map架构。如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value)。 (02) AbstractMa...

2020-01-09 11:46:43 70

原创 JAVA基础-集合-8.List总结

1、List概括List 是一个接口,它继承于Collection的接口。它代表着有序的队列。 AbstractList 是一个抽象类,它继承于AbstractCollection。AbstractList实现List接口中除size()、get(int location)之外的函数。 AbstractSequentialList 是一个抽象类,它继承于AbstractList。Abs...

2020-01-09 11:13:04 101 1

原创 JAVA基础-集合-7.Stack介绍

1、Stack介绍Stack简介Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用!Stack的继承关系java.lang.Object↳...

2020-01-09 11:09:31 93

原创 JAVA基础-集合-6.Vector详细介绍

1、Vector介绍Vector简介Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。Vector 实现了RandmoAccess接口,即提供了随机访问功...

2020-01-09 11:01:02 102

原创 JAVA基础-集合-5.LinkedList详细介绍

1、LinkedList介绍LinkedList简介LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList实现List接口,能对它进行队列操作。 LinkedList实现Deque接口,即能将LinkedList当作双端队列使用。 LinkedList实现了Clonea...

2020-01-09 10:46:07 108

原创 浅析深拷贝与浅拷贝以及Object.clone()

深拷贝和浅拷贝的基本概念的理解:浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象Object.clone()实现本身实现为浅拷贝package com.suirui.commo...

2020-01-08 13:41:46 173

原创 Elasticsearch学习笔记-第51节:初识搜索引擎_上机动手实战如何定位不合法的搜索以及其原因

课程大纲GET /test_index/test_type/_validate/query?explain{ "query": { "math": { "test_field": "test" } }}{ "valid": false, "error": "org.elasticsearch.common.ParsingException: ...

2020-01-08 13:41:44 66

原创 Elasticsearch学习笔记-第50节:初识搜索引擎_上机动手实战多搜索条件组合查询

课程大纲GET /website/article/_search{ "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } ], "should": [ ...

2020-01-07 11:44:53 73

原创 Elasticsearch学习笔记-第49节:初识搜索引擎_上机动手实战常用的各种query搜索语法

课程大纲1、match allGET /_search{ "query": { "match_all": {} }}2、matchGET /_search{ "query": { "match": { "title": "my elasticsearch article" }}}3、multi matchGET /test_i...

2020-01-07 11:38:01 107

原创 Elasticsearch学习笔记-第48节:初识搜索引擎_filter与query深入对比解密:相关度,性能

课程大纲1、filter与query示例PUT /company/employee/2{ "address": { "country": "china", "province": "jiangsu", "city": "nanjing" }, "name": "tom", "age": 30, "join_date": "2016-01-01"...

2020-01-07 11:31:47 69

原创 Elasticsearch学习笔记-第47节:初识搜索引擎_快速上机动手实战Query DSL搜索语法

课程大纲1、一个例子让你明白什么是Query DSLGET /_search{ "query": { "match_all": {} }}2、Query DSL的基本语法{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... }}{ Q...

2020-01-07 11:24:46 76

原创 Elasticsearch学习笔记-第46节:初识搜索引擎_search api的基础语法介绍

课程大纲1、search api的基本语法GET /search{}GET /index1,index2/type1,type2/search{}GET /_search{ "from": 0, "size": 10}2、http协议中get是否可以带上request bodyHTTP协议,一般不允许get请求带上request body,但是因为get更加...

2020-01-07 11:21:33 69

原创 Elasticsearch学习笔记-第45节:初识搜索引擎_mapping复杂数据类型以及object类型数据底层结构大揭秘

课程大纲1、multivalue field{ "tags": [ "tag1", "tag2" ]}建立索引时与string是一样的,数据类型不能混2、empty fieldnull,[],[null]3、object fieldPUT /company/employee/1{ "address": { "country": "china", "...

2020-01-07 11:16:46 65

Spring源码解析.zip

spring源码解析。使用xmind进行代码整理。包含ioc,aop,tr相关代码部分。

2020-07-31

Spring-quartz.zip

Spring动态任务与静态任务调用实例 静态任务直接使用了spring进行的管理 利用了aware与FactoryBean的思想 动态任务仍然使用quartz,使用Scheduler进行任务管理

2020-06-03

SSO单点登录数据库设计,上一个文件忘记上传数据库设计。本次上传加上

SSO单点登录数据库设计,上一个文件忘记上传数据库设计。本次上传加上

2020-05-25

单点登录: 仿CAS sso.zip

单点登录: 仿CAS。实现了单点登录功能。访问 http://localhost:8090/ssoClient/index/index 或者 http://localhost:8090/ssoClient/login 进行登录 登录成功后会跳转到 http://localhost:8090/ssoClient/index/index。 然后再访问 http://localhost:8070/ssoClient2/index/index 进行测试是时候可以直接登录。

2020-05-14

jedis.zip——java开发redis的工具类

java开发redis的工具类。适合的redis结构为主从分区(16分区),并不适合redis_cluster

2020-03-06

netty学习文件,实现http,websocket,protobuf

netty学习文件,实现http,websocket,protobuf方式,实现服务器与客户端通信。

2020-01-10

HttpClientUtils.java

http请求转发,包含get,post,postform,postjson,以及最重要的formdata的转发

2019-09-05

Labview 同步

无论你是在使用一个数据采集设备中的不同的子系统,还是在高通道数的系统中需要同步多个数据采集设备,NI的LabVIEW 2010都可以将数据采集和生成的同步问题变得简单。

2017-09-25

空空如也

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

TA关注的人

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