![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
笔记
TineAine
春随柳絮散不尽,君若烟火是流年
展开
-
Docker: error invoking remote method ‘docker-start-container‘: error: (http code 500) server error -
Docker容器无法启动,启动后报错:error invoking remote method 'docker-start-container': error: (http code 500) server error - ports are not available: listen tcp 0.0.0.0:3306: bind: an attempt was made to access a socket in a way forbidden by its access permissions.首原创 2021-10-12 11:02:38 · 11529 阅读 · 1 评论 -
Nifi常用表达式文档
文章目录表达式函数字符串大小写转换toUpper描述参数返回值案例toLower描述参数返回值案例去除字符串前后的空格trim描述参数返回值案例字符串截取substring描述参数返回值注意案例案例解释substringBefore/substringBeforeLast描述参数返回值注意案例案例解释substringAfter/substringAfterLast描述参数返回值注意案例案例解释附加与追加append/prepend描述参数返回值注意案例案例解释字符串替换replace/replaceFir原创 2021-09-20 09:54:03 · 5335 阅读 · 4 评论 -
Kubernets之Node、Pod和容器的关系
Pod根据调度配置分布在Node上,一个Pod可以包含多个容器Pod中最少存在一个容器(Pause),且Pod内任何容器端口不能冲突Pod中,所有容器共享网络栈和存储卷,因此可以通过localhost访问同一个Pod中的其他不同容器的资源Node可承载多个Pod,Pod可承载多个容器...原创 2021-09-20 09:52:05 · 5049 阅读 · 0 评论 -
Kubernets之HorizontalPodAutoScale原理(HPA)
HorizontalPodAutoScale简称HPA,目前仅在Deployment和RS中生效,早期版本支持通过CPU进行伸缩,目前版本支持根据CPU和内存进行伸缩实际上HPA就是一个Pod的资源监视器,假设一个RS的Pod的资源(如CPU、内存)超过了指定值,将会创建新的Pod水平扩展,直到CPU或内存使用率恢复正常范围,最大不会超过预设的最大值;同时如果资源利用率较低(资源闲置),将会销毁掉部分POD,同样的这个数字也不会小于预设的最小值。...原创 2021-09-20 09:51:19 · 259 阅读 · 0 评论 -
Kubernets之部署方式
Kubernets的有状态部署StatefulSet是Kubernets中的有状态部署,其特点是:数据存储持久化,通过PVC实现网络地址稳定:重启Pod其PodName和主机名不会改变,通过Headless Service实现有序部署/删除:前一个Pod运行成功,后续的Pod才能启动,而在删除时,也是有序的进行操作(比如Nginx - Apache - Mysql,启动会先启动Mysql,等待Mysql启动后才会启动Apache,同理删除时也会先删除Nginx,然后再删除Apache),通过Ini原创 2021-09-20 09:50:04 · 105 阅读 · 0 评论 -
Kubernets之有状态服务与无状态服务
有状态服务有状态服务是指其它的实例具有一定区别的服务,比如mysql数据库,多个mysql实例的数据并不是完全一致的,因此不能随意对其进行扩容或收缩在Kubernets中,StatefulSet就是一种有状态部署的方式无状态服务无状态服务是指,该服务的所有pod是平等的关系,没有区别的;对于同一个请求,每个pod返回的内容都是一致的,其中的数据也是完全一致,可以随意的进行伸缩特别的,Docker就是面向无状态服务而设计的在Kubernets中,Deployment和RS都是无状态部署的方式.原创 2021-09-20 09:45:57 · 654 阅读 · 0 评论 -
Nifi启动报错:Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
原因:JDK版本和要求的不一致,如Nifi 1.12.1要求JDK1.8,但选择了JDK 11,就有可能存在这种问题另外在调试Nifi时,也有可能因为Nifi源文件的Pom中指定了JDK11,导致编译失败或启动后报错,同样改为1.8即可。解决改为官方要求的版本(1.12.1指定的是1.8)...原创 2021-09-16 15:14:27 · 668 阅读 · 0 评论 -
Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
创建Spring Boot项目后Pom报错:Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found正常通过mvn clean install,也可以直接执行,报错原因是未指定版本号,指定即可 <build> <plugins> <plugin> <groupId>org.springframe原创 2021-08-31 13:50:57 · 470 阅读 · 0 评论 -
windows docker desktop安装Kubernets
步骤确保CPU支持并开启虚拟化更新Docker Desktop到最新版本(可选)配置Docker Desktop镜像加速通过自动安装脚本下载Kubernets的镜像安装Docker Desktop Kubernets安装Kubernetes dashboard(可选)检查CPU虚拟化情况Ctrl + Shift+Esc 打开资源管理器,打开性能面板标红处必须为已启用,否则必然会安装失败更新Docker Desktop可选,最好是更新一下,看个人习惯在Docker Desktop原创 2021-07-19 10:27:23 · 370 阅读 · 3 评论 -
Docker安装Mysql
进入 WSL2 或 CMD 命令行,执行:docker run --name mysql -v /home/aine/temp/docker/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=980208 -d mysql:latest记得将 -v 后的路径改为你 本地的路径,如果不需要挂载,则使用:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=980208 -d原创 2021-07-15 14:18:12 · 66 阅读 · 0 评论 -
Redis链接到远程服务器
redis-cli -h 地址 -p 端口 -a 密码密码参数如果未设置,代表目标Redis无密码redis-cli就是Redis运行目录下的redis-cli或redis-cli.exe原创 2021-07-08 09:40:11 · 93 阅读 · 0 评论 -
Docker 报错:Error response from daemon: manifest for hivecell/nifi:latest not found: manifest unknown
命令docker pull hivecell/nifi报错Error response from daemon: manifest for hivecell/nifi:latest not found: manifest unknown: manifest unknown原因未指定要拉取的版本,指定版本即可解决docker pull hivecell/nifi:1.11.4-arm64原创 2021-07-06 11:08:24 · 236 阅读 · 0 评论 -
Docker 部署Kafka集群 + Kafka Manager + Zookeeper
确保本地已安装Docker# 执行如下命令docker -v正常情况下应有类似于如下的回显:Docker version 20.10.6, build 370c289执行脚本注意,脚本中的所有 { ip } 务必更换为本地的IP地址#!/bin/bash# ------------------------------------## Docker Sh## Kafka.sh## @ Tine Aine## @ 2021-06-01## ----------------原创 2021-06-01 16:53:10 · 479 阅读 · 0 评论 -
HTML Help Workshop(chm生成工具)的使用
开始下载目前在微软官网并没有找到合适的版本,似乎已经被下架了,可以直接用我的版本地址:https://pan.baidu.com/s/14CNsCnZob2vT4B39DHTpUg密码:9z8z安装免费软件,不涉及任何补丁,直接默认安装即可可以将chm最后生成的程序视为一个简单的浏览器,它可以读取html、css和js文件,但一般来说最多使用html和css即可注意事项编译时一定要保持chm文件是关闭状态,否则会出现以下错误!HHC5010: Error: Cannot open原创 2021-05-19 16:45:30 · 1598 阅读 · 4 评论 -
Linux无ip地址
执行下述命令,最后的ifcfg-ens33为网卡名称,不同Linux发行版可能默认名称不同,例如Centos默认为ens33vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT修改为yesTYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIP原创 2021-04-09 09:17:41 · 116 阅读 · 0 评论 -
Nifi Api访问
Nifi ApiNifi通过Restful API的形式将自身的功能开放,用户可以在编写脚本时,通过HTTPClient的方式直接调用这些接口,以达到对Nifi自动化操作的目的参考Nifi API Document:https://nifi.apache.org/docs/nifi-docs/rest-api/index.html环境Nifi 单节点服务或Nifi 集群模式,需要能访问到Nifi开放的8080端口(默认)需通过HttpClient方式访问调用我们不能和之前一样调用lo原创 2021-03-18 16:24:12 · 2094 阅读 · 0 评论 -
Nifi 处理器开发 - 如何写Content
// flowFile = session.write(flowFile, out -> out.write("要写入Content的内容"));flowFile = session.write(flowFile, out -> out.write(value.get().getBytes()));原创 2021-02-20 10:20:17 · 257 阅读 · 0 评论 -
Nifi 处理器开发 - 如何读Content
if (RedisConfig.equals("ERROR")) { // Oracle的配置 final Charset charset = StandardCharsets.UTF_8; final byte[] buffer = new byte[1024]; final AtomicInteger bufferedByteCount = new AtomicInteger(0); session.read(flowFile, new InputStreamCa原创 2021-02-20 10:19:22 · 347 阅读 · 0 评论 -
Nifi 定时任务
Nifi定时任务不需要在处理器中定义,只需要在处理器配置中的Scheduling标签页中设置即可设置位置表达式的基本形式秒 分钟 小时 一个月中的一天 月 周(星期) 年(可选)特殊标识通过*表达通配符,也就是任意,通过?标识未指定,仅用于周(星期)值的表示单独数字(可以用,分割多个时间段),如分钟字段设置为 1,2,5,即代表1分钟,2分钟和5分钟时间范围(一个时间段,用-表示)如分钟字段设置为 1-10,即代表从1分钟到十分钟自动增量(系统自动增量,用/分割开始和增量)如分钟字段设原创 2021-02-19 10:18:46 · 1787 阅读 · 1 评论 -
Nifi 处理器开发 - 并发问题
并发问题1.通过使用volatile关键字确保防止编译器优化(确定该值为不确定,易改变的值,每次使用都会重新读取,而不是用寄存器中的缓存)// 出自Nifi CountText处理器源码// 这些变量可能以多线程方式进行访问,因此不能使用寄存器中的缓存进行处理private volatile boolean countLines;private volatile boolean countLinesNonEmpty;private volatile boolean countWords;pri原创 2021-02-19 08:48:19 · 331 阅读 · 0 评论 -
Nifi 处理器开发 - 如何写Attribute
如何写Attribute1.类中定义参数的键名和值// 定义参数和值public static final String TEST = "test";2.写入FlowFile// 定义一个HashMap(用于存放新的属性,名称不限)Map<String, String> metricAttributes = new HashMap<>();// 将属性送入一个Map中(多个属性就多次压入)metricAttributes.put(TEST, "Hello");//原创 2021-02-19 08:47:28 · 309 阅读 · 0 评论 -
Nifi 处理器开发 - 如何读取Attribute
// 参数key指的就是属性的key值,传入即可获取valueString test = flowFile.getAttribute(key);原创 2021-02-19 08:46:37 · 401 阅读 · 0 评论 -
Nifi 处理器开发 - 如何读取Processor参数
如何读取Processor参数1.首先定义参数 public static final PropertyDescriptor TEXT = new PropertyDescriptor .Builder().name("Text") .displayName("text") .description("这部分是描述") .required(true) .addValidator(原创 2021-02-19 08:45:30 · 436 阅读 · 0 评论 -
Nifi 处理器开发 - 如何创建Processor参数和返回
1.声明参数// 参数1public static final PropertyDescriptor USE_FILE = new PropertyDescriptor.Buildler() // 参数名 .name("Use File") // 显示名 .displayName("Use File") // 必须的参数(如果不填则处理器报错) .required(true) // 允许的值(其值只能是括号内的值) .allowableVa原创 2021-02-19 08:44:42 · 464 阅读 · 0 评论 -
Nifi组件的生命周期
OnAdded当该处理器被拖动到画布时执行(创建组件时执行)OnEnabled当该处理器被启用时执行OnRemoved当该处理器被从流中移除时触发OnScheduled当每次计划运行时触发(不应被应用于ControllerService),一般用于处理器或运行报告(Log)中。OnUnscheduled和OnScheduled类似,会因为计划运行结束而触发OnStopped当Nifi系统结束时(不再运行处理器、Log任务和从方法中返回线程)OnShutdown当Nifi成功结束后,原创 2021-02-19 08:42:22 · 405 阅读 · 0 评论 -
Centos 8搭建Redis集群
总体来说,本地的Redis搭建集群比较简单,基本可以概括为:1.创建Redis Bin目录副本2.修改Redis Config配置3.启动所有节点1.创建Redis副本在/usr/local/下创建redis-cluster文件夹mkdir /usr/local/redis-cluster将Redis中的bin目录复制六份,存放于redis-cluster文件夹中,并分别命名为redis01 - redis06cp -r /usr/local/redis/bin/ /usr/local.原创 2021-02-09 11:41:21 · 249 阅读 · 0 评论 -
Nifi操作Oracle
简介Nifi可以很轻易的操作Oracle,实现常见的查插删改,本文以Oracle数据库为范例,但并不代表只能操作Oracle数据库,你可以更换驱动和URL来操作其他数据库服务DBCPConnectionPoolNifi通过该服务操作Oracle数据库(当然也可以操作其他数据库,选择不同链接即可)控制器ExecuteSQL执行SQLConvertAvroToJSON将Avro转换为JSON(Nifi查询后结果为Avro)案例全家福解读我们通过HTTP Request控制器(Hand原创 2021-02-02 16:26:21 · 1549 阅读 · 0 评论 -
Nifi操作Redis
Nifi功能Nifi操作Redis简介Nifi操作Redis,需要通过服务的形式,其流程非常简单,创建服务——>创建处理器——>测试服务RedisConnectionPoolService该控制器服务用来链接到Redis,并控制链接参数RedisDistributedMapCacheClientService控制器PutDistributedMapCacheFetchDistributedMapCache案例通用步骤通用步骤指的是读写Redis都需要执行的操作,其实就原创 2021-02-02 11:32:11 · 1797 阅读 · 2 评论 -
Nifi 常用Processor
ExecuteScript : 执行脚本处理器, 支持: clojure, ecmascript, groovy, lua, python, rubyQueryDatabaseTable : 数据库查询处理器, 支持: mysqlConvertAvroToJSON : avro 数据格式转换为 jsonSplitJson : 将JSON文件拆分为多个单独的FlowFiles, 用于由JsonPath表达式指定的数组元素。EvaluateJsonPath : 根据FlowFile的内容评估一原创 2021-01-29 09:37:24 · 1075 阅读 · 1 评论 -
Go 工程管理和工作区
工作区在Go语言中,Go通过包的方式进行管理项目Go源代码必须放置在工作区中,否则在导入包时编译器会默认去Path中寻找包结构src通过代码的形式组织文件(一般保存代码文件)pkg一般存放通过go install生成的可执行文件bin和pkg目录的功能类似包操作导入包导入包必须使用,否则无法通过编译// 一般用于导入单个包或少量包import os// 也可以这样导入import ( "fmt" "os")点操作可以不写包名直接使用,原创 2020-12-18 15:22:48 · 119 阅读 · 0 评论 -
Go 函数
函数约定首字母大写为public,小写为private不支持默认参数(参数默认值)可以有多个参数(0个或多个)可以有多个返回值(0个或多个)返回值也可以进行命名如果有返回值,必须在函数中添加return语句基本结构无参无返回package mainimport "fmt"func say(){ fmt.Print("Say Hello")}func main(){ say()}无参有返回package mainimport "fmt"func原创 2020-12-18 14:05:27 · 102 阅读 · 0 评论 -
Go 循环和跳转
循环for循环package mainfunc main() { count := 0 for i := 0; i <= 100; i++ { count += i } print(count)}package mainimport "fmt"func main(){ for{ fmt.Println("死循环") }}rangepackage mainimport "fmt"func main() { str := "原创 2020-12-17 09:45:41 · 119 阅读 · 0 评论 -
Go 选择结构
选择if单分支package main// 引入包import "fmt"// 定义一个函数,返回一个int数据func get() int { return 1}func main() { // 可以通过这种方式进行赋值并判断 // 类似于C中的for结构 if swap := get();swap==1 { fmt.Print(swap) }}if多分支package main// 导包import "fmt"// 定义一个函数,返回一个int数据原创 2020-12-17 09:14:13 · 121 阅读 · 0 评论 -
Java Web Html部分笔记
HTML CSS即超文本标记语言,一般不认为是编程语言HTML 语法HTML由标签组成,标签分为围堵标签和自闭合标签标签可以嵌套,但必须正确嵌套html后缀名可以是html或htm开始标签中可以定义属性,属性由键值对组成,值需要用引号引起来标签不区分大小写(但一般使用小写)<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>标题</title原创 2020-12-15 16:56:28 · 93 阅读 · 0 评论 -
Go 格式化输出
格式解释%%代表%字符%c字符%d十进制数值%o八进制数值%x十六进制数值(小写)%X十六进制数值(大写)%b二进制整数值%s字符串%T类型(指变量的类型)%p用十六进制表示一个地址%v采用默认格式输出(万能格式)...原创 2020-12-15 14:48:04 · 130 阅读 · 0 评论 -
Go 数据类型
数据类型类型名称长度初始值说明bool布尔1false布尔类型byte字节型10uint8别名rune字符40存储Unicode编码,等价于uint32int/uint整型4/80-int8/uint8整型10-int16/uint16整型20-int32/uint32整型40-int64/uint64整型80-float32浮点40.0精确到小声点后七位原创 2020-12-15 14:40:53 · 85 阅读 · 0 评论 -
Python 元组的使用
元组应用场景不可修改的数据即可使用元组定义元组# 定义多数据的元组t1 = (1,2,3)# 单数据最后必须要加上逗号t2 = (1,)# 不加逗号就只是一个基本类型的数据(不是元组)t3 = (1)常用方法index/count/len# 和列表的操作是一样的name_list = ("张三", "李四", "王五", "赵六", "王五")# 所在位置 indexprint(name_list.index("张三"))# 出现的次数 countprint(name_l原创 2020-12-11 09:59:23 · 112 阅读 · 0 评论 -
Python 列表的使用
列表应用场景需要存储多个不同的变量语法# 定义列表# 存储的数据类型可以不同# 但尽可能存储相同的数据类型l = [123, 456, 789, "hello", 3.14]下标# 定义一个列表name_list = ["张三", "李四", "王五", "赵六"]print(name_list[0])print(name_list[1])print(name_list[2])print(name_list[3])常用方法index/count/lenname_list原创 2020-12-11 09:58:57 · 598 阅读 · 0 评论 -
Go 定义变量
package mainimport "fmt"// 声明格式为 var 变量名 类型// 一旦声明必须使用,否则会报错// int变量的默认值为0// 赋值前必须先声明变量func main(){ // 声明 var s int // 赋值 s = 10 // 声明并初始化 var k int = 20 // 自动推导类型 var i = 30 // 更简单的自动推导类型 p := 100 // 可以一起定义原创 2020-12-10 10:33:23 · 191 阅读 · 0 评论 -
Go 匿名变量
package mainimport "fmt"func main(){ // 多重赋值 i,j := 10,20 // 多重赋值 a,b := 100,200 // 两个变量交换数据 i,j = j,i // 两个变量交换数据 a,b = b,a // 一个下划线就是一个匿名变量 a,_ = j,i fmt.Println(i,j) fmt.Println(a,b)}// 在函数返回值中的应用package mainimport "fmt"// Go允许返回原创 2020-12-10 10:32:27 · 144 阅读 · 0 评论