Java代码中对文件的操作

引言 这几天的项目涉及到了文件的操作,我这边做一下整理 环境说明 jdk版本:1.8.0_311 对文件的操作 1、保存文件 /** * 保存文件 * * @param file 文件 * @param path 文件保存目录 * @param name 保存后的文件名字 */public void saveFile(MultipartFile file, String path, String name) throws Exception { if (file == null) { throw new Exception("请上传有效文件!"); } // 若目录不存在则创建目录 File folder = new File(path); if (!folder.exists()) { folder.mkdirs(); } // 生成文件,folder为文件目录,newName为文件名 file.transferTo(new File(folder, name));} 2、删除文件 /** * 删除指定目录下的指定文件 * * @param path 文件路径(路径结尾不带“/”) * @param name 文件名称 */public void delFile(String path, String name) { File file = new File(path + "/" + name); file.delete();} 3、删除指定的空目 /** * 删除指定的空目录,如果往上2层的目录也是空的,则一起删除 * * @param path 目录路径(路径结尾不带“/”) */public void delBlankDir(String path) { for (int ...

avatar 龙儿之家 发表于 2023-08-15

FRP 实现内网穿透

本文主要介绍 frp 的常用使用方式, 以及入门级别的部署。 如果需要实现特定的场景, 建议阅读官方文档, 官方文档链接在下方参考文章可以查看。

avatar nukix的工具箱 发表于 2023-08-14

Nginx Proxy Manager 配置用户认证和静态网页

前言 这篇主要是参考俊阳IT知识库的视频写的,在这位大佬的博客里有关于npm的详细使用介绍点我直达,我刚好今天有闲暇时间,把大佬博客里面没写的,在视频里面提到的俩个功能写一下。 废话不多说开始吧! 一、配置静态网页 我之前的docker里面运行了一个tomcat,但我的服务器本身资源不多,所以我把tomcat里面ROOT下面的文件迁移到了npm下 1、创建静态文件夹 1.1、进入npm文件data目录下 进入你自己实际的npm在docker文件下的存放路径 cd /root/docker_data/npm-zh/data 1.2、创建并进入文件夹 mkidr static && cd static 2、迁移网页文件 把tomcat里ROOT下所有文件拷贝到刚刚创建的static目录下 cp -r /root/docker_data/tomcat/.tomcat/webapps/ROOT/* /root/docker_data/npm-zh/data/static/ 3、配置npm 3.1、配置详细内容 3.2、配置SSL 3.3、配置高级 location / { root /data/static;} 4、测试访问 访问没有问题,跟使用tomcat一样,这样我们就可以少启一个容器了,节约一部分资源出来 二、配置web站点用户认证 还是拿我们刚刚上面的web站点演示 1、配置通信规则 2、配置站点认证 3、测试访问 这里测试访问失败了,不要密码就能直接访问,推测是npm代理自己的http端口可能不行,我换了一个其他的站点测试成功了 测试成功,输入密码后可以自动跳转到正常网页

avatar 杨杨得亿 发表于 2023-08-12

Nginx Proxy Manager 配置用户认证和静态网页

前言 这篇主要是参考俊阳IT知识库的视频写的,在这位大佬的博客里有关于npm的详细使用介绍点我直达,我刚好今天有闲暇时间,把大佬博客里面没写的,在视频里面提到的俩个功能写一下。 废话不多说开始吧! 一、配置静态网页 我之前的docker里面运行了一个tomcat,但我的服务器本身资源不多,所以我把tomcat里面ROOT下面的文件迁移到了npm下 1、创建静态文件夹 1.1、进入npm文件data目录下 进入你自己实际的npm在docker文件下的存放路径 cd /root/docker_data/npm-zh/data 1.2、创建并进入文件夹 mkidr static && cd static 2、迁移网页文件 把tomcat里ROOT下所有文件拷贝到刚刚创建的static目录下 cp -r /root/docker_data/tomcat/.tomcat/webapps/ROOT/* /root/docker_data/npm-zh/data/static/ 3、配置npm 3.1、配置详细内容 3.2、配置SSL 3.3、配置高级 location / { root /data/static;} 4、测试访问 访问没有问题,跟使用tomcat一样,这样我们就可以少启一个容器了,节约一部分资源出来 二、配置web站点用户认证 还是拿我们刚刚上面的web站点演示 1、配置通信规则 2、配置站点认证 3、测试访问 这里测试访问失败了,不要密码就能直接访问,推测是npm代理自己的http端口可能不行,我换了一个其他的站点测试成功了 测试成功,输入密码后可以自动跳转到正常网页

avatar 杨杨得亿 发表于 2023-08-12

CGLIB 和 JDK 两种动态代理方法对比

Spring 动态代理时提供了 JDK 代理和 CGLIB 两种方式,一般而言,代理的目标是接口时 AOP 使用 JDK 代理来实现,CGLIB 则负责对类进行代理,两种代理方法结合使用。 一、JDK代理代码实现 package com.nineya.spring.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface JdkTargetInterface { String test(String str);}class JdkTargetObject implements JdkTargetInterface { @Override public String test(String str) { System.out.println("被代理函数执行:" + str); return "被代理函数的返回结果"; }}class JdkProxyHandler implements InvocationHandler { private Object target; public JdkProxyHandler() { } public JdkProxyHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.printl...

avatar 玖涯博客 发表于 2023-08-09

Dream美化:定制化主题

这是一些玖月对Drema主题的定制,对某些主题的样式有一些自己的想法,不过大部分是请教玖涯大佬(Dream作者) 帮忙定制的CSS,也有自己瞎搞出来的 。这些定制CSS有需要的也可以在 主题设置—定制主题–内嵌CSS 设置快来美化自己的Dream吧~文章摘要行数Dream主题的默认 文章列表缩略图模

avatar 玖月云博客 发表于 2023-08-09

🐳 Docker 部署 ChatGPT

前言 答:ChatGPT是一个由OpenAI开发的大型语言模型,它是基于人工智能技术的一种应用。ChatGPT使用了深度学习技术中的循环神经网络(RNN)和注意力机制(Attention Mechanism)来理解和生成自然语言文本。 ChatGPT是通过训练大规模的文本数据集来学习语言模式和语义理解的。它可以回答各种问题、提供信息、进行对话和生成文本等任务。ChatGPT在训练过程中学习了广泛的知识和语言规则,并且可以根据输入的问题或指令生成合理的回复。 作为一个语言模型,ChatGPT可以用于各种应用,包括自动客服、智能助手、文本生成等。它可以与用户进行对话,并尽可能提供准确和有用的回答。 需要注意的是,ChatGPT是基于历史数据进行训练的,并且它的回答是基于过去的知识和信息。它没有自己的实时感知能力,也没有对当前事件的了解。因此,在回答问题时,它可能不具备最新的信息或无法提供最新的发展。 一、准备工作 1、部署好Docker的服务器 官网部署指南👆点我 2、ChatGPT的api-key 如何获取?👆点我 3、海外代理 如果你的服务器在海外,而且服务器可以直接访问openai,那就不需要这一步,如果你的服务器在国内,在家里,在本地电脑上,则需要给你的chatgpt容器挂一个代理,让chatgpt容器可以通过代理访问openai,如果不挂代理会报各种错误,比如连接超时。 本地部署代理👆点我: OpenWrt Hyper-V Passwall Windows10 Hyper-V安装OpenWrt全屋科学上网🌏! 4、项目原址 Yidadaa / ChatGPT-Next-Web 二、正式部署 1、创建并进入存放chatgpt的文件夹 mkdir -p /root/docker_data/chatgpt-next-web && cd /root/docker_da...

avatar 杨杨得亿 发表于 2023-08-08

🐳 Docker 部署 ChatGPT

前言 答:ChatGPT是一个由OpenAI开发的大型语言模型,它是基于人工智能技术的一种应用。ChatGPT使用了深度学习技术中的循环神经网络(RNN)和注意力机制(Attention Mechanism)来理解和生成自然语言文本。 ChatGPT是通过训练大规模的文本数据集来学习语言模式和语义理解的。它可以回答各种问题、提供信息、进行对话和生成文本等任务。ChatGPT在训练过程中学习了广泛的知识和语言规则,并且可以根据输入的问题或指令生成合理的回复。 作为一个语言模型,ChatGPT可以用于各种应用,包括自动客服、智能助手、文本生成等。它可以与用户进行对话,并尽可能提供准确和有用的回答。 需要注意的是,ChatGPT是基于历史数据进行训练的,并且它的回答是基于过去的知识和信息。它没有自己的实时感知能力,也没有对当前事件的了解。因此,在回答问题时,它可能不具备最新的信息或无法提供最新的发展。 一、准备工作 1、部署好Docker的服务器 官网部署指南👆点我 2、ChatGPT的api-key 如何获取?👆点我 3、海外代理 如果你的服务器在海外,而且服务器可以直接访问openai,那就不需要这一步,如果你的服务器在国内,在家里,在本地电脑上,则需要给你的chatgpt容器挂一个代理,让chatgpt容器可以通过代理访问openai,如果不挂代理会报各种错误,比如连接超时。 本地部署代理👆点我: OpenWrt Hyper-V Passwall Windows10 Hyper-V安装OpenWrt全屋科学上网🌏! 4、项目原址 Yidadaa / ChatGPT-Next-Web 二、正式部署 1、创建并进入存放chatgpt的文件夹 mkdir -p /root/docker_data/chatgpt-next-web && cd /root/docker_da...

avatar 杨杨得亿 发表于 2023-08-08

Spring 源码分析(三)——Bean 的全生命周期流程

在 Spring 框架中,容器可以对 Singleton 作用域下的 bean 进行生命周期管理,对 bean 的创建、初始化和销毁进行控制。本文讲述 bean 的生命周期全过程,详细描述了生命周期过程中 spring 开放的自定义切入接口。 生命周期流程图: 一、定义Bean 在程序启动最初,Spring 可通过 xml 文件、注解或 javaApi 的方式创建 BeanDefinition。 BeanFactoryPostProcessor 是 bean 工厂的后置处理器,在 BeanDefinition 全部扫描创建完成后执行,可以在容器的 bean 创建之前修改 bean 工厂和 BeanDefinition。 二、实例化与属性注入 当客户向容器请求一个尚未初始化的 bean 时,或初始化 bean 时需要注入另一个尚末初始化的依赖时,容器就会调用 doCreateBean 方法通过反射的方式创建出一个 bean 对象。 bean 实例创建之后,doCreateBean 方法通过调用 populateBean 方法对这个 bean 进行属性填充。 三、初始化Bean Bean 初始化过程对应 initializeBean 方法,将被 doCreateBean 方法调用。 protected Object initializeBean(String beanName, Object bean, @Nullable RootBeanDefinition mbd) { // 执行 BeanNameAware、BeanClassLoaderAware和BeanFactoryAwareif (System.getSecurityManager() != null) {AccessController.doPrivileged((PrivilegedAction<Obje...

avatar 玖涯博客 发表于 2023-08-08

【Linux-脚本】❌删库跑路?教你配置服务器定时备份📂!

2023年8月8号凌晨00:21分,为什么这么晚了我还在写博客,是因为今天在整理服务器的时候,误操作把服务器的数据盘删了,不是用的sudo rm -rf,我的服务器在本地,部署在VMware里面,替换数据的时候点错了,选错了虚拟机😭。为了以后避免这种事情再次发生,借助于ChatGPT写了一个定时备份脚本,分享一下。 一、脚本内容 vi /root/docker_backup.sh #!/bin/bash# Source file detailssource_file="/root/docker_data" #需要备份数据的文件夹backup_folder="/root/backups"# Create a backup folder if it doesn't existmkdir -p $backup_folder #创建备份文件backup_folder # Backup filename with current timestampbackup_filename="$(date +'%Y%m%d%H%M%S').tar.gz" #保存的文件名是执行此脚本的时间,年月日时分秒# Compress the source filetar -czf $backup_folder/$backup_filename $source_file #后缀是压缩文件夹tar.gz格式# Destination server detailsdest_server="your sftp server ip" #备份到目标服务器的IPdest_user="user" #目标服务器sftp的账户(需要有写入权限和读取)dest_password="password" #目标服务器sftp的密码dest_folder="/docker_ba...

avatar 杨杨得亿 发表于 2023-08-08