自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

商亮的技术手册

To Be A Better Programmer

  • 博客(47)
  • 资源 (6)
  • 收藏
  • 关注

原创 你所不知道的 GitHub 快捷键及实用技巧

目录目录一、 搜索1. 快捷键 S 或 / , 聚焦搜索栏2. 高级搜索2.1 按 stars 查询2.2 按 fork 数查询2.3 按 topic 数查询2.4 按时间查询2.5 按作者查询2.5 排除特定内容二、网页快捷键1. GitHub 全局快捷键1.1 快捷键 S 或 / , 聚焦搜索栏1.2 快捷键 G + N,跳转到消息页1.3 快捷键 G + D,调转到首页1.4 快捷键 ?,打开快捷键帮助弹窗2. 项目选项卡快捷键1.1 Code:G + C 1.2 Issues:G + I1.3 Pu

2022-07-10 08:00:00 3915 1

原创 「云原生 | Nginx」upstream 模块负载均衡算法详解

Nginx 的负载均衡 ngx_http_upsteam_module 模块,默认编译安装。upstream 模块只能定义在 http 模块下。本文将介绍轮询、权重轮询、IP_HASH、动态参数HASH,最小连接数、随机算法 6 种负载均衡算法。本文使用的 Nginx 版本为 nginx/1.22.0 ,所有负载均衡算法默认情况下均可使用,不需要单独引入依赖包,其他版本有有引入依赖的情况,请根据提示自行引入。 轮询算法为 Nginx 默认的负载均衡算法。其按照客...............

2022-06-26 22:03:49 2943 3

原创 「数据结构 | 链表」单链表、双向链表节点操作演示动画

目录1. 什么是链表2. 链表数据结构 2.1 单链表数据接口(Java)2.2 双链表数据结构(Java)3. 单链表操作动画3.1 新增节点3.2 删除节点4. 双向链表操作动画4.1 新增节点4.2 删除节点链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 2.2 双向链表数据结构(Java)单链表在已知单个节点的情况下,只能在该节点的后续链上增加新的节点,

2022-06-20 23:56:30 983

原创 「云原生 | Nginx」手把手教你通过源码构建 Nginx

NGINX 是一款用于 Web 服务、反向代理、缓存、负载平衡、媒体流等的开源软件。它最初是为实现最高性能和稳定性而设计的 Web 服务器。下载 nginx 源码包,并解压到自己本机。博主本次操作目录如下:2. 构建 Nginx通过 命令来进行构建,构建后会生成一个 文件 命令支持以下参数:(参数前面为两个连续的 ,文章内显示的效果为一个 )2.2.1 报错一 方式一:构建命令增加 ,不构建 rewrite 模块。此种方式会导致我们不能使用 rewrite 模块的相关功能。方式二:

2022-06-19 23:46:55 526

原创 「云原生 | Docker」手把手教你搭建镜像仓库并上传/下载镜像

手把手教你搭建镜像仓库 一、选择镜像仓库二、使用 Docker 官方仓库1. 注册账号并登录2. 创建私有仓库3. 设置私有秘钥3. 登录 Docker 仓库4. 上传镜像到 Docker 仓库4.1 选择使用的镜像4.2 使用 `docker tag` 命令打 tag4.3 将镜像上传到远程仓库4.4 查看远程仓库4.5 删除本地镜像4.6 下载远程仓库镜像到本地5. 退出 Docker 仓库三、使用阿里云镜像仓库1. 注册账号并登录2. 登录 Docker 仓库......

2022-06-14 08:00:00 3250

原创 「云原生 | Docker」构建第一个 SpringBoot 工程镜像

目录一、准备工作二、构建镜像1. 操作目录说明2. 编写 Dockerfile 文件 3. 构建镜像4. 查看镜像三、部署镜像1. 保存镜像2. 导入镜像3. 启动容器四、完结1. 安装 Docker , 未安装的请先「安装 Docker」2. 准备一个可正常运行的 SpringBoot 工程 jar 包DockerImage-0.0.1-SNAPSHOT.jar后续命令均在 DockerImage 目录内执行 3. 构建镜像 dockerimage 为镜像名称,1.0 为镜像 TAG d

2022-06-12 19:25:19 352

原创 「云原生 | Docker」手把手教你在 Linux 安装使用 Docker

安装 Docker1. 通过仓库进行安装(在线方式)1.1 设置存储库1.2 查看可安装版本1.3 安装 Docker1.4 启动 Docker1.5 验证是否成功2. 通过 RMP 包安装(离线方式)2.1 下载 rpm 包2.2 安装 Docker2.3 启动 Docker2.4 验证是否成功三、Docker 常用命令1. 查看版本 docker version | docker --version2. 管理镜像2.1 搜索镜像2.2 拉取镜像2.3 管理镜像常用操作命令3. 管理容器常........

2022-06-12 09:11:03 1787

原创 Mac 终端自动补全大小写敏感,不区分大小写的设置(zsh/bash)

从 macOS Catalina 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。

2022-01-15 15:29:41 2705

原创 try-with-resources 代替 try - catch - finally

1、常规 try - catch - finally 写法public String resdFile1(String filePath){ BufferedReader bufferedReader = null; try { bufferedReader = new BufferedReader(new FileReader(filePath)); return bufferedReader.readLine(); } catch (IOE

2021-12-20 22:13:00 455

原创 Redis 慢查询日志命令 「SLOWLOG」

SLOWLOG 是用来读取和重置 Redis 慢查询日志的命令,Redis 2.2.12 版本开始支持Redis 慢查询日志概述客户端从发送命令到获取返回结果经过了以下几个步骤:1. 客户端发送命令2. 该命令进入 Redis 队列排队等待执行3. Redis 开始执行命令 - Redis 命令执行完成4. 命令执行结果返回给客户端Redis 慢查询日志统计的时间,只包含第三步的 Redis 命令从开始执行到执行完成的时间。(Redis 6.0 版本前只支持...

2021-08-21 13:30:22 6783

原创 Java LinkedList 用作 栈、队列、双端队列 的各类操作

目录LinkedList 数据存储的基础结构单 Node 信息图示LinkedList 数据存储关系图示LinkedList 作为栈使用push(E):入栈操作,在头部添加元素pop():出栈操作,取出头部元素并将其从栈中移除peek():查看头部元素,不影响栈的结构各方法操作效果图示LinkedList 作为队列使用add(E):添加元素到队列尾部peek():查看队列头部元素,不改变队列结构poll():返回头部元素,并从队列删除该元素LinkedL.

2021-06-15 12:09:05 1971 5

原创 IPv4 地址分类及地址段划分规则

IP地址分类及地址段划分规则前言IP 地址分类A类地址B 类地址C 类地址上述 IP 分类的局限性VLSM vs CIDR划分方式示例示例1:子网掩码示例2:合并网段示例3:划分子网总结前言IP 地址包括两部分:网络 ID(网络地址) + 主机 ID(主机地址)网络 ID 用于不同网络寻址; 主机 ID 用于局域网内通讯IP 地址分类根据 IP 地址(二进制下)前缀数字的不同情况,划分为 A,B,C,D,E 5个类别,如下图(本文我们主要介绍 A,B,C 三类)A类地址第 1 字节为网络

2021-05-11 17:57:03 14116 2

原创 [数据结构与算法] 快速排序-三向切分方式 JAVA 代码实现

目录1. 快速排序2.三向切分快速排序 - Java 实现3. 标准快速与三向切分快排效率对比4. 总结1. 快速排序标准快速排序动画及 JAVA 代码实现[点我查看]2.三向切分快速排序 - Java 实现 /** * 快速排序三向切分 * * @param nums 待排序数组 */ public void quickSortThreeWay(int[] nums) { sortThreeWa...

2021-04-14 11:45:53 241

转载 JAVA 泛型中的通配符 T,E,K,V,?

前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本

2021-01-11 14:19:07 173

原创 Python 入门 :数据结构 - 列表

定义列表numbers = [1, 3, 5, 4, 2]words = ['hello', 'world']multiples = [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 2, 'b': 3}]class Member: def __init__(self, member_id): self.member_id = member_idmembers = [ Member(1)

2020-07-21 16:03:19 139

原创 Redis 6.0 使用 HELLO 命令切换 RESP v2 和 RESP3 协议

目录1. 什么是 RESP 协议2. RESP 3 实现的类型同 RESP v2 的RESP 33. HELLO 命令切换 RESP 协议1. 什么是 RESP 协议RESP(Redis Serialization Protocol)是 Redis 服务端与客户端之间通信的协议。RESP3 是 RESP version 2 的更新版本。RESP v2 大致从 Redis 2.0 开始支持(其实 1.2 就支持了,只不过 Redis 2.0 是第一个仅支持此协议的版本)。..

2020-06-04 18:16:35 2043

原创 Redis 6.0 权限控制命令 ACLs 详解

目录1. 前言2. 什么是 ACL2. 什么时候使用 ACLs3.ACL 规则启动或禁用用户启用或禁用命令允许或禁止访问某些 KEY为用户配置有效密码4. ACL 常用命令ACL LISTACL SETUSERACL GETUSER ACL DELUSERACL USERSACL WHOAMIACL CATACL SAVEACL LOADACL GENPASSACL LOGACL HELP1. 前言在使用 Redi.

2020-05-31 19:09:09 9260 4

原创 Linux (Centos 7)编译安装 Redis 6.0

目录1. 下载安装 Redis 6.02. 启动并测试3. 安装错误及解决办法Q;cc: command not foundQ:server.c:xxxx:xx: error:******has no member named ******1. 下载安装 Redis 6.0点击进入 Redis 官网下载,当前最新的稳定版本为 Redis 6.0.4// 下载 Rediswget http://download.redis.io/releases/redis-6....

2020-05-30 21:50:19 2580

原创 等概率随机取数算法 - 洗牌算法 | 链表随机节点 | 随机数索引 - Java 实现

等概率随机取数算法1. 洗牌算法2. 链表随机节点该题目来自力扣 382 题:链表随机节点 (https://leetcode-cn.com/problems/linked-list-random-node/)给定一个单链表,随机选择链表的一个节点,并返回相应的节点值。保证每个节点被选的概率一样。进阶:如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现?示例:// 初始化一个单链表 [1,...

2020-05-29 19:13:42 962

原创 [数据结构与算法] 归并排序动画及 JAVA 代码实现

1. 快速排序动画配合如下所示的每阶段排序后结果,更便于理解:排序前 = [14, 2, 25, 17, 7, 38, 34, 5, 42, 15, 42]nums = [2, 14, 25, 17, 7, 38, 34, 5, 42, 15, 42]nums = [2, 14, 25, 17, 7, 38, 34, 5, 42, 15, 42]nums = [2, 14, 25, 7, 17, 38, 34, 5, 42, 15, 42]nums = [2, 14, 25, 7,.

2020-05-24 23:00:23 424

原创 [数据结构与算法] 快速排序动画及 JAVA 代码实现

1. 快速排序动画几种排序使用的同一组数据,发现这个快排动画效果不是太好尽量看代码吧,根据代码逻辑 debug 下帮助立理解2.快速排序 Java 实现/** * 快速排序 * * @param numbers 待排序数组 */public void insertionSort(int[] numbers) { int length = num...

2020-04-28 19:27:54 608

原创 [数据结构与算法] 插入排序动画及 JAVA 代码实现

1. 插入排序动画2. 插入排序 Java 实现public void selectionSort(int[] numbers) { int length = numbers.length; if (length <= 1) { return; } for (int i = 0; i < length - 1; ++...

2020-04-28 08:49:04 248 2

原创 [数据结构与算法] 选择排序动画及 JAVA 代码实现

1. 选择排序动画2. 选择排序 Java 实现重复(元素个数-1)次 把第一个没有排序过的元素设置为最小值 遍历每个没有排序过的元素 如果元素 < 现在的最小值 将此元素设置成为新的最小值 将最小值和第一个没有排序过的位置交换 ...

2020-04-26 21:35:05 262

原创 [数据结构与算法] 冒泡排序动画及 Java 代码实现

目录1. 冒泡排序动画2. 冒泡排序 Java 实现3. 总结时间复杂度空间复杂度排序稳定性1. 冒泡排序动画2. 冒泡排序 Java 实现public void bubbleSort(int[] numbers) { int size = numbers.length; if (size <= 1) { r...

2020-04-26 15:13:18 317

原创 [数据结构与算法] 算法复杂度分析 - 大O表示法 - 复杂度曲线

目录1. 大O表示法介绍2. 常见的大O复杂度2.1 O(1)常数时间复杂度2.2 O(logn) 对数时间复杂度2.3O(n)线性时间复杂度2.4O(nlogn) 线性对数时间负载度2.5O(c^n) 指数时间复杂度(c 为常数)2.6O(n^2) 平方时间复杂度2.7O(n!) 阶乘时间复杂度3. 常见时间复杂度曲线​1. 大O表示...

2020-04-25 21:37:16 2194 2

原创 Java 高级特性 - 反射机制 (Reflection)

1. 什么是 Java 的反射机制?Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。2. Java 反射机制用途在日常的项目开发过程中,有时会...

2020-04-25 00:48:42 842

原创 「SpringBoot 相关注解」@Documented 元注解 - 使用 IDEA 生成 JavaDoc

@Documented 介绍Documented.java 类位于 JDK 的 rt.jar 内,属于一个 JDK 注解它是用来修饰注解的,是注解的注解,称之为元注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Documented ...

2020-04-23 21:37:16 1045

原创 MySQL 8 创建用户并授权

MySQL 创建用户并授权获取初始密码登陆 MySQL修改 MySQL root 用户密码新建数据库创建数据表用户管理创建用户锁定|解锁用户权限管理MySQL用户授权撤销用户授权创建角色注意事项总结MySQL 安装教程请查看 Linux (CentOS 7) 系统安装 MySQL8本章我们进行 MySQL 用户及权限管理操作。获取初始密码安装 MySQL 安装完成为取得初始密码,请通过...

2020-04-23 18:24:58 1356

原创 分布式理论之 CAP 定理(布鲁尔定理)

1.什么是 CAP 定理CAP 定理(CAP theorem)又被称作「布鲁尔定理」,是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在 2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。该定...

2020-04-22 21:38:28 1203

转载 中文文案排版指北

中文文案排版指北统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。空格「有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。与大家共勉之。」——vinta/paranoid-auto-spacing中英文之间需要增...

2020-04-22 10:52:55 330 1

原创 「SpringBoot 相关注解」@Target 元注解

@Target 介绍Target.java 类位于 JDK 的 rt.jar 内,属于一个 JDK 注解它是用来修饰注解的,是注解的注解,称之为元注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Target { Elemen...

2020-04-22 01:32:26 611

原创 「SpringBoot 相关注解」@Retention 元注解

@Retention 介绍Retention.java 类位于 JDK 的 rt.jar 内,属于一个 JDK 注解。它是用来修饰注解的,是注解的注解,称之为元注解。@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Retention {...

2020-04-20 23:04:20 1036

原创 [Java 解题系列] LeetCode: 746. 使用最小花费爬楼梯

题目来源:力扣(LeetCode)数组的每个索引做为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](索引从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]...

2020-04-20 21:25:48 201

原创 [Java 解题系列] LeetCode: 面试题 08.01. 三步问题

题目来源:力扣(LeetCode)三步问题。有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。示例 1:输入:n = 3输出:4说明: 有四种走法示例 2:输入:n = 5输出:13提示:n 范围在 [1, 1000000] 之间分析...

2020-04-20 18:07:32 278

原创 Java 抽象同步队列 AbstractQueuedSynchronizer

1. AbstractQueuedSynchronizer 介绍抽象同步队列 AbstractQueuedSynchronizer ,简称 AQS,它是实现阻塞锁和其他基于先入先出(FIFO)等待队列的同步组件。并发包中锁的底层实现(如 ReentrantLock)的底层实现就是使用 AQS 实现的。2. AQS 内部结构i. 类 ConditionObject 主...

2020-04-18 18:56:34 263

原创 Java 中的锁之 ReentrantLock

ReentrantLock 是可重入的独享锁。根据参数可决定其内部是一个公平锁还是非公平锁。1.ReentrantLock 源码解析public ReentrantLock() { sync = new NonfairSync();}public ReentrantLock(boolean fair) { sync = fair ? new FairSync(...

2020-04-16 18:40:36 241

原创 Java 常见的锁分类及其特点

锁分类乐观锁 | 悲观锁公平锁 | 非公平锁独享锁 | 共享锁互斥锁 | 读写锁偏向锁 | 轻量级锁 | 重量级锁自旋锁 | 可重入锁 | 分段锁乐观锁 | 悲观锁悲观锁和乐观锁是按按并发情况下资源的分配策略区分乐观锁: 认为对同一数据的并发操作,是不会发生修改的。在进行读取操作是不会上锁,在进行写入操作的时候回判断当前数据是否被修改过。乐观锁的实现方案:版本号机制和...

2020-04-15 17:53:46 181

原创 右键菜单添加 Open with VSCode | VSCode 添加到右键菜单

复制如下内容,保存为 code.reg 文件双击执行 code.reg ,弹出框全部选 「是」Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode]@="Open with Code""Icon"="D:\\Software\\Microsoft VS Code\\Code.exe"[HKEY_C...

2019-12-12 14:51:56 656 2

原创 访问所有点的最小时间 | 统计参与通信的服务器 | 搜索推荐系统 | 停在原地的方案数 | LeetCode 周赛第 164 场 JAVA 实现「164」

1266. 访问所有点的最小时间平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。示例 1输入:points =...

2019-11-27 10:54:22 188

原创 二维网格迁移 | 在受污染的二叉树中查找元素 | 可被三整除的最大和 | 推箱子 | LeetCode 周赛第 163 场 JAVA 实现「163」

1260. 二维网格迁移给你一个 n 行 m 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动:位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。位于 grid[i][m - 1] 的元素将会移动到 grid[i + 1][0]。位于 grid[n - 1][m - 1] 的元素将会移动到 grid[0]...

2019-11-20 11:08:56 218

Anaconda3-2021.04-Windows-x86_64 Jupyter 安装包

jupyter 安装 Anaconda 2021.04 pyhton 3 windows 64位 安装板

2021-05-11

截图文字提取V3.81

截图文字提取V3.81

2020-06-11

Jrebel 离线激活配置 - 2020.06.09 到期

Jrebel 离线激活配置 使用压缩包的文件覆盖替换本地 Jrebel 文件 本地 jrebel 配置文件一般在:C:\Users\(用户名)\.jrebel

2019-12-19

JAVA工作流 FLOWABLE V6.2 官方文档 中文版

Aciviti 主创人员开发的 flowable。 JAVA工作流 FLOWABLE V6.2 官方文档 中文版

2018-10-08

hue-3.9.0-cdh5.12.1.tar.gz

HUE是一个开源的图形用户界面,用于操作和开发用于执行自助服务数据分析的应用程序。 集成管理各类大数据应用程序,如:hadoop、hive、hbase、spark等

2018-05-22

Microsoft Power BI Desktop x64

Microsoft Power BI Desktop windows 64位 交互式数据可视化 BI 工具

2018-05-22

空空如也

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

TA关注的人

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