- 博客(17)
- 收藏
- 关注
原创 Es区域查找底层原理vsRedis Geo区域查找的实现区别
为什么要用GeoHash一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。思想:如果能通过某种方法将二维的点数据转换成一维的数据,那样不就可以继续使
2021-08-06 15:36:26
1636
1
原创 如何使用redis bitmap计算签到数和日活数
什么是BitMapBitMap,即位图,其实也就是 byte 数组,用二进制表示,只有 0 和 1 两个数字。大小首先占多少大小是根据里面bit偏移量而来。那么有个小问题,一个bitmap能存多少位。 实际上, redis只支持5种数据类型. 并没有bitmap. 也就是bitmap是基于redis的字符串类型的. 而一个字符串类型最多存储512M.8 bit = 1byte1024 byte = 1kb1024 kb = 1Mb8bit = 1b(字节) = 0.001kb其次:我们
2021-06-08 20:15:24
1123
原创 RocketMq剖析及实战
问题抛出RocketMq原理如何实现幂等Mq基本介绍使用场景应用解耦比如一个订单系统下单操作,需要支付系统和库存系统,物流系统配合。我们就可以用mq当中间件发送消息。单单一个系统挂了,不影响后面。系统恢复后,再次消费mq中信息即可。将同步调用改为异步。流量削峰出于经济考虑,短时间内有可能出现流量高峰。没必要为了那一点时间,从硬件上提升服务器之类。可以用到mq。把流量平分开。数据分发不用关心。谁要数据谁不要数据。mq当数据存储,谁想要就和mq建立连接。如章节更新。哪个服务想要,哪个服
2021-06-08 15:25:59
272
1
原创 Java线程池相关
问题抛出线程池7大参数分别是什么?描述一下线程池的工作原理?线程如何回收?如何合理的配置线程数?线程池是如何保证线程不被中断的?线程池创建使用线程池的好处减低资源消耗。通过重复利用已创建好的线程来降低线程创建和销毁造成的消耗;提高响应速度。当任务到达时,任务可以不需要等待线程创建就能立马执行;提高线程可管理性。线程池时稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。Java线程池七大参数public Thread
2021-06-02 11:12:20
116
转载 Juc中常用工具CountDownLatch、CyclicBarrier、Semaphore剖析,及使用场景
Juc中常用工具CountDownLatch、CyclicBarrier、Semaphore剖析,及使用场景CountDownLatch使用场景场景1 让多个线程等待:模拟并发,让并发线程一起执行场景2 让单个线程等待:多个线程(任务)完成后,进行汇总合并原理CyclicBarrier用例用例一用例二原理CyclicBarrier与CountDownLatch的区别Semaphore常用方法示例原理CountDownLatch使用场景源码中如下:它是一个同步工具类,允许一个或多个线程一直等待,直到其他
2021-05-31 18:55:00
150
原创 Java CAS底层实现原理和延伸思考
问题抛出CAS底层实现原理高并发情况下存在ABA问题以及如何解决JAVA内存模型ABA变化延伸思考和synchronized,lock的区别,以及synchronized锁优化的过程高并发环境下用cas还是synchronized这是个坑synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程
2021-05-31 13:57:42
295
原创 ConCurrentHashMap源码分析
内部结构一个 ConcurrentHashMap 维护一个 Segment 数组,一个 Segment 维护一个HashEntry 数组。JDK 1.7实现原理其中 Segment 继承于 ReentrantLock。使用分段锁技术。将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。能给实现真正的并发访问。Segment 继承了 ReentrantLock,表明每个 segment 都可以当做一个锁。这样对每个 seg
2021-05-28 14:40:40
59
原创 HashMap源码分析
HashMap原理我们都清楚HashMap中,采用数组+链表的方式来实现对数据的储存。HashMap采⽤Entry数组来存储key-value对,每⼀个键值对组成了⼀个Entry实体,Entry类实际上是⼀个单向的链表结 构,它具有Next指针,可以连接下⼀个Entry实体。 只是在JDK1.8中,链表⻓度⼤于8的时候,链表会转成红⿊树!...
2021-05-27 23:40:46
82
原创 ThreadLocal的使用及内存泄漏剖析
文章目录前言一、什么是ThreadLocal二、内部实现1.set方法2.引用结构图及内存泄漏原因总结前言一、什么是ThreadLocal变量值的共享可以使用public static的形式,所有线程都使用同一个变量,如果想实现每一个线程都有自己的共享变量该如何实现呢,就会用到ThreadLocal。Threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据。ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一
2020-10-28 19:02:09
103
原创 Linux常用指令总结
文件查看cat :由第一行开始显示文件内容常用指令:cat [filename] :一般查看文件cat -n [filename] :显示文件内容的行数 查看文件cat -b [filename] :不对空行编号 查看文件cat -E [filename]:区分每行结束部分 每行结尾处显示$符号more : 一页一页地显示文件内容...
2020-07-21 17:38:12
71
原创 Spring Cloud 2天速学学习记录
对象复制 Product product = productService.findById(id); Product result = new Product(); BeanUtils.copyProperties(product,result);进程睡眠 TimeUnit.SECONDS.sleep(1);创建Eure...
2019-01-08 10:49:02
268
原创 使用Mybatis遇到问题总结
Controller映射不到请求今天在写代码的过程中,写好了一个controller。结果404。影射不到请求。原因如下:@Controller@RequestMapping("/mod/info") //这里可以省略valuepublic class UcModInfoController { @Autowired UcModInfoService ucModInfoS...
2018-12-25 17:03:19
296
原创 Oracle和Mysql实现分页
Oracle分页可以通过下面两种方式select * from ( select t.*, rownum RN from TABLE_NAME t ) where RN > 0 and RN <= 15`select * from ( select t.*, rownum RN from TABLE_NAME t ) where RN between 1 and 15...
2018-12-25 14:35:05
1061
原创 使用PL/SQL导出数据和设置定时任务
使用PL/SQL导出数据和设置定时任务导出表结构和数据选中需要导出的表2.邮件导出数据。选中SQL插入并且。勾选上创建表(否则没有建表sql)。并且在创面创建一个空白的sql文件...
2018-12-18 16:08:06
2239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人