SpringBoot常用工具类断言
断言是一个逻辑判断,用于检查不应该发生的情况
Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启
SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查
12345678910111213141516171819202122232425// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message)// 要求参数必须为真(True),否则抛出异常,不予『放行』。void isTrue(boolean expression, String message)// 要求参数(List/Set)必须非空(Not Empty),否则抛出异 ...
OpenWrt养老旁路由从零开始(基于immortalWrt固件)准备工作
软路由、或是旁路由、或是其他能做软路由的盒子(N1、树莓派等)
软路由或是旁路由本身具有网络
涉及到的组件
immortalWrt固件
passwall(immortalWrt固件已经安装)
AdGuardHome
MosDNS
写在前面1.使用 iKuai +openwrt 做旁路由网络拓扑
immortalWrt固件
passwall(immortalWrt固件已经安装)
AdGuardHome
MosDNS
安装组件
immortalWrt固件下载地址 开源项目地址: 点击进入
passwall 项目地址: 点击进入
MosDNS 项目地址: 点击进入
AdGuardHome 项目地址: 点击进入
immortalWrt安装ImmortalWrt 是一个基于 OpenWrt 的开源路由器固件分支,主要面向中国大陆用户。它与原版 OpenWrt 相比,具有以下特点:
优点
稳定性高:提供了更高的稳定性和可靠性,适合长时间稳定运行。
包管理丰富:拥有丰富的软件包管理系统,方便用户安装各种附 ...
java
未读认识Optional并使用简单来说,Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用 会用 null!=obj 这样的方式存在的判断,从而令人头疼导致NPE(Null Pointer Exception 空指针异常),同时Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效.
常规判断:
1234567//对象 人//属性有 name,agePerson person=new Person();if (null==person){ return "person为null";}return person;
使用Optional:
1234//对象 人//属性有 name,agePerson person=new Person();return Optional.ofNullable(person).orElse("person为null");
测试展示类Person代码(如果有朋友不明白可以看一下这个):
123456789101112131415161718192021 ...
Linux常用命令Linux系统目录结构查看Linux系统目录结构使用Windows系统时用户通常是使用鼠标点击进行文件或文件夹的创建、删除等操作,在Linux系统中是通过敲命令来控制系统的,Windows系统和Linux系统的目录结构不同,我们需要先熟悉Linux系统的目录结构。登录系统后,在当前命令窗口中输入以下命令:
1ls /
在Linux中没有盘符概念,它是树状目录结构,最顶层是根目录,效果如下:
Linux系统不同颜色的含义
颜色
说明
**白色 **
普通文件
深蓝色
文件夹(目录)
青色
链接,类似于Windows下快捷方式
绿色
可执行文件
红色
压缩包
橙色
设备文件
Linux常用目录说明
目录
说明
root
系统管理员的主目录,其它用户不能访问的。
home
普通用户的主目录,每个用户都有一个自己的目录,一般是以用户的账号命名的,如上图中的 zhangsan 和 cyxpa。
bin
binary (二进制文件) 的缩写,这个目录存放着最经常使用的命令。
sbin
superuser bina ...
使用SpringAOP优雅的实现异步文件上传相信很多系统里都有这一种场景:用户上传Excel,后端解析Excel生成相应的数据,校验数据并落库。这就引发了一个问题:如果Excel的行非常多,或者解析非常复杂,那么解析+校验的过程就非常耗时。
如果接口是一个同步的接口,则非常容易出现接口超时,进而返回的校验错误信息也无法展示给前端,这就需要从功能上解决这个问题。
一般来说都是启动一个子线程去做解析工作,主线程正常返回,由子线程记录上传状态+校验结果到数据库。同时提供一个查询页面用于实时查询上传的状态和校验信息。
进一步的,如果我们每一个上传的任务都写一次线程池异步+日志记录的代码就显得非常冗余。同时,非业务代码也侵入了业务代码导致代码可读性下降。
从通用性的角度上讲,这种业务场景非常适合模板方法的设计模式。即设计一个抽象类,定义上传的抽象方法,同时实现记录日志的方法,例如:
123456789101112131415161718192021222324252627282930313233343536373839404142//伪代码,省略了一些步骤@Slf4jpublic abstra ...
1.Uduntu 的诞生buntu Linux是由南非人马克·沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu的第一个版本(Ubuntu4.10 Warty Warthog)。Ubuntu适用于笔记本电脑、桌面电脑和服务器,特别是为桌面用户提供尽善尽美的使用体验。Ubuntu几乎包含了所有常用的应用软件:文字处理、电子邮件、软件开发工具和Web服务等。用户下载、使用、分享Ubuntu系统,以及获得技术支持与服务,无需支付任何许可费用。
2.iso镜像可以在国内镜像官网下载。点击这里跳转
选择 20.04.6/
1G(最小化安装包)的和4g(桌面化安装包)。根据需要选择安装
3.新建虚拟机3.1 打开VNware,右击以管理身份运行点击左上角的文件,然后新建虚拟机。建议典型推荐安装。点击下一步。
3.2 稍后安装系统先选择稍后安装操作系统。点击下一步。这里客户机系统选择Linux,版本选择Ubuntu 64位。点击下一步。
3.3 为虚拟机命名和选择该虚拟机的文件目录创建虚拟机的名字,还有放在哪 ...
1.Uduntu 服务器准备
主机名称
IP地址
系统
k8s-master-11
192.168.88.11
Uduntu
k8s-node-12
192.168.88.12
Uduntu
k8s-node-13
192.168.88.13
Uduntu
1.1 root用户密码处理
1234sudo -i //切换root用户 echo root:Aa551122 |sudo chpasswd root //修改root的密码 echo root:要登录的密码 |sudo chpasswd root
1.2 网络配置
配置文件地址 /etc/netplan/00-installer-config.yaml
1234567# 备份文件网络配置文件mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak # 添加新的网络配置vi /etc/netplan/00-network-manager.yaml# 应用配置netplan apply
静态地址配置
1 ...
vps基本信息VPS状态如下:
CPU 型号
CPU 核心 合计 0 核心,4 线程
CPU 状态 当前主频 MHz
内存大小 23989 MB (234 MB 已用)
硬盘大小 45.3 GB
虚拟化技术 No Virtualization Detected
IPv4 地址 xxx.xxx.xxx.xxx
运营商 AS31898 Oracle Corporation
地理位置 AU, New South Wales, Sydney
操作系统 Ubuntu 20.04.6 focal (aarch64)
系统内核 5.15.0-1067-oracle
常用脚本1. 一键安装 curl 和 wget123apt install sudo curl wget && clear && ./dp
2. ...
海外服务器常用一键测试脚本1. BBR 安装123456789# CentOS 6+、Debian 8+、Ubuntu 14+# 预先准备CentOS:yum install ca-certificates wget -y && update-ca-trust force-enableDebian/Ubuntu:apt-get install ca-certificates wget -y && update-ca-certificates# 不卸载内核版本wget -N "https://github.000060000.xyz/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh# 卸载内核版本wget -N "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
2. NetFlix 解锁检测1234567# https://gi ...
MinIO简介MinIO 是一款基于 Go 语言发开的高性能、分布式的对象存储系统,客户端支持 Java,Net,Python,Javacript,Golang语言。MinIO 的主要目标是作为私有云对象存储的标准方案,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据、容器和虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T。
它具有分布式,高可用性和水平扩展的特点,它非常适合用于大规模数据存储和分析。其优点包括低延迟、高吞吐量、易于部署和管理。
截止目前,MinIO 在 Github 上有 43.7k Star。
国内阿里巴巴、腾讯、百度、华为、中国移动、中国联通等企业都有在使用 MinIO,甚至不少商业公司二次开发 MinIO 来提供商业化的云存储产品。
使用 Docker 部署 MinIO 服务安装Docker&Compose(略)使用docker-compose安装并运行MinIO容器docker-compose.yaml 文件如下
12345678910111213141516171819202122networks: m ...
