- 浏览: 361988 次
- 性别:
- 来自: 北京
最新评论
文章列表
转自:来吧 主流编程语言图谱+知识库都在这了
Java Web
Java EE
Java SE
Python
[置顶] 算法复杂度速查表(转)
- 博客分类:
- Algorithm
转自:每个程序员都应该收藏的算法复杂度速查表
数据结构思维导图
[置顶] 技术资料链接
- 博客分类:
- Java
LeeCode
http://www.cnblogs.com/grandyang/p/4606334.html
Promise语法
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
ECMAScript 6 标准入门
http://es6.ruanyifeng.com/
微服务架构
https://martinfowler.com/articles/microservices.html
ThoughtWorks技术雷达
ht ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443652
CAS
CAS算法是乐观锁的一种实现方式,CAS算法中又涉及到自旋锁。
CAS是英文单词Compare and Swap(比较并交换),是一种有名的无锁算法。无锁编程,即不使用锁的情况下 ...
偏向锁 / 轻量级锁 / 重量级锁
- 博客分类:
- Lock
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443647
锁的状态
无锁状态
偏向锁状态
轻量级锁状态
重量级锁状态
锁的状态是通过对象监视器在对象头中的字段来表明的。
为了提升性能,JDK1.6引入了偏向锁、轻量级 ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443641
分段锁
分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConcurrentHashMap而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。
并发容器类的加 ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443638
悲观锁
总是假设最坏的情况,每次拿数据的时候都认为别人会修改,每次拿数据都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,共享资源每次只给一个线程使用,其他线程阻塞,用完后才把资源转让给其他线程。
比如:
RDBMS中的行锁、表锁等都是在操作之前先上锁
Java中synchronized和ReentrantLock等读占锁就是悲观锁思想的实现
乐观锁
总是假设最好的情况,每次拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没 ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443637
互斥锁
在访问共享资源之前进行加锁操作,在访问完成之后进行解锁操作。加锁后,任何其他试图再次加锁的线程会被阻塞,直到当前线程解锁。如果解锁时有一个以上的线程阻塞,那么所有该锁上的线程都会变成就绪状态,第一个变为就绪状态的线程又执行加锁操作,那么其他的线程又会进入等待。在这种方式下,只有一个线程能够访问被互斥锁保护的资源。举个形象的例子:多个人抢一个马桶
读写锁
读写锁既是互斥锁,又是共享锁,read模式是共享,write模式是互斥(排他锁),参考JUC包下的ReadWr ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443635
独享锁:该锁每一次只能被一个线程所持有,参考synchronized以及JUC包下的ReentrantLock
共享锁:该锁可被多个线程共有,典型的就是ReentrantReadWriteLock里的读锁,它的读锁是可以被共享的,但是它的写锁每次只能被读占,读锁的共享可保证并发读是非常高效的,但是读写和写写,写读都是互斥的,参考JUC包下的ReentrantReadWriteLock
独享锁和共享锁都是通过AQS队列来实现的,通过实现不同的方法,来实现独享或者共享。
...
可重入锁/不可重入锁
- 博客分类:
- Lock
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443634
可重入锁
可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提是同一个对象或者类)
Note:
ReentrantLock和synchronized都是可重入锁
public class TestLock {
public synchronized void test1() throws InterruptedException {
Thread.sleep(1000);
System. ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443633
公平锁
公平锁是指多个线程按照申请锁的顺序来获取锁
非公平锁
非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁;有可能会造成优先级反转或者线程饥饿现象。非公平锁的优点是吞吐量比公平锁大。
ReentrantLock
ReentrantLock可以通过构造函数指定该锁是否是公平锁,默认是非公平锁。
Synchronized
Synchronized是一种非公平锁,并不像ReentrantLock是通过AQS ...
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443538
线程安全队列类图
两者的区别在于
ConcurrentLinkedQueue基于CAS的无锁技术,不需要在每个操作时使用锁,所以扩展性表现要更加优异,在常见的多线程访问场景,一般可以提供较高吞吐量。
LinkedBlockingQueue内部则是基于锁,并提供了BlockingQueue的等待性方法。
BlockingQueue基本都是基于锁实现,比如典型的LinkedBlockingQueue
有界队列和无界队列
ArrayBlockingQueue是 ...
MyBatis工作流程
- 博客分类:
- ORM
Reference
https://www.cnblogs.com/wuzhenzhao/p/11103017.html
https://blog.csdn.net/u010890358/article/details/80665753
服务发现
- 博客分类:
- MicroService
Reference: https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/
原创转载请注明出处:https://agilestyle.iteye.com/blog/2443360
OSI参考模型与TCP/IP参考模型与TCP/IP协议栈
TCP/IP分层模型
5层参考模型 — 综合了OSI和TCP/IP的优点
5层参考模型的数据封装与解封装
应用层:报文
传输层:报文段
网络层:IP数据报、分组 路由器
数据链路层:帧 网桥、交换机
物理层:比特流 中继器、集线器