标签:queue

Java

原 荐 Java 读写锁实现原理

2

darida 发布于 2018-08-15

最近做的一个小项目中有这样的需求:整个项目有一份 config.json 保存着项目的一些配置,是存储在本地文件的一个资源,并且应用中存在读写(读>>写)更新问题。既然读写并发操作,那么就涉及到操作互斥,这里自然想到了读写锁,本文对读写锁方面的知识做个梳理。 为什么需...

阅读(10)评论(0)赞 (0)

Java

【Java】留下没有基础眼泪的面试题

10

zhuangli 发布于 2018-08-15

使用多线程时, 不是多线程能提升程序的执行速度 ,使用多线程是为了 更好地利用CPU资源 ! 程序在执行时,多线程是CPU通过给每个线程 分配CPU时间片来实现 的,时间片是CPU分配给每个线程执行的时间,因时间片非常短,所以 CPU通过不停地切换线程执行 。 线程 不是越多就越...

阅读(10)评论(0)赞 (0)

Java

感悟优化――Netty对JDK缓冲区的内存池零拷贝改造

2

likai 发布于 2018-08-15

NIO中缓冲区是数据传输的基础,JDK通过ByteBuffer实现,Netty框架中并未采用JDK原生的ByteBuffer,而是构造了ByteBuf。 ByteBuf对ByteBuffer做了大量的优化,比如说内存池,零拷贝,引用计数(不依赖GC),本文主要是分析这些优化,学习...

阅读(11)评论(0)赞 (0)

Java

Java内存模型

3

yanxinchi 发布于 2018-08-14

文章内容有并发、内存模型、重排序、内存屏障、happens-before规则、as-if-serial语义、顺序一致性内存模型、volatile、锁、final。 并发 并发需要处理的两个关键问题:线程之间通信和同步 通信:是指线程之间以何种机制来交换信息;在命令式编程中,通信机...

阅读(18)评论(0)赞 (0)

Java

WebSocket的故事(二)—— Spring中如何利用STOMP快速构建WebSocket广播式消息模式

1

xubiao.zhuang 发布于 2018-08-14

本文是WebSocket的故事系列第二篇,WebSocket的故事系列计划分五篇,旨在由浅入深的介绍WebSocket以及在Springboot中如何快速构建和使用WebSocket提供的能力。本系列计划包含如下几篇文章: 第一篇,什么是WebSocket以及它的用途 第二篇,S...

阅读(21)评论(0)赞 (0)

Java

Guava Cache — Java 应用缓存神器

wenming.gapo 发布于 2018-08-13

导语: Guava 作为Google开源Java 库中的精品成员,在性能、功能上都十分出色,本文将从实际使用的角度,来对Guava进行讲解 在使用Cache之前,首先要考虑两个问题: 1、应该在什么情况下使用它? 2、如何正确的使用它? 作者本人有很大一部分代码都在逻辑层(CGI...

阅读(15)评论(0)赞 (0)

Java

JVM系列(七) – JVM线上监控工具

3

dulong 发布于 2018-08-13

通过上一篇的 JVM 垃圾回收知识,我们了解了 JVM 具体的 垃圾回收算法 和几种 垃圾回收器 。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。 在线上我们经常会遇见如下几个问题: CPU 如果遇到了以上这种问题,在 线下环境...

阅读(25)评论(0)赞 (0)

Java

Java锁之ReentrantLock(一)

2

邓龙华 发布于 2018-08-13

图1-1 根据上图可以知道,ReenTrantLock继承了Lock接口,Lock接口声明方法如下: 方法名 说明 抛出异常 lock() 一直阻塞获取锁,直到获取成功 无 lockInterruptibly() 尝试获取锁,直到获取锁或者线程被中断 InterruptedExc...

阅读(15)评论(0)赞 (0)

Java

Java并发——Condition

4

puefu.he 发布于 2018-08-13

和基类Object的监视器方法一样,Condition接口也提供了类似方法,配合Lock可以实现等待/通知模式 Object的监视器方法与Condition接口对比: 对比项 Object监视器方法 Condition 前置条件 获取对象的锁 调用Lock.lock()获取锁 调...

阅读(14)评论(0)赞 (0)

Java

深入理解 RxJava2:前世今生(1)

1

puefu.he 发布于 2018-08-12

前言 本系列文章适用于已经了解 RxJava 的读者,深入贯彻其原理,加深对其的认识。如果从未了解过 RxJava 的读者们,建议先熟悉 它 。 RxJava 0.x RxJava 最早是 Netflix 参照微软的 Rx.Net,在 Java 上实现一套类似的库,0.x 其实就...

阅读(18)评论(0)赞 (0)

Java

java的WeakReference弱引用概述

邓龙华 发布于 2018-08-12

国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, ...

阅读(16)评论(0)赞 (0)

Java

按六角形架构实现模块化设计

1

尖兵 发布于 2018-08-12

六角形架构是核心与接口外围关系图,业务逻辑核心应该位于中心,不依赖于外层接口,注意,这里数据库也是一种外围,很多系统能做到业务逻辑不依赖rest或界面,但是做不到不依赖于数据库。违背六角形架构的应用属于坏的单体应用,几乎无法迁移到微服务,只有进行重构模块化后才能迁移,而模块化是否...

阅读(22)评论(0)赞 (0)

Java

对JAVA集合进行遍历删除时务必要用迭代器

13

xirruiqiang 发布于 2018-08-12

今天同事写了几行类似这样的代码: package cn.iigrowing.threads.study.CollectionModify; import java.util.ArrayList; import java.util.List; public class Concur...

阅读(31)评论(0)赞 (0)

Java

Java多线程之Callable接口

1

hellas 发布于 2018-08-12

Callable和Runnbale一样代表着任务,区别在于Callable有返回值并且可以抛出异常。 1. 创建线程的三种方式: 继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法 2. Callable接口实际...

阅读(24)评论(0)赞 (0)

Spring

面试 Q&A(三)

6

yeseng 发布于 2018-08-10

java虚拟机的内存模型 @autowrite 如何工作 所有的Spring的bean都被ioc容器管理,这个容器叫application context 每个web application 都有一个入口叫做dispatcherservlet 自动注入将一个bean的实例赋予给另...

阅读(39)评论(0)赞 (0)

Java

javaScript 之 蚁人<微任务>

4

尖兵 发布于 2018-08-09

每次我在写技术类文章的时候都喜欢用引用一个神话故事或者一位超级英雄。没错,因为我的中二病很严重,写代码的时候都幻想自己有一对机械手臂帮我在那啪啪啪的调试bug,别想歪了不是那种啪啪啪。 这次我要说的就是 蚁人 好吧,为什么要说蚁人那。如果你看过漫威(虽然我是DC粉)的超级英雄电影...

阅读(21)评论(0)赞 (0)

Java

XHttp2:功能强悍的网络请求库

3

刘莉莉 发布于 2018-08-09

XHttp2 一个功能强悍的网络请求库,使用RxJava2 + Retrofit2 + OKHttp组合进行封装。 关于我 特征 支持默认、全局、局部三个层次的配置功能。 支持动态配置和自定义底层框架Okhttpclient、Retrofit. 加入基础ApiService,减少...

阅读(24)评论(0)赞 (0)

Java

面试 Q&A (二)

13

xiaoli.wang 发布于 2018-08-09

参考: 基本数据类型 字节 范围 默认值 byte 8-bit 1个字节 -128 ~ 127 0 short 16-bit 2个字节 -32768 ~ 32767 0 int 32-bit 4个字节 -2^31 ~ 2^31 – 1 0 long 64-bit 8个...

阅读(40)评论(0)赞 (0)