《软件架构》翻译邀请

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

如何领取

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

阅读全文

《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 。

阅读全文

如何使用java实现Open Addressing

你好! 我们这里总共向您提供三种open addression的方法,分别为linear probing、quadratic probing和double hashing。

Linear Probing

Linear probing是计算机程序解决散列表冲突时所采取的一种策略。散列表这种数据结构用于保存键值对,并且能通过给出的键来查找表中对应的值。Linear probing这种策略是在1954年由Gene Amdahl, Elaine M. McGraw,和 Arthur Samuel 所发明,并且最早于1963年由Donald Knuth对其进行分析。

阅读全文

一文带你彻底了解Java异步编程

随着RxJavaReactor等异步框架的流行,异步编程受到了越来越多的关注,尤其是在IO密集型的业务场景中,相比传统的同步开发模式,异步编程的优势越来越明显。

那到底什么是异步编程?异步化真正的好处又是什么?如何选择适合自己团队的异步技术?在实施异步框架落地的过程中有哪些需要注意的地方?

阅读全文

Java踩坑记系列之线程池

线程池大家都很熟悉,无论是平时的业务开发还是框架中间件都会用到,大部分都是基于JDK线程池ThreadPoolExecutor做,的封装,比如tomcat的线程池,当然也有单独开发的,但都会牵涉到这几个核心参数的设置:核心线程数,等待队列,最大线程数,拒绝策略等。

阅读全文

Spring框架提供的异步执行能力

一、前言

Spring Framework分别使用TaskExecutor和TaskScheduler接口提供异步执行和任务调度的抽象。本节我们着重讲解@Async如何实现异步处理。

阅读全文

《技术人求职指南》(三) 掌握方法论

最近面试了几名同学,面试结果都不是很理想,他们自己也能感觉出来,所以和我说“因为最近在准备论文,所以没怎么准备面试”,“最近一直在上课,没有时间准备面试”。像这种情况我觉得真的非常可惜,虽说面试有时是看运气的,但面试前还是一定要准备好再投简历,并格外珍惜每次面试的机会,否则有时候你以为你错过的只是一次面试机会,但是过了几年之后你可能会发现你错过了一辈子。

阅读全文

《技术人求职指南》(四) 实战练习

上一篇讲了面试的一个基本攻略,这一篇主要讲实战。打游戏是通过打怪提升经验来通关的,而面试是通过刻意练习和实战提升经验拿到offer的。在参加面试之前,主要有四个方面需要准备和学习:首先是表达能力,其次是总结能力,然后是借力,最后就是实战。另外,还要学会站在面试官角度来反向思考面试问题。

阅读全文

深入理解Java8

Lambda的基本语法

(parm1,parm1,parm1) ->{
};
阅读全文

Spring Boot 如何快速集成 Redis 哨兵?

Redis Sentinel 介绍

Redis Sentinel:哨兵,放哨,看中文名字就知道它是一种 Redis 高可用解决方案,主要是针对 Redis 主从模式实现主从节点监控、故障自动切换。

没有 Redis Sentinel 架构之前,如果主节点挂了,需要运维人员手动进行主从切换,然后更新所有用到的 Redis IP 地址参数再重新启动系统,所有恢复操作都需要人为干预,如果半夜挂了,如果系统很多,如果某个操作搞错了,等等,这对运维人员来说简直就是恶梦。

有了 Redis Sentinel,主从节点故障都是自动化切换,应用程序参数什么也不用改,对于客户端来说都是透明无缝切换的,运维人员再也不用担惊受怕了。

阅读全文

JDK里的自旋锁

自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时才能进入临界区。

JDK里面自旋锁的实现有 SynchronousQueue  和 LinkedTransferQueue。  本文只是自己对源码的简单理解。

先说公平锁,先等待的线程先获得数据。SynchronousQueue的内部类TransferQueue实现了公平锁。

某一时刻 线程A看到内存的情况如下:   链表,head 和 tail 分别指向链首和链尾,并且线程执行了ht = tail 。

阅读全文

为什么说Java程序员到了必须掌握 Spring Boot 的时候?

Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在思考: Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 传统企业使用 Spring Boot 会给我们带来什么样变革?

带着这些问题,我们一起来了解下 Spring Boot 到底是什么?

阅读全文

为什么我们放弃了Vue?Vue和React深度比较

我使用Vue和React已经很长一段时间了,两个框架上实践代码量都在10万行以上。不得不说都是都很不错的,帮助开发者减少很多工作量,某种框架是现代化Vue和React在两者之间的选择并不像选择苹果或香蕉一样简单,两者在工程实践上的差异让我们逐渐放弃了Vue。此处以不一样的角度对彼此进行深度对比。

阅读全文

深度解析springcloud分布式微服务的实现

分布式系统

微服务就是原来臃肿的项目拆分为多个模块互不关联。如:按照子服务拆分、数据库、接口,依次往下就更加细粒度,当然运维也就越来越难受了。

分布式则是偏向与机器将诺大的系统划分为多个模块部署在不同服务器上。

微服务和分布式就是作用的“目标不一样”。

阅读全文

MySql大表分页(附独门秘技)

问题背景

MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高性能地实现该需求?

注:本文并非主要讲解如何建立索引,以下的分析均建立在有合适的索引的前提下

阅读全文

return top