春水上行
码龄8年
  • 580,614
    被访问
  • 120
    原创
  • 1,448,798
    排名
  • 1,105
    粉丝
  • 8
    铁粉
关注
提问 私信
  • 加入CSDN时间: 2014-10-31
博客简介:

春水上行的博客

博客描述:
我想让事情是它本来该有的样子
查看详细资料
  • 4
    领奖
    总分 696 当月 0
个人成就
  • 获得705次点赞
  • 内容获得115次评论
  • 获得1,914次收藏
创作历程
  • 1篇
    2021年
  • 3篇
    2020年
  • 24篇
    2019年
  • 52篇
    2017年
  • 40篇
    2016年
成就勋章
TA的专栏
  • CI/CD
    1篇
  • 数据结构和算法(JAVA)
    8篇
  • 工具代码积累
    1篇
  • java基础
    28篇
  • java web基础
    22篇
  • sqlserver数据库
    9篇
  • 数据结构
    7篇
  • javascript
    4篇
  • struts2
    4篇
  • Hibernate
    4篇
  • Spring
    3篇
  • SVN
    1篇
  • jQuery
    2篇
  • WebService
    1篇
  • Maven
    1篇
  • shiro
  • Mybatis
    1篇
  • SpringMVC
    1篇
  • lucene&solr
  • Redis
    5篇
  • Spring Boot
  • SpringCloud
    7篇
  • RabbitMQ
    4篇
  • JVM
  • 并发编程
    10篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Docker学习教程(一)

Docker基础知识什么是Docker ?Docker是基于Go语言实现的开源应用容器引擎,它可以让开发者打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。Docker诞生于2013年。Docker的理念是实现应用组件的一次封装,到处运行。这里的应用组件,可以是web应用,可以是数据库服务,甚至是一个操作系统和集群。基于Linux平台上的多项开源技术,Docker提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云
原创
发布博客 2021.08.16 ·
138 阅读 ·
2 点赞 ·
0 评论

深入JAVA并发编程(十):线程池(三)

ScheduledThreadPoolExecutorScheduledThreadPoolExecutor是可对任务进行延迟/周期性调度的执行器(Executor),这类Executor一般实现了ScheduledExecutorService这个接口。ScheduledExecutorService在普通执行器接口(ExecutorService)的基础上引入了Future模式,使得可以限时...
原创
发布博客 2020.01.15 ·
340 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(九):线程池(二)

ThreadPoolExecutor在上一篇中我们讲过通过Executors工厂,用户可以创建自己需要的线程池对象,并且好几个线程池底层都是使用了ThreadPoolExecutor实现,只是传入的参数不同ThreadPoolExecutor,它是J.U.C在JDK1.5时提供的一种实现了ExecutorService接口的执行器,或者说叫线程池。ThreadPoolExecutor并没有自己直...
原创
发布博客 2020.01.08 ·
398 阅读 ·
1 点赞 ·
0 评论

深入JAVA并发编程(八):线程池(一)

线程池合理的使用线程池能够为我们带来如下好处降低资源消耗:如果我们每次执行异步任务都去new一个线程来运行,那么线程的创建和销毁的开销则是难于预估的,而使用线程池就可以直接对线程复用来降低资源消耗。提高线程的可管理性:使用线程池可以进行统一分配、调优和监控。JDK已经为我们提供好了一套Executor框架,帮助我们来有效地进行线程控制。首先我们来看一下类图,这些类和接口均在JUC包中...
原创
发布博客 2020.01.03 ·
378 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(七):并发容器(三)

并发容器ConcurrentSkipListMap我们知道HashMap是一种键值对形式的数据存储容器,它内部的元素是无序的。但是JDK提供了TreeMap,TreeMap使用红黑树按照key的顺序(自然顺序、自定义顺序)来使得键值对有序存储,但是和HashMap同样是线程不安全的,因此在JAVA并发包中提供了ConcurrentSkipListMap容器,它能够保证在多线程环境下使键值对按照...
原创
发布博客 2019.12.19 ·
251 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(六):并发容器(二)

并发容器ConcurrentLinkedQueueConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,出队和入队操作使用CAS来实现线程安全。源码分析我们先来看一下链表的节点类 private static class Node<E> { //存储的数据 volatile E item; /...
原创
发布博客 2019.12.10 ·
243 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(五):并发容器(一)

原子操作类我们知道,当多线程同时对一个变量进行更新操作时,可能会出现线程安全性问题,通常我们可以使用synchronized、Lock来进行同步操作解决这个问题,但是这样程序性能会有所影响。JAVA1.5之后,JUC包中提供了一系列的原子操作类,提供了一种用法简单、性能高效、线程安全地更新变量的方式。原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下三个类Atomic...
原创
发布博客 2019.11.22 ·
269 阅读 ·
1 点赞 ·
0 评论

深入JAVA并发编程(四):原子操作类

JAVA中的锁CAS算法我们知道在使用锁的时候对性能会有影响,CAS(Compare And Swap 比较并交换)是一种有名的无锁算法,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization)。实现思想是这样的,CAS(V, A, B),V为需要读写内存地址的值、A为预期原值,B...
原创
发布博客 2019.11.06 ·
190 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(三):JAVA中的锁

JAVA中的锁Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,JAVA是靠synchronized关键字实现锁功能的,JDK5之后,并发包中新增了Lock接口及相关实现类用来实现锁功能,它提供了与synchronized关键字类似的同步功能,只是在使用时需要显式的获取和释放锁,它拥有了锁获取和释放的可操作性,可中断的...
原创
发布博客 2019.10.24 ·
217 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(二):JAVA内存模型

多线程并发编程线程安全性问题共享资源是指该资源被多个线程持有或者说多个线程都可以去访问该资源。线程安全问题是指当多个线程同时读写一个共享资源时并且没有任何同步措施时,导致出现脏数据获取其他不可预见结果的问题。当多个线程只是读取共享资源而不去修改的时候,是不会出现线程安全问题的。只有当至少一个线程修改共享资源时才会存在线程安全问题。举个例子例如计数器。有一个共享变量count,在t1时刻时A...
原创
发布博客 2019.09.18 ·
204 阅读 ·
1 点赞 ·
0 评论

NIO.2遍历目录删除指定日期前的文件

public class DeleteFileJob { public void deleteFile() { Path path= Paths.get("C://"); SimpleFileVisitor<Path> simpleFileVisitor = new SimpleFileVisitor<Path>() { ...
原创
发布博客 2019.09.03 ·
146 阅读 ·
0 点赞 ·
0 评论

深入JAVA并发编程(一):JAVA线程基础

并发编程持久化持久化可以提高RabbitMQ的可靠性,以防在异常情况(重启、宕机)下的数据丢失,RabbitMQ的持久化分为三个部分:交换器的持久化、队列的持久化和消息的持久化。交换器的持久化...
原创
发布博客 2019.08.30 ·
408 阅读 ·
6 点赞 ·
0 评论

消息中间件RabbitMQ(四):高级特性

RabbitMQ高级持久化持久化可以提高RabbitMQ的可靠性,以防在异常情况(重启、宕机)下的数据丢失,mandatory
原创
发布博客 2019.07.31 ·
286 阅读 ·
0 点赞 ·
0 评论

消息中间件RabbitMQ(三):进阶特性

RabbitMQ进阶mandatory和immediate我们在学习basicPublish方法中提到过这两个参数,但是没有讲解。这两个参数的功能是当消息传递过程中不可到达目的地时将消息返回给生产者的功能。mandatory当mandatory参数设为true时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者...
原创
发布博客 2019.07.11 ·
195 阅读 ·
0 点赞 ·
0 评论

消息中间件RabbitMQ(二):API使用详解

RabbitMQRabbitMQ详解RabbitMQ连接创建连接时需要给定IP地址、端口号、账号密码等参数。 ConnectionFactory connectionFactory=new ConnectionFactory(); connectionFactory.setHost("192.168.1.1"); //RabbitMQ服务端默认端口号为5672 co...
原创
发布博客 2019.07.09 ·
1461 阅读 ·
0 点赞 ·
0 评论

消息中间件RabbitMQ(一):基础概念与入门

RabbitMQRabbitMQ简介什么是消息中间件消息是指在应用间传递的数据,可以是字符串、JSON、对象等等。看一下百度百科的定义:消息队列中间件(Message Queue Middleware)是指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。目前开源的消息中间件比较主...
原创
发布博客 2019.07.02 ·
413 阅读 ·
1 点赞 ·
0 评论

Spring Cloud从入门到精通(七):配置中心 Spring Cloud Config

Spring Cloud Config分布式系统中,每个服务都有许多的配置文件,当服务越来越多的时候,配置文件的管理就是让人头疼的一件事,所以我们需要有统一管理配置文件的组件。而Spring Cloud Config是就为分布式系统提供集中化的外部配置支持,它分为服务端和客户端两个部分,服务端也被称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息等访问接口,...
原创
发布博客 2019.05.07 ·
235 阅读 ·
0 点赞 ·
0 评论

Spring Cloud从入门到精通(六):网关服务 Zuul

Zuul
原创
发布博客 2019.04.29 ·
365 阅读 ·
0 点赞 ·
0 评论

Spring Cloud从入门到精通(五):声明式服务调用 Feign

Feign我们前面的文章都是使用RestTemplate对依赖服务进行调用,而Feign采用了声明式API接口的风格,将服务调用过程变得更为简单。并且Feign还整合了Ribbon和Hystrix来简化我们的开发。入门案例我们的服务注册中心和服务提供者还使用前面的例子,我们先将其启动。服务注册中心:8001服务提供者开启两个实例:9998和9999.(1)先创建一个服务消费者的项目fe...
原创
发布博客 2019.04.23 ·
208 阅读 ·
0 点赞 ·
0 评论

Spring Cloud从入门到精通(四):熔断器 Hystrix

Hystrix在分布式系统中,各个服务之间会进行依赖调用,因为网络原因或者是服务本身出现故障,可能会导致调用失败或延迟,这就有可能造成调用方出现延迟的情况,造成线程阻塞。若此时调用方的请求不断增加,就会因为等待故障方响应形成任务积压,使得线程资源消耗殆尽,最后造成自身服务的瘫痪,并且有可能造成整个系统瘫痪,即雪崩效应。举个例子:例如在电商网站中,可能存在用户、订单、库存等很多服务。当用户创建订...
原创
发布博客 2019.04.19 ·
394 阅读 ·
1 点赞 ·
0 评论
加载更多