自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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&amp

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高级特性与最佳实践》

JVM是JRE的核心组成部分,虽然java程序员不需要知道也可以进行开发工作,但要想成为高级java程序员,jvm应该是必不可少的了解对象。

2019-02-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除