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

文章目录

  • 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

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
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92testroot
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.htmlgitParameter (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 --versionmvn --versiongit versiondocker -v"""script {buildName "#${BUILD_NUMBER} ${RegistryUrl}/${PLAT}/${PROJECT}:${ImageVer}"}}}// 删除当前目录(${WORKSPACE})下内容,通常用在构建完毕之后清空工作空间stage('Delete Workspace') { steps {echo "清理工作目录: ${WORKSPACE}"deleteDir()}}// 拉取代码 http://www.manongjc.com/detail/63-ncmakycccpkqxsr.htmlstage('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() {@Overridepublic 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());}@Overridepublic 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

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

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

相关文章

第一个ffmpeg程序

在进行使用ffmpeg进行编写程序时&#xff0c;首先要记得进行注册设备&#xff08;avdevice_register_all &#xff09;&#xff0c;程序运行时&#xff0c;只需要注册一次就可以 avdevice_register_all 是 FFmpeg 多媒体处理库中的一个函数&#xff0c;其作用是注册所有可用的音…

【AI前沿】人工智能的历史演进

文章目录 &#x1f4d1;引言一、人工智能的起源与早期发展1.1 古代与早期的智能机器设想1.2 20世纪初期的机械计算机1.3 图灵测试与计算智能1.4 达特茅斯会议与人工智能的正式诞生 二、早期AI研究与第一次冬天2.1 早期的探索与挑战2.2 早期的专家系统2.3 第一次AI冬天 三、专家…

SpringBoot日常:@Scheduled实现服务启动时执行一次

文章目录 一、Scheduled详解二、逻辑实现1、创建定时任务逻辑方法2、新建一个启动执行类 三、测试结果 说到定时任务&#xff0c;我们应该会想起Scheduled&#xff0c;Quartz以及XXL-JOB&#xff0c;但是有的单体服务或者小项目&#xff0c;为了方便快捷&#xff0c;可能会直接…

【昇思25天学习打卡营第1天】

前言 例如&#xff1a;随着大模型的爆火&#xff0c;这门技术也越来越重要&#xff0c;很多人都开启了关于大模型知识的学习&#xff0c;但大模型需要一定的资源且涉及的模块很多&#xff0c;如果个人想要系统的学习会有些难度&#xff0c;好在有昇思大模型平台&#xff0c;能…

WebRTC群发消息API接口选型指南!怎么用?

WebRTC群发消息API接口安全性如何&#xff1f;API接口怎么优化&#xff1f; WebRTC技术在现代实时通信中占据了重要地位。对于需要实现群发消息功能的应用程序来说&#xff0c;选择合适的WebRTC群发消息API接口是至关重要的。AokSend将详细介绍WebRTC群发消息API接口的选型指南…

本地部署 SenseVoice - 阿里开源语音大模型

本地部署 SenseVoice - 阿里开源语音大模型 1. 创建虚拟环境2. 克隆代码3. 安装依赖模块4. 启动 WebUI5. 访问 WebUI 1. 创建虚拟环境 conda create -n sensevoice python3.11 -y conda activate sensevoice 2. 克隆代码 git clone https://github.com/FunAudioLLM/SenseVoic…

本地部署 Llama3 – 8B/70B 大模型!

Llama3&#xff0c;作为Meta公司新发布的大型语言模型&#xff0c;在人工智能领域引起了广泛的关注。特别是其8B&#xff08;80亿参数&#xff09;版本&#xff0c;在性能上已经超越了GPT-3.5&#xff0c;而且由于是开源的&#xff0c;用户可以在自己的电脑上进行部署。 本文和…

太多项会毁了回归

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 多项式回归的过度拟合及其避免方法 通过添加现有特征的幂&#xff0c;多项式回归可以帮助你充分利用数据集。它允许我们甚至使用简…

【智能算法改进】多策略改进的蜣螂优化算法

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】蜣螂优化算法&#xff08;DBO&#xff09;原理及实现 2.改进点 混沌反向学习初始化 采用 Pwlcm 分段混沌映射&#xff0c;由于 Pwlcm 在其定义区间上具有均匀的密度函数&#xff0c;在特定的…

User parameters 用户参数与Web监控

目录 一. 自定义键介绍 二. 制作步骤 1. 添加无可变部分参数 2. 添加有可变参数 3. 使用用户参数监控php-fpm 服务的状态 三. Web页面导入应用监控 四. Web监控 主要功能和操作&#xff1a; 开启方式 官方预定义监控项文档https://www.zabbix.com/documentation/6…

华三m-lag三层转发+VRRP配置案例

目录 一、相关理论介绍 1.1 华三M-LAG介绍 1.2 DRCP协议 1.3 keepalive机制 1.4 MAD机制 1.5 一致性检查功能 二、M-LAG系统建立及工作过程 三、实验组网案例 3.1 组网需求 3.2 组网拓扑 3.3 设备接口及地址规划 四、具体配置命令 4.1 S6850-1的配置 4.2 S6850-2…

AI:助力开发者翱翔,而非抢夺其舞台

在当今这个科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;犹如一股春风&#xff0c;悄然渗透进全球各个行业&#xff0c;尤其在软件开发领域&#xff0c;其影响力日益显著。从初创企业到跨国巨头&#xff0c;无一不在积极探索AI如何重塑编程的面貌&#xf…

护眼灯什么价位的好?好用又实惠的护眼灯推荐

护眼灯&#xff0c;简单来说就是保护视力的台灯&#xff0c;专业的护眼台灯的光线与自然光光线相似&#xff0c;有亮度稳定、不闪烁&#xff0c;发光面积大等这些特点。那么&#xff0c;护眼灯什么价位的好&#xff1f;市面上所出现的护眼台灯良莠不齐&#xff0c;价格低的质量…

【源码+文档+调试讲解】文物管理系统

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

warning: LF will be replaced by CRLF the next time Git touches it warning

问题&#xff1a; warning: in the working copy of , LF will be replaced by CRLF the next time Git touches it warning: 今天上传git时报错&#xff0c;使用Ai&#xff1b;得知&#xff1b; 解决&#xff1a; 将 Git 配置为不自动转换换行符&#xff0c;使用以下命令…

一.5 高速缓存至关重要

这个简单的示例揭示了一个重要的问题&#xff0c;即系统花费了大量的时间把信息从一个地方挪到另一个地方。hello程序的机器指令最初是存放在硬盘上&#xff0c;当程序加载时&#xff0c;它们被复制到主存&#xff1b;当处理器运行程序时&#xff0c;指令又从主存复制到处理器。…

触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘

如何在触摸设备上为输入域添加虚拟键盘&#xff1f; 一个插件可以解决这个问题&#xff0c;关键还支持高度自定义&#xff08;git地址&#xff09;&#xff1a; GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址&#xff1a;Virtual Keyboard 使用步骤&…

NISP证书备考指南与经验分享

在信息安全领域&#xff0c;NISP(国家信息安全水平考试)作为衡量专业能力的重要标尺&#xff0c;不仅是职场晋升的敲门砖&#xff0c;更是个人技能提升的关键一步。面对这一挑战&#xff0c;如何高效备考&#xff0c;成为众多学员关注的焦点。今天&#xff0c;为您精心打造这份…

原生APP开发的优势

原生APP开发是指使用特定的编程语言和开发工具&#xff0c;针对特定的操作系统平台进行开发的应用程序。相比于混合开发和Web开发&#xff0c;原生APP开发具有以下优势。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 性能更优 原…

Spring Boot Vue 毕设系统讲解 3

目录 项目配置类 项目中配置的相关代码 spring Boot 拦截器相关知识 一、基于URL实现的拦截器&#xff1a; 二、基于注解的拦截器 三、把拦截器添加到配置中&#xff0c;相当于SpringMVC时的配置文件干的事儿&#xff1a; 项目配置类 项目中配置的相关代码 首先定义项目认…