ArtiPub

Redis 的过期策略都有哪些?

我怕爱的太早我们不能终老 提交于 2020-08-11 10:28:39
面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧? 啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个 G 的内存,但是可以有几个 T 的硬盘空间。redis 主要是基于内存来进行高性能、高并发的读写操作的。 那既然内存是有限的,比如 redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?当然是干掉不常用的数据,保留常用的数据了。 数据明明过期了,怎么还占用着内存? 这是由 redis 的过期策略来决定。 面试题剖析 redis 过期策略 redis 过期策略是: 定期删除+惰性删除 。 所谓 定期删除 ,指的是 redis 默认是每隔 100ms

分布式服务接口的幂等性如何设计?

早过忘川 提交于 2020-08-11 06:05:41
面试题 分布式服务接口的幂等性如何设计(比如不能重复扣款)? 面试官心理分析 从这个问题开始,面试官就已经进入了 实际的生产问题 的面试了。 一个分布式系统中的某个接口,该如何保证幂等性?这个事儿其实是你做分布式系统的时候必须要考虑的一个生产环境的技术问题。啥意思呢? 你看,假如你有个服务提供一些接口供外部调用,这个服务部署在了 5 台机器上,接着有个接口就是 付款接口 。然后人家用户在前端上操作的时候,不知道为啥,总之就是一个订单 不小心发起了两次支付请求 ,然后这俩请求分散在了这个服务部署的不同的机器上,好了,结果一个订单扣款扣两次。 或者是订单系统调用支付系统进行支付,结果不小心因为 网络超时 了,然后订单系统走了前面我们看到的那个重试机制,咔嚓给你重试了一把,好,支付系统收到一个支付请求两次,而且因为负载均衡算法落在了不同的机器上,尴尬了。。。 所以你肯定得知道这事儿,否则你做出来的分布式系统恐怕容易埋坑。 面试题剖析 这个不是技术问题,这个没有通用的一个方法,这个应该 结合业务 来保证幂等性。 所谓 幂等性 ,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款、不能多插入一条数据、不能将统计值多加了 1。这就是幂等性。 其实保证幂等性主要是三点: 对于每个请求必须有一个唯一的标识,举个栗子:订单支付请求,肯定得包含订单 id,一个订单 id

Redis 和 Memcached 有什么区别?

爷,独闯天下 提交于 2020-08-08 03:59:31
面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个 单线程工作模型 ,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道? 还有可能面试官会问问你 redis 和 memcached 的区别,但是 memcached 是早些年各大互联网公司常用的缓存方案,但是现在近几年基本都是 redis,没什么公司用 memcached 了。 面试题剖析 redis 和 memcached 有啥区别? redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有 更多的数据结构 ,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。 redis 原生支持集群模式 在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。 性能对比 由于 redis 只使用 单核 ,而 memcached 可以使用 多核 ,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中

如何基于 Dubbo 进行服务治理?

我怕爱的太早我们不能终老 提交于 2020-07-24 21:48:36
面试题 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如果问你,其实就是看看你有没有 服务治理 的思想,因为这个是做过复杂微服务的人肯定会遇到的一个问题。 服务降级 ,这个是涉及到复杂分布式系统中必备的一个话题,因为分布式系统互相来回调用,任何一个系统故障了,你不降级,直接就全盘崩溃?那就太坑爹了吧。 失败重试 ,分布式系统中网络请求如此频繁,要是因为网络问题不小心失败了一次,是不是要重试? 超时重试 ,跟上面一样,如果不小心网络慢一点,超时了,如何重试? 面试题剖析 服务治理 1. 调用链路自动生成 一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧, 分布式系统由大量的服务组成 。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。 那就需要基于 dubbo 做的分布式系统中,对各个服务之间的调用自动记录下来,然后自动将 各个服务之间的依赖关系和调用链路生成出来 ,做成一张图,显示出来,大家才可以看到对吧。 2. 服务访问压力以及时长统计 需要自动统计 各个接口和服务之间的调用次数以及访问延时 ,而且要分成两个级别。 一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50/TP90/TP99,三个档次的请求延时分别是多少;

4月4日网站变灰实录

被刻印的时光 ゝ 提交于 2020-04-06 11:20:31
4月4日网站变灰记录 基本都是通过 grayscale 来实现的 都不支持 IE 11 但在 IE 11 的情况下表现却各不相同 B站、A站、淘宝、京东、百度、虎扑、开源中国 B 站 html.gray{-webkit-filter:grayscale(.95)} A站 html .gray { -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); filter: grayscale(100%); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grey; filter: gray; } 有多浏览器前缀考虑 实际上无法用 ie11 打开网站 不过和 B 站一样,去除无关内容,值得称赞 淘宝 html{-webkit-filter: grayscale(100%); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);} 京东 /* 一段控制灰色失效的 JS 代码 */ $html.toggleClass(

Npm install 加速

十年热恋 提交于 2020-03-26 20:22:53
3 月,跳不动了?>>> 使用更快的镜像 使用更快的registry镜像。方法很多主要分为三类: 别名法 alias cnpm="npm --registry=https://registry.npm.taobao.org 配置文件法 npm config set registry https://registry.npm.taobao.org 直接用第三方的npm npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install 提示: 可以使用一些小工具进行切换,例如nrv $npm install -g nrm $nrm ls * npm ----- https://registry.npmjs.org/ cnpm ---- http://r.cnpmjs.org/ taobao -- https://registry.npm.taobao.org/ nj ------ https://registry.nodejitsu.com/ rednpm -- http://registry.mirror.cqupt.edu.cn skimdb -- https://skimdb.npmjs.com/registry $nrm use taobao 使用本地缓存的npm镜像。 潜在的问题 1

markdown、word、pdf文件之间相互转换

女生的网名这么多〃 提交于 2020-03-26 10:17:37
3 月,跳不动了?>>> 现实需求 平常会用markdown去写一些文档,这可以说是程序员的 最爱,但是在实际工作过程中与产品、需求人员以及客户交流更多还是使用word以及pdf等官方文档,直至发现了 Pandoc,它可以将文档在 Markdown、LaTeX、reStructuredText、HTML、Word docx 等多种标记格式之间相互转换,并支持输出 PDF、EPUB、HTML 幻灯片等多种格式。该程序被称为格式转换界的 “瑞士军刀”。 功能介绍 Pandoc 的作者是 John MacFarlane,他是加州大学伯克利分校的哲学系教授。Pandoc 使用 Haskell 语言编写,被作者用来生成讲义、课件和网站等。该程序开源免费,目前以 GPL 协议托管在 Github 网站上。 安装Pandoc 可以直接访问pandoc的官网 https://www.pandoc.org/installing.html ,由于我本地使用的mac系统所以直接找到对应mac版本,然后执行 brew install pandoc brew install pandoc-citeproc 使用文档转换 打开终端直接执行如下命令,如将word转为markdown文档,其他例旧即可,这里注意pandoc不能转换doc格式的需要docx格式的 pandoc project.docx -o

IDEA撸码插件利器

南笙酒味 提交于 2020-03-25 20:13:54
3 月,跳不动了?>>> 这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 1、JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能确实很强大。算是开发必备神器了。热部署快捷键是control+F9/command+F9。 2、.ignore git提交时过滤掉不需要提交的文件,很方便,有些本地文件是不需要提交到Git上的。 3、CamelCase 将不是驼峰格式的名称,快速转成驼峰格式,安装好后,选中要修改的名称,按快捷键shift+alt+u。 4、Lombok plugin 开发神器,可以简化你的实体类,让你i不再写get/set方法,还能快速的实现builder模式,以及链式调用方法,总之就是为了简化实体类而生的插件。 5、Mybatis plugin 可以在mapper接口中和mapper的xml文件中来回跳转,就想接口跳到实现类那样简单。 6、codehelper.generator 可以让你在创建一个对象并赋值的时候,快速的生成代码,不需要一个一个属性的向里面set,根据new关键字,自动生成掉用set方法的代码,还可以一键填入默认值。 GenAllSetter 特性 在Java方法中, 根据 new 关键词, 为Java Bean 生成所有Setter方法。

git使用规范

大兔子大兔子 提交于 2020-03-25 20:09:41
3 月,跳不动了?>>> 关于分支 分支种类 master 主分支 master主分支始终保持稳定的可发布版本 只有项目组主程才拥有master主分支的管理权限(例如其他分支合并到master必须由主程操作) dev 开发分支 dev开发分支为不稳定版本,可能存在功能缺失,但已有的功能必须是完整的 原则上不允许直接在dev分支上进行功能开发,必须新建feature分支进行开发 hotfix-[问题名称 | bug编号] 紧急热修复分支 从master分支创建,横线后面跟上问题名称或者对应的bug编号,仅仅适用于 生产线问题紧急修复 !!!! 修复完成,测试通过,合并到master和dev分支上,然后将此分支删除 feature-[功能名称] 功能开发分支 从dev分支创建,横线后跟功能名称,用于新功能开发,每天下班前push提交到远程 开发完成以后,在远程发起向dev分支的合并请求,由指定的CodeReview人员审查通过以后进行合并,并删除该分支 bugfix-[bug编号] 问题修复分支 从dev分支创建,用于修改测试提出的bug,横线后跟bug编号 修复以后,在远程发起向dev分支的合并请求,并指定提交者自身(或其他人)作为CodeReview,合并以后删除该分支 refactor-[重构名称] 重构分支 从dev分支创建,用于代码的 重大规模重构

哪有什么未卜先知,只是有人为你毕生求索

若如初见. 提交于 2020-03-23 16:28:02
3 月,跳不动了?>>> 点击上方蓝字关注我们 仰望星空,预测未来,一直是人类永恒的梦想。对自然的好奇造就了人类对大气科学的不断探索。从“看云识天气”的经验传承到“二十四节气”的韵律实践,从1860年代第一张手绘天气图的诞生到20世纪以数值模式为基础的现代天气预报体系的建立,大气科学的发展历程,就是人类在复杂的不确定性中寻找可预报性的历史,也是人类孜孜以求,构建人与自然命运共同体的历史。 天气预报:时代印记 当每天晚上 “渔舟唱晚”的乐声响起,天气预报传递给我们的信息,不仅关乎天气,也是我们每个人日复一日的生活印记。今天是第60个世界气象日,现代天气预报技术的发展走过了近200年历程,天气的秘密,早已从远古时代的只有少数人掌握的“天机”,变成了今天每个人都可以通过学习掌握的一门科学,“天有不测风云”逐渐变得“一切尽在掌握”。 中央气象台/世界气象中心(北京) 数值预报:异军突起 1910年代,Lewis Fry Richardson第一次将应用差分算法的天气图内插到网格上,手绘了第一张“手工数值天气预报”,如果依赖人工计算,需要一百多人算一年多,等结果出来,已经毫无意义。可以说,超级计算机的出现,使数值天气预报真正成为了科学与技术结合的典范。准确求解含有时间项的偏微分方程组,洞悉未来的方向,就是天气预报的终极使命。现代天气预报通过卫星、雷达、以及几乎覆盖全世界的天气观测网