HashMap 底层实现原理,看完面试不再懵逼。
前言:HashMap是在面试中经常会问的一点,很多时候我们仅仅只是知道HashMap他是允许键值对都是Null,并且是非线程安全的,如果在多线程的环境下使用,是很容易出现问题的。 这是我们通常在面试中会说的,但是有时候问到底层的源码分析的时候,为什么允许为Null,为什么不安全,这些问题的时候,如果没有分析过源码的话,好像很难回答, 这样的话我们来研究一下这个源码。看看原因吧。HashMap最早出
《MySQL重要知识点及面试总结》:推荐收藏
前言:这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL常见面试问题。什么是MySQL?MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以
Spring Cloud 微服务系统 - 分布式食物解决方案
Spring Cloud 微服务系统 - 分布式食物解决方案
高性能网站实用技巧之消息队列
什么是消息队列?消息队列( Message Queue )是一种进程间通信或同一进程的不同线程间的通信方式。进程或者线程之间通过 消息 进行通信,消息发送后可以立即返回,由消息系统来确保信息的可靠传递,消息发布者(生产者)只管把消息发布到消息队里中而不用管谁来消费,消息使用者(消费者)只管从消息队列中获取消息以进一步处理而不用管理谁发布的消息,这样发布者和使
值得收藏:《这 6 种实现负载均衡技术的方式不容错过》
负载均衡(Load Balance)是集群技术(Cluster)的一种应用,可以将工作任务分摊到多个处理单元,从而提高并发处理能力,有利于提升中大型网站的性能。接下来小编就为大家介绍6种实现负载均衡技术的方式:1. http重定向协议实现负载均衡根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。该
《Dubbo系列一些好用的功能》不看后悔系列
dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些你不一定知道,但是很好用的功能;直连Provider在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直连模式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表(说明:官方只建议开发&测试环境使用该功能),用法如下,url指定的
Spring Boot 配置文件中的花样,看这一篇足矣
Spring Boot 配置文件中的花样,看这一篇足矣
一步一图,带你了解分布式架构的前世今生
目录:什么是分布式架构?分布式架构的演进分布式服务面临的问题什么是分布式架构?分布式系统(distributed system)是建立在网络之上的软件系统,它有两个典型特点:内聚性 :每个数据库分布节点高度自治,有本地的数据库管理系统透明性 :每个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。也就是说,在分布式系统中,用户感觉不到数据是分布式的,不知道数据是否分割,有
使用无界队列的线程池会导致内存飙升吗?
(1)背景引入今天跟大家聊一个互联网大厂的Java面试题:使用无界队列的线程池会导致内存飙升吗?因为在面互联网大厂的时候,一定会问并发,问并发的时候一定会问到线程池,问到线程池一定会问构造线程池的一些参数的含义。然后,有一些面试官会就线程池的具体场景,问一些可能会遇到的问题。所以,在这里就可能有上述那样一个面试中的问题,算是Java面试里相对来说高阶一点的。我相信大家一定起码知道线程池是个什么东西
Java 虚拟机经典六问
特意整理出了 6 个高频问题,分享给大家,算做一篇加餐文。希望大家能继续深耕 JVM,提升日常编程的效率,实现技术进阶,挖掘到更多的宝藏。Java 是如何在保证可移植性的前提下提供高执行效率的?Java 程序最为常见的执行方式,是预先编译为一种名为 Java 字节码的中间代码格式。这种代码格式无法直接运行在 CPU 之上,而是需要借助 JVM 来执行。换句话说,只要某个平台提供了合乎 JVM 规范
如何优雅地在 Java 8 中处理异常
前言Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后我们也可以在 Java 中进行函数式编程了。然而,在实际工作中,许多小伙伴并不知道如何正确的在 lambda 中处理异常,今天就来给大家讲解一下。 我们都知道,Java 异常分为检查异常和非检查异常。检查异常就是编译器要求开发者必须处理的异常,而非检查异常则没有这个要求。所以当
NIO与BIO的区别、NIO的运行原理和并发使用场景
NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢?本文会先从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I/O模型,一步步分
Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
Java 中15种锁的介绍在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁 / 非公平锁可重入锁 / 不可重入锁独享锁 / 共享锁互斥锁 / 读写锁乐观锁 / 悲观锁分段锁偏向锁 / 轻量级锁 / 重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公
Docker的网络模式详解
1、Docker的四种网络模式(1)docker四种网络模式如下: Bridge contauner 桥接式网络模式 Host(open) container 开放式网络模式 Container(join) container 联合挂载式网络模式,是host网络模式的延伸 None(Cl
JVM基础面试题及原理讲解
本文从 JVM 结构入手,介绍了 Java 内存管理、对象创建、常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲解。写在前面(常见面试题)基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String类和常量池8种基本类型的包装类和常量池1 概述对于 J
巧用这19条MySQL优化,效率至少提高3倍
本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。key列,使用到的索引名。如果没有选择索引,值是NULL。可以采
Java虚拟机内存管理知识总结
0、Java 对内存的划分:Java虚拟机规范将物理内存(主内存和CPU中的缓存、寄存器)划分为 程序计数器 、 Java 虚拟机栈 、 本地方法栈 、 Java 堆 、 方法区 五个区域,但并没有规定这些区域的具体实现,在其他地方听到的一些名词(如永久代、元空间等,这些都是方法区的具体实现)可能都
举个栗子看如何做MySQL 内核深度优化
原文:http://www.cnblogs.com/qcloud1001/p/10173013.html?utm_source=tuicool&utm_medium=referralMySQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB
Linux环境搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。Nginx服务器能支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU等系统资源消耗非常低.通常情况下
Redis的数据结构及应用场景
一. 谈谈对redis的理解,它的应用场景。Redis是一个key-value存储系统,它支持存储的value类型包括string字符串、list链表、set集合、sorted Set有序集合和hash哈希等数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,支持各种不同方式的排序。为了保证效率,Redis将数据都缓存在内存