BLCL的博客小馆

归档 · 全部

首页

关于

归档

loading..
前后端

为什么要使用消息队列服务

消息队列是什么?化繁为简一下,分拆一下这个词汇,首先,先来看队列(queue) 队列是一种常用的数据结构,特点是先进先出 消息队列,顾名思义一下,就是把消息放在队列当中进行处理 这个消息,肯定是等待处理的消息,我们应该要获取消息做什么事 比如获取一个返回结果,接受一个参数等等。 所以这里引出了新的概念,消费者和生产者 生产者就是往队列里面塞数据 消费者就是往队列里面取数据 这就是消息队列的基础概念。 消息队列解决了什么问题按理说,消息队列只是一个队列类数据结构,这个我们完全可以自己实现 例如Python的队列queue,或者java的Deque都可以实现队列的功能 再去实现一个消费者/生产者逻辑就好了,那为什么要用消息队列呢? 这边举几个我开发中遇..

更多
loading..

LLVM Link Time Optimization

链接时优化(Link Time Optimization,简称 LTO)已经在 WWDC 2016 中提及到。因为这个选项在 Xcode 中默认关闭的,我也一直没有开启过这个选项,所以之前没有做过什么了解。趁着这次五一放个假,我们可以看看 LTO 是什么,以及它的整个流程是什么样子。 我们知道一个程序从源码到运行,需要有一个静态链接的过程。 在这个过程中,在解决所有的符号引用关系期间,我们可以知道整个程序的全貌。为此我们能以全局的角度做一些优化,这就是链接时优化。 我在这里将 LTO 理解为:借助静态链接可以获取程序全局信息的机会,做一些全局优化,这样可以提高运行时的性能,并进一步减少二进制的大小。 阅读本文前,建议先看完 LLVM Link Time Optimization: Design and I..

更多
loading..
算法

弄懂难缠的DFS算法和相关变种(Python实现)

前言这次不废话,直接接上次的BFS,直接来看DFS。 什么是DFS算法DFS,全名深度优先搜索 用大白话来说,其实就是 一条路走到黑,走不通再回来,直到无路可走 举个简单的例子,现在我们有一个树,就像下面这样 12345 A / \ B C / \ / \D E F G 假设我们要用DFS算法来进行遍历/搜索 它的步骤如下 从初始节点A出发,并且将A标记为已访问 查找A的一个临接顶点B。 如果B存在,继续执行访问,否则回退到上一步,继续查找临接顶点 将B标记为可访问,继续执行查找临界点D的操作 重复操作,直到所有的值都访问完了,无值可以访问为止。 那么,遍历树的顺序应该是 A -> B -> ..

更多
loading..
vue

如何简单地在vue3中实现i18n

闲扯 vue3出来好一段时间了,我一直也没怎么用,因为公司项目一开始用的vue2。迫于前端太卷,要时刻学习,跟进时代,最近着手用vue3+vite写一个练手项目。先不透露项目是啥,后面会开源的。 刚开始写vue3时也是处处不顺,因为思维还停留在vue2上,慢慢习惯了也还不错。个人感觉vue3学习了React的优点,把响应式这块完全丢给用户了。 习惯了vue全家桶一把梭,且没写过React的人可能有点适应不过来。 简介 不用第三方i18n是因为我觉得i18n应该是一个很简单的,自己实现的功能 目标: 更改语言后,所有的$i18n()均要同步更改 <template> <span>{{ $i18n('articles') }}</span> </templat..

更多
loading..
技术ESLintASTBabel

学习抽象语法树 AST

作为一个前端切图仔,工作中少不了用上 Babel,ESLint,Prettier 这些工具,但是这些工具背后的工作原理却不求甚解😅 前言作为一个前端切图仔,工作中少不了用上 Babel,ESLint,Prettier 这些工具,但是这些工具背后的工作原理却不求甚解😅 ,最近才尝试去了解一番,没想到发现一个全新的世界,那就是 AST 中文名抽象语法树。初识在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法架构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真是语法中出现的每个细节。比如嵌套括号被隐含在树的结构中,并没有以节点..

更多
大数据数据库

canal简单使用

在使用大数据进行数据计算的时候,首先我们需要获取到数据。如果是从MySQL获取数据的话,可以选择阿里的开源组件canal,它将自己伪装成MySQL的slave来接收数据。开启MySQL的binlog设置首先我们查看MySQL是否打开了binlog复制的功能mysql> show variables like 'log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_bin | OFF |+---------------+-------+1 row in set (0.00 sec)如果没有打开,就编辑MySQL的配置文件/etc/my.cnf,添加如下配置# b..

更多
loading..

一篇文章带你读懂 TLS Poison 攻击

这是《一篇文章带你读懂 XXX 攻击》系列的第二篇文章,本篇文章主要讲述 TLS Poison 攻击对应的三种攻击方式、一些可能算是“新”的 DNS Rebinding 技巧以及一些关于 IP 选择探索等内容。[TOC]文章首发于雷神众测,以下为首发地址链接:一篇文章带你读懂 TLS Poison 攻击(一)一篇文章带你读懂 TLS Poison 攻击(二)一篇文章带你读懂 TLS Poison 攻击(三)一篇文章带你读懂 TLS Poison 攻击(四)Preface使用《一篇文章带你读懂 XXX 攻击》的标题是为了督促自己把一个攻击的尽可能多的细节尽可能的搞懂,也是为了提升自己的写作以及表述水平。本文旨在帮助大家了解学习 TLS Poison 攻击,希望通过一篇文章让大家读懂 TLS Poison 攻..

更多
分布式系统数据库

Redis服务的安装和使用

我在文章Redis failover中介绍过如何安装Redis并且通过sentinel(哨兵)实现Redis的高可用。随着Redis的不断更新,现在的Redis(我使用的版本是6.2.6)已经支持了集群功能,本文记录了如何搭建一个Redis集群并使用。我们使用如下的6台机器来构建一个Redis集群172.19.65.196172.19.72.108172.19.72.112172.19.72.203172.19.65.228172.19.65.136下载源码并编译首先在172.19.65.196上下载Redis源代码并进行编译,这里我下载的版本是6.2.6useradd -m redissu - rediswget https://download.redis.io/redis-stable.tar.gz..

更多
loading..
数据中心云原生技术Kubernetes容器编排集群管理

谈谈 Kubernetes 的问题和局限性

2014 年发布的 Kubernetes 在今天俨然已成为容器编排领域的事实标准,相信谈到 Kubernetes 的开发者都会一再复述上述现象。如下图所示,今天的大多数个人或者团队都会选择 Kubernetes 管理容器,而也有 75% 的人会在生产环境中使用 Kubernetes。图 1 - Kubernetes 容器编排1在这种全民学习和使用 Kubernetes 的大背景下,我们也应该非常清晰地知道 Kubernetes 有哪些局限性。虽然 Kubernetes 能够解决容器编排领域的大多数问题,但是仍然有一些场景是它很难处理、甚至无法处理的,只有对这些潜在的风险有清晰的认识,才能更好地驾驭这项技术,这篇文章将从集群管理和应用场景两个部分谈谈 Kubernetes 社区目前的发展和一些局限性。集群管..

更多
TECHNOLOGYArduinoSTM32PlatformIO

对 PlatformIO 有点失望

PlatformIO 目前只是玩具,单片机开发还得用 Keil好久不碰单片机,现在想搞个项目,选型 STM32xxxxxx,想找一套“现代化”的 IDE,于是找到了 PlatformIO。刚开始很新奇很激动,VSCode 开发环境很友好,各种单片机型号、库很丰富,而且 STM32 可以直接用 Arduino 开发,各种一键式部署。最主要的是商用免费,差点就选用了。但是问题很快就出现了,Arduino 框架对于底层的封装太完美,我甚至不能方便地修改 SPI 或者 I2C 的引脚,而且 GPIO 读写速度也相较使用 CMSIS 慢很多,STM32duino 虽然仍然在发展,但是,我认为还处在“玩具”的阶段。如果抛弃 Arduino 框架,去使用 CMSIS ,那也太不方便了,而且 STM32 标准库在 Pla..

更多
1626364656677