#原理

Java原子类实现原理分析

  在谈谈java中的volatile一文中,我们提到过并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,本章就一起来分析下原子类的实现机理。  我们知道,num++看似简单的一个操作,实际上是由1.读取2.加一3.写入三步组成的,这是个复合类的操作(所...

SSO 基于Cookie+fliter实现单点登录(SSO):工作原理

SSO的概念:      单点登录SSO(SingleSign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指訪问同一server不同应用中的受保护资源的同一用户,仅仅须要登录一次,即通过一个应用中的安全验证后,再訪问其它应用中的受保护资...

缓存的原理及优缺点

 原理:    先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。 如果缓存中没有要的数据,才去查询数据库,将得到数据先存放到缓存中,然后再返回给页面 缺点:    1、因为内存断电就清空数据,存放到内存中的数据可能丢失    &...
代码星球 ·2021-02-13

python中函数嵌套、函数作为变量以及闭包的原理

嵌套函数:python允许创建嵌套函数。也就是说我们可以在函数里面定义函数,而且现有的作用域和变量生存周期依旧不变。例子:#encoding=utf-8defouter():   name="python"   definner():#outer函数内部定义的...

js-关于异步原理的理解和总结

我们经常说JS是单线程的,比如Node.js研讨会上大家都说JS的特色之一是单线程的,这样使JS更简单明了,可是大家真的理解所谓JS的单线程机制吗?单线程时,基于事件的异步机制又该当如何,这些知识在《JavaScript权威指南》并没有介绍,我也一直困惑了,直到看到一篇外文,才有了些眉目,这里与大家分享下。翻译的过程中...

Spring工作原理及其作用

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。   2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.   3.DispatcherServ...

并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理

    与jdbc连接池类似,在创建线程池或销毁线程时,会消耗大量的系统资源,因此在java中提出了线程池的概念,预先创建好固定数量的线程,当有任务需要线程去执行时,不用再去新创建线程,而是从线程池中获取线程去执行任务,任务执行完成后将线程重新归还到线程池,这样的一个池就叫做线程池。第一:降低资源消耗。通过重复利用已创...

并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理

·  在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列。另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas算法来保证线程安全的,接下来就让我们来看一下jdk中两种队列的实现方式。  顾名思义,这是一个基于链表结构的队列,它是...

并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并分析了CountDownLatch工具类的使用方式和源码实现,接下来我们继续学习CyclicBarrier,Semaph...

并发编程学习笔记(9)----AQS的共享模式源码分析及CountDownLatch使用及原理

  前面已经说过了AQS的原理及独享模式的源码分析,今天就来学习共享模式下的AQS的几个接口的源码。  首先还是从顶级接口acquireShared()方法入手:publicfinalvoidacquireShared(intarg){if(tryAcquireShared(arg)<0)doAcquireSha...

并发编程学习笔记(6)----公平锁和ReentrantReadWriteLock使用及原理

(一)公平锁  1、什么是公平锁?  公平锁指的是在某个线程释放锁之后,等待的线程获取锁的策略是以请求获取锁的时间为标准的,即使先请求获取锁的线程先拿到锁。  2、在java中的实现?  在java的并发包中提供了ReentrantLock提供了重入锁并且也提供了公平锁(FairSync)和非公平锁(NonfairSy...

并发编程学习笔记(5)----AbstractQueuedSynchronizer(AQS)原理及使用

(一)什么是AQS?阅读java文档可以知道,AbstractQueuedSynchronizer是实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架,它是一个依靠单个原子 int 值来表示状态的大多数同步器的一个基础类。在jdk中他的实现的类有Semaph...

并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

(1)jdk中原子类的使用:jdk5中提供了很多原子类,它会使变量的操作变成原子性的。原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程干扰。jdk中的rt.jar中提供给了很多的原子性操作类。它们是位于java.util.concurrent.atomic包...

SpringCloud学习笔记(18)----Spring Cloud Netflix之服务网关Zuul原理

    Zuul提供了一个框架,可以对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通信,他们是通过一个RequestContext的静态类来进行数据传递的。RequetstContext类中的ThreadLocal变量来记录每个request所需要传递的数据。  它包含了对请求的路由和过滤两个功能,其中路...

SpringCloud学习笔记(12)----Spring Cloud Netflix之Hystrix断路器的流程和原理

      1、创建一个HystrixCommand或HystrixObservableCommand实例    第一步就是构建一个HystrixCommand或HystrixObservableCommand实例来向其他的组件发出操作请求,通过构造方法创建实例。    HystrixCommand:返回一个单响应  ...
首页上一页...678910...下一页尾页