- 博客(11)
- 收藏
- 关注
原创 算法之旅总览
常用算法思想回溯法分治法(Divide and Conquer)怎么用?动态规划怎么用?常见动态规划的解决思路详细分析背包问题数据结构AVL树:解决BST可能导致的长链问题Binary Search Trees(BST)一种插入、查找后继节点耗时为 lglgu 的算法van Emde Boas Trees排序算法常见排序算法图算法广度优先搜索算法(Breath-...
2018-12-31 23:02:53 155
原创 工作中那些有用的工具
项目maven jar构建git上的后悔药视频编辑IMOVIE使用数据处理pandas处理文本的方便之处Linux命令Linux上的方便命令
2018-12-31 20:51:47 158
原创 Netty之旅总览
一篇文章入门NettyByteBuf详解ChannelHandler流程详解EventLoop流程详解Bootstrap使用详解ChannelHandler做测试数据格式转换与自带Channel工具Netty Hello world版启动源码分析...
2018-12-31 16:04:39 210
原创 TCP协议之旅总览
可靠性、协议格式、tcpDump可靠性、协议格式、tcpDump处理连接处理连接数据传输数据传输超时处理超时处理局限性与定时器局限性定时器
2018-12-31 12:27:55 132
原创 从wait的源码看撤销偏向锁的过程(revoke and rebias)
wait源码实现如下//TRAPS表示是否有异常void ObjectSynchronizer::wait(Handle obj, jlong millis, TRAPS) { if (UseBiasedLocking) { //如果是使用了偏向锁,要撤销偏向锁 BiasedLocking::revoke_and_rebias(obj, false, THREAD); ...
2018-12-18 00:06:46 1378
翻译 偏向锁状态转移原理
为什么需要偏向锁当多个处理器同时处理的时候,通常需要处理互斥的问题。一般的解决方式都会包含acquire和release这个两种操作,操作保证,一个线程在acquire执行之后,在它执行release之前,其它线程不能完成acquire操作。这个过程经常就涉及到锁。研究表明(L. Lamport A fast mutual execlusion algorithm),通过 fast locks...
2018-12-18 00:01:23 304
翻译 safe-point(safepoint 安全点) 和 safe-region(安全区域)
以 GC safe-point引入GC如何找到不可用的对象编写代码的时候是可以知道对象不可用的,但对于程序来说,需要一定的方式来知晓,可用方法比如:编译分析,引用计数,和对象是否可达可达性分析一个对象只要能够通过mutator触达,那么它就是“活”着的。如果Mutator栈的一个槽位包含了对象的引用,那么对象就是直接可触达。而从直接可达对象可触达的对象必定也是可达的,因而可达性分析,只...
2018-12-17 23:54:55 1956
原创 LockSupport中的park与unpark原理
LockSupport是用来创建locks的基本线程阻塞基元,比如AQS中实现线程挂起的方法,就是park,对应唤醒就是unpark。JDK中有使用的如下LockSupport提供的是一个许可,如果存在许可,线程在调用park的时候,会立马返回,此时许可也会被消费掉,如果没有许可,则会阻塞。调用unpark的时候,如果许可本身不可用,则会使得许可可用许可只有一个,不可累加park源码跟...
2018-12-17 23:54:13 36512 8
原创 CAS(compareAndSwap)原理
unsafe中对应拥有三个方法 compareAndSwapObject ,compareAndSwapInt和compareAndSwapLong ,他们都被标记为nativecompareAndSwapObject它的核心实现为oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e);实现核心如下inline oop oo...
2018-12-17 23:44:04 241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人