- 博客(15)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 数据结构-总览
技术的发展从来不是为了发展而发展,都是由于出现了某些问题,为了解决这个问题,从而推动了技术的发展为了解决外部存储的读写跟不上cpu的速度,推动了多级存储的发展为了解决上层编程的复杂性,对汇编语言的封装,推动了C、C++、java等语言的发展为了解决上层编程的便捷性,对编程语言的定义增加了基础数据结构的定义,如队列、列表、键值对等。
2023-09-18 11:47:43
27
原创 布隆过滤器
大数据量的存储、筛选、重排等背景下产生的优秀算法。在大数据量下,应用程序,会出现很多空间,时间的问题。常用的思想就是:将每条数据通过一定的算法转变成占存更小的ID(指纹),通过对指纹的存储和计算来对整个数据量级的减少。(合理的运用容器,指纹之间也可以通过分段的方式共用相同的存储块)布隆过滤器的的着重点是过滤,不关心具体的业务内容。适用场景:计算一个url在一个url集(大数据量)中是否存在爬虫...
2019-08-30 11:53:02
105
转载 多线程学习-Synchronized及其实现原理
作用区域:类 方法 代码块可重入原理同步方法package com.paddx.test.concurrent;public class SynchronizedDemo { public void method() { synchronized (this) { System.out.println("Method 1 start"...
2019-03-13 13:23:37
177
转载 多线程学习-基础了解
基础了解cpu以时间片配合调度策略来“并发”执行多个线程(Thread)。java的Thread控制是基于c(c++)实现线程之间的通信机制。为什么要有这个通信机制1.有时候我们需要多个线程按照一定的顺序执行一个任务,cpu线程调度是随机的,需要线程之间通过通信方式来自行限制约定。2.多线程同事操作一个公共资源,可能会发生缓存和内存的数据不一致性,造成很多错误和损失。有了通信机制,那就...
2019-03-13 11:08:29
137
原创 从36进制相加认识java的进制机制
36进制的简单实现,也可以扩展成36以下进制。也可以利用java自带API精简代码 public static void main(String[] args) { StringBuilder sb = new StringBuilder(); String num_a = "zz"; String num_b = "2&
2019-03-04 14:33:40
1192
转载 Redis系统学习-原理
redis为什么快1.单线程-没有cpu上下文切换的开销。2.所有数据都在内存中,所有的运算都是内存级别的。(cpu频率一致)3.采用多路复用的方式,处理多并发客户端连接。IO模型和java的NIO一样*http://www.importnew.com/22623.htmlhttps://blog.csdn.net/u011381576/article/details/7987675...
2019-02-25 16:46:45
208
翻译 Redis系统学习-其他应用
Redis很多应用都有其他更有的选择,统一放一起。HyperLogLogHyperLogLog 提供不精确的去重计数方案,虽然不精确但是也不是非常不精确,标准误差是 0.81%。老钱在《Redis深度历险:核心原理和应用实践》,用网站的uv来举例,但是我们日常项目中,除非小公司,一般的公司都会有BI部门,使用大数据(hbase hive nova)那一套专门处理pv,uv等数据,毕竟现在市场...
2019-02-20 17:25:44
153
翻译 Redis系统学习-应用-位图
概念了解我们日常开发过程中,要尽量简化业务模型,使用最少的内存,描述事物,程序就是通过各种数据的操作、传输,来模拟现实生活中的人与人之间的操作。从而简化生活,提升工作效率,品质。比如某个签到活动,每周一开始,周末晚结算这周签到的天数来发送奖励。这种具有过期性的数据,并且只有个住居简单,只有个状态位,可采用redis的位图来解决。位图是基于String上的运用,我们可以使用普通的 get/se...
2019-02-20 16:47:54
217
翻译 Redis系统学习-List
概念了解Redis 的列表相当于 Java 语言里面的 LinkedList(底层是不一样的,数据量少的话是ziplist(数据紧挨着,数据量大的了改成quicklist(ziplist 使用双向指针串起来使用))),注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n)。当列表弹出了最后一个元素之后,该数据结构自动...
2019-02-20 15:48:18
66
翻译 Redis系统学习-Hash
概念理解Redis 的字典相当于 Java 语言里面的 HashMap,它是无序字典。内部实现结构上同 Java 的 HashMap 也是一致的,同样的数组 + 链表二维结构。第一维 hash 的数组位置碰撞时,就会将碰撞的元素使用链表串接起来。不同的是,Redis 的字典的值只能是字符串,另外它们 rehash 的方式不一样,因为 Java 的 HashMap 在字典很大时,rehash 是...
2019-02-20 15:48:06
118
翻译 Redis系统学习-set&&zset
SET概念了解Set和java的Set一致,key唯一常用命令set把他当java的set用就好了,就一个特性,key唯一,中奖一次校验?ZSET概念了解它类似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部...
2019-02-20 15:48:00
118
翻译 Redis系统学习-String
概念了解Redis的String相当于java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,从而提升效率。(当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M。)Redis 所有的数据结构都是以唯一的 key 字符串作为名称。常用命令单keyset key value//插入...
2019-02-20 15:47:51
116
翻译 Redis系统学习-应用-分布式锁
为什么要分布式锁企业应用都是集群的,多线程操作同一资源,单应用下,只需要synchronized即可,但是集群下,就不能简单synchronized,因为synchronized持有的是当前jvm下的对象锁。而集群多jvm无法互相锁定的,这个时候就需要一个局外人,第三方公平的持有一个锁,集群中每个应用都去到他那拿锁,拿到了才会执行资源操作。涉及到的命令我们在String中学习到了一个命令:...
2019-02-20 15:47:42
87
翻译 Redis系统学习-应用-队列
此处可分为,消息队列 和 延时队列消息队列项目中经常用到消息机制,MQ和kafka都很成熟了,所以某些专门的消息处理还是交给他们。https://blog.csdn.net/qq_35873847/article/details/78737796但是项目中有的只需要自己发自己收,实现异步处理,Redis也可以实现。基于List,当成队列使用。此处有个问题,队列空了就会出现,无效的查询,...
2019-02-20 15:47:34
96
翻译 Redis系统学习-前序
为什么要学Redis很重要。因为很强大,很多公司都会用,所以要学。基础概念作为一个缓存工具,需要自成一个世界,这个世界需要有基于“真实世界(OS)”的基本结构元素,及这个世界对外展示、元素传输的“空间虫洞(API)”这个世界怎么产生的,需要人为安装,百度。这个世界的基本构造元素:string (字符串)list (列表)set (集合)hash (哈希)zset (有序集合)...
2019-02-20 15:47:19
91
《深入理解Java虚拟机:JVM高级特性与最佳实践》
2019-02-20
基于飞书开放平台开发,未知返回,求告知
2023-10-25
carbondata多线程执行单表segment合并时并发相关的问题?
2021-06-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人