自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 记一次SqlServer大表查询语句优化和执行计划分析

数据库: sqlserver2008r2表: device_data数据量:2000w行左右表结构复制代码CREATE TABLE [dbo].[device_data]([Id] [int] IDENTITY(1,1) NOT NULL,[DeviceId] nvarchar NOT NULL,[SystemTick] [int] NOT NULL,[Sport] [int] NOT NULL,[Temperature] [int] NOT NULL,[Voltage] [int]

2021-01-08 08:56:33 415

原创 MySQL 中的WAL机制

思维导航:是什么undo logRedo Log 与 Binlog Redo log 三种状态 redo log 的持久化 Binlog 三种格式 三种状态 binlog 的持久化 两者的联系 状态 Crash-Safe 能力 三步提交的参数配置 组提交优化 " 三步提交 " 三步提交过程总结三个日志的比较(undo、

2021-01-08 08:55:51 658

原创 记一次Hadoop安装部署过程

实验名称:Hadoop安装部署一、实验环境:虚拟机数量:3个 (1个master,2个slave:slave01,slave02)主节点master信息:操作系统:CentOS7.5软件包位置:/home/zkpk/tgz数据包位置:/home/zkpk/experiment已安装软件:无从节点slave01信息:操作系统:CentOS7.5软件包位置:/home/zkpk/tgz数据包位置:/home/zkpk/experiment已安装软件:无从节点slave0

2021-01-08 08:55:15 556

原创 Azure Databricks 第二篇:pyspark.sql 简介

pyspark中的DataFrame等价于Spark SQL中的一个关系表。在pyspark中,DataFrame由Column和Row构成。pyspark.sql.SparkSession:是DataFrame和SQL函数的主要入口DataFrameReader:读取数据,返回DataFrameDataFrameWriter:把DataFrame存储到其他存储系统pyspark.sql.DataFrame、pyspark.sql.Column和 pyspark.sql.Row一,SparkSe

2021-01-08 08:54:18 315

原创 一次 Nginx proxy_set_header 故障问题解析和延升

一、问题和排查步骤 1.1 问题基本信息 1.2 问题解析 1.3、解决办法二、扩展-各种情况对比 默认两项 proxy_set_header 其他项等 总结三、扩展 ->脚本 proxy_set_header $host $proxy_host $http_host 各个变量含义 python 获取请求所有数据信息脚本本文会先由一个问题引入,然后再进行多种情况进行分析。一、问题和排查步骤1.1 问题基本信息​ 我们应用程序

2021-01-08 08:53:42 6175

原创 编写 Dockerfile 生成自定义镜像

一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dockerfile 来生成自定义的镜像文件。Dockerfile介绍Dockerfile 是一个文本格式的配置文件,通过编写 Dockerfile 脚本来定义自己需要的镜像。Dockerfile 文件由一行行命令语句组成,文件中的注释信息以 # 开头。编辑好 Dcokerfile 文件之后,我们可以通过 dock

2021-01-08 08:53:11 202

原创 《深入理解Java虚拟机》 Java对象的生命周期

Java虚拟机运行时数据区 方法区:存储 类信息、常量、静态变量、即使编译器编译后的代码等数据,也有别名叫做非堆。 方法区其中有包含有 运行时常量池,用于存放编译期生成的各种字面量和符号引用。其中,可通过String.intern()方法将字符串放入运行时常量池中。 堆:存储的是类实例对象,数组。 JVM 所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。 从内存回收的角度来看,由于现在收集器基本都采用 分代收集算法,所以堆可以细分为 新生代 和老

2021-01-08 08:52:41 94

原创 俯瞰Dubbo全局,阅读源码前必须掌握这些!!

写在前面在上一篇《冰河开始对Dubbo下手了!》一文中,我们重点介绍了为何要学习Dubbo,而且还是要深入理解Dubbo的原理和核心源码。既然是要写深度解析Dubbo源码的系列专题,我们首先要做的就是搭建一套Dubbo的源码环境,正所谓“工欲善其事,必先利其器”。但是,为了更好的理解Dubbo,我将本文重点分成三个部分:Dubbo中的核心角色、搭建Dubbo源码环境、Dubbo核心模块说明、运行Dubbo的示例程序 四个部分。说干就干,上重点。注:本系列专题,我是基于Dubbo 2.7.8版本进行源码分

2021-01-08 08:52:14 72

原创 没有模块化的时代

在JS没有模块化标准的时代,如果存在以下依赖关系:main.js -> b.js -> a.js那么我们必须把js文件的顺序按照模块的依赖关系顺序放到页面中(简单的举例,不考虑循环依赖等复杂情况) 我们需要提前加载好所有的依赖。//main.js(function(){moduleB.logb();})()//b.jsvar moduleB = (function () {function logb() {moduleA.loga();conso

2021-01-08 08:51:39 71

原创 asp.net core 5.0 中的 JsonConsole

asp.net core 5.0 中的 JsonConsoleIntro#asp.net core 5.0 中日志新增了 JsonConsole,还是输出日志到 Console,但是会应用 Json 格式的一个 Formatter 把日志格式化成 json 再输出到控制台Sample#一起来看一个示例,以我的一个小项目为例子来演示,默认的 console 日志格式是多行的,不够结构化,想要进行加工的话就会比较麻烦,不能很方便的进行加工和扩展,而 JSON 则是一种相对来说比较结构化的数据,相对来说进

2021-01-08 08:51:06 88

原创 BCC和libbpf的转换

BCC和libbpf的转换转载BCC和libbpf的转换本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。为什么是libbpf和BPF CO-RE?历史上,当需要开发一个BPF应用时可以选择BCC 框架,在实现各种用于Tracepoints的BPF程序时需要将BPF程序加载到内核中。BCC提供了内置的Clang编译器,可以在运行时编译BPF代码,并将其定制为符合特定主机内核的程序。这是在不断变化的内核内部下开发可维护的BPF应用程

2021-01-07 09:07:58 621 1

原创 对HTTP请求接口资源下载时间过长的问题分析

问题描述我司某产品线有指定业务接口customQuery在线上环境中,与首页一起打开时下载数据的时间明显过长(平均可以达到2s)注:“与首页一起打开” 的含义是指用户进入WEB系统后会首次加载的主页面,该主页会提前请求customQuery数据,以用于显示首页中的列表数据。正常的想法会第一时间认为是刚进入首页请求多,导致的下载速度慢,这个自然不是这个原因,要不然也不会专门写这些内容,后面会讲到。下文中我会尽量仅针对问题本身,不掺杂业务逻辑进行表述,并尽可能的做到描述清晰,准确。不过个人表达力及知识

2021-01-07 09:07:18 2180

原创 腾讯IOT安卓开发初探

腾讯IOT 安卓开发初探目的:将Andorid端作为一个物联网设备(device),然后将其安卓设备上面的数据发送到腾讯云IOT开发平台上。(这里我们将手机上面的GPS经纬度发送到腾讯云IOT平台上)。腾讯IOT开发平台:https://console.cloud.tencent.com/iotexplorer腾讯IOT Java SDK GitHub:https://github.com/tencentyun/iot-device-java开发工具:Android Studio代码Github

2021-01-07 09:06:47 598 1

原创 抄答案就是了,两套详细的设计方案,解决头疼的支付掉单问题

好久没写支付相关的文章了,今天继续从事老本行~上次在文章钱被扣走了,但是订单却未成功!支付掉单异常最全解决方案提到,支付过程会出现掉单、卡单的情况,这种情况对于用户来讲,体验非常差,明明自己付了钱,扣了款,但是订单却未成功。上篇文章我们简单说了下解决方案,这次小黑哥就结合生产实际碰到的情况,给出两种详细设计的方案:定时轮询补偿方案延迟消息补偿方案大家可以根据自己系统的实际情况,选择性参考。当然了,以下设计方案可能并不完美,如果各位读者还有其他解决方案,欢迎留言指出,一起讨论,一起成长~欢迎关

2021-01-07 09:04:03 138

原创 SQL Server解惑——为什么ORDER BY改变了变量的字符串拼接结果

在SQL Server中可能有这样的拼接字符串需求,需要将查询出来的一列拼接成字符串,如下案例所示,我们需要将AddressID <=10的AddressLine1拼接起来,分隔符为|。如下截图所示。这种方式看起来似乎没有什么问题,而且简单测试也是OK:USE AdventureWorks2014;GODECLARE @address_list NVARCHAR(MAX);SET @address_list =’’;SELECT @address_list = @address_list +

2021-01-07 09:03:20 260

原创 一种消除局部自适应对比度增强算法方块效应的方法

在一种基于腐蚀膨胀运算实现的局部自适应对比度增强算法中,提出了一种可以分开自适应的调整局部亮部和暗部对比度的方法。但是就象在评论中提到的,这种方法会产生方块效应。特别是在对比度已经比较大的边缘附近,这种方块效应会比较明显。这是因为在边缘附近,对比度本来就是比较大的,偏均方差也就相应的比较大。那么调整的时候给出自适应的调整量就会相应地变小。一旦离开边缘附近,领域不包括边缘,对比度就会相对陡然变小,那么自适应的调整量就会相应变大。那么在边缘同一侧就可能会比较明显地出现不均匀的变化,也就是我们所说的方块效应。不均

2021-01-07 09:02:44 360

原创 AI驱动的超分辨技术落地实践

近年来,随着深度学习技术的快速发展,基于AI的超分辨技术在图像恢复和图像增强领域呈现出广阔的应用前景,受到了学术界和工业界的关注和重视。但是,在RTC视频领域中,很多AI算法并不能满足实际场景下的应用需求。本文将着眼于AI技术从研究到部署的落地问题,分享超分辨技术在RTC领域落地应用所面临的机遇与挑战。一、超分辨技术概述超分辨技术的提出超分辨技术的提出超分辨这一概念最早是在20世纪60年代由Harris和Goodman提出的,是指从低分辨率图像,通过某种算法或模型生成高分辨图像的技术,并且尽可能

2021-01-06 19:07:17 148

原创 探讨EFCore如何优雅的实现读写分离

前言我们都知道当单库系统遇到性能瓶颈时,读写分离是首要优化手段之一。因为绝大多数系统读的比例远高于写的比例,并且大量耗时的读操作容易引起锁表导致无发写入数据,这时读写分离就更加重要了。EFCore如何通过代码实现读写分离,我们可以搜索到很多案例。总结起来一种方法是注册一个DbContextFactory,读操作注入ReadDcontext,写操作注入WriteDbcontext;另外一种是动态修改数据库连接串。以上无论哪种方法,实现简单粗暴的读写分离功能也不复杂。但是如果需要实现从库状态监测(从库宕机

2021-01-06 19:06:46 596

原创 Java内存模型精讲

1.JAVA 的并发模型共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物理内存的一小部分2.JAVA 内存模型的抽象2.1 java内存中哪些数据是线程安全的,哪些是非安全的非线程安全 : 在 java 中所有的实例域、静态域、和数组元素都存放在堆内存中,并且这些数据是线程共享的,所以会存在内存可见性问题线程安全 : 局部变量、方法定义的参数、异常处理器参数是当前线程的虚拟机栈中的数据,

2021-01-06 19:06:16 120 1

原创 字段表集合方法表集合

段表集合(field_info)用于描述接口或类中声明的变量,包括类级变量以及实例级变量,但不包括在方法内部声明的局部变量。字段包含待信息有字段的作用域(public、private、protected)、是实例变量还是类变量(static)、可变性(final)等等。这些信息要么有,要么没有,很适合用标志位来表示,而字段叫什么,被定义为什么数据类型,这些都无法固定,只能用常量池中的常量来描述。字段表结构如下:类型 名称 数量u2 access_flags 1u2 name_index

2021-01-06 19:05:46 314

原创 类索引、父类索引与接口索引集合

类索引(this_class)、父类索引(super_class)和接口索引(interfaces)都按顺序排列在访问标志之后,类索引和父类索引用两个 u2 类型的索引值表示,而接口索引是一组 u2 类型的数据的集合。类索引用于确定该类的全限定名,父类索引确定该类的父类的全限定名,由于 Java 不允许多继承,因此父类索引只有一个,Object 类的父类索引为 0。类索引和父类索引各自指向一个 CONSTANT_Class_info 的类描述符常量,通过这个索引值可以找到定义在 CONSTANT_Utf8

2021-01-06 19:05:13 282 1

原创 访问标志

常量池结束之后,紧接着的 2 个字节代表访问标志(access_flags),这个标志用于标识一些类或者接口层次的访问信息,包括这个 Class 是类还是接口;是否定义为 public 类型;是否定义为 abstract 类型;如果是类的话,是否被声明为 final 等等。具体的标志位以及标志的含义如表:标志名称 标志值 含义ACC_PUBLIC 0x0001 是否为 Public 类型ACC_FINAL 0x0010 是否被声明为 final,只有类可以设置ACC_SUPER 0x0

2021-01-06 19:04:38 179

原创 常量池

紧接着主、次版本号的是常量池入口,常量池入口需要放置一项 u2 类型的数据,代表常量池容量计数值(constant_pool_count),这个容量计数是从 1 而不是从 0 开始,第 0 项用于表达“不引用任何一个常量池项目”的含义。Class 文件结构中只有常量池的容量计数是从 1 开始,其他都是从 0 开始。常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近 Java 语言层面的常量概念,如文本字符串、被声明为 final 的常量值等。而符号引用则属于编译原理方面的概念,主要包括下面几类常

2021-01-06 19:04:14 127 1

原创 魔数和 Class 文件版本

Class 文件的头 4 个字节被称为魔数(Magic Number),它的唯一作用是确定该 Class 文件是否能被虚拟机接受,其值为 0xCAFEBABE(咖啡宝贝)。紧接着魔数的 4 个字节存储的是 Class 文件的版本号:第 5 和第 6 个字节是次版本号(Minor Version),第 7 和第 8 个字节是主版本号(Major Version)。Java 版本号从 45 开始,以后每个 JDK 大版本发布则主版本号加 1。高版本的 JDK 能向下兼容以前版本的 Class 文件,但不能运行

2021-01-06 19:03:17 71

原创 Java 虚拟机

我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式。Java 虚拟机不与 Java 语言绑定,只与 Class 文件所关联。Java 虚拟机作为一个通用的、与机器无关的执行平台,任何语言都可以将 Java 虚拟机作为它们的运行基础,以 Class 文件作为它们产品的交付媒介。Class 文件是一组以 8 个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据。当遇到需占用 8

2021-01-06 19:01:48 43

原创 IDEA中配置Git,在Github上clone项目到IDEA

1、用homebrew安装git运行以下命令安装brew install git默认的安装位置是 /usr/local/Cellar目录中(后面会用到)二、在idea中配置Git1、创建一个空的工程说明:这里只是为了可以进入IDEA的内部界面,没别的用。当然后续的Module是在这个工程下创建的,所以后续会作为本地仓库来使用。点击欢迎界面的new project后,选择Empty Project,创建为project创建名字。之后会进入Project Structure界面,这里先

2021-01-06 19:01:04 148

原创 Java异常体系概述

Java的异常体系结构Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误。unchecked异常在上图中除了RuntimeException、Error及其子类都是属于unche

2021-01-05 09:41:38 40

原创 使用Modbus4J进行RTU模式串口通信

Modus协议是由MODICON(现为施耐德电气公司的一个品牌)在1979年开发的,是全球第一个真正用于工业现场的总线协议,应用非常广泛,可谓大名鼎鼎。理论性的东西就不多介绍了,推荐一本书《Modbus软件开发实战指南》,杨更更著,写得非常好,从理论到实战,手把手教你玩转Modbus,不过代码实战部分使用的是C#,笔者没练过这项武功,还是看一下Java中怎么应用吧,网上资料多用Modbus4J,就选它了。Modbus4J源代码:https://github.com/infiniteautomation/

2021-01-05 09:41:07 1319

原创 TCP的流量控制

一—导读首先我们来看实际生活中这样一个实例,大人喂小孩子吃饭,如果孩子嘴里还有饭,孩子表示不想吃了,但大人还是继续喂。喂多了。这样就会给孩子留下一个完整的不愉快童年。那么在使用TCP协议的双方端系统中,发送方就像喂饭的大人,而接收方就是孩子,发送方发送的量应该由接收方来决定或者说来调节。二—TCP流量控制(flow control)的产生原因以及控制手段让发送方不要太快,以免接收方接收不过来。滑动窗口就是控制手段。上图即为滑动窗口,图示滑动窗口大小为400,滑动窗口由接收方调节。三—实例说明在

2021-01-05 09:40:35 133

原创 如何使用容器镜像服务 TCR 轻松实现容器 DevOps

概述当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器的 DevOps 服务,自动化地完成镜像构建以及集群内容器的镜像版本更新。腾讯云容器镜像服务 TCR 提供云原生应用交付流水线功能,全链路可追踪、可观测、可自主配置,让用户可以轻松实现代码提交变更后,自动触发镜像的构建和推送,并将镜像更新到容器服务 TKE、弹性容器服务 EKS 等平台创建的集群中,完成最终的交付,为企业级用户在腾讯云上提供一体化云原生 DevOps 解决方案。本文主要介绍如何使用容器镜

2021-01-05 09:40:04 149

原创 记录一次 Nginx 配置 proxy_pass 后 返回404问题

一、 Nginx 配置 proxy_pass 后 返回404问题 故障解决和定位1.1、 问题在一次生产涉及多次转发的配置中, 需求是下面的图: image在配置好了 proxy_pass 之后,请求 www.djx.com 直接返回 404,没有什么其他的异常。 但是我们直接请求后端 www.baidu.com 是正常响应的。这就很怪异的。 看日志请求也是转发到了 www.baidu.com 的。但是请求响应就是404.1.2、 寻找问题原因我们的默认的 Nginx的 proxy_set_hea

2021-01-05 09:39:11 2682

原创 HDFS概述

产生背景随着数据量越来越大,在一个操作系统中存不下所有的数据。需要将这些数据分配到更多的操作系统中,带来的问题是多操作系统不方便管理和维护。需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS是分布式文件管理系统中的一种定义HDFS(Hadoop Distributed File System)它是一个文件系统,用于存储文件,通过目录树来定位文件。其次,他是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色HDFS 的使用场景:适合一次写,多次读的场景,且不支持文

2021-01-05 09:38:40 86

原创 浅谈面试官的“被面试”技能

前言面试其实也是一个双向选择的过程,面试官在筛选候选人的同时,候选人也在筛选面试官和企业。特别是能力较强的候选人,他们往往可以拿到多个offer,这个时候就很看面试官吸引候选人的能力了。这不光看面试官的个人魅力,也是一项可以学习的技能。能力判断和筛选是面试官最主要的职责,这毋庸置疑。但此外,作为招聘流程中的一环,除了“筛选”之外,“招”才是最终目标,如果我们筛选出来的候选人,却招不进来(候选人没选我们),那筛选也将失去意义。如果面试官具有良好的“被面试”技能,除了能帮助我们招到心仪的候选人,还能帮公司节

2021-01-05 09:37:40 119

原创 Python正则表达式

正则表达式(Regular expression)是组成搜索模式的一组字符序列,是记录文本规则的代码,用来检查文本中是否包含指定模式的字符串,通过定义一个规则来匹配字符串。正则表达式广泛应用于在字符串查找和处理中,大多文本编辑器基本都支持正则表达式查找。本文将简要介绍正则表达式语法,然后介绍Python语言中正则表达式使用方法。正则表达式Unix之父Ken Tompson将正则表达式引入Unix,后面发展成了grep(Global Regular Expression Print)命令,由于grep不支

2021-01-05 09:37:15 62

原创 神奇的 SQL 之性能优化 → 让 SQL 飞起来

一天,一个男人去未婚妻家玩,晚上临走时下起了大雨未婚妻劝他留下来过夜,说完便去准备被褥,准备就绪后发现未婚夫不见了过了好久,全身淋的像只落汤鸡的未婚夫回来了未婚妻吃惊的问:“你跑哪去了”未婚夫上气不接下气的回答:“我,我回家拿睡衣去了”写在前面在像 Web 服务这样需要快速响应的应用场景中,SQL 的性能直接决定了系统是否可以使用;特别在一些中小型应用中,SQL 性能更是决定服务能否快速响应的唯一标准严格地优化查询性能时,必须要了解所使用数据库的功能特点,此外,查询速度慢并不只是因为 SQL

2021-01-05 09:36:38 73

原创 在大型软件项目中如何处理错误和异常

我在测试中没有发现bug,所以系统没有bug,对吧?不幸的是,大规模的软件太复杂,无论多少测试都无法做到没有bug。你无法对用户使用应用程序的所有不同方式进行测试。因此,理解应用程序中错误和异常的区别是非常重要的,同时要了解处理它们的正确方法,以便你可以采取主动的方式为开发团队和终端用户提供健康的应用程序。测试的局限性即使使用最彻底的测试过程,仍然只是在测试特定的情况,并且包含了自己的想法在其中。想象一下,突然有成千上万的用户以你没有想到的方式使用你的应用程序——他们几乎肯定会碰到你在测试时没有碰

2021-01-05 09:36:01 432

原创 线性回归

线性回归一元线性回归假设对于观测对象x和y我们收集到了一批数据x={x1,x2,x3,…,xn},y={y1,y2,y3,…yn}我们希望找到一个一元线性函数(一个因变量y和一个自变量x)yi=f(xi)=wxi+b使得函数(模型)预测出来的值和原来的值的误差平方和S=∑i=1n(f(xi)−yi)2最小,也即是它们的欧式距离最小,这样就会有f(xi)≈yi我们定义代价函数为(这里添加系数12是为了方便求导)L(w,b)=12S=12∑i=1n(f(xi)−yi)2所以问题变成了,寻

2021-01-04 08:55:57 354

原创 Spring Cloud Sleuth链路监控应用

一、Sleuth介绍为什么要使用微服务跟踪?它解决了什么问题?1.微服务的现状?微服务的现状  随着业务的发展,单体架构变为微服务架构,并且系统规模也变得越来越大,各微服务间的调用关系也变得越来越复杂。多服务协同工作  在微服务的应用中,一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果复杂的调用链条容易出错  在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请

2021-01-04 08:55:29 91

原创 RocetMQ搭建攻略和问题解决之道

最近有在尝试给项目加入消息中间件服务,首先想到了鼎鼎大名的RocketMQ。RocketMQ是一款高性能的、分布式消息中间件,由阿里开源。它提供了丰富的消息拉取方式,能够处理上亿级的海量数据,甚至在阿里双十上经受了超大的请求峰值,其商业可用性值得依赖和使用。安装方式比较简单,就是在Rocket官网去下载对应版本的压缩包。有两种选择,一种是binary版本,也就是编译好的bin文件压缩包。还有一种是source版,就是需要被编译的源码包。我选择使用编译好的bin包,版本为最新的4.8.0。使用如下命令完成

2021-01-04 08:54:52 241

原创 程序健壮性的提高要从设计、实现、测试三方面入手,具体来说

设计系统系统外部模块的异步响应都需要设置超时时间,要有超时处理,超时时间要和外部模块协商一个合理时间。发送消息失败和设置timer失败统一做处理。需要设计相关机制(比如心跳包机制)监控进程/线程是否发生了堵塞,发生堵塞后需要设计相应的处理流程。需要设计相关机制来监控CPU的占有率,当CPU占有率超过阈值后要设计相应的处理流程。模块系统内部所有需要等待的异步响应都要有超时处理。关联组件的行为不一致要做异常处理:比如:APP模块认为通信已经断开,故不会再次请求通信MID模块去执行通信..

2021-01-04 08:54:25 352

空空如也

空空如也

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

TA关注的人

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