JAVA ’ 目录归档

如何实现一个简易版的 Spring – 如何实现 AOP(上)

前言

本文是「如何实现一个简易版的 Spring 系列」的第五篇,在之前介绍了 Spring 中的核心技术之一 IoC,从这篇开始我们再来看看 Spring 的另一个重要的技术——AOP。用过 Spring 框架进行开发的朋友们相信或多或少应该接触过 AOP,用中文描述就是面向切面编程。学习一个新技术了解其产生的背景是至关重要的,在刚开始接触 AOP 时不知道你有没有想过这个问题,既然在面向对象的语言中已经有了 OOP 了,为什么还需要 AOP 呢?换个问法也就是说在 OOP 中有哪些场景其实处理得并不优雅,需要重新寻找一种新的技术去解决处理?(P.S. 这里建议暂停十秒钟,自己先想一想…)

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 如何实现一个简易版的 Spring – 如何实现 AOP(上)

The JSR-133 Cookbook 中英对照版


The JSR-133 Cookbook

适用于编译器开发的 JSR-133 指南

“The JSR-133 Cookbook for Compiler Writers”

original website is http://g.oswego.edu/dl/jmm/cookbook.html. by Doug Lea, with help from members of the JMM mailing list.

dl@cs.oswego.edu.


Chinese edition is translated by 崔新, And website is https://yellowstar5.cn/direct/The%20JSR-133%20Cookbook-chinese.html

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: The JSR-133 Cookbook 中英对照版

volatile 关键字需要知道的几点

本文作者 https://github.com/lich0079 转载请注明

可见性

多核执行多线程的情况下,每个core读取变量不是直接从内存读,而是从L1, L2 …cache读,所以你在一个core中的write不一定会被其他core马上观测到。

解决这个的办法就是volatile关键字,加上它修饰后,变量在一个core中做了修改,会导致其他core的缓存立即失效,这样就会从内存中读出最新的值,保证了可见性。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: volatile 关键字需要知道的几点

Grpc Streaming 你造?

一、前言

grpc 是一个由 google 推出的、高性能、开源、通用的 rpc 框架。它是基于 HTTP2 协议标准设计开发,默认采用 Protocol Buffers 数据序列化协议,支持多种开发语言。

一般业务场景下,我们都是使用grpc的simple-rpc模式,也就是每次客户端发起请求,服务端会返回一个响应结果的模式。


image.png

但是grpc除了这种一来一往的请求模式外,还有流式模式,下面我们一一道来。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Grpc Streaming 你造?

《软件架构》4. CS架构

CS架构也称为两层架构,客户端与服务端进行通信,服务端替客户端做一些计算。

一些常见的CS架构:

  • 桌面程序和远程数据库之间
  • 浏览器和web服务器之间
  • 手机和服务器之间
  • FTP客户端和FTP服务器之间
阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《软件架构》4. CS架构

《Scala 教程》介绍

作者:Jakob Jenkov 更新时间:2014-06-01

Scala是一个非常有趣的新编程语言,相比Java有很多新特性。Scala非常吸引Java程序员,因为Scala被编译为Java字节码,在虚拟机中运行。这意味着你可以在Scala代码中使用Java类,甚至是我们自己开发的Java类。Java程序员可以方便使用Scala,因为可以重用大量Java代码。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Scala 教程》介绍

《Scala教程》 2.Scala Overview

scala 概述

作者:Jakob Jenkov 更新时间:2014-05-25

本文旨在为您提供Scala编程语言和Scala平台的概述。 由于Scala一直在开发,因此该概述页面可能会随着时间的推移而变化。 另外,随着作者对Scala语言了解的深入,本文也会有所添加。

Scala运行在Java虚拟机中

Scala被编译成Java字节码,由Java虚拟机(JVM)执行。 Scala和Java具有通用的运行时平台。 如果您或您的组织已经使用Java标准化,那么您也不会对scala感到完全陌生。 Scala与Java不同的语言,相同的运行环境。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Scala教程》 2.Scala Overview

《Scala教程》 3.Scala Classes

作者:Jakob Jenkov 更新时间:2015-05-23

Scala是一种面向对象的语言。 这意味着您可以在Scala中定义类,并实例化这些类的对象。我希望您在阅读本文时了解面向对象编程的基础。

Scala类是Scala对象的模板。这就是说,一个类定义了该类所拥有的信息以及它所展现的行为(方法)。一个类可以包含有关以下信息:

  • 字段
  • 构造器
  • 方法
  • 超类(继承)
  • 类实现的接口
  • 等等

在本文中,我将仅关注字段,构造函数和方法。Scala类的其他方面将在单独的文本中介绍。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Scala教程》 3.Scala Classes

《Scala教程》翻译邀请

快过年了,并发网祝福各位读者新年快乐!万事如意!并发网从2012年至今已经有八年了,感谢各位读者、译者和作者的支持,并发网将持续发布优质技术文章,让天下没有难学的技术!

2月并发网组织翻译《Scala教程》相关技术文章,欢迎大家踊跃参加。

如何领取

通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。领取完成之后,译文最好在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译。请谨慎领取,很多文章领取了没有翻译,导致文章很长时间没人翻译。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Scala教程》翻译邀请

《Docker教程》翻译邀请

快过年了,1月并发网组织翻译《Docker教程》相关技术文章,欢迎大家踊跃参加。

如何领取

通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。领取完成之后,译文最好在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译。请谨慎领取,很多文章领取了没有翻译,导致文章很长时间没人翻译。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Docker教程》翻译邀请

《软件架构》高扩展架构

原文链接

为了支持不断增长的性能需求衍生出一种专门的高扩展架构。换句话说,如果你的性能需求突然超过原有的软件+硬件的组合性能上限,你可以调整自己系统,通过硬件或者软件来支持新增的性能需求

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《软件架构》高扩展架构

 《软件架构》总览

原文链接 译者:xiaohua 校对:方腾飞

注意:本教程仍在更新,它将被一点点完善,但是现在你仍可以从中学到一些东西。

软件架构和软件设计是一个话题的两个不同方面,它们都是关于如何构造软件来完成任务的,通常软件架构是指软件系统中较大的结构,而软件设计指较小的结构。

因为系统架构影响着软件设计,所以很难准确定义软件架构和软件设计的边界。较大结构的设计影响着较小结构的设计。为了使本教程更有意义(即包含哪些内容),我通过进程来做区分,软件设计考虑单个软件进程的内部设计,而软件架构考虑如何设计多个软件进程合作完成它们的任务。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址:  《软件架构》总览

《软件架构》单进程架构

原文链接

由单个运行进程组成的一个软件系统被称作具有单进程架构。或者简单地说,它是一个单进程的。你也可以将其称为一层架构。单进程应用程序通常也被称为独立应用程序。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《软件架构》单进程架构

《软件架构》翻译邀请

很久没组织翻译了,12月并发网组织翻译《软件架构》相关技术文章,欢迎大家踊跃参加。

如何领取

通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。领取完成之后,译文最好在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译。请谨慎领取,很多文章领取了没有翻译,导致文章很长时间没人翻译。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《软件架构》翻译邀请

《Apache Log4j 2 用户指南》架构

原文地址

2.1 架构

2.1.1 主要组件

Log4j使用下图中显示的类。

使用 Log4j 2 API 时,应用需要从 LogManager 处获取一个有特定名字的 Logger。而 LogManager 则是查找出一个相应的 LoggerContext,并从中获取到Logger。当 Logger 被创建时,它将与 LoggerConfig 关联,该 LoggerConfig 包含 a)与 Logger 相同的名称,b)父包的名称,或 c)根 LoggerConfig。 LoggerConfig 对象是基于配置文件中的 Logger 声明创建的。 它所关联的 Appender 则用于传递 LogEvent 。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Apache Log4j 2 用户指南》架构

return top