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

news2024/11/17 13:46:06

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的饥饿加载模式,启动时创建 RibbonClient
  MaxAutoRetries: 1 # 同一台实例的最大重试次数,但是不包括首次调用,默认为1次
  MaxAutoRetriesNextServer: 2  # 重试负载均衡其他实例的最大重试次数,不包括首次调用,默认为0次
  OkToRetryOnAllOperations: true  # 是否对所有操作都重试,默认false
  ServerListRefreshInterval: 2000 # 从注册中心刷新服务器列表信息的时间间隔,默认为2000毫秒,即2秒
  retryableStatusCodes: 400,401,403,404,500,502,504
  NFLoadBalancerRuleClassName: 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/data

mkdir -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的id
        resizeEnable: true // 表示是否在加在所在区域的地图,如果定了别的区域,比如北京,就会默认加载北京
      })
      // 使用AMap插件 第一个是搜索框插件,第二个地址信息(经纬度名字之类)的插件
      AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function() {
        const autoOptions = {
          // 使用联想输入的input的div的id
          input: '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.coloradmin.cn/o/947032.html

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

相关文章

【操作系统】聊聊文件传输的零拷贝、PageCache、异步IO机制

在目前主流的系统中&#xff0c;其实大多数都是数据密集型系统&#xff0c;所以设计数据密集型应用一书非常经典&#xff0c;推荐一读。而大多数遇到的问题都是存储问题。CPU、内存 因为本身的读写速度比较快&#xff0c;所以磁盘就成为了一个性能瓶颈。 针对磁盘优化的技术层…

对class文件进行base64编码

使用以下代码 package org.springframework.cloud.gateway.sample;import org.springframework.util.Base64Utils;import java.io.*; import java.nio.charset.StandardCharsets;public class EncodeShell {public static void main(String[] args){byte[] data null;try {In…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹&#xff0c;出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统&#xff0c;除了作为网络操作系统之外&#xff0c;还可以作为单…

6路液体水位检测芯片VK36W6D SOP16 抗电源干扰及手机干扰特性好

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK36W6D 封装形式&#xff1a;SOP16/QFN16L 详细资料&#xff1a;13.5/5.474/4.703 概述 VK36W6D具有6个触摸检测通道&#xff0c;可用来检测6个点的水位。该芯片具有较高的集成度&#xff0c;仅需极少的外部组件便…

vscode GDB 调试linux内核 head.S

遇到的问题 此前参考如下文章 https://zhuanlan.zhihu.com/p/510289859 已经完成了在ubuntu 虚拟机用vscode 调试linux 内核。但是美中不足的是&#xff0c;断点最早只能加在__primary_switched() 函数。无法停在更早的断点上&#xff0c;比如ENTRY(stext) 位置。参考《奔跑吧…

C语言_初识C语言指针

文章目录 前言一、指针 ... 一个内存单元多大比较合适&#xff1f;二、地址或者编号如何产生&#xff1f;三、指针变量的大小 前言 内存是电脑上特别重要的存储器&#xff0c;计算机中程序的运行都是在内存中进行的。 所以为了有效的使用内存&#xff0c;就把内存划分成一个个…

记1次前端性能优化之CPU使用率

碰到这样的一个问题&#xff0c;用户反馈页面的图表一直加载不出来&#xff0c;页面还卡死 打开链接页面&#xff0c;打开控制台 Network 看到有个请求一直pending&#xff0c;结合用户描述&#xff0c;页面一直loading,似乎验证了我的怀疑&#xff1a;后端迟迟没有相应。 但是…

【工作笔记-0038】mongodb mongorestore 命令行导入 bson.gz数据

1. 导出的集合文件格式如下&#xff08;也就是导出的表文件&#xff09;&#xff1a; 例如&#xff1a; D:\Files\xxxx集合名称.bson.gz 怎样导出&#xff0c;这里不做介绍&#xff0c;用 mongodb compass 或者 studio 3t 都可以 2. 下载命令行导入工具&#xff1a; 官方…

webpack(一)模块化

模块化演变过程 阶段一&#xff1a;基于文件的划分模块方式 概念&#xff1a;将每个功能和相关数据状态分别放在单独的文件里 约定每一个文件就是一个单独的模块&#xff0c;使用每个模块&#xff0c;直接调用这个模块的成员 缺点&#xff1a;所有的成员都可以在模块外被访问和…

Redis发布订阅

Redis发布订阅 Redis 发布订阅(pub/sub)是一种 消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图&#xff1a; 下图展示了频道 channel1 &#xff0c; 以及订阅这个频道的三个客户端 —…

时间范围选择时选中日期所使用的当日内具体时刻 如00:00:00= 23:59:59

<el-form-item label"审核时间&#xff1a;"><el-date-pickerv-model"auditTime"type"datetimerange"range-separator"至"value-format"yyyy-MM-dd HH:mm:ss"start-placeholder"开始日期"end-placeholde…

智慧园区方案:AI与视频融合技术如何助力园区监管智能化升级?

一、行业背景 随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;技术正在各个领域迅速应用和推广。其中&#xff0c;智慧园区是一个重要的应用场景&#xff0c;它通过AI技术的支持&#xff0c;实现了园区的智能化管理和高效运营。 1、园区管理智慧化升级需求…

Centos7 安装Docker管理工具Portainer

0、前提条件 已安装Docker并且开启Docker&#xff0c;安装Docker可参见&#xff1a;Centos7 安装 Docker_瘦身小蚂蚁的博客-CSDN博客 1、 拉取portainer-ce镜像 docker pull portainer/portainer-ce:latest [rootlocalhost ~]# docker pull portainer/portainer-ce:latest la…

git视频教程Jenkins持续集成视频教程Git Gitlab Sonar教程

[TOC这里写自定义目录标题) https://edu.51cto.com/lesson/290903.html 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。…

科技资讯|苹果Vision Pro头显申请游戏手柄专利和商标

苹果集虚拟现实和增强现实于一体的头戴式设备 Vision Pro 推出一个月后&#xff0c;美国专利局公布了两项苹果公司申请的游戏手柄专利&#xff0c;其中一项的专利图如下图所示。据 PatentlyApple 报道&#xff0c;虽然专利本身并不能保证苹果公司会推出游戏手柄&#xff0c;但是…

JVM 是怎么设计来保证new对象的线程安全

1、采用 CAS 分配重试的方式来保证更新操作的原子性 2、每个线程在 Java 堆中预先分配一小块内存&#xff0c;也就是本地线程分配缓冲&#xff08;Thread Local AllocationBuffer&#xff0c;TLAB&#xff09;&#xff0c;要分配内存的线程&#xff0c;先在本地缓冲区中分配&a…

15-mongodb

一、 MongoDB 简介 1 什么是 MongoDB MongoDB 是一个基于分布式文件存储的数据库。由 C语言编写。在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系…

自动化实时在线静电监控系统的构成

自动化实时在线静电监控系统是一种帮助企业监测和管理静电问题的技术解决方案。静电在许多工业和商业环境中都是一个潜在的风险和生产问题。通过使用这样的监控系统&#xff0c;企业可以及时发现并采取对策来预防或减轻可能的静电问题。 该系统通常由以下组成部分构成&#xf…

HTML及CSS入门及精通

前言 HTML&#xff08;超文本标记语言&#xff09;和CSS&#xff08;层叠样式表&#xff09;是构建网页的两个基本技术。HTML用于定义网页的结构和内容&#xff0c;而CSS用于控制网页的样式和布局。本教程将介绍HTML和CSS的入门知识&#xff0c;并逐步引导您掌握更高级的技巧和…

智安网络|探索物联网架构:构建连接物体与数字世界的桥梁

物联网是指通过互联网将各种物理设备与传感器连接在一起&#xff0c;实现相互通信和数据交换的网络系统。物联网架构是实现这一连接的基础和框架&#xff0c;它允许物体与数字世界之间的互动和协作。 一、物联网架构的概述 物联网架构是一种分层结构&#xff0c;它将物联网系…