- 博客(36)
- 收藏
- 关注
转载 eureka 服务实例实现快速下线快速感知快速刷新配置解析
SpirngEureka默认配置解读默认的Spring Eureka服务器,服务提供者和服务调用者配置不够灵敏,总是服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了,但是服务调用方很长时间还是调用不到,发现不了这个服务。Spring Eureka 默认配置下:描述如下:EurekaServer默认有两个缓存,一个是R...
2019-01-15 16:47:00
463
转载 Http请求优化
Http请求优化我们在做项目开发或多或少的都会使用SpringCloud,其中做远程调度的时候会将HTTP请求Http请求优化。HTTP请求Client存在很多种。JDK原生的URLConnection发送HTTP请求,没有连接池,是对每一个地址保持一个长连接,利用HTTP的persistenceconnection。这样极大的影响系统的并发性能。我们可以采用替换方案...
2018-12-13 16:11:00
319
转载 基于Redis的分布式锁安全性分析-转
基于Redis的分布式锁到底安全吗(上)?2017-02-11网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多。实际上,大概在一年以前,关于Redis分布式锁的...
2018-12-06 11:30:00
128
转载 7.RabbitMQ--消息确认机制(confirm)
RabbitMQ--消息确认机制(confirm)Confirm模式RabbitMQ为了解决生成者不知道消息是否真正到达broker这个问题,采用通过AMQP协议层面为我们提供了事务机制方案,但是采用事务机制实现会降低RabbitMQ的消息吞吐量,那么有没有更加高效的解决方式呢?答案是采用Confirm模式。producer端confirm模式的实现原理生产者将信道设...
2018-11-29 17:37:00
218
转载 6.RabbitMQ--事物
RabbitMQ之消息确认机制如何防止消息丢失?如何防止消息是否正确送达?有些业务场景需要我们对于消息的幂等性要求是比较高的,需要消息不能丢失,在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话...
2018-11-29 17:14:00
116
转载 5.rabbitmq--通配符模式Topics
rabbitmq--通配符模式Topicstopic模式也称为主题模式,其实他相对于routing模式最大的好处就是他多了一种匹配模式的路由,怎么理解匹配呢,其实就相当于我们之前正则的.*这种,不过他的匹配机制可能不是这种(其实除了匹配规则外,他的作用就和routing模式一样),而他的工作流程图如下:OK! 先说一下他的匹配规则:绑定键binding key也必须是这...
2018-11-29 15:15:00
163
转载 4.rabbitmq--路由模式
rabbitmq--路由模式想象之前的订阅发布模式: 一个生产者,多个消费者,每一个消费者都有自己的一个队列,生产者没有将消息直接发送到队列,而是发送到了交换机,每个队列绑定交换机,生产者发送的消息经过交换机,到达队列,实现一个消息被多个消费者获取的目的。需要注意的是,如果将消息发送到一个没有队列绑定的exchange上面,那么该消息将会丢失,这是因为在rabbitMQ中exch...
2018-11-28 19:26:00
116
转载 3.rabbitmq--发布订阅模式
rabbitmq-----发布订阅模式模型组成一个消费者Producer,一个交换机Exchange,多个消息队列Queue,多个消费者Consumer一个生产者,多个消费者,每一个消费者都有自己的一个队列,生产者没有将消息直接发送到队列,而是发送到了交换机,每个队列绑定交换机,生产者发送的消息经过交换机,到达队列,实现一个消息被多个消费者获取的目的。需要注意的是,如果将消...
2018-11-28 19:07:00
130
转载 2.RabbitMq-持久化
RabbitMq-消息持久化问题:怎样保证消息不因生产者gg而丢失我们知道了如何在消费者的角度保证消息不丢失,但如果生产者gg了呢,消息同样会丢失,生产者gg后会默认丢弃所有的消息,除非告诉它某些消息是不能丢失的。解决策略:消息持久化使用消息持久化,将消息保存到磁盘上,而不是内存中,即使生产者gg了,后面还可以通过读取磁盘来进行恢复。要实现消息持久化,我们需要做两件事:从qu...
2018-11-28 17:59:00
150
转载 1.RabbitMq - Work 模式
RabbitMq- Work模式一、什么是Work模式 如果有几个消息都需要处理,且每个消息的处理时间很长,仅有一个消费者,那么当它在处理一个消息的时候,其他消息就只有等待。等待有时候是好的,但在程序中并不那么好,当队列中有多个消息待处理,将其分发给多个消费者,当一个消费者在处理的时候,有其他消费者继续消费队列中的消息,便缓解了等待的尴尬。那么这篇文章将实现一个生产...
2018-11-28 16:34:00
230
转载 一致性Hash 分析和实现
一致性Hash 分析和实现---title: 1.一致性Hashdate: 2018-02-05 12:03:22categories:- 一致性Hash---一下分析来源于网络总结:算法参照自己实现,共参考和指正。一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot ...
2018-11-22 18:15:00
145
转载 18.并发编程--锁-介绍
并发编程--锁-介绍LOCKReentrantLockConditionReentrantReadWriteLock1. LOCK(计时器)介绍从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。既然都可以通过synchronized来实现同步访问了,那么为什么还需要...
2018-11-20 16:03:00
112
转载 并发编程--Concurrent-工具类介绍
并发编程--Concurrent-工具类介绍并发编程--Concurrent-工具类介绍CountDownLatch CylicBarrier Semaphore Condition 对象监视器下个篇幅引入Callable 不单独说明 Demo中会使用 Future Java 5 添加了一个新的包到 Java 平台,java.util.conc...
2018-11-20 15:42:00
250
转载 17.并发编程--线程池
并发编程线程池合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必...
2018-11-20 15:31:00
75
转载 15.并发编程--多线程设计模式 - 生产者-消费者模式
并发编程--多线程设计模式 - 生产者-消费者模式1. 生产者-消费者模式生产者和消费者也是一个非常经典的多线程模式,我们在实际中开发应用非常广泛的思想理念。在生产-消费模式中:通常由两类线程,即若干个生产者和若干个消费者的线程。生产者负责提交用户数据,消费者负责具体处理生产者提交的任务,在生产者和消费者之间通过共享内存缓存区进行通信。示例:下面示例为Future...
2018-11-20 15:23:00
366
转载 14.多线程设计模式 - Master-Worker模式
多线程设计模式 - Master-Worker模式并发设计模式属于设计优化的一部分,它对于一些常用的多线程结构的总结和抽象。与串行相比并行程序结构通常较为复杂,因此合理的使用并行模式在多线程并发中更具有意义。1. Master-Worker模式- Master-Worker模式是常用的并行模式。它的核心思想是系统由两类进程协作工作:Master进程和Worker进程。M...
2018-11-20 15:21:00
232
转载 13.多线程设计模式 - Future模式
多线程设计模式 - Future模式并发设计模式属于设计优化的一部分,它对于一些常用的多线程结构的总结和抽象。与串行相比并行程序结构通常较为复杂,因此合理的使用并行模式在多线程并发中更具有意义。1. FutureFuture模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。这类似我们日常生活中的在线购物流程,带在购物网看着一件商品时可以提交表单,...
2018-11-20 15:20:00
197
转载 12.并发编程--Queue
并发编程--QueueQueue- 非阻塞队列- 阻塞队列 Queue是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素...
2018-11-20 15:13:00
90
转载 11.并发编程--同步类容器和并发类容器
并发编程--同步类容器和并发类容器同步类容器:- Vector- HashTable并发类容器- ConcurrentMap- CopyOnWrite同步类容器:* 同步类容器 都是线程安全的,但是在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历容器中所有元素),跳转(根据指定的顺序找到当前元素的下一个元素...
2018-11-20 15:03:00
95
转载 10.并发编程--单例模式(饥饿模式-懒汉模式)
并发编程--单例模式(饥饿模式-懒汉模式)1. 单例模式:- 最常见的单例模式:饥饿模式-懒汉模式;1. 饥饿模式:直接实例化对象;2. 懒汉模式:调用方法时进行实例化对象。- 还有一种经典做法:在多线程模式中,一般选择如下几种单例模式:1. dubble check instance:2. static inner class:示例:Si...
2018-11-20 14:55:00
258
转载 9.并发编程--ThreadLocal
并发编程--ThreadLocal1. ThreadLocal : * 线程局部变量,是一种多个线程间并发访问变量的解决方案。 * 与其使用synchronized等加锁的方式,ThreadLocal完成不提供锁,而是用空间换时间的手段,为每个线程提供变量的独立副本,以保证线程安全; * 从性能上来说:ThreadLocal不具有绝对的优势,在并发并...
2018-11-20 14:52:00
120
转载 8.并发编程--多线程通信-wait-notify-模拟Queue
并发编程--多线程通信-wait-notify-模拟Queue1. BlockingQueue 顾名思义,首先是一个队列,其次支持阻塞的机制;阻塞放入和获取队列中的数据。 如何实现这样一个队列: 要实现比如LinkedBlockQueue 下面两个简单的方法 put和take put(Object obj):把一个Object放入到BlockingQue...
2018-11-20 14:49:00
416
转载 7.并发编程--多线程通信-wait-notify
并发编程--多线程通信-wait-notify多线程通信:线程通信的目的是为了能够让线程之间相互发送信号;1. 多线程通信:线程通信的目的是为了能够让线程之间相互发送信号。另外,线程通信还能够使得线程等待其它线程的信号,比如,线程B可以等待线程A的信号,这个信号可以是线程A已经处理完成的信号;Object提供了三个方法wait(), notify(), notifyAll()...
2018-11-20 14:46:00
396
转载 6.并发编程--volatile
并发编程--volatilevolatile-说明volatile关键字的作用是变量在多个线程可见;volatile 关键字是非原子性的要是实现原子性操作,建议使用atomic类的系列对象:支持原子性操作(注意atomic类只保证本身方法的原子性,并不保证多次操作的原子性)1. volatile :volatile关键字的作用是变量在多个线程可见;...
2018-11-20 13:45:00
94
转载 5.并发编程-synchronized 细节说明
并发编程-synchronized 细节说明1. synchronized-锁重入 & 异常释放锁 说明 * 关键字synchronized 拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象的锁后,再次请求此对象时可以再次得到该对象的锁;2. synchronized-代码块 说明 * 使用synchroni...
2018-11-20 13:38:00
112
转载 4.并发编程-“公平锁”的获取锁机制 细节说明
并发编程-“公平锁”的获取锁机制 细节说明---title: 并发编程-“公平锁”的获取锁机制 细节说明date: 2018-07-05 09:06:57categories: - 并发编程---<Excerpt in index | 首页摘要><!-- more -->- 本章对本文的公平锁指的是互斥锁的公平锁进行基本介绍,内容包括:- 基本概念-...
2018-11-20 13:26:00
184
转载 3.并发编程-ReentrantLock 细节说明
并发编程-ReentrantLock 细节说明---title: 并发编程-ReentrantLock 细节说明date: 2018-07-05 09:06:57categories: - 并发编程---<Excerpt in index | 首页摘要><!-- more -->- 本章对ReentrantLock包进行基本介绍,这一章主要对Reent...
2018-11-20 13:20:00
98
转载 2.并发编程--线程基础
---title: 并发编程--线程基础date: 2018-07-05 09:12:57categories: - 并发编程---<Excerpt in index | 首页摘要><!-- more --><The rest of contents | 余下全文>并发编程--线程基础1. 当多个线程访问某一个类(对象或方法)时:这个类始终...
2018-11-20 12:31:00
80
转载 1.0-并发编程-进程和线程简介
进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量...
2018-11-20 10:15:00
72
转载 ehcache memcache redis 区别
之前用过redis 和memcache,没有ehcache 的开发经验,最近也查阅不少文档和博客,写一些总结,也有不少内容总结与诸多博客中的博主总结:EhcacheEhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider,所以被用于大型复杂分布式web application的各个节点中。Ehcache是...
2017-03-15 10:44:00
114
转载 SSH整合缓存之-Memcached作为hibernate的二级缓存
Hibernate本身不提供二级缓存,所以需要使用第三方插件来作为二级缓存;本次使用memcached作为Hiberbate的二级缓存:添加步骤如下:一、需要安装memcached服务端1. 下载memcached的windows稳定版,(本次测试使用下载memcachedhttp://www.newasp.net/soft/63735.html)2. 在CMD下进...
2016-10-12 09:42:00
112
转载 spring事务管理
spring事务管理6.1、spring的事务管理器Spring框架并没有直接管理用户的应用系统中的事务,它只是提供许多供用户选择的事务管理器,然后将事务管理的责任委托给与此事务管理器对应的持久化技术的事务实现。事务管理实现使用时机org.springframework.jdbc.datasource....
2016-09-21 16:13:00
57
转载 通过Servlet生成验证码图片
原文出自:http://www.cnblogs.com/xdp-gacl/p/3798190.html一、BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下:创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.response.study; 2 import ...
2016-09-12 17:54:00
80
转载 HttpServletResponse对象介绍
一、HttpServletResponse对象介绍 HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。查看HttpServletResponse的API,可以看到这些相关的方法。1.1、负责向客户端(浏览器)发送数据的相关方法 1.2、负责向客户端(浏览器)发送响应头的相关方法 ...
2016-09-12 17:48:00
165
转载 Servlet 学习简介
一、Servlet简介 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一...
2016-09-12 14:24:00
52
转载 SQL_Join 小总结
原文出自 :http://www.nowamagic.net/librarys/veda/detail/936对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被...
2016-09-12 09:24:00
87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人