[置顶]我理解的Linux IO模式及select,poll,epoll

前言 本文是在本人查阅部分资料,并综合了众多博客分析后,于此阐述的个人理解。若有错误,欢迎指正。 基本概念 用户空间和内核空间 操作系统核心-内核负责处理用户程序和硬件之间的驱动交互。内核是在用户程序(进程)和硬件之间一个中枢。目地:专门负责用户进程和硬件之间的交互,用户程序必须使用内核才能和计算机底层硬件进行交流。为了保证内核的安全,于是将内存划分开,比如针对linux 4G的内存空间,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低...阅读全文

www.allocmem.com 2018-04-21 13:30 www.allocmem.co 等

[置顶]nginx搭配frp进行端口和服务转发

###引言:   java接入三方运营商服务接口,需要可供回调的公网接口,并在本地两台(及以上)调试接口服务,于是使用开源frp进行穿透,nginx搭配负责分发请求到不同机器。 ###安装环境: 1. ubuntu 16.04 LTS 一台服务器 两台客户机 2. 已安装好nginx ###frp配置过程: 参考我之前博文[http://blog.csdn.net/yan_chou/article/details/53406095](http://blog.csdn.net/yan_chou/a...阅读全文

www.allocmem.com 2017-02-20 16:06 www.allocmem.co 等

GROUP BY

# GROUP BY # description GROUP BY GROUPING SETS | CUBE | ROLLUP 是对 GROUP BY 子句的扩展,它能够在一个 GROUP BY 子句中实现多个集合的分组的聚合。其结果等价于将多个相应 GROUP BY 子句进行 UNION 操作。 GROUP BY 子句是只含有一个元素的 GROUP BY GROUPING SETS 的特例。 例如,GROUPING SETS 语句: SELECT a, b, SUM( c ) FROM tab...阅读全文

Apache Doris 2021-03-22 00:00 Apache Doris

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。  所有的叶子结点中包含了全部关键字的信息,及...阅读全文

data.biancheng.net 2021-04-09 14:27 data.biancheng. 等

B+树的Java实现

B+树 B+ Tree定义B+树是一种多路平衡查找树,是对B树(B-Tree)的扩展.首先,一个M阶的B树的定义为: 每个节点最多有M个子节点; 每一个非叶子节点(除根节点)至少有ceil(M/2)个子节点; 如果根节点不是叶子节点,那么至少有两个子节点; 有k个子节点的非叶子节点拥有k-1个键,键按照升序排列; 所有叶子节点在同一层; 从定义可以看出来,一个M阶的B树,其叶子节点必须在同一层,每一个节点的子节点数目和键数目都是有规定的.其实不看定义,简单来说,B树是平衡的,而且非叶子节点的子节...阅读全文

桐小木 2020-04-13 00:00 桐小木

B+树原理了解 – OneCoder

前言 B+树,是数据库索引的一个数据类型。B+树,是从最早的平衡二叉树演化而来。先了解一下二叉查找树、平衡二叉树、和B树。 二叉查找树 左子树的键值小于根的键值,右子树的键值大于根的键值。 二叉查找树可以任意地构造,以下这种也是二叉查找树,但是其查询效率太低 平衡二叉树 平衡二叉树(AVL树)在符合二叉查找树的条件下,还满足任何节点的两个子树的高度最大差为1。 当失去平衡时,有四种姿态: “左左”。插入或删除一个节点后,根节点的左孩子(Left Child)的左孩子(Left Child)还有非...阅读全文

onecoder.site 2018-04-08 00:00 onecoder.site

磁盘IOPS(每秒读写次数)的计算方法与测量_xiaofei0859的专栏

IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video ...阅读全文

CSDN博客_硬盘iops计算 2016-04-14 09:15 CSDN博客_硬盘iops计算 等

理解ClassNotFoundException与NoClassDefFoundError的区别 - 云+社区

上篇文章已经介绍过Java的类加载机制,在类加载的过程中我们最常遇到的异常就是:ClassNotFoundException NoClassDefFoundError但是你知道他们的区别吗?以及什么情况下发生上面的异常? 如果你还不清楚,那么不着急,我们来仔细分析一下:先来说说第一个异常提示名字已经非常友好了,就是告诉我们使用类加载器就加载某个类的时候,发现所有的path下面都没有找到,从引导类路径,扩展类路径到当前的classpath下全部没有找到,就会抛出上面的异常,最常见的例子就是加载JD...阅读全文

腾讯云 2018-09-26 00:00 腾讯云

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

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

CSDN博客 2019-10-25 19:50 CSDN博客

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

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

TreeMap 实现原理

在用TreeMap之前我们要对TreeMap有个整体的认识。 1、TreeMap介绍 TreeMap是一个通过红黑树实现有序的key-value集合。 TreeMap继承AbstractMap,也即实现了Map,它是一个Map集合 TreeMap实现了NavigableMap接口,它支持一系列的导航方法, TreeMap实现了Cloneable接口,它可以被克隆 TreeMap introduction:A Red-Black tree based NavigableMap implementa...阅读全文

juejin.cn 2016-08-26 00:00 juejin.cn

一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试) - aspirant

mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 参考:redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里) 参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里) 参考:二分查找法:各种排序算法的时间复杂度和空间复杂度(阿里) 在MySQL中,主要有四种类型的索引,分别为:B-Tree索...阅读全文

博客园 2018-06-22 17:21 博客园

数据库基础(七)Mysql Join算法原理

一、Simple Nested-Loop Join(简单的嵌套循环连接)简单来说嵌套循环连接算法就是一个双层for 循环 ,通过循环外层表的行数据,逐个与内层表的所有行数据进行比较来获取结果,当执行select * from user tb1 left join level tb2 on tb1.id=tb2.user_id 时,我们会按类似下面代码的思路进行数据匹配:整个匹配过程会如下图:特点:Nested-Loop Join 简单粗暴容易理解,就是通过双层循环比较数据来获得结果,但是这种算法...阅读全文

知乎 2020-09-03 00:00 知乎

遍历中修改HashMap的Key_Dustin_CDS的博客

一、不可变对象 1.1 什么是不可变对象 immutable Objects就是那些一旦被创建,它们的状态就不能被改变的Objects,每次对他们的改变都是产生了新的immutable的对象,而mutable Objects就是那些创建后,状态可以被改变的Objects。 不可变的优势: (1)提高效率。如果你知道一个对象是不可变的,那么需要拷贝这个对象的内容时,就不用复制它的本身而只是复制它的地址。复制地址需要很小的内存,效率也很高;对于同时引用这个“ABC”的其他变量也不会造成影响。 (2)...阅读全文

CSDN博客_hashmap替换key 2018-03-24 11:38 CSDN博客_hashmap替 等

高性能场景下,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 ^...阅读全文

Chares's Blog 2016-10-02 00:00 Chares's Blog

超好用的自带火焰图的 Java 性能分析工具 Async

如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然。别慌,这里有一款低开销、自带火焰图、让你大呼好用的 Java 性能分析工具 - async-profiler。 最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用 async-profiler 生成 CPU/内存火焰图进行性能分析,弥补了之前内存分析的不足。在 Arthas 上使用还是比较方便的,使用方式可以看官方文档。这篇文章介绍 async-profiler 相...阅读全文

profiler 了解一下 2019-12-09 00:00 profiler 了解一下

又一次线上OOM排查经过 - 黄亿华的个人空间 - OSCHINA

昇腾众智计划火热上线!140个算子/模型等你来挑战!>>> 最近线上一个服务又出现了频繁Full GC的情况,导致提供的业务经常超时。问题出现非常不稳定,经过两周的时候,终于又捕捉到了一次Full GC,于是联系运维做Heap Dump之后,经过一系列分析,终于解决问题。这次的问题稍微复杂一点,但是也比较有代表性,用到了VisualVM和MAT两个工具,继续记录如下。 现象 这次使用公司的CAT监控平台看到的内存表现如下: 可以看到,具体表现是: 在很长一段时间内(数个小时),New GC比较频...阅读全文

中文开源技术交流社区 2014-05-16 08:33 中文开源技术交流社区

定时器 OOM(OutOfMemoryError) 了,其他线程受影响吗? – 业余草

你的位置:业余草 > JAVA > 定时器 OOM(OutOfMemoryError) 了,其他线程受影响吗? 定时器 OOM(OutOfMemoryError) 了,其他线程受影响吗? JAVA herman 3年前 (2018-09-22) 3347浏览 0评论 公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:codedq,发送下载链接帮助你免费下载! 本博客日IP超过2000,PV 3000 左右,急需赞助商。 极客时间所有课程通...阅读全文

www.xttblog.com 2018-09-22 00:00 www.xttblog.com

BeanUtils对象属性copy的性能对比以及源码分析 - kancy

1. 对象属性拷贝的常见方式及其性能 在日常编码中,经常会遇到DO、DTO对象之间的转换,如果对象本身的属性比较少的时候,那么我们采用硬编码手工setter也还ok,但如果对象的属性比较多的情况下,手工setter就显得又low又效率又低。这个时候我们就考虑采用一些工具类来进行对象属性的拷贝了。 我们常用的对象属性拷贝的方式有: Hard Code net.sf.cglib.beans.BeanCopier#copy org.springframework.beans.BeanUtils.cop...阅读全文

博客园 2019-12-23 23:44 博客园

Mybatis详解系列(五)--Mybatis Generator和全注解风格的MyBatis3DynamicSql - 子月生

简介 Mybatis Generator (MBG) 是 Mybatis 官方提供的代码生成器,通过它可以在项目中自动生成简单的 CRUD 方法,甚至“无所不能”的高级条件查询(MyBatis3DynamicSql,有了它根本不需要 Mybatis Plus),让我们避免了进行数据库交互时需要手动创建对象和配置 Mybatis 映射等基础工作。 另外,MBG 有很好地扩展性,它提供了大量的接口和插件用来给我们自定义生成的代码应该是什么样子,例如我们可以自定义注释、代码格式化、添加 toStrin...阅读全文

博客园 2020-05-03 12:55 博客园

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

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

知乎 2021-03-01 14:20 知乎