Skip to main content

moregeek program

hashmap源码,看我这篇就够了_博学谷狂野架构师的博客-多极客编程

HashMap源码深度剖析 * HashMap底层数据结构(为什么引入红黑树、存储数据的过程、哈希碰撞相关问题) * HashMap成员变量(初始化容量是多少、负载因子、数组长度为什么是2的n次幂) * HashMap扩容机制(什么时候需要扩容? 怎么进行扩容?) * JDK7 与 Jdk8比较,JDK8进行了什么优化? 1 定义 HashMap基于哈希表的Map接口实现,是以key-v

Read More

翻了concurrenthashmap1.7 和1.8的源码,我总结了它们的主要区别。_博学谷狂野架构师的博客-多极客编程

ConcurrentHashMap 思考:HashTable是线程安全的,为什么不推荐使用? HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。 1 ConcurrentHashMap 1.7 在JDK1.7中ConcurrentHashMap采用了数组+分段

Read More

【预警】有点干,jvm运行时数据区(计数器、虚拟机栈、本地方法栈、堆、方法区)_博学谷狂野架构师的博客-多极客编程

大家好,,这篇文章咱们聊下JVM性能优化的问题 这篇文章主要介绍下JVM的运行数据区相关的内容,包括: 程序计数器 虚拟机栈 本地方法栈 堆 方法区 案例 和总结 好了,开始干货环节~ 作为一个常识性的知识,大家都知道字节码只是一个二进制文件存放在那里。要想在jvm里跑起来,先得有个运行的内存环境。 也就是我们所说的jvm运行时数据区。 1)运行时数据区的位置 运行时数据区是jvm中最为重要的

Read More

dubbo架构设计及入门案例_博学谷狂野架构师的博客-多极客编程

框架介绍 1.1.1 概述 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 1.1.2 运行架构 dubbo运行架构如下图示 节点角色说明

Read More

disruptor生产和消费模式详解及高级应用(并行模式)_博学谷狂野架构师的博客-多极客编程

小伙伴们大家好,昨天的文章,带着大家扒开了Disruptor华丽的外衣,最重要的是我们知道了Disruptor高性能的原因几个重要的原因, 引入环形的数组结构:数组元素不会被回收,避免频繁的GC, 无锁的设计:采用CAS无锁方式,保证线程的安全性 属性填充:通过添加额外的无用信息,避免伪共享问题 元素位置的定位:采用跟一致性哈希一样的方式,一个索引,进行自增 这篇文章就在上篇文章的基础上来点实

Read More

eclipse编码格式该如何设置_是温度呀的博客-多极客编程

说到eclipse编码格式的设置其实一个非常非常小的事情,但是在eclipse的开发使用中却又是一个无法忽视的问题,它甚至会影响到我们的工作以及和团队成员之间的合作,所以,在开发前,动动自己的小手,先把编码格式给统一了吧。在eclipse的开发使用中,我们最常用的是UTF-8,所以这里就给大家简单的说明一下UTF-8的编码格式设置,我们在初次安装好eclipse、给eclipse指定一个新的工作空

Read More

disruptor测试结果运算1亿次,耗时5503ms,吞吐量18171000/s,于是我扒开了disruptor高性能的外衣_博学谷狂野架构师的博客-多极客编程

hello 小伙伴儿们,昨天搞了一篇Disruptor的入门文章,看大家反馈不错,在大家一再催更下,昨天熬夜至下班,终于续写了第二篇Disruptor的高性能原理剖析的文章,为大家揭开Disruptor高性能的神秘外衣。 如果小伙伴,错过了入门Disruptor的入门篇的文章,在这里自行查看: 如此狂妄,自称高性能队列的Disruptor有啥来头? 能对比测试 为了直观地感受 Disrupto

Read More

如此狂妄,自称高性能队列的disruptor有啥来头?_博学谷狂野架构师的博客-多极客编程

并发框架Disruptor 1. Disruptor概述 1.1 背景 ​ Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注,2011年,企业应用软件专家Martin Fowler专门撰

Read More

详解java nio,io与nio的区别_是温度呀的博客-多极客编程

一、概念NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。二、NIO和IO的主要区别下表总结了Java IO和NIO之间的主要区别:1、面向流与面向缓冲Java IO和NIO之间第一个最大的区别是,

Read More

ci/cd和 devops还在傻傻分不清吗?今日一文让你通透_博学谷狂野架构师的博客-多极客编程

基本概念 持续集成 (Continuous Intergration) ​ 持续集成的重点在于构建编译及测试,开发人员每天要提交很多次代码到分支,在分支合并到主干前,需要通过编译和测试识别出问题。持续集成的流程就是通过自动化的构建(主要是构建编译、自动化测试)来验证,从而尽早地发现集成错误。 持续集成的核心意义:通过自动化测试尽早的发现代码的问题。 持续交付 (Continuous

Read More

slf4j和logback和log4j和logging的区别与联系_是温度呀的博客-多极客编程

前言Java帝国在诞生之初就提供了集合、线程、IO、网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无意地忽略了一个重要的功能: 输出日志。对于这一点,IO大臣其实非常清楚, 日志是个很重要的东西, 因为程序运行起来以后, 基本上就是一个黑盒子,如果程序的行为和预料的不一致,那就是出现Bug了,如何去定位这个Bug 呢?臣民们能用的工具有两个,第一个就是单步调试,一步步地跟

Read More

log4j和log4j2的区别_是温度呀的博客-多极客编程

log4j是Apache的一个开源项目,log4j2和log4j是一个作者,只不过log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款新组件。log4j2的社区活跃很频繁而且更新的也很快。1、配置文件类型log4j是通过一个.properties的文件作为主配置文件的,而现在的log4j 2则已经弃用了这种方式,采用的是.xml,.

Read More

【手把手】这篇全链路压测实践教程_博学谷狂野架构师的博客-多极客编程

Hello,大家好呀,前两篇文章,我们说了下关于全链路压测的意义、整体架构,以及5种压测的方案。 前面两篇基本都属于比较理论的内容,今天这篇咱们来点实践的东西,手把手带你搞出一个压测来 如果不清楚之前两篇的文章的小伙伴,可以先看下,在这里 大厂钟爱的全链路压测有什么意义?四种压测方案详细对比分析 代码级】全链路压测的整体架构设计,以及5种实现方案(流量染色、数据隔离、接口隔离、零侵入、服务监控)

Read More

如何使用 junit + mockito 实践单元测试_是温度呀的博客-多极客编程

一、前言相信做过开发的同学,都多多少少写过下面的代码,很长一段时间我一直以为这就是单元测试...@SpringBootTest@RunWith(SpringRunner.class)public class UnitTest1 { @Autowired private UnitService unitService; @Test public void test(){

Read More

spring集成junit单元测试框架_是温度呀的博客-多极客编程

一.JUnit介绍JUnit是Java中最有名的单元测试框架,用于编写和运行可重复的测试,多数Java的开发环境都已经集成了JUnit作为单元测试的工具。好的单元测试能极大的提高开发效率和代码质量。测试类命名规则:被测试类+Test,如UserServiceTest测试用例命名规则:test+用例方法,如testGetMaven导入junit、sprint-test 、json-path相关测试包

Read More

详解java技术的深拷贝和浅拷贝_是温度呀的博客-多极客编程

关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象。可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用传递将会有更深的理解。1、创建对象的5种方式①、通过 new 关键字这是最常用的一种方式,通过 new 关键字调用类的有参或无参构造方法来创建对象。比如 Object obj = new Object

Read More

详解:java 的静态工厂方法_是温度呀的博客-多极客编程

序:什么是静态工厂方法Effective Java2.1 静态工厂方法与构造器不同的第一优势在于,它们有名字2.2 第二个优势,不用每次被调用时都创建新对象2.3 第三个优势,可以返回原返回类型的子类2.4 第四个优势,在创建带泛型的实例时,能使代码变得简洁除此之外3.1 可以有多个参数相同但名称不同的工厂方法3.2 可以减少对外暴露的属性3.3 多了一层控制,方便统一修改总结1. 序:什么是静态

Read More

大厂钟爱的全链路压测有什么意义?四种压测方案详细对比分析_博学谷狂野架构师的博客-多极客编程

全链路压测? 基于实际的生产业务场景和系统环境,模拟海量的用户请求和数据,对整个业务链路进行各种场景的测试验证,持续发现并进行瓶颈调优,保障系统稳定性的一个技术工程。 针对业务场景越发复杂化、海量数据冲击,发现并解决整个业务系统的可用性、扩展性以及容错性的过程。 核心流程 全链路压测实施的核心流程如下: 1 全链路压测的意义 ​ 上图是 2012 年淘宝核心业务应用关系的拓扑图,还不包含了

Read More

java vs .net,关于java与.net的特点对比_是温度呀的博客-多极客编程

一、前言为什么要写Java跟.NET对比?.NET出生之后就带着Java的影子。从模仿到创新,.NET平台也越来越成熟。他们不同的支持者也经常因为孰弱孰强的问题争论不休。但是本文并不是为了一分高下。而是针对Java平台跟.NET平台做一些对比。主要围绕项目构建、Web框架、项目部署展开讨论。相信经过这些讨论可以让Java/.NET工程师对Java平台、.NET平台有更好的了解。二、项目构建项目构建

Read More

由浅入深,学习在springboot中使用redis_是温度呀的博客-多极客编程

很多时候,我们会在springboot中配置redis,但是就那么几个配置就配好了,没办法知道为什么,这里就详细的讲解一下这里假设已经成功创建了一个springboot项目。redis连接工厂类第一步,需要加上springboot的redis jar包<pre><dependency> <groupId>org.springframework.boot&

Read More