自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 Helm3 使用

helm3 的安装和使用

2022-06-23 14:51:28 1252

原创 Centos8.x 安装 k8s 集群

文章目录一、环境准备1.1 机器规划1.2 安装要求二、安装 docker2.1 安装 docker2.2 验证 docker2.3 配置 docker三、安装 kubernetes3.1 添加软件源3.2 安装 kubeadm、kubelet、kubectl3.3 初始化集群3.3.1 初始化 master3.3.2 配置 master3.3.3 配置 node3.4 部署 CNI 网络插件3.5 测试 kubernetes 集群四、安装 Rancher一、环境准备1.1 机器规划IP角

2021-08-17 20:37:57 629

原创 Centos8.x 安装 Jenkins

文章目录一、CentOS8 安装 Jenkins1.1 安装 Jenkins1.2 配置 Jenkins1.3 设置Java环境并启动1.4 验证设置一、CentOS8 安装 Jenkins1.1 安装 Jenkinssudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-st

2021-08-16 18:40:34 279

原创 Centos8.x 安装 GitLab

文章目录一、CentOS 8 安装 GitLab1.1 配置源1.2 安装 GitLab1.3 配置 GitLab1.4 启动验证一、CentOS 8 安装 GitLab1.1 配置源添加源文件 gitlab-ce.repo,如果文件不存在则创建文件并写入,文件存在则直接写入。sudo touch /etc/yum.repos.d/gitlab-ce.reposudo vim /etc/yum.repos.d/gitlab-ce.repo# 将文本内容添加到 gitlab-ce.repo[g

2021-08-16 17:13:17 309

原创 面试总结十:Netty 框架

文章目录一、IO1.1 IO 操作1.2 同步与异步1.3 阻塞和非阻塞二、Netty2.1 Netty 是什么2.2 Netty 的特点2.3 Netty 的优势2.4 Netty 高性能表现2.5 Netty 应用场景2.6 Netty 核心组件一、IO1.1 IO 操作IO 操作主要分为两个步骤,即发起 IO 请求和实际 IO 操作。1.2 同步与异步同步:指的是用户进程触发 IO 操作后,等待或者轮询的查看 IO 操作是否就绪。异步:指的是用户进程触发 IO 操作后,便开始做自己的事

2021-04-19 19:06:36 170

原创 面试总结十三:设计模式

文章目录1.1 代理模式1.2 模板方法模式1.3 适配器模式1.4 策略模式1.5 装饰器模式1.6 观察者模式1.1 代理模式代理模式是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的主要角色如下:抽象主题(Subject)类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。真实主题(Real Subject)类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。代理(Proxy)类:提供了与真实主题相同的接口,其内部含有对真实主题的引

2021-04-15 16:49:43 106

原创 面试总结十二:消息中间件

文章目录一、消息中间件概述1.1 项目中怎样使用MQ1.2 消息中间件的优缺点1.3 消息中间件的区别1.4 ActiveMQ1.5 RabbitMQ1.6 RocketMQ1.7 Kafka二、消息中间件问题2.1 消息的重复消费2.2 消费消息如何保证幂等性2.2.1 唯一约束2.2.2 前置条件2.2.3 检查更新2.3 消息的顺序消费2.4 消息的可靠性传输2.4.1 Producer发送消息阶段2.4.2 Broker处理消息阶段2.4.3 Consumer消费消息阶段2.5 死信队列的理解2.

2021-04-15 13:53:45 198

原创 面试总结十一:MySQL

文章目录一、MySQL 基础1.1 数据库三范式1.2 MySQL 组成1.3 MySQL 查询操作1.4 MySQL 查询缓存1.5 MySQL MVCC1.6 MySQL 更新操作二、MySQL 索引2.1 MySQL 索引2.2 MySQL 索引类型2.3 MySQL 索引的优缺点2.3.1 优点2.3.2 缺点2.4 MySQL 索引的数据结构三、MySQL 引擎一、MySQL 基础1.1 数据库三范式所有属性都不能在分解为更基本的数据单位,每一列属性都是不可再分的,确保每一列的原子性。

2021-04-14 18:50:14 196

原创 面试总结八:Spring Cloud

文章目录一、Spring Cloud1.1 什么是 Spring Cloud1.2 Spring Cloud 优缺点1.2.1 优点1.2.2 缺点1.3 雪崩效应1.4 服务熔断1.5 服务降级二、Spring Cloud 组件2.2 Spring Cloud 五大组件2.3 服务发现与注册2.4 客户端负载均衡2.4.1 Ribbon2.4.2 Ribbon 负载均衡机制2.4.3 Feign2.4.4 Feign 基本流程2.5 服务网关2.6 服务熔断和降级Hystrix 熔断和降级熔断机制一、

2021-04-14 18:10:25 144

原创 面试总结六:JVM 与 GC

文章目录一、JVM 基础1.1 Java 跨平台性1.2 JRE、JDK、JVM 及 JIT1.3 JVM 构成图1.4 堆 heap1.5 虚拟机栈 VM Stack1.6 本地方法栈 Native Method Stact1.7 程序计数器 Program Counter Register1.8 方法区 Method Area1.8.1 运行时常量池1.9 直接内存二、堆的基本组成2.1 新生代 Young Generation2.2 老年代2.3 永久代 Perm Generation2.4 永久代和

2021-04-13 10:20:36 283

原创 面试总结四:Java 锁事(二)

文章目录一、Synchronized1.1 线程安全的解决方案维度1.2 对象 JVM 存储1.2.1 对象头1.3 synchronized1.4 synchronized 底层原理1.4.1 同步方法1.4.2 同步代码块1.5 synchronized 重量级原因1.6 synchronized 锁优化二、AQS2.1 AQS 概述2.2 AQS 加锁分析2.2.1 lock2.2.2 acquire2.2.3 acquireQueued2.3 AQS 解锁分析2.3.1 unlock三、Reentr

2021-04-13 09:15:04 132

原创 面试总结七:Spring

文章目录一、Spring 基础概念1.1 Spring 理解1.2 Spring 优点1.3 Spring 核心1.4 Spring 框架用到的设计模式二、Spring 自动装配2.1 控制反转2.2 依赖注入2.3 IoC 和 DI 的关系2.4 Bean 的作用域2.5 Bean 的生命周期2.6 Bean 的线程安全问题2.7 Spring 循环依赖2.7.1 举例说明2.7.2 添加到三级缓存2.7.3 添加到二级缓存2.7.4 添加到一级缓存2.8 三级缓存三、Spring AOP3.1 AOP

2021-04-13 09:07:51 173

原创 面试总结五:多线程与高并发

文章目录一、线程概述1.1 线程与进程1.2 线程创建1.3 线程状态1.4 线程启动1.5 线程停止1.6 线程控制1.7 wait 和 sleep 的区别二、多线程2.1 多线程的优缺点2.2 多线程的资源消耗2.3 多线程的调度算法2.4 多线程的调度策略2.5 多线程的上下文切换三、线程池3.1 线程池3.2 线程池好处3.3 线程池组成3.4 线程池工作原理3.5 线程池选择策略3.6 线程池 Executors3.7 线程池 ThreadPoolExecutor3.8 线程池的任务队列3.9 线

2021-03-29 18:26:52 291

原创 面试总结三:Java 锁事(一)

文章目录一、Java 中的锁1.1 Java 主流锁1.2 悲观锁1.3 Java 主流锁1.4 Java 主流锁1.5 Java 主流锁1.6 Java 主流锁1.7 Java 主流锁二、xxx一、Java 中的锁1.1 Java 主流锁1.2 悲观锁对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定会被修改,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中synchronized关键字和Lock的实现类都是悲观锁,悲观锁适合写多读少的场景,先加锁可以保证写操作时

2021-03-17 18:38:28 128

原创 协商密钥

协商密钥maven 依赖<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.64</version></dependency>代码public class Encryption { public static final String CH

2021-03-01 18:32:46 190

原创 Redis(三)

文章目录一、Redis 数据结构1.1 String1.2 String1.3 String1.4 String一、Redis 数据结构Redis 支持基础类型:String、List、Hash、Set、Sorted SetRedis 支持扩展类型:Bitmap、HyperLogLog、GeoPub/Sub、Redis Module、BloomFilter、Redis-ML等1.1 String1.2 String1.3 String1.4 String...

2021-01-20 18:22:50 85

原创 面试总结十:Redis(二)

文章目录一、Redis 主从同步1.1 主从同步1.2 全量复制1.2.1 第一阶段:建立连接1.2.2 第二阶段:同步RDB文件1.2.3 第三阶段:同步增量数据1.3 基于长连接的命令传播1.4 增量复制1.4.1 复制机制1.4.2 repl_backlog_buffer二、哨兵机制2.1 哨兵机制2.2 监控2.2.1 哨兵监控2.2.2 主观下线和客观下线2.3 哨兵选主2.3.1 哨兵选主2.3.2 筛选过程2.3.3 打分过程2.4 哨兵通知一、Redis 主从同步1.1 主从同步Re

2021-01-19 20:51:25 120

原创 面试总结九:Redis

文章目录一、NoSQL1.1 NoSQL数据库类型1.2 键值对存储(key-value)1.3 基于列的数据库(column-oriented)1.4 文档存储(document store)1.5 图形数据库(graph database)二、Redis 概述2.1 Redis 简介2.2 Redis 优点2.3 Redis 与 Memcached 的区别三、Redis 线程模型3.1 Redis 是单线程3.2 Redis 为什么使用单线程3.3 Redis 单线程为什么那么快3.4 Redis 多路

2021-01-18 16:02:37 155

原创 面试总结二:Java 数据结构

文章目录一、数组结构1.1 数组定义1.2 数组操作1.3 Arrays 的方法1.4 数组和集合的区别二、Collection 框架2.1 List2.1.1 ArrayList2.1.2 LinkedList2.1.3 Vector2.1.4 Stack2.2 Set2.3 Queue2.4 List 和数组的区别2.5 List 和 Set 的区别2.6 Vector、ArrayList、LinkedList 的区别一、数组结构1.1 数组定义数组在内存中占用连续的存储空间1.2 数组操作

2021-01-15 19:05:23 213

原创 面试总结一:Java 基础

文章目录一、基础知识1.1 基本数据类型1.2 基本数据类型存储1.3 基本数据类型包装类1.4 访问修饰符1.5 变量初始化1.5.1 成员变量1.5.2 局部变量1.6 值传递与引用传递二、关键字2.1 static2.2 final2.3 serialization2.4 transient2.5 volatile三、Object 对象3.1 Object 类的常用方法3.2 重写 equals() 方法的规则3.3 hashCode() 与 equals()3.4 main() 方法为什么必须是静态

2021-01-15 16:24:12 163

原创 ubuntu 安装 confluence

文章目录前言一、安装准备二、安装步骤1.安装 confluence1.1 下载文件1.2 赋予权限1.3 执行安装1.4 安装过程1.5 验证安装2.破解 confluence2.1 下载破解文件2.2 停止服务2.3 破解文件2.4 启动服务2.5 安装插件2.5 软件授权2.6 获取授权码2.7 设置数据库2.8 设置用户2.9 创建用户前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内

2021-01-14 18:07:12 2024 2

原创 八、剑指 Offer(35~39)

文章目录一、35 复杂链表的复制1.算法描述2.算法题解二、36 二叉搜索树与双向链表1.算法描述2.算法题解三、37 序列化二叉树1.算法描述2.算法题解四、38 字符串的排列1.算法描述2.算法题解一、35 复杂链表的复制1.算法描述请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。2.算法题解class Solution { public No

2021-01-13 18:47:46 73

原创 七、剑指 Offer(30~34)

文章目录一、30 包含min函数的栈1.算法描述2.算法题解二、31 栈的压入、弹出序列1.算法描述2.算法题解三、32 从上到下打印二叉树 I1.算法描述2.算法题解四、32 从上到下打印二叉树 II1.算法描述2.算法题解五、32 从上到下打印二叉树 III1.算法描述2.算法题解一、30 包含min函数的栈1.算法描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。2.算法题解普通栈的 p

2021-01-07 19:01:51 70

原创 六、剑指 Offer(25~29)

文章目录一、25 合并两个排序的链表1.算法描述2.算法题解一、26 树的子结构1.算法描述2.算法题解一、25 合并两个排序的链表1.算法描述2.算法题解一、25 合并两个排序的链表1.算法描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。2.算法题解根据链表 l1、l2 是递增的,因此可以使用双指针遍历链表,根据 val1、val2 的大小关系确定节点添加顺序,两指针交替前进,直至遍历完成。由于初始状态合并链表中无节点,因此需要初始化一个辅助节点 root 作为

2021-01-05 08:21:26 179 2

原创 五、剑指 Offer(20~24)

文章目录一、20 表示数值的字符串1.算法描述2.算法题解二、21 调整数组顺序使奇数位于偶数前面1.算法描述2.算法题解三、22 链表中倒数第k个节点1.算法描述2.算法题解四、24 反转链表1.算法描述2.算法题解一、20 表示数值的字符串1.算法描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"

2020-12-25 18:46:35 73

原创 四、剑指 Offer(15~19)

文章目录一、15 二进制中 1 的个数1.算法描述2.算法题解二、16 值的整数次方1.算法描述2.算法题解三、17 打印从1到最大的n位数1.算法描述2.算法题解四、18 删除链表的节点1.算法描述2.算法题解五、19 正则表达式匹配1.算法描述2.算法题解一、15 二进制中 1 的个数1.算法描述请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。2.算法题解方法一:

2020-12-25 17:09:53 66

原创 三、剑指 Offer(10~14)

文章目录一、14 剪绳子 I1.算法描述2.算法题解二、14 剪绳子 II1.算法描述2.算法题解三、15 二进制中 1 的个数1.算法描述2.算法题解四、16 值的整数次方1.算法描述2.算法题解五、17 打印从1到最大的n位数1.算法描述2.算法题解六、18 删除链表的节点1.算法描述2.算法题解七、19 正则表达式匹配1.算法描述2.算法题解八、20 表示数值的字符串1.算法描述2.算法题解一、14 剪绳子 I1.算法描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整

2020-12-25 16:36:26 78

原创 剑指 Offer(3~7)

文章目录前言一、03 数组中重复的数字1.算法描述2.算法题解二、使用步骤1.算法描述2.算法题解前言一、03 数组中重复的数字1.算法描述在一个长度为 n 的数组 nums 里的所有数字都在 0 ~ n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。2.算法题解看到题首先想到的是遍历数组,将数字添加到 set 中,如果添加失败则数字重复。另一种解法是数组重组:如果在没有重复数字的情况下,正常排序后,

2020-12-16 19:13:56 102

原创 Cassandra 系列文章

Cassandra 系列文章一、Cassandra 集群安装二、Cassandra 群集操作三、Cassandra 压实策略四、Cassandra 数据修复五、Cassandra 通讯功能六、Cassandra 监测功能七、Cassandra 优化功能一、Cassandra 集群安装Cassandra 集群安装二、Cassandra 群集操作Cassandra 群集操作三、Cassandra 压实策略Cassandra 压实策略四、Cassandra 数据修复Cassandra 数据修复五

2020-11-19 16:57:25 117

原创 Java 实现 ECC 非对称加密算法加解密和签名验签

Java 实现 ECC 非对称加密算法加解密和签名验签前言一、ECC 椭圆曲线算法简介二、ECC 加解密代码实例1.生成 ECC 密钥2.ECC 加解密3.测试代码三、ECC 签名验签代码实例1. ECC 签名验签2. 测试代码前言文章字数比较多,可直接查看代码:源码地址,文中描述有误的地方欢迎各位大神指导。一、ECC 椭圆曲线算法简介ECC是椭圆曲线算法,其加密算法叫ECIES,签名算法叫ECDSA。JDK 并不支持 ECC 算法,可以引入 BouncyCastle 库使用。ECC算法相当耗费资源

2020-11-19 16:38:54 4993 3

原创 Java 实现 RSA 非对称加密算法加解密和签名验签

Java 实现 RSA 非对称加密算法前言一、非对称加密算法简介二、RSA 加解密代码实例1.生成 RSA 密钥2.RSA 加解密3.测试代码三、RSA 签名验签代码实例前言一、非对称加密算法简介非对称加密算法又称现代加密算法,是计算机通信安全的基石,保证了加密数据不会被破解。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密(privatekey),因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。公钥和私钥是一对,如果用公钥对数据进行加密,只

2020-11-19 15:37:11 2407 4

原创 Java 实现 AES 对称加密算法的加解密

Java 实现 AES 对称加密算法的加解密前言一、AES 算法简介二、AES 加解密代码实例1.生成 AES 密钥2.AES 加解密3.AES + nonce 加解密总结前言一、AES 算法简介二、AES 加解密代码实例1.生成 AES 密钥AES 密钥长度默认只支持128、192、256 这三种长度,不合法的密钥长度程序会抛出异常。生成 AES 密钥时会使用到随机数生成器,可以指定不同的随机数算法,也可以在创建随机数生成器时指定 seed。初始化算法生成器时,如果不指定随机数生成器默认使

2020-11-18 19:26:50 857

原创 Java 常用的转换工具方法

文章目录前言一、转换类型1.字符串转二进制2.十六进制字符串转byte数组3.byte数组转十六进制字符串二、生成类型1.生成随机长度字符串2.生成 96 bit nonce前言总结一些平常使用的 Java 小方法。一、转换类型1.字符串转二进制代码如下: public static void main(String[] args) { String str = "你好"; List<String> list = new ArrayList&

2020-11-13 19:43:18 384

原创 OpenSSL从https网站上导出SSL的CA证书OpenSSL从https网站上导出SSL的CA证书

文章目录前言一、使用步骤1.安装 OpenSSL2.运行OpenSSL3.保存证书数据前言在访问https的时候,对于有的程序需要提供访问网站的CA证书,这个时候客户端才能访问系统网站。一般来说有两种比较常用的方式,第一种方式是通过浏览器访问这个网站,然后在网站的地址栏的右边有一个锁,可以通过点击这个锁来查看和导入证书,这种方式只适合那种网站可以在浏览器里面打开的应用,第二种方式是直接用OpenSSL的方式。本文以访问 https://www.baidu.com 为例。一、使用步骤1.安装 Op

2020-11-05 11:15:01 896 1

原创 Vert.x 初体验

Vert.x 初体验前言一、Vert.x 是什么?1.Vert.x 简介2.Vert.x 优势3.Web 服务选型二、Vert.X Hello World1.引入依赖2.代码实现三、Vert.X Web1.引入依赖2.代码实现前言Vert.x 核心思想:异步处理一、Vert.x 是什么?1.Vert.x 简介Vert.x 采用类似 Node.js 的 eventloop callback 机制,优势是 Eventloop 是单线程场景下几乎是最快的并发解决方案,但也需要周边生态的支持,比如

2020-10-16 16:05:25 543

原创 Java 设计模式

Java 设计模式前言一、单例模式二、建造者模式 TODO三、原型模式四、适配器模式五、组合模式 TODO六、装饰器模式七、代理模式7.1 静态代理7.2 动态代理7.3 CGLIIB代理八、责任链模式九、命令模式十、观察者模式十一、策略模式十二、模板方法模式前言一、单例模式模式关键点构造方法私有化。volatile 修饰实例。synchronized 修饰获取方法。实现代码public class SingletonTest { public static void main

2020-10-15 20:08:50 100

原创 Java 常见错误整理

常见错误整理SpringCloudFeignClientSpringCloudFeignClientIncompatible fallback instance. Fallback/fallbackFactory of type class xxx.xxx.xxx.XxxServiceFallbackFactory is not assignable to interface xxx.xxx.xxx.XxxService for feign client security-service将 Feig

2020-08-07 16:25:56 535

原创 JWT Token 使用 RS256 和 ES256 签名

JWT Token 使用 RSA256 和 ES256 签名使用 RS256 签名创建 RSA256 密钥创建和验证 JWT Token使用 ES256 加密创建 ES256 密钥创建和验证 JWT Token使用 RS256 签名…创建 RSA256 密钥安装 openssl 服务,执行如下指令生成密钥对。# 创建私钥openssl genrsa -out rsa_private.pem 2048# 创建公钥openssl rsa -in rsa_private.pem -outform

2020-06-17 14:42:58 12351 13

原创 第七章 查找算法

7.1 顺序查找算法思想顺序查找,就是逐个遍历数组中的每一个元素,逐个比较它们和关键字是否相等,当查找到相等元素时, 遍历停止。当数组的规模逐渐扩大时候, 因为比较次数太多,顺序查找耗时太长。算法实现public class SqeSearchTest { public static void main(String[] args) { int[] array ...

2019-08-27 14:56:35 120

原创 第六章 排序算法

6.1 排序算法介绍排序也称排序算法(Sort Algorithm),是将一组数据,依指定的顺序进行排列的过程。术语说明:稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂......

2019-08-02 15:57:36 421

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除