自我介绍

4 月 5 日
阅读 3 分钟
172
关于我大家好,我是天航星。一名 90 后 Java 程序员。天为涯,航为途,星为岸。在编程这条道路上不断提升自己,追逐心中的星辰大海。为什么做编程我不是计算机专业出身倒不是不喜欢这个专业,相反,我从小就非常喜欢。高考填志愿的时候由于家里眼光局限(现在出来上班的谁不会用电脑,学计算机有什么前途),无奈只能选...
封面图

Java Excel转PDF(免费)

8 月 29 日
阅读 22 分钟
264
目前市面上 Excel 转 PDF 的组件较多:收费:aspose、GcExcel、spire开源:jacob、itextpdf其中收费的组件封装得比较好,代码简洁,转换的效果也很好,但收费也高得离谱:为了成本考虑,就需要考虑开源的组件了,因为它们都是免费的:jacob:目前没有探索出很好的导出效果。itextpdf:已探索出很好的导出效果,达到了与...
封面图

IDEA 一键部署Docker

7 月 4 日
阅读 4 分钟
335
以部署示例服务(sevnce-demo)为例。配置服务器地址、账号、密码根据实际情况填写配置镜像仓库地址、账号、密码根据实际情况填写编写Dockerfile在sevnce-demo根目录下右键,选择创建Dockerfile。 {代码...} 配置运行参数配置预执行Maven命令 {代码...} 点击ok,再次添加: {代码...} 配置镜像名称 {代码...} 配置容器名...
封面图

EasyExcel 填充+写入

7 月 3 日
阅读 6 分钟
847
使用 EasyExcel 导出 Excel 时,有时会遇到如下情况:既要根据模板填充某些 sheet又要根据业务写入某些 sheetEasyExcel 官方没有提供这样的示例,经过自己的研究和实验,得到了如下步骤:定义导出文件名 {代码...} 获取模板文件 {代码...} 此时读取的模板文件默认为压缩文件,是不能在后续进行填充的,所以需要在 pom.xm...
封面图

Docker 部署Jenkins

5 月 18 日
阅读 1 分钟
235
1、运行镜像 {代码...} 2、访问管理页面访问地址:服务器IP:8080
封面图

Docker 部署Nginx

5 月 18 日
阅读 2 分钟
112
1、运行容器 {代码...} 2、创建目录 {代码...} {代码...} {代码...} 3、从容器中复制要挂载的文件 {代码...} {代码...} {代码...} {代码...} 4、停止容器 {代码...} 5、删除容器 {代码...} 6、重新运行容器 {代码...} -name:给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器。-p:映射端口,将docker宿主...
封面图

Docker 部署Nacos

5 月 17 日
阅读 20 分钟
239
1、创建Nacos目录 {代码...} 2、创建Nacos日志目录 {代码...} 3、创建Nacos配置目录 {代码...} 4、创建数据库 {代码...} 5、查看wsl2静态网络地址WSL 2网络默认使用动态IP地址。如果MySQL容器在WSL 2中运行,Nacos无法连接到容器的动态IP地址。可以尝试使用如下命令获取WSL 2的静态IP地址来连接MySQL容器: {代码...} {...
封面图

Docker 部署xxl-job

5 月 17 日
阅读 6 分钟
200
1、执行SQL脚本 {代码...} 2、启动容器 {代码...}
封面图

Docker 部署RabbitMQ

5 月 16 日
阅读 1 分钟
195
1、启动容器 {代码...} 参数解释:-d:设置程序后台运行。--restart always:设置服务自启动。--name:指定运行后的容器名称。-e:设置环境。这里主要设置账号密码为admin。默认账号密码为guest ,只能在 localhost访问,由于需要外网访问,所以创建admin用户进行登录。-p:设置公网IP地址的端口号对应容器内部的端口号...
封面图

Docker 部署MinIO

5 月 16 日
阅读 1 分钟
215
1、启动容器 {代码...} --net=host:容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口。–name:容器名称。-d:后台启动。--restart=always:随docker启动。-e:环境设置。MINIO_ACCESS_KEY:账号 MINIO_SECRET_KEY:密码(正常账号应该不低于3位,密码不低于8位,不然容器会启动不成功)-v :数据卷挂载。第1个-...
封面图

Docker 部署Redis

5 月 12 日
阅读 8 分钟
973
1、创建Redis目录 {代码...} 2、创建配置文件redis.conf {代码...} {代码...} 3、运行镜像 {代码...} name:容器名称。--restart=always:随docker启动。-p 45400:6379 暴露45400端口。--log-opt:日志相关。max-size:日志文件最大值。max-file:日志文件数量限制。-v :数据卷挂载。第1个-v挂载配置文件。第2个-v挂载...
封面图

Docker 部署MySQL

5 月 12 日
阅读 4 分钟
280
1、创建配置目录 {代码...} 2、切换到配置目录 {代码...} 3、创建配置文件 {代码...} {代码...} 4、运行镜像 {代码...} --restart=always:随docker启动。--privileged=true:容器内的root拥有真正的root权限。-e MYSQL_ROOT_PASSWORD=:设置root账号的密码。5、旧版本字符集校正旧版本的字符集格式与8.0版本是有出入的...
封面图

SpringBoot 单元测试ServerContainer not available

5 月 11 日
阅读 1 分钟
846
如果SpringBoot集成了WebSocket,单元测试启动后会报如下错误: {代码...} 这是因为SpringBootTest启动时不会启动服务器,所以WebSocket会报错。这个时候需要在注解中添加 webEnvironment 属性,给WebSocket提供测试环境: {代码...}
封面图

Java 环境变量未生效

5 月 11 日
阅读 1 分钟
195
但此时在控制台使用java -version命令输出的JDK版本不是新配置的版本,依然是之前的,甚至提示找不到java命令,即环境变量没有生效。
封面图

OpenFeign 定义后备工厂进行服务降级

5 月 8 日
阅读 1 分钟
172
OpenFeign 定义后备工厂进行服务降级可以使得远程接口调用失败时进行降级处理,而不会直接报错,影响后续代码逻辑。定义后备工厂的步骤如下:
封面图

OpenFeign @PathVariable需注明参数名称

5 月 8 日
阅读 1 分钟
185
在定义 OpenFeign 的远程接口时,如果是路径拼接作为参数的远程接口,需要在@PathVariable需注明参数名称,不然代码启动时会报错。
封面图

IDEA社区版,真香!

5 月 7 日
阅读 7 分钟
3.7k
IDEA(IntelliJ IDEA)是众多 Java 开发者的首选。商业版的昂贵IDEA 商业版(IntelliJ IDEA Ultimate)功能非常强大,能够满足 Java 开发的所有需求,但其高昂的价格……此时只能感叹,不是不想用正版,而是正版用不起!破解版的弊端除了购买正版,只能选择破解版了。网上有非常多的破解教程,每个版本都会跟进,只要勤加...
封面图

设计模式 23 访问者模式

4 月 30 日
阅读 2 分钟
138
访问者模式(Visitor Pattern)属于行为型模式概述生活中经常会有这样的情况,同样的事物不同人有完全不同的感受,正所谓一千个读者一千个哈姆雷特。程序中也是一样,往往不同的访问者会有不同的行为以及结果,这就是访问者模式。代码实现这里以李白和苏轼对庐山不同的感受为例介绍访问者模式:1、定义庐山 {代码...} 2...
封面图

设计模式 22 策略模式

4 月 30 日
阅读 2 分钟
152
程序中也是一样,而且更加复杂,生活中的抉择一般只有几个,但程序中可能有十多个甚至数十个,也就是我们常用的 if-else 或者 switch。当只有少量选择时,用这些没有问题,但一旦量比较大,代码的可读性和维护难度会迅速上升,这时候就建议使用策略模式了。
封面图

设计模式 21 状态模式

4 月 30 日
阅读 2 分钟
169
状态模式(State Pattern)属于行为型模式概述在标准大气压下,水在 0 \~ 100 度之间时,会呈现液态;在 0 度以下会变成固态;100 度以上会变成气态。物质在不同的条件下呈现不同的状态,对象可能也会像这样存在很多种状态,在不同的状态下可能会有不同的行为,可以通过状态模式来实现这样的效果。代码实现下面以水的三...
封面图

设计模式 20 观察者模式

4 月 30 日
阅读 3 分钟
196
观察者模式(Observer Pattern)属于行为型模式概述在 Java 中,一个对象的状态发生改变,就可能会影响到其他的对象,与之相关的对象可能也会联动的进行改变。比如监听器机制,当具体的事件触发时,可以在创建的监听器中执行相关的逻辑。观察者模式可以实现这样的功能,当对象发生改变时,观察者能够立即观察到并进行一...
封面图

设计模式 19 备忘录模式

4 月 30 日
阅读 3 分钟
141
2021 年 10 月 1 日下午,河南驻马店的一名 13 岁女中学生,因和同学发生不愉快喝下半瓶百草枯。10 月 5 日,抢救 4 天情况恶化,家属泣不成声称“肺部一个小时一变”。10 月 6 日下午,据武警河南省总队医院消息,“目前女孩仍在医院救治”。10 月 28 日,女孩离开了人世。
封面图

设计模式 18 中介者模式

4 月 30 日
阅读 3 分钟
149
虽然中介要收取一定费用,但却能给房东和租客都提供大量遍历,房东只需要把房屋信息提供给中介,租客也只需要将租金交给中介,由中介处理中介环节,给两方都提供了便利。这就是中介模式的应用。
封面图

设计模式 17 迭代器模式

4 月 29 日
阅读 3 分钟
135
迭代器模式(Iterator Pattern)属于行为型模式概述迭代器模式是 Java 中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,而不需要知道集合对象的底层表示。迭代器是学习 Java 语言的基础,没有迭代器,集合类的遍历就成了问题,正是因为有迭代器的存在,才能更加优雅的使用 foreach 语法。Java 中的增强 for ...
封面图

设计模式 16 命令模式

4 月 29 日
阅读 2 分钟
119
现在各大电子厂商都在推智能家居,即可以通过手机这一个终端控制多个家用电器,比之前的单个设备智能由对应遥控器控制的方案要方便很多。这其实就是命令模式的应用。
封面图

设计模式 15 责任链模式

4 月 29 日
阅读 2 分钟
165
再比如,JavaWeb 中学习的 Filter 过滤器,正是采用的责任链模式,通过将请求一级一级不断向下传递,来对所需要的请求进行过滤和处理。
封面图

设计模式 13 解释器模式

4 月 29 日
阅读 9 分钟
168
就比如编译器可以将源码编译解释为机器码, 让 CPU 能进行识别并运行。解释器模式的作用其实与编译器一样,都是将一些固定的语法进行解释,构建出一个解释句子的解释器。
封面图

设计模式 12 享元模式

4 月 23 日
阅读 4 分钟
147
大家都知道围棋有黑白子,用程序定义一局围棋时,如果给每颗黑子和每颗白子都定义一个对象,那一局围棋会产生大量的对象,这样有必要吗?每颗黑子都是类似的,每颗白子也是类似的,完全可以只定义一颗黑子对象和一颗白子对象,其余的棋子都复用这两个对象,这样不仅节省空间,编写也会简单很多,这就是享元模式的思想。
封面图

设计模式 11 外观模式

4 月 23 日
阅读 2 分钟
136
在生活中,经常遇到这样的情况:办理一个业务,需要找很多部门签字盖章,这些部门往往距离较远,无奈只得四处奔波。这时候相信所有人都有一个同样的诉求:要是找一个部门就能办理完所有业务就好了!
封面图

设计模式 10 装饰器模式

4 月 23 日
阅读 2 分钟
139
装饰器模式(Decorator Pattern)属于结构型模式概述装饰,顾名思义,就是在原有基础上增添东西以显示更好的效果。生活中非常多这样的例子,衣服饰品、珠宝首饰、房子装修都是在进行装饰。开发中这样的情况也非常多,比如用户的性别在数据库表中一般都是存的编码,然后通过字典表进行翻译,进而在页面展示为男、女。代码...
封面图