自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiaolyuh的专栏

凡是过去,皆为序幕

  • 博客(417)
  • 资源 (53)
  • 收藏
  • 关注

原创 JAVA并发容器-ConcurrentHashMap 1.7和1.8 源码解析

HashMap是一个线程不安全的类,在并发情况下会产生很多问题,详情可以参考HashMap 源码解析;HashTable是线程安全的类,但是它使用的是synchronized来保证线程安全,线程竞争激烈的情况下效率非常低下。在jdk1.5的时候引入了ConcurrentHashMap,这也是一个线程安全的类,它使用了分段锁的技术来提升并发访问效率。HashTable容器在竞争激烈的并发环境下表现...

2019-11-28 09:55:59 378 2

原创 二叉树遍历算法

二叉树遍历算法有4种,先序、中序、后序和层序遍历先序遍历:先根、后左、再右中序遍历:先左、后根、再右后序遍历:先左、后右、再根层序遍历:从上往下,从左往右先序遍历:A → B → D → C中序遍历:B → D → A → C后续遍历:D → B → C → A层序遍历:A → B → C → D先序遍历:A → B → D → C /** * 先序遍历递...

2019-11-28 09:53:51 410

原创 红黑树原理

红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。性质节点是红色或黑色。根节点是黑色。每个叶子节点(NIL)是黑色。 (注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!)每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)从任一节点到其每个叶子的所有路径都包含相...

2019-11-28 09:52:53 436

原创 HashMap 源码解析

源码学习,边看源码边加注释,边debug,边理解。基本属性常量DEFAULT_INITIAL_CAPACITY:默认数组的初始容量 - 必须是2的幂。MAXIMUM_CAPACITY:数组的最大容量DEFAULT_LOAD_FACTOR:哈希表的负载因子0.75TREEIFY_THRESHOLD:在一个桶内由树转换成链表的阈值UNTREEIFY_THRESHOLD:又树转换成链...

2019-11-28 09:32:30 173

原创 AQS AbstractQueuedSynchronizer 同步框架

队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架。它主要的设计思想是使用一个名为state的int类型成员变量来表示同步状态,AQS里面大部分方法都是再对这个边进行操作;再内置一个FIFO队列来完成资源获取线程的排队工作。AQS的使用方式主要使用继承方式,并且推荐使用静态内部类,这样做的好处是隔离了使用者和实现者所关注的领...

2019-11-27 14:43:51 179

原创 Java中的锁

锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时 访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。Lock和synchronized的主要区别:synchronized它是隐式的获取和释放锁,使用起来更方便,但是不灵活。Lock接口获取和释放锁是由我们自己控制,更加灵活Lock接口支持超时获取锁和可中断获取锁Lock的使用的方式...

2019-11-27 14:42:45 142

原创 CyclicBarrier和CountDownLatch的区别

CountDownLatch是两组线程,第一组负责计数器减一,第二组是阻塞线程,当第一组线程将计数器减到0时,第二组线程才开始执行,放行是由第三方控制;CyclicBarrier是只有一组线程,只有当所有线程到达拦截点的时候,才会继续往下执行,放行是由一组线程本身控制。CountDownLatch放行条件是大于或等于线程数;CyclicBarrier放行条件是等于线程数CountDownLa...

2019-11-27 14:41:10 810

原创 CyclicBarrier并发工具类

作用让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开放,所有被屏障拦截的线程才会继续运行。核心方法CyclicBarrier(int parties):默认构造方法,parties参数表示屏障拦截的线程数量CyclicBarrier(int parties, Runnable barrierAction):barrierAction表示屏障开放的...

2019-11-27 14:39:41 149

原创 CountDownLatch并发工具类

作用CountDownLatch允许一个或多个线程等待其他线程完成操作,相当于一个加强版的join方法。核心方法CountDownLatch的构造函数接收一个int类型的参数作为计数器,如果你想等待N个点完 成,这里就传入N。countDown:负责计数器的减一await:阻塞当前线程,直到CountDownLatch计数器变成零由于countDown方法可以用在任何地方,所以这里...

2019-11-27 14:38:47 191

原创 Fork/Join框架运行原理

Fork/Join框架的入门可以参考Fork/Join框架。Fork/Join框架的核心类有两个一个是ForkJoinPool,它主要负责执行任务;一个是ForkJoinTask,主要负责任务的拆分和结果的合并;ForkJoinPool它和ThreadPoolExecutor一样也是一个线程池的实现,并且同样实现了Executor和ExecutorServiceie接口,类图如下:核心内部...

2019-11-27 14:37:58 374

原创 Fork/Join框架

Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干 个小任务(Fork),最终汇总每个小任务结果后得到大任务结果(Join)的框架。分而治之一个规模为N的问题,当N小于阀值时直接执行,当N大于阀值时将N分解成K个小规模子问题,子问题之间相互独立,并与原问题形式相同,最后将所有子问题的解合并得到原问题的解,叫做分而治之。工作窃取算法工作窃取(wo...

2019-11-27 14:36:51 1039

原创 java如何实现原子操作CAS

在Java中可以通过锁和循环CAS的方式来实现原子操作。使用循环CAS实现原子操作JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的。自旋CAS实现的基本思路就是循环进行CAS操作直到成功为止。CAS实现原子操作的三大问题ABA问题,循环时间长开销大,以及只能保证一个共享变量的原子操作。ABA问题因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化 则更...

2019-11-27 14:35:53 426

原创 synchronized关键字

Java中的每一个对象都可以作为锁。具体表现为以下3种形式。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。原理JVM基于进入和退出Monitor(监视器)对象来实现方法同步和代码块同步,两者的实现细节不一样。但是都可以使用monitorenter和monitorexit指令来实现。mon...

2019-11-27 14:35:14 230

原创 volatile关键字

volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是一个线程修改一个共享变量时,另一个线程能读到这个修改后的值。volatile的使用成本比synchronized的低,因为它不会引起上下文的切换和调度。定义为了保证共享变量被准确个一致的更新,线程因该确保通过排它锁单独获得这个变量。如果一个字段被声明成volatile,java线程内...

2019-11-27 14:34:23 158

原创 并发编程基础

CPU时间片轮转机制CPU时间片轮转机制也称时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一时间段,称作它的时间片,即该进程允许运行的时间。进程之间的切换会产生上下文切花,每次切换需要耗费5000到2W个时钟周期。所有我们在进行并发编程的过程中因该尽量减少上下文的切换。怎样减少上下文的切换...

2019-11-27 14:33:22 111

原创 java多线程基础

java是一个天生就支持多线程的语言。查看JVM内的线程public static void main(String[] args) { //虚拟机线程管理的接口 ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); ThreadInfo[] threadInfos =...

2019-11-27 14:31:54 267

原创 idea 解决jira包冲突

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.4.1</version> <executions> <exe...

2019-08-19 20:56:10 521

原创 Spring Boot对内嵌数据库的支持

开发应用时使用内存数据库是很实用的。很方便的一点是,内存数据库不需要提供持久化存储。 你不需要在应用启动时做初始化数据库动作, 也不需要在应用结束时去删除数据。Spring Boot可以自动配置的内嵌数据库包括H2,HSQL和Derby。你不需要提供任何连接URLs, 只需要简单的添加你想使用的内嵌数据库依赖。示例:典型的POM依赖如下:<dependency> ...

2019-07-15 09:28:16 5332

原创 缓存设计要点-缓存穿透、缓存击穿和缓存雪崩实践

我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数据库资源占满,引起数据库故障。今天我主要分享一下layering-cache缓存框架在这个三个问题上的实践方案。概念缓存穿透在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不存在的......

2018-12-29 10:27:03 1653

原创 系统重构心得

重构概念在不改变软件可观察行为的前提下,对软件内部结构的一种调整,提高其可理解性,降低修改成本。重构节奏测试、小修改、测试、小修改…正是这种节奏让重构得以快速安全而安全的前行。构筑测试体系如果想要重构,我们必须拥有一个良好的测试环境。编写优良的测试程序,可以极大的提升编程速度和代码质量,即使不进行重构也一样如此。每当我们收到一个bug报告时,请先写一个单元测试来暴露bug。测试是一种...

2018-12-25 00:28:41 419 1

原创 CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响应很慢进而影响了其他系统的调用。问题分析首先我们知道CompletableFuture的get()方法值会阻塞主线程,直到子线程执行任务...

2018-12-16 01:32:26 19517 4

原创 Hystrix实现主线程和子线程的ThreadLocal上下文传递

问题描述我在使用日志链路追踪的时候(基于SLF4J MDC机制实现日志的链路追踪),我发现使用Hystrix线程池隔离的时候,我不能将子线程没有复制主线程的MDC上下文(Slf4j MDC机制),导致日志链路断掉。问题分析Hystrix的线程池隔离是使用HystrixThreadPool来实现的。而获取HystrixThreadPool是在HystrixConcurrencyStrateg...

2018-12-16 01:30:31 2543 2

原创 Gradle 换阿里仓库

改单个项目在项目的build.gradle文件中,修改repositories配置,将mavenCentral()改为 maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/’}, 如:repositories { maven { url 'http://maven.aliyun.com/nexus/conten...

2018-10-18 16:55:58 2202

转载 如何发布Jar包到Maven中央仓库

转:https://blog.csdn.net/huangjinjin520/article/details/789157891、在网站https://issues.sonatype.org/secure/Dashboard.jspa注册一个账号(请记住对应的账号和密码,之后需要用到)此外,Sonatype还提供了一个名为OSS 的系统,具体的构件发布是在这个oss系统上,...

2018-08-26 22:18:13 5731

转载 将项目发布到 Maven 中央仓库踩过的坑

转:http://brianway.github.io/2017/05/17/release-to-maven-central-repo/大致步骤注册 Sonatype 的账户。地址:https://issues.sonatype.org/secure/Signup!default.jspa 提交发布申请。创建 Issue 地址:https://issues.sonatype.or...

2018-08-26 22:14:17 6071 5

转载 VMware中CentOS设置静态IP

转: https://www.cnblogs.com/zhanjindong/p/3250393.html首先关闭VMware的DHCP:Edit-&gt;Virtual Network Editor选择VMnet8,去掉Use local DHCP service to distribute IP address to VMs选项。点击NAT Settings查看一下GATEWA...

2018-08-25 22:02:55 308

转载 VMware安装CentOS后网络设置

转:https://www.cnblogs.com/owaowa/p/6123902.html 在使用CentOS虚拟机后,出现了无法上网的情况,使用主机ping虚机地址可以ping通,而虚机ping不通主机,同时虚机也无法ping通其他的网址或ip,显示内容为Network is unreachable,后来经过在网上查找找到采用NAT模式的解决方法,解决问题,记录如下:1、打开服务...

2018-08-25 22:01:17 434

原创 RabbitMQ 延迟队列

问题描述在订单系统,当用户下单后需要在10分钟内完成支付,否则取消订单。解决方案如果我们使用定时任务来做,那这个失效时间对不准确,当时可以提高定时任务的执行频率来减小这个误差。使用延迟队列,我们这里主要将这种方式。基本概念所谓的‘延迟队列“就是消息被发送以后,不直接被消费者消费,而是等到特定时间后消费者才能拿到消息消费。延迟队列模型详细说明...

2018-06-08 20:44:05 2475

转载 Intellij IDEA神器居然还有这些小技巧

转至:https://blog.csdn.net/linsongbin1/article/details/80211919概述Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intellij IDEA技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道...

2018-06-07 09:35:26 888

转载 Intellij IDEA神器那些让人爱不释手的小技巧

转至:https://blog.csdn.net/linsongbin1/article/details/80560332?hmsr=toutiao.io&amp;utm_medium=toutiao.io&amp;utm_source=toutiao.io概述在2018年5月6日写了一篇介绍IntellIJ IDEA的文章,Intellij IDEA神器居然还有这些小技巧,主要是列出一些平时大家...

2018-06-07 09:34:12 345

原创 基于SLF4J MDC机制实现日志的链路追踪

问题描述最近经常做线上问题的排查,而排查问题用得最多的方式是查看日志,但是在现有系统中,各种无关日志穿行其中,导致我没办法快速的找出用户在一次请求中所有的日志。问题分析我们没办法快速定位用户在一次请求中对应的所有日志,或者说是定位某个用户操作的所有日志,那是因为我们在输出的日志的时候没把请求的唯一标示或者说是用户身份标示输出到我们的日志中,导致我们没办法根据一个请求或者用户身份标示...

2018-06-06 13:00:33 6847

原创 Slf4j MDC机制

MDC 简介MDC ( Mapped Diagnostic Contexts ),它是一个线程安全的存放诊断日志的容器。 Logback设计的一个目标之一是对分布式应用系统的审计和调试。在现在的分布式系统中,需要同时处理很多的请求。如何来很好的区分日志到底是那个请求输出的呢?我们可以为每一个请求生一个logger,但是这样子最产生大量的资源浪费,并且随着请求的增多这种方式会将服务器资源消...

2018-06-03 21:45:09 15163 1

原创 查看线上日志常用命令

cat 命令(文本输出命令)通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行:显示file文件里匹配nick那行以及上下5行cat error.log | grep -C 5 'nick'显示nick及前5行cat error.log | grep -B 5 'nick' cat error.lo...

2018-05-18 16:10:34 7783 1

转载 quartz定时任务中常用的cron表达式

转至:https://blog.csdn.net/xiaopihai86/article/details/50756306在线生成器:http://cron.qqe2.com/corn表达式CronTrigger配置完整格式为: [秒] [分] [小时] [日] [月] [周] [年]字段 允许值 允许的特殊字符秒 0-59 , - * /分 0-59 , - * /小时 0-23 , - * /...

2018-05-08 11:18:43 717

转载 使用Guava retryer优雅的实现接口重调机制

转至:https://www.cnblogs.com/jianzh5/p/6651799.html使用Guava retryer优雅的实现接口重调机制  API 接口调用异常, 网络异常在我们日常开发中经常会遇到,这种情况下我们需要先重试几次调用才能将其标识为错误并在确认错误之后发送异常提醒。guava-retry可以灵活的实现这一功能。Guava re

2018-05-05 21:40:13 1028

转载 Spring异常重试框架 Spring Retry

转至:https://www.cnblogs.com/EasonJim/p/7684649.htmlSpring Retry支持集成到Spring或者Spring Boot项目中,而它支持AOP的切面注入写法,所以在引入时必须引入aspectjweaver.jar包。快速集成的代码样例:@Configuration@EnableRetrypublic c

2018-05-05 21:37:41 1820

转载 spring-retry重试与熔断详解

转至:http://www.broadview.com.cn/article/233本文是《亿级流量》第6章 超时与重试机制补充内容。spring-retry项目实现了重试和熔断功能,目前已用于SpringBatch、Spring Integration等项目。RetryOperations定义了重试的API,RetryTemplate提供了模板实现,线程安全的

2018-05-05 21:35:48 5306

原创 idea 一个窗口打开多个项目,并进行依赖

1.2.3.4.

2018-05-03 19:13:40 2888

转载 Hystrix的资源隔离策略

转至:https://blog.csdn.net/liuchuanhong1/article/details/73718794Hystrix的资源隔离策略有两种,分别为:线程池和信号量。说到资源隔离,那我们就要明白,我们为什么需要资源隔离。在一个分布式系统中,服务之间都是相互调用的,如下图所示:例如,我们容器(Tomcat)配置的线程个数为1000,

2018-04-17 16:43:05 903 2

转载 深入分析 ThreadLocal 内存泄漏问题

转自:http://blog.xiaohansong.com/2016/08/06/ThreadLocal-memory-leak/文章目录1. 前言2. ThreadLocal 实现原理3. ThreadLocal为什么会内存泄漏 3.1. 为什么使用弱引用4. ThreadLocal 最佳实践前言ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,

2018-04-09 17:22:01 581

五子连珠源码

五子连珠源码,用java写的附源代码,记得好评哦

2012-08-28

3630个网页小图标

3630个网页小图标,各类网页图标,非常全面

2012-08-28

Java编程思想第四版完整中文高清版

Java编程思想第四版完整中文高清版,非常棒的一本书

2012-08-28

CAN总线驱动器

82C250是CAN控制器与物理总线之间的接口,它最初是为汽车中的高速应用而设计的。器件可以提供对总线的差动发送和接收功能。

2012-08-25

互联网新技术

互联网新技术,互联网基础,移动和无线网络,记得好评哈

2012-08-25

java输入输出

java输入输出,java中的重难点详解,记得好评哦

2012-08-25

大学生科学研究课题

大学生科学研究课题申报书_范例,很详细的

2012-08-25

photoshope_中文版教程

photoshope_中文版教程,很不错的photoshope教程,记得好评哦

2012-08-25

LIN_技术规范

LIN_技术规范及在汽车中的应用,LIN技术详解

2012-08-25

Java编程实验报告

Java编程基础实验报告(样本) 仅供参考 记得好评哦

2012-08-25

JAVA_split_用法

JAVA_split_用法,split详解,记得好评哦

2012-08-25

java实现控台通信

基于UDP协议的java通信,java网络编程

2012-08-25

Eclipse 技巧

Eclipse应用技巧-代码模板功能。非常全面,记得好评哦

2012-08-25

CoreJava笔记

java笔记,一个非常适合初学者学习的java文档。记录java精髓

2012-08-25

拼图游戏源码

拼图游戏源码,用java编写,仅供学习和参考,记得好评哦

2012-08-25

坦克大战源码

坦克大战源码,用java编写,记得好评哦

2012-08-25

java数据结构和算法

java数据结构和算法PDF版,很好的一本书,给大家分享一下

2012-08-25

java小闹钟

用java编写的闹钟程序,附带源码,转载

2012-08-25

晨枫聊天工具

刚刚学java的时候写的,基于UDP协议,还在完善中。设置你要通信的IP,如果你要群聊就将IP最后移位设置成255。语音和视屏功能还在写。

2012-08-25

打飞机源码

打飞机源码,实现选关,血量等等,适合java初学者学习。

2012-08-25

consul_1.7.3_windows\mac\linux.zip

微服务,注册中心,consul 1.7.3 Windows,linux,mac版。官网下载:consul_1.7.3_XXX_amd64。官网下载速度很慢,我才在这里分享一个资源。

2020-06-02

git-flow-plus-4idea-1.0.7.zip

MrtfGitFlow4Idea插件是一款基于mrtf-git-flow分支管理流程的Idea插件,它最主要的作用是用来简化分支管理流程,最大限度的防止误操作。

2020-05-07

ScreenToGif.rar

Screen to Gif是一款方便可靠的gif动画录制软件,可以用来快速录制屏幕上的指定区域,将其直接保存为GIF动画文件。 官网:http://www.screentogif.com/?l=zh_cn#

2020-03-13

logback 中文手册

此中文手册为官网手册中文版 文档版本 0.1 发布日期 2010年4月23日 原作者 Ceki Gülcü、Sébastien Pennec 中文版译者 陈华 联系方式: clinker@163.com 陈华的论坛地址:http://www.iteye.com/topic/655136

2017-03-30

jquery cookie 中文文档

jquery cookie 中文文档 1.4.0版本。 http://plugins.jquery.com/cookie/

2013-12-25

jQuery api 1.8 中文版.chm

jQuery api 1.8 中文版.chm 最新版的 还是中文的哈

2013-08-16

spring-data-jpa-reference API

spring框架中的持久层框架,讲的很全面

2013-08-16

javamail1.4.7

java邮件开发jar包。包括一些例子在里面。

2013-06-27

java媒体开发JMF包含,帮助文档,安装配置文档,初级教程,安装包

java媒体开发JMF包含帮助文档安装配置文档初级教程安装包

2012-08-31

JAVA反射机制

有详细的讲解和案例,希望对您有帮助,记得好评哦

2012-08-31

mysql-5.0.75.tar.gz

mysql-5.0.75.tar.gz tar -zxvf mysql-5.0.75.tar.gz 就可以安装了

2012-08-26

Android从入门到精通.rar

Android从入门到精通.rar,一个非常不错的android教材,现在android很火的

2012-08-26

apache-tomcat-7.0.8.exe

apache-tomcat-7.0.8.exe ,和MyEclipse一起用非常稳定

2012-08-26

十天学会DIV+CSS(WEB标准

十天学会DIV+CSS(WEB标准),css样式表,加div布局,非常棒的一本书

2012-08-26

165个DIV_CSS网站模板源码.rar

165个DIV_CSS网站模板源码.rar,记得好评哦

2012-08-26

捕鱼达人源码

捕鱼达人源码,挺好玩的,如有不足敬请原谅

2012-08-25

java聊天室程序

java聊天室源码,是一个毕业设计,如有不足敬请原谅

2012-08-25

Microsoft_Web_Application_Stress_Tool

使用Microsoft_Web_Application_Stress_Tool对web进行压力测试

2012-08-25

汽车电子控制系统实例

汽车电子技术在汽车技术进步的过程中始终走在前列,汽油机电控喷射技术结合三元催化器、柴油机燃油喷射系统、自动变速器、智能可变气门正时和升程技术、混合动力技术等许多机、电、液紧密结合的技术使汽车和性能指标日益提高,特别是电子控制技术伴随着微电子工业的迅猛发展而迅速提高。

2012-08-25

CAN技术规范

这本技术规范的目的是为了在任何两个CAN仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性,CAN被细分为以下不同的层次

2012-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除