大项目内训 2023.5.11

news2025/5/18 20:45:34

目录

分别介绍一下消息处理相关的MQ、WebSocket、分布式事务

介绍一下异步消息传输

如何配置websocket

 ​编辑

 oatpp是什么?

cinatra是什么?

我们教育最大的缺失, 是缺乏阅读、写作和逻辑训练

佳作推荐


分别介绍一下消息处理相关的MQ、WebSocket、分布式事务

        消息处理相关的MQ(Message Queue)、WebSocket、分布式事务是现代分布式应用架构中常见的组件,分别用于异步消息传输、实时双向通信和事务管理。下面是它们的详细介绍:

  1. MQ(Message Queue):消息队列是一种用于异步消息传输的解决方案,可以在不同的应用程序和服务之间传输数据。它主要用于解耦、异步和可靠性传输等场景。当一个应用程序需要发送消息给其他应用程序时,它可以将消息发送到消息队列中,然后其他应用程序可以从消息队列中读取消息并处理它。消息队列通常支持多种消息协议和传输方式,如AMQP、MQTT、Kafka等。

 

A message queue is a form of asynchronous service-to-service communication used in serverless and microservices architectures. Messages are stored on the queue until they are processed and deleted. Each message is processed only once, by a single consumer.

  1. WebSocket:WebSocket是一种用于实时双向通信的解决方案,允许在浏览器和服务器之间建立持久化连接,实现实时消息交换和数据传输。相比于HTTP协议的请求-响应模式,WebSocket可以实现服务器向客户端主动发送消息,同时也可以由客户端向服务器发送消息。它主要用于实时通信、在线游戏、在线聊天等场景。

 

  1. 分布式事务:分布式事务是一种用于管理跨多个数据库或应用程序的事务的解决方案,用于保证分布式系统中的数据一致性和完整性。在分布式系统中,由于数据被分散在不同的节点上,一个操作可能会影响多个节点上的数据,因此需要一种机制来确保所有节点上的数据都能被正确地更新或回滚。常见的分布式事务解决方案包括2PC、TCC、Saga等。

导入依赖

websocket

 

 如何获取到连接对象

 

介绍一下异步消息传输

异步消息传输是一种基于事件驱动的消息传递机制,用于在系统组件之间异步传递消息。在异步消息传输中,发送方向消息代理发送消息,然后可以立即继续执行其他操作,而不需要等待接收方确认收到消息。消息代理负责将消息路由到目标组件,并确保消息的可靠传输。

异步消息传输通常用于分布式系统中,以解耦系统组件,提高系统的可伸缩性和可靠性。例如,一个系统可能包含多个服务,这些服务在不同的物理服务器上运行,通过异步消息传输可以将服务之间的通信解耦,提高系统的可伸缩性和可靠性。

异步消息传输的优点包括:

  • 解耦:发送方和接收方之间的通信解耦,提高系统的可维护性和可扩展性。
  • 可靠性:通过消息代理确保消息的可靠传输,避免了网络故障和服务宕机等问题。
  • 弹性:异步消息传输可以处理高并发和高负载情况,保证系统的高可用性。
  • 扩展性:异步消息传输可以轻松地扩展到多个节点,以支持更大的负载。

异步消息传输的缺点包括:

  • 复杂性:异步消息传输需要更多的设计和开发工作,以确保消息的正确处理。
  • 调试:异步消息传输在调试时可能会比同步传输更具挑战性,因为消息传递通常是异步的。
  • 性能:异步消息传输可能会引入额外的延迟,因为消息传递是异步的,需要等待消息代理将消息路由到接收方。

如何配置websocket

配置 WebSocket 的步骤如下:

1.创建 WebSocket 服务器程序并指定端口号(一般为 80 或 443)。

2.在服务器上设置 HTTP 请求处理程序以处理 WebSocket 协议握手请求。这通常涉及检查请求头以查看它们是否符合 WebSocket 规范,并使用特定的响应头返回确认。

3.建立 WebSocket 连接后,客户端和服务器可以交换消息。WebSocket 协议支持文本和二进制消息。

4.关闭 WebSocket 连接时,服务器应该发送一个关闭帧给客户端,以通知客户端连接已关闭。

在具体实现中,可以使用现有的 WebSocket 库或框架,如 Node.js 中的 ws、Python 中的 WebSocket、Java 中的 Java-WebSocket 等。这些库通常提供简单易用的接口和示例代码,使得配置 WebSocket 变得相对容易。

 

 

 

解析消息,消息格式,消息内容

拆分,“::”

产出两个数据


 

 

 

 

 oatpp是什么?

oatpp是一个C++ Web框架,用于构建高性能、可扩展且易于维护的Web服务。它支持HTTP/1.1和HTTP/2协议,并提供了一组工具和库,用于开发Web服务和API,包括路由、数据序列化、日志记录、测试、ORM、WebSocket等。oatpp的设计目标是提供一种易于使用的Web框架,同时保持高性能和可扩展性,它采用现代C++标准和最佳实践,以简单、高效和安全的方式开发Web应用程序。

cinatra是什么?

Cinatra是一个基于C++11标准的高性能Web框架,它使用了现代化的C++语言特性,如lambda表达式、智能指针等,同时支持RESTful API和WebSocket。Cinatra具有轻量级、简单易用、高性能等特点,它的设计目标是为了提供一种快速构建Web应用的工具,尤其适合需要高性能和实时交互的场景,比如游戏服务器、物联网等领域。Cinatra还支持多种平台和编译器,包括Windows、Linux、MacOS等操作系统,以及Visual Studio、GCC、Clang等编译器。

我们教育最大的缺失, 是缺乏阅读、写作和逻辑训练

随着近年海外教育热潮兴起,以美国部分精英大学和文理学院为代表的通识教育理念逐渐为国人了解。近年来国内一批知名高校也纷纷推出了自己的通识教育计划,如北京大学的元培学院、复旦大学的住宿书院、浙江大学的竺可桢学院等。那么什么是通识教育?

“通识教育”也常作“博雅教育”,对应的英文表述都是“Liberal arts education” , 在中文里却常被误解为文科教育。实际上“Liberal Arts”源自拉丁文“artes liberales”,意为“自由人的技艺”,目的是培养足以参与城邦公共生活的自由人。

在中世纪的欧洲大学里,这种教育被概括为“自由七艺”:文法、逻辑、修辞、几何、天文、算术、音乐。其中文法、逻辑和修辞这三艺(trivium)是核心,其余四艺(quadrivium)则是高阶课程。

与通识教育相对的,是强调学以致用的专业教育或职业教育,无论目标职业是否光鲜亮丽。接受了通识教育的学生当然可以选择去硅谷或华尔街,但以去硅谷或华尔街为目标的高等教育一定不是通识教育。

笔者本科就读于北京大学元培学院,当时还叫“元培实验班”。顾名思义,元培本是北大模仿美国精英大学的一次实验,初衷在于为全校推行通识教育铺路。

招生简章将元培的特色表述为:低年级通识教育,高年级宽口径的专业教育,学生原则上自由选择专业。新生教育第一课,院长叮嘱我们记住四个字:君子不器。元培学院的通识教育理念无疑带有激动人心的理想主义色彩,然而理想和现实之间到底有多大落差呢?

通识课程的边缘化

无论“通识”还是“博雅”,字面上都强调知识广博。中国大学在开展通识教育时,一个常见做法是要求学生选修本专业之外的课程。北大开设了五大类通选课程,涵盖了数学与自然科学,社会科学,哲学与心理学,历史学,语言学、文学与艺术,学生必须在每类中至少完成一门课程方能毕业。

这种做法部分参考了美国精英大学的课程表,其中最知名的当属芝加哥大学为低年级学生的“核心课程”。核心课程包括人文学科、数学和自然科学、社会科学三大类科目,强调西方古典人文传统、经典阅读和批判性写作,负担重,标准高,绝不是学生可以在专业课程之外稍加努力即可过关的,因此芝大的学生实际在第三年才开始将全部精力放在主修课程上。

相比之下,一个北大学生毕业需要完成140学分,而通选课程仅占16学分,其余的是专业必修课、专业选修课、英语课、政治课。低年级时学生的大部分精力耗费在专业课程上,到了高年级则忙于实习、找工作、申请海外研究生院和毕业论文,大学的有效教学时间实际上只有三年。

北大老师为通选课投入了相当的热忱和心力,执教通选课的老师不乏国内相关领域的一流学者,但缺乏核心课程这一制度保障,意味着通选课至多是专业课之余的调剂,元培的学生并没有特殊待遇。

大学课程的深度至少和广度同样重要。如果说知识的广度可以通过积极的自主阅读来弥补,那么清晰、精确、审慎、自洽这些珍贵的思维特质是很难在无人引领的情况下培养出来的。假如老师教学如蜻蜓点水,学生上课浮于表面,那么不管是专业课还是通选课,对学生的训练都是有限的。

一般来说,美国顶尖大学的学生每学期需要完成三到四门课程,但每门课程会附带可观的作业和阅读,而中国大学生的普遍一学期要学习八到十门课程。中国大学生并不比美国同龄人更努力,课程数目加倍,只能牺牲完成质量,每学期的一两门通识课完全有可能沦为形式主义。

佳作推荐

《被淹没和被拯救的》

普里莫·莱维

9.3(5004人评价)

本书是意大利最具知识分子良心的天才作家普里莫•莱维的最后作品。莱维以生命完成了对纳粹暴行的见证,他的简明易懂的作品是对生活奇妙的赞颂,证明了人类的精神无法被战胜,以及人类通过富有意义的作品、道德和艺术击败死亡的能力。

人们一定记得,当时距离奥斯维辛解放仅仅过去了15年:我这本书的读者正是“那些人”,而不是他们的继承者。之前他们是压迫者或冷漠的旁观者,而现在他们将是我的读者:我要将他们逼进困境,把他们绑在镜子前。算账的时刻到了,摊牌的时刻到了,而最重要的,对话的时刻到了。

《从一到无穷大》

G. 伽莫夫

9.1(13247人评价)

《从一到无穷大:科学中的事实和臆测》是当今世界最有影响的科普经典名著之一,1970年代末由科学出版社引进出版后,曾在国内引起很大反响,直接影响了众多的科普工作者。

作品以生动的语言介绍了20世纪以来科学中的一些重大进展。先漫谈一些基本的数学知识,然后用一些有趣的比喻,阐述了爱因斯坦的相对论和四维时空结构,并讨论了人类在认识微观世界(如基本粒子、基因)和宏观世界(如太阳系、星系等)方面的成就。

《渴望生活:凡·高传》

欧文·斯通

9.1(11350人评价)

《渴望生活:梵高传》是“传记小说之父”欧文·斯通的经典代表作。

温森特·梵高,一个为视艺术为信仰,以生命为火把,在暗影重重的人世间负重前行的探寻者。众所周知,梵高去世后才声名鹊起。追溯真正将梵高的文化影响力放大到整个社会的原因,绕不开欧文·斯通这本感动世人的传记小说《渴望生活》。

1927年春,年仅24岁的欧文·斯通在巴黎看到温森特·梵高的画展。那一年梵高去世刚刚37年,美国公众尚不知道这位荷兰画家。梵高的画作令斯通震撼不已:“进入了一个新的境界,整个世界豁然开朗。”“一切生命的有机成分都融合在一起,成为一个伟大崇高的统一体。”这位画家是个什么样的人?于是斯通细读梵高与弟弟的信件,“肩背旅行袋,走遍了欧洲,住在温森特曾经居住和作画的每一处房屋,跋涉在布拉邦特和法国南部的田野上,寻觅温森特曾经安插画架,把大自然变成不朽艺术的确切地点”。回到纽约的公寓后,六个月内四易其稿完成本书。

文章参考:

我们教育最大的缺失, 是缺乏阅读、写作和逻辑训练

这几本9分好书,你看了几本?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/514913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF-PWN学习-为缺少指导的同学而生

很抱歉,博主也是个PWN的入门者。PWN的入门不可能是无痛的。能做到的只是减少一点初学者的痛苦。这篇博客会长期维护,也会越来越好。后期还可能会在B站出视频(博主社恐,要迈出这一步可能需要好长时间)。 PWN是个啥&…

QT + OpenGL + FFmpeg写的一个全景视频播放器

临时被分配了一个任务 写一个C版本的全景视频播放器 网上搜了搜 基于前辈的基础上 写的差不多了 测试视频源是用ffmpeg拉RTSP的流 最终是要嵌入到别的一个视频播放器模块 所以解码这块我不用太关注 只要实现渲染就可以了 效果如下 左边的窗口用于输入视频源 以及显示…

dtb展开成device_node

dtb展开成device_node 文章目录 dtb展开成device_node设备树是如何传递给内核的?设备树相关结构体举例of操作函数与查找节点有关的 OF 函数1、of_find_node_by_name 函数2、of_find_node_by_type 函数3、of_find_compatible_node 函数4、of_find_matching_node_and_…

5个PPT素材、模板网站,免费下载,赶紧马住了~

推荐几个可以免费下载PPT素材的网站,建议收藏! 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材,像设计类、办公类、自媒体类等素材都很丰富。PPT模板种类很多,全部都…

Unity 坐标系

一、左手坐标系与右手坐标系 常见的三维软件都采用笛卡尔坐标系,也就是常见的xyz轴坐标系。笛卡尔坐标系可以是左手坐标系也可以是右手坐标系,如下图所示 两种坐标系是镜像对称的。而Unity采用左手系,且xyz轴的默认方向与图中的左手系完全一…

Java【网络编程1】什么是 TCP/IP 五层模型? 数据传输的封装和分用?

文章目录 前言一、网络协议分层二、数据的网络传输1, 封装2, 分用3, 实际情况 总结 前言 📕各位读者好, 我是小陈, 这是我的个人主页 📗小陈还在持续努力学习编程, 努力通过博客输出所学知识 📘如果本篇对你有帮助, 烦请点赞关注支持一波, 感…

Python+Selenium入门级自动化测试脚本编写

一、安装Selenium 安装selenium有三种方式,主要有python下的pip命令安装或者是直接下载安装包进行安装本地文件夹以及直接用pycharm直接安装相应的selenium版本。推荐使用pycharm直接配置安装相应selenium版本(此办法比pip更好用,且不用担心报…

大数据 | (六)Hadoop集群启停脚本

知识目录 一、前言二、Hadoop集群启停脚本2.1 启停脚本及其背景2.2 使用方法 三、jps脚本四、关机脚本五、结语 一、前言 hello,大家好!这篇文章是我在使用Hadoop集群时使用到的启停脚本的详细内容与感想,希望能帮助到大家! 本篇…

【ENVI】SEBS模型计算蒸散发

详细内容请关注微信公众号:夫也的笔记 #01. ENVI软件SEBS插件介绍 ENVI是利用一种能够提供完整图像处理的功能强大的结构性程序设计语言,ENVI的运行需要IDL的支持,IDL可以为数据的交互式分析和可视化提供一个计算环境,在IDL开发环…

【数据库】SQL Server2022安装教程

大家好,我是雷工! 最近需要安装SQLServer数据库,此次安装的是sql_server_2022_developer版本,以下记录安装及配置过程。大家可以参考指正。 一、安装SQL Server步骤: 1、官网下载 SQL Server 2022 Developer。 2、打…

【逆向】PE文件解析

文章目录 PE文件DOS头部PE/NT头解析区段头/区块表解析数据目录表(存放在某个区段)1. 导出表2. 导入表3. 重定位表 PE文件 PE文件:PE文件是在windows平台可执行的文件。包括:.exe(可执行程序),.…

20230511干掉CV1826的buildroot系统的串口用户名和密码root

20230511干掉CV1826的buildroot系统的串口用户名和密码root 2023/5/11 11:56 https://blog.csdn.net/u011342132/article/details/126116391 buildroot跳过密码登录 1、全新原始编译: rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ cd smartpen/ r…

【集群模式】执行MapReduce程序-wordcount

因为是在hadoop集群下通过jar包的方式运行我们自己写的wordcount案例,所以需要传递的是 HDFS中的文件路径,所以我们需要修改上一节【本地模式】中 WordCountRunner类 的代码: //5.设置统计文件输入的路径,将命令行的第一个参数作为输入文件的…

超细详解MyBatis操作数据库(1)

文章目录 1.MyBatis 是什么?2.回顾 JDBC 的操作流程3.MyBatis 在整个框架中的定位4.MyBatis的使用4.1创建数据库和表4.2 添加MyBatis框架支持4.2.1 老项目添加MyBatis4.2.2 新项目添加MyBatis 4.3 配置连接字符串和MyBatis4.3.1 配置连接字符串4.3.2 配置 MyBatis 中…

【一】设计模式~~~创建型模式~~~简单工厂模式(Java)

【学习难度:★★☆☆☆,使用频率:★★★☆☆】 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个…

学习之-spring cache缓存框架应用Redis

本文章用于个人学习记录 一、前言 1、SpringCache是Spring提供的一个缓存框架,在Spring3.1版本开始支持将缓存添加到现有的spring应用程序中,在4.1开始,缓存已支持JSR-107注释和更多自定义的选项。Spring 从 3.1 开始定义了 org.springframe…

设备树dtb文件的格式分析

设备树dtb文件的格式分析 文章目录 设备树dtb文件的格式分析DTB文件格式1.header头部1.magic2.totalsize3.off_dt_struct4.off_dt_strings字符串的偏移量5.off_mem_rsvmap 内存保留映射的偏移量6.version 格式版本7.last_comp_version最后兼容版本8.boot_cpuid_phys 我们正在启…

SpringBoot ( 五 ) 封装响应数据

2.6.业务处理 这是通过 Spring 在 Controller中注入Service模型层 而在 Service模型层 结合 Mybatis / Mybatis-Plus 进行数据加工, 数据持久化 2.7.封装响应值 将 业务处理得到数据封装到 Model作用域中, 伴随着转页将信息传递到页面 2.7.1.传值容器 2.7.1.1.Model 在Cont…

【Qt编程之Widgets模块】-001:QButtonGroup抽象容器

1.QButtonGroup简介 QButtonGroup提供了一个抽象容器,可以将按钮小部件放入其中。它不提供此容器的可视化表示,而是管理组中每个按钮的状态。 互斥按钮组,将关闭除已单击的按钮外的所有可选中(可切换)按钮。默认情况下…

七个合法学习黑客技术的网站,让你从萌新成为大佬

合法的学习网站,以下这些网站,虽说不上全方位的满足你的需求,但是大部分也都能。能带你了解到黑客有关的技术,视频,电子书,实践,工具,数据库等等相关学习内容。以上这些网站我都是用…