朝花夕拾

A Development Engineer, a Life Liver, a Hope Holder

IO总结

### 什么时IO,IO都有哪几种类型 IO:IO(input and output).其实就是一次数据访问交互过程,客户端请求读取/写入数据的完整过程。 一次IO一般要经历几个状态。1. 检查数据是否ready。2. 将已经ready的数据copy到用户空间。 我们经常接触到几个IO概念,BIO, NIO, AIO。他们到底是什么?他们的使用场景是什么? IO的分类大体上可以从两大方面看 1. ...

轨迹点范围召回

### 实际场景 假如我们开发了一款APP,用户数量很大,APP定时会采集上报海量的轨迹点。这时,如果我们需要查询给定经纬度POI指定范围的用户信息列表。这就可以用到本文的范围查找了。 ### 技术难点 1. 轨迹点是海量数据 2. 用户的轨迹点实时更新 ### 解决方案 #### 方案一: 1. 使用geohash算法将地球切分为若干块(当然,对于国内大部分APP场景来说,只对中国进行切分就可以...

锁·可重入锁

#### 锁 每一个java对象都有一个监视器,通过监视器,当有线程获进入到对象的特殊区域时,其他线程就不可以继续进入这个区域。其他线程会进入一个等待区,当特殊区域的线程消费完毕,等待线程中的某个线程可以进入特殊区域。 一个简单的锁demo ```java //定义锁对象 class Lock{ //是否锁定标识 private boolean isLocked = false; public s...

锁·可重入锁

#### 锁 每一个java对象都有一个监视器,通过监视器,当有线程获进入到对象的特殊区域时,其他线程就不可以继续进入这个区域。其他线程会进入一个等待区,当特殊区域的线程消费完毕,等待线程中的某个线程可以进入特殊区域。 一个简单的锁demo ```java //定义锁对象 class Lock{ //是否锁定标识 private boolean isLocked = false; public s...

分布式事务

### 应用场景 随着业务的增长,单个数据库已经无法完成业务需求。需要对业务进行拆分。不同的业务逻辑可能操作不同的数据库。这时,系统中的某些操作与其他操作有依赖关系。为了保证数据操作的业务完整性,我们要求某些操作与其关联系统要么全部操作成功,要么全部操作失败。这就要求我们要在整个系统层面实现事务控制。 ### 分布式事务的常用解决方案 #### 二阶段提交算法 > 在分布式系统中,虽然单独节点可以...

使用github+jeklly搭建博客过程记录

##准备工作 1. 申请git账号,新建一个git仓库,仓库的名称命名格式为: 账号名称.github.io 比如,我的账号是xinyuan6009,那么我的仓库名称为: xinyuan6009.github.io 2. 本地安装jekll,安装教程请大家自行搜索。安装好jekll后,执行 ```shell jekll blog ``` 就会生成jekll-base的博客工程结构 3. 将生成的b...

Hello World

this is my First Blog! Jekyll also offers powerful support for code snippets:...

jvm调优

### 内存模型 ![](/assets/_images/14876337473845/14876338622934.jpg) 从上图可知,jvm堆内存分为年轻代和老年代两大部分;年轻代又可分为eden区,form区和to区。 ### 垃圾回收机制 1. 新对象new出来时,都在eden区。当eden区不够时,触发minor GC 2. minor GC释放eden区可以被释放的对象,并将不能释放...
1