springboot第37集:kafka,mqtt,Netty,nginx,CentOS,Webpack

fc327a9fe80feaba48ab1b5d0b4fbbaf.png

image.png
c022a740e3aba00dcce5133ab1104437.png
binzookeeper-server-start.shconfigzookeeper.properties.png
353da4fa01efe3d80343763ee566a872.png
image.png
7ec455961d64da6f0831b77b39f497df.png
image.png

消费

820ed9e1d77dae4df158b4a8b2639d1d.png
image.png
66aff7769a737bfc3412a99c97330c43.png
image.png
80c887fb5b7d7b9bc3b2921ae3dde143.png
image.png
7a78c8eb111d43f3d8494733990261e5.png
image.png
19f65b1d48941269f2cc4893d8dc96ee.png
image.png
e5cb5ae3499633925ce34ddf9794616f.png
image.png
763c2253e4e1280fca8ec3249b31c0e6.png
image.png
aa996767b3bba8f41e0d9e7a4f040d83.png
image.png
b7f67fbeff8951fb4ac0509a4ea96ee2.png
image.png

Netty的优点有很多:

  • API使用简单,学习成本低。

  • 功能强大,内置了多种解码编码器,支持多种协议。

  • 性能高,对比其他主流的NIO框架,Netty的性能最优。

  • 社区活跃,发现BUG会及时修复,迭代版本周期短,不断加入新的功能。

  • Dubbo、Elasticsearch都采用了Netty,质量得到验证。

在 Mac 上安装 Cassandra 的 cqlsh 可以使用以下步骤:

  1. 安装 Homebrew:如果您尚未安装 Homebrew,请在终端中运行以下命令:/usr/bin/ruby -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/in…[1])"

  2. 安装 Cassandra:使用以下命令安装 Cassandra:brew install cassandra

  3. 启动 Cassandra:使用以下命令启动 Cassandra 服务:cassandra -f

  4. 运行 cqlsh:使用以下命令启动 cqlsh:cqlsh

Cassandra cqlsh - connection refused

启动cqlsh时,保存如下:

在启动时,指定连接的IP和端口

输出结果如下:

Connected to Test Cluster at 100.106.242.180:9042.``[cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4]``Use HELP ``for help.``cqlsh>

44e06dd283f90b461a779bec5de0883f.png
image.png
c7f0eebca05881ba39fc7899ae443722.png
image.png
76dcab7ae2f405e734d4c315787bad4b.png
image.png

/etc/security/limits.conf

  1. Open elasticsearch.ymal ;

  2. add bootstrap.system_call_filter: false

5af09ee62e702ae5c7f276bef72b5426.png
image.png
d0eae60f4a899292bf5e2c09a93f06fa.png
image.png

查看用户

cat /etc/passwd

查看用户组

cat /etc/group

查看当前活跃的用户列表

要在 Vite 配置中启用 Gzip 压缩,你需要做以下几个步骤:

  1. 首先,安装 vite-plugin-compression 插件,它可以帮助你在构建时启用 Gzip 压缩。在终端中运行以下命令:

npm install vite-plugin-compression --save-dev
  1. 在你的 Vite 配置文件(通常是 vite.config.js)中,导入 vite-plugin-compression 并在 plugins 数组中添加该插件的配置:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import viteCompression from 'vite-plugin-compression'; // 导入插件export default defineConfig({// ...其它配置...plugins: [// ...其它插件...// 添加 vite-plugin-compression 插件viteCompression({algorithm: 'gzip', // 使用 Gzip 压缩算法ext: '.gz', // 压缩文件的扩展名deleteOriginFile: false, // 是否删除原始文件}),],// ...其它配置...
});
  1. 保存并关闭配置文件。

这样,当你运行 Vite 构建命令时,vite-plugin-compression 将会在构建完成后自动对生成的静态资源文件进行 Gzip 压缩。

00c3cc0f126a63e7c7902dc6d6983276.png
image.png
ribbon:eager-load:enabled: true # 开启Ribbon的饥饿加载模式,启动时创建 RibbonClientMaxAutoRetries: 1 # 同一台实例的最大重试次数,但是不包括首次调用,默认为1次MaxAutoRetriesNextServer: 2  # 重试负载均衡其他实例的最大重试次数,不包括首次调用,默认为0次OkToRetryOnAllOperations: true  # 是否对所有操作都重试,默认falseServerListRefreshInterval: 2000 # 从注册中心刷新服务器列表信息的时间间隔,默认为2000毫秒,即2秒retryableStatusCodes: 400,401,403,404,500,502,504NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试ConnectTimeout: 3000  #连接建立的超时时长,默认1秒ReadTimeout: 3000 #处理请求的超时时间,默认为1秒MaxTotalConnections: 1000  # 最大连接数MaxConnectionsPerHost: 1000  # 每个host最大连接数restclient:enabled: true

下载并解压缩

首先是下载。在apache的官方网站提供了好多镜像下载地址,然后找到对应的版本,目前最新的是3.4.13。

http://mirrors.cnnic.cn/apache/ZooKeeper/ZooKeeper-3.4.13/ZooKeeper-3.4.13.tar.gz

mkdir -p  /work/zookeeper/zooKeeper-3.4.13
tar  -zxvf  /work/zookeeper/zooKeeper-3.4.13.tar.gz   -C   /work/zookeeper/zooKeeper-3.4.13

安装Zookeeper

安装集群的第一步,在安装目录下,创建好两个目录:日志目录、数据目录。

mkdir -p  /work/zookeeper/zooKeeper-3.4.13/datamkdir -p   /work/zookeeper/zooKeeper-3.4.13/logs

进入 /work/zookeeper/zooKeeper-3.4.13/conf目录,把zoo_sample.cfg文件复制一份名字改成zoo.cfg。

cp zoo_sample.cfg zoo.cfg

1、安装JDK

java -version 保证JDK至少在1.8.0_73以上

2、下载elasticsearch

brew install elasticsearch 3、启动,或者直接elasticsearch命令

brew services start elasticsearch

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=粘贴刚刚复制好的key"></script>
module.exports = {configureWebpack: {externals: {'AMap': 'AMap' // 表示CDN引入的高德地图}}
}
<template><div class="box"><div id="container" style="width:500px; height:300px"></div><div class="info"><div class="input-item"><div class="input-item-prepend"><span class="input-item-text" style="width:8rem;">请输入关键字</span></div><input id='tipinput' type="text"></div></div></div>
</template><script>
import AMap from 'AMap' // 引入高德地图
import { onMounted } from 'vue'
export default {name: 'Login',setup () {onMounted(() => {const map = new AMap.Map('container', { // 这里表示创建地图 第一个参数表示地图的div的idresizeEnable: true // 表示是否在加在所在区域的地图,如果定了别的区域,比如北京,就会默认加载北京})// 使用AMap插件 第一个是搜索框插件,第二个地址信息(经纬度名字之类)的插件AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function() {const autoOptions = {// 使用联想输入的input的div的idinput: 'tipinput'}const autocomplete = new AMap.Autocomplete(autoOptions)const placeSearch = new AMap.PlaceSearch({city: '长沙',map: map})AMap.event.addListener(autocomplete, 'select', function(e) {console.log(e.poi.location) // 获取选中的的地址的经纬度placeSearch.search(e.poi.name)})})})return {}}
}
</script><style scoped lang="scss">
@import "~@/styles/scss/_global.scss";
.info {padding: .5rem .7rem;margin-bottom: 1rem;border-radius: .25rem;position: fixed;top: 1rem;background-color: white;width: auto;min-width: 15rem;border-width: 0;right: 1rem;box-shadow: 0 2px 6px 0 rgba(240, 131, 0, .5);.input-item {position: relative;display: flex;flex-wrap: wrap;align-items: center;width: 100%;height: 2.2rem;border: 1px solid $themeTextColor;border-radius: .2rem;.input-item-prepend {margin-right: -1px;}.input-item-prepend {width: 35%;font-size: 13px;border-right: 1px solid $themeTextColor;height: 100%;display: flex;align-items: center;background: rgba(240, 131, 0, .1);span {text-align: center;}}input {width: 60%;background: #fff;padding: .2rem .6rem;margin-left: .3rem;border: none;}}
}
</style>

spring cloud 脚手架,上手即用,集成swagger,对外rest接口,集成主流互联网saas架构,包含es,hbase,kafka,redis,mongo等

16a508e35e9cc1561c2bc67e8c5f1ad0.png
image.png

在 Spring Boot 中,BigDecimal 是 Java 中的一个类,用于进行高精度的十进制计算。它通常用于处理需要精确计算的金融、货币和其他需要保持精度的数值运算。

BigDecimal 的设计目的是避免浮点数计算中的精度问题。浮点数在计算机中是以二进制表示的,所以在某些情况下会产生舍入误差,特别是在涉及小数点后很多位的计算中。而 BigDecimal 使用了大整数和小数的组合表示,可以精确地处理小数位数较多的数值,避免了舍入误差。

在 Spring Boot 中,你可以使用 BigDecimal 类来进行精确的数值计算,比如货币计算、税金计算等。以下是一个简单的示例,展示了如何在 Spring Boot 中使用 BigDecimal

import java.math.BigDecimal;public class BigDecimalExample {public static void main(String[] args) {BigDecimal num1 = new BigDecimal("10.25");BigDecimal num2 = new BigDecimal("5.75");// 加法BigDecimal sum = num1.add(num2);System.out.println("Sum: " + sum);// 减法BigDecimal difference = num1.subtract(num2);System.out.println("Difference: " + difference);// 乘法BigDecimal product = num1.multiply(num2);System.out.println("Product: " + product);// 除法BigDecimal quotient = num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP);System.out.println("Quotient: " + quotient);}
}

在这个示例中,我们使用了 BigDecimal 类来执行加法、减法、乘法和除法操作,并且可以通过指定精度和舍入模式来得到预期的结果。

各子目录

  • 蓝色 表示文件夹;

  • 灰色 表示普通文件;

  • 绿色 表示可执行文件;

  • 红色 表示压缩文件;

  • 天蓝色 表示链接文件(快捷方式);

常用目录的作用如下:

  • bin: 存放普通用户可执行的指令,普通用户也可以执行;

  • dev : 设备目录,所有的硬件设备及周边均放置在这个设备目录中;

  • boot : 开机引导目录,包括 Linux 内核文件与开机所需要的文件;

  • home: 这里主要存放你的个人数据,具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root 用户除外;

  • usr: 应用程序放置目录;

  • lib: 开机时常用的动态链接库,bin 及 sbin 指令也会调用对应的 lib 库;

  • tmp: 临时文件存放目录 ;

  • etc: 各种配置文件目录,大部分配置属性均存放在这里;

一些常用的命令见下:

作用命令
切换目录cd
显示当前目录完整路径pwd
查看目录下的信息(包括隐藏文件)ls(ls -a)
列出目录下的文件和详细信息ls-l (ll)
创建目录mkdir
创建文件touch
复制文件(文件夹)cp(cp -r)
移动/重命名文件夹和目录mv
删除文件(目录)rm(rm -rf)
删除空文件夹rmdir
查找文件find
获取帮助man / info

常用的快捷键:

作用快捷键
清空至行首Ctrl + U
清空至行尾Ctrl + K
清屏Ctrl + L
终止执行的命令Ctrl + C

tree 命令查看目录树

首先安装一下 sudo yum -y install tree

vim 编辑器使用方法

e5912350c4d6bf8cc6540300ba081da9.png

命令模式

  • i 切换到输入模式,以输入字符;

  • : 切换到底线命令模式,以在最底一行输入命令;

  • a 切换到输入文字模式;

输入模式

在命令模式下按下 i 就进入了输入模式。在输入模式中,可以使用以下按键:

功能命令
向上翻页PageDown / Ctrl + F
向下翻页PageUp / Ctrl + B
跳转到文件首行1G / gg
跳转到末尾行G
跳转到第 # 行#G
行号显示:set nu
行号显示取消:set nonu
插入d / Del
删除当前行dd
复制yy
将缓冲区中的内容粘贴到光标位置处之后p

底线命令模式

基本的命令

  • :q 退出程序;

  • :q! 放弃对文件内容的修改并退出;

  • :w 保存文件;

  • :w /root/xx 另存为;

  • :wq 保存文件并退出;

查看文件内容

一些常见查看文件内容的命令:

功能命令
浏览文件全部内容more / less
查看文件内容(显示行号)cat (cat -n)
在文本文件中查找字符串(显示行号)grep (grep <关键字> <要查找的文件> -n)

进程管理

ps 命令:

  • ps aux ,查看系统中所有进程,使用 BSD 操作系统格式;

  • ps -le ,查看系统中所有进程,使用 Linux 标准命令格式;

输出的格式含义:

  • USER:该进程由哪个用户产生的;

  • PID:进程的 ID;

  • %CPU:进程占用 CPU 资源的百分比;

  • %MEM:进程占用物理内存的百分比;

  • VSZ:进程占用虚拟内存的大小,单位 KB;

  • RSS:进程占用实际物理内存的大小,单位 KB;

  • TTY:进程在哪个终端运行的,tty1-tty7 代表本地控制台终端,tty1-tty6 是本地的字符界面终端,tty7 是图形终端,pts/0-255 代表虚拟终端,如果是 ? 则代表是系统进程;

  • STAT:进程状态,R-运行,S-睡眠,T-停止,s-包含子进程,+-位于后台;

  • START:进程启动时间;

  • TIME:进程占用 CPU 的运算时间,注意不是系统时间;

  • COMMAND,产生此进程的命令名;

top 命令可以查看系统健康状态,和 Windows 系统中的系统管理器类似。
top 命令的交互模式中可以执行下面命令:

  • ?/h : 显示交互模式的帮助;

  • P :以 CPU 使用率排序,默认就是此项;

  • M:以内存的使用率排序;

  • N :以 PID 排序;

  • q :退出 top;

杀死进程

杀死进程主要有下面几个命令:

功能命令
杀死某个进程kill
按照进程名杀死进程killall
按照进程名杀死进程,加 -t 可以按照终端号踢出用户pkill

常用杀死进程的命令:正常杀死 kill -1 2235 或者强制杀死 kill -9 2235

SSH 操作

Secure Shell(SSH)是建立在应用层基础上的安全网络协议,是专为远程登录会话和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过 SSH,可以把所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度,已经成为Linux系统的标准配置。

SSH 登陆服务器

ssh -p port <username>@<hostname or IP address>

比如我这里购买的腾讯云服务器就可以使用 ssh root@<公网IP/域名> 连接,如果你设置过域名对 IP 的映射,那么 @ 后面写你的域名也可以

SSH 上传/下载文件

SSH 可以通过 scp 命令来上传文件,是 Linux 系统下基于 SSH 登陆进行安全的远程文件拷贝命令,scp 是 secure copy 的简写,可以使用它上传本地文件夹到远程服务器,也可以从远程服务器上下载文件夹到本地:

# 上传文件夹到远程服务器
scp -P port -r /local/dir username@servername:/remote/dir
# scp -p 2333 -r /test/a root@192.168.0.101:/var/b# 从远程服务器下载文件夹
scp -P port -r username@servername:/remote/dir/ /local/dir
# scp -p 2333 -r root@192.168.0.101:/var/b /test/a

-r 参数表示递归复制,即复制该目录下面的文件和目录,如果要上传单个文件,只要把 -r 删除。大写的 P 表示的是端口,如果还是默认的 SSH 端口 22 没有更改,则不需要 -P。

在 Vue 3 项目中使用 Vite 作为构建工具,配置文件是 vite.config.js 而不是 vue.config.js。对于性能分析,speed-measure-webpack-plugin 通常与 Webpack 一起使用,而 Vite 使用的是 ESBuild 作为默认的构建工具,所以不能直接在 Vite 中使用这个插件。但是,你可以使用其他方式来进行性能分析。

在 Vite 项目中进行性能分析,你可以考虑使用 Vite 的官方插件 vite-plugin-analysis。以下是在 vite.config.ts 中添加 vite-plugin-analysis 插件的步骤:

  1. 安装插件:

在你的 Vue 3 + Vite 项目根目录下,打开终端或命令行工具,并执行以下命令:

npm install vite-plugin-analysis --save-dev
  1. 配置插件:

打开你的 vite.config.ts 文件,并添加以下配置:

import ViteAnalysis from 'vite-plugin-analysis';export default {plugins: [ViteAnalysis({// 可选配置项,详见插件文档}),],
};

以上配置中,我们导入了 vite-plugin-analysis 插件,并将其作为 Vite 的插件配置项之一。

  1. 运行开发服务器:

在终端或命令行工具中运行以下命令以启动 Vite 开发服务器:

npm run dev

Vite 将会在终端输出详细的性能分析结果,包括模块大小、构建时间等信息,帮助你了解构建过程中的性能状况。

总之,虽然不能直接在 Vite 中使用 speed-measure-webpack-plugin,但使用 Vite 的 vite-plugin-analysis 插件也能帮助你实现类似的性能分析目标。

Apache Kafka起源于LinkedIn,后来于2011年成为开源Apache项目,然后于2012年成为First-class Apache项目。Kafka是用Scala和Java编写的。 Apache Kafka是基于发布订阅的容错消息系统。 它是快速,可扩展和设计分布。

在大数据中,使用了大量的数据。 关于数据,我们有两个主要挑战。第一个挑战是如何收集大量的数据,第二个挑战是分析收集的数据。 为了克服这些挑战,您必须需要一个消息系统。

Kafka专为分布式高吞吐量系统而设计。 Kafka往往工作得很好,作为一个更传统的消息代理的替代品。 与其他消息传递系统相比,Kafka具有更好的吞吐量,内置分区,复制和固有的容错能力,这使得它非常适合大规模消息处理应用程序。

什么是消息系统?

消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它。 分布式消息传递基于可靠消息队列的概念。 消息在客户端应用程序和消息传递系统之间异步排队。 有两种类型的消息模式可用 - 一种是点对点,另一种是发布 - 订阅(pub-sub)消息系统。 大多数消息模式遵循 ****pub-sub ****。

点对点消息系统

在点对点系统中,消息被保留在队列中。 一个或多个消费者可以消耗队列中的消息,但是特定消息只能由最多一个消费者消费。 一旦消费者读取队列中的消息,它就从该队列中消失。 该系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但多个订单处理器也可以同时工作。 下图描述了结构。

发布 - 订阅消息系统

在发布 - 订阅系统中,消息被保留在主题中。 与点对点系统不同,消费者可以订阅一个或多个主题并使用该主题中的所有消息。 在发布 - 订阅系统中,消息生产者称为发布者,消息使用者称为订阅者。 一个现实生活的例子是Dish电视,它发布不同的渠道,如运动,电影,音乐等,任何人都可以订阅自己的频道集,并获得他们订阅的频道时可用。

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

参考资料

[1]

https://raw.githubusercontent.com/Homebrew/install/master/install: https://link.juejin.cn/?target=https%3A%2F%2Fraw.githubusercontent.com%2FHomebrew%2Finstall%2Fmaster%2Finstall

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤

dc3 windows 本地搭建步骤&#xff1a; ​​ 必要软件环境 进入原网页# 务必保证至少需要给 docker 分配&#xff1a;1 核 CPU 以及 4G 以上的运行内存&#xff01; JDK : 推荐使用 Oracle JDK 1.8 或者 OpenJDK8&#xff0c;理论来说其他版本也行&#xff1b; Maven : 推荐…

opencv 案例05-基于二值图像分析(简单缺陷检测)

缺陷检测&#xff0c;分为两个部分&#xff0c;一个部分是提取指定的轮廓&#xff0c;第二个部分通过对比实现划痕检测与缺角检测。本次主要搞定第一部分&#xff0c;学会观察图像与提取图像ROI对象轮廓外接矩形与轮廓。 下面是基于二值图像分析的大致流程 读取图像将图像转换…

Ctenos7安装mysql-8.1.0/tomcat-9.0.80/LNMT部署

目录 一、实验拓扑 二、部署mysql 三、部署Tomcat 四、配置NGINX 五、 配置NGINX的双机热备提高可用性 一、实验拓扑 二、部署mysql 官网下载地址https://dev.mysql.com/downloads/mysql/ 1、移除mariadb&#xff0c;安装所需应用 mysql-8.1.0 社区版 安装说明官网下载地址…

【算法系列篇】位运算

文章目录 前言什么是位运算算法1.判断字符是否唯一1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 丢失的数字2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 两数之和3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 只出现一次的数字4.1 题目要求4.2 做题思路4.3 Java代码实现 5.…

[ 云计算 | AWS ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南

文章目录 一、前言二、所需 Maven 依赖三、先决必要的几个条件信息四、创建客户端连接五、Amazon S3 存储桶操作5.1. 创建桶5.2. 列出桶 六、Amazon S3 对象操作6.1. 上传对象6.2. 列出对象6.3. 下载对象6.4. 复制、重命名和移动对象6.5. 删除对象6.6. 删除多个对象 七、文末总…

学习pytorch6 torchvision中的数据集使用

torchvision中的数据集使用 1. torchvision中的数据集使用官网文档注意点1 totensor实例化不要忘记加括号注意点2 download可以一直保持为True代码执行结果 2. DataLoader的使用 1. torchvision中的数据集使用 官网文档 注意左上角的版本 https://pytorch.org/vision/0.9/ 注…

深度学习10:Attention 机制

目录 Attention 的本质是什么 Attention 的3大优点 Attention 的原理 Attention 的 N 种类型 Attention 的本质是什么 Attention&#xff08;注意力&#xff09;机制如果浅层的理解&#xff0c;跟他的名字非常匹配。他的核心逻辑就是「从关注全部到关注重点」。 Attention…

冠达管理:火爆!拼多多飙涨15%,中概股沸腾!这些外资巨头唱多中国资产

当地时间8月29日&#xff0c;美国三大股指团体收涨&#xff0c;道指涨0.85%&#xff0c;标普500指数涨1.45%&#xff0c;纳指涨1.74%。科技股大涨&#xff0c;特斯拉涨7.69%&#xff0c;英伟达涨4.16%。纳斯达克我国金龙指数收涨3.7%&#xff0c;拼多多涨超15%。 广东研山私募…

解析经典面试题:for 循环中的 let var

更多文章可以看看我的博客&#xff1a;https://icheng.github.io/ 题目 for循环中&#xff0c;使用 var 或 let 声明 i 变量&#xff0c;会得到不同的结果 var arr []; for (var i 0; i < 2; i) {arr[i] function () {console.log(i);} } arr[0](); arr[1]();输出&…

6.Redis-hash

hash 哈希类型中的映射关系通常称为field-value&#xff0c;⽤于区分 Redis 整体的键值对&#xff08;key-value&#xff09;&#xff0c;注意这⾥的value是指field对应的值&#xff0c;不是键&#xff08;key&#xff09;对应的值&#xff0c;请注意 value 在不同上下⽂的作⽤…

Codeforces Round 888 (Div. 3)

Codeforces Round 888 (Div. 3) A. Escalator Conversations 思路&#xff1a;暴力枚举 我们可以发现要让他们能相同高度首先你们之间的差值必须是k的倍数并且这个倍数必须小于m并且不能存在相同高度 #include<bits/stdc.h> using namespace std; #define int long lo…

重磅!OpenAI突然发布企业版ChatGPT:没有限制、更快、更强、更安全的GPT-4

这是由【小瑶智能体】 AI创作的第 4 篇科技文章 大模型研究测试传送门 GPT-4传送门&#xff08;免墙&#xff0c;可直接测试&#xff0c;遇浏览器警告点高级/继续访问即可&#xff09;&#xff1a;Hello, GPT4! 大家好&#xff0c;我是小瑶智能体&#xff0c;一个喜欢分享人…

二叉搜索树(C++)

二叉搜索树 概念二叉搜索树的应用二叉搜索树的实现K模型基本结构和函数声明接口实现①find——查找关键码②Insert——插入关键码③Erase——删除关键码&#xff08;重点&#xff09;时间复杂度 源码&#xff08;整体&#xff09;非递归递归 KV模型 在使用C语言写数据结构阶段时…

安防监控/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RT…

Linux系统下vim常用命令

一、基础命令&#xff1a; v:可视模式 i:插入模式 esc:命令模式下 :q &#xff1a;退出 :wq &#xff1a;保存并退出 ZZ&#xff1a;保存并退出 :q! &#xff1a;不保存并强制退出二、在Esc下&#xff1a; dd : 删除当前行 yy:复制当前行 p:复制已粘贴的文本 u:撤销上一步 U:…

【【萌新的STM32-22中断概念的简单补充】】

萌新的STM32学习22-中断概念的简单补充 我们需要注意的是这句话 从上面可以看出&#xff0c;STM32F1 供给 IO 口使用的中断线只有 16 个&#xff0c;但是 STM32F1 的 IO 口却远远不止 16 个&#xff0c;所以 STM32 把 GPIO 管脚 GPIOx.0~GPIOx.15(xA,B,C,D,E,F,G)分别对应中断…

Pillow:Python的图像处理库(安装与使用教程)

在Python中&#xff0c;Pillow库是一个非常强大的图像处理库。它提供了广泛的图像处理功能&#xff0c;让我们可以轻松地操作图像&#xff0c;实现图像的转换、裁剪、缩放、旋转等操作。此外&#xff0c;Pillow还支持多种图像格式的读取和保存&#xff0c;包括JPEG、PNG、BMP、…

【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running

ZooKeeper配置中出现Error contacting service. It is probably not running 问题 安装zookeeper&#xff0c;启动报错了 Error contacting service. It is probably not running 思路 tail -100f logs/zookeeper-root-server-node1.itcast.cn.out 查看日志报错 zoo.cfg没…

FPGA VR摄像机-拍摄和拼接立体 360 度视频

本文介绍的是 FPGA VR 相机的第二个版本&#xff0c;第一个版本是下面这样&#xff1a; 第一版地址&#xff1a; ❝ https://hackaday.io/project/26974-vr-camera-fpga-stereoscopic-3d-360-camera ❞ 本文主要介绍第二版本&#xff0c;第二版本的 VR 摄像机&#xff0c;能够以…

使用 Privoxy 在 Linux 上配置本地代理服务器详细教程

Privoxy 是一个功能强大的开源网络代理软件&#xff0c;它可以帮助我们在 Linux 系统上搭建本地代理服务器。通过配置和使用 Privoxy&#xff0c;您可以实现更安全、匿名以及自定义过滤规则等高级特性。本文将详细介绍如何在 Linux 环境下利用 Privoxy 配置并运行本地代理服务器…