catalinaLi的博客

Whereas I was blind, now I see.

应对大并发

高并发是我们现在老生常谈的内容了,这里我们以秒杀为例,来聊聊怎么应对大并发。 一、秒杀带来的问题 在高并发秒杀的情况下,一般会有以下问题: 1、高并发 比较火热的秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。 2、超卖 任何商品都会有数量上限,如何避免成功下订...

2019-04-02 10:43:33

阅读数 22

评论数 0

(转载)JAVA并发编程(八):并发容器(CopyOnWriteArrayList)

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机...

2019-01-09 11:08:11

阅读数 38

评论数 0

JAVA并发编程(七):并发容器(ConcurrentHashMap)

我们上节讲了HashMap,实际上HashMap并不是线程安全的,在并发插入元素的时候有可能出现环形链表,让下一次读操作出现死循环。解决的办法就是使用线程安全的容器,除了Collections提供的synchronizedMap同步容器外,实际上我们还可以选择性能更好的juc提供的同步容器...

2018-10-23 10:33:49

阅读数 59

评论数 0

深入理解HashMap

HashMap是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。今天我们来深入了解一下这个集合的底层原理。 众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键...

2018-10-19 09:52:54

阅读数 90

评论数 0

Java设计模式之单例模式的究极版写法

单例模式可能是后端学习者接触到的第一种设计模式,可是单例模式真的有那么简单吗?在并发模式下会出现什么样的问题?在学习了前面的并发知识后,我们来看看究极版的单例模式应该怎么写。 一、单例模式第一版 我们最初接触到的单例模式一般就是懒汉模式与饿汉模式。我们先来看看怎么写: /...

2018-10-11 09:39:21

阅读数 47

评论数 0

解析Vue.js的MVVM模式

近年来前端一个明显的开发趋势就是架构从传统的 MVC 模式向 MVVM 模式迁移。在传统的 MVC 下,当前前端和后端发生数据交互后会刷新整个页面,从而导致比较差的用户体验。因此我们通过 Ajax 的方式和网关 REST API 作通讯,异步的刷新页面的某个区块,来优化和提升体验。...

2018-08-31 11:48:20

阅读数 541

评论数 0

(转载)Java设计模式之代理模式

设计模式是语言的表达方式,它能让语言轻便而富有内涵、易读却功能强大。代理模式在Java中十分常见,有为扩展某些类的功能而使用静态代理,也有如Spring实现AOP而使用动态代理,更有RPC实现中使用的调用端调用的代理服务。代理模型除了是一种设计模式之外,它更是一种思维,所以探讨并深...

2018-08-29 11:31:05

阅读数 43

评论数 0

JAVA并发编程(六):线程本地变量ThreadLocal与TransmittableThreadLocal

我们知道有时候一个对象的共享变量会被多个线程所访问,这时就会有线程安全问题。当然我们可以使用synchorinized 关键字来为此变量加锁,进行同步处理。从而限制只能有一个线程来使用此变量,但是加锁会大大影响程序执行效率,此外我们还可以使用ThreadLocal来解决对某一个变量...

2018-08-28 09:50:36

阅读数 1575

评论数 1

JAVA并发编程(五):创建线程的第三种方式:实现Callable接口

众所周知创建线程的方式有两种:1.继承Thread类。2.实现Runnable接口。从jdk1.5开始,提供了另一种创建线程的方式。今天我们就来看看这第三种方式:实现Callable接口 一、Callable与Runnable 我们直接来看一个使用Calla...

2018-08-27 11:00:00

阅读数 127

评论数 0

(转载)JAVA并发编程(四):线程池的使用

如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的...

2018-08-27 10:59:23

阅读数 42

评论数 0

JAVA并发编程(三):同步的辅助类之闭锁(CountDownLatch)与循环屏障(CyclicBarrier)

jdk1.5的concurrent包为我们提供了很多有用的辅助类,今天我们来学习一下 一、闭锁CountDownLatch CountDownLatch是一个同步工具类,用来协调多个线程之间的同步。它的作用是,在完成某些运算时,只有其他所有线程的运算全部完成...

2018-08-25 13:59:40

阅读数 54

评论数 0

JAVA并发编程(二):理解CAS机制

也许大家已经听说过,锁分两种,一个叫悲观锁,一种称之为乐观锁。Synchronized就是悲观锁的一种,也称之为独占锁,加了synchronized关键字的代码基本上就只能以单线程的形式去执行了,它会导致其他需要该资源的线程挂起,直到前面的线程执行完毕释放所资源。而另外一种乐观锁是...

2018-08-19 14:14:50

阅读数 73

评论数 0

JAVA并发编程(一):理解volatile关键字

Java中volatile这个热门的关键字,在面试中经常会被提及,在各种技术交流群中也经常被讨论:volatile关键字在java多线程中有着比较重要作用,volatile主要作用是可以保持变量在多线程中是实时可见的,是java中提供的最轻量的同步机制。 一、JA...

2018-08-15 10:16:56

阅读数 67

评论数 0

小白学SpringCloud(六):服务降级(Hystrix)

在微服务架构中,我们将系统拆分为很多个服务,各个服务之间通过注册与订阅的方式相互依赖,由于各个服务都是在各自的进程中运行,就有可能由于网络原因或者服务自身的问题导致调用故障或延迟,随着服务的积压,可能会导致服务崩溃。为了解决这一系列的问题,断路器等一系列服务保护机制出现了。 ...

2018-08-06 09:48:13

阅读数 1505

评论数 2

小白学SpringCloud(五):路由网关(Zuul)

在微服务的架构下,各个服务一般会有各自的网络地址,在这样的情况下外部客户端的调用可能会形成杂乱无章的局面。这时候我们就可以使用微服务网关Zuul这个组件,我们让所有的客户端请求全部请求Zuul,再由Zuul统一的去请求各个服务。 一、Zuul简介 Zuul是...

2018-07-10 18:24:54

阅读数 609

评论数 0

小白学SpringCloud(四):消息总线(Spring Cloud Bus)

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。上篇我们有说到Spring Cloud为我们提供了在不重启项目的情况下切换配置的功能,就要用到它,让我们来看看怎么实现的吧。 ...

2018-07-02 14:59:13

阅读数 1322

评论数 0

小白学SpringCloud(三):统一配置中心(config)

在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成。如果我们每个服务都有一个独立的配置的话,这样很不方便我们维护。Spring Cloud中为我们提供了一个config组件为我们解决了这个问题,并且更改了配置并不需要我们重启。 ...

2018-06-15 15:51:39

阅读数 304

评论数 0

小白学SpringCloud(二):服务间的调用

SpringCloud服务间的调用有两种方式:RestTemplate和FeignClient。不管是什么方式,他都是通过REST接口调用服务的http接口,参数和结果默认都是通过jackson序列化和反序列化。 一、Ribbon简介 在说这两种方式...

2018-06-05 10:15:11

阅读数 3115

评论数 0

小白学SpringCloud(一):服务的注册与发现(Eureka)

一、引言 首先我们先引用Dubbo官网的一段话 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一...

2018-06-01 10:28:57

阅读数 601

评论数 0

如何在同一台电脑上使用github和gitlab

换了工作后使用的是gitlab,这样对github的使用会有影响。为了解决这个问题,搜了很多资料后完美解决。现在把它记录下来。 前言 在同一台电脑上使用github和gitlab,主要的思想就是使用不同的仓库时,切换成不同的账号。不同账号的sshKe...

2018-04-27 10:15:05

阅读数 629

评论数 0

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