自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于可持久化内存-AEP的KV存储引擎

基于可持久化内存-AEP的KV存储引擎一份简单的AEP上手指南QuicklyStart切换到测试程序目录cd ../judge通过judge程序对KV存储进行一些测试**-s :set size per Thread.-g :get size per Thread.-t :num threads.**./judge -s 10000 -g 10000 -t 5上面的命令就是5个线程并发,每个线程在纯写阶段写入10000条数据;在纯读阶段,每个线程执行10000次Ge

2021-01-21 20:41:18 1772

原创 生产者消费者模型-c++实现

笔者最近在修改client的scan逻辑,用到了生产消费模型,因此写来写了中这个示例代码。

2022-08-08 17:07:18 1053 1

原创 C++学习-探究一下引用

Ubuntu 18.04 gcc 4.8.4什么是引用在代码层面简单的理解就是变量的别名,简单的讲我们可以通过以下方式声明一个引用:int val = 10;int& val_ref = a;与这个概念经常被一起提及的便是指针,那么这两者究竟有什么关系呢?引用的作用无论是指针还是引用,其两者有一个重要的作用:减少值拷贝。回忆以下我们在学习c/c++的时候,在定义函数会存在的三种传递方式:值传递、指针传递、引用传递。三者中值传递会发生值拷贝影响程序的运行效率,此外在处理函数返回值的.

2020-12-25 10:53:15 160

原创 ElasticSearch运维日志-es实现简单的机架高可用

环境:elasticsearch 5.4需求集群包括10个节点,2个机架,当前数据量包含上千个索引共计30T,要求实现机架高可用。解决方案机架高可用这里主要是通过AwarenessAilocationDecider来实现的。AwarenessAilocationDecider在es集群中分片分配是经常遇到的一个事情,其主要工作就是把一个分片指派到集群中的某个节点的过程,主要有master节点来决定。其触发条件主要包括以下几点:index的增删node的增删rerecouterepl.

2020-12-17 12:25:24 613

原创 Clion设置code format为google format

最近在做c++方面的开发,为了统一编码规范,我们将code style设置为google,为此记录一次如何在clion进行如下配置。安装clang-format直接通过apt安装即可sudo apt-get install clang-format然后我们通过clang-format生成.clang-format文件clang-format -style=Google -dump-config > .clang-format这里有个坑人的地方,如果没有注释下面的内容会报错,查了好久也没

2020-07-31 12:21:01 5642

原创 C/C++踩坑纪:eclipse gdb无法进入断点

问题描述最近一个项目需要同时编译c/c++,即在同一个工程中既存在.c文件也存在.cpp文件。编译正常,然后在调试时,在c文件部分进入断点正常,而对于c++部分的断点却直接跳过。具体体现c++部分报错时,会显示no source,也就是找不到相关的源码c语言调用c++函数部分,相关函数会显示<text variable, no dubug info>问题的定位1。 首先批判是不是设计了 skip all breakpoints,这点我这里不存在的2。最终定位在写makefile

2020-07-21 18:22:54 549

原创 Ubuntu无法重启:教你用u盘系统修复ubuntu

故障描述重启后无法开机,显示停留在Starting gnome这部分无法切入cmd 模式与recover模式问题难点无法进入cmd以及recover模式,也就是无法通过进入cmd模式查看开机日志,排查问题,进行恢复操作解决方案制作一个ubuntu 18.04的u盘启动盘启动时选择u盘启动在u盘系统进行如下操作a. 通过fdsk -l查看本机系统所在的device,比如我当时是/dev/sda2b. 重新挂载相关目录sudo mount /dev/sda2 /mntsudo m

2020-07-16 10:16:32 7929

原创 问题排查记录-多个jar包之间Log4j2冲突问题

问题描述:当存运行环境中,多个jar同时依赖Log4j2会发生冲突,报错如下ERROR StatusLogger Unrecognized format specifier [d]ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern.ERROR StatusLogger Unrecognized format specifier [thread]E

2020-07-06 14:33:15 2395

原创 C语言学习-探索编译过程

前言本渣最近因为业务需求,需要写c语言,遇到了一些编译链接问题,整的我心态爆炸,因此抽出时间来好好研究以下C语言的编译流程。概览如下图所示,源文件编译成可执行文件的流程如下:...

2020-07-02 10:16:06 182

原创 postgreSQL随笔-总结一下PG的查询流程

客户端发起查询请求客户端与服务进程进行通信中有两个关键的共享缓冲区:PgRecvBuffer:存储服务端接收请求,默认8192字节PqSendBuffer:存储服务端发送请求,默认8192字节客户端与服务进程之间存在两种连接方式:网络连接与本地访问;根据这两种不同的连接方式,PG可以获取客户端发送的请求,这时查询的命令将会被保存到inBuf里。static intReadCommand(StringInfo inBuf){ int result; if (whereToSend

2020-06-17 12:23:09 794

原创 PostgreSQL随笔-对象标识符OID

总览在PostgreSQL中,对象标识符OID用来在整个数据集簇(initdb初始化的数据存储区即为数据集簇)中唯一地标识一个数据库中的对象,这个对象可以是数据库、表、索引、视图、元祖、类型等。PostgreSQL内置了Oid类型表示OID,它本身时一个无符号整数。分配策略通常从1开始首先一部分分配给了系统表相关的对象(如元祖、索引等),此外为了扩展会保留一般部分OID,可以从系统表对应的头文件中找到部分OID。用户自定义是否需要元组,只需要使用WITH OIDS。OID的分配由一个全局的OI

2020-06-16 10:33:31 869

原创 Lucene随笔-BoomFilter布隆过滤器

lucene:6.5.1简介在luncene中布隆过滤器主要保存在.blm文件中,主要是用来判断特定的内容是否存在,比如在写入时判断文档id是否存在。此外,布隆过滤器只能判断特定内容肯定不存在,而不能得出肯定存在的结论。实现在luncene中不BloomFilter的具体实现主要是在FuzzySet。其入口为DefaultBloomFilterFactory,这里可以通过getSetForField函数获取一个布隆过滤器。这里的两个参数分别为maxNumUniqueValues:可能存在的最大.

2020-06-15 12:25:48 672

原创 教你如何在eclipse中调试postgreSQL

这里我们假设你的eclipse以及基本的java c/c++环境都已经配置完成下载pg的gitmkdir projectcd projectgit clonegit clone git://git.postgresql.org/git/postgresql.git这个可能很慢,给你两个建议:加上参数–depth=1 可以只拉取最新的分支。将git复制到码云一份,从码云上进行cl...

2020-04-29 17:56:42 928

原创 Lucene随笔-LogMergePolicy

lucene版本:6.5.4当IW索引中的数据发生任何变化时,都会触发merge检测,即找出可以合并的merge的segment集合;并且判断是否需要合并,如果需要合并则返回一组OneMerge,一个OneMerge对应的时一个Segment。**那么如何取获取那些需要合并的段集合呢?**这就是我们本节所要讲的。在Lucene4版本前,其默认的MergePolicy为LogMergePoli...

2020-04-27 13:53:16 302

原创 Lucene随笔-ThreadState

Lucene 6.5.4ThreadState在lucene的curd扮演者非常重要的角色。首先,DocumentsWriterPerThreadPool是一个逻辑上的线程池,它实现了类似Java线程池的功能,在Java的线程池中,新来的一个任务可以从ExecutorService中获得一个线程去处理该任务,而在DocumentsWriterPerThreadPool中,每当IndexWr...

2020-04-13 12:24:22 279

原创 Lucene随笔-记录一下自动flush的触发条件

Luncene 6.5.1在lucene中flush存在两种flush:主动flush与自动flush。那么在哪些情况下会触发自动flush呢?MaxBufferedDocsMaxBufferedDocs描述了索引信息被写入到磁盘前暂时缓存在内存中允许的文档最大数量,也就是每个DWPT缓存的最大文档数量,当一个DWPT中的文档数量超过这个值时会触发自动flush,该参数在建立IndexW...

2020-04-10 11:36:15 364

原创 Lucene随笔-聊聊IndexWriter

Lucene版本:6.5.1Package: org.apache.lucene.index;IndexWriter示例这里以"hello world"的索引过程为例,探究以下IndexWriter的原理:doc1:索引文件。path: 索引相关的文件所存放的文件夹位置。IndexWriter的大致过程如下:首先创建IndexWriter。创建需要索引的文档。通过Ind...

2020-04-01 11:11:24 327

原创 ElasticSearch源码 - GeoPoint

elasticsearch 5.4.3最近在研究es 地理信息相关的接口,目前来说es提供俩种geo相关的类型:GeoPoint 和GeoShape两种。这里我只研究一下GeoPoint。该类型在V_5_0_0_alpha1版本进行了重大的改动。首先我们看一下这个类型的整个结构:父类:BaseGeoPointFieldMapper子类:1. GeoPointFieldMapper2....

2020-03-23 11:43:03 772

原创 如何在elsaticsearch上使用Java Flight Recorder

Java Flight Recorder研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。而Java Flight Recorder(JFR)是一种监视工具,可在应用程序执行期间收集有关Java虚拟机中特定时间实例中事件(数据片段)的信息。操作流程首先我们切换到es的路径下的config文件夹cd $ES_HOME_PATH/config/这是你会发现一个...

2020-03-19 12:06:49 140

原创 jvm学习-GC策略

什么是GCGarbage Collection,简称GC,本质上就是内存管理回收技术(主要指的是heap),在具体探究问题前,我们需要带着一些问题来亚就这个机制:哪些内存需要回收什么时候回收如何回收为什么GC不需要对内存栈(stack)等其他内存区域进行管理?这里主要是因为程序技术其、虚拟机栈以及本地方法栈的都是依附于进程存在,且分配内存的大小都是已知的,在编译过程中都已经确定好...

2020-01-22 11:45:29 231

原创 jvm学习-Java内存模型

Java 内存模型程序计数器程序计算器为一块很小的内存空间,同事为线程私有的,可以认为当前程序的行号指示器。线程私有的是java虚拟机规范里面, 唯一 一个 没有规定任何 OutOfMemoryError 情况的区域生命周期随着线程,线程启动而产生,线程结束而消亡。线程计数器,必须是线程被创建开始执行的时候,就要一同被创建// java 文件被翻译为字节码的时候,字节码大概类似...

2020-01-22 10:09:40 135

原创 Lucene随笔-Lucene的索引文件格式

Lucene 6.5.1建立一个Lucene示例数据写入public class Writer { private static final String PATH = ""; public static void main(String[] args) throws Exception { String doc1 = "hello world"; ...

2019-12-17 11:51:44 427

原创 Lucene随笔-关于double类型转换成Long

Lucene: 6.5.1在DocValue中存储数值类类型的数据时,往往会将double/float转换成Long进行存储。其中可以参考Class NumbericUtils。我们以double2Long为示例:public static long doubleToSortableLong(double value) { return sortableDoubleBi...

2019-12-06 11:24:56 1449

原创 ElasticSearch源码-探索ingest的processor源码

ElasticSearch版本:5.4.5Ingest在ES中,Ingest的存在主要是为了对数据进行预处理,其大概的工作流程如下:预先定义若干的pipeline,分别对其进行配置,其中每个pipeline都会设定若干的processor,而在processor中定义了如何对数据进行处理。点接收到数据之后,根据请求参数中指定的管道流 id,找到对应的已注册管道流,对数据进行处理,然后...

2019-12-03 10:41:38 265 5

原创 lucene随笔-FST(Finite State Transducer)有限状态传感器

lucene版本:6.5.1有限状态传感器,FST(Finite State Transducer)在lucene中扮演着非常重要的一个角色,在4.0后的版本lucene大量使用了这种数据结构,主要是用于在庞大的字典中快速的定位term的位置。那么为什么使用FST呢?考虑到这样一个场景,在lucene中倒排索引是核心,而其带来的问题就是term的字典是非常大,如何在保证term查询效率的...

2019-11-14 10:44:27 2000 1

原创 Lucene随笔-全文检索基本原理

全文检索目前,数据从类型上可以分为三类:结构化数据非结构化数据半结构化数据针对非结构化数据。最简单的全文检索算法就是顺序扫描法,很明显当文档量上升到一定数量时,代价极大。另一种即全文检索法,先对文档建立索引,然后根据索引进行查询。倒排索引(inverted-index)倒排表的结构很简单,本质上就是以词查文,简单的理解为一个HashMap机构, 其key为词term也就是文档中的...

2019-11-05 11:12:50 215

原创 Lunece源码-Analyzer

看一下官方给出的Analyer的定义An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extractingindex terms from text.首先为了提升效率,在同一个线程中的Tokenream是可以复用的。在新建一个Analyer时候会指定复用的策略。...

2019-10-25 10:13:05 175

原创 ElasticSearch源码-Discovery模块

版本: ElasticSearch 5.4.4Lucene版本: 6.5.1java: open jdk 1.8DIscovery模块的功能Discover模块主要是负责发现集群中的节点,以及选择主节点。兼容多种Discovery类型,包含亚马逊的ec2,谷歌的GCE等 本文内置的为zenDiscovery。位置:Interface:org.elasticsearch.disc...

2019-10-12 11:17:20 766

原创 ElasicSearch源码-集群启动

版本: ElasticSearch 5.4.4Lucene版本: 6.5.1java: open jdk 1.8框架入口ES的入口位于以下路径:org.elasticsearch.bootstrap.ElasticSearch当框架启动时候,主要会进行加载安全设置、内部检查以及外部检查。安全设置考虑到某些配置文件是明文写的,而es涉及到的一些数据文件需要加密,并保存在co...

2019-10-11 13:40:31 121

原创 Elasticsearch+java 实例

# Elasticsearch+java 实例楼主刚刚踏入职场,主攻ES,为此写了这个文章主要教初学者一些知识,希望对你有用。如何在idea上构建一个ES项目首先构建一个Maven项目,编辑pox.xml如下:<dependencies> <dependency> <groupId>org.elasticsearc...

2019-07-16 14:19:23 956 2

原创 教你如何在centos7服务器中屏蔽掉那些高流量ip

首先,告诉你在centos7中没有iptables,取而代之的是firewall,因此你要想屏蔽那些恶心的高流量,对不起iptables不行,命令如下 祝你好运。如果要剔除规则请吧add改成remove,然后重载防火墙。# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1....

2018-11-11 21:01:54 2837 1

原创 Tensorflow代码目录组织

今天了解一下tensorflow的项目组织结构,其github链接如下:https://github.com/tensorflow/tensorflow Tensorflow/core目录包含了TF核心模块代码。        public: API接口头文件目录,用于外部接口调用的API定义,主要是session.h 和tensor_c_api.h。         clien...

2018-08-23 13:12:14 382

原创 初识tensorflow架构

初识tensorflow架构tensorflow是目前非常流行的以一款大规模机器学习框架,其前身为DisBelief。今天跟大家一起学习一下tensorflow的整体架构,作为这个专栏的开端,如下图所示便是整个tensorflow的架构,整个tensorflow可以分为五层:设备管理和通信层、数据操作层、图计算层、API接口层、应用层。 设备管理和通信层 网络层:对于tas...

2018-08-20 16:24:11 1114

原创 YARN架构详解

MapReduce v1的不足Jobtraker受内存限制,导致扩展性受限。因为其需要存储每个作业的信息。另一方面,其采用粗粒度的锁导致心跳时间边长。 中心化架构的通病,一旦Jobtraker崩溃,会导致整个集群崩溃。 以mapreduce为中心,MapReduce不支持其他的编程模型,如机器学习,图算法 tasktraker的Map 槽和Reduce槽是固定的,不是动态分配的资源。Y...

2018-08-14 10:01:30 2228

原创 基数排序和计数排序

计数排序时间复杂度:举例:假设我们有如下员工需要按照身高排序员工身高 a b c d e 150 167 176 149 160 就正常而言,人类的正常身高不会超过300cm,因此我们可以生成300个桶,每个桶代表相应的身高,将每个员工分别放在桶中,然后依次倒出,便得到排序后的序列。#include&lt;iostream...

2018-08-13 13:39:50 250

原创 MapReduce体系架构详解

1. 什么是MapReduce?简言之,mapreduce 一种可用于数据处理的以数据为中心(数据本地化)分布式编程模型,采用的是一种分而治之的思想,分为map和reduce两个阶段。Map: 将一个Job分解为若干个taskRecude: 完成分解的task,并且汇总结果。eg: 图书馆以书架进行图书清点。这里“以书架为单位”,就是map的过程,分配任务。而每个书架安排人来清点并...

2018-08-09 21:06:36 2833

原创 ThoughtWorks2019 提前批大作业附代码

说明* 本作业限时3天完成* 作业完成后必须附上 Readme 纯文本文档(推荐使用 markdown 排版)* Readme文档中必须描述如何运行单元测试或主程序来证明作业的正确性(至少针对测试用例输入能够得到对应输出)* 作业的输入和输出必须和题目的测试用例输出严格一致* 可以选用擅长的语言完成,例如C、C++、Java、C#、Javascript、Python、Scala等*请...

2018-08-07 10:33:40 6292 3

原创 快排-无重复元素

void quicksort(int *pArray, int pStart, int pEnd){ int flag = 0; if(pEnd&gt;pStart) flag = pArray[random(pStart, pEnd)]; else return; int start=pStart; int end=pEnd...

2018-03-22 09:05:37 136

原创 大数相加

题目描述请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法的输入则返回error输入描述:输入为一行,包含两个字符串,字符串的长度在[1,100]。输出描述:输出为一行。合法情况输出相加结果,非法情况输出error示例1输入123 123abd 123输出246Error#include &lt;iostream&gt;#include &lt;cstring&gt;#in...

2018-03-21 21:55:56 194

原创 cent os /dev/mapper/centos-root 扩容 xls硬盘

在我们安装cent os 7的时候经常会忽略分配硬盘空间, 导致某一天忽然发现系统盘满了,网上的很多教程通常是处理哦ext格式的,这里教大家 如何处理xfs格式的扩容1.首先,我们发现我们的home文件夹占用了大量的空间,因此我们决定压缩home的空间用于centos-root的扩展,再次之前请现备份home文件夹里面的内容。xfsdump -f /home.xfsdump /home2.卸载ho...

2018-03-09 10:05:02 1574

clang-format

该文件是google c++ 的配置文件 借助clang-format文件 可以参看我的日志来配置clion 实现 google format 祝你好运 哈哈

2020-07-31

空空如也

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

TA关注的人

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