- 博客(68)
- 收藏
- 关注

原创 记录:Istio安装 & 示例学习
文章目录1. 下载Istio安装文件2. 配置istioctl客户端3. 安装 Istio3.1 安装 demo 配置3.2 给命名空间添加标签3.3 验证4. 部署示例应用4.1 部署 Bookinfo 示例应用:4.2 查看4.3 校验4.4 BookingInfo关系图5. 对外开放应用程序5.1 把应用关联到 Istio 网关5.2 确保配置文件没有问题5.3 确定入站 IP 和端口5.3.1 判断我们的 Kubernetes 集群环境是否支持外部负载均衡5.3.2 设置入站 IP 地址和端口5.3
2021-02-21 14:48:49
1306

原创 契约测试 之 常用注解解释、DSL提供的API使用、不同实体类的consumer测试写法、Provider测试写法,提供完整代码
Contract testing1. 限制consumer & provider 最好都是由同一个Team维护无法对公共API使用Contract testing2. Pact与其他工具的对比Pact与其他工具的对比Spring Cloud ContractAccurestNockVCRWebmockPacto3. 支持的语言JSJestMochaKarma + JasmineKarma + MochaAngular 4 + MochaJava
2020-09-02 07:41:21
646

翻译 Gitlab CI/CD 官方文档学习篇 之 Pipeline Configuration Reference
什么是Gitlab CI/CDGitLab CI/CD is configured by a file called .gitlab-ci.yml placed at the repository’s root. This file creates a pipeline, which runs for changes to the code in the repository. Pipelines consist of one or more stages that run in order and ca
2020-05-24 22:05:25
4975
原创 【学习 & 记录】狄克斯特拉算法 - Java
最近学习《算法图解》一书时,看到狄克斯特拉算法之前没有使用过,在学习后用常用语言Java将算法实现出来以加深印象。
2022-09-24 23:47:56
610
原创 Redis学习(七)对象
文章目录1. 简介2. 对象的类型和编码2.1 对象类型 - type2.2 对象编码 - encoding3. 字符串对象3.1 raw 和 embstr 的区别是?3.2 字符串编码的转换3.3 不同字符串编码对应的命令实现参考1. 简介我们可知,Redis 的用到的主要的数据结构有:简单字符串(SDS)、链表、字典、压缩列表、整数集合等等。Redis 的对象都是由这些数据结构所实现。并且,Redis 为了可以对不同的对象在不同的使用场景下选择更加合适的数据结构实现,Redis 基于这些数据结构创建
2021-06-15 18:57:07
1395
1
原创 Redis学习(六)压缩列表(ziplist)
文章目录11. 什么是压缩列表(ziplist)2. 压缩列表的构成2.1 压缩列表的组成2.2 压缩列表节点的组成2.2.1 previous_entry_length2.2.2 encoding2.2.2.1 字节数组编码2.2.2.2 整数编码2.2.3 content2.2.4 例子3. 压缩列表和数组的区别3.1 内存3.2 数据类型4. 压缩列表存在的“问题”5. 压缩列表的 API6. 参考7. 其他相关文章11. 什么是压缩列表(ziplist)压缩列表(ziplist) 是哈希键的底层
2021-06-01 17:35:29
1284
翻译 Redis学习(五)整数集合
文章目录1. 整数集合是什么2. 整数集合的数据结构3. 升级3.1 升级的好处3.1.1 提升整数集合的灵活度3.1.2 节约内存4. 降级5. 整数集合 API6. 参考7. 其他相关文章1. 整数集合是什么整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现。例如:127.0.0.1:6379> SADD numbers 1 2 3 4 5 6 7 8 9 10(integer) 10
2021-06-01 14:22:57
465
原创 Redis学习(四)跳跃表(skiplist)
1. 什么是跳跃表(skiplist)跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。Redis 使用跳跃表作为有序集合键(ZSET)的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis 就会使用跳跃表来作为有序集合键的底层实现。Redis 只在两个地方用到了跳跃表(skiplist)实现有序集合键在集群节点中用作内部数据结构1.2 为什么需要跳跃表(skipli
2021-05-31 07:49:19
1095
原创 Redis学习(三)字典(hash)
1. 什么是字典(hash)Redis 的字典相当于 Java 语言里面的 HashMap,如图所示:它是无序字典,内部存储了很多键值对。实现结构上与 Java 的 HashMap也是一样的,都是**“数组 + 链表”**的二维结构。在数组位置发生 hash 冲突时,就会将冲突的元素使用链表串起来,如图所示:与 Java HashMap 不同的是,Redis 的字典的值只能是字符串,另外它们 rehash 的方式也不一样。因为 Java HashMap 在字典很大时,rehash 是一个耗时的操作
2021-05-25 18:35:33
708
原创 Redis学习(二)链表(list)
1. 什么是链表链表作为一种常用数据结构,链表内置在很多高级的编程语言里面,以为 Redis 使用的 C语言并没有内置这种数据结构,所以 Redis 构建了自己的链表实现。在Redis 中,链表的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis 就会使用链表作为列表建的底层实现。2. 链表的数据结构2.1 链表节点typedef struct listNode { // 前置节点 struct
2021-05-23 10:41:31
967
2
原创 Redis学习(一)简单动态字符串(SDS)
文章目录1. 什么是简单动态字符串(SDS)2. SDS 的数据结构2.1 示例2.2 SDS 以 \0 结尾的好处3. SDS 基本使用3.1 SET3.1.1 语法3.1.2 示例3.2 GET3.2.1 语法3.2.2 示例3.3 GETRANGE3.3.1 语法3.3.2 示例3.4 MSET3.4.1 语法3.4.2 示例3.5 MGET3.5.1 语法3.5.2 示例3.6 STRLEN3.6.1 语法3.6.2 示例3.7 SETNX3.7.1 语法3.7.2 示例3.8 SETEX3.8.1
2021-05-22 15:29:22
2878
原创 记录:用Nexus3搭建Maven私有仓库,用于install & deploy操作
文章目录1. Maven私有仓库安装1.1 本机配置1.2 官网下载地址1.3 解压1.4 启动1.5 登陆界面1.5.1 登陆1.5.2 更改端口号2. 搭建2.1 主要Type介绍2.2 创建物理存储库2.3 创建Proxy2.4 创建hosted2.4.1 release hosted2.4.2 snapshot hosted2.5 创建group2.6 创建用户2.7 小结3. 使用3.1 项目目录介绍3.2 拉取阿里云仓库的依赖3.2.1 修改settings.xml3.2.2 查看当前生效的se
2021-04-30 09:19:02
1037
原创 记录:用Java语言实现双向链表(增删查)
节点对象public class Node<T> { public T value; public Node pre = null; public Node next = null; public Node(T value, Node pre, Node next) { this.value = value; this.pre = pre; this.next = next; }}双向链表publ
2021-04-26 22:08:52
113
原创 SpringBoot + Dubbo + zookeeper Demo
文章目录1.1 什么是 Duboo?1.2 Dubbo 架构1.3 什么是 RPC?1.4 环境搭建1.4.1 zookeeper搭建1.4.2 项目结构1.4.3 interfaces项目1.4.4 provider项目1.4.5 consumer项目1.4.6 测试1.5 小结1.6 参考1.1 什么是 Duboo?Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡
2021-03-04 07:58:23
434
1
原创 Windows10:双击Docker Desktop Installer.exe文件,没反应。解决办法
1. 现象Windows10在安装Docker Desktop时,双击Docker Desktop Installer.exe后,没有任何反应。2. 解决办法右键Docker Desktop Installer.exe,找到:Troubleshoot compatibility/兼容性疑难解答点击Try recommended settings/尝试推荐的设置点击Test the programDocker Desktop Install.exe正常运行了之后保存这个设置即可..
2021-03-03 10:08:37
8651
5
原创 基于umiJS,跑UT时报:‘“umi“‘ has no exported member named ‘history‘. Did you mean ‘History‘?
1.1 现象1.2 tsconfig.json确保 tsconfig.json 中有配置 @@ 的路径,比如 "@@/*": ["src/.umi/*"]。例子:{ "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "importHelpers": true, "jsx": "react-jsx", "esModuleI
2021-03-02 15:47:16
5831
1
原创 笔记:Istio & 组件 基础概念学习
文章目录1. Istio是什么?1.1 读音1.2 简介1.3 服务网格是什么?1.4 为什么使用Isito?1.5 Istio 是如何诞生的?1.6 为什么我想用 ISTIO?1.7 目前Istio支持哪些部署环境?1.8 架构1.8.1 组件1.8.1.1 Envoy1.8.1.2 Pilot1.8.1.3 Citadel1.8.1.4 Galley1.8.2 设计目标2. 核心特性2.1 流量管理2.1.1 Istio 流量管理介绍2.1.2 虚拟服务2.1.2.1 为什么使用虚拟服务?2.1.2.1
2021-02-26 13:24:51
4723
1
原创 记录:清理Docker Desktop磁盘空间的过程
文章目录1. Docker Desktop磁盘空间不足1.1 缘由1.2 Docker Desktop空间使用情况1.3 备份1.4 清理1.4.1 删掉Docker中没用的镜像1.4.2 查看Docker的磁盘使用情况1.4.3 docker system prune命令1.4.4 du -hs命令1.4.5 du -h --max-depth=1 /var/lib/docker/命令1.4.6 查看占有大量内存的container1.4.7 du -ah –max-depth=1命令1.4.8 清理Do
2021-02-05 11:44:08
6590
2
原创 启动SpringCloud - Gateway,抛Failed to instantiate DiscoveryLocatorProperties
版本信息SpringBoot-version: 2.3.1.RELEASESpringCLoud-version: Hoxton.SR1错误信息org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'discoveryLocatorProperties' defined in class path resource [org/springframework/cloud/gatew
2021-02-04 16:01:32
1193
原创 在Docker Desktop中安装Kubernetes
文章目录1. 查看所需K8S的版本2. 镜像代码地址3. 切换分支到所需版本branch4. 加载镜像4.1 执行报错:无法加载文件...,因为在此系统上严禁运行脚本5. 查看Docker镜像6. 开启 Kubernetes7. 验证 Kubernetes 集群状态8. 配置 Kubernetes 控制台8.1 部署 Kubernetes dashboard8.2 开启 API Server 访问代理8.3 访问K8S Dashboard8.4 配置控制台访问令牌8.5 如何配置一个拥有完整权限的token
2021-02-03 21:00:12
3196
原创 使用PicGo + Gitee仓库搭建图床,配置Typora实现本地图片自动上传至云仓库
1. 官网链接PicGo Github2. 下载PicGo进到PicGo下载地址,点击下载即可。参考手把手教你用Typora自动上传到picgo图床【教程与排坑】PicGo + Gitee(码云)快速实现markdown图床Typora 设置上传图片功能
2021-01-14 21:36:54
558
原创 [Gitlab CI/CD] fatal: could not read Username for ‘xxx‘: No such device or address
背景在Gitlab Runner中拉取代码报错。报错信息fatal: could not read Username for ‘xxx’: No such device or address造成原因我们项目用http的方式拉取代码,使用这种方式拉取代码的话需要用到账号密码。参考:git中SSH和HTTP连接有什么区别解决办法设置了一个变量,将remote的url修改一下。修改前:git remote add origin http://localhost/study/study_pro
2020-12-15 19:01:30
10493
2
原创 [Gitlab CI/CD] Error loading key “/dev/fd/63“: invalid format
背景在Gitlab Runner中添加ssh-private-key时报错。报错信息Error loading key “/dev/fd/63”: invalid format原因一复制ssh-private-key时,复制少了。又或者是编码有问题。解决办法参考:GITLAB CI Error loading key “/dev/fd/63”: invalid format ERROR: Job failed: exit code 1原因二在Gitlab Runner中,根本没有读取到我
2020-12-15 18:47:23
2466
原创 【docker desktop】 Gitlab 迁移
文章目录前提如何在Gitlab中安装Docker在Docker Desktop安装Gitlab会遇到的问题正题创建挂卷启动Gitlab Container随便在Gitlab上面做一些操作(创建Group、Project)进入到我们一开始创建的挂载目录中,打包目录删除Gitlab Container & docker volume解压之前打包的压缩包到docker volumes目录中参考前提如何在Gitlab中安装Docker从VirtualBox到Docker到Gitlab的安装在Dock
2020-12-09 17:37:57
238
原创 【Docker CLI】将MySQL容器打包成镜像 & 加载
文章目录Docker CLI1. 找到容器2. docker commit3. docker save4. 将原先MySQL容器挂载的目录复制一份5. 加载打包好的镜像6. 准备docker-compose,并将挂载路径指向之前备份的文件夹参考1. docker commit命令说明2. docker save命令说明3. docker load命令说明Docker官网Docker CLI1. 找到容器> docker ps2. docker commit> docker comm
2020-12-08 18:46:46
2236
原创 Gitlab Runner 执行CI/CD 抛:Job’s log exceeded limit of 4194304 bytes
错误信息Job’s log exceeded limit of 4194304 bytes原因Set maximum build log size in kilobytes, by default set to 4096 (4MB)Gitlab Runner中,默认设置日志大小为:4MB解决办法找到Gitlab Runner的config.toml找到对应的执行Runners修改Gitlab Runner的日志大小docker restart gitlab-runner
2020-12-08 18:10:20
5049
原创 Maven命令分开执行单元测试和集成测试
文章目录前提项目结构pom.xml添加源文件设置参数单元测试 & 集成测试的区分运行结果展示不执行任何测试只执行单元测试只执行集成测试全都执行项目代码前提项目中一般会包含两种测试:单元测试 + 集成测试。为了方便管理,我个人偏向于将这两种测试放在不同的文件夹下。项目结构pom.xml添加源文件<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-he
2020-11-13 16:13:19
1330
2
翻译 @Cacheable @CachePut @CacheEvict @Caching @CacheConfig
文章目录Spring Boot的缓存注解详细使用@Cacheable缓存key的默认生成策略通过注解自定义key通过实现接口定义缓存key同步缓存@CachePut@CacheEvict@Caching@CacheConfigSpring Boot的缓存注解详细使用@Cacheable可以使用@Cacheable来划分可缓存的方法,即将结果存储在缓存中的方法,以便在后续调用(具有相同参数)时返回缓存中的值无需实际调用该方法。缓存key的默认生成策略public class SimpleKeyGen
2020-11-11 17:26:02
242
原创 Gitlab Runner每次执行都会拉取docker镜像的问题
Gitlab & Gitlab Runner的搭建可以参考之前的文章:Gitlab相关文章Gitlab Runner在执行pipeline的时候,每一次都会拉取一次镜像,非常的浪费时间。如图:解决办法:找到搭建Gitlab Runner时创建的config.toml文件,加上:pull_policy = “if-not-present”,如图:再次执行执行CI & CD的结果,就不会每次都重新拉取新的镜像了...
2020-11-09 22:08:44
5255
3
原创 Gitlab Runner CI/CD中自动将代码同步到别的代码管理仓库
Gitlab & Gitlab Runner的搭建可以参考之前的文章:Gitlab相关文章1. 前期准备如图所示目标机器需要:Gitlab,作为我们的目标仓库Gitlab Runner机器除了原有的Gitlab & Gitlab Runner外,需要安装多一个Git,用于生成SSH密钥2. SSH密钥使用2.1 私钥在Gitlab Runner机器中,设置一个SSH私钥的变量。这里我设置的变量名为:SSH_PRIVATE_KEY,后续在.gitlab-ci.yml文件中会
2020-11-02 15:32:50
2624
原创 SpringBoot @Valid不起效,BindingResult读取不到Error信息
我这边不起效的问题是引错了依赖包一开始我引入的包是:<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version></dependency>后面改成了下面的依赖就可以了:<dependency>
2020-11-02 09:04:52
1026
原创 Keycloak【学习记录】
KeycloakKeycloak:是针对现代应用程序和服务的开源身份和访问管理解决方案。目标:简化安全性,使用很少甚至没有代码即可轻松保护应用程序和服务的安全。开箱即用地提供了开发人员通常必须为自己编写的安全功能,可以轻松地针对组织的个性化需求进行定制。提供的服务:可自定义的用户界面,用于登录,注册,管理和帐户管理和LDAP和Active Directory服务器做集成将身份验证委派给第三方身份提供商,例如Facebook和Google登录方面单点登录用户通过 Keycloak 进行身
2020-10-30 16:52:00
2097
2
原创 OceanBase试用版【学习记录】
1. 什么是OceanBaseOceanBase 数据库是阿里巴巴和蚂蚁集团不基于任何开源产品,完全自研的原生分布式关系数据库软件,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,具备卓越的水平扩展能力,全球首家通过 TPC-C 标准测试的分布式数据库,单集群规模超过 1500 节点。 产品具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性, 承担支付宝 100% 核心链路,在国内几十家银行、保险公司等金融客户的核心系统中稳定运行。2. OceanBase 安
2020-10-30 16:35:11
1016
原创 SpringCloud 之 Eureka注册服务后,IP地址不对的问题
问题解决的办法在注册服务的项目配置中加入:eureka: instance: hostname: ${spring.cloud.client.ipAddress}# springcloud2.x的话eureka: instance: hostname: ${spring.cloud.client.ip-address}
2020-10-14 14:04:59
3338
原创 Redis 之 SessionCallback & RedisCallback 使用
SessionCallback & RedisCallback 的作用是:让RedisTemplate进行回调,通过它们可以在同一条连接下执行多个Redis命令。BeforeredisTemplate.opsForValue().set("key0", "value0");redisTemplate.opsForHash().put("hash0", "field", "test");SessionCallbackredisTemplate.execute(new SessionCal
2020-10-14 07:56:10
10084
1
原创 Spring Boot学习 之 Bean的作用域
1. 作用域类型作用域类型使用范围作用域描述singleton所有Spring应用默认值,IoC容器 只存在单例prototype所有Spring应用每当从 IoC容器 中取出一个Bean,则创建一个新的BeansessionSpring Web应用HTTP会话applicationSpring Web应用Web工程生命周期requestSpring Web应用Web工程单次请求(request)globalSessionSprin
2020-09-28 07:27:06
465
原创 执行java -jar xxx.jar时,抛异常:no main manifest attribute
原因pom.xml 文件中,少了 spring-boot-maven-plugin 插件<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <
2020-09-10 09:36:22
191
原创 Current charset is UTF-8. If password has been set using other charset... 解决办法
因为用的是MySQL 8.0.21的版本,所以密码规则和之前版本的不太一样。所以,在用项目中连接MySQL的时候,就抛了:Current charset is UTF-8. If password has been set using other charset, consider using option ‘passwordCharacterEncoding’ 的异常。我是用下面的方式解决的:alter user 'username'@'%' identified with mysql_nativ
2020-08-28 10:53:36
19617
原创 Docker Desktop安装Gitlab遇到的问题 & 解决办法
问题一:Error executing action create on resource ‘storage_directory[/var/opt/gitlab/.ssh]’使用docker-compose.yml 启动container时,在volumes中,指定了本地的文件,如:web: image: 'gitlab/gitlab-ee:latest' restart: always hostname: 'localhost' environment: GITLAB_OMNI
2020-08-27 10:59:45
2608
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人