java技术圈 为您找到相关结果 195

简析hashset的实现原理

hashset底层为hashmap。 源码如下: /** * Constructs a new, empty set; the backing HashMap instance has * default initial capacity (16) and load factor (0.75). */ public HashSet() { map = new HashMap<>(); } 默认 initial capacity(hashmap底层数组大小)为16,load factor 为 0.75 add() 方法 /** * Adds the specified element to this set if it is not already present. * Mo...阅读全文

博文 2019-04-04 09:46:40 www.allocmem.com

自己写LinkedList GoLinkedList

##前言: java GoLinkedList的简易实现,代码中注释比较详尽,通俗易懂,注意事项亦在注解中标明。 ###正文: GoLinkedList.java package com.anteoy.dataStructuresAndAlgorithm.javav2.my; import java.util.Iterator; /** * Created by zhoudazhuang on 17-3-1. * Description: 简易Linkedlist实现 */ public class GoLinkedList implements Iterable{ //当前容量 size private int currentSize; //附加的数据域 用来帮助迭代气检测集合...阅读全文

博文 2019-04-04 09:50:50 www.allocmem.com

简析hashmap的实现原理

提一下哈希表,看下百科: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。 简单理解:1.通过某种算法(使用key的hash算法),计算出key的磁盘散列值,优点为速度和易用。 2.hashmap底层实现仍为数组(HashMap 底层就是一个数组结构,数组中的每一项又是一个链表。数组每个元素里存的是链表的表头信息,有了表头就可以遍...阅读全文

博文 2019-04-04 09:46:30 www.allocmem.com

[转]iptables详细教程:基础、架构、清空规则、追加规则、应用实例

本文出自 Lesca技术宅,转载时请注明出处及相应链接。 本文永久链接: http://lesca.me/archives/iptables-tutorial-structures-configuratios-examples.html iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你理解iptables的工作原理,你会发现其实它很简单。 首先介绍iptables的结构:iptables -> Tables -> Chains -> Rules. 简单地讲,tables由chains组成,而c...阅读全文

博文 2019-04-04 09:53:47 www.allocmem.com

自己写GoBinaryHead 二叉堆binaryheap实现优先队列(堆)

##前言: java GoBinaryHead二叉堆binaryheap实现优先队列(堆) 1. 二叉堆是完全二叉树 因为完全二叉数的规律(root始终最小) 用数组实现此数据结构优于链表 2. ,注意在插入和删除时,需要在数组实现的完全二叉树结构代码中,对原有节点数据进行上滤和下滤,插入时,和子树的根节点比较, 只有比子树根节点大才能满足定义, 否则循环交换位置。堆内元素向下移动为 下滤,删除后空余的位置,从上至下找最小儿子节点填充 3. 在printHeap()方法中对数组的遍历使用了去null操作。 4. 代码中已给出比较详尽注释。 ###正文: GoBinaryHeap.java package com.anteoy.dataStructuresAndAlgorithm.javav2...阅读全文

博文 2019-04-04 09:51:22 www.allocmem.com

Hive SQL的编译过程

Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有了比较深入的理解。对这一过程的理解不仅帮助我们解决了一些Hive的bug,也有利于我们优化Hive SQL,提升我们对Hive的掌控力,同时有能力去定制一些需要的功能。MapReduce实现基本SQL操作的原理详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的...阅读全文

博文 2020-08-07 07:08:10 美团技术团队

深入理解Golang Channel

Golang使用Groutine和channels实现了CSP(Communicating Sequential Processes)模型,channles在goroutine的通信和同步中承担着重要的角色。在GopherCon 2017中,Golang专家Kavya深入介绍了 Go Channels 的内部机制,以及运行时调度器和内存管理系统是如何支持Channel的,本文根据Kavya的ppt学习和分析一下go channels的原理,希望能够对以后正确高效使用golang的并发带来一些启发。以一个简单的channel应用开始,使用goroutine和channel实现一个任务队列,并行处理多个任务。func main(){ //带缓冲的channel ch := make(chan T...阅读全文

疫情之下 | 教你远程办公高效又安全

新冠肺炎疫情防控期间可以说是我国数字化时代最大规模的一次集体远程办公。对于IT互联网企业来说,远程办公并不陌生,但对于传统行业来说,远程办公面临着诸多问题及系列隐私数据安全隐患。 不管是远程办公还是传统的办公楼集群式办公都是基于人与人之间的沟通、基于文档获取与协作完成的。对于传统企业来说,远程办公难度更大,它对企业内部及内外部的沟通效率、文件快速获取能力、文档安全性的要求更加高。 本次疫情或将进一步加快线上办公对传统办公模式的替代,它让许多不愿改变的企业主动接受线上办公,当然也暴露出诸多问题。今天,我们就围绕上述的三大核心问题进行探讨,企业到底该如何应对? [CORNERSTONE](https://www.cornerstone365.cn/)又可以做些什么? 一、企业内...阅读全文

Lucene段概念

Lucene段概念分段存储 在早期的全文检索中为整个文档集合建立了一个很大的倒排索引,并将其写入磁盘中,如果索引有更新,就需要重新全量创建一个索引来替换原来的索引。这种方式在数据量很大时效率很低,并且由于创建一次索引的成本很高,所以对数据的更新不能过于频繁,也就不能保证时效性。 现在,在搜索中引入了段的概念(将一个索引文件拆分为多个子文件,则每个子文件叫作段),每个段都是一个独立的可被搜索的数据集,并且段具有不变性,一旦索引的数据被写入硬盘,就不可再修改。 在分段的思想下,对数据写操作的过程如下。 新增。当有新的数据需要创建索引时,由于段的不变性,所以选择新建一个段来存储新增的数据。 删除。当需要删除数据时,由于数据所在的段只可读,不可写,所以Lucene在索引文件下新增了一个.del的文件...阅读全文

博文 2020-11-18 11:02:36 简书

说好了不哭 | 周杰伦是最懂青春的人,CORNERSTONE只想成为最懂你的人

80、90后的青春,一半是周杰伦,一半是五月天。这两天朋友圈最火的莫过于周杰伦的新歌《说好不哭》,方文山作词,周杰伦作曲,歌曲中还有周董、阿信的倾情合唱,依旧是熟悉的节奏和小清新的风格,中年人的青春记忆,又回来了! ![在这里插入图片描述](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9wbS5pdGl0LmlvL3AvZmlsZS9nZXRfZmlsZS80NzU1MDkxNTNhYzg0ZGY1OTg0YzZhZTAxMjViZGE5ZS5wbmc?x-oss-process=image/format,png) 大家都说,周杰伦是“最懂青春的人”。因此,周杰伦本身就代表着一种青春的情怀。这种“约定”与“成全”的情歌,直接把QQ音乐搞崩的,也只有周董能做...阅读全文

第1章04节 | 常见开源OLAP技术架构对比

1. 什么是OLAP OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库多维模型的基础上实现的面向分析的各类操作的集合。可以比较下其与传统的OLTP(On-line Transaction Processing,联机事务处理)的区别来看一下它的特点:OLAP的优势是基于数据仓库面向主题、集成的、保留历史及不可变更的数据存储,以及多维模型多视角多层次的数据组织形式,如果脱离的这两点,OLAP将不复存在,也就没有优势可言。参考:http://webdataanalysis.net/web-data-warehouse/data-cube-and-olap/2. OLAP引擎的常见操作下面所述几种OLAP操作,是针对Kimball的星型模型(Sta...阅读全文

博文 2021-03-01 06:20:51 知乎

MongoDB运行状态、性能监控,分析 泛城科技技术博客

这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康。 mongostat详解 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。 它的输出有以下几列: inserts/s 每秒插入次数 query/s 每秒查询次数 update/s 每秒更新次数 delete/s 每秒删除次数 getmore/s 每秒执行getmore次数 command/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令 flushs/s 每秒执行fsync将数据写入硬盘的次数。 mapped/s 所...阅读全文

博文 2019-09-01 12:58:00 泛城科技技术博客

用Elasticsearch做Terms聚合计算数据不准的问题

在上一篇文章 通过某瓣真实案例看 Elasticsearch 优化 写了最近获得的一些优化 Elasticsearch (以下简称 ES) 的经验,也把这些分享给厂内使用 ES 的同事和萨 (SA)。 讨论中萨同事提了一个问题: 话说项目有 topK 这种聚合请求么?记得多分片情况下请求参数不合理可能出现不准确的聚合结果 我当时看完的第一反应是「啥?」,但是同事一提我突然隐约想起来曾经在什么地方看过这个问题。然后一顿搜索找到了官方文档的说明 (延伸阅读链接 1),我详细的说说 聚合的结果不准确的原因 我们假设要聚合符合某要求的 N 个结果 (也就是请求参数中的 size),ES 集群分片数为 S。 ES 分发聚合请求到所有的分片上单独处理,最后汇总结果。在单个分片的聚合过程中会把每个要聚合的...阅读全文

博文 2021-06-11 13:44:49 小明明s à domicile

项目管理软件这么多,为什么我只推荐它?

在新型冠性肺炎的侵袭下,似乎那一夜之间,国内大多数企业都接受了在线办公,云端协同的理念。其中,在线项目协作需求激增,根据媒体调查报告显示,疫情在家办公期间,在线项目管理工具每天应用的平均时长达5.89小时,成为疫情期间远程办公的最热SaaS应用Top 5。 如今,企业已陆续复工,越来越多企业都意识到在线项目管理的必要性和重要性,将项目工作彻底搬上云端不再是赶潮流的事情,而是变成了硬需求。选择一个合适的云端项目管理工具成为企业线上项目开展的第一步。 之前企业开展全员在家线上办公主要围绕员工建立规律性、有作息为主,使用的大多数在线办公软件也只是完成以工作计划、文档协同、考勤为主的企业内部管理业务,在项目工作的执行方面还远远不足够,比如:任务分解,进度管理、成本控制、项目追踪等等,难以...阅读全文

Mybatis的一级缓存,二级缓存过期时间分析_ToBeWhatYouWant

Mybatis的缓存级别 Mybatis提供了查询缓存来查询数据,使在项目开发中提高性能。 Mybatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存是mapper级别的缓存,二级缓存是多个SqlSession共享的。Mybatis通过缓存机制减轻数据压力,提高数据库的性能。 一.一级缓存没有过期时间,只有生命周期 (1).Mybatis在开启一个数据库会话时,会创建一个新的SqlSession对象。SqlSession对象的缓存是Mybatis的一级缓存,在操作数据库时需要创建SqlSession对象,在对象中有hashMap用于保存缓存数据(对象的id作为key,而对象作为 value保存的)。一级缓存的作用范围是SqlSession范围的,当一个Sq...阅读全文

博文 2021-04-03 07:07:08 CSDN博客

TCP、UDP数据包大小的限制_灿哥哥的博客

1、概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。 在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。 我们从下到上分析一下: 1.在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+...阅读全文

博文 2020-07-01 02:20:08 CSDN博客_udp包最大长度

Golang map 的底层实现

在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实现,以解答这些疑惑。 基于Golang 1.8.3 1. 数据结构及内存管理 hashmap的定义位于 src/runtime/hashmap.go 中,首先我们看下hashmap和bucket的定义: type hmap struct { count int // 元素的个数 flags uint8 // 状态标志 B uint8 // 可以最多容纳 6.5 * 2 ^ B 个元素,6.5为装载...阅读全文

博文 2019-05-16 09:40:27 简书

LMDB中的mmap、Copy On Write、MVCC深入理解——讲得非常好,常来看看! - bonelee

lmdb创建完env对象,打开时,会做data file和lock file的mmap映射: env->me_lfd = open(lpath, O_RDWR|O_CREAT|MDB_CLOEXEC, mode); void *m = mmap(NULL, rsize, PROT_READ|PROT_WRITE, MAP_SHARED, env->me_lfd, 0); env->me_txns = m; env->me_fd = open(dpath, oflags, mode); env->me_map = mmap(addr, env->me_mapsize, prot, MAP_SHARED, env->me_fd, 0); 其他时刻都直接使用内存指针,通过系统级别的缺页异常获取对应...阅读全文

博文 2020-02-19 12:49:45 博客园

图数据库基础

本文尝试以提问回答的方式来介绍笔者所理解的图数据库。包括图数据库的基本定义,图数据库如何表达数据,图数据相比关系型数据库的优势,图数据库使用场景等。Q:什么是图数据库?A:图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查(CRUD)等操作。图数据库一般用于OLTP系统中,提供在线事务处理能力。与图数据库对应的是图计算引擎,一般用于OLAP系统中,提供基于图的大数据分析能力。Q:图数据库如何表达数据?或者其建模方式A:图数据库使用图模型来操作数据。目前使用的图模型有3种,分别是属性图(Property Graph)、资源描述框架(RDF)三元组和超图(HyperGraph)。现在较为知名的图数据库主要是基于属性图,更确切...阅读全文

博文 2020-11-03 08:18:25 知乎

解剖Go语言map底层实现

map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫bmap(a bucket for a Go map,通常叫其bucket)。这两种结构的样子分别如下所示:hmap: 图中有很多字段,但是便于理解map的架构,你只需要关心的只有一个,就是标红的字段:buckets数组。Golang的map中用于存储的结构是bucket数组。而bucket(即bmap)的结构是怎样的呢? bucket: 相比于hmap,bucket的结构显得简单一些,标红的字段依然是“核心”...阅读全文

博文 2019-05-16 09:39:25 RyuGou的博客

Elasticsearch如何做到数十亿数据查询毫秒级响应?

如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s?后面反而就快了,可能就几百毫秒。说实话,ES 性能优化是没有银弹的。啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景。也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样。Filesystem Cache你往 ES 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 Filesystem Cache 里面去。es 的...阅读全文

博文 2020-11-16 03:44:23 知乎

B+树及插入和删除操作详解

本节介绍一种应文件系统所需而生的一种 B-树的变型树——B+树。前面介绍了B-树,B+树其实同B-树有许多相同之处,本节将用B-树同B+树通过对比两者的差异来介绍B+树。 什么是B+树? 一颗 m 阶的 B+树和 m 阶的 B-树的差异在于: 有 n 棵子树的结点中含有 n 个关键字; 在上一节中,在 B-树中的每个结点关键字个数 n 的取值范围为⌈m/2⌉ -1≤n≤m-1,而在 B+树中每个结点中关键字个数 n 的取值范围为:⌈m/2⌉≤n≤m。 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 所有的非终端结点(非叶子结点)可以看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字。 例如,图 1 中所示...阅读全文

博文 2021-04-09 06:27:02 data.biancheng.net

HTTP/2 学习笔记

Why HTTP/2HTTP/1.1 是文本协议对用户友好,但对计算机不友好 (parse 不高效)TCP 连接管理TCP 慢启动,因此尽可能的复用连接 (keep-alive)一个 TCP 连接上只能有一个 request/response,可以使用 pipeline 实现并发请求,但会有头部阻塞问题,现代浏览器默认不启用 pipeline,而是通过对一个域名同时建立多个连接 workaround头部 field 重复,造成资源浪费资源没有优先级HTTP/2 特性:HTTP/2 没有改变 HTTP/1.1 的语义 (method, status code, URI, header 均保留),其改变了数据是如何传输的。多路复用: 为了更高效地利用多路复用,另外实现了 Flow Control...阅读全文

高性能场景下,HashMap的优化使用建议

最近在技术博客中看到一篇关于 HashMap 的优化使用建议,觉得非常有意思,于是转载该篇博文,和大家一起分享技术。 HashMap 在JDK 7 与 JDK8 下的差别顺便理一下HashMap.get(Object key)的几个关键步骤,作为后面讨论的基础。 1.1 获取key的HashCode并二次加工因为对原Key的hashCode质量没信心,怕会存在大量冲突,HashMap进行了二次加工。 JDK7的做法: h ^= (h >>> 20) ^ (h >>> 12);return h ^ (h >>> 7) ^ (h >>> 4); JDK8 因为对自己改造过的哈希大量冲突时的红黑树有信心,所以简单一些,只是把高16位异或下来。 return h ^ (h >>> 16); 所以即使...阅读全文

博文 2021-04-01 12:33:44 Chares's Blog

都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?

作者 | 翟娜大数据时代,数据的价值越来越被重视,企业从海量大数据中挖掘所需要的信息,用来驱动业务决策以获得更大的商业价值。与此同时,出现了越来越多的大数据技术帮助企业进行大数据分析,例如 Apache Hadoop,Hive,Spark,Presto,Drill,以及今天我们即将介绍的 Apache Kylin 和 Apache Phoenix 项目等,都是使用 SQL 语言就可以分析大数据,极大地降低了大数据的使用门槛。这些大数据技术提供 SQL 查询接口,不只是因为 SQL 学习成本低,同时也和 SQL 拥有丰富而强大的表达能力、能满足绝大多数的分析需求的特性有关系。了解 Apache Kylin 和 Apache Phoenix 的同学都知道,它们都是使用 Apache HBase ...阅读全文

博文 2020-05-15 07:59:44 掘金

拨开概念迷雾,国内网络制式和4G频段科普

随着4G的普及,“五模十三频,七模十九频”之类的电信专业用语开始来轰炸消费者。除了要判断能否支持自己的手机卡之外,现在还要再考虑手机能否支持相应的4G频段。如果希望购买的是水货手机,那还要考虑国内外的网络频段差异,以及3、4G信号回落的问题。很多人听着这些用语或许都已经头大了,所以本文将对常用的网络制式进行科普,希望本文能帮助大家,看懂手机参数表中的网络支持列表,能判断机器是否支持你的手机卡,能否使用国内的4G,以及其是否有破解网络的潜力。网络频段分配但怎么知道自己的手机卡要什么网络制式呢?这又是个深刻的人生命题。这里简单科普一下网络制式问题。所有故事都要从电磁波的特性说起,从红外紫外可见光,到wifi和手机信号,都是电磁波……好吧,篇幅有限,说点结论性的东西。手机的2/3/4G网络和wif...阅读全文

Flink 自定义触发器实现带超时时间的 CountWindow - 云+社区

Flink 的 window 有两个基本款,TimeWindow 和 CountWindow。 TimeWindow 是到时间就触发窗口,CountWindow 是到数量就触发。如果我需要到时间就触发,并且到时间之前如果已经积累了足够数量的数据;或者在限定时间内没有积累足够数量的数据,我依然希望触发窗口业务,那么就需要自定义触发器。import org.apache.flink.api.common.functions.ReduceFunction; import org.apache.flink.api.common.state.ReducingState; import org.apache.flink.api.common.state.ReducingStateDescriptor; ...阅读全文

博文 2021-10-22 03:26:02 腾讯云

彻底弄懂HTTP缓存机制及原理 - 云中桥

前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。 在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。 报文信息主要分为两部分 1.包含属性的首部...阅读全文

Hive学习之路 (十七)Hive分析窗口函数(五) GROUPING SETS、GROUPING__ID、CUBE和ROLLUP - 扎心了,老铁

概述 GROUPING SETS,GROUPING__ID,CUBE,ROLLUP 这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。 数据准备 数据格式 2015-03,2015-03-10,cookie1 2015-03,2015-03-10,cookie5 2015-03,2015-03-12,cookie7 2015-04,2015-04-12,cookie3 2015-04,2015-04-13,cookie2 2015-04,2015-04-13,cookie4 2015-04,2015-04-16,cookie4 2015-03,2015-03-10,cookie2 2015-03,2015-03-10,cook...阅读全文

博文 2020-04-23 02:24:42 博客园

操作系统内存管理_黄规速, 逆水行舟,不进则退。

1、 计算机的存储体系 内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的。可以说,内存是影响计算机性能的一个很重要的因素。 在介绍内存管理的细节前,先要了解一下分层存储器体系: 大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。 CPU缓存(Cache Memory):是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存 读写速度不匹配的矛盾,因为CPU运算速度要比内...阅读全文

Hive On HBase实战 - 哥不是小萝莉

1.概述 HBase是一款非关系型、分布式的KV存储数据库。用来存储海量的数据,用于键值对操作。目前HBase是原生是不包含SQL操作,虽然说Apache Phoenix可以用来操作HBase表,但是需要集成对应的Phoenix依赖包到HBase集群中,同时需要编写对应的Schema才能实现SQL操作HBase。 本篇博客,笔者将为大家介绍另一位一种SQL方式来操作HBase,那就是Hive。 2.内容 2.1 使用场景 熟悉大数据的同学应该都知道,Hive是一个分布式的数据仓库,它能够将海量数据,结构化存储到HDFS上,然后通过SQL的方式对这些海量数据进行业务处理。而且,Hive学习成本很低,熟悉SQL的同学,很快就能编写一个Hive应用程序。 我们通过Hive把数据加载到HBase表中...阅读全文

博文 2020-11-12 03:39:16 博客园

[Hive基础]-- 动态分区与静态分区_余额不足

前言 1、Hive分区的概念与传统关系型数据库分区不同。 2、传统数据库的分区方式:如oracle,分区独立存在于字段,里面存储真实的数据,在数据进行插入的时候自动分配分区。 3、Hive的分区方式:Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并非一个实际字段。 即,当在插入数据的时候指定分区,其就是新建一个目录或者子目录,或者在原有的目录上添加数据文件。 动态分区和静态分区(Hive-0.14以后的特性) 1、动态分区:分区不固定;关键在于“动态”,不需要人为使用 alter table 命令执行添加分区 2、静态分区:分区固定,需要认为使用 alter table 命令添加分区 最大区别:动态分区与静态分区区别就是不指定分区目录,由系统...阅读全文

博文 2020-08-09 05:31:55 CSDN博客_kudu 静态分区 动态分区

Netty之ChannelPipeline理解二

Netty之ChannelPipeline理解二 ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起,所以有关概念这里一起讲。 参考:https://www.cnblogs.com/qdhxhz/p/10234908.html ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起,所以有关概念这里一起讲。 ChannelHandler 概念 handler.png ChannelHandler下主要是两个子接口 ChannelInboundHandler(入站): 处理输入数据和Channel...阅读全文

博文 2021-08-27 06:22:43 简书

go 语言网络序主机序(大小端字节序)转换的问题_白鹿港的博客

go 语言大小端字节序的问题 我们一般把字节(byte)当作是数据的最小单位。当然,其实一个字节中还包含8个bit (bit = binary digit)。 在这样的CPU中,总是以4字节对齐的方式来读取或写入内存, 那么同样这4个字节的数据是以什么顺序保存在内存中的呢?我们下面详细探讨一下。 字节序包括:大端序和小端序。 而所谓大端序(big endian),便是指其“最高有效位(most significant byte)”落在低地址上的存储方式。 而对于小端序(little endian)来说就正好相反了,它把“最低有效位(least significant byte)”放在低地址上。 go处理字节序接口 Go中处理大小端序的代码位于 encoding/binary ,包中的全局变量...阅读全文

博文 2021-08-31 02:36:32 CSDN博客_go 大小端转换

LSM 算法的原理是什么?

其实大家提的 LSM 最开始论文里面都使用树做搜索结构的, 现在在用的都不是严格的树结构了。 如[这篇文章](https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/)解释的一样,从最朴素的角度上来讲可以把`SSTable(sorted string table)`作为一个连续的kv构成的块。SSTable +-+---+----+---+ |k| v | k | v | ... +-+---+----+---+对于一个大文件来说,读取整个文件以后就能构成一个各个键值的索引,当然可以在文件追加一块索引,和文件一起保存。Index +-+-------+ |k|offset | +-+------...阅读全文

博文 2020-02-19 13:03:37 知乎

Apache Doris (Incubating) 原理与实践

奇技指南近日,我们邀请到百度高级研发工程师李超勇前来360,分享百度开源数据库Apache Doris 的原理与实践。Apache Doris简介Doris(原百度 Palo)是一款基于大规模并行处理技术的分布式 SQL 数据库,由百度在2017年开源,2018年8月进入 Apache 孵化器。本次将主要从以下三部分介绍Apache Doris.Doris定位:即 Doris所要面临的业务场景及解决的问题Doris关键技术Doris案例介绍01 Doris定位 实时数据仓库Doris产品定位我们首先看一下Doris整个的定位。MPP 架构的关系型分析数据库PB 级别大数据集,秒级/毫秒级查询主要用于多维分析和报表查询2018年进入 Apache 孵化器使用场景上图是整个Doris的具体使用场...阅读全文

博文 2020-05-15 10:15:00 mp.weixin.qq.com

一文读懂Apache Kylin

一文读懂Apache Kylin“麒麟出没,必有祥瑞。” —— 中国古谚语 Kylin思维导图 前言 随着移动互联网、物联网等技术的发展,近些年人类所积累的数据正在呈爆炸式的增长,大数据时代已经来临。但是海量数据的收集只是大数据技术的第一步,如何让数据产生价值才是大数据领域的终极目标。Hadoop的出现解决了数据存储问题,但如何对海量数据进行OLAP查询,却一直令人十分头疼。 企业中的查询大致可分为即席查询和定制查询两种。之前出现的很多OLAP引擎,包括Hive、Presto、SparkSQL等,虽然在很大程度上降低了数据分析的难度,但它们都只适用于即席查询的场景。它们的优点是查询灵活,但是随着数据量和计算复杂度的增长,响应时间不能得到保证。而定制查询多数情况下是对用户的操作做出实时反应,H...阅读全文

博文 2020-04-30 04:52:16 简书

Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别_Hugo Lei的博客

目录 1 背景 2 何为Counter类型? 2.1 Counter定义 3 何为Gauge类型? 3.1 Gauge定义 4 Counter和Gauge的对比 1 背景 Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。 这里要明确一个概念:数据指标类型只是Client端的一个概念,用于维护Metric的生产,以方便在业务上有所区分。 而Server端是不区分数据类型的,因为所有的数据都是一种格式,也即时间序列 Metric value, timestamp. 2 何为Counter类型? Counter是一个累计类型的数据指标,它代表单调递增的计数器。 其值只能在重新启动...阅读全文

博文 2023-01-03 02:55:22 CSDN博客_prometheus gauge

UEFI+GPT与BIOS+MBR各自有什么优缺点?

UEFI+GPT最好用64位操作系统。 似乎人人都可以张嘴就说“我懂电脑”,但是总有一些看起来完全不懂但实际上非常基础的东西让“懂”与“不懂”清晰地划清界限。比如UEFI+GPT就是其中之一,那些之前认为自己已经精通电脑的人,遇到这个东西,忽然发现自己连系统都不会装了。 尽管UEFI以及GPT从诞生迄今已经十余年了,但是由于它们的不普及性,导致对于绝大多数人来讲它们是完全陌生的 ,甚至根本就不知道还有这种东西。 但是由于Windows8操作系统的面世,预装Windows8的电脑开始统一采用UEFI+GPT,很多人被迫接触到,感觉就像突然从天上掉下来的东西一样,无所适从,一筹莫展—— “这到底是个什么东西呢?” 一旦出现系统问题,唯一能做的解决办法除了品牌机自带的系统还原,最大能力不过就是把U...阅读全文

编程小梦

Apache Doris 在美团点评的实践 作者: 康凯森 日期: 2019-04-27 分类: OLAP 技术选型 背景 用户需求 Why Not Other ROLAP Why Doris 典型应用 变化维表 Join 明细 + 聚合 外卖准实时数仓 Doris 服务现状 平台化建设 Hive To Doris Kafka To Doris 功能改造 谓词下推的传递性优化 查询执行多实例并发 Colocate Join 未来规划 致谢 本文的内容是我 4 月 13 日在 Doris Meetup 上的分享,我主要从技术选型,典型应用,平台化建设,功能改造 4 方面进行了分享。 技术选型 背景 在2017年年底,我们已经维护了 Kylin 和 Druid 两个开源 OLAP 系统,Kyli...阅读全文

博文 2020-04-23 10:14:38 Apache Doris 在美团点评的实践

30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制 - 小林coding

前言 前一篇「硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题」得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的。 来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席。 迟到的原因,主要是 TCP 巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。 本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文,Go! 正文 相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢? 为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。 那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控...阅读全文

博文 2021-08-26 04:09:30 博客园

Linux中Buffer和Cache的区别 - D_R_Y

1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。 Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。 2. Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设...阅读全文

博文 2020-06-21 04:42:58 博客园

Lenky个人站点 » Socket选项系列之TCP_CORK

从上一节的内容可以看到,选项TCP_NODELAY是禁用Nagle算法,即数据包立即发送出去,而选项TCP_CORK与此相反,可以认为它是Nagle算法的进一步增强,即阻塞数据包发送,具体点说就是:TCP_CORK选项的功能类似于在发送数据管道出口处插入一个“塞子”,使得发送数据全部被阻塞,直到取消TCP_CORK选项(即拔去塞子)或被阻塞数据长度已超过MSS才将其发送出去。举个对比示例,比如收到接收端的ACK确认后,Nagle算法可以让当前待发送数据包发送出去,即便它的当前长度仍然不够一个MSS,但选项TCP_CORK则会要求继续等待,这在前面的tcp_nagle_check()函数分析时已提到这一点,即如果包数据长度小于当前MSS &&((加塞 || …)|| …),那么缓存数据而不立即...阅读全文

博文 2021-11-05 07:20:05 www.lenky.info

平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

1、平衡二叉树概念平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;特点:平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这里值是基于自己的算法规则而定的,比如hash值);平衡树的层级结构:因为平衡二叉树查询性能和树的层级(h高度)成反比,h值越小查询越快、为了保证树的结构左右两端数据大致平衡降低二叉树的查询难度一般会采用一种算法机制实现节点数据结构的平衡,实现了这种算法的有比如Treap、红黑树,使用平衡二叉树能保...阅读全文

Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?

登录一下,更多精彩内容等你发现贡献精彩回答,参与评论互动登录查看全部 25 个回答学徒programmer70 人赞同了该回答在探讨这个问题之前,关于网络中的Bufferbloat问题需要了解,详细信息在这里(https://www.bufferbloat.net/projects/bloat/wiki/Introduction/),@李博杰 的回答也说得比较清楚了。在这里做一些补充吧。流量控制分为两部分:* 接收方的流量控制(即滑动窗口)-- 由接收方告知,只关注自身缓存情况,不关注网络,这里不讨论。* 发送方的流量控制(即拥塞控制)现在广泛使用的CUBIC/(new)Reno都是基于丢包的,在算法上重点输出拥塞窗口(cwnd);而BBR输出cwnd和pacing_rate,且pacing...阅读全文

博文 2020-09-06 14:37:35 知乎

Unicode与UTF-8/UTF-16/UTF-32的区别 - 刘宝成

Unicode与UTF-8/UTF-16/UTF-32的区别 Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题 (implantation head-ache's),尤其在那些基于网络的应用中。已有的软件必须做大量的工作来程序16位的数据。 因此,Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符 是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分,例如,在 UTF-8和ASCII中,“A”的编码都是0x41. UTF-16和UTF-32分别...阅读全文

MapReduce 数据倾斜原因和解决方案_一次次尝试

MapReduce简介 MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。 2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。 3)MapReduce是一...阅读全文

博文 2021-02-22 04:44:09 CSDN博客_mapreduce数据倾斜原因

页 页表 页表项_WaneGi没有故事

五一假期前落下了几节操作系统的课,现在艰难的恶补中。。 以下是分页存储管理相关的一些知识点梳理。 首先我们应该知道的概念: 逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号开始编址,称之为目标模块的相对地址,即逻辑地址。 虚拟地址:计算机处理器的地址有32位和64位的两种,对应的虚拟地址的空间大小分别是2^32字节和2^64字节,字节用B表示。 页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)的大小称为页面大小,且大小应为2的幂。 物理块:将内存的物理地址空间划分为若干块,称为物理块,物理块与页(面)一一对应。 页表:又称页面映像表,存储在内存中,通过页表建立页(面)与物理块的索引。 下面通过举例子梳理一下: 假设我们已经知道了逻辑地...阅读全文

博文 2020-10-11 13:38:47 CSDN博客

Nagle算法-

说明:本文是最近项目上使用tcp时遇到的问题找到的原因,参考了网络上的几篇文章整理出来,如有版权问题,请留言。 Nagle 算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用程序系统的效率。 **1. ** Nagle算法的规则 (可参考tcp_output.c文件里tcp_nagle_check函数注释): 1)如果包长度达到MSS(MSS是最大分段大小Maxitum Segment Size ,MTU是最大传输单元Maxitum Transmission Unit),则允许发送; 2)如果该包含有FIN,则允许发送; 3)设置了TCP_NODELAY选项,则允许发送; 4)未设置TCP_CORK选项时,若所有发出...阅读全文

博文 2021-11-05 07:39:41 TCP缓冲区管理算法