-
Redis 是什么?redis 的应用场景有哪些?
Redis 是什么?
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。
它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志和半径查询的地理空间索引。
中文官网
Redis 使用场景
分布式锁
Redis 分布式锁设计
计数器(string)
如知乎每个问题的被浏览器次数
set key 0
in...
2019-01-14 10:29:09 |
Cache
-
java 浅拷贝,深度拷贝与属性复制
问题
日常工作中,我们希望复制一个对象A的属性到对象B,且保证二者的变化不会互相影响。
直接赋值,肯定是无法满足的。
深度拷贝与浅拷贝
概念
浅复制(浅克隆)
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。
换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
深复制(深克隆)
被复制对象的所有变量都含有与原来的对象相同...
2019-01-09 15:13:13 |
Java
-
Java Thread 小结
基础知识
java thread
使用线程的目的
用多线程只有一个目的,就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。
多线程,并行与并发
很多人都对其中的一些概念不够明确,如同步、...
2019-01-09 00:44:18 |
Java
-
Greenplum Database-02-sharing nothing/everything/disk/memory 分布式数据库
业务背景
当今世界是一个信息化的世界,我们的生活中无论是生活、工作、学习都离不开信息系统的支撑。
而信息系统的背后用于保存和处理最终结果的地方就是数据库。因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问题,则意味着整个应用系统也会面临挑战,从而带来严重的损失和后果。
如今“大数据”这个词已经变得非常流行,虽然这个概念如何落地不得而知。但可以确定的是,随着物联网、移动应用的兴起...
2019-01-09 00:44:18 |
Database
-
Greenplum Database Greenplum 数据库 分布式数据库
greenplum
Experience Greenplum Database , an open-source massively parallel data platform for analytics, machine learning and AI.
greenplum 与 postgresql
greenplum是利用了 postgresql 数据库的框架,也就相当于说是,G...
2019-01-09 00:44:18 |
Database
-
算法之最大值、最小值
问题
求一个随机数组的最大值和最小值。
排序
可以首先对数据排序,然后获取。
本文暂时不考虑排序的情况,前提是数组乱序。
常见方式
遍历
最简单的就是直接遍历数组。
如何从n个数里找到最大值与最小值?
很容易想到,用一个循环找到最大值和最小值,就能搞定。
(int, int) find_max_min(int arr[n]){
int max = -infinit...
2019-01-07 11:29:47 |
Althgorim
-
message 顺序性如何保证?
问题
很多业务都需要考虑消息投递的顺序性:
单聊消息投递,保证发送方发送顺序与接收方展现顺序一致
群聊消息投递,保证所有接收方展现顺序一致
充值支付消息,保证同一个用户发起的请求在服务端执行序列一致
消息顺序性是分布式系统架构设计中非常难的问题,有什么常见优化实践呢?
折衷一:以客户端或者服务端的时序为准
不管什么情况,都需要一个标尺来衡量时序的先后顺序,可以根据业务场景,以客...
2019-01-07 11:29:47 |
Distributed
-
redis 分布式锁设计 redis lock RedLock
RedLock
在redis的官网上,可以很方便的查到一个分布式锁的实现:RedLock。
那就先简单说下,redis作者antirez对于分布式锁是如何设计的吧。
基于单redis节点的锁
首先,获取锁采用类似下面的命令:
SET resource_name my_random_value NX PX 30000
这条命令尝试去获取一个资源的锁,这里的锁过期时间是30000毫...
2019-01-07 11:29:47 |
Distributed