玩一玩单调栈 发表于 2017-12-31 | 分类于 算法 单调栈2017年最后一篇博客,本来想取个引人入胜的题目,奈何文学修饰功力不够,还是算了吧。不废话了,本篇博客介绍了一种数据结构—单调栈,这个数据结构看似简单,用起来却有很大的能量。 阅读全文 »
ThreadLocal源码分析 发表于 2017-12-24 | 分类于 JavaSE ThreadLocal的使用从ThreadLocal的名字可以知道,这是一个所属线程的局部变量。打个比方,ThreadLocal类就是一个存放数据的容器,容器里存储的是每个线程的私有数据。也就是说,只有当前线程可以访问,当然就是线程安全的了。按照惯例,先来一个ThreadLocal的”Hello World”示例: 阅读全文 »
股票中的动态规划 发表于 2017-12-16 | 分类于 算法 前言之前在刷leetcode的时候,遇到过一些有关股票售卖获利的问题,觉得挺有意思的,于是便写一篇博客来总结一下这类问题的解法,顺便复习一下动态规划。这些有关股票的问题有很多变种,其核心的问题是:给定每天的股票价格,怎么操作才能取得最大的获利? 阅读全文 »
回调机制 发表于 2017-12-09 | 分类于 JavaSE 回调回调,英文是Callback。为了更好的理解,我们将callback拆开,也就是“回拨电话”的意思。那我们就用打电话为例子来说明一下回调到底是怎么运行的: 阅读全文 »
动态代理 发表于 2017-12-07 | 分类于 JavaSE 动态代理相比于静态代理,动态代理可以避免编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象实例。 阅读全文 »
代理模式 发表于 2017-11-30 | 分类于 设计模式 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。 现实生活中就有很多代理模式的影子:假设你是一个公司的工程师,能提供一些技术服务,还有一个公司的客服,他不懂技术,而我是公司的客户,需要你们公司提供技术服务。显然,我不会直接去找你,我只会去和客服沟通。这是客服会根据情况来决定找不找你提供技术服务,当然客服也可以提供一些额外的服务。 阅读全文 »
关于SubString的解决方案 发表于 2017-11-28 | 分类于 算法 前言对于大多数关于子字符串的问题,我们要解决的问题很多都可以概括为给定一个字符串,要求我们在这个给定的字符串中找到满足某些条件的子字符串。 对于上述的问题,在此我们提供一种求解的思路:利用HashMap来统计每种字符的个数加上由2个整形指针构成的滑动窗口来解决。 阅读全文 »