自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用过git cherry-pick,有什么作用?

是的,git cherry-pick 是 Git 中的一个命令,用于将某个(或多个)特定的提交从一个分支复制到另一个分支。它的作用是让你能够选择性地应用提交,而不是合并整个分支。

2024-08-07 19:55:18 209

原创 如何查看分支提交的历史记录?查看某个文件的历史记录 呢?

查看当前分支前10个详细的提交历史记录。只显示sha-1码和提交信息。查看当前分支的提交历史。

2024-08-07 19:36:16 187

原创 你使用过git stash命令吗?你一般什么情况下会使用它?

命令git stash是把工作区修改的内容存储在栈区。

2024-08-07 19:28:06 321

原创 列举工作中常用的几个git命令?

配置 Git 用户信息、别名等。初始化一个新的 Git 仓库。查看未暂存和未提交的更改。克隆一个远程仓库到本地。还有很多自己在网上看吧。查看工作目录的状态。

2024-08-07 19:25:37 96

原创 什么是SubGit?

SubGit 是一个工具,用于在 Git 和 Subversion (SVN) 之间实现双向同步。它允许你将现有的 SVN 仓库转换为 Git 仓库,同时保持与原 SVN 仓库的同步。这使得团队中可以同时使用 Git 和 SVN 进行版本控制,从而逐步迁移到 Git 或在两者之间无缝协作。

2024-08-07 19:18:06 379

原创 如何知道分支是否已合并为master,你可以通过什么手段知道?

如果目标分支出现在这个列表中,那么它已经合并到 master 分支。如果不在列表中,则还没有被合并。git branch --merged 命令会列出所有已经合并到当前分支的分支。git branch –no-merged 它列出了尚未合并的分支。

2024-08-07 19:14:05 121

原创 如果想要在提交之前运行代码性检查工具,并在测试失败时阻止提交,该怎样配置 Git 存储库?

要在提交之前运行代码检查工具并在测试失败时阻止提交,可以使用 Git 的钩子(hook)功能。具体来说,你可以配置一个 pre-commit 钩子来执行代码检查工具,并在检查失败时阻止提交。

2024-08-07 19:08:19 151

原创 如何在Git中创建存储库?

git push -u origin caster:main 将本地的 caster 分支推送到远程仓库的 main 分支。这将创建一个名为 .git 的隐藏子目录,其中包含 Git 用于跟踪和版本控制的所有必要文件。在 GitHub、GitLab 或其他 Git 托管服务上创建一个新的空存储库。将远程存储库的 URL 添加为本地存储库的 origin 远程。将本地的main分支推送到远程的main分支。在新目录中初始化一个新的 Git 存储库。在该目录中初始化一个新的 Git 存储库。

2024-08-07 18:55:44 165

原创 提交对象包含什么?

每个提交对象通常会引用一个或多个父提交对象,表示它们之间的继承关系。引用父提交对象使得 Git 能够跟踪项目历史和版本之间的关系。

2024-08-07 17:56:43 114

原创 如何找到特定提交中已更改的文件列表?

特定提交” 是指代码库在某个时间点上的状态,可以通过唯一的哈希值标识。git diff --name-only < commit >^ < commit >:仅列出更改的文件名称。git diff --name-status < commit >^ < commit>:列出更改的文件名称及其状态。git show --name-only < commit >:显示提交详细信息并列出更改的文件名称。

2024-08-07 17:34:52 381

原创 什么是git stash drop?

git stash drop 命令用于从 stash 栈中删除一个特定的 stash 条目。每次使用 git stash 命令时,未提交的更改会被保存到 stash 栈中,这些更改可以稍后恢复。如果你确定不再需要某个特定的 stash 条目,可以使用 git stash drop 将其从栈中删除。这个命令将删除最近(最顶部)的 stash 条目。这里的 stash@{n} 是指要删除的特定 stash 条目。例如,stash@{0} 是最新的 stash 条目,stash@{1} 是倒数第二个,依此类推。

2024-08-07 17:18:23 163

原创 什么是 git stash?

问题是,你不想把完成了一半的工作的提交,以便你以后就可以回到当前的工作。解决这个问题的答案是 git stash。stash 会将你的工作目录,即修改后的跟踪文件和暂存的更改保存在一堆未完成的更改中,你可以随时重新应用这些更改。将当前工作目录中的未提交更改(包括暂存区中的更改)保存到一个栈中,并恢复干净的工作目录。从栈中恢复最近一次保存的更改,并将其应用到当前分支,但不会从栈中移除这条记录。从栈中恢复最近一次保存的更改,并将其应用到当前分支,同时从栈中移除这条记录。

2024-08-07 17:09:17 138

原创 git pull 和 git fetch 有什么区别?

git pull 命令实际上是 git fetch 和 git merge 的组合。它从远程仓库获取最新的更改,并自动将这些更改合并到当前分支。git fetch 命令从远程仓库获取最新的更改,但不会将这些更改自动合并到你的本地分支。它只是更新本地的远程跟踪分支。

2024-08-07 16:18:55 206

原创 在Git中,你如何还原已经 push 并公开的提交?

使用 git revert 可以安全地撤销已经推送到远程仓库的提交,而不会破坏其他开发者的历史记录。

2024-08-07 16:11:32 244

原创 在 Git 中提交的命令是什么?

将暂存区的文件提交到本地仓库中。

2024-08-07 15:40:22 100

原创 能说说ElasticSearch 写索引的逻辑吗?

ElasticSearch 的写索引逻辑涉及多个步骤,从数据写入到内存缓冲区(buffer),再到刷新到磁盘,最后进行段合并(segment merging)。

2024-08-06 16:26:01 784

原创 了解文本相似度 TF-IDF吗

简单地说,就是你检索一个词,匹配出来的文章,网页太多了。比如 1000 个,这些内容再该怎么。呈现,哪些在前面哪些在后面。这需要也有个对匹配度的评分。TF-IDF 就是干这个的。

2024-08-06 15:56:03 110

原创 谈谈你对段合并的策略思想的认识

段合并策略决定了何时以及如何将多个小段合并成一个更大的段。

2024-08-06 15:49:01 114

原创 说说分段存储的思想

早期的搜索引擎系统确实通常是为整个文档集合建立一个大的倒排索引。为了解决这些问题,现代搜索引擎(如 ElasticSearch)采用了分段存储(Segment Storage)的策略,将一个大的索引文件拆分为多个独立的子文件,每个子文件称为一个段(segment)。

2024-08-06 15:39:48 405

原创 谈谈ElasticSearch中分词与倒排索引的原理

ElasticSearch 是一个分布式搜索和分析引擎,其高效的搜索性能主要依赖于分词(tokenization)和倒排索引(inverted index)这两个核心技术。

2024-08-06 15:17:55 347

原创 说说插件的解析机制

与依赖的构件一样,插件也是基于坐标保存在Maven仓库中。在用到插件的时候会先从本地仓库查找插件,如果本地仓库没有则从远程仓库查找插件并下载到本地仓库。与普通的依赖构件不同的是,Maven会区别对待普通依赖的远程仓库与插件的远程仓库。前面提到的配置远程仓库只会对普通的依赖有效果。当Maven需要的插件在本地仓库不存在时是不会去我们以前配置的远程仓库查找插件的,而是需要有专门的插件远程仓库。

2024-08-06 11:29:12 227

原创 说说依赖的解析机制?

如果依赖的版本是 RELEASE 或 LATEST,Maven 需要基于更新策略读取所有远程仓库的元数据文件(groupId/artifactId/maven-metadata.xml),将其与本地仓库的对应元数据合并后,计算出 RELEASE 或 LATEST 的真实版本值。它们是临时的、不稳定的版本,用于持续集成和测试。例如,Maven 会读取远程仓库中的 maven-metadata.xml 文件,合并后得到最新的版本,然后根据这个版本去检查本地仓库,或者从远程仓库下载。

2024-08-06 11:19:54 388

原创 说说maven的依赖原则

Maven 会自动解析并包括项目依赖项的依赖项。换句话说,如果你的项目依赖于库 A,而库 A 又依赖于库 B,那么你的项目也会自动依赖库 B。传递性依赖减少了在 pom.xml 文件中手动声明所有间接依赖的需要。如果两个依赖项的路径长度相同,Maven 会选择首先声明的依赖版本。例如,在 pom.xml 文件中,先声明的依赖项的版本会覆盖后声明的依赖项的版本。当同一个依赖项通过不同的路径传递到项目中时,Maven 会选择最靠近的那个版本。也就是说,直接依赖的版本会优先于传递依赖的版本。

2024-08-06 11:06:00 107

原创 如何解决依赖传递引起的版本冲突?

在使用 Maven 进行项目构建时,依赖传递可能会引起版本冲突。例如,你的项目依赖于库 A 和库 B,而库 A 和库 B 又依赖于不同版本的库 C。这种情况会导致版本冲突,Maven 需要决定使用哪个版本的库 C。

2024-08-06 10:58:49 129

原创 说说你熟悉哪些maven命令?

最终生成的 JAR 文件中只包含 src/main/java 目录下的编译结果,不包含 src/test/java 目录下的测试代码。

2024-08-06 10:49:56 653

原创 讲一下maven的生命周期

Maven 的生命周期(Lifecycle)是指 Maven 在构建项目时执行的一系列步骤和阶段。这些阶段按顺序执行,从项目的初始化到打包和部署。Maven 的生命周期有助于标准化项目的构建过程,确保所有必要的步骤都能自动完成。

2024-08-06 10:33:25 160

原创 什么是 Maven 坐标?

Maven 坐标就像一个地址或标签,用于唯一标识项目或库(构件)。想象一下,你的项目依赖于很多其他的库,这些库可能是别人写的,也可能是你之前写的。Maven 需要一种方法来准确找到并使用这些库,这就是 Maven 坐标的作用。

2024-08-06 10:18:42 110

原创 说说maven有什么优缺点?

约定大于配置:源代码默认放在 src/main/java,测试代码放在 src/test/java,资源文件放在 src/main/resources 等。如果你的项目不遵循默认的目录结构,例如源代码放在 src/java 而不是 src/main/java,你需要额外配置来告诉 Maven如何找到源代码。

2024-08-06 10:10:12 288

原创 Maven能为我们解决什么问题?

Maven 提供了一套标准化的构建流程,可以自动化编译、测试、打包和部署等任务。Maven 可以自动管理项目的依赖关系,避免了手动下载和管理库文件的繁琐工作。Maven 提供了一个标准的项目结构和配置,使得项目在不同的环境中保持一致性。Maven 支持继承和聚合,使得多个项目可以共享相同的构建配置,减少重复配置。Maven 可以通过中央仓库或公司内部仓库,方便地管理和控制依赖库的版本。

2024-08-06 10:01:07 130

原创 什么是maven?

Maven 的核心理念是通过一个统一的项目对象模型(POM,Project Object Model)来管理项目的构建、报告和文档。在pom文件中安装依赖,Maven 会首先检查本地仓库中是否已经存在声明的依赖。如果本地仓库中不存在该依赖,Maven 会从中央仓库下载该依赖并存储在本地仓库中。pom.xml 文件是 Maven 项目的核心配置文件,包含了项目的基本信息、依赖、构建插件等配置。Maven 的使用大大简化了 Java 项目的构建和管理,帮助开发者专注于代码本身,而不是构建过程。

2024-08-06 09:49:44 284

原创 说说策略模式在我们生活的场景?

条条大路通罗马,条条大路通北京。我们去北京的交通方式(策略)很多,比如说坐飞机、坐高铁、自己开车等方式。每一种方式就可以理解为每一种策略。这就是生活中的策略模式。策略模式是指定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。

2024-08-05 19:48:40 60

原创 享元模式和单例模式的区别?

享元模式可以有多个享元实例,但这些实例会共享部分状态。单例模式一个类只有一个实例。

2024-08-05 19:46:07 104

原创 知道享元模式吗?

通过共享已经存在的对象来减少内存消耗,从而提高系统性能。享元模式特别适用于那些数量庞大、创建代价高昂、且内容相同或相似的对象。

2024-08-05 19:35:02 274

原创 模板方法模式

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

2024-08-05 19:18:08 305

原创 代理模式和装饰器模式有什么区别?

都是结构型模式,代理模式重在访问权限的控制,而装饰器模式重在功能的加强。

2024-08-05 19:12:03 315

原创 装饰器模式是什么

装饰器模式是指动态地给一个对象增加一些额外的功能,同时又不改变其结构。装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。通过组合而不是继承来扩展对象功能,避免了创建大量子类的问题。装饰器模式的核心思想是通过将对象包装在装饰器对象中,以动态地为其增加功能,而不改变对象的结构。下面是一个简单的例子,演示如何使用装饰器模式来动态地增加功能。假设我们有一个简单的接口 Shape,表示图形。我们可以用装饰器模式来为这些图形动态地增加功能,比如颜色边框。

2024-08-05 19:10:52 293

原创 抽象工厂模式

修改现有代码:简单工厂模式在新增产品时需要修改工厂类代码,不符合开闭原则;抽象工厂模式只需添加新的具体工厂类,无需修改已有代码,符合开闭原则。代码结构:简单工厂模式结构简单,适用于产品种类较少的情况;抽象工厂模式结构更复杂,但更灵活,适用于产品种类多且变化频繁的情况。扩展性:抽象工厂模式的扩展性更好,可以轻松添加新的产品和工厂,而不影响现有代码。

2024-08-05 18:37:04 122

原创 说说简单工厂模式

由一个工厂类根据传入的参数决定创建哪一种产品类的实例。

2024-08-05 18:24:47 97

原创 说说你对代理模式的理解

在这个例子中,ProxyImage 类作为 RealImage 的代理。第二次调用 display 方法时,ProxyImage 直接调用已经创建的 RealImage 实例的 display 方法,而不再重新加载图像。黄牛卖火车票:没有流行网络购票的年代是很喜欢找黄牛买火车票的,因为工作忙的原因,没时间。婚姻介绍所:婚姻介绍所的工作人员,搜集单身人士信息,婚介所的工作人员为这个单身人士找对。代理模式是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。象,这个过程也是代理模式的生活案例。

2024-08-05 18:08:35 291

原创 说说什么是单例模式

在这个例子中,Singleton类通过一个私有构造函数来防止外部实例化,并通过一个静态方法 getInstance() 来返回类的唯一实例。如果实例不存在,它会创建一个实例;单例模式是一种设计模式,它限制一个类只能创建一个实例。这样可以确保某个类在整个应用程序中只有一个对象实例存在。通过一个私有构造函数来防止外部实例化,意味着该类的构造函数被标记为私有的,因此在类的外部不能直接使用 new 关键字来创建该类的实例。通过单例模式,可以确保类的实例是全局唯一的,从而避免实例重复创建带来的资源浪费和可能的错误。

2024-08-05 17:45:02 188

空空如也

空空如也

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

TA关注的人

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