- 博客(6)
- 收藏
- 关注
原创 【重回基础】设计模式:你真的懂单例模式吗?
目录文章目录目录一、前言二、 相关知识三、实现方式1. 饿汉2. 懒汉3. 静态内部类4. 枚举四、防止单例破坏处理方法反射反序列化参考一、前言单例模式是我们大部分人接触的第一个设计模式,因此网上的分享泛滥,良莠不齐,甚至出现不少错误。因为比较简单,所以没有自行研究学习,只是从网上的分享中吸收。前不久与同事的交流中发现与自己的认知有些出入,因此回顾了一下,也便有了此文。学习任何东西都离不开...
2019-08-29 16:09:31 209
原创 【重回基础】序列化、序列化攻击与序列化代理
文章目录一、what、why、how 序列化二、JDK 序列化并不简单三、序列化攻击四、序列化代理模式参考一、what、why、how 序列化**什么是序列化?**简单讲就是将对象按照序列化协议编码成字节流,相反的过程就称为反序列化。譬如我们常见的JSON序列化:public class A { private int x = 1; private String y = "2...
2019-08-23 17:28:16 333
原创 【重回基础】理解CPU Cache及缓存一致性MESI
文章目录一、前言二、为何需要CPU Cache三、L1、L2 、L3 Cache 三级缓存结构四、Cache Line:与内存数据交换的最小单位五、MEIS:缓存一致性5.1 底层操作5.2 MESI 协议参考一、前言原打算重新学习一下 volatile 的实现原理,其中涉及到指令调度重排和数据可见性保证,这两者的理解离不开对 CPU Cache的掌握,因此,先重温一下CPU Cache,便有...
2019-06-29 16:19:01 854
原创 【重回基础】线程池框架与核心源码解读
一、前言文章目录一、前言二、 源码剖析2.1 worker 结构体2.2 runWorker:worker 工作主循环2.3 getTask() :worker 获取任务方法2.4 processWorkerExit:worker 工作结束处理方法2.5 addWorker:创建worker线程二、 源码剖析2.1 worker 结构体Worker 本身实现了 Runnable 接口, ...
2019-06-13 16:47:59 156
原创 【搬砖笔记】 利用GeoHash为地理位置编码——实现篇
【搬砖笔记】 利用GeoHash为地理位置编码——实现篇一、前言本篇介绍采用Java实现GeoHash算法,理论介绍见【搬砖笔记】 利用GeoHash为地理位置编码——理论篇。若有任何错误或建议,望不吝赐教,不胜感激。二、 实现先罗列下实现的功能:将经纬度转换为二进制编码,见 getBinary函数。将二进制编码转换为base32编码,见getBase32函数。(通用法)根据二进...
2019-05-29 00:47:58 663
原创 【搬砖笔记】 利用GeoHash为地理位置编码——理论篇
一、前言最近有个需求,要计算出客户坐标附近5公里的所有门店,并按照步行距离排序。最直接的方法就是遍历该城市下的所有门店,但是该方法明显不可取,因为在门店数量巨大,且还需要计算步行距离并排序的情况下,时间复杂度过高。突然想到当年做图像遇见一个问题:给定一个视频中连续的三千帧,但是已经乱序,告诉你第一帧,将这三千帧进行排序。遍历图像的所有像素点同样不可取,当时的解决方案是利用感知哈希计算出所有图...
2019-05-12 21:45:42 690
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人