自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 餐中餐(5)Lucene--存储文件加载(Part 1: Segments加载)

note: 代码版本:Lucene 最新版本 --> https://github.com/apache/luceneGraph Abstract:

2022-05-24 14:55:05 496

原创 餐中餐(4)Lucene--存储文件加载(Part 1: IndexReader读取索引)

Graph Abstract1.IndexReader索引加载入口 // 读取segment信息static DirectoryReader open( final Directory directory, final IndexCommit commit, Comparator<LeafReader> leafSorter) throws IOException { return open(directory, Version.MIN_SUPPORT

2022-05-24 14:40:55 252

原创 餐中餐(3)Lucene--核心类IndexWriter (Part 2)

文章目录Abstract Graph:流程分析:1.获取索引目录的索引文件锁2.获取封装后的Directory3.根据不同的OpenMode执行对应的工作3.1 create模式下的流程配置检查初始化一个新的SegmentInfos对象,同步SegmentInfos的部分信息设置回滚点3.2 APPEND模式工作流程判断StandardDirectoryReader是否为空?Reader不为null:用StandardDirectoryReader初始化一个新的SegmentInfos对象Reader不为n

2022-05-24 14:37:37 436

原创 餐中餐(2)Lucene--核心类IndexWriter(Part 1)

文章目录1.设置索引目录Directory1.1DirectoryBaseDirectory类FSDirectory类SimpleFSDirectory使用SimpleFSDirectory有以下注意点:NIOFSDirectory使用NIOFSDirectory有以下注意点:MMapDirectory如何选择FSDirectoryByteBuffersDirectoryRAMDirectoryFilterDirectorySleepingLockWrapperTrackingTmpOutputDirect

2022-05-23 19:50:09 421

原创 餐中餐(7)Lucene 中的文件锁

文章目录LockFactory的具体实现类NoLockFactorySingleInstanceLockFactory获得索引文件锁释放索引文件锁FSLockFactorySimpleFSLockFactory获得索引文件锁释放索引文件锁NativeFSLockFactory获得索引文件锁释放索引文件锁SimpleFSLockFactory与NativeFSLockFactory各自的特点VerifyingLockFactory认证方法LockFactory在Lucene中用来对索引文件所在的目录进行加锁

2022-05-23 18:49:27 374

原创 餐中餐(1)Lucene--索引文件是怎么存放的

Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式?Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。所以Lucene索引文件到底是怎么存放的?1.实例体验可以看到之前我们创建的一个索引的文件内容,上图中的文件的组织也是有一定的逻辑的:...

2022-05-23 18:23:47 160

原创 kafka learning map (一)

kafka learning map (一)kafka是谁?一言以蔽之:kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等。Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。介绍中可以看到最常用和最重要的两个功能–日志收集和消息系统。那kafka是为了解决什么问题而设计出来的呢?以时间复杂度为O(1)的方式提供消息

2020-12-25 15:36:25 491

原创 netty服务端启动流程案例解析

netty 服务端启动流程案例解析为什么选择netty?netty底层基于jdk的NIO,我们为什么不直接基于jdk的nio或者其他nio框架?下面是我总结出来的原因使用jdk自带的nio需要了解太多的概念,编程复杂,并且在Java原生的IO中只能通过重新实现的方式去切换io并且改动也比较大,而netty底层IO模型随意切换,而这一切只需要做微小的改动。netty自带的拆包解包,异常检测等机制让你从nio的繁重细节中脱离出来,让你只需要关心业务逻辑4.netty解决了jdk的很多包括空轮训在内的

2020-12-21 15:08:30 250

原创 ActiveMQ消息确认策略与支持协议

ActiveMQ消息确认策略与支持协议消息发送策略持久化消息默认情况下,生产者发送的消息是持久化的。消息发送到broker以后,producer会等待broker对这条消息的处理情况的反馈,对于消息的反馈则可以设置消息发送端发送持久化消息的异步方式:connectionFactory.setUseAsyncSend(true);回执窗口大小设置,一个有效的性能优化参数:connectionFactory.setProducerWindowSize();参考博客地址:https://blog

2020-12-18 22:10:00 372 1

原创 ActiveMQ消息队列学习(三)

ActiveMQ消息队列学习(三)ActiveMQ的介绍之前已经介绍过了,而且网上介绍性的东西比较多,在这里就不再去赘述了,本节将结合之前搭建的activeMQ集群完成消息队列的学习。整个思路是先搞定一个实用的demo,然后根据demo进行分析。由于ActiveMQ是JMS规范的一个实现,所以先放置一个图来梳理下,然后针对图中的内容结合ActiveMQ进行总结归纳。首先,先通过几个demo体验下activeMQ的使用。ActiveMQ 点对点消息传递模型首先来个图示意一下:类似于上图,多个客

2020-12-17 23:22:24 271

原创 基于阿里云ECS服务器的Active MQ集群搭建

ActiveMQ集群搭建本次搭建集群是基于阿里云ECS服务器搭建的,本质上是使用Docker完成模拟三台机器搭建集群的过程,本质上在三台机器上搭建集群的的过程和这个是相似的。由于pool,所以采用模拟的方式来搭建集群。拉取阿里云activeMQ镜像docker pull registry.cn-hangzhou.aliyuncs.com/daydayup/activemq可通过docker images命令查看当前镜像:之后可以通过docker命令启动镜像,这里为了快速搭建使用的是自动分配端口

2020-12-16 00:42:55 338

原创 Active MQ 初探(一)

Active MQ (一)Active MQ是Apache一个开源的消息中间件,也可以理解为其是一个消息总线,ActiveMQ是一个完全支持JMS1.1规范和J2EE1.4规范的JMS的Provider的实现,其需要有Java环境,且是一个面向Java的消息中间件。ActiveMQ的原理原理就是生产者将消息发送给ActiveMQ服务端,服务端会根据该消息对应的目标模型(p2p/topic)将消息发送给可以接受的消费者,期间默认会将数据进行持久化,并等待消费者签收消息后才会将消息删除,避免消息丢失。Ac

2020-12-14 01:27:49 217

原创 JavaNIO浅析(1)

JavaNIO浅析 (1)理解几个概念阻塞(Block)和非阻塞(Non-Block):阻塞和非阻塞是进程在访问数据的时候, 数据是否准备就绪的一种处理方式,当数据没有准备如果是阻塞: 往往需要等待缓冲区中的数据准备好过后才处理其他的事情, 否则一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候, 如果数据没有准备好则直接返回,不会等待。 如果数据已经准备好, 也直接返回。同步(Synchronization)和异步(Asynchronous):同步和异步都是基于应用程序和操作

2020-12-11 17:36:28 149 2

原创 Netty入门(2) Netty尝鲜

Netty入门(2) Netty尝鲜action 1 :编写一个应答服务器首先对于netty的maven项目的搭建可以参考一下博客:https://blog.csdn.net/qq_37421018/article/details/87802603

2020-12-10 19:02:25 92

原创 Vertx快速入门参考

Vertx学习什么是vertx?Vert.x最大的特点就在于异步(底层基于Netty),通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。核心点1:异步模型框架Vert.x除了异步之外,还提供了非常多的吸引人的技术,比如EventBus,通过EventBus可以非常简单的实现分布式消息,进而为分布式系统调用,微服务奠定基础。除此之外,还

2020-12-10 00:05:12 11452 6

原创 Netty入门(1) Netty背景

Netty入门(1) Netty背景netty是什么?Netty是基于Java NIO的网络应用框架,是一个NIO client-server(客户端服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来使开发网络应用程序,这种新的方式使得它很容易使用和有很强的扩展性。Netty的内部实现时很复杂的,但是Netty提供了简单易用的api从网络处理代码中解耦业务逻辑。Netty是完全基于NIO实现的,所以整个Netty都是异步的。网络应用程序通常需要有

2020-12-09 23:19:25 145

原创 Zookeeper会话--zookeeper会话创建以及会话管理

Zookeeper会话–zookeeper会话创建以及会话管理之前分析了zookeeper服务器集群的启动,可以说峰回路转,算是把服务器启动的流程熟悉了一下,那么我们需要怎么连接到服务器集群开启一次客户端连接的会话呢?这次就来分析一下zookeeper的会话过程。Zookeeper客户端:无论我们使用zookeeper的zkclient客户端还是acutor,其实都是对zookeeper的API进行了二次封装,将原来复杂的API操作封装为可供客户端调用的API,所以,在分析连接zookeeper集群时

2020-12-09 17:57:35 704

原创 Zookeeper 源码分析–Zookeeper启动流程(二)

Zookeeper 源码分析–Zookeeper启动流程(二)上次说到zookeeper的启动过程,我们已经了解到zookeeper是如何找寻配置文件以及启动的,然而上次也遗留了一个问题,那么zookeeper是如何选举的呢?网上的博客确实很多,有些博客概括的内容也很不错,但是本着探究事物原理的执着,这次就接着上次探究下zookeeper是如何选举并完成最终的集群启动的。Zookeeper的选举算法这是上次我们在结尾处看到的选举算法,可以看到,一开始建立了一个新的Vote,其实就是zookeeper中

2020-12-08 14:01:29 174

原创 Zookeeper 源码分析--Zookeeper启动流程(一)

Zookeeper 源码分析–Zookeeper启动流程(一)最近学习了一下Zookeeper,怎么说呢,总起来就学到了两个概念性的名词,当然这两个名词均和一个Zookeeper的协议相关,那就是ZAB协议,来名词呈上来:崩溃恢复和消息广播。但是俗话说万事开头难,所以这次就先聊下Zookeeper是怎么启动的。Zookeeper启动之预热准备我们身为Java码农,初始化对象的过程,我们都了解,需要做好多的准备,虽然只是简单的new一下,但是也作了很多准备。话说回来,zookeeper的启动也可以理解为

2020-12-04 20:00:06 345

原创 2019 转行渣硕秋招之路(感谢遇到的,致那些努力的人)

秋招算是结束了,感觉像签了卖身契一样。开玩笑的,不过话说回来,真的有些空荡了呢,怎么说呢,面试简历投的不少,就像短信群发一样,当然反馈效果也像短信群发后你的反应一样。因为自己本硕非985,211,非计算机科班,不过幸运的是所学的专业让自己尽早的接触了计算机编程,也算是白纸上还有那么点缀的几道痕迹吧,哈哈。话说刚开篇的逻辑有些混乱了呢,呃,好吧重新捋一捋吧。关于秋招还算顺利,参加了大大小小的不...

2019-11-05 22:46:10 1339 5

转载 Java中关于内存泄漏出现的原因汇总及如何避免内存泄漏

转载:》https://www.jb51.net/article/92311.htm内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 cod...

2019-08-30 11:09:23 427

转载 锁机制初探(五)Moniter的实现原理

在深入理解多线程(一)——Synchronized的实现原理中介绍过关于Synchronize的实现原理,无论是同步方法还是同步代码块,无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的,那么这篇来介绍下什么是Monitor。操作系统中的管程如果你在大学学习过操作系统,你可能还记得管程(monitors)在操作系统中是很重...

2019-06-12 20:02:17 687

转载 锁机制初探(四)Java对象头

上一篇文章中我们从HotSpot的源码入手,介绍了Java的对象模型。这一篇文章在上一篇文章的基础上再来介绍一下Java的对象头。主要介绍一下对象头的作用,结构以及他和锁的关系。Java对象模型回顾与勘误在上一篇文章中,关于对象头的部分描述有误,我已经在我博客的文章中就行修正 。这里再重新表述一下。每一个Java类,在被JVM加载的时候,JVM会给这个类创建一个instanceKlas...

2019-06-12 19:07:45 384

转载 锁机制初探(三)Java对象模型初探

上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现。后面几篇文章会从JVM源码的角度更加深入,层层剥开synchronized的面纱。在进入正题之前,肯定有些基础知识需要铺垫,那么先来看一下一个容易被忽略的但是又很重要的知识点 —— Java对...

2019-06-12 17:00:17 211

转载 锁机制初探(二)Synchronized的实现原理(一)

synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对象加锁。那么,本文来介绍一下synchronized关键字的实现原理是什么。在阅读本文之间,建议先看下Java虚拟机是如何执行线程同步的。反编译众所周知,在Java中,synchr...

2019-06-12 15:04:17 181

转载 锁机制初探(一)Java虚拟机同步机制简介

转载地址:https://blog.csdn.net/w372426096/article/details/80938901想介绍下synchronized的原理,但是又不知道从何下手,在网上看到一篇老外的文章,介绍了和线程同步相关的几个基础知识点。所以想把它翻译一下给大家看看。相信看过这些基础知识之后再看我后面要写的synchronized的原理就会好理解一点了。原文地址:How the...

2019-06-12 14:53:28 183

转载 ES搜索引擎-简单入门

基本概念:  索引Index    es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据库实例(db)相当。索引存放和读取的基本单元是文档(document)。es内部使用的是apache lucene实现的索引中数据的读写。(es被视为单独的一个索引,在lucene中不止一个,因为分布式中,es会用到分区shards和备份replicas机制讲一个索引存储多份)...

2019-03-25 09:48:50 772

转载 MySQL文件类型

前言:本文将介绍Mysql的各种类型的文件。Mysql数据库有以下几种文件:1.参数文件。2.日志文件。3.套接字文件。4.Pid文件。5.表结构定义文件。6.存储引擎文件。1.什么是参数文件?在Mysql的运行过程中,有许多规则是可以配置的,如使用哪个引擎,某种内存结构有多大等等?这些规则都记录在了参数文件中,形如Key/Value的格式,可以人为...

2019-03-20 20:23:31 1665

转载 MySQL · 引擎特性 · InnoDB 文件系统之文件物理结构

转载:http://mysql.taobao.org/monthly/2016/02/01/综述从上层的角度来看,InnoDB层的文件,除了redo日志外,基本上具有相当统一的结构,都是固定block大小,普遍使用的btree结构来管理数据。只是针对不同的block的应用场景会分配不同的页类型。通常默认情况下,每个block的大小为 UNIV_PAGE_SIZE,在不做任何配置时值为16k...

2019-03-20 20:18:32 363

转载 java 中的锁(偏向锁、轻量级锁、自旋锁、重量级锁)

参考博客:http://www.cnblogs.com/qq78292959/p/4252800.html参考博客https://blog.csdn.net/hl_java/article/details/70148453参考博客:https://blog.csdn.net/zqz_zqz/article/details/70233767参考博客:http://www.sohu.com...

2019-03-14 21:57:57 1997

原创 Java虚拟机类加载器与虚拟机字节码执行引擎

1.类加载器对于类加载器,java虚拟机规范中有这么一句,“通过一个类的全限定名来获取描述此类的二进制字节流”,正因为这个看似宽泛的约束使得java虚拟机的实现有了很多的种类,各自有自己的特点并占有自己的领域。虽然类加载器是由Applet技术开发出来的,但是Applet技术基本上已经挂了,但是因类加载思想却在类的层次划分,OSGI,热部署,代码加密等领域大放异彩。对于任意一个类,都需要由加...

2019-03-05 15:00:32 720

原创 JVM学习(一)使用netbeans调试Hotspot虚拟机

折腾了一天,把调试Hotspot踩过的坑分享出来,注意使用root权限,切记!!!首先说下环境:Centos 7 ,jdk1.7u80.获取为官网,可参考此博客的获取方式:https://blog.csdn.net/weixin_39917216/article/details/81296006openjdk 源码获取网址:http://hg.openjdk.java.net/jd...

2019-02-19 11:12:25 1114

原创 白话计算机网络之网络层(二)路由器工作原理

在了解了网络层的功能和服务之后 ,将注意力转移到网络层的转发功能上来,因为这个功能是数据报网络的一个重要的问题,转发功能也就是说从一台路由器的入链路传送到合适的出链路,转发问题最常见的就是编址和最长前缀匹配问题,这些问题慢慢的将在后面的介绍。首先了解下路由器的结构。  1.路由器的结构大致的结构入上图所示,接下来详细的了解每个部分的功能以及结构。1.输入端口如上图所示,输入端口...

2019-02-17 17:50:50 2308

原创 白话计算机网络之网络层(一)概念了解

     说到网络层,哎哟哟,这个可有意思了,怎们用一句话来粗略概括呢,简单的说就是转发和路由选择,承上启下的作用,说白了这一层也是比较复杂的一层,这一层的协议也需要我们好好的去揣摩,这里将涉及到较多的知识点,所以这个得慢慢来,不能着急呀,来吧,我们来一个代表性的例子帮助自己记忆,例如IP协议,以及现在较为流行的IPv6,熟悉吧,嗯,是的可以用这个来给我们的网络层,贴一个标签,便于我们记忆检索。...

2019-02-17 10:08:17 1095

原创 排序算法整理小结(基数排序,计数排序,桶排序)

    这次整理的为三个原理上相近的排序算法,便于比较对比分析,通过他们之间的不同理解三个算法的特点,从而能够设计出符合三者的算法。首先呢,这三个算法都不是基于比较的算法,这和前面的那些算法不同,其核心内容不再通过比较然后交换两者的位置了,而这次要说的是在排序的时候将其顺序和“桶”的顺序相关联起来,通过不同的排序规则,进行排序,然后按照顺序进行输出,这些就是此三类算法的大致流程。计数排序 ...

2018-11-23 15:04:31 232

原创 排序算法整理小结(快速排序)

快速排序          说到快速排序算法,可能我们会了解到其最坏的运行时间为O(n*n),但是对于其平均性能为O(nlgn),正是这一点使得其被广泛的使用,另一个重要的特点就是,其能够进行原地排序,能够尽可能的减少空间的占用,尽可能的减小算法使用的空间。说了这么多理由,那么到底是怎么一回事,或者到底是怎么样的呢?    其核心部分就是选取一个元素,将大于它的放置到右边,将小于它的放置到...

2018-11-22 19:18:58 182

原创 排序算法整理小结(归并排序)

     排序算法,说真的,就是一个排列顺序的算法,有些废话了哈,不过话说回来,顺序对于我们实现某些功能有很大的帮助,然而如何能够快速的将一个无序数列排列好呢?这次整理了几种排序方法,总结讲述了一下实现的原理以及过程,话比较直接,相信各位看官看代码也许比我说要好得多,直接开始吧。1.归并排序    单单看这个名字,归并,归并什么呢,当然是归并我们要排列的数列,或者某个含有顺序的内容串,那为...

2018-11-22 17:25:29 374

原创 二叉堆,堆排序,d叉堆

   堆,这是经常听到的一个数据结构,其非常的重要,重要性就不闲扯了,这次主要说明堆的数据结构,堆一般可以分为大顶堆和小顶堆,顾名思义,也就是最大值或者是最小值在第一个位置,需要说明的是这不是我们自己规定了,而是由于堆的性质决定了,在堆中,子节点的值一定要小于父节点(当堆为小顶堆时),堆包括堆的变形以及使用都紧紧围绕这个核心来展开。     堆可以存在数组中,一般的在数组中,若某个i节点为父节...

2018-11-20 22:13:24 1010 1

原创 LeetCode算法之链表总结--删除类操作,回环链表

       链表是数据结构中较为基础的一种数据结构,其在我们日常的开发中用的比较多,关于链表的一些基础知识,我在我之前的博客中已经介绍过,并且也做了一些简单的实现,然而这个博客主要是讲链表的应用问题,具体体现为在LeetCode上面与链表相关的题目做了一些总结,如果错误,还希望各位不吝,给予指正。链表相关知识可参考此链接。闲话不多说直接上题目进行分析:第一类,改变单个链表的结构的,这...

2018-09-11 17:18:54 231

原创 设计模式之状态模式

状态模式,我们给他一个通俗的定义:在我们改变某一个对象的内部状态的时候,我们也要同时改变它的行为,表面上是改变了动作和行为,实际上则是改变了类的内部的状态。通过这个定义我们可以隐约的猜想到,我们在改变的状态的时候,其实是改变的一个类,也就是说一个类封装了一个状态,这个思想和策略模式比较像,将变化的封装起来,在策略模式中封装的是一个算法,以及算法的流程,其算法的大致过程一致,只是具体到某一个算法时会...

2018-09-03 16:25:19 271

非线性,几何变换

实现简单的图像的非线性变化,可以利用MFC来实现

2014-12-27

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

TA关注的人

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