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的饥饿加载模式,启动时创建 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JUC并发编程--------基础篇

一、多线程的相关知识 栈与栈帧 我们都知道 JVM 中由堆、栈、方法区所组成&#xff0c;其中栈内存是给谁用的呢&#xff1f;其实就是线程&#xff0c;每个线程启动后&#xff0c;虚拟 机就会为其分配一块栈内存。 每个栈由多个栈帧&#xff08;Frame&#xff09;组成&#xf…

Databend 开源周报第 108 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 多源数据目录 …

前端工程化

前后端混合开发 前后端分离开发 接口文档&#xff1a;一个业务功能就是一个接口 开发某个功能的流程&#xff1a; 需求分析&#xff0c;接口定义&#xff08;API接口文档&#xff09;&#xff0c;前后端并行开发&#xff08;遵守规范&#xff09;&#xff0c;测试&#xff…

SpringWeb(SpringMVC)

目录 SpringWeb介绍 搭建 SpringWeb SpringWeb介绍 Spring Web是一个基于 Servlet API 构建的原始 web 框架&#xff0c;用于构建基于MVC模式的Web应用程序。在 web 层框架历经 Strust1&#xff0c;WebWork&#xff0c;Strust2 等诸多产品的历代更选 之后&#xff0c;目前业界普…

比较器的工作原理及性能指标介绍

一、什么是比较器 比较器的功能是比较两个或更多数据项&#xff0c;以确定它们是否相等&#xff0c;或者确定它们之间的大小关系和排列顺序&#xff0c;这称为比较。可以实现此比较功能的电路或设备称为比较器。比较器是将模拟电压信号与参考电压进行比较的电路。比较器的两个…

深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization

深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization Segment Any Anomaly without Training via Hybrid Prompt Regularization PDF: https://arxiv.org/pdf/2305.10724.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch Py…

前端:横向滚动条,拖动进行左右滚动(含隐藏滚动条)

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

gdb基本使用快捷键

gdb 1. gdb简介2.基本命令2.1 进入/退出2.2 基本使用2.3 执行语句2.4 查看变量2.5 禁用/启用断点 1. gdb简介 gdb是Linux下的代码调试工具。 程序的发布有debug模式和release模式&#xff0c;Linux的gcc/g模式&#xff0c;默认是release模式。若想在Linux下调试&#xff0c;程…

NewStarCTF 2022 web方向题解 wp

----------WEEK1---------- BUU NewStarCTF 公开赛赛道 WEEK1 [NotPHP] 先看题目&#xff0c;要传参加绕过。 分析一下代码&#xff1a;首先get一个datadata://test/plain,Wel…。然后key1和2用数组可以绕过。num2077a可以绕过弱类型。eval()中的php语句被#注释了&#xff0c…

美创科技一体化智能化公共数据平台数据安全建设实践

公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点&#xff0c;也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份&#xff0c;近年来&#xff0c;浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台&#xff0c;实现了全省公共数…

基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境Android环境1. 开发软件和开发包2. JDK设置3. NDK设置 模块实现1. 数据预处理2. 模型训练1&#xff09;训练级联分类器2&#xff09;训练无分割车牌字符识别模型 3. APP构建1&#xff09;导入OpenCV库…

零基础如何使用IDEA启动前后端分离中的前端项目(Vue)?

一、在IDEA中配置vue插件 点击File-->Settings-->Plugins-->搜索vue.js插件进行安装&#xff0c;下面的图中我已经安装好了 二、搭建node.js环境 安装node.js 可以去官网下载&#xff1a;安装过程就很简单&#xff0c;直接下一步就行 测试是否安装成功&#xff1a;要…

input时间表单默认样式修改(input[type=“date“])

一、时间选择的种类: HTML代码&#xff1a; <input type"date" value"2018-11-15" />选择日期&#xff1a; 选择时间&#xff1a; <input type"time" value"22:52" />在这里插入图片描述 选择星期&#xff1a; <…

Leetcode:【448. 找到所有数组中消失的数字】题解

题目 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 难度&#xff1a;简单 题目链接&#xff1a;448. 找到所有数组中消失的数字 示例1 输入&…

服务器数据恢复-重组RAID导致RAID6数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 一台存储设备中有一组由12块硬盘组建的RAID6磁盘阵列&#xff0c;上层采用EXT3文件系统&#xff0c;共划分3个LUN。 服务器故障&分析&#xff1a; 存储设备在运行过程中RAID6阵列突然不可用&#xff0c;管理员对故障存储进行了重新分配RAI…

从C过渡到C ++的3个理由

几十年来&#xff0c;嵌入式软件工程师之间一直在争论他们应该使用C还是C 。根据2020年嵌入式市场调查&#xff0c;在大多数情况下&#xff0c;微控制器制造商提供的软件都以C语言提供&#xff0c;实际上&#xff0c;有56&#xff05;的嵌入式软件是用C语言编写的。但是&#x…

PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)

一、实现功能&#xff0c;数据表前缀、alias、model、table、join方法实现 二、表前缀实现 1、config.php增加表前缀 DB_PEX>fa_,//数据库前缀 2、增加表前缀方法function.php function model($table){$modelnew ModelBase($table,config("DB_PEX"));return $m…

查看edge浏览器插件的安装位置

C:\Users\zhang\AppData\Local\Microsoft\Edge\User Data\Default\Extensions 这是我的目录&#xff0c;把中间的的替换成你的电脑用户名就可以了 你也可以先输入目录的部分名称&#xff0c;下拉找对应的目录

【juc】读写锁ReentrantReadWriteLock

目录 一、说明二、读读不互斥2.1 代码示例2.2 截图示例 三、读写互斥3.1 代码示例3.2 截图示例 四、写写互斥4.1 代码示例4.2 截图示例 五、注意事项5.2.1 代码示例5.2.2 截图示例 一、说明 1.当读操作远远高于写操作时&#xff0c;使用读写锁让读读可以并发&#xff0c;来提高…

python matlab 画柱状图

函数&#xff1a; bar(x, height, width0.8, bottomNone, *, aligncenter,dataNone, **kwargs) 设置坐标的刻度(ticks)&#xff0c;轴的标签和标题 在数据分析的很多时候&#xff0c;我们各个柱下面通常不是x刻度值&#xff0c;而是有实际意义的字符串&#xff0c;那么这个时…