• 等级
  • 20396 访问
  • 30 原创
  • 45 转发
  • 126675 排名
  • 5 评论
  • 7 获赞

HashMap工作原理和扩容机制

HashMap工作原理 HashMap扩容 1 HashMap的扩容时机 2 HashMap的扩容过程 补充 1 容量必须是2的幂 2 rehash References   1. HashMap工作原理 HashMap作为优秀的Java集合框架中的一个重要的成员,在很多编程场景下为我们所用。HashMap作为数据结构散列表的一种实现,就其工...

2018-09-12 12:58:03

远程调用中,rpc到底比http好在哪里

ProtoBuffer的介绍 google有一款非常高效的数据传输格式框架ProtoBuffer。在java中使用protobuffer作为序列化效率比jdk自身的serializable接口效率高的多(github上有个对于序列号性能的研究https://github.com/eishay/jvm-serializers/wiki),这在缓存的时候效率非常高。当然,如此优秀的数据格式框架并...

2018-09-05 20:25:49

slf4j门面模式实现原理

在使用slf4j的时候,只需要通过门面类LoggerFactory类获取Logger  Java代码    /**     * Return a logger named according to the name parameter using the statically     * bound {@link ILoggerFactory} instance.     *    ...

2018-08-14 16:21:03

生产者-消费者Java实现

1 概述   生产者消费者问题是多线程的一个经典问题,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。 解决生产者/消费者问题的方法可分为两类: 采用某种机制保护生产者和消费者之间的同步; 在生产者和消费者之间建立一个管道。 第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等...

2018-08-14 11:07:33

B树、B+树、LSM树以及其典型应用场景

前言 动态查找树主要有:二叉查找树、平衡二叉树、红黑树、B树、B+树。前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率。这时就提出了平衡多路查找树,也就是B树以及B+树。 B树和B+树非常典型的场景就是用于关系型数据库的索引(MySQL) B树 B树是一种平衡多路搜索树,B树与红黑树最大的不同在于,B树的结点可以有多个子女...

2018-08-13 15:35:37

C++之引用的详解

C++中的引用: 引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某 一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。其格式为:类型 &引用变量名 = 已定义过的变量名。   引用的特点: ①一个变量可取多个别名。 ②引用必须初始化。 ③引用只能在初始化的时候...

2018-08-06 22:07:29

为什么需要RPC,而不是简单的HTTP接口

转载自:http://www.oschina.net/question/271044_2155059?sort=default&p=1#answers 目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的。 论复杂度,RPC框架肯定是高于简单的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全...

2018-08-06 21:04:29

红黑树(一)之 原理和算法详细介绍

首页 新随笔 联系 订阅 管理 < 2018年7月 > 日 一 二 三 四 五 六 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 1...

2018-07-26 14:07:44

B树、B+树、LSM树以及其典型应用场景

前言 动态查找树主要有:二叉查找树、平衡二叉树、红黑树、B树、B+树。前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率。这时就提出了平衡多路查找树,也就是B树以及B+树。 B树和B+树非常典型的场景就是用于关系型数据库的索引(MySQL) B树 B树是一种平衡多路搜索树,B树与红黑树最大的不同在于,B树的结点可以有多个子女...

2018-07-26 12:18:36

redis应用场景

毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。一、Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过...

2018-07-10 17:50:15

Redis深入之道:原理解析、场景使用以及视频解读

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。同时redis也是一个key-value存储系统。Redis,更 是一个高性能的key-value数据库。最主要的是Redis还支持主从同步。本文将为大家推荐一系列的学习资料,有原理解析、场景使用、视频解读等,希望可以帮到大家。Redis视频教程Redis总体介...

2018-07-10 16:15:59

几种负载均衡技术的实现

【前言】         负载均衡技术对于中大型网站的性能提高有着很大的优势,最近在学习《大型网站技术的架构》,其中对于负载均衡技术有一些介绍,将学习的经验总结一下,分享下。多交流。   【协议层】http重定向协议实现负载均衡       原理:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。  ...

2018-07-10 15:20:52

MQ入门总结(一)消息队列概念和使用场景

一、消息队列消息即是信息的载体。为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息;消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息,这种统一的格式称之为消息协议。所以,有效的消息一定具有某一种格式;而没有格式的消息是没有意义的。而消息从发送者到接收者的方式也有两种。一种我们可以称为即时消息通讯,也就是说消息从一端发出后(消息发送者)立即就...

2018-07-10 09:53:50

简介几种负载均衡原理

开头先理解一下所谓的“均衡”不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。一、http重定向当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标...

2018-07-09 20:02:12

Java日志框架:slf4j作用及其实现原理

简单回顾门面模式slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式,门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为:门面模式的核心为Facade即门面对象,门面对象核心为几个点:知道所有子角色的功能和责任将客户端发来的请求委派到子系统中,没有实际业务逻辑不参与子系统内业务逻辑的实现大致上来看...

2018-07-05 21:19:04

你应该知道的 RPC 原理

在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队要使用...

2018-07-05 16:32:23

GET和POST请求的区别

GET和POST的区别1.标准答案GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,...

2018-07-05 14:25:50

消息队列使用的四种场景介绍

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性架构使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注...

2018-06-25 14:10:10

JAVA8 十大新特性详解

一、接口的默认方法在接口中新增了default方法和static方法,这两种方法可以有方法体 1、static方法 示例代码:public interface DefalutTest { static int a =5; default void defaultMethod(){ System.out.println("DefalutTest defalut 方法"...

2018-06-25 14:08:49

mac终端常用命令

目录操作命令名功能描述使用举例mkdir创建一个目录mkdir dirnamermdir删除一个目录rmdir dirnamemvdir移动或重命名一个目录mvdir dir1 dir2cd改变当前目录cd dirnamepwd显示当前目录的路径名pwdls显示当前目录的内容ls -ladircmp比较两个目录的内容dircmp dir1 dir2文件操作命令名功能描述使用举例cat显示或连接文件...

2018-06-08 15:03:35

afanti222

关注