响应式编程入门之 Project Reactor
本文目标理解响应式编程前言之前的 《聊聊 IO 多路复用》 中,我们理解了非阻塞 IO 的意义。但是 Spring MVC 并不能完美的应用非阻塞编程,于是 Spring 团队开发了 WebFlux,而 WebFlux 的基础正是本文要讲到的 Project Reactor(下文简称为 Reactor)本文以 Reactor 为例带大家入门响应式编程版本
本文目标理解响应式编程前言之前的 《聊聊 IO 多路复用》 中,我们理解了非阻塞 IO 的意义。但是 Spring MVC 并不能完美的应用非阻塞编程,于是 Spring 团队开发了 WebFlux,而 WebFlux 的基础正是本文要讲到的 Project Reactor(下文简称为 Reactor)本文以 Reactor 为例带大家入门响应式编程版本
本文分享自天翼云开发者社区《如何通过云函数操作云数据库?》,作者:不知不觉随着云计算的普及,云数据库作为一种高效、灵活和可靠的数据存储和管理服务,为企业提供了强大的支持。而云函数作为云计算的重要组成部分,为开发者提供了在云端执行代码的能力。本文将探讨如何通过云函数操作云数据库。一、云函数概述云函数是一种在云端执行代码的函数,它允许开发者在云端编写、部署和执行代码。云函数具有高可用性、弹性扩展和安全性等特点,为企业提供了更加高效、灵活和可靠的开发方式。二、通过云函数操作云数据库的步骤创建云函数:首先,需要在云服务提供商的平台上创建一个云函数。这个过程通常包括编写代码、设置函数参数和配置等步骤。连接云数据库:在云函数中,需要使用合适的库或驱动程序来连接云数据库。这通常涉及到提供数据库的连接信息,...阅读全文
学习地址1:https://pan.baidu.com/s/1t7YzuC7b3g2Nsm9frtGJZA 提取码: ughc 学习地址2:https://share.weiyun.com/zUoCBRio 密码:dc5hxc 什么是风控系统? 风控系统是指一系列的完整的风险控制,以保证事情向好的方向发展,而免受不可预估的经济和财产损失而措手不及。 风控类型 风控类型一般分为事前、事中、事后三种。 事前风控是指在交易指令发送到交易所前,对交易指令进行风险检测,通过检测的交易指令则提交到交易模块进行报单,未通过检测的交易指令将直接予以拒绝。对于追求低延时的交易策略,事前风控需要在极短的时间内完成。 事中风控主要是指在交易过程中,交易团队对策略的信号生成、执行情况进行监控以及盘中对策略的风险度进...阅读全文
前言继去年1.2.47 Fastjson被绕过之后,最近的1.2.68又出现了绕过。 正好前段时间翻了一遍Fastjson的源码,对整体逻辑有了一些了解,就尝试分析下autotype的校验过程,以及这两次绕过的思路。若有错误,还望指出。 autotype的校验为什么校验一直被绕过?1.2.24之后,fastjson对反序列化的类型进行了校验,主要就体现在ParserConfig.checkAutoType函数中 里面会对反序列化的类型进行黑白名单和校验,然后获取对应的Java类。 至于为什么没开启SupportAutoType属性依然会存在反序列化的危险呢? 可以看到在解析过程中,只要key值为@type时,就会进入checkAutoType函数尝试获取类。 而且校验SupportAutoT...阅读全文
这篇文章介绍如何使用 PromQL 查询 Prometheus 里面的数据。包括如何使用函数,理解这些函数,Metrics 的逻辑等等,因为看了很多教程试图学习 PromQL,发现这些教程都直说有哪些函数、语法是什么,看完之后还是很难理解。比如 [1m] 是什么意思?为什么有的函数需要有的函数不需要?它对 Grafana 上面展示的数据有什么影响?rate 和 irate 的区别是什么?sum 和 rate 要先用哪个后用哪个?经过照葫芦画瓢地写了很多 PromQL 来设置监控和告警规则,我渐渐对 PromQL 的逻辑有了一些理解。这篇文章从头开始,通过介绍 PromQL 里面的逻辑,来理解这些函数的作用。本文不会一一回答上面这些问题,但是我的这些问题都是由于之前对 PromQL 里面的逻辑...阅读全文
【完结13章】高性能多级网关与多级缓存架构落地实战 给大家分享一套网关课程——高性能多级网关与多级缓存架构落地实战,已完结13章,附源码+电子书。 多级网关与多级缓存架构是一种常用的系统架构设计模式,用于提高系统性能和可扩展性。下面详细介绍一下这两种架构。 多级网关架构(Multi-tier Gateway Architecture): 多级网关架构是指将系统划分为多个层次或级别的网关,每个网关层次负责执行特定的功能。每个网关层次都有其特定的职责,可以是协议转换、数据加工、请求分发等。不同的网关层次可以部署在不同的服务器上,通过网络连接起来。 多级网关架构的主要优点包括: 1. 模块化和可扩展性:通过将系统划分为多个网关层次,可以方便地扩展和替换某个特定层次的功能模块,而无需影响整个系统。 ...阅读全文
【完结26章】Java主流分布式解决方案多场景设计与实战 给大家分享一套java课程——Java主流分布式解决方案多场景设计与实战,已完结26章,附源码+文档下载。 Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下: Client客户端:负责存储协议的接入,节点负载均衡 MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map MDS元数据服务:负责保存文件系统的元数据,管理目录结构 OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。 分布式文件系统(D...阅读全文
前端高手特训 从0到1带你手写一个微信小程序底层框架,小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。 框架 管理了整个小程序的页面路由,可以做到页面间的无缝切换,并给以页面完整的生命周期。开发者需要做的只是将页面的数据、方法、生命周期函数注册到 框架 中,其他的一切复杂的操作都交由 框架 处理。 wepy支持类似Vue的组件化开发,可以将页面拆分成多个独立的组件,提高代码复用性和开发效率。下面我们通过一个实际的案例来说明组件化开发在wepy中的应用。假设我们有一个小程序项目,其中包含一个商品列表页面和一个商品详情页面。我们可...阅读全文
## 引言 在 Java 应用中,尤其是在使用本地库(如通过 JNI 接口调用)的场景下,崩溃和 core dump(核心转储)的问题时有发生。这样的崩溃不仅会中断应用的正常运行,还会带来大量调试和排查的工作。本文将介绍如何使用 dmesg 和 gdb 工具分析和诊断 Java 应用的 core dump 问题,特别是在使用 Snappy 库时遇到的问题。 ## 使用 dmesg 检查 core dump 信息 当一个应用崩溃时,首先应该查看内核消息日志。dmesg 命令可以帮助我们快速获取内核日志并查看崩溃的详细信息。 示例 运行 dmesg 命令来查看最新的内核消息: dmesg | grep -i "segfault" 输出中可能包含类似以下信息: 123456.789012] mya...阅读全文
[15章]基于C++从0到1手写Linux高性能网络编程框架 学习地址1:https://pan.baidu.com/s/1AISz1k_2uwYAB41St1HxfA 提取码:t2gy 学习地址2:https://pan.baidu.com/s/1MgD4BdeD6V6HfXkoMAZ5Hw 提取码:l5t4 深度掌握网络编程是逆袭成为高阶开发者的秘密法宝,所以今天给大家深度讲解基于C++的Linux高性能事件驱动网络编程框架的设计方法及技巧,我将采取渐进迭代的授课方式,配合C++11新特性的使用,以及网络编程理论的深度讲解,并手把手带着大家落地实现,助力在网络编程领域有更大的技术提升! TCP/IP协议在设计和实现上并没有客户端和服务器的概念,在通信过程中所有机器都是对等的。但由于资源(...阅读全文
10章-SpringBoot 3 + Flutter3 实战低代码运营管理 地址1:https://pan.baidu.com/s/1Uay0bc6ghAVf401t-OdXiQ 提取码:sqcs 地址2:https://pan.baidu.com/s/1l3kJpBzm9tw0xbTC2BVbew 提取码:2law 1、什么是低代码 低代码(Low Code)是一种可视化的应用开发方法,用较少的代码、以较快的速度来交付应用程序,将程序员不想开发的代码做到自动化,称之为低代码。Gartner随后又提出了aPaaS和iPaaS的概念,其中aPaaS概念和低代码非常吻合。随着这一概念的不断推广,全球市场上都涌现出了很多低代码平台。 2、低代码起源 Gartner随后又提出了aPaaS和iPaaS...阅读全文
基于SpringBoot3.x+Vue3.x整合从0到1一步一步实现酒店管理系统 给大家分享一套课程——基于SpringBoot3.x+Vue3.x整合从0到1一步一步实现酒店管理系统,附源码+笔记+数据库脚本下载。 Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架...阅读全文
学习地址1:https://pan.baidu.com/s/1OeNVv-9zowTbFVIpjSl8aQ 提取码:86h5 学习地址2:https://pan.baidu.com/s/187GgonRED21EseHMNE5ayg 提取码:bwsj 今天给大家讲解关于Qt的内容,我会在文章里面带着大家从0到1为你系统构建Qt知识体系,然后全流程实战开发项目“云对象存储浏览器”,让大家少走弯路,更快速的掌握Qt技术。 那么我们先来认识一下,什么是QT,他的具体作用是什么,应用在哪些方面? Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。 QT之所以能够在全世界范围内得到广大软件...阅读全文
学习地址1:https://pan.baidu.com/s/1qOyFstIuAnTIlBo0-K1YDg 提取码: 68vv 学习地址2:https://share.weiyun.com/VAU3sFU2 密码:9cqtcj WPF 主要编程模型通过托管代码公开。 在 WPF 的早期设计阶段,曾有过大量关于如何界定系统的托管组件和非托管组件的争论。 CLR 提供一系列的功能,可以提高开发效率和可靠性(包括内存管理、错误处理和通用类型系统等),但这是需要付出代价的。 PresentationFramework、PresentationCore 和 milcore是 WPF 的主要代码部分。 在这些组件中,只有一个是非托管组件 - milcore。 milcore 是以非托管代码编写的,目的是...阅读全文
【24章】Qt 全流程实战企业级项目 - 云对象存储浏览器 给大家分享一套课程——Qt 全流程实战企业级项目 - 云对象存储浏览器,课程共24章,包更新。附源码+PDF课件。 开发QT有两种IDE可以使用,一种是使用 VS + Qt 的插件,另一种就是使用QtCreator工具。前一种是微软的工具,用的都比较多容易上手,缺点是信号槽的支持不太好,需要手写,不能自动生成,另外可能有中文编码的问题。后一种是Qt的官方IDE,智能提示与调试功能不如VS强大,但是是跨平台的IDE,其QtDesigner设计UI界面操作比较方便,并且由于是QT官方的IDE,对编码等支持都比较好,里面集成了Qt的帮助文档。不得不说Qt的帮助文档做的是非常好的,集成进QtCreator环境之后更加方便。 QT中最常用的控...阅读全文
相关阅读 【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(简述十大新特性) 饱受赞誉 【小家java】java9新特性(简述十大新特性) 褒贬不一 【小家java】java10新特性(简述十大新特性) 小步迭代 【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本 【小家java】Java中的线程池,你真的用对了吗?(教你用正确的姿势使用线程池) 小家Java】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 【小家java】BlockingQueue阻塞队列详解以及5...阅读全文
本文分享自天翼云开发者社区《分布式系统中的分布式链路追踪与分布式调用链路》,作者:c****w在分布式系统中,由于服务间的调用关系复杂,需要实现分布式链路追踪来跟踪请求在各个服务中的调用路径和时间消耗。这对问题排查和性能监控都很重要。常用的分布式链路追踪实现有基于日志的和基于分布式追踪系统的两种方式:基于日志的实现方式是在每个服务中记录自己的请求id和上下文信息,并在日志中打印出来。这样可以通过聚合各个服务的日志来还原整个请求链路。基于分布式追踪系统的实现方式是:使用开源Tracing系统,比如Zipkin。每个服务都需要集成Tracing客户端库。客户端在发起请求时,生成一个唯/一的TraceId并传递给下游服务。每个服务接收到请求都需要记录Span数据,包括操作名、时间戳等。所有Span...阅读全文
HBase模式设计是需要注意的问题:1.设计准则1)行键设计读访问模式:通过行键索引提升查询效率。HBase中唯一可用的索引只有行键索引,需要对行键精心设计来尽可能地优化数据查询。某项数据放在行键中会得到更好的查询性能,但是行键的长度变长,行键索引会占用更多的内存资源,由于行键在每个列族中保存,也会需要更多的磁盘空间。写访问模式:避免同一时间段里写入的数据形成热点。随机前缀:在原先彼此相邻的行键前面加上一个随机生成的前缀。哈希前缀:针对随机前缀生成的行键具有不确定性的缺陷,哈希前缀做了改进,通过对原行键调用选定的哈希函数生成前缀。反转键:将原先彼此相邻的行键按字节序反转生成新的行键。以上几种策略都会失去数据按特定行键顺序存放的特性,在进行范围查询时需要访问全部索引数据且需要有更多的磁盘IO操...阅读全文
本文分享自天翼云开发者社区《存储程序和程序控制:开发经验分享及操作过程详解》,作者:二进制诗人存储程序和程序控制是计算机行业中非常重要的一部分。它涉及到如何将程序和数据存储在计算机内存中,并通过程序控制来实现各种功能。本文将分享我的开发经验,并详细解释如何进行存储程序和程序控制的操作过程。1.理解存储程序和程序控制的基本概念 在计算机中,存储程序是指将程序和数据存储在内存中的过程。程序控制是指通过编写程序来控制计算机的运行,实现各种功能。理解这些基本概念是进行存储程序和程序控制开发的基础。2.选择合适的编程语言和开发环境根据具体的需求和开发经验,选择合适的编程语言和开发环境非常重要。常用的编程语言包括C、C++、Java等,而开发环境则可以选择Visual Studio、Eclipse等。根...阅读全文
 OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为一个个OpenGL的对象,对这些资源的操作抽象为一个个的OpenGL指令。 OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API接口。 Vulkan学习难度过高,个人做项目太耗时间,所以OpenGL依旧是很好的选择。很多大神都认为,先学OpenGL打基础...阅读全文
本文分享自天翼云开发者社区《存储结构的种类与比较》,作者:3****m一、存储结构的种类顺序存储结构顺序存储结构是一种线性数据存储方式,数据按照顺序方式存储在一片连续的存储区域中。顺序存储结构的特点是数据元素之间的逻辑关系与物理位置的存储顺序一致。这种存储结构适用于数据量较小、数据元素之间关系简单的情况。链式存储结构链式存储结构是一种非线性数据存储方式,通过指针或链接将各个数据元素链接起来。链式存储结构的特点是数据元素的物理位置可以不相邻,但通过指针或链接保持逻辑上的关联。这种存储结构适用于数据量大、数据元素之间关系复杂的情况。散列存储结构散列存储结构是一种基于哈希函数的数据存储方式,通过将数据元素的键值映射到固定大小的数组中,实现数据的快速检索。散列存储结构的特点是数据的检索速度快,但需要...阅读全文
 C++大厂面试汇总,希望对大家的面试有帮助: 1、C和C++的区别 C是面向过程的语言,而C++是面向对象的语言。 C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。 C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。...阅读全文
在前面的两篇文章中,我们已经详细介绍了MyBatis的工作原理和基本使用。今天,我们将深入探讨MyBatis的一个重要特性——注解。如果你对MyBatis的注解还不熟悉,那么这篇文章将为你打开一扇新的大门。 ## 一、什么是注解(Annotation) 首先,我们需要明白什么是注解。注解 Annotation 是从JDK1.5开始引入的新技术。 在Java中,注解是一种用于描述代码的元数据,它可以被编译器、库和其他工具读取和使用。MyBatis的注解就是用来简化XML配置的,它们可以让你的代码更加简洁、易读。 **注解的作用:** - 不是程序本身,对程序作出解释 - 可以被其他程序读取到 **Annotation格式:** 注解是以@注解名的方式在代码中实现的,可以添加一些参数值 如:@S...阅读全文
在开发 JavaScript 应用程序时,经常需要检查对象是否为空。这是因为在处理和操作对象数据时,我们需要确保对象包含有效的值或属性。以下是一些常见情况,我们需要检查 JavaScript 对象是否为空: **防止空引用错误:** 当我们尝试访问或使用一个空对象时,可能会导致空引用错误(如 TypeError: Cannot read property ‘x’ of null)。通过检查对象是否为空,我们可以避免这些错误的发生,并采取相应的处理措施。 **数据验证和表单提交:** 在表单提交之前,通常需要验证用户输入的数据是否有效。如果对象为空,表示用户未提供必要的数据或未填写表单字段,我们可以显示错误消息或阻止表单提交。 **条件逻辑和流程控制:** 根据对象是否为空,可以根据不同的条件...阅读全文
在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析。接下来就聊聊Hive中是如何解析json数据的。 本文首发于公众号【五分钟学大数据】 Hive自带的json解析函数 1. get_json_object 语法:get_json_object(json_string, '$.key') 说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。这个函数每次只能返回一个数据项。 示例: select get_json_object('{"name":"zhangsan","age":18}','$.name')...阅读全文
近日,由天翼云弹性网络产品线撰写的《Small Scale Data-free Knowledge Distillation》长文被IEEE Conference on Computer Vision and Pattern Recognition收录。IEEE CVPR是人工智能与模式识别技术领域的顶/级国际学术会议,也是中国计算机学会CCF推荐的A类国际会议之一。该会议始于1983年,是业界公认的全球计算机视觉三大顶/级会议之一。此次论文被IEEE CVPR成功收录,不仅展现了天翼云在AI领域的创新能力,也意味着中国企业在国际学术舞台上的影响力日益增强。《Small Scale Data-free Knowledge Distillation》这篇长文提到,知识蒸馏技术(Knowled...阅读全文
万字文让你了解 Java 8 Lambda、函数式接口、Stream 用法和原理一定要看到最后,那是心动的感觉! 我是风筝,公众号「古时的风筝」。一个兼具深度与广度的程序员鼓励师,一个本打算写诗...IT领域君阅读 401评论 0赞 ...阅读全文
本文分享自天翼云开发者社区《带你走进量子云平台(二)》,作者:Qubit量子叠加和量子纠缠这两个基本特性,使得量子计算机在解决某些类型的问题时比经典计算机快得多。这两个属性从本质上决定了一个基本事实——量子计算天然地由概率主导。换句话说,这意味着量子程序本质上是概率性的、随机的。因此,要在量子计算机上实现业务逻辑或算法需要独特的编程模型。量子程序和经典程序的本质区别是它们能够利用量子计算机的独特能力(即量子位的叠加和纠缠)。量子计算领域的研究人员目前已经开发了一些技术,包括振幅放大技术、量子傅立叶变换技术、相位回退技术、量子相位估计技术以及量子游走技术。这些技术利用量子计算机的特性来快速解决某些在经典计算机上需要更长时间才能解决的问题。比如,量子搜索算法就采用了振幅放大技术,大整数分解算法则...阅读全文
本文分享自天翼云开发者社区《ISA-L库调研》,作者:何****尔1.Intel SIMD指令集SIMD(single instruction multiple data)单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。以同步方式,在同一时间内执行同一条指令。以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。目前主流的支持SIMD相关指令的寄存器有128bit(XMM 指令)、256bit(YMM 指令)这两...阅读全文
本文分享自天翼云开发者社区《Ceph的crush算法与一致性hash对比介绍》,作者:l****n首先,我们先回顾下一致性hash以及其在经典存储系统中的应用。一致性hash的基本原理一致性hash的基本思想是,有一个hash函数,这个hash函数的值域形成了一个环(收尾相接:the largest hash value wraps around to the smallest hash value),然后存储的节点也通过这个hash函数随机的分配到这个环上,然后某个key具体存储到哪个节点上,是由这个key取hash函数对应到环的一个位置,然后沿着这个位置顺时针找到的第一个节点负责这个key的存储。这样环上的每个节点负责和它前面节点之间的这个区间的数据的存储。如上图所示,hash函数的总...阅读全文
在近日召开的第二十六届中国科协年会上,中国科协正式发布2023年“科创中国”系列榜单,榜单包括先导技术榜、新锐企业榜、融通创新组织榜、技术经理人先锋榜等。天翼云自主研发的天翼分布式云操作系统入选先导技术榜,充分展现了在科技创新方面的硬实力。“科创中国”系列榜单由中国科协设立。2023年“科创中国”系列榜单聚焦“技术攻关+成果转化+组织赋能+人才支撑”全过程创新生态链,挖掘一批前沿技术成果、潜力型科创企业、产学研协同创新组织、技术转移转化人才,打造特色与引领兼备的榜单品牌。其中,先导技术榜遴选出具有产业先导意义和广阔市场前景的前沿技术。天翼分布式云操作系统的成功入选,代表了权威机构对天翼云科技创新能力的高度认可。天翼分布式云操作系统TeleCloudOS(简称:云操作系统)核心组件自研,突破...阅读全文
步骤1: 设置HBase环境与连接确保已经正确配置了HBase的客户端依赖(如hbase-client、hbase-common等),并设置了HBase的ZooKeeper地址。以下是一个简化的示例,假设您已经有了一个配置好的Configuration对象(conf)和表名(tableName):import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;// 创建...阅读全文
本文分享自天翼云开发者社区《接口性能测试---locust脚本编写(一)》,作者:丁****乐一、安装locust是用python编写的一款开源接口性能测试工具,以python3为例,直接使用pip安装即可,pip3 install locust。安装完成之后可使用locust --version查看对应的版本。二、脚本编写通过编写python脚本模拟用户行为进行性能测试,locust python脚本一种比较常见的写法是将脚本分成三部分,第一部分进行相关导入、第二部分进行用户行为定义,第三部分进行用户定义。以一个例子进行讲解首行进行了包导入,导入了常用的类、装饰器和函数。Behave定义了进行用户行为定义,声明了两个操作,一个是get请求,一个是post请求。TestUser定义了用户...阅读全文
Kernel-bypass,即绕过内核的意思,是一种计算机科学中的技术方法,用于减少操作系统内核在数据处理路径中的参与,从而降低系统调用的开销,提高数据传输和处理的效率。在高吞吐量、低延迟的应用场景中,如高性能网络通信、大数据处理、金融交易系统等,kernel-bypass技术尤为重要。传统的数据传输流程需要经过用户空间(User Space)到内核空间(Kernel Space)的上下文切换,这个过程会引入额外的延迟。Kernel-bypass技术允许应用程序直接访问硬件资源(如网卡、存储设备),跳过了内核参与的数据路径,减少了系统调用和内存拷贝的次数,进而提升应用的性能。一些常见的kernel-bypass技术包括:DPDK (Data Plane Development Kit): 为...阅读全文
C++大厂面试真题宝典 精选100道 好课大家一起分享——C++大厂面试真题宝典 精选100道,附课程源码下载。 C和C++的区别 C是面向过程的语言,而C++是面向对象的语言。 C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。 C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。 C++支持重载,而C语言不支持。 C++有引用,C没有。 C++全部变量的默认链接属性是外链接,而C是内链...阅读全文
本文分享自天翼云开发者社区《redis渐进式rehash》,作者:l****nRedis是k-v型数据库,其内部设计了一种dict类型的数据结构用来存储键值结构。dict 通常的存储结构是 Key-Value 形式的,通过 Hash 函数对 key 求 Hash 值来确定 Value 的位置,因此也叫 Hash 表,是一种用来解决算法中查找问题的数据结构,默认的算法复杂度接近 O(1)。使用哈希表总是会遇到哈希碰撞问题,dict使用拉链法将发生碰撞的元素组成链表,挂在发生碰撞的桶下,但是随着存储元素的不断增加,碰撞发生的几率也不断增大,一个桶下链接的链表长度越来越长,定位一个key的时间复杂度就无法保证了,redis作为内存数据库,本身追求的是更高的处理性能,线性增加的耗时无疑是不能接受的,...阅读全文
本文分享自天翼云开发者社区《CBAM注意力模型介绍》,作者:Liuzijia近年来,注意力机制在各项深度学习任务中表现出色。研究表明,人类视觉感知过程中,注意力机制发挥了积极的效果,可以帮助人们高效和自适应的处理视觉信息并聚焦于显著的画面区域,从而能够做出最准确的判断。因此,通过模拟视觉注意力机制,在网络结构中加入注意力模块,使模型可以更加关注待分类图像中的关键信息,抑制不相关的特征信息,促使模型对重要的特征区域更加敏感,从而有效提升相关任务的性能。本文简要介绍一种经典的混合注意力模型CBAM。CBAM[1]是一种结合了通道与空间注意力的混合注意力模块,通过该模块可以自适应的强化特征提取过程。图1 CBAM结构(引用自文献[1])图1为CBAM的结构。对于输入特征图,该模块会依次推断出一个...阅读全文
【36章】NestJS从拔高到精通,大型复杂业务架构落地实践 Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。 在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify ! Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以...阅读全文
近日,天翼云TeleDB数据库在中国信通院“可信数据库”系列测试的赛道上,一次性跨越“分布式事务型数据库基础能力测试”与“性能测试”的双重大关,以云服务国家队的卓越实力为数据库领域树立了新标杆。中国信通院开展的“可信数据库”系列测试是国内面向数据库产品及周边工具、数据库服务商和应用侧为评价目标的权威测试体系,是厂商产品研发和用户采购选型的风向标。其中,分布式事务型数据库基础能力测试依据YD/T 3775-2020《大数据 分布式事务数据库技术要求与测试方法》行业标准,对分布式事务型数据库的基础能力、兼容能力、管理能力、高可用能力、扩展能力、安全能力、性能七大能力域进行测试;分布式事务型数据库性能测试则是针对金融场景下分布式事务型数据库的性能水平进行测试的标准化测试体系,并能对数据库在故障场...阅读全文
引言 在实际业务开发中,随着业务的变化,数据的复杂性和多样性不断增加。传统的关系型数据库模型在这种情况下会显得受限,因为它们需要预先定义严格的数据模式,并且通常只能存储具有相同结构的数据。而面对非结构化或半结构化数据的存储和处理需求,选择使用非关系型数据库或者创建子表存储这些变化的结构可能会变得复杂。在这种情况下,我们可以利用MySQL的JSON字段类型来解决这个问题。JSON字段提供了灵活的数据存储方式,能够轻松应对数据结构的变化和动态性,从而更好地满足业务需求。 MySQL5.7.8版本引入了JSON数据类型,允许在数据库表中存储和操作符合JSON格式的数据。这种原生支持JSON(JavaScript对象表示法)的数据类型遵循RFC 7159标准,提供了有效存储复杂、半结构化数据的方式。...阅读全文
今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到 字节码插桩,bTrace,Arthas后面才逐渐了解到Java还提供了这么个工具。 JVM启动前静态Instrument Javaagent 是什么? Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求: 这个 jar 包的 MANIFEST.MF 文件必须指定 Premain-Class 项。 Premain-Class 指定的那个类必须实现 premain() 方法。 premain 方法,从字面上理解,就是运行在 main 函数之前的的类。当Java 虚拟机启动时,在执行 main 函数之前,JVM 会先运行-javaa...阅读全文
本文分享自天翼云开发者社区《分布式系统心跳机制(一)》,作者:白杨分布式系统架构当前大部分分布式系统架构如下图:有一个中心节点来存储集群元数据和管理work儿节点,中心节点采用主备模式来实现HA。当中心节点主故障后,备节点接管业务成为主节点。我们下面讨论的心跳机制就是基于这种分布式架构而设计的。心跳设计目标:1.master控制节点的切换,不可以影响server的心跳。2.server可以感知到master的每一次切换。3.master在任意场景下都不会丢失server故障的事件。4.心跳可以作为其它控制消息是否需要重试的依据。心跳Clien端设计:a.worker2启动后只有master的列表,并不知道哪个是leader,因此先广播bootstrap信息。b.只有leader节点响应b...阅读全文
PostgreSQL DBA实战视频教程(10门课程合集) PostgreSQL作为一款功能强大的开源关系型数据库,其DBA(数据库管理员)在日常管理和维护中需要掌握一系列的SQL语句来确保数据库的性能和安全,以下是一些PostgreSQL DBA最常使用的SQL命令和技术介绍: 数据库连接与信息查询 连接到数据库并获取基本信息是DBA的日常任务之一,使用以下命令可以查看数据库的版本信息、当前设置的参数以及数据库列表。 -查看 PostgreSQL 版本 SELECT version(); -查看所有数据库 SELECT datname FROM pg_database; -查看当前设置的参数 SHOW config_file; 数据库维护 数据库维护包括备份恢复、性能调优、索引管理等。 数...阅读全文
【完结14章】MQ大牛成长课--从0到1手写分布式消息队列中间件 消息中间件是一种用于构建分布式系统的软件基础设施,提供了一种异步的,可靠的,可伸缩的消息传递机制。 提高系统性能首先考虑的是数据库的优化,但是数据库因为历史原因,横向扩展是一件非常复杂的工程,所有我们一般会尽量把流量都挡在数据库之前。 不管是无限的横向扩展服务器,还是纵向阻隔到达数据库的流量,都是这个思路。阻隔直达数据库的流量,缓存组件和消息组件是两大杀器。 什么是消息队列 消息队列(Message queue,简称MQ),是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。从字面理解就是一个保存消息的一个容器。 常见的消息队列 当前使用较多的消息队列有RabbitMQ、RocketM...阅读全文
点击下载:百度网盘第1章 课程导学介绍课程制作的背景和课程主要内容。1-1 课程导学试看第2章 课程介绍先出几道面试真题,引导思考。带着问题来继续学习,效果更好。2-1 先看几个面试题第3章 Vue 使用Vue 是前端面试必考内容,首先要保证自己要会使用 Vue 。本章讲解 Vue 基本使用、组件使用、高级特性和 Vuex Vue-router ,这些部分的知识点和面试题。3-1 vue使用-考点串讲3-2 vue基本使用3-3 vue基本知识点串讲-part23-4 vue父子组件如何通讯3-5 如何用自定义事件进行vue组件通讯3-6 vue父子组件生命周期调用顺序试看3-7 面试会考察哪些vue高级特性3-8 vue如何自己实现v-model3-9 vue组件更新之后如何获取最新DOM...阅读全文
本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和大量排版优化。 1、引言 关于Java网络编程中的同步IO和异步IO的区别及原理的文章非常的多,具体来说主要还是在讨论Java BIO和Java NIO这两者,而关于Java AIO的文章就少之又少了(即使用也只是介绍了一下概念和代码示例)。 在深入了解AIO之前,我注意到以下几个现象: 1)2011年Java 7发布,它增加了AIO(号称异步IO网络编程模型),但12年过去了,平时使用的开发框架和中间件却还是以NIO为主(例如网络框架Netty、Mina,Web容器Tomcat、Undertow),这是为什么?2)Java AIO又称为NIO 2.0,难道它也是基于NIO来实现的?3)Netty为什么会舍去了AIO的支持?(点此查看...阅读全文
void关键字表示函数没有返回结果,是java中的一个关键字。 java.lang.Void是一种类型。例如给Void引用赋值null。 Void nil = null; 通过Void类的代码可以看到,Void类型不可以继承与实例化。 public final class Void { /** * The {@code Class} object representing the pseudo-type corresponding to * the keyword {@code void}. */ @SuppressWarnings("unchecked") public static final Class
本文分享自天翼云开发者社区《遗传算法介绍》,作者:朱****洲遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。由于遗传算法是模拟自然规律的一种算法,它常用术语也都是用自然科学的名词来代替,主要有以下部分:1.个体:问题的一个解(无论可行)2.种群:问题的一个解的集合,包含多个个体3.染色体:个体以编码形式的存在方式4.基因:标识染色体的信息最小存在5.遗传:产生新个体的方式6.适应度:个体对应问题的解决能力遗传算法简单来说分为以下几个阶段:编码、生成初始种群、遗传操作、筛选。图为遗传算法运用的流程图,其分为以下步骤:1.编码编码是体现遗传算法借鉴...阅读全文
MySQL必会核心问题50讲(完结9章) 什么是数据库 数据库就是用于存储和管理数据的仓库,英文:DataBase(简称:DB),而在数据库中的数据也是有组织的进行存储! 采用的数据库的好处 如果我们采用数据库存储数据的话,我们不仅可以持久化存储数据(瞬时数据转化为永久数据),也可以方便存储和管理数据(因为文件不便于管理数据,那就由数据库来管理),还可以统一的方式操作数据库 SQL(MySQL、Oracle、SqlServer等关系型数据库管理系统 SQL操作方式基本一致,但是关系型数据存在SQL方言) SQL简介 MySQL是属于关系型数据库的一类,它是开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司,现在,MySQL属于Oracle,目前,MySQ...阅读全文