docker安装nexus
1.建立.envNEXUS_DATA=/home/docker/nexus-3.76.1/nexus-dataNEXUS_UI_PORT=18081NEXUS_DOCKER_PORT=15000NEXUS_JAVA_XMS=2gNEXUS_JAVA_XMX=2gNEXUS_MAX_DIRECT=3g
2.建立docker-compose.ymlservices: nexus3: image: nexus3:3.76.1 container_name: nexus-3.76.1 restart: unless-stopped ports: - "${NEXUS_UI_PORT:-8081}:8081" - "${NEXUS_DOCKER_PORT:-5000}:5000" environment: - INSTALL4J_ADD_VM_PARAMS=-Xms${NEXUS_JAVA_XMS:-2g} -Xmx${NEX ...
docker相关命令
Docker Compose 命令大全基础命令
命令
说明
docker-compose up
创建并启动所有服务(前台运行)
docker-compose up -d
后台启动服务
docker-compose down
停止并移除容器、网络、卷
docker-compose ps
查看服务运行状态
docker-compose logs
查看所有服务日志
docker-compose logs -f <service>
实时追踪指定服务日志
服务管理
命令
说明
docker-compose start <service>
启动已存在的服务容器
docker-compose stop <service>
停止服务容器
docker-compose restart <service>
重启服务
docker-compose pause/unpause <service>
暂停/恢复服务
docker-compose stats
查看服务资源使用
...
前端自定义下载功能
2025新版接口定义
@PostMapping("/exportWelfareCertificate")@Operation(summary = "导出福利报销凭证")public void exportWelfareCertificate(@RequestBody OasCostSharingCertificateExportVo reqParam, HttpServletResponse response) { List<OasCostSharingCredentialExcelVo> excelDataList = costSharingService.getWelfareCertificateData(reqParam); String url = null; String fileName = "福利费凭证_" + DateUtil.format(new Date(),"YYYYMMdd_HHmmss") + ".xlsx"; St ...
docker安装postgresql
1.建立docker-compose.ymlversion: '3.8'services: postgres: image: postgres:15 container_name: postgres restart: always environment: POSTGRES_USER: intco POSTGRES_PASSWORD: Yingke@2025 POSTGRES_DB: intco_dev ports: - "5432:5432" volumes: - /home/docker/postgresql/postgresql-data:/var/lib/postgresql/data
3.启停docker-compose up -d # 后台启动所有服务docker-compose down # 停止所有服务并删除容器和网络docker-compose start # 启动已存在但处于停止状态的容器(不重建)docker-compose stop # ...
表格自定义单元格
ant-design-vue的a-table组件如何定义单元格内容,整理一下
版本: ant-design-vue4
方式1:bodyCell插槽<template> <a-table :columns="columns" :data-source="data"> <!-- 使用 bodyCell 插槽自定义单元格内容 --> <template #bodyCell="{ text, record, index, column }"> <template v-if="column.dataIndex === 'value'"> <span :style="text > 0 ? { color: 'red' } : {}"> {{ text ...
单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式也是开发过程中使用的最多的一种设计模式,它只允许创建一个对象,因此节省内存,加快了对象访问速度,当对象需要被公用的场景就很适合使用单例模式;但是它不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态
需要注意的是:
单例类只能有一个实例
单例类必须自己创建自己的唯一实例
单例类必须给所有其他对象提供这一实例
懒汉模式顾名思义就是特别懒,在类加载时不初始化,等到第一次被使用时才初始化。
public class Singleton{ // 创建示例,注意此时没有new private static volatile Singleton instance; // 构造方法私有化,无法在外部创建 ...
策略模式
为什么讲策略模式策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改”我个人的理解是 将一些除了过程不同其他都一样的函数封装成策略,然后调用方自己去选择想让数据执行什么过程策略。常见的例子为根据用户分类推荐不同的排行榜(用户关注点不一样,推荐榜单就不一样)和单例模式一样,随着时间发展,我不再推荐经典策略模式,更推荐简单策略用枚举策略模式,复杂地用工厂策略模式。下面引入一个例子,我们的需求是:对一份股票数据列表,给出低价榜、高价榜、涨幅榜。这其中只有排序条件的区别,比较适合作为策略模式的例子
经典策略模式数据DTO
@Data public class Stock { // 股票交易代码 private String code; // 现价 private Double price; // 涨幅 private Double rise; }
抽象得到的策略接口
public interface Strategy ...
在oracle里杀死进程
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired错误
表示在尝试执行 SQL 语句时,目标资源正被其他会话占用,而由于 NOWAIT 或超时设置,当前操作未能成功获取锁。
目标表正被锁定
可能其他事务正在访问或修改 MYBOOT.PUS_MACHINE_MATERIAL_MESSAGE 表,导致无法获取锁。
解决方式
SELECT s.sid, s.serial#, s.username, s.program, o.object_name, l.locked_modeFROM v$locked_object lJOIN dba_objects o ON l.object_id = o.object_idJOIN v$session s ON l.session_id = s.sidWHERE o.object_name = 'PUS_MACHINE_MATERIAL_MESSAGE';
找到阻塞的会话 ...
mybatisPlus关联查询分页插件的坑
背景mybatis-plus自带一个分页插件,能够帮助我们快速的完成分页,详细用法可以看官网。但是分页插件只适用于基础的单表,对于需要聚合查询的一对多情况,有个很深的坑。
正确示例示例1使用子查询的方式,查询子实体,再collection标签里指定子查询语句select和关联的字段column
这个column也可以理解为子查询语句所需的参数,需要把主查询的哪个字段作为参数传入到子查询的查询方法里
// 实体类@Datapublic class NcsErBxzbDTO { // 主键 private String pkJkbx; // 单据编号 private String djbh; // 单据日期 private String djrq; // 单据总金额 private BigDecimal total; // 事由 private String zy; // 借款保险部门主键 private String deptId; // 借款报销部门名称 private String dept ...
接口定义常量的方式
常见的在java下定义常量的方式有静态变量或者枚举。今天看到别人的代码,还有用接口来定义常量的,分享一下。
静态常量
public class Constants { public static final String APP_NAME = "MyApplication"; public static final int MAX_USERS = 100; public static final double PI = 3.14159;}
枚举定义常量
public enum Status { SUCCESS, FAILURE, PENDING}
接口定义常量
public class NcConstant { public interface PROJECT_CLASS { // 销售类型的项目 String SALES_TYPE = "a"; } /** * 组织编码 */ ...
@JsonFormat和@DateTimeFormat
@JsonFormat 注解@JsonFormat 注解来自于 Jackson 库,通常用于控制日期时间格式在序列化和反序列化时的表现,主要应用于将Java对象转换为JSON时的日期时间格式处理,或者从JSON转换回Java对象时解析日期格式。
用法示例import com.fasterxml.jackson.annotation.JsonFormat;@Datapublic class Event { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date date1; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate date2; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = &quo ...
SpringBoot下的反射
普通的java反射调用一个方法的例子如下
import java.lang.reflect.Method;public class ReflectionExample { public static void main(String[] args) { try { // 获取类的 Class 对象 Class<?> clazz = Class.forName("TestClass"); // 创建类的实例 Object instance = clazz.getDeclaredConstructor().newInstance(); // 获取方法 Method method = clazz.getMethod("sayHello", String.class); // 调用方法 method.invoke(ins ...
docker安装minio
项目调试需要本地搭建一个minio,记录一下docker命令
docker run -d -p 9000:9000 -p 9001:9001 \--net=els \--name minio \-e "MINIO_ROOT_USER=minio" \-e "MINIO_ROOT_PASSWORD=minio123" \-v /Users/zhangyuhan/Work/dev-env/minio/data:/data \-v /Users/zhangyuhan/Work/dev-env/minio/config:/root/.minio \minio/minio server /data --console-address ":9001" -address ":9000"
java:Path与Files类
jDK1.7引入了新的IO操作类,java.nio.file包下的Path接口和Files类。然而网上的好多教程仍然用着比较老旧的File类。这里整理一下新的用法。
创建文件和目录创建文件和目录非常简单。我们可以使用Files类的createFile()方法和createDirectory()方法来创建文件和目录
import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.io.IOException;public class CreateFileAndDirectory { public static void main(String[] args) throws IOException { //文件 Path pathToFile = Paths.get("example.txt"); //目录 Path pathToDir = Paths.get(" ...
java split()方法输出示例
在java里,split()方法如果只传入分割字符,那么会自动去除结尾的空字符串。
以前一直不知道,到底写了多少隐藏的bug,ヽ(゜ロ゜;)ノ
情况1String str = "6000,5000";String[] s = str.split(",");System.out.println(Arrays.toString(s));// [6000, 5000]System.out.println(s.length);// 2
情况2String str = "6000,5000";String[] s = str.split(",", -1);System.out.println(Arrays.toString(s));// [6000, 5000]System.out.println(s.length);// 2
情况3String str = "6000,";String[] s = str.split(",");System.out.println(Array ...
配置ssl证书示例
server { listen 443 ssl; #修改端口号增加ssl server_name xxxx.cn; # 该域名必须对应当前nginx所在的服务器(通过dns解析的ip和nginx服务器的公网ip相同) #server_name _; #ssl on; #注释或删除ssl on ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; #指定PEM格式的证书文件 ssl_certificate xxxx.pem; #指定PEM格式的私钥文件 ssl_certificate_key xxxx.key; location / { proxy_set_head ...
docker安装redis
docker pull redis:7.2docker run \-p 6379:6379 \--name redis-7.2 \--restart=always \--network=els \-d redis:7.2
m1,docker安装rabbitmq
基本安装# 拉镜像docker pull rabbitmq:3-management# 运行容器。# 项目用到mqtt,所以额外开启了一个mqtt插件# 可以把--network去掉,或者自己建个自定义网络elsdocker run -d --name rabbitmq-3 --network els -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_PLUGINS_ENABLE=rabbitmq_mqtt rabbitmq:3-management
开启延时插件首先下载并启动镜像
docker pull rabbitmq:3.10.6-managementdocker run -d \--name rabbitmq \-e RABBITMQ_DEFAULT_USER=admin \-e RABBITMQ_DEFAULT_PASS=admin \-p 15672:15672 -p 5672:5672 -p 25672:25672 ...
m1,docker安装mysql5.7
mysql5.7版本没有适合arm架构的docker镜像但是网上大佬说x86镜像的mysql5.7一样能在macbook m1上运行自己试验了,果然可以。整理一下
# 拉取镜像(--platform linux/x86_64一定要加,要不然会报错,提示搜不到适合arm架构的mysql:5.7镜像)docker pull --platform linux/x86_64 mysql:5.7# 建立目录mkdir /Users/zhangyuhan/Work/dev-env/mysql-5.7/logmkdir /Users/zhangyuhan/Work/dev-env/mysql-5.7/datamkdir /Users/zhangyuhan/Work/dev-env/mysql-5.7/conf# 建立配置文件vim /Users/zhangyuhan/Work/dev-env/mysql-5.7/conf/my.cnf# 归纳整理mysql:5.7的一些通用配置[client]default-character-set=utf8mb4[mysql]default-character- ...
docker安装nginx
# 拉取镜像# 本文章以1.24为例,读者可以自行替换为其他的版本,流程基本不变。docker pull nginx:1.24# 运行容器,该容器只为复制配置文件,后续会删除docker run -p80:80 --name nginx-1.24 -d nginx:1.24# 得到容器id:e6c27ac9bc13# 创建映射目录# 所有的映射目录根目录为/Users/zhangyuhan/Work/dev-env/nginx-1.24,可自行替换mkdir /Users/zhangyuhan/Work/dev-env/nginx-1.24cd /Users/zhangyuhan/Work/dev-env/nginx-1.24mkdir confmkdir htmlmkdir logs# 将容器内的nginx配置文件夹拷贝到conf文件下docker cp e6c27ac9bc13:/etc/nginx /Users/zhangyuhan/Work/dev-env/nginx-1.24/conf# 此时目录结构为conf/nginx/一堆配置文件,所以需要将所有的配置文件拷贝conf下 ...