Maven Question

Maven依赖问题大全 代码开发中,依赖引用可以说是一个很头疼的问题了,这里记录一下遇到的问题,推荐使用IDEA的Maven Helper插件进行依赖冲突的排除,除此之外,非依赖冲突的问题记录在下面。 版本问题1 - 出现两个不同版本的依赖 依赖引入问题 - 离线模式下不能引入依赖 问题现象 需要将repository和代码拷到内网使用,然而拷过去使用离线模式进行加载respository发现依赖全都加载不进来,settings.xml, respository全都没有问题,都是在正常联网环境下能够正常使用的。 maven报错为parent依赖的从未被下载过: Could not access xxx xxx has not benn downloaded it before. 问题分析 很明显,maven还是从远程去下载了,检测到了依赖从未被下载过,因为parent是整个依赖引入的入口,所以先报在了parent这。明明有了Local Repository 为什么还要去远程下载呢? 问题解决 有一个文件没有被注意到 _remote.properties, 这个文件的存在是为了校验当前依赖在本地有,同时在远程也有一份。因为没有网络环境,所以无法校验远程,这时候就报错了。把所有的_remote.properties删掉即可。

<span title='2023-01-07 19:29:40 +0800 +0800'>January 7, 2023</span>&nbsp;·&nbsp;1 min

Yaml File as Config File Using

Spring中使用yaml作为配置文件 写定制的时候经常会遇到这样的情况,一些小而繁杂的配置项在数据库中配置太过麻烦,卸载application.properties中又太过臃肿,针对这种情况,我们可以使用yaml作为配置文件,直接在model类中将yaml配置引入即可。具体使用方法如下: Step1: 创建yaml解析类 1 2 3 4 5 6 7 8 9 10 11 public class YamlPropertySourceFactory implements PropertySourceFactory { @Override public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException { Resource classResource = resource.getResource(); if (classResource.exists()) { PropertySource<?> sources = new YamlPropertySourceLoader().load(resource.getResource().getFilename(), classResource,null); return sources==null ? new MapPropertySource(name, new HashMap<>()) : sources; } return new MapPropertySource(name, new HashMap<>()); } } Step2: 设置配置文件 在项目的 ...

<span title='2022-10-08 11:10:20 +0800 +0800'>October 8, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;Yuanpeng11

Chain of Responsibility

责任链设计模式实战 责任链设计模式 责任链设计模式 学习网站: https://refactoring.guru/design-patterns 优点 符合单一职责原则:后期修改只需要修改具体的实现类。 开闭原则:后期增加逻辑只需要新增具体的实现类。

<span title='2022-09-29 10:04:14 +0800 +0800'>September 29, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;YuanPeng11

Everyday Question

每日一问 2022-06-21 setter & getter setter 和 gettter 的实际意义 为什么要有setter & getter, public dot直接使用不是更方便快捷吗? 而且setter和getter最终的效果也是读写 安全:程序可以选择只读或只写或读写 灵活:如果不仅仅只是读写属性值,可以自由变换 封装:隐藏内部实现细节 健壮:便于维护,扩展 由上一问,为什么public是不安全的呢? 如果写sdk的话,那么有些数据是不想对外修改的,这时候public的作用就体现出来了。如果只是业务代码则,权限体现的不太大。 扩展:Java的四大特性 - 直接粘贴 封装 What:隐藏信息,保护数据访问。 How:暴露有限接口和属性,需要编程语言提供访问控制的语法。 Why:提高代码可维护性;降低接口复杂度,提高类的易用性。 抽象 What: 隐藏具体实现,使用者只需关心功能,无需关心实现。 How: 通过接口类或者抽象类实现,特殊语法机制非必须。 Why: 提高代码的扩展性、维护性;降低复杂度,减少细节负担。 继承 What: 表示 is-a 关系,分为单继承和多继承。 How: 需要编程语言提供特殊语法机制。例如 Java 的 “extends”,C++ 的 “:” 。 Why: 解决代码复用问题。 多态 What: 子类替换父类,在运行时调用子类的实现。 How: 需要编程语言提供特殊的语法机制。比如继承、接口类、duck-typing。 Why: 提高代码扩展性和复用性。 2022-06-22 编译&反编译 编译:源码 -> 字节码 反编译:字节码 -> 源码 什么是字节码,采用字节码的好处是什么? 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。 ...

<span title='2022-06-22 10:18:49 +0800 +0800'>June 22, 2022</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;YuanPeng11

论如何在没有Kafkatool的情况下存活

论如何在没有Kafkatool的情况下存活 众所周知,最近服务器加固的越来越高,导致有些服务器的kafka已经不能在kafkatool上访问,当然不排除是kafkatool有问题,但是无论是哪种情况,Kafka命令的使用已经迫在眉睫,所以总结一下。 kafka的安装 https://downloads.apache.org/kafka/ 安装 .tgz版本的,no src.tgz,src代表着source,下载下来的是资源,还需要gradle编译,有点麻烦。 安装完成后启动zookeeper,关于zookeeper,虽然我们有在使用,但是它是什么呢?为什么Kafka要用它?还有什么场景会使用Zk?关于Zk的问题有点多,后面单独开一个章节去学习Zk。 关于所有的脚本都在/bin目录下,我们可以看到命名非常清晰,我们可以直接上手使用。 启动Zk命令 1 2 // -daemon代表后台运行 后面还可以指定特定的配置文件 如果没有指定就会默认使用 /config/zookeeper.properties ./zookeeper-server-start.sh -daemon 启动kafka 1 2 // 和Zk同样的道理 ./kafka-server-start.sh -daemon Kafka的使用 Topic的创建 常用命令 查询kafka topic列表 ./kafka-topics.sh –list –zookeeper localhost:

<span title='2022-06-10 18:09:16 +0800 +0800'>June 10, 2022</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;YuanPeng11