首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
黑漏
掘友等级
后端 java
进击的程序猿
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
18
文章 18
沸点 0
赞
18
返回
|
搜索文章
最新
热门
并发编程之ThreadLocal 解读
ThreadLocal实例的弱引用对象会作为key存放在ThreadLocalMap中,然后set方法加入的值就作为ThreadLocalMap中的value。它提供了线程本地变量,可以保证访问到的变量属于当前线程。 通过Thread.currentThread()方法获取了当…
并发编程之AQS剖析
AQS全称是AbstractQueuedSynchronizer,即抽象同步队列。下面看一下AQS的类图结构: 在AQS中维持了一个volatile修饰的单一共享状态state,来实现同步器同步。其更新采用乐观锁思想的CAS算法。 CLH(Craig, Landin, and …
并发编程之上下文切换
CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。 上下文切换过高,会导致CPU像个搬运工,频繁在寄存器和…
源码系列-ConcurrentHashMap源码
JDK1.8 的实现摒弃了Segment的概念,直接用Node数组 + 链表 + 红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作
源码系列-HashMap源码解读(JDK1.8)
首先看一下Map家族四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap。 下面我们主要解读HashMap,结合源码,从存储结构、常用方法分析、扩容以及安全性等方面深入解读HashMap的工作原理。 引入了红黑树是因为它查找、插…
HashMap与ConcurrentHashMap你不得不知道的几个点
| 底层结构 | 1. JDK1.8之前:数组+链表 2. JDK1.8:数组+链表/红黑树 | 扰动函数 | 1. JDK1.8之前扰动处理 = 9次扰动 = 4次位运算 + 5次异或运算 2. JDK1.8扰动处理 = 2次扰动 = 1次位运算 + 1次异或运算 | | 插…
前后端分离 , 如何保证接口安全性 ?
将要提交的数据,通过某种方式组合成一个字符串,然后通过 MD5 算法生成一个签名。如果觉得单纯的 MD5 不够安全的话,还可以在 MD5 的时候加盐和加 hash 。 在参数中加上当前请求的时间戳,服务端拿到这个请求后会拿当前的时间和请求中的时间做比较,比如在 5 分钟之内的才…
并发编程之LockSupport
LockSupport提供的park/unpark是以线程的角度来设计,真正解耦了线程之间的同步。 park()方法,对当前线程执行阻塞操作,直到获取到可用许可后才解除阻塞,也就相当于当前线程进入阻塞状态。 parkNanos(long)方法,对当前线程执行阻塞操作,等待获取到…
并发编程之死锁、活锁、锁饥饿
死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。 请求与保持条件:一个线程(进程)因请求被占用…
Redis专题-底层数据结构
常数复杂度获取字符串长度。 杜绝缓冲区溢出。C字符串不记录自身长度容易造成缓冲区溢出,SDS修改时,API会自动将SDS的空间扩展至执行修改所需的大小,然后才执行实际的修改操作。 减少修改字符串时带来的内存重分配次数。SDS采用空间预分配(增长操作)和惰性释放(缩短操作) 二进…
下一页
个人成就
文章被点赞
155
文章被阅读
343,443
掘力值
4,061
关注了
2
关注者
46
收藏集
0
关注标签
14
加入于
2021-03-17