【开发日志-已归档】2021-08
【nexus】上传pom失败的原因
maven的deploy:deploy-file命令安装的jar和pom位于本地repository的目录下时命令会出错 (Cannot deploy artifact from the local repository…),解决方法是将要安装的jar和pom文件copy到其它目录再安装,只要不在本地仓库目录都可以
【设计模式】构建者模式
public class ExceptionEventBuilder { public static ExceptionEventBuilder builder(){ return new ExceptionEventBuilder(); } private ExceptionEventBuilder(){ this.exceptionEvent = new ExceptionEvent(); } private ExceptionEvent exceptionEvent; public ExceptionEventBuilder setMessage(String message){ this.exceptionEvent.setMessage(message); return this; } public ExceptionEventBuilder setStacktrace(String stacktrace){ this.exceptionEvent.setStacktrace(stacktrace); return this; } public ExceptionEventBuilder setType(String type){ this.exceptionEvent.setType(type); return this; } public ExceptionEvent build(){ return this.exceptionEvent; } }
【mysql】mysql和mysqld的区别
mysql -- mysql is a command-line client for executing SQL statements interactively or in batch mode.
mysqld -- mysqld is the MySQL server.
就是说:
mysql是一个命令行程序。
mysqld是一个服务。
Linux系统里一般服务都是以的结尾的,比如httpd,mysqld等。
所以在开启服务时也要用服务的名字,这样:
systemctl start mysqld.service
service stop mysqld
d的全拼是daemon,也就是守护程序的意思,常驻与后台。
分类: Linux基础
【SMART】目标管理原则
——S代表具体(Specific),指绩效考核要切中特定的工作指标,不能笼统;
——M代表可度量(Measurable),指绩效指标是数量化或者行为化的,验证这些绩效指标的数据或者信息是可以获得的;
——A代表可实现(Attainable),指绩效指标在付出努力的情况下可以实现,避免设立过高或过低的目标;
——R代表相关性(Relevant),指绩效指标是与工作的其它目标是相关联的;绩效指标是与本职工作相关联的;
——T代表有时限(Time-bound),注重完成绩效指标的特定期限。
【maven】
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project springcloud-provider: Fatal error compiling
是由于项目所需jdk版本和你当前使用的jdk版本不一致导致的
【maven】将依赖jar包打入整包
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- maven 打包集成插件 --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <descriptorRefs> <!-- 将依赖一起打包到 JAR --> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
在Maven中,主要有3个插件可以用来打包:
- maven-jar-plugin,默认的打包插件,用来打普通的project JAR包;
- maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包;
- maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。
我们日常使用的以maven-assembly-plugin为最多,因为大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。
要使用该插件,就在项目pom文件中加入以下内容。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>${maven-assembly-plugin.version}<version> <executions> <execution> <id>make-assembly</id> <!-- 绑定到package生命周期 --> <phase>package</phase> <goals> <!-- 只运行一次 --> <goal>single</goal> </goals> </execution> </executions> <configuration> <!-- 配置描述符文件 --> <descriptor>src/main/assembly/assembly.xml</descriptor> <!-- 也可以使用Maven预配置的描述符 <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> --> </configuration> </plugin> </plugins> </build>
assembly插件的打包方式是通过descriptor(描述符)来定义的。
Maven预先定义好的描述符有bin,src,project,jar-with-dependencies等。比较常用的是jar-with-dependencies,它是将所有外部依赖JAR都加入生成的JAR包中,比较傻瓜化。
但要真正达到自定义打包的效果,就需要自己写描述符文件,格式为XML。下面是我们的项目中常用的一种配置。
<assembly> <id>assembly</id> <formats> <format>tar.gz</format> </formats> <includeBaseDirectory>true</includeBaseDirectory> <fileSets> <fileSet> <directory>src/main/bin</directory> <includes> <include>*.sh</include> </includes> <outputDirectory>bin</outputDirectory> <fileMode>0755</fileMode> </fileSet> <fileSet> <directory>src/main/conf</directory> <outputDirectory>conf</outputDirectory> </fileSet> <fileSet> <directory>src/main/sql</directory> <includes> <include>*.sql</include> </includes> <outputDirectory>sql</outputDirectory> </fileSet> <fileSet> <directory>target/classes/</directory> <includes> <include>*.properties</include> <include>*.xml</include> <include>*.txt</include> </includes> <outputDirectory>conf</outputDirectory> </fileSet> </fileSets> <files> <file> <source>target/${project.artifactId}-${project.version}.jar</source> <outputDirectory>.</outputDirectory> </file> </files> <dependencySets> <dependencySet> <unpack>false</unpack> <scope>runtime</scope> <outputDirectory>lib</outputDirectory> </dependencySet> </dependencySets> </assembly>
id与formats
formats是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个format。
id则是添加到打包文件名的标识符,用来做后缀。
也就是说,如果按上面的配置,生成的文件就是a r t i f a c t I d − {artifactId}-artifactId−{version}-assembly.tar.gz。
fileSets/fileSet
用来设置一组文件在打包时的属性。
directory:源目录的路径。
includes/excludes:设定包含或排除哪些文件,支持通配符。
fileMode:指定该目录下的文件属性,采用Unix八进制描述法,默认值是0644。
outputDirectory:生成目录的路径。
files/file
与fileSets大致相同,不过是指定单个文件,并且还可以通过destName属性来设置与源文件不同的名称。
dependencySets/dependencySet
用来设置工程依赖文件在打包时的属性。也与fileSets大致相同,不过还有两个特殊的配置:
unpack:布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包。
scope:表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime。
按照以上配置打包好后,将.tar.gz文件上传到服务器,解压之后就会得到bin、conf、lib等规范化的目录结构,十分方便。
【ideaj】
setting - Tools - Terminal(或者搜索terminal)
可以切换cmd或powershell
【windows】右键直接执行cmd
1. 打开注册表
1 2 3 4 5 6 7 |
# 1. 使用快捷键打开 “运行” # win + r # 2. 在 “运行” 中输入 # regedit # 3. 回车 |
2. 创建与设置 OpenCMDHere
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 1. 切换到 # HKEY_CLASSES_ROOT\Directory\Background\shell\ # 2. 创建 # 右击 shell ,新建项 “OpenCMDHere” # 并在该项下,右击新建项 “command” # 3. 将 OpenCMDHere 默认改为 在此处打开命令窗口 # 1). 直接点击 OpenCMDHere # 2). OpenCMDHere 的默认值数据改为 在此处打开命令窗口 # 4. 创建 OpenCMDHere 的图片 # 1). 右键 新建字符串名, 名字为 Icon # 2). 将值改为 cmd.exe |
3. 设置 command
进入command项下,设置键值为cmd.exe /s /k pushd "%V"
【windows】通过命令行重启电脑
shutdown -r
【K8S】健康检查
健康检查
健康检查(Health Check)是让系统知道您的应用实例是否正常工作的简单方法。 如果您的应用实例不再工作,则其他服务不应访问该应用或向其发送请求。 相反,应该将请求发送到已准备好的应用程序实例,或稍后重试。 系统还应该能够使您的应用程序恢复健康状态。
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现如下需求:
- 零停机部署。
- 避免部署无效的镜像。
- 更加安全的滚动升级。
探针类型
Liveness存活性探针
Liveness探针让Kubernetes知道你的应用程序是活着还是死了。 如果你的应用程序还活着,那么Kubernetes就不管它了。 如果你的应用程序已经死了,Kubernetes将删除Pod并启动一个新的替换它。
Readiness就绪性探针
Readiness探针旨在让Kubernetes知道您的应用何时准备好其流量服务。 Kubernetes确保Readiness探针检测通过,然后允许服务将流量发送到Pod。 如果Readiness探针开始失败,Kubernetes将停止向该容器发送流量,直到它通过。 判断容器是否处于可用Ready状态,达到ready状态表示pod可以接受请求, 如果不健康,从service的后端endpoint列表中把pod隔离出去
探针执行方式
HTTP
HTTP探针可能是最常见的自定义Liveness探针类型。 即使您的应用程序不是HTTP服务,您也可以在应用程序内创建轻量级HTTP服务以响应Liveness探针。 Kubernetes去ping一个路径,如果它得到的是200或300范围内的HTTP响应,它会将应用程序标记为健康。 否则它被标记为不健康。
httpget配置项
host:连接的主机名,默认连接到pod的IP。你可能想在http header中设置"Host"而不是使用IP。 scheme:连接使用的schema,默认HTTP。 path: 访问的HTTP server的path。 httpHeaders:自定义请求的header。HTTP运行重复的header。 port:访问的容器的端口名字或者端口号。端口号必须介于1和65535之间。
Exec
对于Exec探针,Kubernetes则只是在容器内运行命令。 如果命令以退出代码0返回,则容器标记为健康。 否则,它被标记为不健康。 当您不能或不想运行HTTP服务时,此类型的探针则很有用,但是必须是运行可以检查您的应用程序是否健康的命令。
TCP
最后一种类型的探针是TCP探针,Kubernetes尝试在指定端口上建立TCP连接。 如果它可以建立连接,则容器被认为是健康的;否则被认为是不健康的。
如果您有HTTP探针或Command探针不能正常工作的情况,TCP探测器会派上用场。 例如,gRPC或FTP服务是此类探测的主要候选者。
liveness-exec样例
执行命令。容器的状态由命令执行完返回的状态码确定。如果返回的状态码是0,则认为pod是健康的,如果返回的是其他状态码,则认为pod不健康,这里不停的重启它。
#cat liveness_exec.yaml apiVersion: v1 kind: Pod metadata: labels: test: liveness-exec name: liveness-exec spec: containers: - name: liveness-exec image: busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
readiness-exec样例
apiVersion: apps/v1 kind: Deployment metadata: name: busybox-deployment namespace: default labels: app: busybox spec: selector: matchLabels: app: busybox replicas: 3 template: metadata: labels: app: busybox spec: containers: - name: busybox image: busybox:latest imagePullPolicy: IfNotPresent ports: - containerPort: 80 args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 readinessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
liveness-http样例
#cat liveness_http.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: default labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 livenessProbe: httpGet: path: /index.html port: 80 httpHeaders: - name: X-Custom-Header value: hello initialDelaySeconds: 5 periodSeconds: 3
readiness-http样例
创建一个2个副本的deployment
# cat readiness_http.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: default labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 readinessProbe: httpGet: path: /index.html port: 80 httpHeaders: - name: X-Custom-Header value: hello initialDelaySeconds: 5 periodSeconds: 3
TCP liveness和readiness探针
TCP检查的配置与HTTP检查非常相似,主要对于没有http接口的pod,像MySQL,Redis,等等
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: default labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 livenessProbe: tcpSocket: port: 80 initialDelaySeconds: 5 periodSeconds: 3 readinessProbe: tcpSocket: port: 80 initialDelaySeconds: 5 periodSeconds: 3
Probe详细配置
initialDelaySeconds:容器启动后第一次执行探测是需要等待多少秒。
periodSeconds:执行探测的频率。默认是10秒,最小1秒。
timeoutSeconds:探测超时时间。默认1秒,最小1秒。
successThreshold:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1。
failureThreshold:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
HTTP probe中可以给httpGet设置其他配置项:
【Redis】Redis版本差异
Redis 4.0.0
Redis 4.0.0 正式发布,这是 Redis 4.0 系列的首个稳定版,包含以下的一些重大改进:模块化的系统、更好的复制 (PSYNC2)、对 eviction policies, threaded DEL/FLUSH 的改进、混合 RDB+AOF 格式、对 Raspberry Pi 的支持作为主要平台、新的 MEMORY 命令行、Redis Cluster 对 Nat/Docker 的支持、更快的 Redis Cluster 键创建,以及许多其他较小的功能和一些行为修复等。
与之前的 RC 相比,有一些错误修复和改进,主要是:
针对新的复制引擎 PSYNC2 的修复
引入了模块线程安全上下文(Modules thread safe contexts),现在还是一个实验性的 API,但是当需要时,该 API 被认为是稳定和可用的
SLOWLOG 现在会记录 offending 的客户端名字和地址。要注意的是,这是对于向后兼容性的破坏,以防旧代码会判断 slowlog 条目由三个条目组成。
模块原生数据类型 RDB 格式已更改
AOF 检查程序现在可以处理 RDB preambles
添加了不支持 STORE 选项的 GEORADIUS_RO 和 GEORADIUSBYMEMBER_RO 变体,为了允许这种查询的只读扩容
HSET 现在是可变的,HMSET 被认为是弃用的(但将来会支持)。新的代码中请使用 HSET
GEORADIUS huge radius (>= ~6000 km) corner cases fixed, certain elements near the edges were not returned.
添加 DEBUG DIGEST 模块 API
HyperLogLog 命令不再在某些输入的字符串中(非 HLL)崩溃
修复在 MULTI/EXEC blocks 中的 SLAVEOF
其他许多小的 bug 修复和改进
详情请参阅发布说明
Redis 5.0.0
先看一下 Redis 5 带来的更新内容:
1. 新的流数据类型(Stream data type) https://redis.io/topics/streams-intro
2. 新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs)
3. RDB 现在可存储 LFU 和 LRU 信息
4. redis-cli 中的集群管理器从 Ruby (redis-trib.rb) 移植到了 C 语言代码。执行 `redis-cli --cluster help` 命令以了解更多信息
5. 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)
6. 升级 Active defragmentation 至 v2 版本
7. 增强 HyperLogLog 的实现
8. 更好的内存统计报告
9. 许多包含子命令的命令现在都有一个 HELP 子命令
10. 客户端频繁连接和断开连接时,性能表现更好
11. 许多错误修复和其他方面的改进
12. 升级 Jemalloc 至 5.1 版本
13. 引入 CLIENT UNBLOCK 和 CLIENT ID
14. 新增 LOLWUT 命令 http://antirez.com/news/123
15. 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语
16. 网络层中的差异优化
17. Lua 相关的改进:
- 将 Lua 脚本更好地传播到 replicas / AOF
- Lua 脚本现在可以超时并在副本中进入 -BUSY 状态
18. 引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
19. 对 Redis 核心代码进行了重构并在许多方面进行了改进
Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本。按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的体验 —— 虽然开发团队尚未发现关于这项特性的关键错误。此外,因为许多内部结构与 Redis 4 共享,因此在内部工作方式方面,变化不会很大。
————————————————
版权声明:本文为CSDN博主「星月的雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:Redis 4.0 与 Redis 5.0 改进_liu1390910的博客-CSDN博客_redis4和redis5区别
redis 各版本参数对比 https://www.cnblogs.com/hankyoon/p/13391975.html
【开发日志-已归档】2021-08相关推荐
- 【开发日志-已归档】2021-07
[Redis]bgsave bgsave持久化原理: 底层会fork 出一条子进程,这条子进程来进行持久化操作,而主进程进行相应其他操作,在子进程进行持久过程中,会生成temp.rdb,当子进程持久化 ...
- 【开发日志-已归档】2021-11
[centos]top命令切换视图 先输入top命令,打开top监控查看界面 $> top i. 切换内存显示方式(默认常规显示字节:第一次切换显示竖线型进度条:第二次切换显示实线型进度条:第三 ...
- 【开发日志-已归档】2021-06
[K8S]K8S中的port 在编排kubernetes时,Deployment的Pod项有containerPort,Service文件里的port,targetPort, nodePort,这些p ...
- 【开发日志-已归档】2021-01
[elasticsearch]es健康检查 GET _cluster/health { "cluster_name": "elasticsearch", &qu ...
- 【开发日志-已归档】2020-09
[centos]关闭You have new mail in /var/spool/mail/root提示 这个提示是LINUX会定时查看LINUX各种状态做汇总,每经过一段时间会把汇总的信息发送的r ...
- Oracle错误——归档日志已满问题
问题描述 安装完数据库后,在做压力测试,测试了没多久就出现了Oracle挂起的问题,提示如下错误: ORA-00257: Archiver error. Connect AS SYSDBA only ...
- WPF帝友借贷系统MV模式开发日志2021/04/02_前台登入注册页面搭建
WPF帝友借贷系统MV模式开发日志_前台页面搭建 下面是我搭建好的前台登入界面 可以看出,登入界面主要分为两个部分 一个部分是登入程序信息显示(左边) 一部分是登入数据验证部分(右边)因为是桌面软件, ...
- 纯Go实现的Firebase的替代品 | Gopher Daily (2021.08.11) ʕ◔ϖ◔ʔ
每日一谚:Global variables should have longer names. Go技术生态 如何才能成功将Python切换到Go - https://itnext.io/opinio ...
- android开发2021,2021年高校邦Android手机软件快速开发App Inventor【2021秋】满分答案...
2021年高校邦Android手机软件快速开发App Inventor[2021秋]满分答案 更多相关问题 <模仿:西方文学中的现实的再现>作者是:A.霍布斯B.阿多诺C.奥尔巴赫D.米勒 ...
- 本博客导读(2021/08/09更新)
文章目录 1. 简介 1.1 博客精神 1.2 写作目的 1.3 技术方向 1.4 博主 1.5 版权说明 2 推荐内容 2.1 主要代表作 2.2 其他推荐内容 3. 程序类 3.1 C#程序设计 ...
最新文章
- 单链表-删除并释放以L为表头指针的单链表的所有结点(双指针法)
- 计算机病毒会不会通过u盘传染,这样会感染病毒吗?
- 【版本更新】Aspose.Slides V17.10发布 | 支持免费下载
- 五一商圈之外,红星商圈再塑长沙商圈第二极
- 【Matlab】找到矩阵中每个连通域的最小值
- 在线VS Code阅读源码神器 github1s
- 为Twitter4j创建自定义SpringBoot Starter
- 【转】WebSocket初探
- 机器学习算法总结之朴素贝叶斯法
- 安装与卸载软件的方法:rpm、yum工具介绍
- linux下 添加一个新账户tom,linux 账户管理命令 useradd、groupadd使用方法
- ContentServer迁移的几个步骤
- 元宇宙的车,迷你世界上不了
- 图像处理笔记1一上采样与下采样
- [RL 13] VDN (201706, DeepMind)
- android开发入门教程
- java - 数据库账号的加密解密
- R语言实战 第2版 中文目录
- python之dlib使用摄像头实时检测人脸
- php汉字验证码,PHP中实现中文汉字验证码 源代码
热门文章
- asp 加密 解密 类
- Elasticsearch 7.7.0 高阶篇-聚合技术
- 斐尔可圣手二代蓝牙设置问题
- pythongui编程星期的中英文对照_编写一个程序,根据用户输入的一个英文字符翻译成相应的中文日期,如输入“M”返回“星期一”。...
- 【小程序源码】强大的万年历微信小程序源码下载
- Centos7 安装 Tomcat8 的正确姿势 并设置开机自启
- 手机搭建php环境,安卓手机搭建PHP环境教程
- Linux系统命令行常识问答
- 十分钟自动执行一次_十分钟上手BDP,简单好用的数据分析神器
- mysql 查看进程_Mysql查看进程