浅析 ES Update 过程 序最近工作中用到了 UpdateRequest ,踩了一些坑,于是去阅读了一下 UpdateRequest 的核心代码。源码位置es update 的核心代码位于 org.elasticsearch.action.update.UpdateHelper 这个类中。具体的方法如下:public Result prepare(UpdateRequest request, IndexShard indexShard, LongSupplier nowInMillis) { final G
Git常用命令记录 一、分支相关# 查看远程分支情况git remote show origin# 更新最新分支情况(注:只是分支,不涉及具体内容),与远程同步git remote prune origin# 查看本地分支与远程分支关联情况git branch -vv# 建立本地分支与远程分支的关联git branch -u origin/xxx# 删除远程分支git push origin --delete xxx二、暂存点相关# 暂存本地修改, -u 选项是包括未追踪的文件,即新添加没有
Elasticsearch 集群使用 xpack 进行访问控制配置流程 Elasticsearch 集群使用 xpack 进行访问控制配置流程本文是基于 elasticsearch 7.10.1 版本以及 kibana 7.10.0 版本进行配置的。常规的搭建 ES 集群,kibana 的流程这边就不赘述,直接进入正题。首先进入 Elasticsearch 的安装目录(以下所有操作,都以 elastic 用户来执行,搭建 es 环境的时候应该讲过,这里不再赘述)一、生成 ca 、生成 证书# 生成 ca# 根据提示:# 输入 ca 的密码(密码不要忘记,后面生成
ES写操作理解 一般来说,使用ES都是将其作为分布式搜索系统或者是分布式NoSQL数据库。从这两个角度分别来说一下 ES 的写操作。写操作在分析一个分布式系统的写操作时,一般要考虑以下几个点:可靠性:也就是持久性,数据成功写入系统后,数据不会丢失。一致性:数据写入成功后,再次查询确保读到的是新数据,不能读到旧数据。原子性:一个写入操作或者更新操作要么全部成功,要么完全失败, 没有中间状态。隔离性:多个写入操作不影响。实时性:写入后是否能够理解被查询到。性能:写入性能,吞吐量等。LuceneES 内
ES踩坑记录:index属性值上限 最近,在工作中遇到一个 bug,才给 es 尝试插入 data 时,发生异常,死活插入不进去。异常信息如下:其实可以一眼看出,大概意思就是 index 内的属性值限制是 1000,现在已经超过 1000 了,那么该如何修改呢?如何查看 index 内的属性值呢?# 查看 my_index 的设置GET my_index/_settings可以看到,这里就是我们 index 的 fields 的上限设置,这里由于我已经修改了这个设置,所以显示是 10000。设置方法如下:# 设置index
Redis学习历程(二) Redis字典Redis 的字典底层使用哈希表作为实现,一个哈希表内有多个节点,每个节点就是字典中的键值对。首先,先看看哈希表的定义。typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码,用于计算索引值 // 总是等于 size - 1 unsigned long sizemask; // 该哈希表已有
Redis学习历程(一) 字符串Redis里使用的字符串又叫做简易动态字符串,其实这里它这里的设计与 C++ 的 string 类有异曲同工之妙。SDS先看看 SDS 的定义。struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于 SDS 所保存字符串的长度 int len; // 记录 buf 数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];};这里要说的是,SDS 遵循 C
nginx常见的负载均衡策略 nginx常见的负载均衡策略1. 轮询nginx 默认的负载均衡策略就是轮询的方式,即每个请求按照时间的顺序逐一分配到不同的后台服务器,如果后台服务器挂掉,自动剔除。upstream backserver { server 192.168.0.1:8080; server 192.168.0.2:8080; server 192.168.0.3:8080;}这种方式可以说是正儿八...
Java-反射相关学习 反射体系是 Java 体系中一个非常具有代表性的体系。什么是反射体系呢?通俗来讲,反射就是对象的反向处理操作。根据类的实例化对象来反向推出类的组成。一般来说,我们采用实例化的方式是className objectName = new constructor ( ) 这就是正向的一次操作,而反向操作是什么呢?class Student { Student() {}} Student st...
Linux:vfs、signal、task_struct 个人理解图(未完待续) 前序在文章开始,首先要说的是,作者才疏学浅,以下如果有问题,还请各位看官多多指教。此图也是作者自己理解的一些东西。理解可能有些偏差,有不妥之处,还请见谅!如果有需要原图者,可私信作者。如有问题,切要指出,以便改正!...
从造轮子做起: shared_ptr 由于 auto_ptr 与 scoped_ptr 都有一些弊端,所以 shared_ptr 出现了。它采用了引用计数的方式来处理拷贝构造与赋值运算。template <typename T>class SharedPtr {public: SharedPtr(T* ptr) :_ptr(ptr) { _count = new size...
从造轮子做起:scoped_ptr 上篇博客讲到 auto_ptr 的时候,说到一定不要使用。原因就是它的拷贝构造也好还是赋值运算符重载也好,执行完自己什么都没有了。今天讲的这个 scoped_ptr 这个更 diǎo ~~~,想复制我的?不存在的?还能让你拷贝了。这是俺的私有财产,谁都别想分!就是这个意思。#include <iostream>template <typename T>clas...
从造轮子做起:auto_ptr 实现简单版本的 auto_ptr 智能指针。我个人认为,这个 auto_ptr 千万不要使用,因为它的管理权转移法真的很不符合我们的预期。ps:我给你拷贝我的东西,结果拷贝完,我的没有了?合适吗?但是还是理解实现一下这个历史包袱问题~~~#include &lt;iostream&gt;template &lt;typename T&gt;class AutoPtr {public...
从造轮子做起:List 今天来造一个简单版本的 List 。#include <iostream>using namespace std;template <class T>struct ListNode{ T _val; ListNode* _next; ListNode(T val) :_val(val) , _next(nu...
从造轮子做起:String 实现简单的 String 类,采用深拷贝的形式。#include <iostream>#include <string.h>#include <assert.h>using namespace std;class String {public: String(const char* str = " ") { size_t ...
C++ 模板总结 C++ 模板1、模板概念模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。2、typename 与 class template <class T> // 采用 class 来声明模板 class { }; template <typename T> // 采...
从造轮子做起:Vector 简单实现 STL 库中 vector。template<class T>class Vector {private: void _Erase(T* pos) { if (pos == NULL) return; while (pos + 1 < _finish) { *pos = ...
C++ 多态总结 C++ 多态1、虚函数类的成员函数前面加上 virtual 关键字,这个成员函数称为虚函数。2、虚函数重写当在子类定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写了父类的虚函数。3、多态静态多态:利用函数重载,编译时确定。动态多态:利用类继承,虚函数机制实现。运行时确定。4、构造函数不能定义成虚函数在构造一个对象的时候,必须知道对象的实际类型,而虚...