Java-Redis-Clickhouse-Jenkins-MybatisPlus-Zookeeper-vscode-Docker-jdbc-xxljob

文章目录

  • Clickhouse
    • 基础
    • 实操
      • windows + docker desktop 下载clickhouse
      • springboot项目配置clickhouse
  • Redis
    • 谈下你对Redis的了解?
    • Redis一般都有哪些使用的场景?
    • Redis有哪些常见的功能?
    • Redis支持的数据类型有哪些?
    • Redis为什么这么快?
    • 什么是缓存穿透?怎么解决?
    • 什么是缓存雪崩?该如何解决?
    • 怎么保证缓存和数据库数据的一致性?
    • Redis持久化有几种方式?
    • Redis内存淘汰策略有哪些?
    • Redis常见性能问题和解决方案?
    • Redis的过期键的删除策略?
    • 我们知道通过expire来设置key的过期时间,那么对过期的数据怎么处理呢?
    • Hash冲突怎么办?
    • 什么是RDB内存快照?
    • 常见问题
      • 配置文件
  • Jenkins
    • 新建任务需要的配置pipeline
  • Mybatis-plus
    • 基础
  • Zookeeper
    • 基础
  • vscode
    • 基础
      • 命令
    • 实操
      • vscode实现springboot项目搭建 (包括spring data jpa和sqlLite连接)
  • Docker
    • 基础
    • 实操
      • windows11 docker mysql
  • Dockerhouse
  • Dockerhub
  • jdbc
    • 基础概念
    • jdbcTemplate
  • xxl-Job
    • 基础
    • 实战

Clickhouse

基础

概念:

背后的研发团队是俄罗斯的yandex公司,该公司是搜索引擎公司。
是关系数据库的一种,与传统的mysql不同采用行式存储不同,该数据库采用的是列式存储。

实操

windows + docker desktop 下载clickhouse

参考博客:https://blog.csdn.net/qubernet/article/details/121013960
在这里插入图片描述
存在问题1:

**命令出现问题:**
PASSWORD=$(base < /dev/urandom | head -c8); echo "testroot"; echo -n "123456" | sha256sum | tr -d '-'
需要通过apt-get下载 coreutils包 和 openssl包

**账号密码:**
testroot
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

testroot
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

两次运行的结果都一样。

最新处理数据:
quber
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

存在问题2:

问题描述:
按照参考博客配置,会出现:
std::exception. Code: 1001, type: std::out_of_range, e.what() = unordered_map::at: key not found (version 21.12.3.32 (official build))的问题
问题分析:
<quber>
	这是XML元素的根标签,代表正在配置的ClickHouse用户名称,即“quber”。
<password_sha256_hex>
	表示用户“quber”的密码经过SHA-256算法加密后得到此十六进制表示的哈希值;
<networks incl="networks" replace="replace">
	incl=“networks” :指示可能有其他地方定义了一组通用的网络规则(如在父级配置或外部文件中),这里将包括(include)那些通用规则;
	replace=“replace”:表示即使有通用规则存在,也应该完全替换(replace)为这里指定的网络规则,即只允许来自::/0的所有IPv6地址的连接。
<ip>::/0</ip>
	指定了一个IPv6 CIDR块,::/0相当于IPv6中的“任意地址”,意味着用户可以从任何IPv6网络访问ClickHouse服务器。
<profile>quber</profile>
	profile 指定了用户将使用的权限配置文件或访问控制配置文件的名称;
	用户“quber”关联到同名的“quber”访问控制配置文件。
	配置成quber不能实现访问,是否是quber的配置文件存在问题?待考证;
<quota>quber</quota>
	quota 指定了用户将遵循的配额规则;
	quber 同样表示用户将使用同名的配额配置文件;配额文件定义了该用户在资源使用方面的限制,如查询速率、磁盘空间使用量、内存使用量等,用于控制单个用户或用户组对系统资源的消耗。
	配置成quber不能正常访问,是否不存在同名的配额配置文件?待考证;

想要配置成功,直接将profile和quota都配置成default即可。

存在问题3

描述:
	vscode中采用SQLTools Clickhouse 插件,访问clickhouse数据库;
	show databases; 命令可以使用
	use xx数据库; 命令不可行,会报错;
		scode使用 clickhouse插件 执行show databases 可以正常运行。但执行命令use xxx数据库 出现There is no session or session context has expired. 问题,给出具体原因以及解决方案
	select * from 表1;  命令可以执行
分析:
	具体原因未知。

存在问题4

描述:
	多源数据库加载异常;
参考:
	https://cloud.tencent.com/developer/article/2000075

springboot项目配置clickhouse

参考博客1:https://blog.csdn.net/csdn_xpw/article/details/121981940 待验证;

描述:
	springboot项目+clickhouse配置信息,仅通过配置application.properties文件配置,数据库不能实现访问;
	需要创建一个类A具有clickhouse涉及变量,然后被@ConfigurationProperties修饰;
	由于配置了链接池druid,则需要创建一个配置类B,将A作为属性创建到B类中,然后创建返回DruidDataSource对象的方法。
分析:
	原因在于:Properties中配置了druid连接池,但是在代码中没有配置。

Redis

谈下你对Redis的了解?

Redis,全称为Remote Dictionary Server(远程数据服务),是一款开源的基于内存的键值对存储系统,其主要被用作高性能缓存服务器使用,是一个非关系型、日志型、key-value数据库;

Redis一般都有哪些使用的场景?

使用场景:缓存、排行榜、计数器/限速器、好友关系(点赞/共同好友)、简单的消息队列(订阅发布)、Session服务器。

Redis有哪些常见的功能?

Redis支持的数据类型有哪些?

Redis为什么这么快?

什么是缓存穿透?怎么解决?

什么是缓存雪崩?该如何解决?

怎么保证缓存和数据库数据的一致性?

Redis持久化有几种方式?

Redis内存淘汰策略有哪些?

Redis常见性能问题和解决方案?

Redis的过期键的删除策略?

我们知道通过expire来设置key的过期时间,那么对过期的数据怎么处理呢?

Hash冲突怎么办?

什么是RDB内存快照?

常见问题

配置文件

redis:
    enable: true
// 意图是控制是否启用Redis功能

Jenkins

新建任务需要的配置pipeline

该代码是Jenkinsfile,用于定义一个持续集成/持续交付(CI/CD)的流水线;

pipeline {
    agent any
    // 表示该流水线可以在任何可用的Jenkins节点上执行;
    
    // 定义变量
    // JOB_NAME  任务名称,对应容器服务名,例如:market_ods/mms_api
    // RegistryUrl 在全局环境变量中配置
    // ImageVer 容器版本,格式yyyyMMddHHmm,插件 Timestamp
    // 
    // 创建访问Git全局凭据, credentialsId: 'gitpw-3789060f-ecb5-468e-c161-32076710d930'
    // 创建访问私有镜像仓库全局凭据, credentialsId: 'imagepw-8a88451c-0565-6f0d-694c-fa20344a3179'

    environment { // 定义环境变量
        PLAT="as"    // 定义平台
        PROJECT="jenkins_xxx"    // 定义项目程序
        PROJECT_GIT="project_xxx"    // 定义项目程序
        GIT_URL="http://gitlab地址/${PROJECT_GIT}.git" // git仓库链接
        JAVA_HOME="/usr/local/jdk1.8.0_361"
        MAVEN_HOME="/usr/local/maven3.6"
                PATH="$MAVEN_HOME/bin:$PATH"
    }
    options{ 
        // 插件:Build Timestamp 
        timestamps() // 用于在构建日志中添加时间戳;
    }
    parameters {
        // 插件:Git Parameter  http://www.manongjc.com/detail/63-ncmakycccpkqxsr.html
        gitParameter (name: 'Git_Branch', defaultValue: 'master', type: 'PT_BRANCH', useRepository: env.GIT_URL, description: '请选择项目GIT分支', branchFilter: 'origin/(.*)', branch:'', quickFilterEnabled: true, selectedValue: 'TOP', sortMode: 'NONE', tagFilter: '*')
        // 构建Git_Rranch,用户可以在构建时选择不同的Git分支。
    } 
    stages { // 定义流水线的各个阶段;
        stage('脚本执行环境'){
            steps {
                sh """
                    echo "$JAVA_HOME"
                    java --version
                    mvn --version
                    git version
                    docker -v
                """
                script {
                    buildName "#${BUILD_NUMBER} ${RegistryUrl}/${PLAT}/${PROJECT}:${ImageVer}"
                }
            }
        }
        // 删除当前目录(${WORKSPACE})下内容,通常用在构建完毕之后清空工作空间
        stage('Delete Workspace') { 
            steps {
                echo "清理工作目录: ${WORKSPACE}"
                deleteDir()
            }
        }
        // 拉取代码 http://www.manongjc.com/detail/63-ncmakycccpkqxsr.html
        stage('Checkout') {      
            steps {
                checkout([$class: 'GitSCM', 
                    branches: [[name: "${params.Git_Branch}"]],
                    userRemoteConfigs: [[credentialsId: 'gitpw-3789060f-ecb5-468e-c161-32076710d930', url: env.GIT_URL]],
                    submoduleCfg: [], 
                    doGenerateSubmoduleConfigurations: false, 
                    extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]]
                ])
            }
        }
        // mvn打包
        stage('Packaging project') {        
            steps {
                script {
                    sh 'mvn clean install'
                }
            }
        }
        //构建并推送镜像
        stage('Build & Push Image to nexus') {
            steps {
                script {
                     // 第一个参数是私有仓库地址,注意要带http(s),第二个参数是账号密码登录凭证,需要提前创建
                    docker.withRegistry("https://${RegistryUrl}", 'imagepw-8a88451c-0565-6f0d-694c-fa20344a3179') {
                        def image = docker.build("${RegistryUrl}/${PLAT}/${PROJECT}:${ImageVer}", "${WORKSPACE}")
                        image.push()
                    }
                }
            }
        }
        stage('Deploy to the Target server') {
            steps {
                echo '部署到目标服务器'
                withCredentials([file(credentialsId: 'k8s_config', variable: 'KUBECONFIG')]) {
                    sh 'kubectl set image deployment/${PROJECT} ${PROJECT}=${RegistryUrl}/${PLAT}/${PROJECT}:${ImageVer} -ndev'

                }
            }
        }
    }
}

Mybatis-plus

基础

是什么?

是一个方便操作数据库的代码工具;

怎么使用?

1. 依赖包导入:
<dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.0.5</version>
</dependency>

2. 创建数据对象:
public class object{}

3. 创建xxxMapper
//在对应Mapper上面继承基本接口BaseMapper
@Repository //代表持久层
public interface xxxMapper extends BaseMapper<User> {
	//继承之后就是所有东西已经把连接mybatis,配置mapper.xml文件,service-controller层都搞定了
}

4. 项目启动类添加扫描包
在springboot的启动类上添加注解;
@MapperScan("具体包的位置")

5. 配置文件添加语句,了解mapper具体执行过程,在console打出
在mybatis-config.xml文件中,配置:
<setting name="logImpl" value="STDOUT_LOGGING" />
日志实现方式为输出到控制台(STDOUT_LOGGING// stdout_logging

Zookeeper

基础

是什么?

Leaf分布式ID生成系统在Spring Boot或类似的微服务架构中的集成配置。Leaf是由滴滴出行开源的一套分布式ID生成解决方案,旨在为分布式系统提供高效、高可用的ID生成服务。

配置内容?

  leaf:
  // Leaf ID生成系统的顶级配置
    snowflake:
    // Leaf提供了两种ID生成模式,一种是基于Twitter Snowflake算法的snowflake模式,另一种是基于数据库的segment模式。这里的配置是针对Snowflake模式的。
      enabled: true
      // 启用Snowflake模式的ID生成器
      name: associated_api
      // Snowflake worker的名称,用于标识不同的业务或者服务。在多服务共用一套Leaf集群的情况下,通过名称区分不同来源的ID请求,确保ID的唯一性和可追踪性。
      zkAddress: 127.0.0.1:2181
      // 配置了Zookeeper的地址。Leaf的Snowflake模式依赖于Zookeeper作为服务发现和分布式协调工具,用来管理worker的分配与状态同步。

vscode

基础

命令

启动mysql命令

docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest

实操

vscode实现springboot项目搭建 (包括spring data jpa和sqlLite连接)

参考博客:https://blog.csdn.net/zyd573803837/article/details/109263219

提交代码

整体过程是:提交-推送;
git使用介绍博客:https://blog.csdn.net/Shids_/article/details/112250700
提交很慢,解决博客:https://blog.csdn.net/m0_60322614/article/details/133017449

docker启动mysql,如何创建数据库以及查看当前本机有哪些数据库?

参考博客:
https://blog.csdn.net/LegendaryChen/article/details/136050305?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-136050305-blog-132284868.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-136050305-blog-132284868.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=5

Docker

基础

实操

windows11 docker mysql

参考博客1:https://blog.csdn.net/nmajsjpy/article/details/130183104
参考博客2:https://blog.csdn.net/joeyoj/article/details/136427362

Dockerhouse

Dockerhub

jdbc

参考博客:
https://blog.csdn.net/m0_37761437/article/details/110468944

基础概念

是什么?

全称:Java DataBase ConnectivityJava 语言连接数据库);
是sun公司制定的接口,在java.sql.*包下;
每个数据库底层实现原理不同,定义统一的接口,不同数据库厂商编写各自的实现类,有利于开发者使用;
其中各数据库厂商的驱动中含有JDBC的实现类,即都在各自的jar包里,使用时需要进行下载;
驱动 = jar包 ==》 含有JDBC实现类;

JDBC编程六步走?

1 注册驱动
	告诉Java程序,要连接的是哪个品牌的数据库
2 获取连接
	表示JVM的进程和数据库进程之间的通道打开了
3 获取数据库操作对象
	执行sql语句的对象
4 执行sql语句
	DQL DML
5 处理查询结果集
	只有4执行的是select,才有5
6 释放资源
	java和数据库属于进程间的通信,开启之后一定要关闭

jdbcTemplate

jdbcTemplate配置:

public JdbcTemplate jdbcTemplate(@Autowired DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
// 为了创建一个可以用来执行数据库操作的JdbcTemplate实例,同时避免了手动管理数据库连接的繁琐过程;
// @Autowired注解通常直接应用于字段或者构造器参数上,但是这里是在方法参数上使用,这表明Spring框架将会自动调用此方法,并将DataSource类型的Bean注入到方法中。然后,此方法将返回一个使用该DataSource实例化的JdbcTemplate对象。

jdbcTemplate使用1:

jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
     @Override
     public void setValues(PreparedStatement ps, int i)
             throws SQLException {
         ps.setInt(1, keys.get(i).getId());
         ps.setString(2, keys.get(i).getLzKey());
         ps.setInt(3, keys.get(i).getOriginIndex());
         ps.setLong(4, keys.get(i).getCreateTime());
     }

     @Override
     public int getBatchSize() {
         return keys.size();
     }
 });

// 理解:
jdbcTemplate.batchUpdate(sql,...) --》 执行批量更新操作;
new BatchPreparedStatementSetter() { ... } --》 匿名内部类,实现这个接口,重写两个方法;

jdcbTemplate使用2:

List<LzKey> results = jdbcTemplate.query(sql, args,new RowMapperResultSetExtractor<>(LZ_KEY_MAPPER, 1));
// 理解:
jdbcTemplate.query(sql, args,...) --》 执行sql查询操作返回结果集;
	sql = 查询语句的字符串;
	args = 数组,即sql中的占位符;
	参数3 = 如何处理查询的结果;
new RowMapperResultSetExtractor<>(LZ_KEY_MAPPER, 1)
	是一个匿名内部类,继承RowMapperResultSetExtractor类,该类实现了ResultSetExtractor接口;
	将ResultSet映射到java对象列表中;
	参数1:一个RowMapper实例,将ResultSet中的一行映射到一个LzKey对象;
	参数2:指定预期的行数,意味着结果集中最多只有一行数据;

jdbcTemplate使用3:

jdbcTemplate.queryForObject(sql, Integer.class);
// 理解:
用于执行sql的一个查询语句,并将结果映射为一个单一对象,且对象的类型是Integer

xxl-Job

基础

@XxlJob 以声明的形式定义和管理任务,无需编写复杂的调度逻辑,简化了定时任务和分布式任务的开发过程;

实战

使用1:

@XxlJob(value = "shardFetchKeysIntoCache") 
// 理解:
注解@XxlJob,用于标识一个任务处理方法;
value属性,给这个任务命名;

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

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

相关文章

爬虫怎么实现抓取的

1.4爬虫工程师常用的库通过图1-3我们了解到&#xff0c;爬虫程序的完整链条包括整理需求、分析目标、发出网络请求、文本解析、数据入库和数据出库。其中与代码紧密相关的有&#xff1a;发出网络请求、文本解析、数据入库和数据出库&#xff0c;接下来我们将学习不同阶段中爬虫…

Proxmox VE 8虚拟机直通USB磁盘

作者&#xff1a;田逸&#xff08;fromyz&#xff09; 今天有个兄弟发消息&#xff0c;咨询怎么让插在服务器上的U盾被Proxmox VE上的虚拟机识别。在很久很久以前&#xff0c;我尝试过在Proxmox VE 5以前的版本创建windows虚拟机&#xff0c;并把插在Proxmox VE宿主机上的银行U…

[ TOOLS ] JFLASH 使用说明

一、使用everything查找JFLASH everything是指这个软件&#xff0c;使用这个方便查找想要的文件 二、创建一个工程并配置 创建完后进行配置&#xff1a; Target devic: 板子的芯片型号&#xff0c;比如R7FA6M4Target interface: 一般是SWDSpeed: 一般是4000kHz, 不能下载则将Sp…

快速将一个网址打包成一个exe可执行文件

一、电脑需要node环境 如果没有下面有安装教程&#xff1a; node.js安装及环境配置超详细教程【Windows系统安装包方式】 https://blog.csdn.net/weixin_44893902/article/details/121788104 我的版本是v16.13.1 二、安装nativefier 这是一个GitHub上的开源项目&#xff1a…

ROS2 分布式 及 ssh远程控制 和 上传下载文件或文件夹

问题1. 多台计算机连接同一wifi后 &#xff0c;运行ROS2的小乌龟案例&#xff0c;自己的计算机&#xff0c;无法控制其他电脑的小乌龟 按照正常的情况来说&#xff0c;ROS2是DDS的自发现通信机制&#xff0c;只要处在同一wifi网络中&#xff0c; A计算机执行启动小乌龟的命…

PHP验证日本免费电话号码格式

首先&#xff0c;您需要了解免费电话号码的格式。 日本免费电话也就那么几个号段&#xff1a;0120、0990、0180、0570、0800等开头的&#xff0c;0800稍微特殊点&#xff0c;在手机号里面有080 开头&#xff0c;但是后面不一样了。 关于免费电话号码的划分&#xff0c;全部写…

2024-07-09 Linux 使用gpio-keyboard标准方式获取按键事件实例代码

一、kernel dts 配置修改&#xff1a; diff --git a/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-evb1-v11.dts b/sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-evb1-v11.dts index d0d059a3b..584f3a00a 100755 --- a/sysdrv/source/kernel/arch/arm/boot/dts/rv110…

【效率提升】多功能组织和整理软件一Notion

Notion下载地址&#xff1a;https://www.notion.so/desktop Notion 是一款多功能办公软件&#xff0c;非常适合进行知识整理、团队协作、项目整理等。 下面是几个我推荐Notion的关键点&#xff1a; 一、排版高度自由&#xff1a;Notion的页面可以嵌套&#xff0c;在页面中还支…

关于腾讯的那些事(6月新闻纪要)

祝贺&#xff01;深圳市科技进步一等奖 这份文件是关于腾讯云数据库TDSQL获得深圳市科技进步一等奖的详细报道。以下是详细总结分析&#xff1a; 获奖荣誉&#xff1a; 腾讯云数据库TDSQL荣获2022年深圳市科技进步一等奖&#xff0c;成为唯一入选的数据库产品。该奖项由深圳市…

213.贪心算法:跳跃游戏||(力扣)

class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0; // 如果数组长度为1&#xff0c;已经在终点&#xff0c;不需要跳跃int cur 0; // 当前跳跃能到达的最远位置int flag 0; // 记录跳跃次数int next 0; // 下一次跳跃能到…

JavaScript 闭包

目录 一、前言 二、JavaScript 变量作用域 1、变量作用域 2、如何从函数外部访问内部变量 三、JavaScript 闭包 1、闭包的定义 2、闭包的组成 3、实例说明 四、闭包的优缺点 1、优点 2、缺点 五、一个有趣的实例&#xff08;定时器与闭包&#xff09; 一、前言 先…

OpenCV对图片中的水果进行识别计算其面积长度等

本项目所用到的技术有&#xff1a; OpenCV Python的一些库&#xff1a;sys,openpyxl,numpy,PyQt5,PIL 本文可以做一些课程设计的项目 本文为作者原创&#xff0c;转载请注明出处&#xff0c;如果需要完整的代码&#xff0c;可以关注我私信 上面是用到的样例图片&#xff0c;一张…

如何在OpenFOAM的案例文件夹中确定数据的点和面,确定点和网格之间的关系,从而用于深度学习预测和构建模型呢(分析数据格式及其含义)

在OpenFOAM中&#xff0c;点&#xff08;points&#xff09;和面&#xff08;faces&#xff09;的定义是通过不同的文件来进行的。在案例一级目录下面的constant/polyMesh目录下&#xff0c;会有points, faces, owner, neighbour等文件&#xff0c;来描述网格的几何和拓扑结构。…

最新深度技术Win7精简版系统:免费下载!

在Win7电脑操作中&#xff0c;用户想要给电脑安装上深度技术Win7精简版系统&#xff0c;但不知道去哪里才能找到该系统版本&#xff1f;接下来系统之家小编给大家带来了深度技术Win7系统精简版本的下载地址&#xff0c;方便大家点击下载安装。系统安装步骤已简化&#xff0c;新…

数据解读加密世界的重新定位:全球流动性困境下的转型之痛

全球每一天将会产生50亿次以上的搜索&#xff0c;每一天有491EB的数据出现在我们的生活中&#xff0c;如果这些数据量全部以Email的形式展现&#xff0c;那相当于1个人1天需要处理36亿封电子邮件。随着区块链技术的不断发展&#xff0c;从链下到链上&#xff0c;链上数据构建的…

SVM - 径向基函数核 Radial Basis Function Kernel,简称RBF核或者高斯核

SVM - 径向基函数核 Radial Basis Function Kernel&#xff0c;简称RBF核或者高斯核 flyfish 径向基函数核&#xff08;Radial Basis Function Kernel&#xff0c;简称RBF核&#xff09;&#xff0c;也称为高斯核&#xff0c;是一种常用的核函数&#xff0c;用于支持向量机&a…

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…

国产PLC能否使用无线通讯终端来实现无线通讯?让我们一探究竟

在工业生产车间内&#xff0c;PLC被广泛应用于自动化控制的各个环节。随着智能化工厂的建设&#xff0c;许多PLC仍处于信息孤岛状态&#xff0c;现要将厂区内分散的PLC都建立通讯&#xff0c;如果重新布线工厂量大且不美观&#xff0c;此时就需要用到工业PLC无线通讯设备来解决…

Knife4j的介绍与使用

目录 一、简单介绍1.1 简介1.2 主要特点和功能&#xff1a; 二、使用步骤&#xff1a;2.1 添加依赖&#xff1a;2.2 yml数据源配置2.3 创建knife4j配置类2.4 注解的作用 最后 一、简单介绍 1.1 简介 Knife4j 是一款基于Swagger的开源文档管理工具&#xff0c;主要用于生成和管…

【Android应用】生成证书和打包

安卓生成证书和打包 &#x1f4d6;1. 生成自有证书&#x1f4d6;2. 安卓打包✅步骤一&#xff1a;导入签名文件✅步骤二&#xff1a;设置打包版本✅步骤三&#xff1a;生成签名包或APK &#x1f4d6;1. 生成自有证书 地址&#xff1a;https://www.yunedit.com/createcert 说明…