- 博客(26)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 使用multiprocessing处理海量的es数据
最近在对大概600w的es数据进行处理,最开始使用的是单进程跑,一跑就是好几天,后面琢磨着要提高效率,于是开始思考如何在原有单进程基础scroll的基础上使用多进程处理es中Index的数据。由于我们不能起多个进程对es进行scroll操作,这块es对scroll的数量是有限制的,于是就琢磨着将第一个scroll存下来,放入一个任务队列中去,然后多个进程去读scroll然后将他们读到的scroll_id放入队列中,直到最后scroll结束整张表。基于上面的思考,于是结合之前的 es读取,进...
2021-06-28 19:33:39
319
原创 Linux下对json文件进行查看-jq
Linux下对json文件进行查看-jqjq是一个查看和解析json文件的linux命令工具,centos直接yum install -y jq ,查看字段可用简单的jsonpath去访问;本文测试数据:{ "name":"John", "age":30, "car":null,"phone":["1"] }{ "name":"zhang", "age":30, "car":null,"behavior":[{"say":"hello"},{"eat":"rice"}] }常用方法:.
2021-03-27 17:40:51
8674
原创 使用python读取elasticsearch的index的所有数据
使用python读取elasticsearch的index的所有数据思路通常使用from+size组合可以便利一定数据量(index.max_result_window),超过限制就es就报错了,想要读取超过index.max_result_window的数据就需要使用scroll进行翻页操作,scroll相当于使用了一个接口自身维护的以及游标(下标)去es中获取数据,每次scroll都会返回下一次scoll的id地址,直到最终hits.hits长度为0(表示已读取当前Index的数据)search
2021-03-27 17:04:41
2480
原创 Redis运维与开发笔记-redis(6.0)以下,为什么快?
Redis运维与开发笔记:redis(6.0)以下,为什么快?(1)redis将数据存在内存中,而内存的响应时间大概是100ns左右,高效的响应速度是redis支持每秒万级读取的基本保障;(2)redis将自身的各种事件:连接,读写,关闭事件与epoll的事件模型向结合,使用epoll作为io多路复用的接口,介绍了网络Io相关的消耗;(3)redis(6.0以下)是单线程的!单线程可以: (1)简化编程流程,在编码层面不用考虑多线程相关的编程; (2)...
2021-03-27 16:45:08
273
3
转载 c++11之default和=delete
本文原文来自《深入理解c++11》中有关于=default和=delete的章节,本文做一个大致的整理,描述他们的大概语义,方便在编程过程中正确使用/*一个类默认有如下函数:构造函数拷贝构造函数拷贝赋值函数(operator=)移动构造函数此外,c++编译器还会为以下这些自定义类型提供全局默认构造函数operatoroperator &operator &...
2019-07-22 23:30:52
207
转载 c++11中的nullptr
文章知识和代码来自《深入理解c++11》一书,此文大致示例nullptr的一些特性,具体细节请读者结合原书深度学习nullptr的类型为nullptr_t ,由nullptr_t修饰的变量具有和nullptr一样的特性 typeinfo(nullptr).name()#include<iostream>#include<typeinfo>using nam...
2019-07-22 23:25:54
889
转载 c++11中的lambda函数
本文转自《深入理解c++11》一书关于lambda函数的使用指南,在此相关的捕获列表知识请读者参考原书对应章节,在结合本文(原书中的示例代码)学习和理解效果更佳#include<iostream>using namespace std;/*int main(){ int grils{3},boys{4};// auto totalChild=[](...
2019-07-22 23:22:17
822
原创 C++ STL总结
C++ STL分为5部分容器,迭代器,空间适配器,函数对象,泛型算法,适配器一、容器理解容器的作用:容器的主要作用是用于存储对象(这里说的对象时指的是包含基本数据类型的数据和复合数据类型实例的对象),提供一种工具来减少我们平时一些数据结构,比如说链表,队列,栈的一些操作和基础数据结构的封装。容器分为三类:顺序容器:比如说vetor,list,deque(1)向量容器:vector,底层数据结构是...
2018-07-03 21:33:09
701
原创 一些基本问题:大小端,网络字节序,socket编程函数的注意点,gdb和coredump调试
1,什么是大小端?大小端是指数据在内存的的存放顺序,现代计算机一次能够加载32bit或者64bit的数据或者指令,因而数据的存放顺序影响它被装载到整数的值。以小端来讲:低地址存数据的低位,高地址存数据的高;而大端敲好反过来:高地址存低位,地址存高位。2.测试大小端测试大小端最常用的方法是使用一个联合体,定义成员为一个short和char然后给short类型变量赋值为1,看char变量是否也是1,如...
2018-06-14 12:28:08
1069
原创 使用pagemap来检验fork的写时复制
首先我们先要了解以下了解以下几种地址物理地址:是真实存在的RAM的具体存储单元地址逻辑地址:由于x86自80838以来出现的分段内存管理方式,操作系统将内存分为若干个段,各个段的起始地址(段基址)由CS,DS,SS,ES,我们平时的程序对变量取的地址叫作段内偏移地址,也就是逻辑地址。线性地址:线性地址的组成为段基址<<4+逻辑地址(一般情况),线性地址就是存在于虚拟地址空间上的地址,又...
2018-05-12 19:48:32
3350
1
原创 C++编写简单工厂和抽象工厂
模式介绍:在简单工厂模式中,可以根据参数的不同返回不同的实例。。简单工厂模式专门定义一个类来负责创建其它类的实例,被创建的实例具有共同的父类。简单工厂模式包含三个角色:工厂角色Factory,抽象产品角色(Product)和具体产品角色(ConcreteProduct)先做个实例来全面诠释我们的工厂模式 有一个销售管理系统支持多种支付方式,如现金支付,信用卡支付,代金券支付等,在设计过如果不使用...
2018-05-07 23:55:59
1842
1
原创 虚拟地址空间
现在我们将介绍linux 32位的虚拟地址空间,这是我们编程进阶的一个标志,4G虚拟地址空间的虚拟地址空间是每个进程的真实写照,堆区,栈区,数据区等等都将在此见证。首先我们先引入操作系统的虚拟内存:一般而言,我们日常聊起的4G,8G的电脑都是基于RAM(随机存储器)的容量而言的。RAM由SRAM和DRAM组成。一般而言SRAM负责cpu的LV1,LV2,LV3 cahce高速缓存。用DRAM...
2018-05-03 22:35:27
3096
原创 select,poll,epoll对比
(1)在使用数据集合上,select将数据集分为读集,写集,和异常集poll对select进行了封装,将事件和描述符绑定在结构体中pollfd中epoll在poll将描述符和事件封装的基础上,将事件集做了进一步的抽象--》epoll内核事件表,事件表将用户关系的描述符放入表中(2)在对于事件和描述符的处理上,select和poll每次监听结束后,都要将就绪的描述符更新到对应的数组中,最麻烦在于它们...
2018-04-20 16:54:22
150
原创 epoll (effictive poll)高效率的poll
epoll与poll和select在使用过程中有很大区别,(1)epoll使用一组函数来来完成任务。它们分别是epoll_create(),epoll_clt和epoll_wait(),(2)再有epoll使用事件表来记录用户关心的描述符上的事件,由此不需要像select和poll一样把描述符集合(fd_set)和事件集(pollfd)在每次调用都要传入内核中,但是epoll需要额外维护一个内核时...
2018-04-20 15:47:05
492
原创 IO调用之poll
为了解决select的监听描述符最大值(1024个)的限制问题,和事件和描述符分开的问题,引入了poll。poll将描述符和要注册的事件和实际发生的事件进行封装pollfd函数原型: #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);pollfd就是封装体。struct...
2018-04-20 01:35:19
348
原创 IO复用之select
seletc,poll和epoll都是io复用复用的接口。I/O复用解决什么问题?I/O复用就是通过一种方法可以同时监听多个描述符的状态,一旦有描述符就绪就通过相应的接口返回通知用户程序进行相应的读写操作。同时你或许注意到它们都是同步的I/O监听。原因在于它们在外部读写事件就绪后自己负责控制读写,进一步说便是在此过程是堵塞的,有数据才读,没数据就等待。然而异步的Io就不需要自己就行读写的控制...
2018-04-19 23:52:42
349
原创 C++ inline粗略后续补充总结
static和inline的区别 static数据和函数(1)static修饰的变量和数据具有文件作用域,inline只能修饰函数(作用域)(2)static符号-》g->globle,链接只管globle符号, 链接器1,static产生符号local,inline不产生符号2,都作用于当前文件(local可见)当前文件(local可见)3,static可以在类中使用,(2)in...
2018-04-11 23:32:32
402
原创 java实现简单的计算器
思路:定义一个主框架Frame,我们对原设计的草图进行划分,以方便后面的布局 下面我们来对主框架进行划分如图,我们将主框架划分为四个JPanel,其中panel1,2,3使用GridLayout布局,GridLayout(1,2),对于panel4我们使用流式布局,主框架设置为FlowLayout, 由此我们把主要的布局设计好了,接下来我们将个标签,文本框,按钮对应按钮按如上设计图依次放入各个pa...
2018-04-11 12:59:11
1754
1
原创 malloc,realloc,calloc对比
malloc作用区域 :堆区 函数声明 :void *malloc(size_t size); 对于申请后的内存的初始值:0xcdcdcdcd 函数返回值: 如果分配成功则返回指向被分配内的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。 ...
2018-04-11 12:40:06
253
原创 HTTP协议总结
概念 超文本传输协议http协议定义了浏览器如何向万维网服务器请求万维网文档,以及怎样把文档传送给浏览器。从层次来讲,HTTP是面向事务的应用层协议是www和浏览器交换文件的重要基础操作过程 服务器端建立套接字(socket),命名套接字(bind)(sockfd>sin_port=htons(80)),创建监听队列(listen)之后等待浏览器发送HTTP请求报文,一旦监听到连接建...
2018-04-10 12:47:46
1722
原创 C语言函数返回值解析
一般来说,函数在返回返回值的时候汇编代码一般都会将待返回的值放入eax寄存器暂存,接着再调用mov指令将eax中返回值写入对应的变量中,如下代码:做简单的sum运算, 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int sum(int ivar1,int ivar2) 5 { 6 return i...
2018-04-09 12:35:53
24772
原创 switch与跳转表
一、switch跳转语句类似于多路开关,可以根据给定条件匹配到符合条件的语句。正式点来说,是根据一个整形数值来进行多路分支的一种结构。在处理具有多种可能结果时,这种语句非常有效。它不仅挺高了C代码的可读性和逻辑性,而且使用跳转表来作为底层实现基础。switch基本框架为int conditionswitch(condition){ case condition1:statements ; ...
2018-04-02 13:07:23
10255
2
原创 自行实现strcpy,strcat,strcmp函数
一、strcpy在这里我们需要科普一个东西:断言何为断言?如果你是字面理解,没错就是断定一句话是不是真的。简单吧?当然我们C语言的断言是以函数assert()来判断一个表达式或者一个值是否是我们需要的,此外使用这个函数需要引用一下assert.h这个头文件。assert断言的用法很简单,就是在一个表达式内判断所需的表达式要判断的值是否是我们需要的。如有以下的函数体void My_strcat(ch...
2018-03-16 00:23:03
1163
3
原创 Gcc的初级使用
一. Gcc的基本命令Gcc是linux环境下的编译器,也是linux c程序的编译命令,下面实例它的一些应用:gcc file.c会在当前目录下生成一个a.out文件,也就是file.c文件对应的可执行文件,这个命名是默认的。gcc –o finalfile sourcefile1.c,sourcefile2.c,sourcefile3.c,,,将后面的若干源代码文件编译链接生成可执行的fina...
2018-03-13 14:45:00
358
原创 指针知识整理
一、何为指针?首先我们有了解以下预备知识(1)内存:内存是顺序编号的一些列存储单元组成的,在内存中,每个存储单元都赋予为敌的编号(地址),计算机通过地址可以方便的在内存单元中存储数据。(2)可以将函数名通过%x打印出该函数的地址。(3)一个程序载入内存,代码和数据都有地址编号。(4)变量名就是对内存一段空间里面数据的抽象,变量的类型决定了读取的字节数...
2018-02-25 23:08:11
2052
原创 sizeof细讲
sizeof是C语言的一个关键字,不是函数,其用于计算被操作对象所占有的内存大小,单位为字节。我们将以一下的例子来细细讲解sizeofint a=0;int *p=&a;int arr[100];(1)sizeof(a);(2)sizeof(p);(3)sizeof(arr);(4)sizeof(&arr)(5)sizeof(&arr[1])第一种情况,si
2018-02-03 16:56:03
1394
javac调试继承类的时候该文件怎么取名?如图
2017-02-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人