自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 RocketMQ 5.1.0 源码详解 | Producer 发送流程

检查消息是否合法获取 topic 路由信息先尝试从本地获取路由信息,没有则向 NameServer 获取向 NameServer 获取路由信息并更新本地缓存,没有则抛出异常并返回从本地获取路由信息如果本地扔获取不到路由信息则获取默认路由信息向 NameServer 获取默认路由信息,如果获取不到则抛出异常并返回修改获取到的默认路由信息为新的 topic 的路由信息更新本地路由信息缓存获取路由信息成功;失败则跳转到第4步选择一个向发送消息。

2023-08-13 23:42:58 737

原创 RocketMQ 5.1.0 源码详解 | Producer 启动流程

本文介绍了 RocketMQ 生产者的启动流程,从 producer.start() 方法开始,分析了 DefaultMQProducer、DefaultMQProducerImpl 和 MQClientInstance 类的作用和关系,以及生产者启动过程中涉及到的定时任务、心跳机制、异步请求处理等功能。最后,本文给出了一个生产者启动成功后的实例内容,展示了生产者的各个属性和对象。本文适合对 RocketMQ 感兴趣的读者阅读,可以帮助读者深入理解 RocketMQ 生产者的工作原理和实现细节

2023-07-29 19:31:42 1297

原创 RocketMQ5.1 NameServer 路由管理

路由管理是指维护 Broker、Topic、Queue 和 Consumer Group 之间的对应关系,以及提供给 Producer 和 Consumer 获取这些关系的服务。NameServerController:NameServer 的控制器类,负责初始化、启动和关闭 NameServer 的各个组件。

2023-04-26 11:45:07 952 1

原创 RocketMQ 5.1 NameServer 启动流程

RocketMQ是一个分布式消息中间件,它的核心组件之一是namesrv,负责管理broker的路由信息和kv配置。本文将介绍RocketMQ5.1版本中namesrv的启动过程,包括如何解析命令行参数、加载配置文件、初始化和启动namesrv控制器等。首先,我们需要在环境变量中设置ROCKETMQ_HOME,指向RocketMQ的安装目录。这条命令执行运行的是方法。启动过程分为两部分即。

2023-04-05 22:00:15 965

原创 DevOps 学习笔记(三)| 使用 Jenkins 流水线

使用 Jenkins 构建的流水线 Item 需要完成以下几个操作对应的流水线代码如下。

2023-03-01 21:18:35 336

原创 DevOps 学习笔记(二)| 使用 Harbor

如果 Harbor 仓库设置为私有仓库,则还需要登录;因为我们在创建仓库时选择的是公开,因此不需要登录 Harbor 账号。使用命令将 Docker 镜像追加标识使 Harbor 仓库可以识别,格式为。之后重启 Docker 服务,并将 Docker 服务登录 Harbor。的 Docker 步骤和方法一致,之后需要重启 Docker 服务。使用命令拉取上传到 Harbor 的镜像,控制台输出如下。访问 Harbor 网站,新建项目,项目配置如下。中配置 Docker,与第一步配置。中配置 Docker。

2023-03-01 17:18:26 476

原创 DevOps 学习笔记(一) | DevOps 简介及环境搭建

本次实验需要三台服务器和步骤需要安装。

2023-03-01 17:18:12 2155 1

原创 Dockerfile 学习笔记

Dockerfile 是什么Dockerfile 是镜像的描述文件Dockerfile 的作用通过 Dockerfile 文件我们可以自定义一个的镜像并构建出来通过 Dockerfile 构建镜像的步骤在构建镜像的过程中,会在 Docker Cache 中生成每一条命令对应的临时镜像 tmp Image,以便于在 Dockerfile 被修改重新构建镜像时加快构建的速度,可以在构建时使用--no-cache命令取消缓存下面是一些概念之间的关系fill:#333;color:#333;

2023-03-01 17:14:02 331

原创 Git 基础及开发流程学习笔记

学习基本的 Git 命令,并了解原理,在遇到 Git 相关问题时,能自行排查并解决了解研发流程中的基本概念和规范,学会正确的使用 Git。

2023-02-06 15:00:55 923

原创 使用 WSL2 进行 Go 开发

由于kitex目前对 Windows 下自动生成代码适配不完善,因此使用 WSL2 进行 Go 的开发,在配置 WSL2 环境方面遇到了很多问题,此篇文章总结并解决了这些问题。在阅读此文章之前请确保电脑已经下载 GoLand,Windows 中不需要下载 Go SDK。

2023-02-02 16:55:32 1293

原创 GO语言基础

GO语言是一种开源的编程语言,由Google公司开发。它诞生的初衷是为了解决大规模网络系统的性能和程序的简洁性问题。Go语言特别适合用来开发高性能的服务端应用程序,因为它支持并发编程,并且具有非常高效的垃圾回收机制。Go语言具有非常简洁和易读的语法。它没有继承和接口,而是通过结构体和方法来支持面向对象编程。Go语言还有一个很重要的特性是支持快速编译。它使用静态链接,可以极快地构建和部署应用程序。在测试中GO语言的编译速度仅稍稍落后于C语言和C++,运行速度比任何语言都要快。

2023-02-02 16:49:12 241

原创 CentOS环境下使用Docker部署SpringBoot应用流程

学习在Linux环境下如何使用Docker容器部署SpringBoot应用

2022-09-25 14:32:35 1033

原创 MATLAB制作歌曲

简谱知识首先了解简谱基础知识表示音的高低的基本符号,用七个阿拉伯数字标记。它们的写法和读法如下:写法: 1 2 3 4 5 6 7读法: Do Re Mi Fa Sol La Si1˙\dot{1}1˙ 表示高音Do111 表示中音Do1.\mathop{1}\limits_{.}.1​ 表示低音Do音符名称写法时值全音符X−−−X---X−−−四拍二分音符X−X-X−二拍四分音符XXX一拍八分音符X‾\underline{X}X​

2021-03-10 00:02:09 3222 6

原创 LeetCode:K个一组翻转链表(链表问题)

难度: 困难题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例1输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例2输入:head = [1,2,3,4,5], k = 3输出:[3,2,1,4,5]解题思路因别人已经将过程写得非常清晰,故直接引用如下,代码则是根据步骤自行编写。步骤分解:链表分区为已翻

2021-03-05 11:26:28 464

原创 LeetCode:反转链表(链表问题)

难度: 简单题目反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路使用三个 ListNode,分别是prev,curr,next。curr是当前指针指向的节点,prev是curr的前一个节点,头节点的前一个节点是NULL,next是curr的下一个节点,用于遍历链表。prev curr next NULL 1 -> 2

2021-03-04 22:38:29 414 3

原创 LeetCode:最小覆盖子串(滑动窗口)

难度: 困难题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。注意: 如果 s 中存在这样的子串,我们保证它是唯一的答案。示例输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"解题思路这⼀题是滑动窗⼝的题⽬,在窗⼝滑动的过程中不断的包含字符串 T,直到完全包含字符串 T 的字符以后,起始位置向后移动至刚好不再完全包含字符串T时,记下左侧窗口的位置减一,和

2021-03-03 18:05:29 460 1

原创 LeetCode:不同路径(动态规划)

难度: 中等非常典型的动态规划问题题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例1输入:m = 3, n = 7输出:28示例2输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下

2021-02-28 19:07:21 805

原创 LeetCode:正则表达式匹配(动态规划)

难度: 困难题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串 s 的,而不是部分字符串。示例1输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例2输入:s = "aab" p = "c*a*b"输出:true解释:因为 '*' 表示零个或多个,这里 'c' 为 0 个, '

2021-02-28 16:41:42 413

原创 LeetCode:最长回文子串(动态规划)

题目给你一个字符串 s,找到 s 中最长的回文子串。子串(substring):原始字符串的一个连续子集;子序列(subsequence):原始字符串的一个子集。示例1输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例2输入:s = "a"输出:"a"解题思路动态规划需要有状态和状态转移方程:状态:dp[i][j]dp[i][j]dp[i][j] 表示子串s[i⋯j]s[i\cdots j]s[i⋯j] 是否为回文子串状态转移

2021-02-28 10:28:14 713

原创 LeetCode:无重复字符的最长子串(滑动窗口)

难度: 中等题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2输入: s = ""输出: 0解题思路(滑动窗口)滑动窗⼝的右边界不断的右移,只要没有重复的字符,就持续向右扩⼤窗⼝边界。⼀旦出现了重复字 符,就需要缩⼩左边界,直到重复的字符移出了左边界(使用map可直接将左边界跳转到正确的位置),然后继续移动滑动窗⼝的右边界。以此类推, 每次

2021-02-24 12:41:12 590

原创 LeetCode:最大子序和

难度:简单问题描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。题解(动态规划):初始化最大值为数组第一个数,以解决数组中只有单个数的问题;从第二个数开始遍历数组,如果上一个数大于0,则令 当前位置的数 = 当前位置数的数值 + 上一个数的数值;每次遍历后比较数组当前数值与最大值,并根据结

2021-02-22 15:52:14 554

原创 智能寻迹(循迹)小车项目思路 + 代码

说是智能循迹小车,其实一点也不智能,仅仅是几个判断语句而已。更高级的可以使用PID算法控制小车双轮的转速,从而实现智能小车控制。作为一个项目作业,完成后想删掉的,但是感觉有些可惜,故发布于博客上以便于其他人参考。使用两个红外线接收器接受红外线探测到的黑色轨迹,实现转大小弯,直角(因为直角处轨迹宽度超过了探测器的宽度,所以有一些额外处理),但是无法通过锐角。遇到转弯的时候就将直行的速度降低到最高速度的slow%,以防止小车冲出弯道。保持直行状态达到speedUp时间后,在fullGear-speedUp

2021-01-21 11:40:21 46074 12

转载 探秘Java中String、StringBuilder以及StringBuffer(万字长文)

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。

2020-10-31 11:24:46 802

原创 高频设计模式:Template Method(模板方法)模式

文章目录Template Method简介示例程序AbstractDisplay 类CharDisplay 类StringDisplay 类Main类运行结果Template Method简介在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为 Template Method模式。TemplateMethod的类图如下其中AbstractClass是抽象类,ConcteteClass是继承该抽象类的子类。AbstractClass中method1、method2、method3是抽

2020-10-04 17:55:35 870

原创 Java GC 垃圾清理算法和常见的垃圾回收器

文章目录什么是垃圾如何找到垃圾引用计数(Reference Count)根可达算法(Root Searching)如何清理垃圾标记清除 (Mark-Sweep)复制 (Copying)标记压缩 (Mark-Compact)JVM分代算法新生代老年代垃圾回收器种类Java 1.3Serial(年轻代)Serial Old(老年代)Java 1.8Parallel Scavenge(年轻代)Parallel Old(老年代)特殊ParNew(年轻代)CMS(老年代)G1 (Garbage-First)ZGC染色

2020-09-29 16:27:26 1602

原创 高频面试题:Redis持久化有几种类型,它们的区别是什么

两种,RDB 和 AOFRDB (Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点

2020-09-15 22:35:31 1399

原创 高频面试题:类初始化和实例初始化等

文章目录问题解析类初始化过程实例初始化过程问题现有以下代码,最后的输出是什么?public class Father { private int i = method(); private static int j = staticMethod(); static { System.out.println("(父类静态代码块2)"); } Father() { System.out.println("(父类无参构造器代码)"); } { System.out.println

2020-09-15 22:16:42 1289

原创 你真的会写单例模式吗?

单例模式的介绍,使用饿汉式、懒汉式及DCL单例实现单例模式。介绍volatile关键字在DCL单例中的重要作用。

2020-08-11 15:08:53 959

原创 SpringBoot搭建个人博客系统项目5:连接数据库并创建表

文章目录连接数据库实体设计实体类命名约定在项目中创建实体类连接数据库在SpringBoot的配置文件application.yml中添加spring: jpa: hibernate: ddl-auto: update show-sql: true datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/blog?serverTi

2020-08-04 18:40:13 1615

原创 SpringBoot搭建个人博客系统项目4:使用thymeleaf抽取页面的公共片段

文章目录thymeleaf简单使用表达式使用thymeleaf抽取公共片段在博客系统中抽取公共片段CSS样式导航栏底部 footerthymeleaf简单使用thymeleaf是SpringBoot默认集成的模板引擎表达式${...}: 变量表达式。*{...} : 选择表达式。#{...} : 消息 (i18n) 表达式。@{...} : 链接 (URL) 表达式。~{...} : 片段表达式。使用thymeleaf抽取公共片段使用th:fragment="xx"来抽取某个页面的片段

2020-08-04 15:36:15 1465

原创 SpringBoot搭建个人博客系统项目3:AOP添加日志记录

文章目录日志记录内容配置日志记录配置文件配置文件分析记录日志类日志记录内容请求 url访问者 ip调用的方法 classMethod方法参数 args返回的内容配置日志记录配置文件logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50} -%msg%n" file: "%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50} -%msg%n"

2020-08-04 12:35:14 1337

原创 SpringBoot搭建个人博客系统项目2:错误处理——定制错误页面和错误数据

文章目录错误处理简介重要的类错误处理步骤错误处理方法自适应方法添加ErrorAttributes组件(推荐)进阶:处理自己定制的异常给博客系统添加错误处理前两部分为错误处理原理,可直接跳到第三部分博客系统的错误处理部分。错误处理简介重要的类ErrorPageCustomizer:定制错误的响应规则,发送/error请求。@Value("${error.path:/error}")private String path = "/error";BasicErrorController:

2020-08-03 20:40:35 1435

原创 SpringBoot搭建个人博客系统项目1:整体介绍和前端页面展示

文章目录实现功能前端页面展示首页分类页标签页归档页关于我博客详情后台管理页面新增博客页面实现功能前端页面展示首页分类页标签页归档页关于我博客详情后台管理页面新增博客页面因为大部分人不是专门开发前端,为了节约大家时间,我将前端需要的html页面等所有资源放在了公众号里,回复页面即可获取。我的Github也在更新中,欢迎Star~...

2020-08-03 18:25:48 2335 3

原创 如何给自己的博客系统添加一个Markdown编辑器?

首先到https://github.com/pandao/editor.md下载Markdown编辑器将下图选中的文件和文件夹拷贝到项目的静态资源目录下我这里将它们拷贝到了static/lib/editormd下创建一个页面,内容如下<!DOCTYPE html><html lang="zh"><head> <meta charset="utf-8" /> <title>Simple example - Editor

2020-07-25 19:49:36 2012

原创 Python爬取六国家(地区)最流行的股票并保存到excel的不同的工作表中

问题爬取“英为财情”网站中最活跃股票数据。网站url:https://cn.investing.com/equities/most-active-stocks爬取括号内指定6个热门数据(中国、中国香港、新加坡、美国、英国和德国),保存在excel的一个工作簿中,但要对不同的国家保存为不同的工作表。打开网站后页面显示如下网页分析查看网页的源代码后发现股票名都在class为left bold plusIconTd elp的td下的a标签的text文本中当我们选择新加坡的时候,URL变为http

2020-07-18 19:35:38 2531

原创 缓存雪崩、缓存击穿、缓存穿透概念及其解决方案

缓存雪崩概念在一个较短的时间内,缓存中较多的key集中过期。此周期内访问请求过期的数据,Redis未命中,便将请求发送给数据库。数据库一时间无法处理如此多的请求,导致Redis中大量请求被积压,且出现超时现象。解决方案更多的页面静态化处理构建多级缓存架构Nginx缓存+ redis缓存+ ehcache缓存即使Redis未命中,ehcache能命中便可以减轻压力检测Mysq严重耗时业务进行优化对数据库的瓶颈排查:例如超时查询、耗时较高事务等灾难预警机制监控 redis服务器性能指标

2020-07-09 17:31:35 1325

原创 HashMap详解

此文章包含了大部分HashMap有关的面试题,如有其它欢迎在评论区补充。HashMap的一些基础知识:问:HashMap的默认初始容量是多少?答:默认初始容量是16,且默认初始容量必须是2的次幂。问:为什么默认初始容量必须是2的n次幂?若创建HashMap传入的initialCapacity不是2的次幂会发生什么?答:因为(2的次幂数 - 1)的二进制形式表示都是1,这样在和经过异或运算的h进行按位与运算的时候才可以最多地保留其特性,减少产生哈希碰撞的概率,让数组空间均匀分配。如果传入的ini

2020-07-05 18:48:57 8266 6

原创 基于XML的Spring声明事务控制

文章目录1. 配置事务管理器2. 配置事务的通知3. 配置AOP中的通用切入点(需要增强的类)表达式4. 建立事务通知和切入点表达式的对应关系5. 配置事务的属性Spring框架为我们提供好了事务控制器,我们不必自己写事务控制器。下面就详细说明基于XML配置Spring事务控制器的步骤。1. 配置事务管理器<!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.

2020-07-03 09:58:01 1352

原创 Spring AOP配置过程详解

文章目录AOP中的专业术语AOP整体配置过程项目中的角色分工基于XML的AOP配置基于注解的AOP配置保留bean.xml情况删除bean.xml情况AOP中的专业术语Joinpoint(连接点):连接点是指哪些被拦截到的点,在spring中,这些点指的是方法,因为spring只支持方法类型的连接点Pointcut(切入点):指我们要对哪些连接点进行拦截的定义Advice(通知/增强):拦截到连接点之后要做的事情通知的类型:前置通知(在调用invoke方法前),后置通知(在调用invoke方法后)

2020-07-02 13:12:47 1587 1

原创 Julia引入PyCall报错解决方法

首先按照正常的方法安装PyCallusing PkgPkg.add("PyCall")using PyCall报错[ Info: Precompiling PyCall [438e738f-606a-5dbb-bf0a-cddfbfd45ab0]ERROR: LoadError: LoadError: PyCall not properly installed. Please run Pkg.build("PyCall")Stacktrace: [1] error(::String) at

2020-07-01 11:41:53 4769

阿里Java最新版面试集锦2020.pdf

阿里巴巴2020年最新面试题合集

2020-10-04

空空如也

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

TA关注的人

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