摘要:
为什么需要内存分配器 系统的物理内存是有限的,而对内存的需求是变化的, 程序的动态性越强,内存管理就越重要,选择合适的内存管理算法会带来明显的性能提升。 比如nginx, 它在每个连接accept后会malloc一块内存,作为整个连接生命周期内的内存池。 当HTTP请求到达的时候,又会malloc一 阅读全文
摘要:
官网:http://dubbo.io/ 下面表格是对上面节点作用说明: Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 Container 服务运行容器 阅读全文
摘要:
Spring Cloud简介 Spring Cloud官网:https://www.springcloud.cc/ Spring Cloud并不是一个框架,而是Spring为微服务提供一站式解决方案。 Spring Cloud底层是基于Spring Boot实现的云应用开发。 Spring Clou 阅读全文
摘要:
Java 语言在设计之初就引入了线程的概念,以充分利用现代处理器的计算能力,这既带来了强大、灵活的多线程机制,也带来了线程安全等令人混淆的问题,而 Java 内存模型(Java Memory Model,JMM)为我们提供了一个在纷乱之中达成一致的指导准则。 Happen-before 原则简单理解 阅读全文
摘要:
在实际工程中经常遇到这样的问题,在一起字符串里查找是否包含某个字符串,并且找到要找字符串所出现的位置。 让我们来举一个例子: 在上图中,字符串B是A的子串,B第一次在A中出现的位置下标是2(字符串的首位下标是0),所以返回 2。 字符串B在A中并不存在,所以返回 -1。 常见的算法包括:BF(Bru 阅读全文
摘要:
JVM概述 垃圾收集机制为我们打理了很多繁琐的工作,大大提高了开发的效率,但是,垃圾收集也不是万能的,懂得 JVM 内部的内存结构、工作机制,是设计高扩展性应用和诊断运行时问题的基础。 JVM 内存区域的划分 通常可以把 JVM 内存区域分为下面几个方面,其中,有的区域是以线程为单位,而有的区域则是 阅读全文
摘要:
HashMap介绍 hashMap是java中一个非常重要的数据结构,工作中也会经常使用到。 HashMap与Map接口的关系 HashMap继承于AbstractMap类,实现了Map接口,Map是key-value键值对的接口,AbstractMap实现了"键值对"的通用函数接口。 TreeMa 阅读全文
摘要:
volatile的作用及原理 当一个变量被volatile修饰时,会拥有两个特性: 保证了不同线程对该变量操作的内存可见性.(当一个线程修改了变量,其他使用次变量的线程可以立即知道这一修改). 禁止了指令重排序. 1. 保证内存可见性 JMM操作变量的时候不是直接在主存进行操作的,而是每个线程拥有自 阅读全文
摘要:
集合框架的线程安全问题 在高并发的场景下有些集合框架是非线程安全的,比如ArrayList、LinkedList、HashSet、HashMap等,因此在高并发环境下使用时是非常不安全的。所以Java也提供了对应的线程安全的并发版本。 集合框架 线程安全集合框架 说明 ArrayList CopyO 阅读全文
摘要:
Netty概述 Netty是由Jboss提供的一个异步的,基于事件驱动的高性能网络通信开源框架,可以快速的开发高性能,高可靠的网络IO程序,其实就是对Java原生IO的优化和重写。 Netty主要是针对TCP协议下(TCP/IP -> JDK原生IO -> NIO-> Netty),面向Client 阅读全文