实战需求:创建并完成第一个可执行的 go 程序.项目目录:go-001具体实战步骤如下: 一.进入工程目录 cd go-001/ 二. 创建 g001.go 文件 /* * @Author: 菜鸟实战 * @FilePath: /go110/go-001/g001.go * @Description: 第一个 go 程序 */ // 每个GO语言源代码文件开头都拥有一个package声明,表示源码文件所属的代码包 // 要生成GO语言可执行程序,必须要有main的package包,且必须在该包下…
优雅哥 SpringBoot 2.7 .2 实战基础 - 05 -使用 Liquibase 管理数据库版本 在企业开发中,数据库版本管理好像是一个伪命题,大多项目都是通过 Power Designer 之类的工具建模.生成 SQL 语句,然后去数据库中执行.在开发过程中如果遇到修改表结构,再补充修改表结构的语句,大家依次去执行,在本地及各个环境中同步表结构.但这种模式,在我参与过的项目中或多或少都出现过问题:忘记同步表结构,导致在服务启动或运行时出错. 1 Liquibase 介绍 Spring…
优雅哥 SpringBoot 2.7.2 实战基础 - 04 -集成 Spring Doc 接口文档和 knife4j 前面已经集成 MyBatis Plus.Druid 数据源,开发了 5 个接口.在测试这 5 个接口时使用了 HTTP Client 或 PostMan,无论是啥都比较麻烦:得自己写请求地址 URL.请求参数等,于是多年前就出现了 Swagger 这个玩意.Swagger 可以自动生成接口文档,还能很方便的测试各个接口.但不幸的是,MVN Repository 上面 Sprin…
优雅哥 SpringBoot 2.7.2 实战基础 - 06 -多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local.开发环境 dev.集成测试环境 test.用户接受测试环境 uat.预生产环境 pre.生产环境 prod.本节的内容有些脱离真实企业开发,因为在真实的企业开发中,不会只开发一个独立的服务,而是多个微服务.发展至今,云原生也越来越普遍.面对多套环境,通常是"一套代码 + 配置中心"的方式,将代码编译打包后,在启动服务时或服务运行过程中,从配置中心…
优雅哥 SpringBoot 2.7.2 实战基础 - 07 - 日志配置 Java 中日志相关的 jar 包非常多,log4j.log4j2.commons-logging.logback.slf4j 等,本文首先梳理这些包之间关系,然后介绍在 spring boot 中日志的配置,最后介绍多环境的配置. 1 日志框架历史 1.1 log4j 很多年前,一个叫 Ceki Gülcü 的大佬在一个项目中开发跟踪 API,这套跟踪 API 逐步演变成 log4j, 大概1999年,log4j 成为…
优雅哥 SpringBoot 2.7 实战基础 - 08 - 全局异常处理及参数校验 前后端分离开发非常普遍,后端处理业务,为前端提供接口.服务中总会出现很多运行时异常和业务异常,本文主要讲解在 SpringBoot 实战中如何进行异常统一处理和请求参数的校验. 1 异常统一处理 所有异常处理相关的类,咱们都放到 com.yygnb.demo.common包中. 当后端发生异常时,需要按照一个约定的规则(结构)返回给前端,所以先定义一个发生异常时固定的结构. 1.1 错误响应结构 发生异常时的响…
SpringBoot 2.7 .2实战基础 - 09 - 集成 Redis & 异步任务 1 集成Redis <docker 安装 MySQL 和 Redis>一文已介绍如何在 Docker 中安装 Redis,本文就看看 SpringBoot 如何整合 Redis.SpringBoot 提供了整合 Redis 的 starter,使用非常简单. 1.1 添加依赖 在 pom.xml 中添加 redis 的 starter: <dependency> <groupId…
文 by / 林本托 Tips 做一个终身学习的人. 在这个章节中,主要介绍以下内容: 如何编写模块化的Java程序 如何编译模块化程序 如何将模块的项目打包成模块化的JAR文件 如何运行模块化程序 在本章中,将介绍如何使用模块 -- 从编写源代码到编译,打包和运行程序. 本章分为两部分. 第一部分显示使用命令行编写和运行模块程序的所有步骤. 第二部分使用NetBeans IDE重复相同的步骤. 到目前,NetBeans IDE仍在开发中,并且不支持所有JDK 9功能. 例如,目前需要NetBe…
创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方法: 创建线程: 主线程调用新线程,创建多线程: 运行结果是cpu随机执行:…
实战:创建一个root无法删除的文件 简介:Linux文件的最底层(内核级别)属性的查看与修改 命令:lsattr.chattr Linux文件除了具有基本权限rwx,及特殊权限(SUID.SGID.SBIT(Sticky))外,还有几个更接近底层的文件),我们可通过lsattr查看这些属性,并通过chattr来修改这些属性 命令格式:lsattr [-RVadv] [file]-R  #递归的列出文件夹中所有文件的属性-V  #查看lsattr版本-a  #查看list所有的文件,包括隐藏文件…