Java并发编程实践:利用信号量实现阻塞集合demo package com.rx.wwx;import java.util.HashSet;import java.util.Random;import java.util.Set;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.conc...
Guava异步事件总线AsyncEventBus的注解AllowConcurrentEvents分析 Guava提供了EventBus事件总线工具,可以很方便的创建观察者模式,基本使用请参考如下链接 http://www.cnblogs.com/peida/p/EventBus.html。在设置观察者时,需要使用注解类@Subscribe来标识一个订阅者,但在注解中还要一个注解@AllowConcurrentEvents,这个注解是用来标识当前订阅者是线程安全的,那Guava内部是如何实现的...
Java并发编程:CopyOnWriteArrayList 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机...
redis主从、哨兵、集群的区别 原文来自:https://blog.csdn.net/c295477887/article/details/52487621关于redis主从、哨兵、集群的介绍网上很多,这里就不赘述了。一、主从通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 。但是由于数据是存储在一台服务器上的,如果这台...
nginx中root和alias的区别 转自:https://www.cnblogs.com/zhangqunshi/p/6866522.html今天使用nginx搭建了一个网站,访问后出现404错误Not found. 上网查了一下原因,是由于nginx的配置不对。因为我是有两个web目录,这两个目录在不同的位置上。而且我不想把两个目录合并在一起,所以就要配置两个location。配置如下:server { list...
使用aop代理获取不到Annotation注解问题 原文来自:https://blog.csdn.net/frightingforambition/article/details/78842306这里碰到了一个问题 ,执行的方法有注解,但是通过Annotation an = method.getAnnotation(UserChangeLog.class); 取值为null.具体情况和此篇文章类似:示例其实问题很简单,是代理对象和目标对...
guava缓存的expireAfterWrite与refreshAfterWrite的区别 原文来自:https://my.oschina.net/scipio/blog/551475?p=expireAfterWrite是在指定项在一定时间内没有创建/覆盖时,会移除该key,下次取的时候从loading中取 expireAfterAccess是指定项在一定时间内没有读写,会移除该key,下次取的时候从loading中取 refreshAfterWrite是在指定时间内没有被创建...
Java Guava Cache 使用 原文来自:https://blog.csdn.net/u012881904/article/details/79263787Guava -CaacheGuava缓存值CacheBuilder介绍-参考 Google -CachesExplained wiki 缓存框架Guava Cache部分源码分析概述缓存是日常开发中经常应用到的一种技术手段,合理的利用缓存可以极大的改善应用程序...
并发编程工具之一:CountDownLatch 用法 原文来自:https://blog.csdn.net/Somhu/article/details/78614783CountDownLatch 用法CountDownLatch是java.util.concurrent包中一个类,CountDownLatch只要提供的机制是多个(具体数量等于初始化CountDownLatch时count的值)线程都达到了预期状态或者完成了预期工作时触发事件...
使用ExecutorCompletionService 管理线程池处理任务的返回结果 在我们日常使用线程池的时候,经常会有需要获得线程处理结果的时候。此时我们通常有两种做法。1. 使用并发容器将callable.call() 的返回Future存储起来。然后使用一个消费者线程去遍历这个并发容器,调用Future.isDone()去判断各个任务是否处理完毕。然后再处理响应的业务。 import java.util.concurrent.BlockingQueue;im...
利用消息队列实现最终一致性 本文转自:http://skaka.me/blog/2016/04/21/springcloud1/不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多个数据源, 只用本地数据库事务难以保证多个数据源数据的一致性. 这种情况下, 可以使用两阶段或者三阶段提交协议来完成分布式事务.但是使用这种方式一般来说性能较差, 因为事务管理器需要在多个...
select/poll/epoll 在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机制,真正理解为何epoll能实现高并发。select...
NIO相关基础篇 1.此篇文章主要讲解了操作系统的IO模型2.讲解了IO过程中用户程序到操作系统内核到硬件的过程相关文章转载自:https://mp.weixin.qq.com/s/q1G1-zV6Mhb72ukzTL7P5A请复制文章地址,在微信浏览器中打开...
深入分析Java的序列化与反序列化 原文转自:http://www.hollischuang.com/archives/1140序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么...
Protobuf 的 proto3 与 proto2 的区别 原文转自:https://solicomo.com/network-dev/protobuf-proto3-vs-proto2.html这是一篇学习笔记。在粗略的看了 Protobuf 的文档中关于 proto2 和 proto3 的说明后,记录下了几点 proto3 区别于 proto2 的地方。总的来说,proto3 比 proto2 支持更多语言但 更简洁。去掉了一些复杂的语法和特性...
Windows Protobuf的运行环境 1.前往github Protocol Buffer的readme文件,找到下载地址,但是window是下需要下载额外的编译器 2.编译器下载地址:https://pan.baidu.com/s/1_LZMi0AqTJoeklind2bnPQ 3.执行命令 protoc.exe -I=proto的输入目录 --java_out=java类输出目录 proto的输入目录包括包括p...
单例模式与序列化那些事 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。单例模式,是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。关于单例模式的使用方式,可以阅读单例模式的七种写法但是,单例模式真的能够实...
Java设计模式-单例模式 目录: 前言 一 单例模式简介 1.1 定义 1.2 为什么要用单例模式呢? 1.3 为什么不使用全局变量确保一个类只有一个实例呢? 二 单例的模式的实现 2.1 饿汉方式(线程安全) 2.2 懒汉式(非线程安全和synchronized关键字线程安全版本 ) 2.3 懒汉式(双重检查加锁版本) 2.4 懒汉式(登记式/静态内部类方式) 2.5 饿汉式(...
commons-lang3的tuple包介绍 问题有时候我们调用方法的时候返回值有可能不止1个,比如说我们返回name = "张三" age = 20这两个值,那么这个时候方法的返回值怎么写呢。在Scala和python中都有Tuple使用,在java中我们怎么办。很容易我们就想到了一个方式:可以构造一个User类来封装这两个属性。但是如果返回的两个值并没有任何关联关系,或者说每一个方法返回的参数都不同,那么我们就得为每一个方法的返回类...