首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
PatrickLin
掘友等级
Java工程师
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
7
文章 7
沸点 0
赞
7
返回
|
搜索文章
赞
文章( 7 )
沸点( 0 )
Netty(三) 什么是 TCP 拆、粘包?如何解决?
记得前段时间我们生产上的一个网关出现了故障。 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信。 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议。 问题是有天突然发现网关解析报文出错,查看了客户端的发送日志也没发现问题,最后通过日志发现…
Redis bitmaps
前面的文章介绍了Redis的五种最常用的对象及其底层的数据结构。这篇文章主要介绍一下一个不那么常用,却非常适用于一些特殊场景的对象:bitmaps。 这些需求可以使用数据库来实现,使用一些日志表,再通过SQL查询出来。但这样会浪费大量的磁盘空间,而且性能还很低。在数据量比较大的…
【重回基础】序列化、序列化攻击与序列化代理
**什么是序列化?**简单讲就是将对象按照序列化协议编码成字节流,相反的过程就称为反序列化。譬如我们常见的JSON序列化: **为什么需要序列化?**简单讲就是在对象进行传输、存储时压缩空间,并且做到语言无关。通讯双方只需按照约定的序列化协议进行序列化/反序列化,而无需关注对方…
【重回基础】理解CPU Cache及缓存一致性MESI
原打算重新学习一下 volatile 的实现原理,其中涉及到指令调度重排和数据可见性保证,这两者的理解离不开对 CPU Cache的掌握,因此,先重温一下CPU Cache,便有了本文。 CPU的发展呈现出摩尔定律(近期越来越多的声音觉得结束了),发展速度迅猛,每18-24个月…
【重回基础】线程池框架与核心源码解读
Executor 接口:只是简单定义了任务提交execute方法,该任务可能执行于新建线程,也可能是调用线程。 ExecutorService 接口:主要是定义线程池的生命周期管理方法(如shutdown、shutdownNow等),和返回Future 的可供追溯的任务提交方法…
【搬砖笔记】 利用GeoHash为地理位置编码——实现篇
兄弟篇:【搬砖笔记】 利用GeoHash为地理位置编码——理论篇。 本篇介绍采用Java实现GeoHash算法,若有任何错误或建议,望不吝赐教,不胜感激。 将经纬度转换为二进制编码,见 getBinary函数。 将二进制编码转换为base32编码,见getBase32函数。 (…
【搬砖笔记】 利用GeoHash为地理位置编码——理论篇
最近有个需求,要计算出客户坐标附近5公里的所有门店,并按照步行距离排序。 最直接的方法就是遍历该城市下的所有门店,但是该方法明显不可取,因为在门店数量巨大,且还需要计算步行距离并排序的情况下,时间复杂度过高。 突然想到当年做图像遇见一个问题:给定一个视频中连续的三千帧,但是已经…
个人成就
文章被点赞
34
文章被阅读
12,826
掘力值
306
关注了
11
关注者
9
收藏集
0
关注标签
8
加入于
2019-05-05