分类: 日常

59 篇文章

thumbnail
跳表:为什么Redis一定要用跳表来实现有序集合?
前言 时间复杂度O(logn)的二分查找很高效,但是依赖数组随机访问的特性,如果是链表,如何做到O(logn)? 跳表 原始链表查找时,需要遍历链表,时间复杂度就是O(n),光靠原始链表是不行的。 我们可以增加辅助链表,达到索引的作用,使用起来类似二叉搜索树。 查找时,从上往下,一层一层的查找,类似二叉搜索树。索引层可以继续增加,效率会得到提升。 …
thumbnail
分布式系统的 CAP 定理
分布式系统的三大指标,Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。 Partition tolerance 分区容错性,多数分布式系统都分布在多个子网络,每个子网络就是一个区。分区容错的意思是,允许区间通信失败,也就是节点之间通信失败。强调节点的独立性。 分布式系统中,网络异常是很难避免的,因此可以认为 CA…
HTTP 协议演进
Http 1.0 存在的问题 无法复用链接:每个请求都需要建立TCP链接。 对头阻塞:第二个请求必须等第一个请求响应后才能发起。 Http 1.1 特性 默认使用长连接,可配置Keep-alive来控制连接时间 支持请求管道化,客户端可以发送多个请求,而不用等待前一个请求响应。 存在的问题 为了让客户端识别请求对应的响应,服务端响应时,必须按照请求…
打破信息茧房
前言 ​ 算法推荐,即利用算法和大数据,对用户进行画像以实现信息的个性化精准推送,目前在购物、社交、短视频、新闻分发等领域均已广泛实践。   “信息茧房”这一概念,最初是在桑斯坦的《信息乌托邦——众人如何生产知识》一书中提出的,意指在信息传播中,因公众自身的信息需求并非全方位的,公众只注意自己选择的和使自己愉悦的领域,久而久之,会将自身像蚕茧一般桎…
thumbnail
Deepin使用Wallpaper Engine的壁纸
前言 Wallpaper Engine大家都知道吧,动态壁纸界的扛把子,壁纸质量高,种类多,总有一款是你喜欢的。官方支持Windows、Mac,半年前适配了移动端,但是Linux却一直不支持,官方的意思是目前不打算适配Linux,原因如下: Linux的用户少,查看 Steam 硬件调查,会发现只有不到 1% 的 Steam 用户使用 Linux。…
服务器cpu高导致ssh无法连接
正文 近期ssh连不上服务器,找服务器厂商客服得知是cpu高导致的,但是没法看到进程信息,不清楚是哪个进程导致的。 分析了下,服务器上的应用都是docker部署的,而最近部署了监控服务赫兹跳动,就出现这个问题了。于是对该容器进行cpu资源限制,看看能否解决。 服务器是4核心的,通过--cpus 1限制监控服务容器最多使用“一核心”,也就是100%c…
thumbnail
A/B测试vs灰度测试vs蓝绿部署
A/B测试 简单来说,A/B测试是一种比较两个版本的测试,以确定哪个版本的性能更好。 在A/B测试中,部分用户会接收到“版本A”,其他用户则会接收“版本B”。 这是一个可控的过程。为了进行实验,用户组被分成两组。“A组”通常被称为“对照组”,继续接收现有的产品版本。而“B组”通常被称为“实验组”,根据待测量指标,收到不同的实验数据。 最后,比较两组…
利用Mybatis拦截器,全局处理入库字段
利用Mybatis拦截器,全局处理入库字段 场景 需要对某张表的个别字段删除全部空格、替换半角括号,但是项目里入口比较多,不止有前端录入,还有接口接收的数据。即使现在全部入口处理了,后续新增入口也不能保证。所以需要统一处理,一劳永逸。 实现 EnableCustomInterceptor 标识实体类入库时会使用自定义拦截器(mybatis) @Ta…
全局日志记录traceId
全局日志记录traceId 单体应用为了更方便的排查问题,使用过滤器+日志框架的MDC功能,实现每个请求产生的日志,都包含一个UUID。 定义过滤器 @Component @Order(1) public class TraceFilter extends OncePerRequestFilter { public static final Str…