alpha 的博客

何晓东 的博客 | alpha blog

数据结构中数组和链表的区别

数据结构中数组和链表的区别

数组 和 链表 之间的主要区别在于它们的结构。数组是基于索引的数据结构,其中每个元素与索引相关联。另一方面,链表 依赖于引用,其中每个节点由数据和对前一个和下一个元素的引用组成。 数组是数据结构,包含类似类型数据元素的集合,而链表被视为非基元数据结构,包含称为节点的无序链接元素的集合。 在数组中元素属于索引,即,如果要进入第四个元素,则必须在方括号内写入变量名称及其索引或位置。但...

利用 GEO 实现查看附近功能的几个方案

利用 GEO 实现查看附近功能的几个方案

查看附近:此功能需要注意的是,经纬度坐标的密度不一样 (地球是一个椭圆),勾股定律计算平方差时之后再求和时,需要按一定的系数比加权求和,如果不求精确的话,也可以不必加权。 MySQL 直接存储经纬度 适合场景:数据较少,例如查看全国的xx奢侈品店,这些数据加起来也不一定会有十万条,所以可以忽略考虑性能。直接使用数据库存储经度,纬度,然后sql查询就可以的,为了满足高性能的矩形区域算...

Redis info的信息解释及注意点

Redis info的信息解释及注意点

这里展示效果好 Info是获取单机信息的命令,主要是9 块的信息,也可以单独使用 info server 这样的命令来获取部分信息,一下为 info (all) 的结果: Server(服务器信息) redis_version:3.0.0                             #redis服务器版本 redis_git_sha1:00000000        ...

Redis 布隆过滤器的使用及注意事项

Redis 布隆过滤器的使用及注意事项

应用场景:新闻推荐中的去重,垃圾邮件地址的过滤,危险域名的过滤,URL爬虫去重等 在这些情况下,一般会想到解决方案:服务器记录了用户看过的所有历史纪录,推荐系统每次都从用户的历史纪录内筛选已经看过的记录,但用户量很大并且每个用户看过的新闻又很多时,推荐系统的去重功能在性能上不一定能跟的上。并且如果历史记录保存在关系数据库中,去重就要频繁的对数据库进行exists查询,当并发量上来时,数据库...

Redis 持久化选项,原理及运维

Redis 持久化选项,原理及运维

Redis提供了两种持久化选项,分别是RDB和AOF。 默认情况下60秒刷新到 disk 一次[save 60 10000 当有1w条keys数据被改变时],Redis 的数据集保存在叫 dump.rdb 一个二进制文件,这种策略被称为快照。 也可以手动调用Save或BGSAVE命令的: /usr/local/bin/redis-cli-h 127.0.0.1 -p 6379 -a pw...

Redis 获取大 key 的几种方式

Redis 获取大 key 的几种方式

Redis在遇到数据量暴增或者业务没处理好的时候,会产生很多大的hash,set,这样的对象对 Redis 的集群数据迁移带来了很大的问题,因为在集群环境下,如果某个 key 太大,会数据导致迁移卡顿。另外在内存分配上,如果一个 key 太大,那么当它需要扩容时,会一次性申请更大的一块内存,这也会导致卡顿。如果这个大 key 被删除,内存会一次性回收,卡顿现象会再一次产生。如果你观察到red...

Office 文档在线预览的几种方案

Office 文档在线预览的几种方案

需求是office文档的在线预览,同时尽量保护版权,然后发现了几种成熟的方案: office 在线预览服务 微软官方提供的服务,预览和编辑效果是最好的,当然微软支持自己搭建这个环境 例如链接:https://view.officeapps.live.com/op/view.aspx?src=http%3A%2F%2Fvideo.ch9.ms%2Fbuild%2F2011%2Fslides...

守护 Redis 安全的几个策略

守护 Redis 安全的几个策略

Redis常规安全模式 Redis 被设计成仅有可信环境下的可信用户才可以访问。这意味着将 Redis 实例直接暴露在网络上或者让不可信用户可以直接访问 Redi s的 tcp 端口或 Unix 套接字,是不安全的。 正常情况下,使用Redis的web应用程序是将Redis作为数据库,缓存,消息系统,网站的前端用户将会查询Redis来生成页面,或者执行所请求的操作,或者被web应用程序用...

Redis PubSub 消息定义与发布模式

Redis PubSub 消息定义与发布模式

Redis的PubSub 模式即: 基于事件的系统中,Pub/Sub 是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者。 消息发布者,即 publish 客户端,无需独占链接,你可以在 publish 消息的...

使用 Redis HyperLogLog 统计 UV 数据

使用 Redis HyperLogLog 统计 UV 数据

大概使用场景是统计几个活动页面的单独和总UV数量,可以偏差0-1.5% 实现逻辑:前端对于登陆或者未登录用户生成一个唯一ID,例如可以是 md5(ip+user-agent) + hashcode, 同时也能区分一个路由器下的多个设备,UV 的生存时间根据需求来确定,一般情况下是到 24 小时过期,有些是活动结束己过期。多数方案会将这写唯一 ID 存到 redis set 中,这会...