摘要:
1)在子程序中对全局变量的操作,比如 val=9 def test(flag): if flag: val = 1 else: print 'Error' return val test(0) 错误提示:UnboundLocalError: local variable 'val' referenc 阅读全文
摘要:
1、概念:SpringCloudStream 2、具体内容 2.1、SpringCloudStream 简介 SpringCloudStream 就是使用了基于消息系统的微服务处理架构。对于消息系统而言一共分为两类:基于应用标准的 JMS、基于协议标准的 AMQP,在整个 SpringCloud 之 阅读全文
摘要:
ecs迁移专有网络后的问题 1. 使用密钥登录阿里云服务器报错: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决办法: ssh-keygen -R + 服务器ip 2. 启动rabbitmq错误: ERROR: epmd error for ho 阅读全文
摘要:
下山问题 假设我们位于黄山的某个山腰处,山势连绵不绝,不知道怎么下山。于是决定走一步算一步,也就是每次沿着当前位置最陡峭最易下山的方向前进一小步,然后继续沿下一个位置最陡方向前进一小步。这样一步一步走下去,一直走到觉得我们已经到了山脚。这里的下山最陡的方向就是梯度的负方向。 首先理解什么是梯度?通俗 阅读全文
摘要:
bitmap应用场景 有一个无序有界int数组{1,2,5,7},初步估计占用内存44=16字节,这倒是没什么奇怪的;但是假如有10亿个这样的数呢,10亿4/(102410241024)=3.72G左右。如果这样的一个大的数据做查找和排序,那估计内存也崩溃了,有人说,这些数据可以不用一次性加载,那就 阅读全文
摘要:
Mysql只有term dictionary这一层,是以b-tree排序的方式存储在磁盘上的。检索一个term需要若干次的random access的磁盘操作。而Lucene在term dictionary的基础上添加了term index来加速检索,term index以树的形式缓存在内存中。从t 阅读全文
摘要:
SkipList本质上是在有序的链表上实现实现二分查找,它能有效的提升链表的查找效率,其时间复杂度为O(logn)(其中n为链表长度)。简单说SkipList优化了Postings的随机查找的性能问题。 SkipList的节点存储了三部分数据,分别是当前节点指向Block的信息,是关于Block本身 阅读全文
摘要:
BooleanScorer中的一些变量跟方法 static final int SHIFT = 11; static final int SIZE = 1 << SHIFT; static final int SET_SIZE = 1 << (SHIFT - 6); static class Buc 阅读全文
摘要:
Lucene设计了一系列内存高效的数据结构,通过 对象复用 和 内存分页 的思想,来优化Java GC问题。这部分内容将围绕ByteBlockPool, IntBlockPool,ParallelPostingsArray, BytesRefHash展开 ByteBlockPool, IntBloc 阅读全文
摘要:
BulkOperationPacked BulkOperation类的子类BulkOperationPacked,他提供了很多对整数(integers)的压缩存储方法,其压缩存储过程其实就是对数据进行编码,将每一个整数(long或者int)编码为固定大小进行存储,大小取决于最大的那个值所需要的bit 阅读全文
摘要:
去重编码(dedupAndEncode) 去重编码是Lucene中对int类型数据的一种压缩存储方式,在FacetsConfig类中用到此方法来处理int类型数据。其优点在于,存储一个原本需要固定4个字节空间大小的int类型的数据,最好的情况下只要1个字节,最差的情况下需要5个字节。 处理过程 去重 阅读全文
摘要:
Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要P 阅读全文
摘要:
1. accept_mutex events { accept_mutex off; } 当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有 阅读全文
摘要:
innodb引擎中, 锁是根据也的组织形式来进行管理的. 若要知道页中某一条记录是否已经有锁,则通过位图的方式, 位图中的索引与记录的heap no一一对应. 行锁在innodb存储引擎中的定义如下 struc lock_reck_struct{ ulint space; ulint page_no 阅读全文
摘要:
Redis 的淘汰机制 Redis可以看作是一个内存数据库,可以通过Maxmemory指令配置Redis的数据集使用指定量的内存。设置maxmemory为0,则表示无限制(这是64位系统的默认行为,而32位系统使用3GB内隐记忆极限)。 maxmemory 100mb 当内存使用达到maxmemor 阅读全文
摘要:
Redis是支持时间事件的,所谓时间事件,是为某个键值对设置过期时间,时间一到,Redis会自动删除该键值对。例如使用SET命令添加字符串类型的键值对 127.0.0.1:6379> SET blog redis ex 10 //添加键值对<blog, redis>,10秒后删除 OK 127.0. 阅读全文
摘要:
个人理解, 通知分为两种类型, 一种基于键的通知(用来监听某个键的修改和被执行了什么命令), 一种是非键的(可以理解为mq,通过指定一个channel) 基于键的通知 1. 通知功能介绍 客户端可以通过 订阅与发布功能(pub/sub)功能,来接收那些以某种方式改动了Redis数据集的事件。 目前R 阅读全文
摘要:
在Redis的源码中,到处可见robj类型的变量,在介绍其他模块时,只是将它看成Redis的数据类型,并没有深入探究。而事实上,它是对象系统,提供了对多种类型的封装,Redis可以根据数据的具体形式,采用不同的类型进行存储,一方面提高了灵活性,一方面也为节省内存提供了便利,因为Redis所有的数据都 阅读全文
摘要:
Redis提供一种叫整数集合的数据结构,当数据中只包含整数,并且数据数量不多时,Redis便会采用整数集合存储 Redis保证整数集合有以下几个特性 所含元素全是整数,且不重复 内部元素有序,通常是会从小到大排序 内部编码统一,尽可能采用合适的编码保存数据 当编码不合适时,执行升级操作 接下来会针对 阅读全文
摘要:
同数组相比,链表的插入删除效率是O(1),但是如果想要在链表中查找某个元素,就糟糕了,复杂度会是O(N),为了提高查找效率,就有了跳表的概念。所谓跳表,就是可以跳跃的链表,回想二分查找算法,每次的查找都是跳跃性的,这才使得二分法效率这么高,跳表的设计同样也借鉴了二分法的策略,实现跳跃查找,当然,需要 阅读全文
摘要:
另可参考: https://blog.csdn.net/fishmai/article/details/78515355 https://blog.csdn.net/men_wen/article/details/71514524 https://blog.csdn.net/u012658346/a 阅读全文
摘要:
参见: https://my.oschina.net/editorial-story/blog/3052308 1. epoll模型简介 epoll是Linux多路服用IO接口select/poll的加强版,e对应的英文单词就是enhancement,中文翻译为增强,加强,提高,充实的意思。所以ep 阅读全文
摘要:
一, Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命 阅读全文
摘要:
一, 图解 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。 接下来分别介绍Redis的哈希表、哈希表节点以及字典的实现。 哈希表 Redis字典所使用的哈希表由dict.h/dictht结构定义: /* * 哈希表 阅读全文
摘要:
浅拷贝 首先看下面这段代码: # include<assert.h> # include<string.h> #include <stdlib.h> typedef struct Node//定义了一个结构体 { int size; char *data; }S_Node; int main() { 阅读全文
摘要:
struct test{ int i; char *p; }; struct test *str; int a = 1; char *b = "ioiodddddddddddd"; str = (struct test *)malloc(sizeof(struct test));//结构体指针不为n 阅读全文
摘要:
一、有时候需要需要看一下一个结构体内成员地址的偏移量,下面介绍两种实现方法。 二、实现方法。 1、方法一,包含头文件#include <stddef.h>,调用函数offsetof(struct s, i)来实现。 2、方法二,使用&(((s1*)0)->i)的形式。 三、实例测试。 1、c代码 # 阅读全文
摘要:
sds要点总结: 1.sds定义为sdshdr中的 buff[]指针, 并向外暴露, 而sdsdhr不对外 2.buff[]还是为以'\0'结尾, 以此兼容c 3.buff[]是个柔性数组, 其主要意义在于: a), 便于内存管理, 可以和sdshdr同时申请内存和释放 b), 便于扩容, 如果使用 阅读全文
摘要:
常规文件系统操作(调用read/fread等类函数)中,函数的调用过程: 1、进程发起读文件请求。 2、内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息,从而找到此文件的inode。 3、inode在address_space上查找要请求的文件页是否已经缓存在页缓存中。如果存在,则直接返 阅读全文
摘要:
说明: 1、父进程和子进程可以共享打开的文件描述符。 2、父子进程共享文件描述符的条件:在fork之前打开文件。 3、对于两个完全不相关的进程,文件描述符不能共享。 4、父子进程文件描述符是共享的,但是关闭的时候可以分别关闭,也可以同时在公有代码中关闭 进程20029对文件的读取后的当前位置应该为d 阅读全文
摘要:
综述 “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文 阅读全文
摘要:
一、ARP在同个网段下的工作原理 首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就 阅读全文
摘要:
1.学习ARP前要了解的内容 建立TCP连接与ARP的关系 应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表: 如果目的IP和自己在同一个网段: 当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口sen 阅读全文
摘要:
1. linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态 2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数 3.很多 阅读全文
摘要:
int getopt(int argc,char * const argv[ ],const char * optstring); 前两个参数大家不会陌生,没错,就是老大main函数的两个参数!老大传进来的参数自然要有人接着! 第三个参数是个字符串,看名字,我们可以叫他选项字符串(后面会说明) 返回 阅读全文
摘要:
首先大概介绍一下,编译分为3步,首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将对应的汇 阅读全文
摘要:
我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service,我们会发现其实它就是一个很普通的shell脚本: [root@zejin240 ~]# cat /s 阅读全文
摘要:
我们已经知道倒排表存储了term 对就在的 docIds,也就是说我们可以用它非常高效的找到所有含有查询词的文档得到一个结果集。这个结果集含有满足查询条件的docid(即文档号),这个结果集极有可能非常大。 这里有两个非常重要的件:1. 结果集只有含文档号,不含文档的内容;2. 这个结果集很大,有很 阅读全文
摘要:
规格和分组价是一对多的关系, 所以使用@SecondaryTable注解后, 在查询SpecificationWithItemAndGroup实体时, 会出现重复数据. 在使用SpecificationWithItemAndGroup实体查询并且限制了关联表的条件可以锁定一个商品只出现一次, 如把g 阅读全文
摘要:
TreeSet的底层是TreeMap的keySet(),而TreeMap是基于红黑树实现的,红黑树是一种平衡二叉查找树,它能保证任何一个节点的左右子树的高度差不会超过较矮的那棵的一倍。 TreeMap是按key排序的,所以TreeSet中的元素也是排好序的。显然元素在插入TreeSet时compar 阅读全文