自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chenxi13

韬光养晦,厚积薄发。

  • 博客(118)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Cookie与Session简单入门

Cookie 与 Session 都是来完成一次会话内多次请求间数据共享的(解决 http 无状态问题)。

2022-08-21 18:52:23 290 1

原创 浅析 ES Update 过程

序最近工作中用到了 UpdateRequest ,踩了一些坑,于是去阅读了一下 UpdateRequest 的核心代码。源码位置es update 的核心代码位于 org.elasticsearch.action.update.UpdateHelper 这个类中。具体的方法如下:public Result prepare(UpdateRequest request, IndexShard indexShard, LongSupplier nowInMillis) { final G

2021-08-11 16:44:50 4797

原创 Git常用命令记录

一、分支相关# 查看远程分支情况git remote show origin# 更新最新分支情况(注:只是分支,不涉及具体内容),与远程同步git remote prune origin# 查看本地分支与远程分支关联情况git branch -vv# 建立本地分支与远程分支的关联git branch -u origin/xxx# 删除远程分支git push origin --delete xxx二、暂存点相关# 暂存本地修改, -u 选项是包括未追踪的文件,即新添加没有

2021-03-02 10:25:03 207 1

原创 Elasticsearch 集群使用 xpack 进行访问控制配置流程

Elasticsearch 集群使用 xpack 进行访问控制配置流程本文是基于 elasticsearch 7.10.1 版本以及 kibana 7.10.0 版本进行配置的。常规的搭建 ES 集群,kibana 的流程这边就不赘述,直接进入正题。首先进入 Elasticsearch 的安装目录(以下所有操作,都以 elastic 用户来执行,搭建 es 环境的时候应该讲过,这里不再赘述)一、生成 ca 、生成 证书# 生成 ca# 根据提示:# 输入 ca 的密码(密码不要忘记,后面生成

2020-12-11 16:53:45 1451 1

原创 ES写操作理解

一般来说,使用ES都是将其作为分布式搜索系统或者是分布式NoSQL数据库。从这两个角度分别来说一下 ES 的写操作。写操作在分析一个分布式系统的写操作时,一般要考虑以下几个点:可靠性:也就是持久性,数据成功写入系统后,数据不会丢失。一致性:数据写入成功后,再次查询确保读到的是新数据,不能读到旧数据。原子性:一个写入操作或者更新操作要么全部成功,要么完全失败, 没有中间状态。隔离性:多个写入操作不影响。实时性:写入后是否能够理解被查询到。性能:写入性能,吞吐量等。LuceneES 内

2020-07-08 19:58:23 465

原创 ES踩坑记录:index属性值上限

最近,在工作中遇到一个 bug,才给 es 尝试插入 data 时,发生异常,死活插入不进去。异常信息如下:其实可以一眼看出,大概意思就是 index 内的属性值限制是 1000,现在已经超过 1000 了,那么该如何修改呢?如何查看 index 内的属性值呢?# 查看 my_index 的设置GET my_index/_settings可以看到,这里就是我们 index 的 fields 的上限设置,这里由于我已经修改了这个设置,所以显示是 10000。设置方法如下:# 设置index

2020-06-04 15:56:13 2300 1

原创 Redis学习历程(二)

Redis字典Redis 的字典底层使用哈希表作为实现,一个哈希表内有多个节点,每个节点就是字典中的键值对。首先,先看看哈希表的定义。typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码,用于计算索引值 // 总是等于 size - 1 unsigned long sizemask; // 该哈希表已有

2020-06-04 15:25:19 181

原创 Redis学习历程(一)

字符串Redis里使用的字符串又叫做简易动态字符串,其实这里它这里的设计与 C++ 的 string 类有异曲同工之妙。SDS先看看 SDS 的定义。struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于 SDS 所保存字符串的长度 int len; // 记录 buf 数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];};这里要说的是,SDS 遵循 C

2020-06-01 16:41:32 205

原创 nginx常见的负载均衡策略

nginx常见的负载均衡策略1. 轮询nginx 默认的负载均衡策略就是轮询的方式,即每个请求按照时间的顺序逐一分配到不同的后台服务器,如果后台服务器挂掉,自动剔除。upstream backserver { server 192.168.0.1:8080; server 192.168.0.2:8080; server 192.168.0.3:8080;}这种方式可以说是正儿八...

2020-01-21 16:18:25 380

原创 Java-反射相关学习

反射体系是 Java 体系中一个非常具有代表性的体系。什么是反射体系呢?通俗来讲,反射就是对象的反向处理操作。根据类的实例化对象来反向推出类的组成。一般来说,我们采用实例化的方式是className objectName = new constructor ( ) 这就是正向的一次操作,而反向操作是什么呢?class Student { Student() {}} Student st...

2018-12-13 23:57:11 205

原创 Linux:vfs、signal、task_struct 个人理解图(未完待续)

前序在文章开始,首先要说的是,作者才疏学浅,以下如果有问题,还请各位看官多多指教。此图也是作者自己理解的一些东西。理解可能有些偏差,有不妥之处,还请见谅!如果有需要原图者,可私信作者。如有问题,切要指出,以便改正!...

2018-08-21 09:54:51 534

原创 从造轮子做起: shared_ptr

由于 auto_ptr 与 scoped_ptr 都有一些弊端,所以 shared_ptr 出现了。它采用了引用计数的方式来处理拷贝构造与赋值运算。template <typename T>class SharedPtr {public: SharedPtr(T* ptr) :_ptr(ptr) { _count = new size...

2018-08-16 20:29:51 258

原创 从造轮子做起:scoped_ptr

上篇博客讲到 auto_ptr 的时候,说到一定不要使用。原因就是它的拷贝构造也好还是赋值运算符重载也好,执行完自己什么都没有了。今天讲的这个 scoped_ptr 这个更 diǎo ~~~,想复制我的?不存在的?还能让你拷贝了。这是俺的私有财产,谁都别想分!就是这个意思。#include <iostream>template <typename T>clas...

2018-08-16 19:48:07 243

原创 从造轮子做起:auto_ptr

实现简单版本的 auto_ptr 智能指针。我个人认为,这个 auto_ptr 千万不要使用,因为它的管理权转移法真的很不符合我们的预期。ps:我给你拷贝我的东西,结果拷贝完,我的没有了?合适吗?但是还是理解实现一下这个历史包袱问题~~~#include <iostream>template <typename T>class AutoPtr {public...

2018-08-16 19:41:25 235

原创 从造轮子做起:List

今天来造一个简单版本的 List 。#include <iostream>using namespace std;template <class T>struct ListNode{ T _val; ListNode* _next; ListNode(T val) :_val(val) , _next(nu...

2018-08-16 08:33:53 202

原创 从造轮子做起:String

实现简单的 String 类,采用深拷贝的形式。#include <iostream>#include <string.h>#include <assert.h>using namespace std;class String {public: String(const char* str = " ") { size_t ...

2018-08-15 17:29:38 169

原创 C++ 模板总结

C++ 模板1、模板概念模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。2、typename 与 class template <class T> // 采用 class 来声明模板 class { }; template <typename T> // 采...

2018-08-15 16:24:11 383

原创 从造轮子做起:Vector

简单实现 STL 库中 vector。template<class T>class Vector {private: void _Erase(T* pos) { if (pos == NULL) return; while (pos + 1 < _finish) { *pos = ...

2018-08-15 09:30:07 201

原创 C++ 多态总结

C++ 多态1、虚函数类的成员函数前面加上 virtual 关键字,这个成员函数称为虚函数。2、虚函数重写当在子类定义了一个与父类完全相同的虚函数时,则称子类的这个函数重写了父类的虚函数。3、多态静态多态:利用函数重载,编译时确定。动态多态:利用类继承,虚函数机制实现。运行时确定。4、构造函数不能定义成虚函数在构造一个对象的时候,必须知道对象的实际类型,而虚...

2018-08-15 09:25:56 251

原创 C++ 继承总结

C++ 继承总结继承1、三种类成员访问限定符继承public:公有继承protected:保护继承private:私有继承2、公有继承、保护继承、私有继承基类的私有成员在派生类是无法被访问的,如果一个基类不想让基类对象之间访问自己的成员,但是需要在派生类中访问,那么可以将该成员设置为 protected (保护类)。公有继承是一个接口继承,所有基类可用的成员...

2018-08-13 10:29:29 197

原创 Cookie

CookieHTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息。Cookie 是服务器发送给客户端的数据,该数据会被保存在浏览器中,并且客户端的下一次请求报文会包含该数据。通过 Cookie 可以让服务器知道两个请求是否来自于同一个客户端,从而实现保持登录状态等功能。1. 创建过程服务器...

2018-08-13 08:47:19 152

原创 C++:函数重载、缺省参数及命名空间的理解

类型在 C 语言中,类型有内置类型与自定义类型之分。其中内置类型就是常常用到的 int、char等。而自定义类型就是定义的一些数据结构struct/enum/union等,如 typedef struct LinkNode。而在 C++ 当中,类型也分为内置类型与自定义类型。内置类型与 C 语言一致。而自定义类型分为:struct/class/enum/union,我们发现,相比于 C ,...

2018-07-09 18:50:14 203

原创 C++:实现日期类

在学习了 C++ 的类和对象后,利用 C++ 对日期类功能的基本实现。基本操作对日期的基本操作无非就是日期直接加减,以及日期之间的天数计算等。这里,用 C++ 类的构造函数及运算符重载来实现。#pragma once#include <iostream>using namespace std;class Date {public: Date(int...

2018-07-09 17:08:07 507 1

原创 网络基础:ARP协议

ARP 协议ARP 协议是一个介于数据链路层与网络层之间的协议。其作用是建立了主机 IP 地址和 MAC地址的映射关系。在进行网络通讯的时候,源主机只能够知道目的主机的 IP 地址和端口号,却并不知道目的主机的 MAC 地址。而数据包是由网卡接收到,再去向上传输给上层协议处理的,如果接收的数据包的MAC地址与本机的不同,那么直接丢弃掉该数据包。所以在这之前,必须要知道目的主机的 MAC 地址,...

2018-06-11 15:21:11 466

原创 数据链路层之以太网协议

在 IP 数据包交付的过程中,在数据链路层会对数据包进行添加报头信息。以太网协议就是数据链路层的一个重要协议。这样说其实不太准确,因为以太网协议是一个规定数据链路层及物理层的协议,不能说它是数据链路层的一个协议。以太网帧以太网帧就是将网络层交付的数据添加报头信息后,此时的数据以帧的形式传递。以太网帧的格式如下:在这里,目的地址与源地址这里都指的是 MAC 地址。每一个主机对应唯...

2018-06-06 17:22:48 20029

原创 网络基础:浅析IP协议

IP协议概念 IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。 IP协议不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。IP协议报头格式逐一介绍各个字段的含义:4位版...

2018-06-05 15:27:25 3430

原创 哈希冲突应对之多阶哈希表

哈希表在处理数据查找、判断数据是否存在时非常的高效,但是哈希表在插入时可能会出现哈希冲突。而解决哈希冲突主要两种方式就是开散列与闭散列的解决方式,两者各有优点与缺点。而今天要说的解决哈希冲突的方式是建立多阶哈希表!多阶哈希表其实所谓多阶哈希表可以理解成多个数组,但是这些数组都是特殊的。这些数组的长度不一致,每个数组所能存储的元素个数都是一个素数(利用素数作为元素个数是避免产生哈希冲突的...

2018-06-04 16:23:09 2872

原创 排序算法:快速排序

快速排序 快速排序由 C. A. R. Hoare 在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序!都叫快速排序了,它能不快吗?快速排序是排序算法中效率最快的!!是对冒泡排序的一种改进...

2018-06-04 13:55:28 361

原创 排序算法:归并排序

归并排序 归并排序(MergeSort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。简单来说归并排序类似于对两个有序序列的合并。思路也就是说,将待排序的序列分成 N 组,然后对这 N 个组两两合并成一个新的有序序列,接着继续两两合并,直至最终只有一个有序序列结束。这个过程就是先将待排序序列分组,直...

2018-06-01 15:04:04 282

原创 排序算法:堆排序

堆排序在数据结构之堆的基本操作这篇博客当中提到过一个堆排序。就是将一个堆的元素删除完毕过后,此时的数组内部就是一个有序的序列。堆与排序堆是一个完全二叉树,堆的任意一个节点都是以这个节点为根节点的树中的最值(最大或最小值)这样子的话,每一个堆的堆顶元素都是这个堆的最值。那么依次删除一个堆的堆顶,最后就能够得到一个有序的序列。而堆排序就是利用了堆的这个性质来进行排序的过程。思路...

2018-05-30 16:39:02 274

原创 排序算法:希尔排序

希尔排序 希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1...

2018-05-30 16:16:05 333 1

原创 排序算法:冒泡排序、选择排序、插入排序

在生活中出出都有排序,而且排序算法也是常常能够在学习中遇到的。今天这里,对冒泡、选择、插入这几种常见的排序方式进行实现。 话不多说,进入正题!冒泡排序对于冒泡排序来说,这种算法应该是学习过程中见到的最多的了。冒泡排序简单的来说就是每次一排序过后,将区域内最大或者最小的值冒出,简称冒泡。相比对冒泡排序大家还是深有体会的,这里对冒泡排序不做过多的赘述,直接贴上代码!下面所有的排序算法...

2018-05-30 15:10:36 276

原创 网络基础:TCP协议-粘包问题

面向字节流 创建一个socket的,不仅仅只是申请一个文件描述符,并且还开辟一片发送缓冲区及接收缓冲区。在调用write进行写数据时,先写入发送缓冲区当中,如果数据较大,那么TCP进行分包发送。如果数据较小,那么就现在发送缓冲区内部等待,等到了合适的时候再发出。在接收数据时,首先从网卡驱动程序中将数据读至接收缓冲区,接着调用read进行读数据。由于TCP既有发送缓冲区又有接收缓冲区,所以w...

2018-05-24 15:44:21 432

原创 网络基础:TCP协议-如何保证传输的高性能

TCP高性能的保证TCP传输相比于UDP传输,其更具有可靠性,安全性。但是传输效率与速度都比UDP要稍逊一筹。不过TCP协议自身是保证其效率及性能的。TCP协议保证高性能的方式有:滑动窗口快速重传延迟应答捎带应答滑动窗口在保证TCP传输的可靠的性的时候,其中有一条就是确认应答。倘若是每发送一条数据,就等待一次ACK应答的话。大量的时间就会浪费在数据的往返上,这样性能会...

2018-05-24 14:43:29 2761

原创 网络基础:TCP协议-如何保证传输可靠性

TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接。这篇博客,我们就重点讨论一下TCP协议如何确保传输的可靠性的。确保传输可靠性的方式TCP协议保证数据传输可靠性的方式主要有:校验和序列号确认应答超时重传连接管理流量控制拥塞控制校验和在数据传输的过程中,将每个发送的数据...

2018-05-24 13:04:51 80105 22

原创 数据结构之布隆过滤器的实现

布隆过滤器 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。简单来说,布隆过滤器就是基于位图来实现的。确定某个元素是否出现在一个范围内。比如说一个字符串,无法用一个位来表示是否存在过。那...

2018-05-24 00:01:05 689

原创 数据结构之位图基本操作的实现

位图说到位图,我们应该都不陌生。在学习信号的时候我们知道,信号有递达表,阻塞表。而这些表都是基于位图实现的。所谓位图,就是将每个比特位都当做一种特殊的意义,其值0与1的变化代表不同的含义。使用位图最大的优点就是节省空间。位图的基本操作位图主要的基本操作:设置某一位有效(这里默认有效的含义就是对应比特位为1)设置某一位无效将位图全体置为0将位图全体置为1测试某一位是否被...

2018-05-23 23:48:46 323

原创 网络基础:TCP协议-握手与挥手

认识TCP协议TCP全称为“传输控制协议”,这是传输层的一个协议,对数据的传输进行一个详细的控制。 特点:面向字节流安全可靠有连接TCP协议段格式源端口号与目的端口号:这里与UDP的一样,每个数据都要知道从哪个进程来,要到哪个进程去。32位序号与32位确认序号:这里的序号与确认信号可以理解成两个通信进程在收发数据的时候互相答复的信息。比如说:A进程从序列号10...

2018-05-21 16:01:59 713

原创 数据结构之哈希搜索结构(二)

上篇博客我们以闭散列解决哈希冲突的方式实现了哈希搜索结构。闭散列在实际操作时需要考虑一个问题就是如果插入时发现超过了负载因子,那么这个时候就不能插入了,需要扩容。扩容时,则需要创建更大的空间,并且由于空间变大,导致的可放个数变多,进而导致哈希函数所计算出关键值与对应存储位置发生改变。所以在扩容后拷贝的时候更加的麻烦。开散列解决哈希冲突同样再提出开散列之前定义哈希函数,方便查看。...

2018-05-21 14:57:36 225

原创 数据结构之哈希搜索结构(一)

什么是哈希搜索结构 顺序搜索以及二叉搜索树中,元素存储位置和元素各关键码之间没有对应的关系,因此在查找一个元素的时候,必须要经过关键码的多次比较。所以这样的搜索效率取决于搜索过程中元素的比较次数。而我们理想的搜索方法就是不用经过任何比较,一次直接从表中得到要搜索的元素。如果能够构造一种结构,让所要查找的关键码与它的存储位置有一定的关系,那么可以根据这种关系找到其位置从而更快的找到关键...

2018-05-21 14:39:34 364

es xpack 配置详情

es xpack 配置详情 7.10.1,通过安装 es kibana,使用自带的 x pack 插件来完成权限控制,网上很多都不全,本文非常详细。es kibana 版本号为 7.10.1 与 7.10.0,并且附带相关的步骤,以及方案。

2020-12-15

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

TA关注的人

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