自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(525)
  • 收藏
  • 关注

转载 linux进程上下文、中断上下文介绍,以及为什么软中断不能睡眠?

linux内核的软中断处理程序中能不能睡眠?这是一个值得讨论的问题。答案其实很简单,那就是不能。因为Linux的软中断处理程序的运行上下文有可能是中断上下文。(注意此处是有可能,而并非一定)那我们首先来了解下上下文,那什么是进程上下文?什么是中断上下文呢?1.先来看进程上下文我们知道:用户空间的应用程序,通过系统调用,进入内核空间。所谓的“进程上下文”,可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。2.再来看中断上下文

2021-11-09 13:52:03 2648

转载 带你阅读linux内核源码:linux内核源代码编程规范

linux内核代码是许许多多遵循相同内核开发规范的牛人们的共同的创造的结晶。作为一名linux内核或者驱动开发工程师,很有必要了解这些内核开发规范。好处有以下几个:这些约定或者规范对我们阅读linux内核源码、了解设计思路有很大帮助 我们基于linux内核做开发,也要往内核里添加代码,遵守开发规范,有助于别人阅读和理解我们的代码。linux内核代码规范约定如下:1.强烈推荐单行的宽度为八十列。任何一行超过八十列宽度的语句都应该拆分成多个行,除非超过八十列的部分可以提高可读性且不会隐藏信息。但

2021-11-09 13:49:12 5213

转载 人间还是仙界?聊一聊linux系统的用户空间和内核空间

我们生活在人间,但《西游记》里提到,在天上还有一个仙界。人间不知道仙界的存在;而仙界知道人间的存在,神仙也可以从仙界下凡到人间,但是被严格管控的。软件设计的灵感其实都来自于生活:用户空间就等同于我们理解的人间;而内核空间就等同于所谓的仙界。人间在地上,仙界在天上,地理上是隔离的。linux内核里的用户空间和内核空间也是一样。以32位linux系统为例:32位linux系统的地址空间分布用户空间地址范围:0x00000000~0xBFFFFFFF,大小3G内核空间地址范围:

2021-11-09 13:47:05 1671

转载 linux内核源码编译过程分析之Kconfig,Makefile

在之前的课程里,当我们在编译linux内核源码的时候,不知道大家会不会有一些疑问:1.linux内核源码那么多(大概800M),编译的时候它(编译系统)怎么知道应该要编译哪些文件呢?2.怎样保证源码的编译顺序?比如,先编译A模块,再编译B模块?3.怎么样把这些编译出来的一个一个的目标文件,最终形成一个内核镜像文件?所有这些,都是通过Makefile来完成的。本文所用内核源码为 linux-4.9.229,ARCH=x86linux内核源码里的Makefile分为三层:顶层Make

2021-11-09 13:46:24 478

转载 linux内核中 逻辑地址、虚拟地址、线性地址和物理地址大扫盲

很多讲linux内核的书里面都提到过这四个概念:逻辑地址、虚拟地址、线性地址和物理地址。物理地址比较好澄清,但是这些书里都没有明确的讲清楚所谓的逻辑地址、虚拟地址、线性地址的区别到底是什么?那本文就来个大扫除吧。中英文对应关系:逻辑地址 --- logical address;虚拟地址 --- virtual address;线性地址 --- linear address;物理地址 --- physical address;这四个地址是体系相关的,我以x86 cpu为例进行解释。

2021-11-09 13:45:40 2137

转载 linux内核页表映射机制:线性地址如何转为物理地址?

在前面《逻辑地址、虚拟地址、线性地址和物理地址大扫盲》一节我们讲到了:cpu在访问某个逻辑地址的数据的时候需要先把这些逻辑地址转换为线性地址,然后再把线性地址转换为物理地址,这样才能真正的访问到相应的数据。而我们也讲到了在linux系统中,逻辑地址跟线性地址是一致的(也可以理解成是相同的)。所以逻辑地址转换成物理地址,其实就差一个环节了,那就是线性地址到物理地址的转换,那我们今天就来看这部分内容。Linux内核里把线性地址转换成物理地址是通过页表映射来实现的。页表映射具体还可以分为二级页表、三级页表

2021-11-09 13:44:45 741

转载 linux内核空间和用户空间数据拷贝驱动代码和测试程序代码

一、驱动页面代码#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/wait.h>#include <linux/poll.h>#include <linux/sched.h>#include <linux/slab.h&g

2021-11-09 13:43:51 162

转载 linux内核字符设备驱动到platform驱动架构改造过程

改造前的字符设备驱动源码:#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/cdev.h>#include <linux/fs.h>#include <linux/wait.h>#include <linux/poll.h>#include <linux/sched.h>#include <linux/sla

2021-11-09 13:43:01 143

转载 linux操作系统内存大串讲:段页式,slab,共享内存

linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,linux 内核几种内存管理的方法,内存使用场景以及内存使用的那些坑。从内存的原理和结构,到内存的算法优化,再到使用场景,去探寻内存管理的机制和奥秘。一、走进 linux 内存1、内存是什么?1)内存又称主存,是 CPU 能直接寻址的存储空间,由半导体器件制成2)内存的特点是存取速率快2、内存的作用1

2021-11-09 13:42:11 250

转载 linux内核1G虚拟地址空间的映射规则以及什么是高端内存?

前面我们讲了,在32位linux内核里,内核地址空间是0xc0000000~0xffffffff, 大小1G;内核地址空间是0x00000000~0xbfffffff,大小3G。当内核代码访问内存时,cpu是需要把这些逻辑转换为物理地址的,也就是前面我们讲到的二级页表的转换过程。细细看来,二级页表的转换过程可以是有某种规律的。比如,内核中的二级页表的转换就经过了人为的设定,保证了:逻辑地址(和线性地址一致)与物理地址对应的关系为物理地址 = 逻辑地址 – 0xC0000000,也就是:

2021-11-09 13:41:04 346

转载 一致性hash算法--负载均衡

有没有好奇过redis、memcache等是怎么实现集群负载均衡的呢?其实他们都是通过一致性hash算法实现节点调度的。讲一致性hash算法前,先简述一下求余hash算法:hash(object)%N一个缓存服务器宕机了,这样所有映射到这台服务器的对象都会失效,我们需要把属于该服务器中的缓存移除,这时候缓存服务器是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 由于QPS升高,我们需要添加多一台服务器,这时候服务器是 N+1 台,映射公式变成了 hash(obje

2021-11-08 18:26:30 198

转载 Docker php安装扩展步骤

演示docker-php-source , docker-php-ext-install ,docker-php-enable-docker-configure 这四个命令到底是用来干嘛的,它们在PHP容器中都做了哪些事情?Docker 中的PHP容器安装扩展的方式有通过pecl方式安装 通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用。这里,我们主要讨论的是第二种方案,如何通过PHP容器中的几个特殊命令来安装PHP扩展PHP中安装扩

2021-11-08 18:25:02 846

转载 Docker真的很好用,PHP开发者都应该学起来

对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如Docker 只需要一条命令..

2021-11-08 18:24:11 342

转载 图解 Docker 架构,程序员必备

01 Docker 的总体架构Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职。下图是它的总体架构图:1 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。2 Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。3 Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 J

2021-11-08 18:23:29 258

转载 10分钟了解Docker,运维和开发视角有什么不同?

本文从下面两部分内容讲解Docker。运维(Ops)视角。 开发(Dev)视角。在运维视角中,主要包括下载镜像、运行新的容器、登录新容器、在容器内运行命令,以及销毁容器。在开发视角中,更多关注与应用相关的内容。《深入浅出Docker内》会从GitHub拉取一些应用代码,解释其中的Dockerfile,将应用容器化,并在容器中运行它们。通过上面两部分内容,你可以从整体上理解Docker究竟是什么,以及主要组件之间是如何相互配合的。推荐读者对开发和运维两部分内容都要阅读。1.1 运维视角

2021-11-08 18:21:58 319

转载 Kafka 使用Java实现数据的生产和消费demo

Kafka的介绍Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka 有如下特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在

2021-11-08 18:20:53 2072

转载 我们耳熟能详的负载均衡,你该如何配置?

什么是负载均衡在计算机的世界,这就是大家耳熟能详的负载均衡(load balancing),所谓负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。这里的服务是广义的,可以是简单的计算,也可能是数据的读取或者存储。负载均衡也不是新事物,这种思想在多核CPU时代就有了,只不过在分布式系统中,负载均衡更是无处不在,这是分布式系统的天然特性决定的,分布式就是利用大量计算机节点完成单个计算机无法完成的计算、存储服务,既然有大量计算机节点,那么

2021-11-08 18:19:42 143

转载 负载均衡+Nginx 实践

这篇文章带大家来进行一下七层负载均衡 + Nginx 的动手实践。虚机安装 Nginx购买虚机需要注意的点:Region 和 可用区 的选择,这个一般选择了就不能更改了,慎重。 VPC 和 安全组 的配置。一些云厂商不支持更改 VPC,这个也要提前选择好。 建议使用密钥登陆,密码登陆是容易被暴力破解的。购买好之后,SSH 登陆虚机进行 Nginx 的安装。环境:CentOS 7.6Nginx 1.13.7安装相关依赖包// 编译器gcc、数据压缩库zlib、编译依赖zli

2021-11-08 18:18:03 346

转载 一分钟了解负载均衡的一切

什么是负载均衡?负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,负载均衡主要是实现对系统的高可用、网络压力的缓解、处理能力的伸缩。对于数据流量过大,往往单一设备是无法承担的,需要多台的设计进行分流。它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。常见互联网分布式架构,分为客户端层、反向代理nginx层、站点层、服务层、数据层。常见的负债均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据

2021-11-08 18:17:16 97

转载 Android App加固原理与技术历程

随着技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注。百度一下“App破解”就有5290万条结果。一旦App被破解,不仅使用者的照片、身份证、手机号、联系住址、邮箱和支付密码等敏感信息会泄露,还可能感染手机的操作系统,进而导致手机被入侵篡改,乃至成为攻击者操控的“僵尸网络”中的一部分。安卓App的开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java源码最终编译成smali字符码,以clas

2021-11-08 18:16:28 531

转载 源码解说zookeeper在kafka中的作用

浪尖的kafka源码系列以kafka0.8.2.2源码为例给大家进行讲解的。纯属个人爱好,希望大家对不足之处批评指正。一,zookeeper在分布式集群的作用1,数据发布与订阅(配置中心)发布与订阅模型,即所谓的配置中心,顾名思义就是讲发布者将数据发布到zk节点上,共订阅者动态获取数据,实现配置的集中式管理和动态更新。例如,全局的配置信息,服务服务框架的地址列表就非常适合使用。2,负载均衡即软件负载均衡。最典型的是消息中间件的生产、消费者负载均衡。3,命名服务(Naming Serv

2021-11-07 16:03:27 383

转载 由一次安全扫描引发的思考:如何保障 API 接口的安全性?

引言前段时间,公司对运行的系统进行了一次安全扫描,使用的工具是 IBM 公司提供的 AppScan 。这个正所谓不扫不要紧,一扫吓一跳,结果就扫出来这么个问题。我们的一个年老失修的内部系统,在登录的时候,被扫描出来安全隐患,具体学名是啥记不清了,大致就是我们在发送登录请求的时候,有个字段名是password, AppScan 认为这个是不安全的,大概就是下面:我第一个反应是把这个字段名字改一下,毕竟能简单解决就简单解决嘛,结果当然是啪啪啪打脸。这个名字...

2021-11-07 16:02:33 374

转载 腾讯如何用Elasticsearch挖掘万亿数据价值?

Elasticsearch(ES)作为开源首选的分布式搜索分析引擎,通过一套系统轻松满足用户的日志实时分析、全文检索、结构化数据分析等多种需求,大幅降低大数据时代挖掘数据价值的成本。腾讯在公司内部丰富的场景中大规模使用ES,同时联合Elastic 公司在腾讯云上提供内核增强版的ES 云服务,大规模、丰富多样的的使用场景推动着腾讯对原生ES 进行持续的高可用、高性能、低成本优化。一、ES 在腾讯的应用场景【ES 在腾讯的应用场景】最初我们使用ES 于日志实时分析场景,典型日志如下:运营

2021-11-07 16:01:22 285

转载 使用ElasticSearch搭建动态排序引擎

本来打算至少一月一更的,结果写完第一篇后爆忙了一段时间(眼神死)...在这个专栏里,我不会翻译官方文档。所有关于ES本身的介绍,推荐直接看英文版官方文档,或者google之。ES本身以惊人的速度在迭代,现在的中文材料很容易就跟不上最新版的节奏。特别是5.0出来之后,会有非常大的变化。在这个专栏里,我会根据自己的实战经验,写一下Elastic Search全家桶(官方自称为Elastic Stack)的应用。从年初到现在,我个人也从ES吹,到ES与Sphinx混用,到了自造轮子的阶段。ES很好用,也有

2021-11-07 15:59:49 127

转载 Elasticsearch 在各大互联网公司大量真实的应用案例

国内现在有大量的公司都在使用 Elasticsearch,包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。一、京东到家订单中心 Elasticsearch 演进历程京东到

2021-11-07 15:57:28 112

转载 Kafka从搭建到使用简易教程

Kafka简介Kafka是一款流行分布式消息分布订阅系统,除Kafka之外还有MQ、Redis等。我们可以把消息队列视为一个管道,管道的两端分别是消息生产者(producer)和消息消费者(consumer),消息生产者产生日志等消息后可以发送到管道中,这时消息队列可以驻留在内存或者磁盘上,直到消费者来把它读走为止。上述就是Kafka的一个概括,我们只需要了解一下Kafka的架构和一些专业术语即可,下面就来介绍一下Kafka 中一些专业术语。Producer:消息生产者,负责把产生的消息发送

2021-11-07 15:55:54 356

转载 Kafka设计解析- Kafka高性能架构,Kafka如何实现高性能?

前言:本文从宏观架构层面和微观实现层面分析了Kafka如何实现高性能。包含Kafka如何利用Partition实现并行处理和提供水平扩展能力,如何通过ISR实现可用性和数据一致性的动态平衡,如何使用NIO和Linux的sendfile实现零拷贝以及如何通过顺序读写和数据压缩实现磁盘的高效利用。目录:1. 宏观架构层面1.1. 利用Partition实现并行处理 1.1.1. Partition提供并行处理的能力 1.1.2. Partition是最小并发粒度 1.2. ISR实现可

2021-11-07 15:51:10 250

转载 kafka核心知识点扫盲,全平台最详解析,看完你还说不会吗?

一、kafka概述1.1、定义Kakfa是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域1.2、消息队列1.2.1、传统的消息队列&新式的消息队列的模式上面是传统的消息队列,比如一个用户要注册信息,当用户信息写入数据库后,后面还有一些其他流程,比如发送短信,则需要等这些流程处理完成后,在返回给用户。而新式的队列是,比如一个用户注册信息,数据直接丢进数据库,就直接返回给用户成功。1.2.2、使用消息队列的好

2021-11-07 15:49:29 234

转载 你真的了解kafka架构原理吗?看阿里P8给你归纳总结

前言Kafka 是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka技术可在廉价PC Server上搭建起大规模消息系统。Kafka具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性。那么对于Kafka架构原理,你又知道多少呢?对于kafka的架构原理我们先提出几个问题?1.Kafka的topic和分区内部是如何存储的,有什么特点?2.与传统的消息系统相比,Kafka的消费模型有什么优点?3.Kafka如何实现分布式的数据存储与数据读取?1、Kafka架构图2.kafka

2021-11-07 15:48:16 118

转载 浅谈分布式消息技术 Kafka

Kafka的基本介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。(加图片下方数字来群学习交流)Kafka主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性

2021-11-07 15:47:29 147

转载 kafka生产者的蓄水池机制

1.1、整体架构图Kafka还有蓄水池?大家先别急,我们先上一张架构图。从上面的架构图可以看出,生产的流程主要就是一个producer线程和一个sender线程,它们之间通过BatchQueue来获取数据,它们的关系是一一对应的,所以kafka的生产过程都是异步过程,它的同步和异步指的是接收响应结果的模式是同步阻塞还是异步回调。同步和异步的生产者调用示例如下:异步生产模式:producer.send(new ProducerRecord<>(topic,

2021-11-06 15:31:08 448

转载 Java入门必看的Java 8 Stream API 使用指南

1.概述Java 8 引入的一个重要的特性无疑是 Stream API。Stream 翻译过来是“流”,突然想到的是大数据处理有个流式计算的概念,数据通过管道经过一个个处理器(Handler)进行筛选,聚合,而且流都具有向量性,强调的是对数据的计算处理,而集合强调的是数据集。Stream可以看做是一个可操作的数据集序列,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。有点类似于数据库中的增删改查操作。十分高效而且易于使用。2. 创建Stream流从不同的数

2021-11-06 15:29:53 126

转载 Kafka/RocketMQ 多线程消费时如何保证消费顺序?

上两篇文章都在讨论顺序消息的一些知识,看到有个读者的留言如下:这个问题问得非常棒,由于在之前的文章中并没有提及到,因此我在这篇文章中单独讲解,本文将从消费顺序性这个问题出发,深度剖析 Kafka/RocketMQ 消费线程模型。Kafkakafka 的消费类 KafkaConsumer 是非线程安全的,因此用户无法在多线程中共享一个 KafkaConsumer 实例,且 KafkaConsumer 本身并没有实现多线程消费逻辑,如需多线程消费,还需要用户自行实现,在这里我会讲到 Kafka

2021-11-06 15:29:00 673

转载 一文理清Mybatis中resultType与resultMap之间的关系和使用场景

1.概述Mybatis ORM半自动映射框架对java开发工程师来说应该是必会的框架之一。它的好处这里不是我们讨论的重点。令很多刚刚入行的java开发小伙伴迷茫的是 resultType与resultMap的使用。今天来探讨一下这个问题。2.resultType与resultMap接下来我们就来讲一下Mybatis中resultType与resultMap之间的关系和使用场景。2.1 resultType从select语句中返回的期望类型的类的完全限定名或别名。注意如果返回的是集

2021-11-06 15:27:10 427

转载 轻量级嵌入式数据库H2的愉快玩耍之旅

1.场景日常java开发中经常有这种需求,用0或者1这些代码(不局限于数字)来表示某种状态。比如用0表示女性,用1来表示男性。而且写入数据库可能是一个标识,从数据库读取又还原为具体的说明。而且一般情况下为了更好理解或者消除魔法值,通常的处理方案是定义一个枚举,有些枚举是这样定义的:那么通常很多人会这么入库(java伪代码)读取的时候要么同样按照上面的再反向处理一次或者使用数据库sql语法case when来直接写入DTO这种处理方式看起来不是很优雅。而

2021-11-06 15:26:24 135

转载 Spring Cloud 使用 Nacos 进行服务注册发现

1.前言上一篇我们实现了Spring Cloud从nacos server 远端拉取并加载配置。今天我将给大家介绍nacos的另一个重要功能服务注册与发现。服务注册与发现功能在微服务中服务治理的基础。本篇将对nacos的服务治理进行介绍和一些入门使用。2.nacos 服务注册与发现Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&a

2021-11-06 15:25:13 302

转载 RabbitMQ和Kafka的比较,一比吓一跳

导言作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。这篇文章会先介绍一下基本的异步消息模式,然后再介绍一下RabbitMQ和Kafka以及他们的内部结构信息。第二部分(未完成)主要介绍这两种

2021-11-06 15:24:16 598 1

转载 全网首发Spring Cloud Gateway 添加统一前缀功能

1.前言今天学习一下Spring Cloud Gateway,就先再其他博客上逛了逛。遇到有java开发者在某博客问一个问题:Spring Cloud Gateway 如何添加统一的前缀? 当时没有在意,但是脑子里也带着这个问题看起了文档。随着慢慢了解Spring Cloud Gateway 这个问题就有了一点思路。2.Gateway工作机制这是官方文档上给的Spring Cloud Gateway工作流程图。大意上是客户端请求经过HandlerMapping的处理,如果匹配到.

2021-11-06 15:23:11 1548

转载 java服务端推送消息有那么难吗?

场景今天项目经理交给我一个开发任务。如果有人在前台下了订单就给后台仓库管理一个发货通知。也就是服务端触发一个事件,推送消息到客户端。如果我用websocket来做还要搞个websocket服务器,而且还 有不少配置。websocket是全双工通信,单向通信简直是杀鸡用牛刀。用轮询吧,浪费服务器资源不说,还不一定实时,订单处理慢了岂不是怠慢了客户。有没有别的选择呢?当然有!1SSE推送技术SSE全称Server-sent Events,是HTML 5 规范的一个组成部分,具

2021-11-06 15:22:08 2290

转载 Redis的事务满足原子性吗?

谈起数据库的事务来,估计很多同学的第一反应都是ACID,而排在ACID中首位的A原子性,要求一个事务中的所有操作,要么全部完成,要么全部不完成。熟悉redis的同学肯定知道,在redis中也存在事务,那么它的事务也满足原子性吗?下面我们就来一探究竟。什么是Redis事务?和数据库事务类似,redis事务也是用来一次性地执行多条命令。使用起来也很简单,可以用MULTI开启一个事务,然后将多个命令入队到事务的队列中,最后由EXEC命令触发事务,执行事务中的所有命令。看一个简单的事务执行例子:127

2021-11-06 02:28:32 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除