随笔分类 -  java

摘要:【写在前面】 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,是异步RPC的主要手段之一。 作为分布式系统架构中的一个重要组件,消息中间件的选型,变成了一个 阅读全文
posted @ 2022-03-03 00:44 流年的夏天 阅读(664) 评论(0) 推荐(0)
摘要:【源码】 java1.8: 1 public final void wait(long timeout, int nanos) throws InterruptedException { 2 if (timeout < 0) { 3 throw new IllegalArgumentExceptio 阅读全文
posted @ 2022-03-02 00:34 流年的夏天 阅读(696) 评论(0) 推荐(0)
摘要:今天,我们开始Java高并发与多线程的第四篇,锁。 之前的三篇,基本上都是在讲一些概念性和基础性的东西,东西有点零碎,但是像文科科目一样,记住就好了。 但是本篇是高并发里面真正的基石,需要大量的理解和实践,一环扣一环,环环相扣,不难,但是需要认真去读。 好了,现在开始。 第一部分,咱们要谈到java 阅读全文
posted @ 2021-01-22 17:28 流年的夏天 阅读(522) 评论(1) 推荐(3)
摘要:今天,我们开始Java高并发与多线程的第三篇,线程的基本属性和主要方法。 【属性】 编号(ID) 类型long 用于标识不同的线程,编号唯一,只存在java虚拟机的一次运行 名称(Name) 类型String 可以不设置,默认值为Thread-线程编号 线程类别(Daemon) 类型boolean 阅读全文
posted @ 2021-01-20 17:59 流年的夏天 阅读(399) 评论(0) 推荐(3)
摘要:今天,我们开始Java高并发与多线程的第二篇,线程的实现方式。 通常来讲,线程有三种基础实现方式,一种是继承Thread类,一种是实现Runnable接口,还有一种是实现Callable接口,当然,如果我们铺开,扩展一下,会有很多种实现方式,但是归根溯源,其实都是这几种实现方式的衍生和变种。 我们依 阅读全文
posted @ 2021-01-18 19:26 流年的夏天 阅读(975) 评论(0) 推荐(3)
摘要:其实之前一直想专门写一篇,单独说一说Java的多线程与高并发,但是一直以来,都没有想到能够用什么比较有趣的表现形式去表达出来,而且网上充斥着很多类似的博客,有好的又不好的,有简介的有繁琐的,所以也一直没写。 但是想了想既然之前有这个想法,而且也已经好久没有写过博客了,索性还是写一写,尽量写的有意思一 阅读全文
posted @ 2021-01-12 21:23 流年的夏天 阅读(1978) 评论(7) 推荐(7)
摘要:【Github上创建仓库】 首先,在GitHub上创建自己的仓库(mvn-repo): 【配置本地setting文件】 找到本地的maven settings文件,配置server: 有两种选择,可以选择配置username和password,或者选择配置Personal access tokens 阅读全文
posted @ 2020-11-22 14:35 流年的夏天 阅读(3079) 评论(1) 推荐(3)
摘要:maven是当下最流行的项目管理工具,其丰富的插件为我们的工作带来了很大的便利。 但是在一些情况下,开源的插件并不能完全满足我们的需求,我们需要自己创建插件,本文就从0开始带大家一起创建自己的插件。 【命名规范】 首先,官方的命名规范是maven-xxx-plugin,为了避免于官方冲突,我们可以将 阅读全文
posted @ 2020-11-18 17:12 流年的夏天 阅读(1430) 评论(0) 推荐(2)
摘要:【背景】 之前在领英上读到一篇软文,《Managing Software Dependency at Scale》,讲述了领英是如何处理模块之间的依赖解析,以及如何去更好的处理依赖关系以及依赖管理。感觉在一家多产品的公司,在产品有可能相互依赖的情况下,都应该有这么一套系统,来进行依赖关系的管理以及维 阅读全文
posted @ 2020-11-08 17:36 流年的夏天 阅读(522) 评论(1) 推荐(0)
摘要:找到Tomcat目录下的conf/logging.properties配置文件,打开,搜索java.util.logging.ConsoleHandler.encoding 日志的编码, 将UTF-8改成GBK 问题解决。 阅读全文
posted @ 2020-09-27 17:37 流年的夏天 阅读(204) 评论(0) 推荐(2)
摘要:本文主要介绍Java垃圾回收(Garbage Collection),90%干货,文字颇多,需要耐心一点看。 【对象判断状态算法】 引用计数法 在创建对象时,为对象创建一个伴生的引用计数器,当有其他对象引用该对象时,将引用计数器的值加1,如果其他对象不再引用该对象就将引用计数器的值减1,所以当引用计 阅读全文
posted @ 2020-09-07 15:09 流年的夏天 阅读(292) 评论(0) 推荐(2)
摘要:上一篇主要从总体介绍了高并发&性能优化的相关思路和方法,本篇主要介绍系统监控工具。 【CPU查看工具】 top命令(性能) 进入top命令后,按1即可看到每核CPU的运行指标与详细指标: 咱们依次说明下红框里面的参数: Load Average 一段时间内系统的平均负载,这个一段时间一般取1分钟、5 阅读全文
posted @ 2020-08-25 15:15 流年的夏天 阅读(1460) 评论(0) 推荐(4)
摘要:【开篇词】 本文主要通过一些经典的高并发场景,以及一些基本的运维工具来讲述一些关于高并发以及性能优化相关的内容,主要包括性能瓶颈的定位,性能调优的思路和技巧等。 【性能的衡量指标】 ?什么是性能 性能就是,在有限的时间内,使用有限的资源,完成任务。 在存储资源成本越来越低的今天,时间,就成为了性能指 阅读全文
posted @ 2020-08-24 21:07 流年的夏天 阅读(2687) 评论(1) 推荐(3)
摘要:【为什么要使用线程池】 传统线程创建方式的问题 反复创建线程系统开销比较大,每个线程创建和销毁都需要时间,如果任务比较简单,那么就有可能导致创建和销毁线程消耗的资源比线程执行任务本身消耗的资源还要大。 过多的线程会占用过多的内存等资源,还会带来过多的上下文切换,同时还会导致系统不稳定。 线程池的优点 阅读全文
posted @ 2020-08-06 21:49 流年的夏天 阅读(580) 评论(0) 推荐(0)
摘要:【基本流程】 客户端发送请求,到DispatcherServlet(SpringMVC前端控制器,主要负责分发) DispatcherServlet根据请求的url信息调用HandlerMapping,解析请求对应的Handler 解析到对应的Handler(controller的实现类,也叫act 阅读全文
posted @ 2020-08-05 15:57 流年的夏天 阅读(342) 评论(1) 推荐(1)
摘要:【 2 种线程实现方式的源码】 实现 Runnable 接口 public class RunnableThread implements Runnable { @Override public void run() { System.out.println('用实现Runnable接口实现线程') 阅读全文
posted @ 2020-06-30 16:07 流年的夏天 阅读(374) 评论(1) 推荐(0)
摘要:衡量一个排序算法的优劣,我们主要会从以下 3 个角度进行分析: 1.时间复杂度,具体包括,最好时间复杂度、最坏时间复杂度以及平均时间复杂度。 2.空间复杂度,如果空间复杂度为 1,也叫作原地排序。 3.稳定性,排序的稳定性是指相等的数据对象,在排序之后,顺序是否能保证不变。 【冒泡排序】 冒泡排序最 阅读全文
posted @ 2020-06-30 15:19 流年的夏天 阅读(671) 评论(0) 推荐(1)
摘要:【answer】 List是一个接口,而ArrayList是List接口的一个实现类。 ArrayList类继承并实现了List接口。 因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就 阅读全文
posted @ 2020-06-29 09:52 流年的夏天 阅读(1493) 评论(0) 推荐(0)
摘要:线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。 一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。 线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码 阅读全文
posted @ 2020-06-18 11:08 流年的夏天 阅读(429) 评论(0) 推荐(2)
摘要:【基本结构】 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的; JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示: 数组中的元素我们称之为哈希桶,它的定义如下: static class Nod 阅读全文
posted @ 2020-06-17 15:53 流年的夏天 阅读(273) 评论(0) 推荐(1)