技术分享 -- 147




概述在项目开发的过程中,遇到了一个奇怪的问题,使用原生的 com.rabbitmq.client 包操作 rabbitmq,失败率高达近 50%,超时非常严重经过仔细排查,发现是在创建 channel 的阶段耗时过长,那么,这究竟是为什么呢?经过阅读源码,我们看到 com.rabbitmq.client 的 Connection 在创建 Channel 的过程中通过 synchronized 关键字使用了锁,致使同一个 connection 上的所有线程同时只能有一个执行 channel 的创建过程,而其他线程需要阻塞等待这一过程的完成,这也就造成了超时的产生那么,如何解决这个问题呢?我们是否可以让所有的线程去共享和使用同一个 channel 呢?他们共享同一个 channel 也就不需要分别创建,因此就不会陷入对锁的争夺和等待了通过查阅官方文档,在com.rabbitmq.client Interface Channel中提到: While a Channel can be used by mu
#技术帖    #龙潭书斋    #技术分享    #rabbitmq   

200x200


概述高并发的抢购、秒杀功能是一个 web 系统面临的很大的一个挑战由于销售平台的促销活动,销售系统的 web 后台接口将承受平常几倍甚至几十倍的压力,这样,服务

#技术帖    #技术分享    #pipe    #队列   

200x200


概述众所周知,java 有两个最具革命性的版本,一个是 java1.5 一个是 java1.8,上一篇日志中,我们介绍了 java5 也就是

#技术帖    #技术分享    #stream    #java   

200x200


概述java 自诞生之日起就汲取了很多语言的营养,不断更新、丰富自己,让 java 能够不断跟得上潮流,而最具革命性的变革便 2004 年诞生的&nb

#技术帖    #技术分享    #java    #jdk   
概述此前我们介绍了 java 中的各种容器:Collection 及其相关实现的容器简介及用法本文我们介绍一下最常用的 Collection 容器 ArrayList 的初始化方法 list.add最常用的方式是创建容器对象,然后将元素一个一个 add 进来:ArrayList<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C");  双大括号初始化与上面 list.add 的方法类似,在创建对象的时候,ArrayList 支持一种类似匿名内部类初始化方法:ArrayList<String> list = new ArrayList<String>() {{ add("A"); add("B"); add("C"); }}  Arrays.asList & Collections.singleto
#技术帖    #技术分享    #array    #容器   
概述org.apache.commons.httpclient.HttpClient 是 appache 提供的一套用来进行 http 网络访问的基础工具类如今,更新的工具类则是 org.apache.http.client.HttpClient本篇日志中,我们就来介绍一下这两个的基本用法 maven 依赖org.apache.commons.httpclient.HttpClient<dependency> <groupId>apache-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency>  org.apache.http.client.HttpClient<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version&g
#技术帖    #apache    #技术分享    #http   

200x200


概述上一篇日志中我们介绍了 zookeeper 的基本构成和原理,看上去比较复杂,事实上,zookeeper 的用法非常简单,本篇日志中,我们就来介绍一下 zo

#技术帖    #apache    #技术分享    #集群   

200x200


概述zookeeper 是一个高性能的分布式应用程序协调服务,应用程序可以基于他非常简单的实现同步服务、分组服务、配置维护、命名服务等,通过 zookeeper,你可以使用现成的组

#技术帖    #c语言    #技术分享    #server   

200x200


HashMap 的基本成员Entry -- 内部类,存储 K、Vthreshold -- 容量达到该数字,则扩容loadFactor&nbs

#技术帖    #技术分享    #源码    #sourcecode   
概述对 java 来说,jvm 的监控是工程应用中十分重要的一环,无论是日常的性能优化还是异常处理都离不开监控数据的分析java 的 java.lang.management 包提供了用于监控和管理 java 虚拟机及虚拟机各项指标的接口 java.lang.management 提供的接口java.lang.management 提供了下列接口java.lang.management 提供的接口接口用途ClassLoadingMXBean用于 Java 虚拟机的类加载系统的管理接口CompilationMXBean用于 Java 虚拟机的编译系统的管理接口GarbageCollectorMXBean用于 Java 虚拟机的垃圾回收的管理接口MemoryManagerMXBean内存管理器的管理接口MemoryMXBeanJava 虚拟机的内存系统的管理接口MemoryPoolMXBean内存池的管理接口OperatingSystemMXBean用于操作系统的管理接口,Java 虚拟机在此操作系统上运行RuntimeMXBeanJava 虚拟机的运行时系统的管理接口ThreadMXBeanJava 虚拟机线程系统的管理接口 应用实例import java.lang
#技术帖    #龙潭书斋    #技术分享    #内存   



京ICP备15018585号