自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大漠知秋的加油站

你就当我的烂笔头吧

  • 博客(225)
  • 资源 (1)
  • 收藏
  • 关注

原创 ScrollView 与 SliverPadding 的关系

Scaffold 中有个 ListView,ListView 中有 100 个高 50 的 Container 用作辅助观看,ListView 中第三个元素是一个 GridView,GridView 的滑动效果被禁止。${DateTimenow如上图所示,要探究的问题就以此为基础。

2023-11-11 13:14:33 304

原创 Gitlab 安装全流程

Gitlab是一个开源的 Git 代码仓库系统,可以实现自托管的 Github 项目,即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发,速度快、安全稳定。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

2023-08-22 13:21:45 2442

原创 Linux 设置网络代理

可以临时用,也可以在以下文件中固定永久使用:在 文件夹下新建一个文件。

2022-07-14 21:52:39 3357 1

原创 最小生成树 - Kruskal

Kruskal 是一个简单、易于理解的算法,效率比 Prim 低,对要求不高的场景可以使用。以上的关键点在于要判断两点之间的边如果被选中了,是否会形成环?这里可以使用 在遍历的过程中把已经相连的点进行,而是否可以进行相连(选中这条边作为最小生成树的一员)就要看两点是否已经在一个并集上,如果在,则不能相连,因为会形成环,否则可以相连,并进行。测试show:......

2022-07-14 21:52:16 324

原创 最小生成树 - Prim

什么是最小生成树?假设有 个点,通过 条边将它们相连接,就叫做生成树,而最小就是这 条边的权重相加最小,综合起来就是最小生成树。下面一张图:按照最小生成树的规则,最终可以找到这样一条线:、、、、、、 7 条边把所有的点进行相连,形成了这张图的最小生成树。在这里也能看出来,想要找最小生成树,这个图必须是一个连通图,也就是没有其他的连通分量。那通过什么样的方式可以求得总共有哪些边可以组成最小生成树?要想解决这个问题,就需要先了解一下什么是。把一张图分成两部分就叫做切分,如下:把一张图分成两部分之后,连接

2022-07-07 08:26:57 908

原创 有权图的读取

之前使用邻接矩阵实现的稠密图、无权图如下:在一个 n * n 的二维数组中表示两点相连即为 1(true),不连则为 0(false)。这在无权图中好使,但是如果是有权图,比如下:这中间已经不止存在着连接关系了,还有权值,这里的权值如:3.6、3.8、2.9、1.8。这些权值可能表示着距离、时间等等,在复杂点可能不是数字,而是一个对象,所以不能再像无权图那样简单的使用 0、1 表示。单独抽象出来一个 ,起名 ,属性包含了 、,权重使用模板,具体是什么类型让使用者决定。有权图的邻接矩阵在增加了 Edge

2022-07-07 08:25:31 244

原创 图的广度优先遍历

广度遍历可以求最短路径。

2022-07-07 08:24:05 118

原创 图的深度优先遍历

遍历一开始,第一个开始遍历的顶点是没有被遍历过的顶点,依次递归遍历当前顶点下第一个相邻顶点,只要是没有被遍历过的顶点,就一直递归下去,如果是已经递归过的顶点就跳过。深度遍历的特点是可以方便找到一张图的 。从一顶点开始,一直按照深度遍历的逻辑递归下去,等到递归完毕,如果图中还存在没有被遍历过的顶点,说明存在两个连通分量,若第二个递归完毕还有没有被遍历过的顶点,说明存在三个连通分量,以此类推。测试:顶点之间是否相连经过上边的步骤,知道了把一个顶点深度遍历完毕之后,就完成了一个连通分量的遍历,也就是说在一次

2022-07-07 08:22:33 637

原创 图的基本实现

稀疏图遍历邻边假设遍历 0 的邻边 1、4、7,如果是稠密图,就需要遍历整个 n 的长度,为 true 的是 0 的邻边。如果是稀疏图则可直接遍历,遍历出来的都是 0 的邻边。而大多数业务场景下,很少有一个顶点能连接其他所有顶点的情况,也就是使用稠密图的情况较少见,多数为使用稀疏图,稀疏图的遍历也更加有效率。稀疏图测试打印结果:可以看到,稠密图的邻边关系,天然按顺序排放,并且不会出现平行边。而稀疏图是随机排放,会出现平行边。准备好一个两个问题件 、 文件 ,如下:第一行第一个数字代表有多

2022-07-07 08:21:02 236

原创 图论基本概念

图是用来对 的成对关系建模的数学结构,由 或 以及连接这些顶点的 组成。值得注意的是,图的顶点集合不能为空,但边的集合可以为空,通俗的讲,一张图,没有点不行,没有边可以,大不了点与点之间不相连。图可能是无向的,这意味着图中的边在连接顶点时无需区分方向。否则,称图是有向的。下面左图是一个典型的无向图结构,右图则属于有向图,无向图也可以看成是一种特殊的有向图。连接顶点与顶点的边是否有数值与之对应,有的话就是有权图,否则就是无权图。在一个无向图 G 中,若从顶点 i 到顶点 j 有路径相连(当然从 j 到

2022-07-07 08:19:13 2080

原创 并查集进阶

并查集可以快速度的解决连接问题,比如 A 和 B 是否相连。比如下图:问红色的两个点是否相连,毫无疑问,一眼就看出来,是相连的。问绿色的两个点是否相连,可能就需要看一会了,才能观察出来是否相连,如果更多,那可能就无法观察出来了,所以就引出了并查集这种数据结构。同时,他也可以用在人与人关系中,比如社交网络,每个人就相当于一个点。计算机网络,每台计算机点等等。并查集这种数据结构操作并不复杂,一般包括两种操作:上图可以表示为 0、1、2、3、4 都属于组 0,5、6、7、8、9 都属于 组 1,也可以说他们相连。

2022-07-07 08:17:33 460

原创 CentOS RabbitMQ 集群安装

三台机器都如下配置:每台机器还可以配上自己对应的 hosts,比如在 上:rabbit1这个模式下所有节点都会存储元数据,但是消息数据只有对应的节点有。假设在 rabbit1 上创建了一个队列 ,所有的节点都会有 这个队列的基本信息,比如队列名、队列属性等等,这时,发送端发送了消息到队列 中,那这个消息就只有 rabbit1 这个节点上的队列有,其他节点是没有的。如果 所在节点宕掉,消息就无法正常消费了。 是类似于令牌、密钥之类的东西,可以让节点和节点之间信任访问。rabbit2 的

2022-07-07 08:12:28 409

原创 CentOS yum 安装 RabbitMQ

Erlang 与 RabbitMQ 版本对照[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnkTVvj6-1657152507425)(https://www.rabbitmq.com/which-erlang.html)]](http://pencil.file.lynchj.com/depend/20220706084306.png)官方安装说明官方推荐的安装方式:推荐安装 gpgkey 密钥设置仓库,这里仓库看自己是什么版本 CentOS,如果是 Cent

2022-07-07 08:08:55 1074

原创 SpringBoot AMQP

SpringBoot 已经提供了对 AMQP 协议完全支持的 依赖,引入此依赖即可快速方便的在 SpringBoot 中使用 RabbitMQ。参考:Spring AMQP。声明式实现(推荐)注意,以上配置再启动 SpringBoot 并不会立马创建交换机、队列、绑定,SpringBoot AMQP 有懒加载,需要等到使用 时才会创建。什么是使用 呢?再比如监听了队列死信队列机制死信队列需要在创建 Queue 时指定对应属性:RabbitTemplate 是 SpringBoo

2022-07-07 08:05:28 7235

原创 死信队列机制

什么是?其本质也是一个队列,只是配置上了一个 属性。什么是?死信其实也可以理解为普通的的消息,只是在以下几种情况会称为死信。中成为死信的消息会转发到普通的中(起名带有 关键字,是为了方便知道这个是用来接收死信用的),再路由到一个普通的(起名同交换机)中,最后再由消费这个 队列的消费者处理,是记录异常或者通知运维人员。这里根据图明确一下:红色的为,在没有死信消息出现的时候,其就是普通的队列,当出现死信时,会转发到指定的交换机中。也可以通过 Web 管控台建立死信队列会多一个 的特征完整的意思就是:建

2022-07-06 22:53:27 1928

原创 消息过期机制

设想一下只有生产者,而没有消费者的时候或者消费者处理能力比生产能力弱 N 倍的时候,RabbitMQ 上就会堆积大量消息,几万、几十万、几百万。那 RabbitMQ 所在机器的内存、硬盘等硬件资源也是有限的,超过负荷就会出现崩溃的现象,导致消息丢失。针对这个问题 RabbitMQ 提供了消息过期机制 TTL(Time to Live)。简单理解就是超过一定时间没有被消费的消息,就过期了,要扔掉。消息本身有一个过期时间,每个消息之间是不一样的。进入队列的所有消息都具有一个固定的过期时间。没有一个固定的时间,要

2022-07-06 22:51:04 741

原创 消费者限流机制

默认情况下,消费者并不是处理一条消息,RabbitMQ Server 再从 Queue 中推送一条继续处理。而是一下子尽可能的投送更多,缓存到到本地内存中等待处理。比如 Queue 中存在 10W 条数据,消费者会一边处理一条,一边会进行缓存后续推送的 N 条,而这缓存的 N 条有可能会造成 OOM 或者其他故障。要解决上面的问题也简单,就是控制消费者不要无限制的进行缓存消息,控制缓存消息数量。为了解决上面的问题,RabbitMQ 提供了 功能,QoS 功能保证了在一定数量的消息未被 Ack 前,不推送新的

2022-07-06 22:50:04 278

原创 RabbitMQ 消息百分百投递方案

如上图所示,从 开始,发送一个消息并指定 ,经由 中的 到达对应的 ,消息到达 之后根据 路由到对应的 。消息再从 中经由 端的 中的 到达对应的 。这里所说,是指消息从 Publisher 到 Consumer。从上节可以知道,消息的投递是一个看似简单,其实内部还是比较复杂的操作,保不齐中间哪一个环节出现问题,就会导致消息的丢失。此处有三个环节可能出现消息投递失败的问题。针对这三个问题,RabbitMQ 也提供了对应的解决方案。同步多条消息确认机制开启发送端消息确认机制:发送多次

2022-07-06 22:48:09 713

原创 二分查找进阶

基础二分实现查找实现与动画template<typename T>int binarySearch(T arr[], int len, T target) { int l = 0, r = len - 1; while (l <= r) { // 求中值 int mid = l + ((r - l) >> 1); if (arr[mid] == target) { return mid

2022-05-30 11:16:29 362 1

原创 二叉堆进阶

简介二叉堆(英语:binary heap)是一种特殊的堆,二叉堆是完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。当父节点的值总是大于或等于任何一个子节点的值时为「最大堆」。当父节点的值总是小于或等于任何一个子节点的值时为「最小堆」。完全二叉树:一棵深度为 k 的有 n 个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为 i (1 ≤ i ≤ n)的结点与满二叉树中编号为 i 的结点在二叉树中的位

2022-05-30 11:09:06 349

原创 CentOS 7 yum 安装 MySQL

操作全以 root 用户权限清理 mariadb# 查询存在的$rpm -qa | grep mariadbmariadb-libs-5.5.68-1.el7.x86_64# 卸载。-e: 清除 (卸载) 软件包。--nodeps: 不验证软件包依赖rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64清理 MySQL如果需要卸载旧的 MySQL,可以使用下方的步骤,注意备份数据。$ rpm -qa | grep mysqlmysql-.

2022-05-14 15:51:25 1143

原创 Golang Docker 部署

环境使用语言Go使用镜像golangalpinescratchGo 程序一个简单的服务func indexHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello world")}func main() { http.HandleFunc("/", indexHandler) http.ListenAndServe(":9090", nil)}[外链图片转存失败,源站可能有防盗链

2022-05-13 23:22:22 2978

原创 Kubernetes kubeadm 证书到期,更新证书

Kubernetes kubeadm 证书到期,更新证书版本服务版本CentOS7.8Kubernetes1.18.x证书问题  可能很多人在一开始学习 k8s 的时候,没有注意过证书的问题,在使用 kubeadm 安装 k8s 单机/集群的过程中就是一路往下,如果是学习或者测试使用,使用完毕之后就把虚拟机或者临时云服务器删除了,那也不会发现证书问题。如果这个 k8s 环境要使用 1 年以上,就会碰到这个问题,因为默认证书有效期为 1 年,CA 根证书是 10 年:

2021-08-27 16:33:24 7881 7

原创 Logback 使用详解

文章目录简单使用默认配置日志配置日志级别日志格式配置文件结构整体结构configurationappender属性:`class = ch.qos.logback.core.ConsoleAppender`属性:`class = ch.qos.logback.core.FileAppender`属性:`class = ch.qos.logback.core.rolling.RollingFileAppender`rollingPolicy:`class = ch.qos.logback.core.rolli

2021-07-31 14:43:58 1285

原创 RabbitMQ 死信队列

文章目录死信队列的作用如何配置死信队列样例死信队列的作用  使用 RabbitMQ 的时候可能会碰到以下几个问题:消费者端调用了 basicNack 或者 basicReject,并且没有进行 requeue,如果没做其他措施的话,这个消息也就丢失了。消息在队列的存活时间超过设置的 TTL 时间。消息队列的消息数量已经超过最大队列长度。  以上几个问题都会导致消息丢失,消息丢失的代价可大可小,视自己业务情况而定,有些业务如果消息丢失无所谓的话就不用理睬,相信大部分业务都是不允许丢失的。死信队

2021-07-14 15:50:44 478

原创 SpringBoot 完全整合 RabbitMQ + 100% 发送消息 + 高可靠消费消息 + 源码解析

文章目录软件版本发送消息配置信息发送消息对发送的消息进行回调确认消费消息手动 Ack 模式acknowledge-mode=manual 的 yml 配置关于异常MessageRecovererImmediateRequeueMessageRecovererRepublishMessageRecoverer总结RejectAndDontRequeueRecovererImmediateRequeueMessageRecovererRepublishMessageRecoverer自动 Ack 模式ackno

2021-07-13 11:06:48 1477 1

原创 MyBatis generator 重新生成 Mapper.xml 重复问题

当数据库中表的结构更改时,需要在项目中重新生成 Mapper,想要用新的 Entity、Mapper.java、Mapper.xml 都覆盖掉,这时会在插件里面配置以下配置:<configuration> <!--配置文件的路径--> <configurationFile>src/main/resources/lib/generatorConfig.xml</configurationFile> <!-- 覆盖 -->

2021-06-22 12:12:36 1064 1

原创 SpringBoot 2.5.0 集成 Elasticsearch

Maven 依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>ElasticsearchRepository<T, ID>Spring 提供的便捷操作 Dao 层接口,通过继承此接口可以实现

2021-06-17 16:14:16 1153 5

原创 Elasticsearch 7.12.1 集群简单配置

下载 & 安装 & 启动下载地址安装:解压即可,集群的话就多 Copy 几份启动:${软件根目录}/bin/elasticsearch配置# ======================== Elasticsearch Configuration =========================## NOTE: Elasticsearch comes with reasonable defaults for most settings.# Before yo

2021-06-17 16:13:40 556

原创 轻量级 TCP 端口转发工具:rinetd

  TCP 端口转发的工具太多了,如:SSH、iptables、firewall、ncat、socat、portmap 等,为什么要说 rinetd,因为它使用很简单,对于简单的小服务来说非常的友好。安装$ wget https://pencil.file.lynchj.com/rpm/rinetd-0.62-9.el7.nux.x86_64.rpm--2021-02-05 15:02:21-- https://pencil.file.lynchj.com/rpm/rinetd-0.62-9.e

2021-02-05 15:10:47 2638

原创 CentOS 7 发送邮件

工作中我们会碰到服务器上的各种各样错误,这些错误我们可以做各种各样的捕获、打印、记录。但是光这些是不够的的,对应的负责人员要怎么知道这件事?最简单的办法就是发一封邮件(当然也可以使用其他的系统监控软件进行报警通知,这里不做讨论)  CentOS 7 内置了 mail,可以直接使用,如果觉得依赖库太老可以自己删除掉重新 yum 安装即可。删除# 查找已存在的$ rpm -qa | grep mailx$ rpm -qa | grep sendmail# 删除$ rpm -e xxx .

2021-02-05 14:17:35 1002

原创 访问 GitLab 自带 PostgreSQL 数据库,查询、修改、替换等

查看 PostgreSQL 配置信息:$ cat /var/opt/gitlab/gitlab-rails/etc/database.yml # This file is managed by gitlab-ctl. Manual changes will be# erased! To change the contents below, edit /etc/gitlab/gitlab.rb# and run `sudo gitlab-ctl reconfigure`.production.

2021-02-05 11:27:56 3574

原创 替换重复行

先排序:edit -> sort lines替换# 被替换文本^(.+)$[\r\n](^\1$[\r\n]{0, 1})+# 替换成文本\1\n

2021-02-05 11:25:42 101

原创 问题 - 异常占用大量 CPU 资源排查

  一日,收到服务器 CPU 资源占用满的报警,如下,随抓紧排查:top  首先使用最简单的工具 top 一下,查看是哪个进程占用了大量的 CPU 资源,如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6PVo6hg-1611714688629)(http://pencil.file.lynchj.com/depend/20210127094718.png)]  可以看到的是一个 Java 进程把所有的 CPU 资源都给占用掉了,一个完整的 Java 程序

2021-01-27 10:32:17 1870

原创 同一个服务器从集群中移除后又重新 join master 问题

情况是一台 Master 节点出现了问题,重装系统了,然后再安装 k8s,死活 join 不了,卡在 [check-etcd] Checking that the etcd cluster is healthy 处。如果是一台完全新的服务器不会出现这个问题。问题分析  服务器环境如下:节点IPMaster-1192.168.1.12Master-2(被重装系统的服务器)192.168.1.13Master-3192.168.1.14  经过一番排查,发.

2020-11-24 09:02:55 303 1

原创 工具 - 阿里 Java 在线调试工具 Arthas

Arthas

2020-11-24 09:02:00 1303

原创 优化 - linux ulimit 之 fs.file-max

max-file:表示系统级别的能够打开的文件句柄①的数量。是对整个系统的限制,并不是针对用户的。ulimit -n:控制进程级别(比如 Nginx 进程、MySQL 进程)能够打开的文件句柄的数量。提供对 shell 及其启动的进程的可用文件句柄的控制。这是进程级别的。一边情况下,服务器上的 ulimit 都需要我们自己设置,而不能使用系统默认的,否则会出现文件描述符耗尽的问题。文件句柄达到上限之后的常见错误有:Too many open files 或者 Socket/File: Can’t o.

2020-11-23 21:10:47 11284

原创 Sublime 递增数字输入 InsertNums 插件

InsertNums 可以生成多行递增数字安装Ctrl + Shift + p(Mac:⌘ + ⇧ + p) 调用 Package Control(若未安装,参考 此链接进行安装)。输入 pcip,选择 Package Control:Install Package。输入 InsertNums,选择 InsertNums 安装。使用选择你需要标号的多行文本,Mac 下 ⌥ + 鼠标左键 选择多行(Win 下 鼠标右键按住 选择多行)进入多行编辑模式。按下 Ctrl + Alt + N.

2020-11-23 21:09:06 2191

原创 Sublime 安装 Package Control

官方链接

2020-11-23 21:05:01 117

原创 Kubernetes 1.18.9 kubeadm 高可用集群安装

虚拟机环境IP版本角色10.211.55.58CentOS 7.8.2003k8s-m110.211.55.59CentOS 7.8.2003k8s-m210.211.55.60CentOS 7.8.2003k8s-m310.211.55.61CentOS 7.8.2003k8s-w1处理不必要的麻烦代理  宿主机有开 ShadowsocksX,虚拟机上的网络都是走宿主机的代理,不然 k8s 安装不成。下面有提供离线安装包。下面开启代理

2020-11-23 21:02:15 626 1

DOSBox+0.74.3+win32

DOSBox+0.74.3+win32

2022-05-08

空空如也

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

TA关注的人

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