摘要:
HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环 阅读全文
摘要:
引入 服务器处理客户端请求,最直接的方式就是一对一即一个请求创建对应的线程或进程。(其中创建线程优于创建进程,线程的上下文切换较进程切换轻便,线程通信也要比进程通信简单)但这种方式是阻塞式的,也就是说若线程遇到无数据可读会阻塞当前线程,造成资源浪费。在高并发当道的今天,这种方式也是不可能的,不可 阅读全文
摘要:
自旋锁 CAS算法是乐观锁的一种实现,CAS算法中涉及到自旋锁,这里简述一下 CAS算法说明 CAS的单词Compare And Swap(比较并交换),一种知名的无锁算法。无锁编程,即不使用锁实现多线程间的变量同步,也是在线程没有被阻塞时实现变量同步,也叫非阻塞同步(Non-blocking 阅读全文
摘要:
悲观锁 总是假设最坏的情况,每次去拿数据都会认为别人会修改,所以每次拿数据的时候都会上锁。这样别人拿这个数据就会阻塞直到它拿到共享锁(共享锁每次只给一个线程使用,其他线程阻塞,用完后再把资源转让给其他线程)。传统的关系型数据库里边就用到了很多类似的锁机制,比如行锁,表锁等,读锁,写锁等,都是在操 阅读全文
摘要:
概述 对Java程序员来说,在自动内存管理机制的帮助下,不需要为每个new操作写配对的delete、free代码。但也是由于把权力给了Java虚拟机,一旦内存出现泄露和溢出的问题,若不了解虚拟机如何使用内存,那将成为艰难的工作。这里主要介绍运行时数据区、虚拟机对象、OOM异常。 运行数据区 阅读全文
摘要:
引言 这些分类并不全指锁的状态,有的指锁的特性,有的指锁的设计 公平锁 多个线程按照申请锁的顺序获取锁 非公平锁 多个线程不按照申请锁的顺序获取锁 有可能后申请的线程比先申请的优先获得锁。有可能造成优先级反转h或饥饿现象 对于Java ReentrantLock而言,通过构造函数指定 阅读全文
摘要:
概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 stream是什么? Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排 阅读全文
摘要:
代理 引入 总结梳理下代理相关的知识点,按照设计模式之代理模式、静态代理、动态代理的思路展开 代理模式 设计模式中的一种,某些情况下客户不想直接访问对象,进而借助中介帮忙完成某项任务,这个中介对象就是代理。 定义:某些原因需要给对象提供代理以控制对象的访问。访问对象不能直接引用目标,代理 阅读全文
摘要:
Stack、Heap 引入 堆和栈在平时开发中都在看不见的地方,但问题出的确是不少。在理解的时候总是有自相矛盾的点,借此梳理下相关的知识点。堆栈在不同领域有不同作用和解释,一下从编程和数据两个角度看看他们的特性。 编程 在编程语言环境中,内存的分配主要为:堆分配、栈分配、静态存储分配 栈分配 阅读全文