JAVA ’ 目录归档

《Spring Cloud Netflix官方文档》路由和过滤器: Zuul

原文链接

路由是一个微服务架构体系中必须的一部分,比如说,“/” 映射你的web根应用,“/api/users” 映射到用户服务,“/api/shop” 映射到购物服务上. Zuul 是 Netflix 公司的一个基于JVM的服务器端带负载均衡功能的路由。

阅读全文

IO模型解惑

本文基于《构建高性能网站》整理。之前对于各种IO模型的理解不是很清晰,发现这本书里整理得比较好,这里记录下相关要点。

阅读全文

深度解析Java线程池的异常处理机制

作者:aCoder2013 首发博客地址:https://github.com/aCoder2013/blog/issues/3

前言

今天小伙伴遇到个小问题,线程池提交的任务如果没有catch异常,那么会抛到哪里去,之前倒是没研究过,本着实事求是的原则,看了一下代码。

阅读全文

《译文:RabbitMQ 消费者确认和发布者确认》

原文链接 译者:flystarfly

介绍

使用消息代理(如RabbitMQ)的系统按定义分发。 由于发送的协议方法(消息)不能保证到达对方或被成功处理,所以发布者和消费者都需要一个交付和处理确认的机制。 RabbitMQ支持的一些消息协议提供了这样的功能。 本指南涵盖AMQP 0-9-1中的特性,但其他协议(STOMP,MQTT等)中的思路大致相同。

从消费者(consumers)投递rabbitmq代理(broker)的处理确认被认为是AMQP 0-9-1协议中的确认; rabbitmq代理(broker)对发布者(publishers)的确认被称作发布者确认(publisher confirms)
阅读全文

浅谈AutoCloseable接口

一、前言

最近在翻看源码时候发现有些类实现了AutoCloseable接口,这个接口很生疏,所以搜了下资料,学习了下,下面做个总结。

阅读全文

异步打印日志的一点事

一、前言

最近刚刚结束转岗以来的第一次双11压测,收获颇多,难言言表, 本文就先谈谈异步日志吧,在高并发高流量响应延迟要求比较小的系统中同步打日志已经满足不了需求了,同步打日志会阻塞调用打日志的线程,而打日志本身是需要写磁盘的,所以会造成rt增加。异步日志就是为了解决这个问题。

阅读全文

《Spring Cloud Netflix官方文档》翻译邀请

11月天渐渐变亮,本月并发网开始组织翻译Spring Cloud大家庭,本文是第一篇《Spring Cloud Netflix官方文档》,欢迎有兴趣的同学参与。

阅读全文

《Hibernate快速开始》Query /Criteria

Criteria查询为HQL,JPQL和native SQL 查询提供了一种类型安全的替代方法。

Hibernate 提供了一个遗留下来比较旧的org.hibernate.CriteriaAPI,并且它不被推荐使用。没有功能开发将针对这些API。最终,特定于Hibernate的criteria 功能将被移植到JPA的扩展javax.persistence.criteria.CriteriaQuery。有关org.hibernate.CriteriaAPI的详细信息,请参阅传统Hibernate条件查询

阅读全文

《RabbitMQ官方文档》订阅与发布

之前的教程中,我们创建了一个工作队列。在一个工作队列背后的假设是将每个任务都准确地交付给一个工作人员。在这个环节我们要做些完全不同的事情—我们将要把一个消息传递给多个消费者。这种模式被称为“发布/订阅”。
阅读全文

Java Fork/Join框架

原文链接:A Java Fork/Join Framework(PDF) – Doug Lea

译序

Doug Lea 大神关于Java 7引入的他写的Fork/Join框架的论文。

响应式编程Reactive Programming / RP)作为一种范式在整个业界正在逐步受到认可和落地,是对过往系统的业务需求理解梳理之后对系统技术设计/架构模式的提升总结。Java作为一个成熟平台,对于趋势一向有些稳健的接纳和跟进能力,有着令人惊叹的生命活力:

  1. Java 7提供了ForkJoinPool,支持了Java 8提供的Stream
  2. 另外Java 8还提供了Lamda(有效地表达和使用RP需要FP的语言构件和理念)。
  3. 有了前面的这些稳健但不失时机的准备,在Java 9中提供了面向RP的官方Flow API,实际上是直接把Reactive Streams的接口加在Java标准库中,即Reactive Streams规范转正了,Reactive StreamsRP的基础核心组件。Flow API标志着RP由集市式的自由探索阶段 向 教堂式的统一使用的转变。

通过上面这些说明,可以看到ForkJoinPool的基础重要性。

对了,另外提一下Java 9Flow API@author也是 Doug Lee 哦~

PS:基于Alex/萧欢 翻译、方腾飞 校对的译文稿:Java Fork Join 框架,补译『结论』之后3节,调整了格式和一些用词,整理成完整的译文。译文源码在GitHub的这个仓库中,可以提交Issue/Fork后提交代码来建议/指正。

0. 摘要

这篇论文描述了Fork/Join框架的设计、实现以及性能,这个框架通过(递归的)把问题划分为子任务,然后并行的执行这些子任务,等所有的子任务都结束的时候,再合并最终结果的这种方式来支持并行计算编程。总体的设计参考了为Cilk设计的work-stealing框架。就设计层面来说主要是围绕如何高效的去构建和管理任务队列以及工作线程来展开的。性能测试的数据显示良好的并行计算程序将会提升大部分应用,同时也暗示了一些潜在的可以提升的空间。

阅读全文

《RabbitMQ官方指南》主题

Topics

上一个教程中,我们改进了我们的日志系统而不是使用只能进行广播的fanout交换类型,我们使用direct类型,能够选择性地接收日志。 虽然使用direct交换类型改进了我们的系统,但它仍然有限制 – 它不能基于多条件进行路由选择。 在我们的日志记录系统中,我们可能不仅要根据日志级别订阅日志,还可以基于日志源进行订阅。您可能会从syslog unix工具中了解过这个概念,该工具可以根据日志级别(info/warn/crit..)和设备(auth / cron / kern …)来路由日志。

这将给我们很大的灵活性 – 我们可能只想要监听来自“cron”的重要错误,但是想监听来自”kern“的所有日志。 要在我们的日志系统中实现这一点,我们需要了解一个更复杂的交换类型-Topic(主题)交换。

阅读全文

《Nginx官方文档》关于nginScript

关于nginScript

nginScript是允许在 httpstream 中实现位置和变量处理程序的JavaScript语言的子集 。nginScript创建符合 ECMAScript 5.1 和一些 ECMAScript 6 扩展名。合规性仍在不断发展。

阅读全文

《RabbitMQ官方指南》路由

Routing

上一节我们建立了一个简单的日志系统,已经能够传播日志信息给接收者了。

在这一节我们将给它增加一个特性-订阅部分消息。比如说,我们能够从控制台打印的所有日志信息中将至关重要的错误信息指向日志文件(保存在硬盘里)。

阅读全文

《RabbitMQ官方指南》RPC

远程过程调用

(RPC)

(Java 客户端版)

在第二章(工作队列  Work Queues)中,我们学习了如何使用工作队列在多用户之间分配耗时的任务。

但是如果我们需要在远程电脑上运行一个函数方法,并且还要等待一个返回结果该怎么办?好吧,这将会是一个不一样的故事。这种模式通常被我们称为远程过程调用或者RPC.

在本章教程中,我们将会学习使用RabbitMQ去搭建一个RPC系统:一个客户端和一个可以升级(扩展)的RPC服务器。由于我们没有任何的值得分配的耗时的任务,所以我们将创建一个返回斐波那契数列的虚拟的RPC服务。

阅读全文

《Nginx官方文档》用DTrace pid提供程序调试nginx

用DTrace pid提供程序调试nginx

本文假设读者对nginx内部和 DTrace 有一般的了解。

虽然使用 –with-debug 选项构建的nginx 已经提供了大量关于请求处理的信息,但是有时候更有必要更详细地跟踪代码路径的特定部分,同时省略其余的调试输出。DTrace pid提供程序(在Solaris,MacOS上可用)是浏览用户程序内部的有用工具,因为它不需要任何代码更改,并且可以帮助您完成任务。跟踪和打印nginx函数调用的简单DTrace脚本可能如下所示:

阅读全文

return top